; Mk8 SEAL Delivery Vechicle Attack Doctrine For v 1.41 DWX -Reinforce Alert- Add-on

var initX
var initY
var initAlt
var initCrs
var phase
var phaseTimer
var rngToOrigin
var ordSpd
var launchSafetyRng
var RngUnswitch
var MoveDepth
var statik
var Delay
var Mark1
var Mark2
var lastX
var lastY
var Run
var Lock
var Preset

IF ( Init ) THEN {
	Preset = 1
} ELSE {
	If Preset THEN {
		Preset = 0
IF TargetName $= "Naval Base" THEN { RngUnswitch = 1525 MoveDepth = -33 statik = 1
	} ELSEIF TargetName $= "Ship Yard" THEN { RngUnswitch = 1111 MoveDepth = -33 statik = 1
	} ELSEIF TargetName $= "Oil-Rig" THEN { RngUnswitch = 200 MoveDepth = -33 statik = 1
	} ELSEIF TargetName $= "Oil-Rig Armed" THEN { RngUnswitch = 200 MoveDepth = -33 statik = 1
	} elseIF TgtType $= "ROCK" THEN { RngUnswitch = 200 MoveDepth = -66 statik = 1
	} ELSEIF TgtType $= "SUB" THEN { RngUnswitch = 150 MoveDepth = -66 statik = 0
	} elseIF TgtType $= "SHIP" THEN { RngUnswitch = 200 MoveDepth = -33 statik = 0
	} ELSE { RngUnswitch = 200 MoveDepth = -33 statik = 0
} ENDIF
	initX = OwnX
	initY = OwnY
	lastX = OwnX
	lastY = OwnY
	initAlt = ( OwnAlt + 10 )
	phaseTimer = -1
	IF ( RelativeBearing OwnCrs TgtBrg > 0 ) THEN {
		initCrs = ( OwnCrs + 60 )
	} ELSE {
		initCrs = ( OwnCrs - 60 )
	} ENDIF
	launchSafetyRng = Time + 30
} ENDIF

If ( Phase == 0 ) Then {
; DebugOut "Undockind From Sub"
; DebugOut OwnName
	SetSpd 5
	SetAlt ( OwnAlt + 10 )
	SetCrs InitCrs
	If OwnAlt >= ( InitAlt + 5 ) Then {
	Phase = 1
	} ENDIF
} ELSEIF ( phase == 1 ) THEN {
	OrdSpd = MaxSpd
	SetAlt MoveDepth
IF ( ( TgtRng < RngUnswitch ) and ( tgtspd < 3 ) OR ( TerrainAlt > -60 ) ) THEN {
;		DebugOut "Begin SDV phase 2 - Hovering near target"
		SetPersist 0
		SetCrs OwnCrs
		SetSpd 0
		SetAlt OwnAlt
		phase = 2
		PhaseTimer = ( ( 3.6 * tgtrng / 8 ) + Time + 60 )
		Mark1 = ( ( PhaseTimer - Time ) * 2 )
		Mark2 = ( Mark1 + Time )
		TimedDetonateTgt ( Mark2 )
	} ELSE {
		SetPriority 242
		SetCrs InitCrs
			IF ( ( TgtRng < ( RngUnswitch + 100 ) ) and ( TgtRng >= 10 ) ) THEN {
			ordspd = ( TgtRng / 100 )
			} ENDIF
			SetSpd OrdSpd
		IF ( Time >= launchSafetyRng ) THEN {
			SetPriority 250
			Intercept
			SetAlt MoveDepth
;			DebugOut "Transit to target"
		} ENDIF
	} ENDIF
} ELSE {
	IF ( phase == 2 ) THEN {
		IF ( Time > phaseTimer ) THEN {
;		DebugOut "Begin SDV phase 3 - Returning to point of Launch"
		phase = 3
		SetAlt InitAlt
		SetSpd MaxSpd
		Delay = ( Time + 10 )
		} ELSE {
; 		DebugOut "Hovering near target"
		SetSpd 0
		} ENDIF
	} ELSE {
		IF ( phase == 3 ) THEN {
		rngToOrigin = xyrng ( initX - OwnX ) ( initY - OwnY )
		SteerXY ( initX - OwnX ) ( initY - OwnY )
			IF ( rngToOrigin < 70 ) THEN {
;			DebugOut "Begin SDV phase 4 - Docking An Sub Deck"
			SetSpd 0
			phase = 4
			SetPersist 0
			Land
		} ELSEIF ( Time <= Delay ) and ( OwnAlt < 0 ) ) THEN {
			SetSpd MaxSpd
		} ELSE {
;			DEBUGOUT "Transit to point of launch"
			SetSpd 8
			SetAlt ( initAlt + 10 )
If ( Mark2 - Time ) < 1 THEN {
	IF NOT LOCK AND NOT ( TgtType $= "FLOAT" ) THEN {
		Land
		SETPRIORITY 300
		SETPERSIST 0
		SetAlt OwnAlt
		Lock = 	1	
	} endif
} endif
			} ENDIF
		} ENDIF
	} ENDIF
} ENDIF
	run += xyrng ( OwnX - lastX ) ( OwnY - lastY )
	lastX = OwnX
	lastY = OwnY
; DebugOut "Mk 8 SDV Run:"
; DebugValueOut Run

IF ( Run >= 13000 ) THEN {
;	DebugOut "Fuel Lost, unit has been stopped!"
	SetSpd 0
} ENDIF

IF ( phase == 4 ) THEN { SetPriority 255 SetAlt OwnAlt } ENDIF

} ENDIF