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

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 AttackMode
var HARM
var HARM2

func Illuminate {
IF NOT HARM2 THEN {
	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
			SensorEnable "Wep AntiRad" 1
		} ELSE {
			SensorEnable "Wep Radar1" 1
			SensorEnable "Wep Radar3" 1
			SensorEnable "SAM Wep Radar" 1
			SensorEnable "ARGS-35" 1
			SensorEnable "Wep Vis/Vid/LG" 1
		} endif
} ELSEIF CruiseMode Then {
	SensorEnable "Oniks ARGS" 1
	SensorEnable "Wep Radar1" 1
	SensorEnable "Wep Radar3" 1
	SensorEnable "SAM Wep Radar" 1
	SensorEnable "ARGS-35" 1
} ENDIF
} ELSE {
	IF HARM THEN {
		SensorEnable "Wep AntiRad" 1
	} ELSE {
		SensorEnable "Wep Radar1" 1
	} ENDIF
} ENDIF
}

func recognition {
IF ( TgtSource $= "ESM" ) Then {
	HARM = 1
	RTB = 1000
} ENDIF
IF ( ( TgtSource $= "RADAR" ) OR ( TgtSource $= "RADAR" ) ) AND ( TgtID $= "HOSTILE" ) Then {
	HARM = 1
	RTB = 1000
} endif
}

IF INIT THEN {
RTB = ( RND 1000 )
AttackMode = ( RND 10 )
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 + 1 )
ZALT = ( MAXALT * 3.28 )
InitAlt = OwnAlt
PreSet = 1
FinalPhazeN = 3000
FinalPhazeV = 7000
Terminal = "TH_ST"
} 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-2A Styx SSM" ) THEN { AltCruise2 = 656 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SS-N-2B Styx SSM" ) THEN { AltCruise2 = 164 DecoyLogic = 40 Dual = 1 RTB = 1000 } ENDIF
	IF ( OwnName $= "SS-N-2D Styx SSM" ) THEN { AltCruise2 = 164 DecoyLogic = 45 Dual = 1 } ENDIF
	IF ( OwnName $= "SS-N-9 Siren SSM" ) THEN { AltCruise2 = 197 DecoyLogic = 50 Dual = 1 RTB = 1000 } ENDIF
	IF ( OwnName $= "SS-N-12 Sandbox SSM" ) THEN { AltCruise2 = 656 AltCruise = 22960 VariableCruise = 1 } ENDIF
	IF ( OwnName $= "SS-N-22 Sunburn SSM" ) THEN { AltCruise2 = 30 DecoyLogic = 50 Dual = 1 RTB = 100 Recognition } ENDIF
	IF ( OwnName $= "SS-N-22 Sunburn SSM ER" ) THEN { AltCruise2 = 30 AltCruise = 22960 FinalPhazeV = 15000 DecoyLogic = 70 VariableCruise = 1 Dual = 1 RTB = 100 Recognition HARM2 = 1 AttackMode = 10 } ENDIF
	IF ( OwnName $= "YJ-12 ASM" ) THEN { AltCruise2 = 100 DecoyLogic = 65 Dual = 1 RTB = 100 Recognition } ENDIF
	IF ( OwnName $= "AS-16 Kickback ASM" ) THEN { AltCruise2 = 49 AltCruise = 33000 DecoyLogic = 90 VariableCruise = 1 FinalPhazeV = 15000 } ENDIF
	IF ( OwnName $= "PJ-10 Brahmos SSM" ) THEN { AltCruise2 = 49 AltCruise = 32800 DecoyLogic = 70 VariableCruise = 1 FinalPhazeV = 15000 } ENDIF
	IF ( OwnName $= "SS-N-25 SSM" ) THEN { AltCruise2 = 49 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "C 802 SSM" ) THEN { AltCruise2 = 99 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "MM.40 Exocet SSM" ) OR ( OwnName $= "MM.38 Exocet SSM" ) THEN { AltCruise2 = 52 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "MM.40 Exocet SSM Block III" ) THEN { AltCruise2 = 52 DecoyLogic = 70 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Sea Killer II SSM" ) THEN { AltCruise2 = 52 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Hsiung Feng II SSM" ) THEN { AltCruise2 = 164 DecoyLogic = 40 Dual = 1 RTB = 1000 } ENDIF
	IF ( OwnName $= "Hsiung Feng I SSM" ) THEN { AltCruise2 = 656 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SY-1 SSM" ) THEN { AltCruise2 = 656 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "HY-2C Silkworm SSM" ) THEN { AltCruise2 = 328 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "C 201 SSM" ) THEN { AltCruise2 = 164 Dual = 1 } ENDIF
	IF ( OwnName $= "SS-N-3 Shaddock SSM" ) THEN { AltCruise = 13120 AltCruise2 = 1312 VariableCruise = 1 } ENDIF
	IF ( OwnName $= "Harpoon SSM" ) THEN { AltCruise2 = 30 DecoyLogic = 70 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "TASM RGM-109 B" ) THEN { AltCruise2 = 50 DecoyLogic = 40 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Skorpioen SSM" ) THEN { AltCruise2 = 50 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Otomat Mk2 SSM" ) THEN { AltCruise2 = 30 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Gabriel II SSM" ) THEN { AltCruise2 = 50 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "NSM SSM" ) THEN { AltCruise2 = 45 DecoyLogic = 70 Dual = 1 RTB = 1000 } ENDIF
	IF ( OwnName $= "RIM-66B SM-1MR SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 45 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-66H SM-2MR SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-156A SM-2ER SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-67A SM-1ER SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-162B ESSM SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 60 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-66E SM-1MR SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 45 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Sea Dart Mod 3 SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 50 Dual = 1 RTB = 1000 } ENDIF
	IF ( OwnName $= "Sea Slug SSM" ) THEN { AltCruise2 = 150 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-7E Sea Sparrow SSM" ) OR ( OwnName $= "RIM-7M Sea Sparrow SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 40 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SA-N-1 Goa SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 40 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SA-N-4 Gecko SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 45 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SA-N-7 Gadfly SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SAAB RBS 15 SSM" ) THEN { AltCruise2 = 50 DecoyLogic = 70 Dual = 1 RTB = 1000 } ENDIF
	IF ( OwnName $= "SSM-1B" ) OR ( OwnName $= "SSM-1A" ) THEN { AltCruise2 = 150 DecoyLogic = 65 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SA-N-12 Grizzly SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 75 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "C 801 SSM" ) THEN { AltCruise2 = 394 DecoyLogic = 50 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SSM-700K Sea Star" ) THEN { AltCruise2 = 60 DecoyLogic = 75 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "C 602 SSM" ) THEN { AltCruise2 = 66 DecoyLogic = 65 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SA-N-17 Grizzly M SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 75 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "SA-N-3 Goblet SSM" ) THEN { AltCruise2 = 656 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "Sea Dart Mod 1 SSM" ) THEN { AltCruise2 = 164 Dual = 1 RTB = 100 } ENDIF
	IF ( OwnName $= "RIM-66A SM-1MR SSM" ) THEN { AltCruise2 = 150 DecoyLogic = 40 Dual = 1 RTB = 100 } ENDIF

	If ( Pitch < 1 ) Then { SetPersist 2 SetPitch 20 } Endif
} ENDIF

IF OwnAlt > 0 THEN { Rmv = 1 } ELSEIF ( OWnAlt < 0 ) AND Rmv THEN { Shutdown } 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 <= AttackMode 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 $= "CM" THEN {
			IF Spoofed > DecoyLogic THEN {
				SetTactic "TH_ST"
			} ELSE {
				SetTactic "SBROS"
			} ENDIF
} ELSE {
IF HARM THEN {
	If ABS TgtAOB <= 10 Then {
		SetTactic Terminal
	} 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
