From 61e9a3c8348507ac4be0c321240db86c98b16680 Mon Sep 17 00:00:00 2001
From: MooseBotter
Detailed explanations and API specifics are further below clarified and FSM derived class specifics are described in those class documentation sections.
+Detailed explanations and API specifics are further below clarified and FSM derived class specifics are described in those class documentation sections.The FSM class development is based on a finite state machine implementation made by Conroy Kyle. @@ -1521,7 +1513,6 @@ Additionally, I've added extendability and created an API that allows seamless F
The following derived classes are available in the MOOSE framework, that implement a specialized form of a FSM:
While this is a good example, there is a catch.
-Imagine you want to execute the code above, the the self would need to be from the object declared outside (above) the OnAfterDead method.
-So, the self would need to contain another object. Fortunately, this can be done, but you must use then the . notation for the method.
-See the modified example:
-- Now we have a constructor of the class AI_CARGO_DISPATCHER, that receives the SetHelicopter as a parameter.
- -- Within that constructor, we want to set an enclosed event handler OnAfterDead for SetHelicopter.
- -- But within the OnAfterDead method, we want to refer to the self variable of the AI_CARGO_DISPATCHER.
-
- function AI_CARGO_DISPATCHER:New(SetCarrier, SetCargo, SetDeployZones)
-
- local self = BASE:Inherit(self, FSM:New()) -- #AI_CARGO_DISPATCHER
-
- -- Put a Dead event handler on SetCarrier, to ensure that when a carrier is destroyed, that all internal parameters are reset.
- -- Note the "." notation, and the explicit declaration of SetHelicopter, which would be using the ":" notation the implicit self variable declaration.
-
- function SetHelicopter.OnAfterDead(SetHelicopter, From, Event, To, GroupObject)
- SetHelicopter:F({ GroupObject = GroupObject:GetName() })
- self.PickupCargo[GroupObject] = nil -- So here I clear the PickupCargo table entry of the self object AI_CARGO_DISPATCHER.
- self.CarrierHome[GroupObject] = nil
- end
-
- end
-
-
While this is a good example, there is a catch.
-Imagine you want to execute the code above, the the self would need to be from the object declared outside (above) the OnAfterDead method.
-So, the self would need to contain another object. Fortunately, this can be done, but you must use then the . notation for the method.
-See the modified example:
-- Now we have a constructor of the class AI_CARGO_DISPATCHER, that receives the SetHelicopter as a parameter.
- -- Within that constructor, we want to set an enclosed event handler OnAfterDead for SetHelicopter.
- -- But within the OnAfterDead method, we want to refer to the self variable of the AI_CARGO_DISPATCHER.
-
- function ACLASS:New(SetCarrier, SetCargo, SetDeployZones)
-
- local self = BASE:Inherit(self, FSM:New()) -- #AI_CARGO_DISPATCHER
-
- -- Put a Dead event handler on SetCarrier, to ensure that when a carrier is destroyed, that all internal parameters are reset.
- -- Note the "." notation, and the explicit declaration of SetHelicopter, which would be using the ":" notation the implicit self variable declaration.
-
- function SetHelicopter.OnAfterDead(SetHelicopter, From, Event, To, UnitObject)
- SetHelicopter:F({ UnitObject = UnitObject:GetName() })
- self.array[UnitObject] = nil -- So here I clear the array table entry of the self object ACLASS.
- end
-
- end
-
SPAWN:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle)
The AI is on by default when spawning a group.
+Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.
+ @@ -3864,17 +3876,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau - - - -Overwrite unit names by default with group name.
+ @@ -4098,50 +4091,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau - - - -When the first Spawn executes, all the Groups need to be made visible before start.
+Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.
@@ -4510,6 +4470,17 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau + + + +The AI is on by default when spawning a group.
+Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.
@@ -11138,6 +11063,17 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups. + + +Spawns a new static using a given template.
-AICSAR:SetPilotTTSVoice() and AICSAR:SetOperatorTTSVoice(
#boolean
-AICSAR.SRSTTSRadio
+AICSAR.SRSRadio
@@ -8446,7 +8446,7 @@ See AICSAR:SetPilotTTSVoice() and AICSAR:SetOperatorTTSVoice(
#boolean
-AICSAR.SRSTTSRadio
+AICSAR.SRSRadio
diff --git a/Documentation/Functional.ATC_Ground.html b/Documentation/Functional.ATC_Ground.html
index eff528a1b..a6c93529b 100644
--- a/Documentation/Functional.ATC_Ground.html
+++ b/Documentation/Functional.ATC_Ground.html
@@ -3876,7 +3876,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
-
+ #table
ATC_GROUND.Airbases
@@ -3892,6 +3892,9 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
+
+ Kickspeed
+
@@ -4461,7 +4464,7 @@ An airbase can be specified to set the maximum kick speed for.
-
+ #table
ATC_GROUND.Airbases
@@ -4477,6 +4480,9 @@ An airbase can be specified to set the maximum kick speed for.
+
+ Kickspeed
+
diff --git a/Documentation/Functional.Artillery.html b/Documentation/Functional.Artillery.html
index f48e3801a..0023edee8 100644
--- a/Documentation/Functional.Artillery.html
+++ b/Documentation/Functional.Artillery.html
@@ -1837,14 +1837,6 @@ These must be exactly the same as the names of the groups defined in the mission
Note that the name of the rearming group has to be given in quotation marks and spelt exactly as the group name defined in the mission editor.
-Transporting
-
-ARTY groups can be transported to another location as Cargo.Cargo by means of classes such as AI.AI_Cargo_APC, AI.AI_Cargo_Dispatcher_APC,
-AI.AI_Cargo_Helicopter, AI.AI_Cargo_Dispatcher_Helicopter or AI.AI_Cargo_Airplane.
-
-In order to do this, one needs to define an ARTY object via the ARTY.NewFromCargoGroup(cargogroup, alias) function.
-The first argument cargogroup has to be a Cargo.CargoGroup#CARGO_GROUP object. The second argument alias is a string which can be freely chosen by the user.
-
Fine Tuning
The mission designer has a few options to tailor the ARTY object according to his needs.
diff --git a/Documentation/Functional.Autolase.html b/Documentation/Functional.Autolase.html
index bb4a729e3..e4ced3083 100644
--- a/Documentation/Functional.Autolase.html
+++ b/Documentation/Functional.Autolase.html
@@ -2573,39 +2573,6 @@
set up SRS
-
-
-
-
-
-
- #number
-AUTOLASE.SRSFreq
-
-
-
-
-
-
-
-
-
-
-AUTOLASE.SRSMod
-
-
-
-
-
-
-
-
-
- #string
-AUTOLASE.SRSPath
-
-
-
diff --git a/Documentation/Functional.Designate.html b/Documentation/Functional.Designate.html
index 2c3145ff4..cc959d93f 100644
--- a/Documentation/Functional.Designate.html
+++ b/Documentation/Functional.Designate.html
@@ -2386,17 +2386,6 @@ Use the method DESIGNATE.SetMission() to
-Function to get the HQ object for further use
-The #DETECTION_AREAS object for AWACS
- - - -Table of Core.Zone#ZONE Zones Consider SAM groups in this zone(s) only for this MANTIS instance, must be handed as #table of Zone objects.
- - - -Log SAM status in dcs.log every cycle if true.
+switch alarm state RED
- @@ -9963,17 +9987,6 @@ E.g. `mymantis:SetAdvancedMode(true, 90)`The #DETECTION_AREAS object for AWACS
- - - -Table of Core.Zone#ZONE Zones Consider SAM groups in this zone(s) only for this MANTIS instance, must be handed as #table of Zone objects.
- - - -Log SAM status in dcs.log every cycle if true.
+switch alarm state RED
- diff --git a/Documentation/Functional.Movement.html b/Documentation/Functional.Movement.html index d235cae4e..cc984a7ef 100644 --- a/Documentation/Functional.Movement.html +++ b/Documentation/Functional.Movement.html @@ -2189,6 +2189,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defauContains the counter how many units are currently alive.
+ +Contains the counter how many units are currently alive.
+ +RAT:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle)
Creates a new AI_suppression object.
+Creates a new suppression object.
Creates a new AI_suppression object.
+Creates a new suppression object.
Radio queue of LSO.
+Radio queue of marshal.
+ + + +Radio queue of LSO.
+ + + +Radio queue of marshal.
+ + + +Radio queue of LSO.
+ + + +Radio queue of marshal.
+ + + +Set stack flag.
+Decrease stack/flag. Human player needs to take care himself.
@@ -42126,17 +42192,6 @@ When moose is loading dynamically (for moose class development), tracing is switData table at each position in the groove. Elements are of type AIRBOSS.GrooveData.
- - - -Set Stable Hover
- @@ -42494,7 +42546,7 @@ When moose is loading dynamically (for moose class development), tracing is swit -VNAO Edit - Added
+VNAO Edit - Added
diff --git a/Documentation/Ops.ArmyGroup.html b/Documentation/Ops.ArmyGroup.html index c1942e9c7..b24cd1f25 100644 --- a/Documentation/Ops.ArmyGroup.html +++ b/Documentation/Ops.ArmyGroup.html @@ -2532,12 +2532,6 @@ and pick the closest unit to this ARMYGROUP.Destroy a unit of the group.
-Mission Ingress waypoint coordinate.
+ + + +Mission Ingress waypoint coordinate.
+ + + +Mission Ingress waypoint coordinate.
+ + + +Beacons
-tables
-enfore engineer build only?
-time to repairor build a unit/group
+noob catch
Beacons
-tables
-enfore engineer build only?
-time to repairor build a unit/group
+noob catch
Beacons
-tables
-enfore engineer build only?
-time to repairor build a unit/group
+noob catch
Destroy a unit of the group.
-Set time stamp.
- -Set current airbase.
- -Max waiting time in seconds.
- -Flight is ready for takeoff. This is for FLIGHTCONTROL.
+Set time stamp.
- -Set current airbase.
- -Max waiting time in seconds.
- -Flight is ready for takeoff. This is for FLIGHTCONTROL.
+Set time stamp.
- -Set current airbase.
- -Max waiting time in seconds.
- -Flight is ready for takeoff. This is for FLIGHTCONTROL.
+Set time stamp.
- -Set current airbase.
- -Max waiting time in seconds.
- -Flight is ready for takeoff. This is for FLIGHTCONTROL.
+INTEL:GetDetectedUnitsAccoustic(Recce, DetectedUnits, RecceDetecting, detectionzone)
(Internal) Return the detected target groups of the controllable as a Core.Set#SET_GROUP.
+(Internal) Return the detected target groups of the controllable as a table.
[Internal] Paint picture of the battle field.
+══════════════════════════════════════════════════════════════════ + INTEL Doppler radar extension
+ +Models four phenomena of a 1970/80s pulse-Doppler ground radar + (representative types: Soviet P-18 Spoon Rest, P-37 Bar Lock, + P-80 Back Net / NATO AN/TPS-43 / Hughes AN/TPS-70):
+ +A) GROUND CLUTTER (AGL threshold)
+ Low-flying targets blend into terrain returns.
+
Set detection types for this #INTEL - all default to true.
+INTEL:SetDopplerRadar(MinAltAGL, NotchHalfDeg, MinSpeedMps, RadarRangeKm, RCS)
Enable 70/80s era pulse-Doppler ground-clutter simulation.
+Disable Doppler radar simulation.
Set reject zones.
+Override the per-type RCS value for a DCS unit type name.
Check if a contact was lost.
+(Internal) Check whether a target unit would be detected by a 70/80s +pulse-Doppler radar located at the given radar unit position.
Create an #INTEL.Contact item from a given GROUP or STATIC object.
+(Internal) Compute the aspect-weighted RCS for a target unit as seen +from a given radar position.
m²
+ +══════════════════════════════════════════════════════════════════ + INTEL Doppler radar extension
+ +Models four phenomena of a 1970/80s pulse-Doppler ground radar + (representative types: Soviet P-18 Spoon Rest, P-37 Bar Lock, + P-80 Back Net / NATO AN/TPS-43 / Hughes AN/TPS-70):
+ +A) GROUND CLUTTER (AGL threshold)
+ Low-flying targets blend into terrain returns.
+
+
+
+Below DopplerMinAltAGL
+ detection probability drops linearly to 0 at 0 m AGL.
+
+
+B) VELOCITY NOTCH (beam aspect)
+ The MTI (Moving Target Indicator) filter suppresses returns with
+ near-zero Doppler shift. Targets flying perpendicular to the radar
+ beam (radial-velocity fraction < sin(NotchHalfDeg)) are rejected.
+ Classic P-18/P-37 notch was ≈ ±12–18° around 90° aspect.
+
+
+C) MINIMUM SPEED GATE
+ Very slow targets (taxiing aircraft, hovering) cannot be separated
+ from ground clutter by their Doppler shift alone.
+
+
+D) RADAR CROSS SECTION (RCS)
+ Larger targets are detectable at longer ranges. The radar range
+ equation gives R_max ∝ σ^0.25, so detection range is scaled by
+ (σ / σ_ref)^0.25 relative to a reference aircraft (default: 5 m²).
+ RCS also varies with aspect: nose-on ≈ 15% of side-on value.
+ Known DCS aircraft values are stored in INTEL.RCS_Table; unknowns
+ fall back to a category default (fighter/bomber/helicopter).
+ Values are approximate averages from public IISS/Jane's data.
+
+══════════════════════════════════════════════════════════════════
+ +── RCS lookup table (nominal side-on RCS in m²) ───────────────── +Frontal (nose-on / tail-on) RCS is modelled as 15% of these values +via aspect interpolation in GetAspectRCS(). +Sources: public declassified estimates, Jane's, IISS assessments. +- @field INTEL.RCSTable
+ +(Internal) Return the detected target groups of the controllable as a table.
+ + +We wrap the original function so the Doppler post-filter is transparent: +the existing RadarBlur / RadarAcceptRange logic is unchanged, and the +Doppler check runs once after all units have been collected. +The optional parameters specify the detection methods that can be applied. +If no detection method is given, the detection will use all the available methods by default.
+ +INTEL
++ Wrapper.Unit#UNIT + Unit +
+The unit detecting.
+ ++ #table + DetectedUnits +
+Table of detected units to be filled.
+ ++ #table + RecceDetecting +
+Table of recce per unit to be filled.
+ ++ #boolean + DetectVisual +
+(Optional) If false, do not include visually detected targets.
+ ++ #boolean + DetectOptical +
+(Optional) If false, do not include optically detected targets.
+ ++ #boolean + DetectRadar +
+(Optional) If false, do not include targets detected by radar.
+ ++ #boolean + DetectIRST +
+(Optional) If false, do not include targets detected by IRST.
+ ++ #boolean + DetectRWR +
+(Optional) If false, do not include targets detected by RWR.
+ ++ #boolean + DetectDLINK +
+(Optional) If false, do not include targets detected by data link.
+ +Enable 70/80s era pulse-Doppler ground-clutter simulation.
+ + +Only affects contacts detected via radar (DetectRadar=true paths). +Has no effect on visual, optical, IRST, RWR or datalink detections.
+ +INTEL
++ #number + MinAltAGL +
+Min AGL altitude in metres for reliable detection.
+ Below this the detection probability drops linearly.
+ Default 500 m (≈ clutter floor for P-18 / P-37).
+
+
+ + #number + NotchHalfDeg +
+Half-width of the velocity notch in degrees.
+ Targets with radial-velocity fraction < sin(NotchHalf)
+ are suppressed. Default 15° (≈ P-18 / Bar Lock spec).
+
+
+ + #number + MinSpeedMps +
+Minimum speed in m/s that the MTI filter can track.
+ Default 50 m/s (≈ 100 kt).
+
+
+ + #number + RadarRangeKm +
+Nominal detection range in km for the reference aircraft
+ (RCS_Reference, default 5 m²). Used only for RCS range
+ scaling; has no effect when DopplerRCS is false.
+ Default 200 km (≈ P-37 instrumented range vs fighter).
+
+
+ + #boolean + RCS +
+ If false, disable RCS range scaling (keep A–C only).
+ Default true.
+
+
+ self
+ +Disable Doppler radar simulation.
+ +Override the per-type RCS value for a DCS unit type name.
+ + +Useful for modded aircraft or mission-specific tweaks.
+ +INTEL
++ #string + TypeName +
+DCS unit type name (e.g. "MiG-29A")
+ ++ #number + RCS_m2 +
+Side-on RCS in m²
+ +self
+ +(Internal) Check whether a target unit would be detected by a 70/80s +pulse-Doppler radar located at the given radar unit position.
+ +INTEL
++ Wrapper.Unit#UNIT + TargetUnit +
++ Wrapper.Unit#UNIT + RadarUnit +
+#boolean:
+true = detected
+ +#string:
+rejection reason: "speed" | "clutter" | "notch" | "rcs"
+ +(Internal) Compute the aspect-weighted RCS for a target unit as seen +from a given radar position.
+ + + +The model blends the side-on (maximum) and nose/tail-on (minimum) RCS +using the geometry of the target's velocity relative to the radar line:
+ +σeff = σbase × ( f_nose + (1 − f_nose) × sin²(aspect_from_radial) )
+ +where aspect_from_radial is 0° when the target flies toward/away from +the radar (nose-on) and 90° when the target crosses the beam (side-on).
+ + +INTEL
++ Wrapper.Unit#UNIT + TargetUnit +
++ #table + rpos +
+Radar position as Vec3 {x,y,z}
+ ++ #number + spd +
+Target speed in m/s (pre-computed for efficiency)
+ ++ DCS#Vec3 + tvel +
+Target velocity vector (pre-computed)
+ +#number:
+Effective RCS in m²
+ +m²
+ +══════════════════════════════════════════════════════════════════ + INTEL Doppler radar extension
+ +Models four phenomena of a 1970/80s pulse-Doppler ground radar + (representative types: Soviet P-18 Spoon Rest, P-37 Bar Lock, + P-80 Back Net / NATO AN/TPS-43 / Hughes AN/TPS-70):
+ +A) GROUND CLUTTER (AGL threshold)
+ Low-flying targets blend into terrain returns.
+
+
+
+Below DopplerMinAltAGL
+ detection probability drops linearly to 0 at 0 m AGL.
+
+
+B) VELOCITY NOTCH (beam aspect)
+ The MTI (Moving Target Indicator) filter suppresses returns with
+ near-zero Doppler shift. Targets flying perpendicular to the radar
+ beam (radial-velocity fraction < sin(NotchHalfDeg)) are rejected.
+ Classic P-18/P-37 notch was ≈ ±12–18° around 90° aspect.
+
+
+C) MINIMUM SPEED GATE
+ Very slow targets (taxiing aircraft, hovering) cannot be separated
+ from ground clutter by their Doppler shift alone.
+
+
+D) RADAR CROSS SECTION (RCS)
+ Larger targets are detectable at longer ranges. The radar range
+ equation gives R_max ∝ σ^0.25, so detection range is scaled by
+ (σ / σ_ref)^0.25 relative to a reference aircraft (default: 5 m²).
+ RCS also varies with aspect: nose-on ≈ 15% of side-on value.
+ Known DCS aircraft values are stored in INTEL.RCS_Table; unknowns
+ fall back to a category default (fighter/bomber/helicopter).
+ Values are approximate averages from public IISS/Jane's data.
+
+══════════════════════════════════════════════════════════════════
+ +── RCS lookup table (nominal side-on RCS in m²) ───────────────── +Frontal (nose-on / tail-on) RCS is modelled as 15% of these values +via aspect interpolation in GetAspectRCS(). +Sources: public declassified estimates, Jane's, IISS assessments. +- @field INTEL.RCSTable
+ +m²
+ +══════════════════════════════════════════════════════════════════ + INTEL Doppler radar extension
+ +Models four phenomena of a 1970/80s pulse-Doppler ground radar + (representative types: Soviet P-18 Spoon Rest, P-37 Bar Lock, + P-80 Back Net / NATO AN/TPS-43 / Hughes AN/TPS-70):
+ +A) GROUND CLUTTER (AGL threshold)
+ Low-flying targets blend into terrain returns.
+
+
+
+Below DopplerMinAltAGL
+ detection probability drops linearly to 0 at 0 m AGL.
+
+
+B) VELOCITY NOTCH (beam aspect)
+ The MTI (Moving Target Indicator) filter suppresses returns with
+ near-zero Doppler shift. Targets flying perpendicular to the radar
+ beam (radial-velocity fraction < sin(NotchHalfDeg)) are rejected.
+ Classic P-18/P-37 notch was ≈ ±12–18° around 90° aspect.
+
+
+C) MINIMUM SPEED GATE
+ Very slow targets (taxiing aircraft, hovering) cannot be separated
+ from ground clutter by their Doppler shift alone.
+
+
+D) RADAR CROSS SECTION (RCS)
+ Larger targets are detectable at longer ranges. The radar range
+ equation gives R_max ∝ σ^0.25, so detection range is scaled by
+ (σ / σ_ref)^0.25 relative to a reference aircraft (default: 5 m²).
+ RCS also varies with aspect: nose-on ≈ 15% of side-on value.
+ Known DCS aircraft values are stored in INTEL.RCS_Table; unknowns
+ fall back to a category default (fighter/bomber/helicopter).
+ Values are approximate averages from public IISS/Jane's data.
+
+══════════════════════════════════════════════════════════════════
+ +── RCS lookup table (nominal side-on RCS in m²) ───────────────── +Frontal (nose-on / tail-on) RCS is modelled as 15% of these values +via aspect interpolation in GetAspectRCS(). +Sources: public declassified estimates, Jane's, IISS assessments. +- @field INTEL.RCSTable
+ +Destroy a unit of the group.
-Destroy a unit of the group.
-Name of the class.
- - - -Name of the class.
- - - -Name of the class.
- - - -Has line of sight.
+No of sight.
diff --git a/Documentation/Ops.PlayerTask.html b/Documentation/Ops.PlayerTask.html index 6be542d6f..64d5d1ac1 100644 --- a/Documentation/Ops.PlayerTask.html +++ b/Documentation/Ops.PlayerTask.html @@ -15953,14 +15953,11 @@ When moose is loading dynamically (for moose class development), tracing is switCoordinate of the mark.
+Text displayed in the mark panel.
- - - -Coordinate of the mark.
+ + + +Text displayed in the mark panel.
- - - -Coordinate of the mark.
+ + + +Text displayed in the mark panel.
- - - -