; DWX 1.41 Wake Follow User Doctrine

var PreEnableCourse
var PreEnableSpeed
var PreEnableDepth
var RunToEnable
var Enabled
var Homing
var SearchDepth
var Floor
var Ceiling
var AcousticMode
var spdmin
var InitX
var InitY
var Run
var TRange
var fuel
var FSR
var K
var FSRMIN
var DMAX
var DMIN
var CorrInterogg
var TorpMaxDepth
var ImpactTime
var CrushDpth
var Explode
VAR PRESET
VAR CALCALT
var fwake
var mission
var SilStart

IF INIT THEN {
PRESET = 1
CorrInterogg = Time
Enabled = 0
Homing = 0
InitX = OwnX
InitY = OwnY
IF ( DBUser1Flags & 2 ) == 2 THEN { SetSnorkel On SilStart = 1 } ENDIF
TorpMaxDepth = ( MinAlt * 3.28 )
Explode = RND 10
IF ( OwnAlt <= TorpMaxDepth ) THEN {
CrushDpth = 1
ImpactTime = ( Time + 10 )
} ENDIF
IF ( OwnName $= "53-65M Torpedo U" ) THEN { spdmin = 50 TRange = 22000 DMAX = 12000
} elseIF ( OwnName $= "53-65K Torpedo U" ) THEN { spdmin = 44 TRange = 19100 DMAX = 19250
} elseIF ( OwnName $= "65-76 Torpedo U" ) THEN { spdmin = 30 TRange = 50004 DMAX = 27000
} elseIF ( OwnName $= "53-65KE Torpedo U" ) THEN { spdmin = 44 TRange = 19100 DMAX = 19250 } ENDIF
FUEL = 1000
DMIN = ( Trange / 1852 )
DMAX = ( DMAX / 1852 )
FSRMIN = ( FUEL / ( DMIN / ( spdmin / 3600 ) ) )
IF MAXSPD > spdmin THEN {
K = ( ( ( FUEL / ( DMAX / ( MAXSPD / 3600 ) ) ) - FSRMIN ) / ( MAXSPD - spdmin ) ) } ELSE {
K = ( ( FUEL / ( DMAX / ( MAXSPD / 3600 ) ) ) - FSRMIN ) } ENDIF
PreEnableDepth = Ownalt
CalcAlt = OWNALT
if ownalt > -15 then { PreEnableDepth = -15 } endif
} ELSEIF FUEL < 0 THEN {
SHUTDOWN
} ELSE {
IF PRESET THEN {
PRESET = 0
If SearchDepth < -45 Then {
	SearchDepth = -45
} ELSE {
	SearchDepth = SearchDepth
} Endif
IF ( PreEnableSpeed < SpdMin ) Then { PreenableSpeed = spdmin } Endif
} ENDIF
CorrInterogg = ( Time - CorrInterogg )
IF ( ( OWNALT < 0 ) AND ( ( OWNSPD >= ( spdmin - 1 ) ) OR ( OWNSPD <= ( MAXSPD + 1 ) ) ) ) THEN {
FSR = ( FSRMIN + ( ( OWNSPD - spdmin ) * K ) )
FSR = ( FSR * CorrInterogg )
FUEL = ( FUEL - FSR )	
} ENDIF	
	CorrInterogg = Time
IF SilStart THEN {
	IF ( OwnSpd <= PreEnableSpeed ) AND ( mission != 1 ) THEN {
		SetPriority 255
		SetSnorkel OFF
		mission = 1
	} ENDIF
} ENDIF
; Home
IF NEWTRACK AND ( NOT ( TgtClass $= "Weap" ) ) THEN {
SETTACTIC "Terminal_Home_Wake"
} ENDIF
IF LOSTTRACK THEN {
SETPRIORITY 240	SetSpd ( spdmin + RND 5 )
} ENDIF
Run += XYRng ( OwnX - InitX ) ( OwnY - InitY )
InitX = OwnX
InitY = OwnY
IF not Homing THEN {
SETPRIORITY 240 SetAlt CALCALT
IF Enabled THEN {
if fwake < time then { fwake = ( time + 1 ) SETPRIORITY 255 SetCrs PreEnableCourse SETPRIORITY 252 WakeFollow } endif
IF CALCALT < SearchDepth THEN { CALCALT += 40 } ELSE { CALCALT = SearchDepth } ENDIF
} ELSE {
SETPRIORITY 240	SetCrs PreEnableCourse
SETPRIORITY 240	SetSpd PreEnableSpeed
IF CALCALT < PreEnableDepth THEN { CALCALT += 40 } ELSE { CALCALT = PreEnableDepth } ENDIF
IF ( RunToEnable != -1 ) AND ( Run >= RunToEnable ) THEN {
RunToEnable = -1
PASSIVEENABLE
Enabled = 1
} ENDIF
} ENDIF
} ENDIF
IF CrushDpth AND ( Time >= ImpactTime ) THEN {
IF Explode >= 5 THEN { Detonate } ELSE { Shutdown } ENDIF
} ENDIF
Homing = 0
if ownalt > -8 then { SETPRIORITY 255 setalt -20 } endif
} ENDIF
