Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name Automated Turret
- @outputs Fire
- @persist Self:entity Turret:entity Target:entity Angle:angle
- @persist Threshold
- if( first() ) {
- runOnTick(1)
- Self = entity()
- Self:isWeldedTo():setMaterial( "Models/XQM/LightLinesRed" )
- Threshold = 1000
- findExcludeEntity( owner() )
- }
- if( !Turret ) {
- if( ->Fire ) {
- Es = ioOutputEntities("Fire")
- Turret = Es[1, entity]
- }
- }
- if( Turret & tickClk() ) {
- P = Self:pos() + vec( 0, 0, 10 )
- if( !Target & findCanQuery() ) {
- findByClass( "player" )
- N = findClipToSphere( Turret:pos(), Threshold )
- Fire = !!N
- if( N > 0 ) {
- Target = findClosest( Self:pos() )
- }
- }
- if( Target ) {
- if( Turret:pos():distance( Target:pos() ) > Threshold ){
- Target = noentity()
- exit()
- }
- Pos = Target:pos() + vec( random(-5, 5), random(-5, 5), Target:height() / 2 )
- Angle = ( Pos - Turret:pos() ):toAngle()
- rangerFilter( Turret )
- RD = rangerOffset( Turret:pos(), Pos )
- Fire = RD:entity() == Target
- } else { Angle = Self:angles() }
- TarQ = quat( Angle )
- CurQ = quat( Turret )
- Q = TarQ/CurQ
- V = Turret:toLocal( rotationVector( Q ) + P )
- Turret:applyTorque( ( 150 * V - 12 * Turret:angVelVector() ) * Turret:inertia() )
- Turret:applyForce( ( ( P - Turret:massCenter() ) * 10 - Turret:vel() ) * Turret:mass() )
- }
Add Comment
Please, Sign In to add comment