; $Header: SubAvoidWeap.txt   Thu Dec 30 16:55:05 EST 2004   mike $
; $Revision: 5 $
; $Copyrt1: Copyright (c) 2003, Sonalysts, Inc.  All rights reserved. $
;
; SubAvoidWeap

var PreventingSnorkel
var PreventingComms
var LegTimer
var RecognitionDelay
var Snapshot
var LegCourse
var jammerIdx
var decoyIdx

IF Init THEN {

	PreventingSnorkel = false
	PreventingComms = false
	RecognitionDelay = ( Time + 15 + rnd 15 )
	LegTimer = -1
	Snapshot = false
	jammerIdx = DBIdxFromRecNum 1414
	decoyIdx = DBIdxFromRecNum 1412

} ELSEIF LegTimer == -1 THEN {

	IF Time > RecognitionDelay THEN {

		IF ( TgtRng < 16000 ) AND ( TgtSilos < 0 ) AND ( abs RelativeBearing TgtCrs ( TgtBrg + 180 mod 360 ) < 30 ) THEN {
			DEBUGOUT "Sub Evading Torpedo!"

			IF Not Snapshot THEN {
				DEBUGOUT "Firing Back!"
				FireBest
				Snapshot = true
			} ENDIF

			IF NOT PreventingSnorkel THEN {
				PreventingSnorkel = true
				SetEntVar "TooBusyToSnorkel" ( GetEntVar "TooBusyToSnorkel" + 1 )
			} ENDIF

			IF NOT PreventingComms THEN {
				PreventingComms = true
				SetEntVar "TooBusyForComms" ( GetEntVar "TooBusyForComms" + 1 )
			} ENDIF

			LegTimer = ( 180 + RND 180 )
			SetPriority 255
			SetSpd MaxSpd
			LegCourse = ( TgtBrg + 150 + rnd 60 mod 360 )

			; Set Depth Opposite Layer

			 IF TgtAlt < LAYER THEN {
			 	SETALT ( -600 - RND 50 )
			 } ELSE {
				SETALT ( LAYER - 300 ) 
				; set depth to 300 ft below layer
			 } ENDIF

			; Setalt ( ( MinAlt / 0.3048 ) + 100 )
			; DebugOut "MinAlt + 100 feet set"

			; Throw CM?
			IF RND 10 > 2 THEN {
				; Decoy or Jammer?
				IF ( TgtSource $= "Active Intercept" ) OR ( rnd 100 > 65 ) THEN {
					DEBUGOUT "CM Decoy"
					CountermeasureIdx decoyIdx	
				} ELSE {
					DEBUGOUT "CM Jammer"
					CountermeasureIdx jammerIdx
				} ENDIF
			} ELSE {
				DEBUGOUT "Decoy failed random draw."
			} ENDIF

			LegTimer += Time
		} ELSE {

			IF PreventingSnorkel THEN {
				PreventingSnorkel = false
				SetEntVar "TooBusyToSnorkel" ( GetEntVar "TooBusyToSnorkel" - 1 )
			} ENDIF

			IF PreventingComms THEN {
				PreventingComms = false
				SetEntVar "TooBusyForComms" ( GetEntVar "TooBusyForComms" - 1 )
			} ENDIF

		} ENDIF
	} ENDIF

} ELSEIF Time > LegTimer THEN {

	LegTimer = -1

} ELSE {

	SetPriority 255
	SetCrs LegCourse
	SetSpd MaxSpd
	SETALT ( -600 - RND 50 )
} ENDIF
