; for 1.46 version
var PreenableCourse
var RunToEnable
var Runout
var lastX
var lastY
var run
var Waypoints
var Aim
var Away
VAR NUM_TH
VAR ZZZConf
var talt
var temp
var Delta
var selfdest
var FinalPhazeN
var DecoyLogic
var ReflectVal
var TP
var d
var done
var tBrg
var OrderAlt
var Zig
var Mode
var SUPER
var FIRST
var LMPX
var LMPY
var SX
var SY
var Dist
var landshaft
var InitTime
var DeltaX
var PointDost
var Points
var Senon
var imitation
var vzvod
var wkl
var otkl
var trng
var homing
var Straight
var go
var zahvat
var old_t_alt
var rng
var alt
var tg
var ALTCRUISE
var Terminal
var mission
var percmalf
var weapeffectv
var crushevnt
var otkaztime
var detonpercnt
var dfs
var uwd
Func malfunction {
if not done then {
if ( ( ownalt > 0 ) and ( pitch > 45 ) ) then {
	SetPitch -80
} elseif ( ( ownalt > 0 ) and ( pitch < 45 ) ) then {
	SetPitch -60
	maxspd = 0
} endif
IF OwnAlt > 0 THEN {
	UWD = 1
} ELSEIF ( OwnAlt < 0 ) AND UWD THEN {
	If dfs == 1 Then {
		Detonate
	} else {
		Shutdown
	} endif
} endif
} ENDIF
}
IF INIT THEN {
	DIST = 20000
	InitTime = Time
	TP = -1
	NUM_TH = 0
	ZZZConf = 0
	Aim = 0
	lastX = OwnX
	lastY = OwnY
	SETPRIORITY 251
	SetAlt 33
        OrderAlt = 33
	SetSpd 580
;	RunToEnable = 100
	Runout = -1
	FinalPhazeN = 23005
	DecoyLogic = 85
	FIRST = 1
	points = 1
	SENON = 1
	delta = 1000000
	setsnorkel on
	weapeffectv = 9
	dfs = -1
IF ( OwnName $= "SS-N-27 Sizzler SSM" ) THEN { RunOut = 222240 Terminal = "Sizzler2" } ENDIF
IF ( ( OwnAlt > 0 ) AND ( OwnAlt < 15 ) ) Then { ShutDown } ENDIF

} ELSE {
	IF FIRST THEN {
if malfunctionweap then {
	detonpercnt = rnd 10
	percmalf = rnd 10
	if percmalf >= weapeffectv then {
		crushevnt = 1
		otkaztime = ( time + 20 + rnd 7180 )
	if percmalf > 9.5 then {
		otkaztime = ( Time + 1 )
		} endif
	} endif
} endif
If ( ( RunToEnable < 1 ) And ( WayPtX != 0 ) ) Then {
	Zig = 1
} ELSE {
	Straight = 1
} Endif

If Zig Then {
	LMPX = WayPtX
	LMPY = WayPtY
	SX = WayPtX
	SY = WayPtY
	if runout == 1852 then { mode = 1 SUPER = 1 Points = 1
		} ELSEif runout == 3704 then { mode = 2 SUPER = 1 Points = 1
		} ELSEif runout == 5556 then { mode = 3 SUPER = 1 Points = 1
		} ELSEif runout == 7408 then { mode = 4 SUPER = 1 Points = 1
		} ELSEif runout >= 9260 then { mode = 1 SUPER = 1 Points = 1
	} ELSE {
		mode = 1
		SUPER = 1
	} endif
} endif
	FIRST = 0
} ENDIF
} ENDIF
 	IF ( OwnAlt > -10 ) AND ( mission != 1 ) THEN {
;		DebugOut "Booster OFF"
 		SetPriority 255
 		SetSnorkel OFF
 		mission = 1
	} ENDIF
if ( crushevnt == 1 ) and ( time >= otkaztime ) then {
	if detonpercnt >= 9.8 then { dfs = 1 } else { dfs = 0 } endif
		malfunction
} endif
if ownalt > 0 then {
	uwd = 1
} elseif ( ownalt < 0 ) and uwd then {
	if malfunctionweap and ( dfs != -1 ) then {
		Shutdown
	} elseif not malfunctionweap then {
		Shutdown
	} endif
} endif
IF Straight AND NOT FIRST THEN {
	run += xyrng ( OwnX - lastX ) ( OwnY - lastY )
	lastX = OwnX
	lastY = OwnY
IF ( Runout != -1 ) AND ( run > Runout ) AND ( NUM_TH == 0 ) THEN { Runout = -1 SHUTDOWN } ENDIF
	IF OwnAlt >= ( MaxAlt + 600 ) THEN { Detonate } ENDIF
	IF RunToEnable != -1 THEN {
		IF run >= RunToEnable THEN {
			ReflectVal = RND 100
			ENABLE
			RunToEnable = -1
		} ENDIF
	} ENDIF
	IF NEWTRACK then {
IF ( ( TgtType $= "PLANE" ) OR ( TgtType $= "HELO" ) OR ( TgtCLASS $= "MISSILE" ) ) THEN {
	Drop
} ELSE {
	IF TgtType $= "CM" THEN {
		IF ReflectVal > DecoyLogic THEN {
			IF ( TgtRng > FinalPhazeN ) THEN {
				SetTactic "Sizzler2"
			} ELSE {
				SetTactic "Sizzler2"
				PreenableCourse = TgtBrg
				Aim = 1
			} ENDIF
		} endif
	} ELSEIF Tgtconf > ZZZConf THEN {
		IF ( TgtRng > FinalPhazeN ) THEN {
			PreenableCourse = TgtBrg
			drop
		} ELSE {
			SetTactic "Sizzler2"
			PreenableCourse = TgtBrg
			Aim = 1
		} ENDIF
	} ELSE {
		SetTactic "SBROS"
	} ENDIF
} ENDIF
} ENDIF
IF NUM_TH == 0 THEN {
	IF Waypoints THEN {
		SETPRIORITY 220 TerminalHome
	} ELSE {
		If AIM Then {
			PreenableCourse = TBrg
		} Endif
			SETPRIORITY 220 SetCrs PreenableCourse
			SETPRIORITY 220 SetAlt OrderAlt
		} ENDIF
	} else {
		SETPRIORITY 253 SETSPD maxspd
	} endif
} ENDIF

IF ZIG AND NOT FIRST Then {
If Not Done Then { Setalt 33 SetSpd MaxSpd } Endif
DELTAX = xyrng ( OwnX - lastX ) ( OwnY - lastY )
run += DELTAX
lastX = OwnX
lastY = OwnY

IF ( Time >= InitTime ) and ( go == 0 ) THEN {
	go = 1
	IF SUPER THEN { otkl = 1
} ENDIF
	} ELSEIF ( Time < InitTime ) and ( ownalt > 0 ) THEN {
		SetPriority 250 SETCRS XYBRG ( WayPtX - OWNX ) ( WayPtY - OWNY )
} ENDIF
	IF NEWTRACK then {
IF ( ( TgtType $= "PLANE" ) OR ( TgtType $= "HELO" ) OR ( TgtCLASS $= "MISSILE" ) ) THEN {
	Drop
} ELSE {
	IF TgtType $= "CM" THEN {
		IF ReflectVal > DecoyLogic THEN {
			IF ( TgtRng > FinalPhazeN ) THEN {
				SetTactic "Sizzler2"
			} ELSE {
				SetTactic Terminal
				PreenableCourse = TgtBrg
				Homing = 1
				Aim = 1
			} ENDIF
		} endif
	} ELSEIF Tgtconf > ZZZConf THEN {
		IF ( TgtRng > FinalPhazeN ) THEN {
			PreenableCourse = TgtBrg
			drop
		} ELSE {
			SetTactic "Sizzler2"
			PreenableCourse = TgtBrg
			Homing = 1
			Aim = 1
		} ENDIF
	} ELSE {
		SetTactic "SBROS"
	} ENDIF
} ENDIF
} ENDIF
IF ( Homing == 0 ) and go THEN { SetPriority 250 TerminalHome } ENDIF
	IF not homing or ( trng > 4000 ) then {
	DELTA = ( TERRAINALT - old_t_alt )
	rng = 1100
	ALT = ( OWNALT - TERRAINALT )
	IF 70 < abs DELTA THEN { TG = ( TIME + 20 ) } ENDIF
	temp = XYBRG DELTA ( DELTAX * 3.28 )
old_t_alt = TERRAINALT
	if SUPER then {
		IF MODE != 5 THEN {
			IF NOT pointdost THEN {
				IF POINTS == MODE then {
				SX = WayPtX
				SY = WayPtY
				pointdost = 1
				} ENDIF
			} ELSE {
			DELTA = XYRNG ( SX - OWNX ) ( SY - OWNY )
				IF 15000 > DELTA THEN {
					if SENON THEN {
					SENON = 0
					SensorEnable "ARGS-54" 1
					} ENDIF
					IF NOT HOMING THEN {
					imitation = 1
					trng = DELTA
						if ( vzvod == -1 ) and ( delta < 270 ) then { vzvod = ( time + 1 )
						} endif

						if delta < 80 then { Detonate
						} endif
					} ELSE { imitation = 0
					} ENDIF
				} ENDIF
			} endif
		} ELSE {
		DELTA = XYRNG ( WayPtX - OWNX ) ( WayPtY - OWNY )
			IF 6000 > DELTA THEN {
				if SENON THEN {
				SENON = 0
				wkl = 1
				SensorEnable "ARGS-54" 1
				} ENDIF
				IF ( NOT HOMING ) and ( POINTS == 4 ) THEN {
				imitation = 1
				trng = DELTA
					if ( vzvod == -1 ) and ( delta < 270 ) then { vzvod = ( time + 1 )
					} endif

					if delta < 80 then { Detonate
					} endif
				} ELSE { imitation = 0
				} ENDIF
			} elseif wkl then { wkl = 0 otkl = 1
			} endif
		} ENDIF
	} endif

IF ( LMPX != WayPtX ) OR ( LMPY != WayPtY ) THEN {
	points += 1
	LMPX = WayPtX
	LMPY = WayPtY
} endif
	if otkl then {
	otkl = 0
	SENON = 1
	SensorEnable "ARGS-54" 0
} endif
	IF LOSTTRACK THEN { Homing = 0 } endif
} endif
} ENDIF
if away then {
	Preenable
	selfdest += 1
	done = 1
if selfdest >= 10 then {
	Detonate
	} endif
} endif
