; ASW Plane Sonobuoys Drop - Doctrine For RA Addon v.1.41

var ReattackTimer
var ActBuoy
var PassBuoy
VAR DepthChar
VAR Plab250
VAR Harpoon
var Exocet
var C801
var AS30
var Maverik
var SLAMER
VAR T50
VAR T54
var APR3ME
var MPT1UE
var APR2
var UMGT
var mk44
var Yu7
var a244
var stingray
var L5
var mk46
var e4575a
var Kh65
var harm
var mshm
var BullPup
VAR tb
var T
VAR TG
VAR TGARP
VAR T1
VAR T2
VAR LASTB
VAR TEMP
VAR G
VAR L_C
VAR GGG
VAR TTT
var first
var Alt
var DoctI
var OrderSpd
var OrderAlt
var MinimalSpd
var AT2

IF Init THEN {
	OrderSpd = ownspd
	OrderAlt = ownalt
	MinimalSpd = MinSpd
	OrderAlt = 164
	DoctI = 1
	SetEntVar "NUM" DOCTI
	G = -1
	TEMP = ABS TgtAOB
	LASTB = -1
	TGARP = 0
	TB = 0
	T = 0
	TG = 0
	T1 = 1
	T2 = 2
	ReattackTimer = -1
	DepthChar = DBIdxFromRecNum 1526
	Plab250 = DBIdxFromRecNum 1789
	T50 = DBIdxFromRecNum 1768
	T54 = DBIdxFromRecNum 1764
	Harpoon = DBIdxFromRecNum 1954
	Exocet = DBIdxFromRecNum 1378
	C801 = DBIdxFromRecNum 1373
	AS30 = DBIdxFromRecNum 1517
	Maverik = DBIdxFromRecNum 1347
	SLAMER = DBIdxFromRecNum 3342
	BullPup = DBIdxFromRecNum 4131
	APR3ME = DBIdxFromRecNum 1964
	MPT1UE = DBIdxFromRecNum 1963
	APR2 = DBIdxFromRecNum 1513
	UMGT = DBIdxFromRecNum 1605
	mk44 = DBIdxFromRecNum 1400
	Yu7 = DBIdxFromRecNum 1971
	a244 = DBIdxFromRecNum 1972
	stingray = DBIdxFromRecNum 1973
	L5 = DBIdxFromRecNum 1974
	mk46 = DBIdxFromRecNum 1975
	e4575a = DBIdxFromRecNum 1500
	Kh65 = DBIdxFromRecNum 3341
	harm = DBIdxFromRecNum 1339
	mshm = DBIdxFromRecNum 4004
	AT2 = DBIdxFromRecNum 4026
IF ( DBUser1Flags & 1 ) == 1 THEN {
; DebugOut "RUSSIAN SONOBUOYS ID"
	ActBuoy = DBIdxFromRecNum 1594
	PassBuoy = DBIdxFromRecNum 1021
} ELSE {
; DebugOut "NATO SONOBUOYS ID"
	ActBuoy = DBIdxFromRecNum 1593
	PassBuoy = DBIdxFromRecNum 1020
} ENDIF
; Helo Order
IF ( DBUser1Flags & 64 ) == 64 THEN {
	MinimalSpd = 50
	OrderAlt = 30
} ENDIF
; Jet Plane Order
IF ( DBUser1Flags & 128 ) == 128 THEN {
	MinimalSpd = 200
	OrderAlt = 215
} ENDIF
} else {
	L_C = TGTAGE
	GGG = TIME
	TEMP = ABS TgtAOB
IF ( TgtClass $= "SUB" ) AND ( ( TgtID $= "UPD" ) OR ( TgtID $= "HOSTILE" ) ) THEN {
	IF TEMP < 30 THEN {
		SETPRIORITY 252	SETCRS TGTBRG
	} ELSE {
		STEERTO
	IF TGTRNG > 20000 THEN {
		OrderSPD = MaxSpd
	} ELSE {
		OrderSPD = MinimalSpd
		} ENDIF	
	} ENDIF
} ENDIF

IF ( TgtRng > 8000 ) AND ( TgtClass $= "SURF" ) AND ( ( TgtID $= "UPD" ) OR ( TgtID $= "HOSTILE" ) ) THEN {
	SETPRIORITY 252 STEERTO
	OrderSPD = MAXSPD
} ENDIF

IF ( TgtRng < 6000 ) AND ( TgtClass $= "SURF" ) AND ( ( TgtID $= "UPD" ) OR ( TgtID $= "HOSTILE" ) ) THEN {
	SETPRIORITY 252 SteerEvasive
	OrderSPD = MAXSPD
} ENDIF

IF TEMP < 20 THEN { SETPRIORITY 253 SETPERSIST 20 SETCRS TGTBRG } ENDIF

IF ( ( TgtRng < 9144 ) AND ( TgtID $= "UPD" ) AND ( TgtClass $= "SUB" ) ) OR ( LASTB < TIME ) THEN {
	OrderAlt = OrderAlt
	IF ( TgtRng < 800 ) AND ( TGTRNG > 10 ) AND ( TEMP < 180 ) THEN {
		IF TB < TIME THEN { 
;			DEBUGOUT "Sonobuoy Drop"
			IF T1 == 1 THEN {
			SETPRIORITY 255 CountermeasureIdx ActBuoy
			T1 = 2
		} ELSE {
			SETPRIORITY 255 CountermeasureIdx PassBuoy
			T1 = 1
		} ENDIF
		
		TB = ( TIME + 30 ) } ENDIF
		
		IF LASTB == -1 THEN { G = ( TIME + 5 ) } ENDIF

		LASTB = ( TIME + 300 )
	} ENDIF
} ENDIF

IF ( TgtRng < 1200 ) AND ( TgtID $= "HOSTILE" ) AND ( TgtClass $= "SUB" ) THEN {
	IF ( TGTRNG < 720 ) AND ( TEMP < 15 ) THEN {
;		DEBUGOUT "Depth Charges Attack"
		SETPRIORITY 252
		AttackIdx DepthChar
		AttackIdx Plab250	
		AttackIdx mshm	
	} ELSE {
		IF TEMP < 20 THEN {
			IF T < TIME THEN {
;			DEBUGOUT "Torp Attack" 
			IF T2 == 1 THEN {
			T2 = 2
			SETPRIORITY 252
			SETPERSIST 20
			AttackIdx T50
			AttackIdx T54
			AttackIdx APR3ME
			AttackIdx MPT1UE
			AttackIdx APR2
			AttackIdx UMGT
			AttackIdx mk44
			AttackIdx Yu7
			AttackIdx a244
			AttackIdx stingray
			AttackIdx L5
			AttackIdx mk46
			AttackIdx e4575a
			AttackIdx AT2
		} ELSE {
			T2 = 1
			SETPRIORITY 252
			SETPERSIST 20
			AttackIdx T50
			AttackIdx T54
			AttackIdx APR3ME
			AttackIdx MPT1UE
			AttackIdx APR2
			AttackIdx UMGT
			AttackIdx mk44
			AttackIdx Yu7
			AttackIdx a244
			AttackIdx stingray
			AttackIdx L5
			AttackIdx mk46
			AttackIdx e4575a
			AttackIdx AT2
		} ENDIF
			T = ( TIME + 30 )
			} ENDIF
		} ENDIF
	} ENDIF
} ENDIF

IF ( TgtRng < 2000 ) AND ( TgtID $= "HOSTILE" ) AND ( TgtClass $= "SURF" ) THEN {
	IF TEMP < 10 THEN {
	IF T < TIME THEN {
;	DEBUGOUT "Torp Attack"
	IF T2 == 1 THEN {
	T2 = 2
	SETPRIORITY 252
	AttackIdx T50
	AttackIdx T54
	AttackIdx APR3ME
	AttackIdx MPT1UE
	AttackIdx APR2
	AttackIdx UMGT
	AttackIdx mk44
	AttackIdx Yu7
	AttackIdx a244
	AttackIdx stingray
	AttackIdx L5
	AttackIdx mk46
	AttackIdx e4575a
	AttackIdx AT2
} ELSE {
	T2 = 1
	SETPRIORITY 252
;	AttackBest
	AttackIdx T50
	AttackIdx T54
	AttackIdx APR3ME
	AttackIdx MPT1UE
	AttackIdx APR2
	AttackIdx UMGT
	AttackIdx mk44
	AttackIdx Yu7
	AttackIdx a244
	AttackIdx stingray
	AttackIdx L5
	AttackIdx mk46
	AttackIdx e4575a
	AttackIdx AT2
} ENDIF
	T = ( TIME + 30 )
		} ENDIF
	} ENDIF
} ENDIF
		
IF ( TgtRng > 1500 ) AND ( TgtID $= "HOSTILE" ) AND ( TgtClass $= "SURF" ) THEN {
	IF TGARP < TIME THEN {
;	DEBUGOUT "Missile Attack"
	SETPRIORITY 255
	SETPERSIST 20
	AttackIdx Harpoon
	AttackIdx Exocet
	AttackIdx AS30
	AttackIdx Maverik
	AttackIdx C801
	AttackIdx SLAMER
	AttackIdx kh65
	AttackIdx harm
	AttackIdx BullPup
	TGARP = TIME
	TGARP += 300
	} ENDIF
} ENDIF
	TTT = GetEntVar "FIRST"
} ENDIF
IF LostTrack Then {
	DoctI = 0
	SetEntVar "NUM" DOCTI
} Endif
	SETPRIORITY 253 SetSpd OrderSpd
	SETPRIORITY 253	SetAlt OrderAlt
