Skip to content

MOOSE Release 2.4.0

Compare
Choose a tag to compare
@FlightControl-User FlightControl-User released this 10 Oct 19:29
· 2324 commits to master since this release

Are are proud to present you this new release 2.4.0.

Getting to this point has been a massive work. We've put in quite a large amount of testing on the different modules, and we also could fix a lot of the outstanding issues that were reported.

That being said, new modules means new things to learn, and maybe new issues may be introduced that we did not know yet. We really hope that you all can remain patient as you've been with us preparing and testing. Please keep reporting those issues on discord and here on github, and we'll fix them.

Special thanks go to the following people, who are on our Discord channels:

  • shadowze for his stringent testing through the past months and his pro-active advice.
  • gunterlund for his tests on the apc stuff.
  • nolove for his enthousiastic and never ending feedback on trying out the stuff.
  • delta for his great help on the discord channels and forums.

And all those who i may have forgotten to mention! (appologies in advance!)

1. What's new?

FlightControl and FunkyFranky have been working together a bit, and the result is a complete new cargo management system, artillery management, a new warehouse system, and suppression of fire.

MOOSE introduces a new cargo management system, which provides you the following:

1.1. Warehouses

A new WAREHOUSE module, that allows you to move cargo assets between warehouses. Warehouses move
cargo using the new cargo management system.

1.2. Transport Cargo by AI Carriers

ai_cargo_dispatcher

Create cargo transporation systems within your missions to dispatch cargo between various locations or zones by various carriers. These classes are the "engines" for transportation used by the WAREHOUSE class.

1.2.1. Transport Cargo using APCs

ai_cargo_dispatching_for_apc

AI_CARGO_DISPATCHER_APC transports cargo using AI controlled armoured personel carriers or vehicles between zones. Per AI group, the cargo transportation using airplanes is internally facilitated using the new AI_CARGO_APC class.

1.2.2. Transport Cargo using Helicopters

ai_cargo_dispatching_for_helicopters

AI_CARGO_DISPATCHER_HELICOPTER transports cargo using AI controlled helicopters between zones. Per AI group, the cargo transportation using airplanes is internally facilitated using the new AI_CARGO_HELICOPTER class.

1.2.3. Transport Cargo using Airplanes

ai_cargo_dispatching_for_airplanes

AI_CARGO_DISPATCHER_AIRPLANE transports cargo using AI controlled airplanes between airbases. Per AI group, the cargo transportation using airplanes is internally facilitated using the new AI_CARGO_AIRPLANE class.

1.3. Transport Cargo by Human Players

task_cargo_dispatcher

Create cargo transporation tasks within your missions to command human players to dispatch cargo between various locations or zones. The new TASK_CARGO_DISPATCHER class will be used for this purpose.

1.3.1. Create cargo transport tasks.

task_cargo_transport

Use the TASK_CARGO_DISPATCHER:AddTransport() method to create new cargo transport tasks. The new class TASK_CARGO_TRANSPORT is the internal new cargo tasking engine that will govern the transport task for one human player.

1.3.2. Create CSAR tasks.

task_cargo_csar

Use the TASK_CARGO_DISPATCHER:StartCSARTasks() to create automatically CSAR tasks for pilots that ejected from crashing airplanes for rescue. The new class TASK_CARGO_CSAR is the internal new cargo tasking engine that will govern the CSAR task for one human player.

1.4. Declare Cargo

cargo

New classes have been introduced that you need to use to declare cargo within your mission scripts. The main CARGO class is the base class for all the cargo management. It contains the required functionality to load / board / unload / unboard cargo, and manage the state of each cargo object. From this CARGO class are other CARGO_ classes derived, which inherit the properties and functions from CARGO, but implement a specific process to handle specific cargo objects! It is not the purpose to use directly the CARGO class within your missions. However, consult the CARGO documention as it provides a comprehensive description on how to manage cargo within your missions.

1.4.1. Cargo groups

cargo_groups

Use CARGO_GROUP to manageme omoveable and grouped cargo logistics, which are based on a GROUP object. Typical cargo of this type can be infantry or (small) vehicles.

1.4.2. Cargo crates

cargo_crates

Use CARGO_CRATE to manageme single cargo crates, which are based on a STATIC object. Typical cargo of this type can be crates, oil barrels, wooden crates etc. The cargo can be ANY static type! So potentially also other types of static objects can be treated as cargo! Like flags, tires etc.

1.4.3. Cargo slingload

cargo_slingload

Use CARGO_SLINGLOAD for the management of sling loadable cargo crates, which are based on a STATIC object. This cargo can only be slingloaded.

1.5. Artillery

artillery

Use the new ARTY class to easily assign and manage targets for artillery units.

1.6. Suppression

Use the new SUPPRESSION class to hold fire, when ground units get hit by (suppressive) enemy fire. They will not be able to shoot back for a certain amount of time.

2. What more has changed?

2.1. New look and feel!

The MOOSE documentation has been completely reworked. Here is the link to the MOOSE documentation, it has not changed:

https://flightcontrol-master.github.io/MOOSE_DOCS/

Here are some of the changes:

  • New main documentation pages subdivided into different sections.
  • New MOOSE code documentation, now also showing per class the complete list of methods and fields. Also each class will now have a picture and a class inheritance tree.

2.2. New luadocumentor

During the release 2.4 preparation, i revised completely the code of luadocumentor to generate the above documentation pages.

2.3. New deployment process

Now we deploy our solutions using appveyor, and this deployment automation has greatly increased our productivity and consistency within the team.

2.4. Discord

Our community on Discord has grown massively. Lots of people to chat about MOOSE.

3. What has really changed?

Set of Zones

A new SET_ZONE class to model sets of zones and take action upon them.

#CARGO tag

Cargo can be declared within the mission editor by adding a #CARGO tag in the name.

#ZONE tag

Now you can declare your polygon zones also using the #ZONE tag within the mission editor.

DATABASE:

  • Added support for new NEUTRAL coalition DCS feature. Neutral groups (and players) are registered in the MOOSE data base (e.g., neutral groups can be found by GROUP:FindByName()).

AIRBASE:

  • Added Persian Gulf map airport enumerators including Shiraz and Kerman airports.
  • Added a lot of convenient wrapper function for new DCS API getparking() function. This enables finding the coordinates of parking spots, explicitly specifying terminal types, check on runway, mark parking spots and many more.
  • Added sophisticated find free parking spot routine, which is takes dimension of aircraft etc into account. Also, aircraft are not spawned at places with statics or too close to scenery objects (optional).
  • Added parameter of how many parking spots are required in find free parking spots routine.
  • FindFreeParking function: Added check that units of a group don't overlap with previous members of the same group.

AI_CARGO_DISPATCHER:

  • APCs and helos will now obey speeds set by SetPickupSpeed() and SetDeploySpeed().

DESIGNATE:

  • Fixed bug when e.g. smoke is fired that made script crash.

RAT (v2.3.2):

  • Improved how free parking spots are found with the new DCS API function.
  • Respawn delay is now used as despawn delay as well. Groups will not get removed immediately after engine shutdown.
  • Commute "starshape" option added to preserve home base.
  • Added user functions for parking spots, terminal types etc.
  • Added return of self for user functions.
  • Added check for all units of a group that did not move within a certain time.
  • Added new check on runway function and removed old version.
  • Changed some default parameter values.
  • Removed old RAT parking spot DB routines and old check on runway functions.

RATMANAGER:

  • Added interval between spawns.

ARTY (v1.0.4):

  • Added tactical nuclear shells, illumination bombs and smoke shells.
  • Added dynamic target/relocation assignment via marks on the F10 map.
  • Added small data base with min/max firing ranges of most common artillery group.
  • Added possibility to set rearming place and group via marks.
  • Fixed bug that coordinates from marks are always at an altitude of five meters ASL.
  • Changed behavior that if no arty group is addressed explicitly, nothing is happening. Before all groups were addressed.
  • Added cluster and alias assignment via marks.
  • Added option to automatically relocate after each engagement.
  • Added option to automatically relocate to within firing range.
  • Added/fixed relocate option.
  • Corrected MISSILE category.
  • Added option to not engage an already assigned target.
  • Many other changes and bug fixes under the hood.
  • Rearming group will not always use 20 km/h = 11 mph.

RANGE (v1.2.0):

  • Optimized performance. Bombs are now only tracked if the player is within a certain distance of the range.

CONTROLLABLE:

  • Improved TaskGroundOnRoad() function. Optionally, the controllable will take the direct route if the path on road is 10x longer than path on road or path on road is less than 5% of total path.
  • Added GetFuelMin and GetFuelAve functions to ensure polymorphic behavior.
  • Added speed unit to @param description. Sometimes it was unclear if speed needs to be given in m/s or km/h.
  • Fixed some default speed and conversions.
  • Fixed bug that ships cannot have another alarm state than green.

COORDINATE:

  • Improved GetPathOnRoad to give the length of the path.
  • Added new function to scan for units, statics and scenery around the coordinate.
  • Added functions to return the coordinates of the closest (free) parking spot.
  • Added power option for illumination bombs.
  • Added surface type function.
  • Added readonly and text as optional parameters for mark points.
  • Added possibility to get coordinate from latitude and longitude given in decimal degrees.
  • Added Big smoke and fire effect API functions.
  • Cleaned up some speed unit stuff.
  • Reintroduced PathOnRoad function to contain the full path. Useful as interface to DCS API function.
  • Fixed some default speed and conversions.

SPAWN:

  • Fixed bug in SPAWN:InitHeading(headingmin, headingmax) function.
  • Fixed grouping bug in SpawnAtAirbase.
  • Fixed spawn on runway bug.
  • Added user functions for livery and skill.
  • Reworked SpawnAtAirbase() function to use new feature that position of (free) parking spots can be determined.
  • Terminal type can now be specified for SpawnAtAirbase().
  • If no parking spot is available, units are spawned in air (or not spawned at all).
  • Aircraft are despawned when accidentally spawned on runway (should not happen any more anyway).

CARGO_GROUP:

  • Improved UnBoarding so that units of a ground don't get spawned on top of each other if no explicit coordinate is specified.

ZONE_UNIT:

  • Offset option added.

TASK_A2G:

SET_GROUP:

  • Fixed bug in SET_GROUP:FindNearestGroupFromPointVec2( PointVec2 ) function. This caused DESIGNATE class to crash (caused critical bug in DESIGNATE class).

AI_CARGO_APC:

  • Included improved route on/off road routine to use improved CONTROLLABLE:TaskGroundOnRoad() function.
  • Speed is not fixed any more. Default is set to 50% of the max speed a given unit can move at.

AI_CARGO_HELICOPTER:

  • Speed is not fixed any more at 150 km/h but can be given as input parameter. Default (if no speed is provided) is 50% of max possible speed, the unit type can fly at.

AI_A2A, AI_Patrol and AI_A2A_Dispatcher:

  • Changed average fuel for controllable to new min fuel function which should provide better RTB behavior for a group > 1 unit.

AI_FORMATION:

  • Fixed comma vs. dot bug.

UTILS:

  • Added clock vs second functions.
  • Added function to display mission time.
  • Added split function (used in many other classes).

DCS:

  • Updated country.id enumerator to include latest countries available in DCS.
  • The DCS file is now in the root of the Moose directory.

MESSAGE:

  • Added possibility to clear previous messages.
  • Implementation of message types, with a specific duration.

ROUTINES:

  • Fixed MessageToBlue() function sending to red coalition.

RADIO:

  • NewUnitTransmission wrong method call fixed.

SET_GROUP

  • Added AnyInZone stuff.

ACTION_ROUTE

  • Now for tasking, routing messages show the task name...

TASK_CARGO

  • Now marks are possible to be reported for cargo tasks.

AI_A2A_DISPATCHER

  • Fixed refuelling of planes to tanker.
  • Fixed status checks like distance etc.

GROUP

  • Fixed MinHeight and MaxHeight methods.

SET_STATIC

  • Added SET_STATIC:CalculateThreatLevelA2G()

DETECTION

  • Fixed the IsDetected for DETECTION_UNITS. The change for DETECTION_AREAS is pending.

COORDINATE

  • Set an altitude for coordinates.

SET_GROUP

  • Fixed SET_GROUP:RemoveGroupsByName( RemoveGroupNames )

Removed the S_EVENT_PLAYER_ENTER_UNIT DCS bug workaround.

  • As a consequence, now players won't be able to join APCs for ground movement tasks.