; Reinforce Alert RAM SAM missile doctrine
; for ver. 1.39
 
var PreenableCourse
var PreenablePitch
var RunToEnable
var Runout
var Homing
var initX
var initY
var run
var SSM


IF INIT THEN {
	Homing = 0

	initX = OwnX
	initY = OwnY

	; Default to 100 yd enable
	RunToEnable = 100

	; Default to full range
	Runout = -1

	PreenablePitch = pitch

	IF DBObjectFlags & 6 THEN {
		SSM = true
	} ENDIF

} ELSE {
	SetSpd MaxSpd

	run = xyrng ( OwnX - initX ) ( OwnY - initY )

	IF NOT Homing THEN {
		SetCrs PreenableCourse
		IF SSM THEN {
			SetAlt 500
		} ELSE {
			SetPitch PreenablePitch
		} ENDIF
	} ENDIF

	; Enable
	IF ( RunToEnable != -1 ) THEN {
		IF ( ( run + OwnAlt ) >= RunToEnable ) THEN {
			ENABLE
			RunToEnable = -1
			DEBUGOUT "Missile Enabled"
		} ENDIF
	} ENDIF

	; Shutdown
	IF ( Runout != -1 ) AND ( run >= Runout ) AND NOT Homing THEN {
		DEBUGOUT "Missile failed to acquire"
		Runout = -1
		SHUTDOWN
	} ENDIF

	; Home
	IF NEWTRACK THEN {
		Homing = ( Homing + 1 )
		DEBUGOUT "Missile Homing"
		Runout = -1
		SetTactic "terminal_home"
	} ENDIF

	IF LOSTTRACK THEN {
		Homing = ( Homing - 1 )
	} ENDIF
} ENDIF

