; DWX v 1.41 RA Addon Vechicle self-props mine doctrine [User Mines]

var Enabled
var rundepth
var overthebottom
var ordspd
var ordalt
var rng
var brg
var DestReached
var Stop
var TorpMaxDepth
var ImpactTime
var CrushDpth
var Explode
var InitTime
var mw
var run
var InitX
var InitY
var CruiseRange
var MineLays
var ToBottom
var TS
var Fuel
var once
var XR
var NewX
var NewY
var DestX
var DestY


IF Init THEN {
	TorpMaxDepth = ( MinAlt * 3.28 )
	Explode = RND 10
	rundepth = -16.4
	overthebottom = 10
	ordalt = rundepth
	ordspd = maxspd
	InitX = OwnX
	InitY = OwnY
	TS = -1
IF ( OwnAlt <= ( TorpMaxDepth - 20 ) ) THEN {
; DebugOut "Fatal Depth!"
; DebugOut OwnName
	CrushDpth = 1
	ImpactTime = ( Time + 10 )
} ENDIF

IF OwnName $= "SMDM Mobile Mine" Then { CruiseRange = 17039 } ENDIF
IF OwnName $= "SLMM Mobile Mine" Then { CruiseRange = 16000 } ENDIF
	INITTIME = ( TIME + 3 )
} ELSEIF ( TIME > INITTIME ) THEN {

IF ( NEWTRACK ) THEN {
	If ( TgtSource $= "Active Intercept" ) Then {
		If ( TargetName $= "Mi-14BT MineWeeping" ) OR
			( TargetName $= "EH-101 MineWeeping DE" ) OR
				( TargetName $= "EH-101 MineWeeping IT" ) OR
					( TargetName $= "RH-53D MineWeeper IR" ) OR
						( TargetName $= "RH-53D MineWeeping US" ) OR
							( TargetName $= "S-80M-1 MineWeeping" ) OR
								( TargetName $= "MH-53E MineWeeping" ) Then {
									mw = 1
									SETTACTIC "SBROS"
								} ENDIF
							} ELSE {
								SetTactic "SLMM_SET"
							} ENDIF
						} ENDIF
Run = XYRng ( OwnX - InitX ) ( OwnY - InitY )

If Mw Then {
	If ( ( TgtRng <= 100 ) AND ( TgtRng > 1 ) ) AND ( TgtSilos > 0 ) Then {
		detonate
	} ENDIF
} ENDIF

If Not Fuel Then {
	rng = xyrng ( WayptX - OwnX ) ( WayptY - OwnY )
	brg = xybrg ( WayptX - OwnX ) ( WayptY - OwnY )
} ELSE {
	rng = xyrng ( DestX - OwnX ) ( DestY - OwnY )
	brg = xybrg ( DestX - OwnX ) ( DestY - OwnY )
} endif

If ( Rng > CruiseRange ) Then {
	fuel = 1
	If Not Once Then {
		XR = ( Brg * ( 3.1415926 / 180 ) )
		NewX = ( CruiseRange * sin ( XR ) )
		NewY = ( CruiseRange * cos ( XR ) )
		DestX = ( InitX + NewX )
		DestY = ( InitY + NewY )
		Once = 1
	} Endif
} Endif

IF ( ( rng < 500 ) and ( RNG >= 20 ) ) THEN {
	Stop = 1
IF ( RNG > 100 ) THEN {
	ordspd = ( rng / 30 )
	} ENDIF
} ENDIF

IF ( ( rng < 10 ) and ( Enabled == 0 ) ) THEN {
	If ( OwnAlt >= ( OrdAlt - 9 ) ) Then {
		OrdSpd = 0
		Enabled = 1
		TS = ( Time + 210 )
	} ENDIF
} ENDIF

If Enabled Then {
	ToBottom = ABS ( TerrainAlt - OwnAlt )
	If ( ToBottom <= 23 ) Then {
		Enable
	} ELSE {
		IF ( Time >= TS ) THEN {
DebugOut "Moored Chain Too Short, To Bottom More Than 23 Feet. Has Been Removed:"
; DebugValueOut ToBottom
; DebugOut OwnName
			ShutDown
		} endif
	} ENDIF
} ENDIF

IF ( MineLays ) THEN {
	ShutDown
} ENDIF

IF ( STOP == 1 ) THEN {
	ordalt = ( TerrainAlt + overthebottom )
IF ( ordalt < TorpMaxDepth ) THEN {
	ordalt = ( TorpMaxDepth )
} ENDIF
	IF ( ordalt > -10 ) THEN {
		ordalt = -10
	} ENDIF
} ENDIF
	SETPRIORITY 253
	SetSpd ordspd
	SETPRIORITY 253
	SetCrs brg
	SETPRIORITY 253
	SetAlt ordalt
	IF ( ( CrushDpth == 1 ) AND ( Time >= ImpactTime ) ) THEN {
		IF ( Explode >= 5 ) THEN {
			SETPRIORITY 255
			Detonate
		} ELSE {
			Shutdown
		} ENDIF
	} ENDIF
} ENDIF
