1612 Commits

Author SHA1 Message Date
Dan Albert
0b6575ca97
Use task priorities from aircraft yamls.
Preferred aircraft per task are now determined by a ranking of weights
stored in the aircraft yaml files. To aid in visualizing the priorities
across aircraft, Liberation can be run with the argument
dump-task-priorities to dump a yaml file in Saved
Games/DCS/Liberation/Debug/priorities.yaml, which will show each task
along with priority sorted aircraft and their weights.

The current weights in the data were exported from the existing lists,
where each position from the bottom of the list was worth 10 (to allow
some games for less shuffling later).

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2809.
2023-05-14 14:50:30 +02:00
Dan Albert
9ebbe11d83
Add debug command to dump aircraft priorities.
https://github.com/dcs-liberation/dcs_liberation/issues/2809
2023-05-14 14:30:19 +02:00
Dan Albert
016a9b5762
Load task priorities from YAML.
Not used yet.

https://github.com/dcs-liberation/dcs_liberation/issues/2809
2023-05-14 14:19:47 +02:00
Dan Albert
81554c510e
Fix merged classvars in UnitType descendants.
```
>>> class Foo:
...     bar = 0
...     @classmethod
...     def set_bar(cls, v):
...             cls.bar = v
...
>>> class Bar(Foo):
...     ...
...
>>> Bar.set_bar(1)
>>> Bar.bar
1
>>> Foo.bar
0
>>> class Foo:
...     bar = {}
...     @classmethod
...     def add(cls, k, v):
...             cls.bar[k] = v
...
>>> class Bar(Foo):
...     pass
...
>>> Bar.add(0, 1)
>>> Bar.bar
{0: 1}
>>> Foo.bar
{0: 1}
```

The collections are copied by reference into the descendants, whereas
_loaded is copied by value, so that one can stay. Before this patch,
every subtype was loading because _loaded was set per subclass, but they
were all registering with a common collection defined by UnitType rather
than their own class.
2023-05-14 14:08:37 +02:00
Pande4360
179850cdb6
Support for SW v2.6 mod (#120)
* Removed AI varients

* Removed AI varients Logo/Banners

* Removed AI varients Logo/Banners

* Removed AI varients ai flgith planner

* Removed AI varients SWPack Fix

* Removed AI varients SWPack - SWWeapon fix
2023-05-11 21:48:19 +02:00
zhexu14
f965c9ffa7
Handle edge case where aircraft have built in TPGs 2023-05-07 21:43:41 +02:00
zhexu14
065f90ea98
Reset flight's flight plan builder when changing task type.
The mechanism for how this bug arises is that the *WaypointGenerator*
uses the *FlightWaypoint.waypoint_type* to decide whether to generate
the waypoint in the .miz file using a *DeadIngressBuilder* or a
*SeadIngressBuilder*. This *waypoint_type* is set by
*ato.flightplans.<sead|dead>.Builder*, which is set when *ato.flight* is
initialised in the *Flight._flight_plan_builder* member variable based
on *Flight.flight_type*. When *Flight.flight_type* is updated when the
flight is changed from SEAD->DEAD, *Flight._flight_plan_builder* is not
updated in the development build, resulting in it continuing to generate
SEAD waypoints.

This PR adds *set_flight_type()* which sets the *flight_type* property
and updates *Flight._flight_plan_builder* and uses this function when
converting flight types. Ideally, *flight_type* should be made private
and only accessed through getter/setter functions that encapsulate this
behavior, but that would mess up any existing liberation save files.

This PR was tested by:
1. Opening the save file from Issue 2779 in the development build
2. Clicking "Take Off" and confirming that the Weapon Release Type is
"Guided" at the Ingress Waypoint as described in the issue.
3. Opening the save file from Issue 2779 in this PR
4. Converting the SEAD2DEAD flight from DEAD back to SEAD, and then from
SEAD to DEAD
5. Clicking "Take Off" and confirming in the mission editor that the
SEAD2DEAD flight has Weapon Release Type set to "Auto" at the Ingress
Waypoint.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2779.
2023-05-07 21:19:53 +02:00
zhexu14
c44fe4c89e
Track S_EVENT_KILL and S_EVENT_UNIT_LOST as well.
Catch a few more death signals. Still not perfect but a bit better.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2765.
2023-05-07 21:19:53 +02:00
Dan Albert
0697a0dd5b
Fix file encoding for some loads.
We've actually been pretty good at getting this right in most of the
code base, but we've missed it in a few places. Python defaults to the
encoding of the current locale unless otherwise specified, and for a US
English Windows install that's cp1252, not UTF-8. I'm not brave enough
to change the locale at startup because I don't know how that might
affect CJK encoding users (or for that matter, non-Latin derived
alphabet UTF-8 variants).

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2786.
2023-05-07 19:31:20 +02:00
Dan Albert
4cf7864916
Improve logging in defaultsquadronassigner.py.
https://github.com/dcs-liberation/dcs_liberation/issues/2786
2023-05-07 19:30:44 +02:00
Raffson
55b76de3f4
Formatting -_- 2023-05-06 18:13:36 +02:00
Raffson
29f3de3587
Fixing some issues with mod weapons 2023-05-06 17:19:56 +02:00
Raffson
df4a071a0f
Adjust Strike formation before and after bombing task 2023-05-06 17:08:48 +02:00
Pande4360
b36e7ea750
Support for SW mod v2.55 (#116) 2023-05-04 21:45:26 +02:00
Raffson
2ce63abf04
Use Courier font for kneeboard 2023-05-01 18:15:58 +02:00
Raffson
199467f31b
Export txt version of kneeboard pages 2023-05-01 18:12:17 +02:00
Raffson
b4b19d3ad5
Avoid claiming unused aircraft
Probably the final Fix #97
Unused aircraft (assigned upon takeoff) would get claimed but since it's not possible to delete those flights after aborting, these flights wouldn't get released anymore. This should fix that issue, including a migrator change to correct the number of claimed aircraft per squadron.
2023-05-01 18:12:17 +02:00
Raffson
31cfc333c7
Fine-tuning kneeboard
Partial fix #106
2023-05-01 18:12:16 +02:00
Raffson
6be517ad3e
Add A-7E Corsair II mod
Banner, icon, payloads & export by Adecarcer

Create A-7E.lua

Co-Authored-By: Antonio <54774215+Adecarcer@users.noreply.github.com>
2023-04-23 18:50:04 +02:00
Raffson
fad48ebaed
Improve AI SEAD capabilities 2023-04-15 20:44:57 +02:00
Raffson
bf23ee4e8f
Fix migrator issue in _update_packagewaypoints 2023-04-15 20:38:51 +02:00
Raffson
6517dc0de8
Set ECM as first task for SEAD ingress 2023-04-14 22:46:11 +02:00
Raffson
845888bc75
Set ECM option as first task for DEAD-ingress 2023-04-14 22:46:10 +02:00
Raffson
1582b3ee43
Move F-16A_MLU to DEAD capable instead
For some reason an old loadout suggested it could carry HARMs...
2023-04-14 22:46:10 +02:00
Raffson
c0406e7c3c
Refactor ingress altitude 2023-04-14 22:46:09 +02:00
Raffson
2746636119
Force usage of Decoys before ARMs 2023-04-11 20:09:58 +02:00
Raffson
5b7ff8bdd6
Add fuel quantity selector to EditFlight's payload tab
Resolves #99
2023-04-10 17:11:30 +02:00
Raffson
efd2c40cfc
Avoid generating/planning flights without an operational runway 2023-04-10 14:38:06 +02:00
Raffson
7eb652b970
Require all bases to be captured to win/lose 2023-04-10 14:10:46 +02:00
Raffson
8973100f95
Fix bug preventing mission generation 2023-04-10 00:02:14 +02:00
Raffson
3f509a876e
#110 Ability to load/save settings
Also includes support for remaining enum/timedelta settings through the yaml file.
- timedelta's in minutes
- enum's should be written out: enumType.enumValue
2023-04-09 22:03:08 +02:00
Raffson
5916ed43d2
Allow definition of settings in campaign's yaml file
Resolves #92
2023-04-08 19:51:38 +02:00
Raffson
8a95be7473
Fix mypy complaining about something that was already covered -_- 2023-04-02 22:39:34 +02:00
Raffson
5db53aa0b1
Inject ground units to TgoConfig preset group if fill and has no unit 2023-04-02 22:39:33 +02:00
Raffson
7a0ccd0076
Update JAS-39 2023-04-02 22:39:33 +02:00
Raffson
ce7bd9def7
Fix edge-case bug in layout's group size 2023-04-01 17:44:50 +02:00
Raffson
7c3d2367f2
Fix incorrect plugin (option) values 2023-04-01 17:44:48 +02:00
Raffson
83eea8974b
Fix procurement bug when coalition has no squadrons
If a user removes all squadrons manually, the faction may still contain aircraft but no budget for aircraft should be allocated at all. In such a case, all money should go to ground units...
2023-03-25 14:58:36 +01:00
Raffson
a1fc92bd00
Initial changes for v1.2 2023-03-18 23:02:11 +01:00
Raffson
3060645a26
Extra measure to avoid 0 units in transfer map 2023-03-18 22:10:22 +01:00
Raffson
23038671b3
Disable altitude restriction for DEAD
This is automatically being set by pydcs as soon as you set the altitude
2023-03-18 21:19:45 +01:00
Raffson
918903f831
Fix plugins not loading properly after restart of app 2023-03-18 00:52:11 +01:00
Raffson
f3241c286c
Fix convoy bug mentioned by Adecarcer 2023-03-17 23:55:36 +01:00
Raffson
e682176040
Polish DEAD strike ingress tasking 2023-03-17 23:41:17 +01:00
Raffson
8bea0c5cf8
Polishing CarpetBombing task 2023-03-17 23:41:17 +01:00
Raffson
497fd56efc
Add ST wpt to F-14A 2023-03-12 22:15:34 +01:00
MetalStormGhost
e2797fd796
F/A-18E/F/G Super Hornet mod support v2.1 (#84)
* Don't generate runway data for heliports.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2710.

* Remove dead code.

* Implemented support for Chiller Juice Studios F/A-18E/F/G Super Hornet mod

The Chiller Juice Studios Super Hornet mod works like this: it changes the stock F/A-18C Hornet into F/A-18E/F/G Super Hornet / Growler. The exact variant is selected with argument 999 in the livery description.lua, which is why I chose to add the three variants in the FA-18C_hornet.yaml. This way, we can use the squadrons mechanism in Liberation to select the appropriate variant by specifying the correct livery for the squadron.

Current properties injected are wingspan / width and the custom ordnance added by the mod.

Added F/A-18E/F/G banner by Schmokedpancake and F/A-18F icon.

Resolves https://github.com/dcs-liberation/dcs_liberation/issues/2681

* Added a separate loadout file for the Chiller Juice Studios F/A-18E/F/G Super Hornet mod. Currently only replaces the FPU-8A fuel tanks with FPU-12s.

* Added the possibility to use the AI variant of the F/A-18C in campaigns, allowing different loadouts and in the future, the Super Hornet mod alongside legacy Hornets in the same campaign.

* Updated Chiller Juice Studios F/A-18E/F/G Super Hornet mod support to version 2.0. Removed the 1.x version property and pylon injection since they are no longer necessary, since 2.0 adds the Super Hornet variants as separate aircraft. For the same reason, removed the AI-only F/A-18C from the faction files (still retained the aircraft yaml, loadout files and icon/banner in case someone still wants to use it).

Includes F/A-18E/F/G banner by Schmokedpancake, loadouts by @sgtfuzzle17 and F/A-18E/F icons.

* Added Super Hornet, Growler squadrons and Growler banner by @sgtfuzzle17
The squadrons include the model of the airframe in their name, so they can be referenced directly from campaign yaml files without the risk of conflicting with the same squadron of a different era, flying a different airframe.

Also updated the E and G model icons.

Resolves #77

* Fixed a bug with the EA-18G banner not being visible in Retribution. Also added the Super Hornet variants to factions bluefor_modern and Israel-USN_2005_Allied_Sword.

* Corrected the descriptions for tandem-seat Super Hornet variants.

* Updated Chiller Juice Studios F/A-18E/F/G Super Hornet mod support to version 2.1

* Anti-ship loadouts are now named properly.

* Update changelog.md

* Update QNewGameWizard.py

---------

Co-authored-by: Dan Albert <dan@gingerhq.net>
Co-authored-by: Raffson <Raffson@users.noreply.github.com>
2023-03-12 19:17:29 +00:00
MetalStormGhost
e827d6d1d0
Swedish Military Assets Pack v1.10 support (#90)
* Added a pydcs extension for Swedish Military Assets for DCS by Currenthill v1.10 (2022-11-01). Also added shipmod decorator for the ships added in the mod and remove_ship function in faction.py

* Added unit yamls for Swedish Military Assets for DCS by Currenthill v1.10 (2022-11-01)

* Added missing RBS-15 group yaml and Ag 90 Sniper Team unit yaml.

* Fixed swedishmilitaryassetspack imports.

* Renamed some unit yamls for Swedish Military Assets pack.

* Encoded LvKv9040.yaml in UTF-8.

* Encoded Grkpbv90.yaml in UTF-8.

* Encoded BV410*.yaml in UTF-8.

* Encoded CV9040.yaml in UTF-8.

* Fixed Strv103 yaml syntax.

* Encoded Strv2000.yaml in UTF-8.

* Renamed some unit yamls for Swedish Military Assets pack.

* Renamed BV410 air-defence units.

* Added Swedish short-range air defence groups.

* Added Swedish medium- and long-range air defence groups (LvS-103 batteries).

* Added icons for some Swedish Military Assets units.

* Added faction files for:
sweden_1997
sweden_2020
2023-03-12 18:31:14 +01:00
Raffson
aaa06a5e88
Fix possible conficts in runway data
In case 2 carriers are present and have the same name, the kneeboard information gets screwed up...
2023-03-12 14:49:40 +01:00
Raffson
cebcee8d32
Tweak STRIKE ingress tasks
Use carpet-bombing instead, combine all tasks to better support guided/unguided attacks
2023-03-12 14:47:35 +01:00