; Reinforce Alert ver 1.40 Doctrine By Crazy Ivan

var Unknown
var LegTimer
var TC
var MaxFiringRng
var TypSub
var ShotOK
var SolFire
var Dive
var DepthAirAtk
var MaxDpt
var InitTime
var OLDDPT
var OLDBG
var SC

func GoDive {
IF TIME > LegTimer AND ( TgtRng < 15000 ) THEN {
	LegTimer = ( 900 + RND 900 )
	SetPersist 590
	SetPriority 255
	SetAlt MaxDpt
	If ( MaxDpt <= TerrainAlt ) Then {
	MaxDpt = TerrainAlt + 30 } Endif
	SteerEvasive
;	LegTimer += TIME
	SetSpd OwnSpd
IF ( OwnAlt > -2 ) Then {
;	DEBUGOUT "Emergency Dive"
	Setpersist 180
	SetPriority 255
	SetSpd MaxSpd
	SC = 1
} ENDIF
IF ( OwnSpd < LoiterSpd ) THEN {
	SetPersist LegTimer
	SetPriority 255
	SetSpd ( LoiterSpd * 3 )
	SC = 1
	} ENDIF
} ENDIF
}

IF Init THEN {
	InitTime = TIME
	TypSub = GetEntVar "TypSub"
	; Subs With Portable SAM
	MaxFiringRng = ATTACKRNG
	MaxDpt = ( MinAlt * 3.28 )
	DepthAirAtk = ( PeriDepth - 35 )
	Unknown = true
	OLDDPT = GetEntVar "RunningDepth"
	OLDBg = GetEntVar "OLDBRG"
} ELSE {
IF TgtID $= "HOSTILE" THEN {
	Unknown = True
	IF Unknown THEN {
		TC = 1
;		Unknown = false
	} ENDIF
} ELSE {
	IF TgtID $= "UPD" THEN {
		IF Unknown THEN {
If TgtRng < 14000 Then {
		Unknown = false
		SetPersist ( 300 + RND 300 )
		SetAlt PeriDepth
	} ENDIF
			} ENDIF
		} ENDIF
	} ENDIF
} ENDIF

If TC And Not ShotOK Then {
	If TypSub == 8 Then {
	        If TgtSilos < 0 Then {
			If ( ( OwnAlt >= DepthAirAtk ) AND ( TgtRng < ( MaxFiringRng + 3000 ) ) ) Then {
				SolFire = 1
				SetPriority 255
				FIREBEST
			} ENDIF
		} ENDIF
	} ENDIF
		IF Not SolFire Then {
;		DEBUGOUT "Not Air Attack Conditions"
		Dive = 1
	} ENDIF
} ENDIF

IF ( ( WeaponAway ) And ( Not ShotOk ) ) Or Dive Then {
	GoDive
	ShotOk = 1
	Dive = 0
} ENDIF

IF SC THEN {
	If TIME < ( InitTime + 600 ) THEN {
		SetEntVar "fulltrottle" 1
	} ENDIF
} ENDIF

If TIME > ( InitTime + 600 ) THEN {
	SetAlt OLDDPT
	SetCrs OldBG
	SetEntVar "fulltrottle" 0
 	Drop
} Endif
