; RA Add-0n ver 1.41 Doctrine For AI Subroc

var Initx
var Inity
var apogei
var preset1
var preset2
var DropRng
var CurRng
var OrdCrs
VAR Y
VAR TEMP
VAR const2
var const3
var const4
var delta
var alts
var SBB
var SBR
var SBR_R
var cover
var brgerror
var Snap2
var DistError
VAR DS
var TgRng2
var NearFar

func Spray {
IF ( SBB >= 50 ) Then {
	brgerror = ( ( rnd 9 ) - ( rnd 9 ) )
} ENDIF

IF ( SBR >= 50 ) AND NOT SNAP2 Then {
	SBR_R = 1
cover =  ( RND -2000 + RND 2000 )
	DropRng += cover
} ENDIF
If Not Snap2 And Not SBR_R Then {
	DropRng -= ( -1000 + RND 1000 )
} ENDIF
	apogei = ( DropRng / 3 )
if apogei < 10000 then {
	apogei = 10000
} elseif apogei > 20000 then {
	apogei = 20000
} endif
const2 = ( DropRng / 2 )
const3 = ( const2 * const2 )
const4 = ( 3.28 * apogei )
}

IF Init THEN {
	If Not Preset1 Then {
		OrdCrs = GetEntVar "PreenableCourse"
		Snap2 = GetEntVar "Snap"
		TgRng2 = GetEntVar "TgRng1"
		NearFar = ( RND 100 )
		SBB = ( RND 100 )
		SBR = ( RND 100 )
		brgerror = 0
		Initx = ownx
		Inity = owny
if maxspd > 1000 then { alts = 4500 } else { alts = 3000 } endif
	DropRng = xyrng ( Tgtx - Initx ) ( Tgty - Inity )
	If DropRng < 9260 Then { DropRng = 9260 } Endif
	} endif
If NOT Snap2 Then {
	If Not Preset2 Then {
		Preset2 = 1
If ( DS < 1 ) Then {
	DS = ( ds + 1 )
	DistError = RND 9260
If ( TgRng2 > 9261 ) AND ( TgtRng <= 18520 ) Then { DistError = ( ( RND 1852 ) + 1852 ) } Endif
If ( TgRng2 > 18520 ) AND ( TgtRng <= 37040 ) Then { DistError = ( ( RND 3704 ) + 3704 ) } Endif
If ( TgRng2 > 37040 ) AND ( TgtRng <= 74080 ) Then { DistError = ( ( RND 5556 ) + 5556 ) } Endif
If ( TgRng2 > 74080 ) Then { DistError = ( ( RND 7408 ) + 7408 ) } Endif
} Endif

If ( NearFar >= 50 ) Then {
	DropRng = ( DropRng - DistError )
} ELSEIF ( NearFar < 50 ) Then {
	DropRng = ( DropRng + DistError )
} ENDIF
	If DropRng < 9260 Then { DropRng = 9260 } Endif
		SPRAY
	} Endif
} Endif

} ELSEIF WeaponAway THEN {
	Shutdown
} ELSEIF OWNALT > 0 THEN {
	SETPRIORITY 250 SetCrs ( OrdCrs + brgerror )
	SETPRIORITY 250 SetSpd MaxSpd
	CurRng = xyrng ( ownx - Initx ) ( owny - Inity )
	IF CurRng < const2 THEN {
		DELTA = ( y - OWNALT )
		temp = ( CurRng - const2 )
		temp = ( temp * temp )
		temp = ( temp / const3 )
		temp = ( 1 - TEMP )
		if temp >= 0 then {
			Y = ( const4 * SQRT temp )
			temp = XYBRG ABS DELTA ( 2500 )
			if DELTA < 0 then { temp = ( -1 * temp ) } endif
			SETPRIORITY 250 SetPitch temp
		} endif
	} ELSEIF alts > ownalt THEN {
			SETPRIORITY 255 FIREBEST
		} else {
			DELTA = ( alts - OWNALT )
			temp = ( DropRng / CurRng )
			temp = ( temp * temp )
			temp = XYBRG ABS DELTA ( ( DropRng - CurRng ) * temp * 3.28 )
			if DELTA < 0 then { temp = ( -1 * temp ) } endif
			if temp < -89.8 then { temp = -89.8 } endif
			SETPRIORITY 253 SetPitch temp
		} endif
	} ENDIF
IF Not Preset1 Then {
	IF DropRng <= 0 THEN { DropRng = 1 } ENDIF
	apogei = ( DropRng / 3 )
if apogei < 10000 then {
	apogei = 10000
} elseif apogei > 20000 then {
	apogei = 20000
} endif
const2 = ( DropRng / 2 )
const3 = ( const2 * const2 )
const4 = ( 3.28 * apogei )

If Not Snap2 Then {
	IF ( TgtSource $= "Active Intercept" ) Then {
		SBR = ( SBR + 100 )
	} Endif
		Spray
	} Endif
} Endif

Preset1 = 1