; Surface-To-Surface Missile Doctrine For -Reinforce Alert- Mod.

var PreenableCourse
var RunToEnable
var Runout
var Spoofed
var DecoyLogic
var lastX
var lastY
var run
var Waypoints
VAR IT
VAR TINIT
VAR ZALT
VAR NUM_TH
VAR ZZZConf
var TX
VAR TY
var talt
var temp
var Delta
var Rmv
var AltCruise
var AltCruise2
var InitAlt
var PreSet
var Typ
var ASUV
var CruiseMode
var VariableCruise
var DescentRNG
var Terminal
var FinalPhazeN
var FinalPhazeV
var vzvod
var ttt
var first
var TN
var Dual
var RTB
var TRD_Switch
var mission

func Illuminate {
	IF ( CruiseMode == 0 ) and Not Dual Then {
		SensorEnable "Wep Radar High" 1
		SensorEnable "Oniks ARGS" 1
} ELSEIF ( CruiseMode == 0 ) and Dual Then {
		If RTB > 500 Then {
			SensorEnable "Wep IR" 1
		} ELSE {
			SensorEnable "Wep Radar1" 1
			SensorEnable "Wep Radar3" 1
			SensorEnable "SAM Wep Radar" 1
			SensorEnable "ARGS-35" 1
} endif
} ELSEIF CruiseMode Then {
	SensorEnable "Wep Radar1" 1
	SensorEnable "Wep Radar3" 1
	SensorEnable "SAM Wep Radar" 1
	SensorEnable "ARGS-35" 1
	SensorEnable "Oniks ARGS" 1
} ENDIF
}

IF INIT THEN {
first = 1
lastX = OwnX
lastY = OwnY
vzvod = -1
NUM_TH = 0
ZZZConf = 0
RunToEnable = 100
Runout = -1
RMV = 0
TINIT = ( TIME + 0.5 )
IT = ( TIME + 2 )
ZALT = ( MAXALT * 3.28 )
InitAlt = OwnAlt
PreSet = 1
FinalPhazeN = 3000
FinalPhazeV = 7000
Terminal = "TH_ST"
RTB = ( RND 1000 )
IF ( DBUser1Flags & 1 ) == 1 THEN { SetSnorkel On TRD_Switch = 1 } ENDIF
} ELSEIF ( Runout != -1 ) AND ( run > Runout ) AND ( NUM_TH == 0 ) THEN {
Runout = -1
SHUTDOWN
} elseif vzvod != -1 then {
	if time > vzvod then { detonate } endif
} ELSE {
IF PreSet THEN {
	vzvod = -1
	PreSet = 0
	DecoyLogic = 30
	Spoofed = RND 100
IF ( OwnName $= "SS-N-3 Shaddock UGM" ) THEN { AltCruise = 13120 AltCruise2 = 1312 VariableCruise = 1 DecoyLogic = 30 } ENDIF
IF ( OwnName $= "SS-N-9 Siren UGM" ) THEN { AltCruise2 = 197 DecoyLogic = 50 Dual = 1 RTB = 1000 } ENDIF
IF ( OwnName $= "SS-N-12 SandBox UGM" ) THEN { AltCruise2 = 656 AltCruise = 22960 VariableCruise = 1 DecoyLogic = 30 } ENDIF
IF ( OwnName $= "SS-N-26 Strobile" ) THEN { AltCruise2 = 30 AltCruise = 22960 VariableCruise = 1 DecoyLogic = 85 RTB = 100 } ENDIF
IF ( OwnName $= "SS-N-7 Starbright UGM" ) THEN { AltCruise2 = 197 DecoyLogic = 45 Dual = 1 RTB = 100 } ENDIF
IF ( OwnName $= "C 801 UGM" ) THEN { AltCruise2 = 394 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
IF ( OwnName $= "C 802 UGM" ) THEN { AltCruise2 = 99 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
IF ( ( OwnName $= "SM.39 Exocet UGM" ) OR ( OwnName $= "Exocet UGM" ) ) THEN { AltCruise2 = 49 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
IF ( OwnName $= "Skorpioen UGM" ) THEN { AltCruise2 = 66 DecoyLogic = 40 Dual = 1 RTB = 100 } ENDIF
IF ( TgtClass $= "SURF" ) Then { Typ = 1 } ENDIF
IF ( ( TgtClass $= "LAND" ) AND ( TgtType $= "ROCK" ) ) Then { Typ = 2 } ENDIF
IF ( ( TgtClass $= "LAND" ) AND ( TgtType $= "SHIP" ) ) Then { Typ = 3 } ENDIF
IF ( ( TgtClass $= "LAND" ) AND ( TgtType $= "FLOAT" ) ) Then { Typ = 3 } ENDIF
} ENDIF

IF OwnAlt > 0 THEN { Rmv = 1 } ELSEIF ( OWnAlt < 0 ) AND Rmv THEN { Shutdown } ENDIF
IF TRD_Switch THEN {
 	IF ( OwnAlt > -10 ) AND ( mission != 1 ) THEN {
;		DebugOut "Booster OFF"
 		SetPriority 255
 		SetSnorkel OFF
 		mission = 1
	} ENDIF
} ENDIF
run += xyrng ( OwnX - lastX ) ( OwnY - lastY )
lastX = OwnX
lastY = OwnY
IF OwnAlt >= ( ZALT + 300 ) THEN { SETPRIORITY 255 Detonate } ENDIF
IF RUN > DescentRNG AND CruiseMode Then { VariableCruise = 0 } Endif
IF ASUV AND ( DescentRNG <= 0 ) Then { CruiseMode = 1 } ENDIF

IF RunToEnable != -1 THEN {
	IF run >= RunToEnable THEN {
		RunToEnable = -1
		Illuminate
	} ENDIF
} ENDIF

IF NEWTRACK then {
	if first then {
		first = 0
		IF ( TgtClass $= "SURF" ) Then { Typ = 1 } ENDIF
		IF ( TgtClass $= "LAND" ) AND ( TgtType $= "ROCK" ) Then { Typ = 2 } ENDIF
		IF ( TgtClass $= "LAND" ) AND ( TgtType $= "SHIP" ) Then { Typ = 3 } ENDIF
		IF ( TgtClass $= "LAND" ) AND ( TgtType $= "FLOAT" ) Then { Typ = 3 } ENDIF
		IF Typ != 2 Then {
			IF VariableCruise Then {
				ASUV = 1
				IF 5 > RND 10 THEN {
					CruiseMode = 1
					Terminal = "TH_ST"
				} ELSE {
					Terminal = "TH_ST_L"
				} ENDIF
			IF TgtRng >= 50000 Then {
				DescentRNG = ( TgtRng - 50000 )
				RunToEnable = ( TgtRNG - ( 18520 - ( RND 9260 ) ) - 10000 )
			} endif
		} endif
	} endif
	SetTactic "SBROS"
	} ELSE {
IF ( TgtType $= "PLANE" ) OR ( TgtType $= "HELO" ) THEN { Drop } ELSE {
		IF TgtType $= "CM" THEN {
			IF Spoofed > DecoyLogic THEN {
				SetTactic "TH_ST"
			} ELSE {
				SetTactic "SBROS"
			} ENDIF
		} ELSE {
			SetTactic Terminal
		} ENDIF
		} ENDIF
	} ENDIF
} endif

IF NUM_TH == 0 THEN {
	if IT < TIME THEN {
		IF VariableCruise THEN {
			SETPRIORITY 220	PreenableCourse
			SETPRIORITY 220 SETALT AltCruise
			SETPRIORITY 220 SETSPD MAXSPD
		} ELSE {
			SETPRIORITY 220 SETSPD MAXSPD
			SETPRIORITY 220 SETALT AltCruise2
			SETPRIORITY 220	SetCrs PreenableCourse
		} ENDIF
	} ENDIF
} else {
	temp = XYRng ( tx - ownx ) ( ty - owny )
	ttt = temp
	if vzvod == -1 then {
		if temp < 300 then { vzvod = ( time + 2 ) } endif
	} endif
	if ttt > 1200 then { 
		SETPRIORITY 253 SETPERSIST 1 setcrs xybrg ( tx - ownx ) ( ty - owny )
		DELTA = ( TALT - OWNALT + 30 )
		temp = XYBRG ABS DELTA ( temp * 3.28 )
		if DELTA < 0 then { temp = ( -1 * temp ) } endif
		SETPRIORITY 252 SETPERSIST 1 SETPITCH TEMP
	} endif
} endif

} ENDIF
