Garry's Mod

Garry's Mod

spaceship / battlecruiser
tanghao  [developer] 27 Feb, 2018 @ 9:09pm
ship main E2 code (turret controller part)
@name Xbattlecruiser turret
@inputs [Turret Target]:entity Button POD:wirelink
@outputs Tv:vector [Missile1 Missile2 Cannon]:entity Car:array Igniter Autocannon C
@persist TCannon1 TCannon2 TTurret TMissile
@model models/hunter/misc/lift2x2.mdl
interval(5)

if(first()|duped()|dupefinished())
{
# if(owner():name()=="tanghao"){}else{entity():propNotSolid(1)}
# if(owner():name()=="tanghao"){}else{selfDestructAll()}
}

if(POD["Shift",number]|(owner():lastSaid()=="/auto"))
{
Tv=Target:boxCenterW()

if(Target:isAlive())
{
Autocannon=1

if((Tv-entity():boxCenterW()):z()>0)
{
Turret:setPos(entity():boxCenterW()+vec(0,0, 75))
}
else
{
Turret:setPos(entity():boxCenterW()+vec(0,0,-75))
}
}
else
{
Autocannon=0
Turret:setPos(entity():boxCenterW())
}
}
else
{
Autocannon=0
Turret:setPos(entity():boxCenterW())
}

if(POD["Space",number])
{
if(TCannon1==0)
{
Igniter=1 TCannon1=TCannon1+0.1
}
elseif(TCannon1<5)
{
TCannon1=TCannon1+0.1 Igniter=0
}
else
{
soundStop(1,1)
Cannon=propSpawn("models/props_phx/oildrum001_explosive.mdl",entity():boxCenterW()-entity():forward()*200,entity():angles()+ang(90,0,0),0)
entity():soundPlay(1,1,"Explo.ww2bomb")
Cannon:propGravity(0) Cannon:setMass(100) Car:pushEntity(Cannon)
TCannon1=0 Igniter=1
TCannon2=1
C=Car:count()
}
for(I=1,C)
{
Car[I,entity]:applyForce(entity():forward()*-1000000)
}
}
elseif(POD["Alt",number])
{
if(Missile1|Missile2)
{
if(TMissile<20)
{
Missile1:applyForce(Missile1:forward()*10000)
Missile2:applyForce(Missile2:forward()*10000)
TMissile++
}
}
else
{
if(Target:isAlive())
{
Missile1=propSpawn("models/props_phx/ww2bomb.mdl",entity():pos()+vec(300, 25,250):rotate(entity():angles()),ang(-90,0,0),0)
Missile2=propSpawn("models/props_phx/ww2bomb.mdl",entity():pos()+vec(300,-25,250):rotate(entity():angles()),ang(-90,0,0),0)

Missile1:setTrails(20,0,1,"trails/smoke",vec(0,0,255),100)
Missile2:setTrails(20,0,1,"trails/smoke",vec(0,0,255),100)

Missile1:setMass(10) Missile1:setAlpha(0)
Missile2:setMass(10) Missile2:setAlpha(0)
entity():soundPlay(1,5,"weapons/stinger_fire1.wav")
}
}
}
else
{
if(TCannon2)
{
for(I=1,C)
{
Car[I,entity]:applyForce(entity():forward()*-1000000)
}

if(Car[C,entity])
{}
else
{
Car:clear()
TCannon2=0
C=0
}
}

if(Missile1|Missile2)
{
Missile1:applyForce(vec(quat(Target:boxCenterW()-Missile1:pos())^0.5*10000)-Missile1:vel()*10)
Missile2:applyForce(vec(quat(Target:boxCenterW()-Missile2:pos())^0.5*10000)-Missile2:vel()*10)
TMissile=0
}

if(TTurret<100)
{
TTurret=TTurret+0.1
}
else
{
Turret:propFreeze(1)
Turret:setMass(100000)

T1=0 TTurret=0

Autocannon=0
}
}