; RA Addon Use 1.46 ver. SM-1MR User Missile.
; Rev.2
; It conducts a missile from Ship FCradar up to the certain place,
; further control is transferred to a FCRadar of a Missile - SAM missile
; has the target by an own FC Radar aiming
; [When the operator has transferred the complete control to a missile]

var Aim
var ZWH
VAR DELTA
VAR WYSOTA
VAR TEMP
VAR TRNG
VAR TALT
VAR TAGE
VAR ZALT
VAR HOMING
VAR ZZZConf
VAR NUM_TH
VAR RUN
VAR OFRUN
var MxSpd
var lastX
var lastY
var firstT
var ASuW
var AAW
var Fvkl
var F_CM
var Legtimer
var ReflectValue
var DecoyLogic
var Skimmer
var SkimmerCapab
var MTS
var Mishit
var RData
var TC
var FinalLock

func GOTHIM {
If F_CM < 2 Then {
	If ( ( Skimmer == 1 ) OR ( Skimmer == 0 ) ) AND ( SkimmerCapab == 1 ) Then {
		SETPRIORITY 252 TerminalHome
	} endif
} endif
If Skimmer AND ( SkimmerCapab == 0 ) Then {
; DebugOut "This missile is unable to intercept incoming seaskimmer."
 	MisHit = 1
} endif
If ( ( Skimmer == 0 ) AND ( SkimmerCapab == 0 ) ) Then {
	SETPRIORITY 252 TerminalHome
} endif
}
func AntiAIR {
if ( AAW == 1 ) Then {
	ReflectValue = ReflectValue
} endif
if ( AAW == 2 ) Then {
	ReflectValue = 0
} endif
	drop
	enable
}
IF INIT Then {
preenable
ZALT = ( MAXALT / 0.3048 )
MxSpd = MaxSpd
WYSOTA = 328
temp = 30
TRNG = 5000
TAGE = TgtAge
Aim = 1
ReflectValue = RND 100
DecoyLogic = 70
SkimmerCapab = 1
MxSpd = 1188
OFRUN = 37966
lastX = OwnX
lastY = OwnY
firstT = 1
F_CM = 1
Legtimer = -1
IF ( OwnName $= "Aster 30 SAM User" ) THEN { DecoyLogic = 80 MxSpd = 2250 SkimmerCapab = 1 OFRUN = 100000 } ENDIF
} ELSEIF ( OWNALT > ZALT ) OR ( OWNALT < -1 ) OR ( RUN > OFRUN ) or ( ( Legtimer != -1 ) and ( Time >= LegTimer ) ) THEN {
	SHUTDOWN
} else {
	run += xyrng ( OwnX - lastX ) ( OwnY - lastY )
	lastX = OwnX
	lastY = OwnY
IF NEWTRACK THEN {
	FinalLock += 1
	If ( ( FinalLock >= 2 ) And ( FinalLock <= 2 ) ) Then {
		If ASuW Then {
		homing = 1
	} endif
} endif
	if firstT then {
		ZWH = ( TgtRng * 0.5 )
		firstT = 0
		if TgtClass $= "SURF" then { ASuW = 1 ZWH = ( TgtRng - 4050 ) } endif
		if ( ( TgtType $= "Plane" ) OR ( TgtType $= "Helo" ) ) then { AAW = 1 } endif
		if ( TgtClass $= "MISSILE" ) then { AAW = 2 } endif
	} endif
	if ( ( ASuW == 0 ) and ( finallock == 1 ) ) then { SetTactic "Guided_FCRC" } endif
	if ( ( ASuW == 1 ) and ( finallock == 1 ) ) then {
		IF not ( TgtID $= "FRIEND" ) THEN {
;		DebugOut "ASSIGNED ASUW MODE: Guided from SHIP_FCRadar"
		SetTactic "T_H_SM"
		Rdata = 1
	} endif
} endif
IF NEWTRACK then {
	IF ( finallock < 2 ) THEN {
} ELSE {
	IF TgtType $= "CM" THEN {
		IF ReflectValue > DecoyLogic THEN {
;			DEBUGOUT "Countermeasure has been very effective: engage CM"
			F_CM += 1
			homing = 1
			SetTactic "T_H_SM"
		} ELSEIF ReflectValue <= DecoyLogic THEN {
;			DEBUGOUT "Countermeasure NO effective: engage primary target"
			SetTactic "SBROS"
			} endif
		} ELSEIF Tgtconf > -1 THEN {
			SetTactic "T_H_SM"
		} ELSE {
			drop
		} ENDIF
		} ENDIF
	} ENDIF
} ENDIF
If F_CM == 2  Then {
	F_CM = 3
	SetPersist 0 SetPriority 255 Intercept
        SetPersist 0 SetPriority 254 SetAlt TgtAlt
	Legtimer = ( ( OwnSpd + TgtSpd ) * 0.514444 )
	Legtimer = ( TgtRng / Legtimer )
	LegTimer += TIME
	TimedDetonateTgt LegTimer
} endif
} ELSEif aim then {
	IF TGTRNG != 0 THEN {
		IF ( ( Run >= ZWH ) OR ( Trng < 4050 ) ) THEN {
			Aim = 0
			if ASuW then {
				DebugOut "ASuW Mode: Missile FCRadar enabled."
				Fvkl = 1
			} else {
				AntiAir
			} endif
		} endif
	} endif
} endif
IF TGTRNG != 0 THEN {
SetPriority 252 SetSpd MxSpd
if F_CM then {
	if ASuW then {
		IF NOT HOMING THEN {
			intercept
		} ENDIF
	} else THEN {
		TRNG = TgtRng
		TALT = TgtALT
		if tgtrng > 2000 then {
			SETPRIORITY 251 intercept
		} else {
;			DebugOut "GOT HIM !"
			GOTHIM
		} endif
	} endif
	IF TRNG > 4050 THEN {
		if NOT ASuW then {
			WYSOTA = tgtalt
		} ELSEIF ( TRNG < 8000 ) AND ( TRNG != 5000 ) THEN {
			WYSOTA = ( tgtalt + 50 )
		} endif
		DELTA = ( WYSOTA - OWNALT )
		if ASuW AND ( TRNG > 10000 ) then { 
			temp = XYBRG ABS DELTA 10000
		} ELSE {
			temp = XYBRG ABS DELTA ( TRNG * 3.28 )
		} ENDIF
		if DELTA < 0 then { temp = ( 0 - temp ) } endif
		SETPRIORITY 255 setpitch temp
			} ENDIF
		} ENDIF
	} ENDIF
If Homing Then {
	if asuw == 1 then {
		SETPRIORITY 255
		setpitch ( temp * 1.35 )
	} endif
} endif
If Mishit Then {
	MTS += 1
	If ( MTS > 15 ) Then {
		shutdown
	} ENDIF
} ENDIF
IF Not ASuW Then {
	If ( ( TgtAlt < 60 ) And ( TgtAlt != 0 ) ) Then {
	 	Skimmer = 1
	} ELSEIF ( ( TgtAlt >= 60 ) And ( TgtAlt != 0 ) ) Then {
		Skimmer = 0
	} endif
} endif
If Fvkl And Not TC Then {
	TC = 1
	enable
	drop
} ENDIF
