; DSRV Doctrine For v 1.1 DWX -Reinforce Alert- Add-on

var initX
var initY
var initAlt
var initCrs
var phase
var phaseTimer
var rngToOrigin
var ordSpd
var launchSafetyRng
var dockDpt

IF ( Init ) THEN {
	dockDpt = 50
IF ( TargetName $= "Arkhangel'sk" ) OR
( TargetName $= "Dmitriy Donskoy" ) OR
( TargetName $= "Severstal'" ) OR
( TargetName $= "Arkhangel'sk [B]" ) OR
( TargetName $= "Dmitriy Donskoy [B]" ) OR
( TargetName $= "Severstal' [B]" ) OR
( TargetName $= "TK-12 Simbirsk" ) OR
( TargetName $= "TK-13" ) OR
( TargetName $= "TK-202" ) OR
( TargetName $= "TK-208" ) OR
( TargetName $= "TK-12 Simbirsk [B]" ) OR
( TargetName $= "TK-13 [B]" ) OR
( TargetName $= "TK-202 [B]" ) OR
( TargetName $= "TK-208 [B]" ) OR
( TargetName $= "Red October" ) OR
( TargetName $= "Typhoon Wreck" ) THEN {
	dockDpt = 70
} ENDIF
	initX = OwnX
	initY = OwnY
	initAlt = ( OwnAlt + 10 )
;	DebugOut "Begin DSRV phase 1 - Heading towards target"
	phaseTimer = -1

	IF ( RelativeBearing OwnCrs TgtBrg > 0 ) THEN {
		initCrs = ( OwnCrs + 60 )
	} ELSE {
		initCrs = ( OwnCrs - 60 )
	} ENDIF
	launchSafetyRng = ( 40 * ( OwnSpd + 1 ) )
} ENDIF

If ( Phase == 0 ) Then {
SetSpd 0
SetAlt ( OwnAlt + 40 )
	If OwnAlt >= ( InitAlt + 30 ) Then {
	Phase = 1
	} ENDIF
} ELSEIF ( phase == 1 ) THEN {

;	DEBUGOUT "Heading towards rescue target"
	OrdSpd = MaxSpd
		IF ( TgtRng < 10 ) THEN {
;		DebugOut "Begin DSRV phase 2 - Hovering at rescue target"
		SetPersist 0
		SetCrs OwnCrs
		SetSpd 0
		SetAlt ( TgtAlt + dockDpt )
		phase = 2
		phaseTimer = ( time + 600 )
	} ELSE {
		SetPriority 242
		SetCrs InitCrs
;		TgtRng = ( TgtRng - 75 )
			IF ( ( TgtRng < 500 ) and ( TgtRng >= 10 ) ) THEN {
			ordspd = ( TgtRng / 100 )
			} ENDIF
		SetSpd OrdSpd
			IF xyrng ( initX - OwnX ) ( initY - OwnY ) > launchSafetyRng THEN {
				SetPriority 250
				Intercept
				SetAlt ( TgtAlt + 80 )
			} ENDIF
		} ENDIF
} ELSE {
	IF ( phase == 2 ) THEN {
		IF ( Time > phaseTimer ) THEN {
;		DebugOut "Begin DSRV phase 3 - Returning to point of origin"
		phase = 3
		SetAlt ( TgtAlt + 80 )
		SetSpd MaxSpd
		} ELSE {
		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 DSRV phase 4 - I'm back baby!"
			SetSpd 0
			phase = 4
			SetPersist 0
			Land
			} ELSEIF ( TgtRng < 250 ) and ( OwnAlt < ( TgtAlt + 79 ) ) THEN {
;			DEBUGOUT "Undocking"
			SetSpd ( TgtRng / 20 )
			} ELSE {
;			DEBUGOUT "Returning to point of origin"
			SetSpd MaxSpd
			SetAlt ( initAlt + 20 )
			} ENDIF
		} ENDIF
	} ENDIF
} ENDIF

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