View Single Post
Old 11-27-07, 05:02 PM   #19
GrayOwl
Soundman
 
Join Date: Sep 2004
Location: Compartment № 5 /Silos/
Posts: 149
Downloads: 0
Uploads: 0
Default

Very good doctrine - Has no been equal in reality.

Compatible only with AI Helos - NOT FOR CONTROL HELO FROM FFG!

The helicopter will not be clued any more never.


; Reinforce Alert Add On AI Helo Doctrine.
; -- HeloDipping.txt Original Name Doctrine ---
; Compatible for LWAMI 3.08
var DipTimer
var TargetCount
var WaypointReached
var Pinging
var Dipping
VAR TIME_ZVON
VAR FLAG_PADENIE
VAR T_NOPADENIE
VAR OLD_SPD
var LAST_CONT
var GaugesOn
var GaugesOff
var TR1
var TakeOff
var TimeInit
VAR ROK
VAR RX
VAR RY
VAR RokRng
VAR PROZVON
VAR TEMP
VAR Delay
var Lock
IF INIT THEN {
; DebugOut "AI Helo_Dipping Doctrine INIT"
PROZVON = 0
ROK = 0
GaugesOn = -1
GaugesOff = 0
TR1 = True
TakeOff = True
TimeInit = ( Time + 60 )
LAST_CONT = 0
FLAG_PADENIE = 0
TIME_ZVON = -1
Lock = 0
Delay = 0
TargetCount = 0
WaypointReached = 0
DipTimer = -1
} ENDIF
IF ( GaugesOn != -1 ) THEN {
IF ( ( OwnAlt < 50 ) AND ( NOT TakeOff ) AND ( OwnSpd <= 5 ) ) THEN {
Enable
Lock = 1
DebugOut OwnName
Debugout "SENSORS ON"
GaugesOn = -1
GaugesOff = 0
} ENDIF
} ENDIF
IF ( GaugesOff != -1 ) THEN {
IF ( ( OwnAlt > 50 ) OR ( OwnSpd > 5 ) ) THEN {
Preenable
DebugOut OwnName
DebugOut "SENSORS OFF"
Lock = 0
GaugesOff = -1
GaugesOn = 0
} ENDIF
} ENDIF

IF ( Lock == 0 ) AND ( GaugesOff == -1 ) THEN { Delay = ( Delay + 1 ) } ENDIF

IF ( Delay > 2 ) THEN {
Enable
SensorEnable "AI Dip Active" 0
SensorEnable "AI Dip PassiveS" 0
SensorEnable "AI Dip PassiveD" 0
DEBUGOUT "RADAR,ESM,MAD,Visual - ENABLED / Acoustic SENSOR DISABLED"
Delay = 0
Lock = 1
} ENDIF
; Covert TakeOff, Don't Ping Near Parent Ship!
IF ( ( Time > TimeInit ) and TR1 ) THEN { TR1 = false TakeOff = false } ENDIF
IF NEWTRACK AND ( ( OwnAlt <= 55 ) AND ( ( TgtSource $= "Passive Sonar" ) OR ( TgtSource $= "Active Sonar" ) ) ) THEN {
IF ( TgtClass $= "SUB" ) THEN {
SETTACTIC "HeloDipping"
} ENDIF
} ENDIF
IF ( ( OwnSpd <= 13 ) AND ( OWNALT > 150 ) AND ( ( TIME_ZVON == -1 ) OR ( TIME > TIME_ZVON ) ) ) AND NOT TakeOff THEN {
DEBUGOUT "Dipping Sonars"
SETPRIORITY 250
SETPERSIST 90
SETSPD 0
SETALT 45
DipTimer = ( TIME + 90 )
TIME_ZVON = ( TIME + 300 )
} ENDIF
; Assign Dipping Tactic
IF NEWTRACK THEN {
; Sub?
IF ( ( ( TgtClass $= "SUB" ) OR ( TgtClass $= "SURF" ) ) AND ( ( NOT ( ORDER $= "TRANSIT" ) ) ) ) THEN {
DEBUGOUT "Assigned Dipping Sonar"
TACTICCENTER
LAST_CONT = ( TIME )
ROK = 0
SETTACTIC "DippingSonar"
Pinging = 0
WaypointReached = 0
DipTimer = -1
TargetCount += 1
} ENDIF
; Missile?
IF ( ( TgtClass $= "MISSILE" ) AND ( ( TgtMissileClass "AAM" ) OR ( TgtMissileClass "SAM" ) ) ) THEN {
SETTACTIC "AirEvadeMissile"
} ELSEIF ( ( TgtClass $= "MISSILE" ) AND ( TgtMissileClass "SSM" ) ) THEN {
DEBUGOUT "Missile CheckUp"
IF ( ROK == 0 ) THEN {
RX = TGTX
RY = TGTY
ROK = 1
} ENDIF
} ENDIF
; Enemy Plane?
IF ( ( TgtClass $= "AIR" ) AND ( ( TgtID $= "HOSTILE" ) OR ( TgtID $= "UAE" ) OR ( TgtID $= "UPD" ) ) ) THEN {
SETTACTIC "AirEvadeAir"
} ENDIF
} ENDIF
; lost track
IF LOSTTRACK THEN {
DEBUGOUT "Helo Doctrine, Lost Track!"
; decrement target count
IF ( TgtSource $= "Active Sonar" ) OR ( TgtSource $= "Passive Sonar" ) THEN {
TargetCount -= 1
; lets make sure our variable doesn't go negative!
IF TargetCount < 0 THEN {
TargetCount = 0
} ENDIF
} ENDIF
} ENDIF
; Check Up Point Missile Start
IF ( ( TargetCount == 0 ) AND ( ROK == 1 ) AND ( NOT ( ORDER $= "TRANSIT" ) ) ) THEN {
TEMP = XYBRG ( RX - OWNX ) ( RY - OWNY )
STEERXY ( RX - OWNX ) ( RY - OWNY )
SETSPD ( 110 )
ROKRNG = xyrng ( OwnX - RX ) ( OwnY - RY )
IF ( ROKRNG < 500 ) THEN {
ROK = 0
PROZVON = 1
} ENDIF
} ENDIF
; Search only
IF ( NOT ( ORDER $= "Transit" ) ) THEN {
; Dip
IF ( WaypointReached == 1 ) OR ( PROZVON == 1 ) THEN {
; game has just clued us we've reached a waypoint
DEBUGOUT "Waypoint Reached,Lower Dipping Sonars"
SETPRIORITY 249
SETPERSIST 90
SETSPD 0
SETALT 45
Pinging = 0
WaypointReached = 0
PROZVON = 0
Dipping = True
} ENDIF
; Start pinging
IF ( ( Pinging == 0 ) AND ( Dipping == 1 ) AND ( OwnAlt < 50 ) ) THEN {
DEBUGOUT "Commence Check Point"
SETPRIORITY 249
SETPERSIST 90
SETSPD 0
SETALT 45
Pinging = 1
DipTimer = ( TIME + 90 )
} ENDIF
; Stop Dip
IF ( ( DipTimer != -1 ) AND ( TIME > DipTimer ) ) THEN {
DEBUGOUT "Check Is Completed, Raise Dipping Sonars"
SETPRIORITY 250
SETPERSIST 60
SETSPD MAXSPD
SETALT 300
Pinging = 0
DipTimer = -1
Dipping = False
TACTICCENTER
} ENDIF
} ENDIF
; Don't Dive!
IF ( ( OwnSpd > 100 ) AND ( OwnAlt < 80 ) AND ( FLAG_PADENIE == 0 ) ) THEN {
OLD_SPD = OwnSpd
; DEBUGOUT "Helo Stall"
FLAG_PADENIE = 1
T_NOPADENIE = 0
SetPriority 251
SetPersist 20
SetAlt 150
SETSPD ( OWNSPD - 15 )
} ENDIF

IF ( FLAG_PADENIE == 1 ) THEN {
T_NOPADENIE = ( T_NOPADENIE + 1 ) } ENDIF
IF T_NOPADENIE > 30 THEN {
SetPriority 251
SetPersist 40
SetAlt 200
SETSPD OLD_SPD
T_NOPADENIE = 0
FLAG_PADENIE = 0
; DEBUGOUT "Refresh Spd"
} ENDIF





================================================== ==================================

Second Doctrine For Helo....

; HeloDipping --- Dipping Sonar.txt --- Search Doctrine For -Reinforce Alert- Addon /KPV_1974 design/
; Compatible for LWAMI 3.08
; -- DippingSonar.txt Original Name Doctrine ---
var DipTimer
var ReattackTimer
var ValidTarget
var GOGO
var T_G
var G
var TEMP
var L_C
var F
var LCX
var LCY
var TLC
IF ( INIT ) THEN {
LCX = TGTX
LCY = TGTY
L_C = ( GetEntVar "LAST_CONT" )
TLC = L_C
G = 0
T_G = 0
F = 1
SensorEnable "MAD" ON
GOGO = 0
DipTimer = -1
ReattackTimer = -1
IF ( ( TgtID $= "HOSTILE" ) OR ( TgtID $= "UPD" ) ) THEN {
ValidTarget = -1
} ELSE {
ValidTarget = 0
} ENDIF
} ELSE {
IF ( LOSTTRACK ) THEN { F = 1 } ENDIF
L_C = ( GetEntVar "LAST_CONT" )
IF ( DipTimer == -1 ) AND ( ValidTarget == -1 ) THEN {
TEMP = ( TIME - L_C )
IF ( ( ( TgtID $= "UPD" ) OR ( ( TgtID $= "HOSTILE" ) AND ( TEMP > 100 ) ) ) AND ( TgtRng <= 1200 ) ) THEN {
; DEBUGOUT "TIME:"
; DebugValueOut TIME
; DEBUGOUT "L_C:"
; DebugValueOut L_C
; DEBUGOUT "TEMP:"
; DebugValueOut TEMP
IF ( TgtID $= "HOSTILE" ) THEN {
; DEBUGOUT "Drop Contact1"
DROP } ENDIF
F = 1
DipTimer = ( TIME + 90 )
SETPRIORITY 251
SETPERSIST 80
SETCRS TGTBRG
SETSPD 0
SETALT 45
} ELSEIF TgtRng > 500 THEN {
; Close
SETPRIORITY 251
STEERTO
SetSpd MAXSPD
SETALT 300
SensorEnable "MAD" ON
} ELSE {
DEBUGOUT "Smell Him!"
F = 1
DipTimer = ( TIME + 90 )
SETPRIORITY 251
SETPERSIST 80
SETCRS TGTBRG
SETSPD 2
SETALT 45
} ENDIF
} ELSEIF ( ValidTarget == 0 ) THEN {
SETPRIORITY 251
SETSPD MAXSPD
SETALT 300
IF TgtRng > 13715 THEN {
; DEBUGOUT "DropContact2"
Drop
} ENDIF
} ELSEIF ( TIME > DipTimer ) THEN {
; Stop dip
DEBUGOUT "Stopping prosecution dip"
SETPRIORITY 251
TACTICCENTER
SETSPD MAXSPD
SETALT 300
SensorEnable "MAD" ON
DipTimer = -1
} ENDIF
; Engage
TEMP = ( TIME - L_C )
IF ( ( TEMP <= 100 ) AND ( TgtRng <= 1100 ) AND ( TgtID $= "HOSTILE" ) AND ( ( ReattackTimer == -1 ) OR ( TIME > ReattackTimer ) ) ) THEN {
GOGO = 1
G = 1
SETPRIORITY 252
SETPERSIST 10
SETSPD MAXSPD
SETCRS TGTBRG
SETALT 200
SETPRIORITY 250
SETPERSIST 200
ATTACKBEST
DipTimer = -1
ReattackTimer = ( TIME + 300 )
} ELSEIF ( ( G == 0 ) AND ( TgtRng > 1200 ) AND ( ( TgtID $= "HOSTILE" ) OR ( TgtID $= "UPD" ) ) ) THEN {
GOGO = 1
SETPRIORITY 252
SETALT 300
SETSPD 110
SETCRS TGTBRG
DipTimer = -1
} ENDIF
IF ( G == 1 ) THEN {
T_G = ( T_G + 1 )
IF ( T_G > 1200 ) THEN { G = 0
T_G = 0
LAND
} ENDIF
} ENDIF
LCX = TGTX
LCY = TGTY
} ENDIF




__________________
-+= I the ocean hunter, and I am dangerous =+-
*** Kalashnikov - the best ***
GrayOwl is offline   Reply With Quote