; Combined UnderSea-To-Surface AI And UnderSea-To-Surface Player Missile Doctrine For
; -Reinforce Alert- Mod v 1.41

var PreenableCourse
var RunToEnable
var Runout
var lastX
var lastY
var run
var Waypoints
var DecoyLogic
var Spoofed
var UWD
VAR ZALT
var TINIT
VAR NUM_TH
VAR ZZZConf
var TX
VAR TY
var talt
var temp
var Delta
var AltCruise
var PreSet
var FinalPhazeN
var TP
var d
var cd
var inair
var TRD_Switch
var mission

IF INIT THEN {
	TP = -1
	cd = 1
	lastX = OwnX
	lastY = OwnY
	RunToEnable = 100
	PreSet = 1
	ZALT = ( MAXALT * 3.28 )
	TINIT = ( TIME + 0.5 )
	FinalPhazeN = 3000
IF ( DBUser1Flags & 1 ) == 1 THEN { SetSnorkel On TRD_Switch = 1 } ENDIF
} ELSEIF ( Runout != -1 ) AND ( run > Runout ) THEN {
	Runout = -1
	SHUTDOWN
} ELSEif ( tp != -1 ) and ( time > tp ) then {
	detonate
} else {
	IF PreSet THEN {
		PreSet = 0
		DecoyLogic = 40
		Spoofed = RND 100
		IF ( ( OwnName $= "Harpoon UGM" ) OR ( OwnName $= "Harpoon User" ) ) THEN { AltCruise = 30 DecoyLogic = 70 inair = 1 } ENDIF
		IF ( OwnName $= "TASM UGM-109 B" ) THEN { AltCruise = 50 } ENDIF
		IF ( OwnName $= "SS-N-22 Sunburn UGM" ) THEN { AltCruise = 66 DecoyLogic = 50 } ENDIF
		IF ( OwnName $= "Penguin ASM" ) THEN { AltCruise = 49 inair = 1 } ENDIF
		IF ( OwnName $= "Marte ER User" ) THEN { AltCruise = 49 DecoyLogic = 60 inair = 1 } ENDIF
		IF ( OwnName $= "Kh-35 Uran ASM" ) THEN { AltCruise = 30 DecoyLogic = 60 inair = 1 } ENDIF
		IF ( OwnName $= "Exocet UGM User" ) THEN { AltCruise = 49 DecoyLogic = 60 } ENDIF
		IF ( OwnName $= "C 802 UGM User" ) THEN { AltCruise = 99 DecoyLogic = 60 } ENDIF
		IF ( OwnName $= "SSN-27 Sizzler SSM SuperSonic" ) THEN { AltCruise = 50 DecoyLogic = 80 inair = 1
	} ENDIF
		IF ( Pitch < 70 ) AND ( OwnAlt > 0 ) AND NOT inair Then { ShutDown } ENDIF
	} ENDIF
	IF TRD_Switch THEN {
 		IF ( OwnAlt > -10 ) AND ( mission != 1 ) THEN {
;			DebugOut "Booster OFF"
 			SetPriority 255
			SetSnorkel OFF
	 		mission = 1
		} ENDIF
	} ENDIF
	IF OwnAlt > 0 THEN { UWD = 1 } ELSEIF ( OWnAlt < 0 ) AND UWD THEN { Shutdown } ENDIF
	run += xyrng ( OwnX - lastX ) ( OwnY - lastY )
	lastX = OwnX
	lastY = OwnY

	IF ( TINIT < TIME ) AND ( OWNALT > 0 ) THEN {
		SETPRIORITY 252	SETALT AltCruise
		SETPRIORITY 252	SetSpd MaxSpd
		IF NUM_TH == 0 THEN {
			IF Waypoints THEN {
				IF ( OwnName $= "Harpoon User" ) Then { SETPRIORITY 224 TerminalHome } ELSE { SETPRIORITY 224 PreenableCourse } ENDIF
			} ELSE {
				SETPRIORITY 224 SetCrs PreenableCourse
			} ENDIF
		} else {
			temp = XYRng ( tx - ownx ) ( ty - owny )
			if d and cd then {
				cd = 0
				tp = ( ownspd * 0.5144444 )
				tp = ( time + 3 + ( temp / tp ) )
			} endif
			if temp > 1000 then {
				d = 1
				SETPRIORITY 250 steerxy ( tx - ownx ) ( ty - owny )
				if ( temp < 5000 ) or ( talt > 50 ) then {
					DELTA = ( TALT - OWNALT + 30 )
					temp = XYBRG ABS DELTA ( temp * 3.28 )
					if DELTA < 0 then { temp = ( -1 * temp ) } endif
					SETPRIORITY 253 SetSpd MaxSpd
					SETPRIORITY 253 SETPERSIST 1 SETPITCH TEMP
				} endif
			} endif
		} endif
	} ENDIF
	IF RunToEnable != -1 THEN {
		IF run >= RunToEnable THEN {
			ENABLE
			RunToEnable = -1
		} ENDIF
	} ENDIF
	IF NEWTRACK then {
	IF ( TgtType $= "PLANE" ) OR ( TgtType $= "HELO" ) THEN { Drop } ELSE {
		IF TgtType $= "CM" THEN {
			IF Spoofed > DecoyLogic THEN {
				SetTactic "TH_ST"
		} ELSEIF Spoofed <= DecoyLogic THEN {
			Drop
			} endif
		} ELSEIF Tgtconf > ZZZConf THEN {
			SetTactic "TH_ST"
		} ELSE {
			SetTactic "SBROS"
		} ENDIF
	} ENDIF
	} ENDIF
} ENDIF