Compare commits

..

43 Commits

Author SHA1 Message Date
zhexu14
9386544207 Update README.md
Remove reference to DCS Stable and Open Beta as they are now merged.
2024-06-06 22:37:37 +10:00
zhexu14
fd8632a71d Add radio setup for F-5E, Mi-8, Mi-24 and F-86 (#3400) 2024-06-05 20:59:02 +10:00
ColonelAkirNakesh
352216bb5e Create FuSe-65.yaml (#3398)
Adds Wurzburg-Riese EWR to yamls
2024-06-05 20:44:14 +10:00
zhexu14
271ddf4503 Add contributors (#3396)
Add new contributors.
2024-06-05 20:41:10 +10:00
ColonelAkirNakesh
cef81c16c3 Update germany_1944.yaml (#3397)
Adds missing artillery pieces and U-boat to Germany '44 faction
2024-06-05 20:40:56 +10:00
tmz42
4e2c3dbc51 Allied Sword update (#3399)
Modified Allied Sword for F-4E
Included expansion to the North
2024-06-05 20:40:25 +10:00
zhexu14
d905f0cf7f Dcs 2.9.5 (#3393)
DCS 2.9.5 Support (including F-4)

---------

Co-authored-by: Raffson <Raffson@users.noreply.github.com>
Co-authored-by: Starfire13 <72491792+Starfire13@users.noreply.github.com>
2024-06-02 22:18:11 +10:00
dependabot[bot]
99bbdc3e77 Bump jinja2 from 3.1.3 to 3.1.4 (#3387)
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/jinja/releases">jinja2's
releases</a>.</em></p>
<blockquote>
<h2>3.1.4</h2>
<p>This is the Jinja 3.1.4 security release, which fixes security issues
and bugs but does not otherwise change behavior and should not result in
breaking changes.</p>
<p>PyPI: <a
href="https://pypi.org/project/Jinja2/3.1.4/">https://pypi.org/project/Jinja2/3.1.4/</a>
Changes: <a
href="https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4">https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4</a></p>
<ul>
<li>The <code>xmlattr</code> filter does not allow keys with
<code>/</code> solidus, <code>&gt;</code> greater-than sign, or
<code>=</code> equals sign, in addition to disallowing spaces.
Regardless of any validation done by Jinja, user input should never be
used as keys to this filter, or must be separately validated first.
GHSA-h75v-3vvj-5mfj</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/jinja/blob/main/CHANGES.rst">jinja2's
changelog</a>.</em></p>
<blockquote>
<h2>Version 3.1.4</h2>
<p>Released 2024-05-05</p>
<ul>
<li>The <code>xmlattr</code> filter does not allow keys with
<code>/</code> solidus, <code>&gt;</code>
greater-than sign, or <code>=</code> equals sign, in addition to
disallowing spaces.
Regardless of any validation done by Jinja, user input should never be
used
as keys to this filter, or must be separately validated first.
:ghsa:<code>h75v-3vvj-5mfj</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dd4a8b5466"><code>dd4a8b5</code></a>
release version 3.1.4</li>
<li><a
href="0668239dc6"><code>0668239</code></a>
Merge pull request from GHSA-h75v-3vvj-5mfj</li>
<li><a
href="d655030770"><code>d655030</code></a>
disallow invalid characters in keys to xmlattr filter</li>
<li><a
href="a7863ba9d3"><code>a7863ba</code></a>
add ghsa links</li>
<li><a
href="b5c98e78c2"><code>b5c98e7</code></a>
start version 3.1.4</li>
<li><a
href="da3a9f0b80"><code>da3a9f0</code></a>
update project files (<a
href="https://redirect.github.com/pallets/jinja/issues/1968">#1968</a>)</li>
<li><a
href="0ee5eb41d1"><code>0ee5eb4</code></a>
satisfy formatter, linter, and strict mypy</li>
<li><a
href="20477c6357"><code>20477c6</code></a>
update project files (<a
href="https://redirect.github.com/pallets/jinja/issues/5457">#5457</a>)</li>
<li><a
href="e491223739"><code>e491223</code></a>
update pyyaml dev dependency</li>
<li><a
href="36f98854c7"><code>36f9885</code></a>
fix pr link</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/jinja/compare/3.1.3...3.1.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jinja2&package-manager=pip&previous-version=3.1.3&new-version=3.1.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-29 22:40:40 +10:00
DillieKoe
4040f50d8a Update peru_1995.yaml (#3392)
Added 3 missing units.
2024-05-29 22:40:22 +10:00
zhexu14
11304542bd Wrap getLife with pcall to handle error where unit is lost (#3390) 2024-05-25 15:09:18 +10:00
Starfire13
cbf5f5ed90 Update Black Sea from 2/3 to 3/3 performance (#3391)
I think this campaign is really not performance friendly and should be
marked as a 3/3. It is the first campaign on the list and quite a few
new players pick it as their first one and then struggle with
performance issues. Framerate on this campaign is quite a bit lower than
on many of the other 2/3 campaigns, on account of the large number of
aircraft and very heavy SAM coverage.
2024-05-25 15:09:01 +10:00
zhexu14
6433d3159e Make window size of NGW consistent so position does not move around (#3386) 2024-05-04 16:10:20 +10:00
dependabot[bot]
b376ab135f Bump ejs from 3.1.7 to 3.1.10 in /client (#3385)
Bumps [ejs](https://github.com/mde/ejs) from 3.1.7 to 3.1.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/mde/ejs/releases">ejs's
releases</a>.</em></p>
<blockquote>
<h2>v3.1.10</h2>
<p>Version 3.1.10</p>
<h2>v3.1.9</h2>
<p>Version 3.1.9</p>
<h2>v3.1.8</h2>
<p>Version 3.1.8</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3f807dea9"><code>d3f807d</code></a>
Version 3.1.10</li>
<li><a
href="9ee26dde5d"><code>9ee26dd</code></a>
Mocha TDD</li>
<li><a
href="e469741dca"><code>e469741</code></a>
Basic pollution protection</li>
<li><a
href="715e9507fa"><code>715e950</code></a>
Merge pull request <a
href="https://redirect.github.com/mde/ejs/issues/756">#756</a> from
Jeffrey-mu/main</li>
<li><a
href="cabe3146ad"><code>cabe314</code></a>
Include advanced usage examples</li>
<li><a
href="29b076cdbb"><code>29b076c</code></a>
Added header</li>
<li><a
href="11503c79af"><code>11503c7</code></a>
Merge branch 'main' of github.com:mde/ejs into main</li>
<li><a
href="7690404e2f"><code>7690404</code></a>
Added security banner to README</li>
<li><a
href="f47d7aedd5"><code>f47d7ae</code></a>
Update SECURITY.md</li>
<li><a
href="828cea1687"><code>828cea1</code></a>
Update SECURITY.md</li>
<li>Additional commits viewable in <a
href="https://github.com/mde/ejs/compare/v3.1.7...v3.1.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ejs&package-manager=npm_and_yarn&previous-version=3.1.7&new-version=3.1.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-04 15:58:31 +10:00
zhexu14
99089cc3d0 Fix waypoints list width (#3383)
Fix width of Flight Waypoints List. The vertical header width was
returning 0 so the table width was under estimated leading to the table
being too narrow. Used sizeHint to get vertical header width to work
around this issue.
2024-04-24 07:55:29 +10:00
zhexu14
13ff69c4df Set next version as 11.1 (#3382)
This PR sets versions & changelog to a 11.1 bugfix release.
2024-04-22 22:55:39 +10:00
zhexu14
55c77ed7c3 Lock python version to 3.11.4 as 3.11.5 introduces a change that brea… (#3380)
3.11.5 introduces a change that breaks unpickling of save files that
leads to #3379. This PR introduces a short term fix by locking the
python version used in the build until the root cause can be found and
fixed.
2024-04-18 07:55:04 +10:00
zhexu14
4c5d968dd7 Issue 3232: Clean up Air Wing Configuration Dialogue Box (#3377)
Set default size of Air Wing Configuration Dialogue Box so that a whole
squadron can be seen, addressing #3232

Make some UI elements smaller so that the Dialogue Box does not take too
much screen real estate and works on smaller monitors.
2024-04-15 20:49:42 +10:00
zhexu14
dc3d1b0b5b Make theater refuelling flight plan on-station time configurable based on the desired mission duration (#3375)
This PR 
- Addresses #1511 by setting the tanker on-station time to the desired
mission duration + 30 minutes
- Elaborate on what the desired mission duration setting does in the
Settings UI.
2024-04-14 21:58:30 +10:00
Chilli
75f904275c CJS Super hornet mod support update (#3376)
In this PR:

- Added EA-18G payload (made by @sgtfuzzle17)
- Added FA-18E payload (made by @sgtfuzzle17)
- Added FA-18F payload (made by @sgtfuzzle17)
- Corrected typo on my name
- Added SEAD Escort task to EA-18G.yaml
2024-04-14 21:58:15 +10:00
zhexu14
f59051c9f8 Issue 2778 (#3374)
This PR addresses #2778 by:
- Updating the logic for how redeployment of front line units works to
handle "out of order" captures e.g. for control points A->B->C, where A
starts friendly and B, C starts as enemy-controlled, the player captures
C first, typically using air assault.
- Updating the cheat logic so that capturing CPs using cheats behaves
the same way as capturing CPs normally.
2024-04-13 21:55:44 +10:00
zhexu14
c8c78d0b2a Stop naval control points from being moved onto land (#3373)
This PR fixes #3243 by checking whether the destination point is in the
sea for naval control points before permitting the movement.
2024-04-13 15:04:41 +10:00
dependabot[bot]
0ade5b9861 Bump idna from 3.6 to 3.7 (#3372)
Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/kjd/idna/releases">idna's
releases</a>.</em></p>
<blockquote>
<h2>v3.7</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix issue where specially crafted inputs to encode() could take
exceptionally long amount of time to process. [CVE-2024-3651]</li>
</ul>
<p>Thanks to Guido Vranken for reporting the issue.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/kjd/idna/compare/v3.6...v3.7">https://github.com/kjd/idna/compare/v3.6...v3.7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/kjd/idna/blob/master/HISTORY.rst">idna's
changelog</a>.</em></p>
<blockquote>
<p>3.7 (2024-04-11)
++++++++++++++++</p>
<ul>
<li>Fix issue where specially crafted inputs to encode() could
take exceptionally long amount of time to process. [CVE-2024-3651]</li>
</ul>
<p>Thanks to Guido Vranken for reporting the issue.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1d365e17e1"><code>1d365e1</code></a>
Release v3.7</li>
<li><a
href="c1b3154939"><code>c1b3154</code></a>
Merge pull request <a
href="https://redirect.github.com/kjd/idna/issues/172">#172</a> from
kjd/optimize-contextj</li>
<li><a
href="0394ec76ff"><code>0394ec7</code></a>
Merge branch 'master' into optimize-contextj</li>
<li><a
href="cd58a23173"><code>cd58a23</code></a>
Merge pull request <a
href="https://redirect.github.com/kjd/idna/issues/152">#152</a> from
elliotwutingfeng/dev</li>
<li><a
href="5beb28b9dd"><code>5beb28b</code></a>
More efficient resolution of joiner contexts</li>
<li><a
href="1b121483ed"><code>1b12148</code></a>
Update ossf/scorecard-action to v2.3.1</li>
<li><a
href="d516b874c3"><code>d516b87</code></a>
Update Github actions/checkout to v4</li>
<li><a
href="c095c75943"><code>c095c75</code></a>
Merge branch 'master' into dev</li>
<li><a
href="60a0a4cb61"><code>60a0a4c</code></a>
Fix typo in GitHub Actions workflow key</li>
<li><a
href="5918a0ef80"><code>5918a0e</code></a>
Merge branch 'master' into dev</li>
<li>Additional commits viewable in <a
href="https://github.com/kjd/idna/compare/v3.6...v3.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=idna&package-manager=pip&previous-version=3.6&new-version=3.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-12 21:21:17 +10:00
zhexu14
9611c01b93 Add mechanism to prevent double counting of damage induced kills when… (#3371)
… DCS reports multiple hits

This PR fixes a bug introduced when tracking OCA/Aircraft kills that
results in double counting when DCS reports multiple hits, typically
when guns are used.
2024-04-10 16:28:21 +10:00
dependabot[bot]
3234a2b28a Bump axios from 0.25.0 to 1.6.8 in /client (#3369)
Bumps [axios](https://github.com/axios/axios) from 0.25.0 to 1.6.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/releases">axios's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.6.8</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>AxiosHeaders:</strong> fix AxiosHeaders conversion to an
object during config merging (<a
href="https://redirect.github.com/axios/axios/issues/6243">#6243</a>)
(<a
href="2656612bc1">2656612</a>)</li>
<li><strong>import:</strong> use named export for EventEmitter; (<a
href="7320430aef">7320430</a>)</li>
<li><strong>vulnerability:</strong> update follow-redirects to 1.15.6
(<a
href="https://redirect.github.com/axios/axios/issues/6300">#6300</a>)
(<a
href="8786e0ff55">8786e0f</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a href="https://github.com/jasonsaayman"
title="+4572/-3446 ([#6238](https://github.com/axios/axios/issues/6238)
)">Jay</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+30/-0
([#6231](https://github.com/axios/axios/issues/6231) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/Creaous"
title="+9/-9 ([#6300](https://github.com/axios/axios/issues/6300)
)">Mitchell</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/mannoeu"
title="+2/-2 ([#6196](https://github.com/axios/axios/issues/6196)
)">Emmanuel</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/ljkeller"
title="+3/-0 ([#6194](https://github.com/axios/axios/issues/6194)
)">Lucas Keller</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/ADITYA-176"
title="+1/-1 ()">Aditya Mogili</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/petrovmiroslav" title="+1/-1
([#6243](https://github.com/axios/axios/issues/6243) )">Miroslav
Petrov</a></li>
</ul>
<h2>Release v1.6.7</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li>capture async stack only for rejections with native error objects;
(<a
href="https://redirect.github.com/axios/axios/issues/6203">#6203</a>)
(<a
href="1a08f90f40">1a08f90</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+30/-26
([#6203](https://github.com/axios/axios/issues/6203) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/zh-lx"
title="+0/-3 ([#6186](https://github.com/axios/axios/issues/6186)
)">zhoulixiang</a></li>
</ul>
<h2>Release v1.6.6</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fixed missed dispatchBeforeRedirect argument (<a
href="https://redirect.github.com/axios/axios/issues/5778">#5778</a>)
(<a
href="a1938ff073">a1938ff</a>)</li>
<li>wrap errors to improve async stack trace (<a
href="https://redirect.github.com/axios/axios/issues/5987">#5987</a>)
(<a
href="123f354b92">123f354</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a href="https://github.com/ikonst"
title="+91/-8 ([#5987](https://github.com/axios/axios/issues/5987)
)">Ilya Priven</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/zaosoula"
title="+6/-6 ([#5778](https://github.com/axios/axios/issues/5778) )">Zao
Soula</a></li>
</ul>
<h2>Release v1.6.5</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>ci:</strong> refactor notify action as a job of publish
action; (<a
href="https://redirect.github.com/axios/axios/issues/6176">#6176</a>)
(<a
href="0736f95ce8">0736f95</a>)</li>
<li><strong>dns:</strong> fixed lookup error handling; (<a
href="https://redirect.github.com/axios/axios/issues/6175">#6175</a>)
(<a
href="f4f2b039dd">f4f2b03</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/axios/axios/compare/v1.6.7...v1.6.8">1.6.8</a>
(2024-03-15)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>AxiosHeaders:</strong> fix AxiosHeaders conversion to an
object during config merging (<a
href="https://redirect.github.com/axios/axios/issues/6243">#6243</a>)
(<a
href="2656612bc1">2656612</a>)</li>
<li><strong>import:</strong> use named export for EventEmitter; (<a
href="7320430aef">7320430</a>)</li>
<li><strong>vulnerability:</strong> update follow-redirects to 1.15.6
(<a
href="https://redirect.github.com/axios/axios/issues/6300">#6300</a>)
(<a
href="8786e0ff55">8786e0f</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a href="https://github.com/jasonsaayman"
title="+4572/-3446 ([#6238](https://github.com/axios/axios/issues/6238)
)">Jay</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+30/-0
([#6231](https://github.com/axios/axios/issues/6231) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/Creaous"
title="+9/-9 ([#6300](https://github.com/axios/axios/issues/6300)
)">Mitchell</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/mannoeu"
title="+2/-2 ([#6196](https://github.com/axios/axios/issues/6196)
)">Emmanuel</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/ljkeller"
title="+3/-0 ([#6194](https://github.com/axios/axios/issues/6194)
)">Lucas Keller</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/ADITYA-176"
title="+1/-1 ()">Aditya Mogili</a></li>
<li><!-- raw HTML omitted --> <a
href="https://github.com/petrovmiroslav" title="+1/-1
([#6243](https://github.com/axios/axios/issues/6243) )">Miroslav
Petrov</a></li>
</ul>
<h2><a
href="https://github.com/axios/axios/compare/v1.6.6...v1.6.7">1.6.7</a>
(2024-01-25)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>capture async stack only for rejections with native error objects;
(<a
href="https://redirect.github.com/axios/axios/issues/6203">#6203</a>)
(<a
href="1a08f90f40">1a08f90</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a
href="https://github.com/DigitalBrainJS" title="+30/-26
([#6203](https://github.com/axios/axios/issues/6203) )">Dmitriy
Mozgovoy</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/zh-lx"
title="+0/-3 ([#6186](https://github.com/axios/axios/issues/6186)
)">zhoulixiang</a></li>
</ul>
<h2><a
href="https://github.com/axios/axios/compare/v1.6.5...v1.6.6">1.6.6</a>
(2024-01-24)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fixed missed dispatchBeforeRedirect argument (<a
href="https://redirect.github.com/axios/axios/issues/5778">#5778</a>)
(<a
href="a1938ff073">a1938ff</a>)</li>
<li>wrap errors to improve async stack trace (<a
href="https://redirect.github.com/axios/axios/issues/5987">#5987</a>)
(<a
href="123f354b92">123f354</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li><!-- raw HTML omitted --> <a href="https://github.com/ikonst"
title="+91/-8 ([#5987](https://github.com/axios/axios/issues/5987)
)">Ilya Priven</a></li>
<li><!-- raw HTML omitted --> <a href="https://github.com/zaosoula"
title="+6/-6 ([#5778](https://github.com/axios/axios/issues/5778) )">Zao
Soula</a></li>
</ul>
<h2><a
href="https://github.com/axios/axios/compare/v1.6.4...v1.6.5">1.6.5</a>
(2024-01-05)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>ci:</strong> refactor notify action as a job of publish
action; (<a
href="https://redirect.github.com/axios/axios/issues/6176">#6176</a>)
(<a
href="0736f95ce8">0736f95</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ab3f0f9a94"><code>ab3f0f9</code></a>
chore(release): v1.6.8 (<a
href="https://redirect.github.com/axios/axios/issues/6303">#6303</a>)</li>
<li><a
href="2656612bc1"><code>2656612</code></a>
fix(AxiosHeaders): fix AxiosHeaders conversion to an object during
config mer...</li>
<li><a
href="7320430aef"><code>7320430</code></a>
fix(import): use named export for EventEmitter;</li>
<li><a
href="8786e0ff55"><code>8786e0f</code></a>
fix(vulnerability): update follow-redirects to 1.15.6 (<a
href="https://redirect.github.com/axios/axios/issues/6300">#6300</a>)</li>
<li><a
href="d844227411"><code>d844227</code></a>
chore: update and bump deps (<a
href="https://redirect.github.com/axios/axios/issues/6238">#6238</a>)</li>
<li><a
href="caa0625201"><code>caa0625</code></a>
docs: update README responseEncoding types (<a
href="https://redirect.github.com/axios/axios/issues/6194">#6194</a>)</li>
<li><a
href="41c4584a41"><code>41c4584</code></a>
docs: Update README.md to point to current axios version in CDN links
(<a
href="https://redirect.github.com/axios/axios/issues/6196">#6196</a>)</li>
<li><a
href="bf6974f16a"><code>bf6974f</code></a>
chore(ci): add npm tag action; (<a
href="https://redirect.github.com/axios/axios/issues/6231">#6231</a>)</li>
<li><a
href="a52e4d9af5"><code>a52e4d9</code></a>
chore(release): v1.6.7 (<a
href="https://redirect.github.com/axios/axios/issues/6204">#6204</a>)</li>
<li><a
href="2b69888dd5"><code>2b69888</code></a>
chore: remove unnecessary check (<a
href="https://redirect.github.com/axios/axios/issues/6186">#6186</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/axios/axios/compare/v0.25.0...v1.6.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=axios&package-manager=npm_and_yarn&previous-version=0.25.0&new-version=1.6.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-10 12:56:54 +10:00
zhexu14
8aa38a83ff Bump version to 12 (#3370)
Bump changelog, bug reports and version.py to appropriate values now
that 11 is released.
2024-04-10 12:54:26 +10:00
dependabot[bot]
7d5bb0356f Bump pillow from 10.2.0 to 10.3.0 (#3366)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to
10.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python-pillow/Pillow/releases">pillow's
releases</a>.</em></p>
<blockquote>
<h2>10.3.0</h2>
<p><a
href="https://pillow.readthedocs.io/en/stable/releasenotes/10.3.0.html">https://pillow.readthedocs.io/en/stable/releasenotes/10.3.0.html</a></p>
<h2>Changes</h2>
<ul>
<li>CVE-2024-28219: Use strncpy to avoid buffer overflow <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7928">#7928</a>
[<a href="https://github.com/hugovk"><code>@​hugovk</code></a>]</li>
<li>Use <code>functools.lru_cache</code> for <code>hopper()</code> <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7912">#7912</a>
[<a href="https://github.com/hugovk"><code>@​hugovk</code></a>]</li>
<li>Raise ValueError if seeking to greater than offset-sized integer in
TIFF <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7883">#7883</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Improve speed of loading QOI images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7925">#7925</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added RGB to I;16N conversion <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7920">#7920</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Add --report argument to <strong>main</strong>.py to omit supported
formats <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7818">#7818</a>
[<a href="https://github.com/nulano"><code>@​nulano</code></a>]</li>
<li>Added RGB to I;16, I;16L and I;16B conversion <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7918">#7918</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Fix editable installation with custom build backend and
configuration options <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7658">#7658</a>
[<a href="https://github.com/nulano"><code>@​nulano</code></a>]</li>
<li>Fix putdata() for I;16N on big-endian <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7209">#7209</a>
[<a href="https://github.com/Yay295"><code>@​Yay295</code></a>]</li>
<li>Determine MPO size from markers, not EXIF data <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7884">#7884</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Improved conversion from RGB to RGBa, LA and La <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7888">#7888</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Support FITS images with GZIP_1 compression <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7894">#7894</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Use I;16 mode for 9-bit JPEG 2000 images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7900">#7900</a>
[<a
href="https://github.com/scaramallion"><code>@​scaramallion</code></a>]</li>
<li>Raise ValueError if kmeans is negative <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7891">#7891</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Remove TIFF tag OSUBFILETYPE when saving using libtiff <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7893">#7893</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Raise ValueError for negative values when loading P1-P3 PPM images
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/7882">#7882</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added reading of JPEG2000 palettes <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7870">#7870</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added alpha_quality argument when saving WebP images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7872">#7872</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Fixed joined corners for ImageDraw rounded_rectangle() non-integer
dimensions <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7881">#7881</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Removed Python and NumPy pinning on Cygwin <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7880">#7880</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update UnidentifiedImageError and <strong>version</strong> imports
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/7644">#7644</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Stop reading EPS image at EOF marker <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7753">#7753</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>PSD layer co-ordinates may be negative <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7706">#7706</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Use subprocess with CREATE_NO_WINDOW flag in ImageShow WindowsViewer
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/7791">#7791</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>When saving GIF frame that restores to background color, do not fill
identical pixels <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7788">#7788</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Fixed reading PNG iCCP compression method <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7823">#7823</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Allow writing IFDRational to UNDEFINED tag <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7840">#7840</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Fix logged tag name when loading Exif data <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7842">#7842</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Use maximum frame size in IHDR chunk when saving APNG images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7821">#7821</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Prevent opening P TGA images without a palette <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7797">#7797</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Use palette when loading ICO images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7798">#7798</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Use consistent arguments for load_read and load_seek <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7713">#7713</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Turn off nullability warnings for macOS SDK <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7827">#7827</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Fix shift-sign issue in Convert.c <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7838">#7838</a>
[<a href="https://github.com/r-barnes"><code>@​r-barnes</code></a>]</li>
<li>winbuild: Refactor dependency versions into constants <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7843">#7843</a>
[<a href="https://github.com/hugovk"><code>@​hugovk</code></a>]</li>
<li>Build macOS arm64 wheels natively <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7852">#7852</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Fixed typo <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7855">#7855</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Open 16-bit grayscale PNGs as I;16 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7849">#7849</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Handle truncated chunks at the end of PNG images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7709">#7709</a>
[<a href="https://github.com/lajiyuan"><code>@​lajiyuan</code></a>]</li>
<li>Match mask size to pasted image size in GifImagePlugin <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7779">#7779</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Changed SupportsGetMesh protocol to be public <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7841">#7841</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Release GIL while calling <code>WebPAnimDecoderGetNext</code> <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7782">#7782</a>
[<a
href="https://github.com/evanmiller"><code>@​evanmiller</code></a>]</li>
<li>Fixed reading FLI/FLC images with a prefix chunk <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7804">#7804</a>
[<a href="https://github.com/twolife"><code>@​twolife</code></a>]</li>
<li>Updated package name for Tidelift <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7810">#7810</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Removed unused code <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7744">#7744</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst">pillow's
changelog</a>.</em></p>
<blockquote>
<h2>10.3.0 (2024-04-01)</h2>
<ul>
<li>
<p>CVE-2024-28219: Use <code>strncpy</code> to avoid buffer overflow <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7928">#7928</a>
[radarhere, hugovk]</p>
</li>
<li>
<p>Deprecate <code>eval()</code>, replacing it with
<code>lambda_eval()</code> and <code>unsafe_eval()</code> <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7927">#7927</a>
[radarhere, hugovk]</p>
</li>
<li>
<p>Raise <code>ValueError</code> if seeking to greater than offset-sized
integer in TIFF <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7883">#7883</a>
[radarhere]</p>
</li>
<li>
<p>Add <code>--report</code> argument to <code>__main__.py</code> to
omit supported formats <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7818">#7818</a>
[nulano, radarhere, hugovk]</p>
</li>
<li>
<p>Added RGB to I;16, I;16L, I;16B and I;16N conversion <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7918">#7918</a>,
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/7920">#7920</a>
[radarhere]</p>
</li>
<li>
<p>Fix editable installation with custom build backend and configuration
options <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7658">#7658</a>
[nulano, radarhere]</p>
</li>
<li>
<p>Fix putdata() for I;16N on big-endian <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7209">#7209</a>
[Yay295, hugovk, radarhere]</p>
</li>
<li>
<p>Determine MPO size from markers, not EXIF data <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7884">#7884</a>
[radarhere]</p>
</li>
<li>
<p>Improved conversion from RGB to RGBa, LA and La <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7888">#7888</a>
[radarhere]</p>
</li>
<li>
<p>Support FITS images with GZIP_1 compression <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7894">#7894</a>
[radarhere]</p>
</li>
<li>
<p>Use I;16 mode for 9-bit JPEG 2000 images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7900">#7900</a>
[scaramallion, radarhere]</p>
</li>
<li>
<p>Raise ValueError if kmeans is negative <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7891">#7891</a>
[radarhere]</p>
</li>
<li>
<p>Remove TIFF tag OSUBFILETYPE when saving using libtiff <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7893">#7893</a>
[radarhere]</p>
</li>
<li>
<p>Raise ValueError for negative values when loading P1-P3 PPM images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7882">#7882</a>
[radarhere]</p>
</li>
<li>
<p>Added reading of JPEG2000 palettes <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7870">#7870</a>
[radarhere]</p>
</li>
<li>
<p>Added alpha_quality argument when saving WebP images <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7872">#7872</a>
[radarhere]</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5c89d88eee"><code>5c89d88</code></a>
10.3.0 version bump</li>
<li><a
href="63cbfcfdea"><code>63cbfcf</code></a>
Update CHANGES.rst [ci skip]</li>
<li><a
href="2776126aa9"><code>2776126</code></a>
Merge pull request <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7928">#7928</a>
from python-pillow/lcms</li>
<li><a
href="aeb51cbb16"><code>aeb51cb</code></a>
Merge branch 'main' into lcms</li>
<li><a
href="5beb0b6664"><code>5beb0b6</code></a>
Update CHANGES.rst [ci skip]</li>
<li><a
href="cac6ffa7b3"><code>cac6ffa</code></a>
Merge pull request <a
href="https://redirect.github.com/python-pillow/Pillow/issues/7927">#7927</a>
from python-pillow/imagemath</li>
<li><a
href="f5eeeacf75"><code>f5eeeac</code></a>
Name as 'options' in lambda_eval and unsafe_eval, but '_dict' in
deprecated eval</li>
<li><a
href="facf3af93d"><code>facf3af</code></a>
Added release notes</li>
<li><a
href="2a93aba5cf"><code>2a93aba</code></a>
Use strncpy to avoid buffer overflow</li>
<li><a
href="a670597bc3"><code>a670597</code></a>
Update CHANGES.rst [ci skip]</li>
<li>Additional commits viewable in <a
href="https://github.com/python-pillow/Pillow/compare/10.2.0...10.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pillow&package-manager=pip&previous-version=10.2.0&new-version=10.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-10 12:42:45 +10:00
dependabot[bot]
143b775639 Bump express from 4.17.3 to 4.19.2 in /client (#3365)
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to
4.19.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/releases">express's
releases</a>.</em></p>
<blockquote>
<h2>4.19.2</h2>
<h2>What's Changed</h2>
<ul>
<li><a
href="0b746953c4">Improved
fix for open redirect allow list bypass</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.19.1...4.19.2">https://github.com/expressjs/express/compare/4.19.1...4.19.2</a></p>
<h2>4.19.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix ci after location patch by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5552">expressjs/express#5552</a></li>
<li>fixed un-edited version in history.md for 4.19.0 by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5556">expressjs/express#5556</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.19.0...4.19.1">https://github.com/expressjs/express/compare/4.19.0...4.19.1</a></p>
<h2>4.19.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix typo in release date by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5527">expressjs/express#5527</a></li>
<li>docs: nominating <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> to be
project captian by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5511">expressjs/express#5511</a></li>
<li>docs: loosen TC activity rules by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5510">expressjs/express#5510</a></li>
<li>Add note on how to update docs for new release by <a
href="https://github.com/crandmck"><code>@​crandmck</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5541">expressjs/express#5541</a></li>
<li><a
href="660ccf5fa3">Prevent
open redirect allow list bypass due to encodeurl</a></li>
<li>Release 4.19.0 by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5551">expressjs/express#5551</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/crandmck"><code>@​crandmck</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5541">expressjs/express#5541</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.18.3...4.19.0">https://github.com/expressjs/express/compare/4.18.3...4.19.0</a></p>
<h2>4.18.3</h2>
<h2>Main Changes</h2>
<ul>
<li>Fix routing requests without method</li>
<li>deps: body-parser@1.20.2
<ul>
<li>Fix strict json error message on Node.js 19+</li>
<li>deps: content-type@~1.0.5</li>
<li>deps: raw-body@2.5.2</li>
</ul>
</li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Use https: protocol instead of deprecated git: protocol by <a
href="https://github.com/vcsjones"><code>@​vcsjones</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5032">expressjs/express#5032</a></li>
<li>build: Node.js@16.18 and Node.js@18.12 by <a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5034">expressjs/express#5034</a></li>
<li>ci: update actions/checkout to v3 by <a
href="https://github.com/armujahid"><code>@​armujahid</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5027">expressjs/express#5027</a></li>
<li>test: remove unused function arguments in params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5124">expressjs/express#5124</a></li>
<li>Remove unused originalIndex from acceptParams by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5119">expressjs/express#5119</a></li>
<li>Fixed typos by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5117">expressjs/express#5117</a></li>
<li>examples: remove unused params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5113">expressjs/express#5113</a></li>
<li>fix: parameter str is not described in JSDoc by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5130">expressjs/express#5130</a></li>
<li>fix: typos in History.md by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5131">expressjs/express#5131</a></li>
<li>build : add Node.js@19.7 by <a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5028">expressjs/express#5028</a></li>
<li>test: remove unused function arguments in params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5137">expressjs/express#5137</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/blob/master/History.md">express's
changelog</a>.</em></p>
<blockquote>
<h1>4.19.2 / 2024-03-25</h1>
<ul>
<li>Improved fix for open redirect allow list bypass</li>
</ul>
<h1>4.19.1 / 2024-03-20</h1>
<ul>
<li>Allow passing non-strings to res.location with new encoding handling
checks</li>
</ul>
<h1>4.19.0 / 2024-03-20</h1>
<ul>
<li>Prevent open redirect allow list bypass due to encodeurl</li>
<li>deps: cookie@0.6.0</li>
</ul>
<h1>4.18.3 / 2024-02-29</h1>
<ul>
<li>Fix routing requests without method</li>
<li>deps: body-parser@1.20.2
<ul>
<li>Fix strict json error message on Node.js 19+</li>
<li>deps: content-type@~1.0.5</li>
<li>deps: raw-body@2.5.2</li>
</ul>
</li>
<li>deps: cookie@0.6.0
<ul>
<li>Add <code>partitioned</code> option</li>
</ul>
</li>
</ul>
<h1>4.18.2 / 2022-10-08</h1>
<ul>
<li>Fix regression routing a large stack in a single route</li>
<li>deps: body-parser@1.20.1
<ul>
<li>deps: qs@6.11.0</li>
<li>perf: remove unnecessary object clone</li>
</ul>
</li>
<li>deps: qs@6.11.0</li>
</ul>
<h1>4.18.1 / 2022-04-29</h1>
<ul>
<li>Fix hanging on large stack of sync routes</li>
</ul>
<h1>4.18.0 / 2022-04-25</h1>
<ul>
<li>Add &quot;root&quot; option to <code>res.download</code></li>
<li>Allow <code>options</code> without <code>filename</code> in
<code>res.download</code></li>
<li>Deprecate string and non-integer arguments to
<code>res.status</code></li>
<li>Fix behavior of <code>null</code>/<code>undefined</code> as
<code>maxAge</code> in <code>res.cookie</code></li>
<li>Fix handling very large stacks of sync middleware</li>
<li>Ignore <code>Object.prototype</code> values in settings through
<code>app.set</code>/<code>app.get</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="04bc62787b"><code>04bc627</code></a>
4.19.2</li>
<li><a
href="da4d763ff6"><code>da4d763</code></a>
Improved fix for open redirect allow list bypass</li>
<li><a
href="4f0f6cc67d"><code>4f0f6cc</code></a>
4.19.1</li>
<li><a
href="a003cfab03"><code>a003cfa</code></a>
Allow passing non-strings to res.location with new encoding handling
checks f...</li>
<li><a
href="a1fa90fcea"><code>a1fa90f</code></a>
fixed un-edited version in history.md for 4.19.0</li>
<li><a
href="11f2b1db22"><code>11f2b1d</code></a>
build: fix build due to inconsistent supertest behavior in older
versions</li>
<li><a
href="084e36506a"><code>084e365</code></a>
4.19.0</li>
<li><a
href="0867302ddb"><code>0867302</code></a>
Prevent open redirect allow list bypass due to encodeurl</li>
<li><a
href="567c9c665d"><code>567c9c6</code></a>
Add note on how to update docs for new release (<a
href="https://redirect.github.com/expressjs/express/issues/5541">#5541</a>)</li>
<li><a
href="69a4cf2819"><code>69a4cf2</code></a>
deps: cookie@0.6.0</li>
<li>Additional commits viewable in <a
href="https://github.com/expressjs/express/compare/4.17.3...4.19.2">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~wesleytodd">wesleytodd</a>, a new releaser
for express since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=express&package-manager=npm_and_yarn&previous-version=4.17.3&new-version=4.19.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-29 22:44:03 +01:00
dependabot[bot]
f296925c22 Bump webpack-dev-middleware from 5.3.1 to 5.3.4 in /client (#3363)
Bumps
[webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware)
from 5.3.1 to 5.3.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-dev-middleware/releases">webpack-dev-middleware's
releases</a>.</em></p>
<blockquote>
<h2>v5.3.4</h2>
<h3><a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4">5.3.4</a>
(2024-03-20)</h3>
<h3>Bug Fixes</h3>
<ul>
<li><strong>security:</strong> do not allow to read files above (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1779">#1779</a>)
(<a
href="189c4ac7d2">189c4ac</a>)</li>
</ul>
<h2>v5.3.3</h2>
<h3><a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.2...v5.3.3">5.3.3</a>
(2022-05-18)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>types for <code>Request</code> and <code>Response</code> (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1271">#1271</a>)
(<a
href="eeb8aa8b11">eeb8aa8</a>)</li>
</ul>
<h2>v5.3.2</h2>
<h3><a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.1...v5.3.2">5.3.2</a>
(2022-05-17)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>node types (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1195">#1195</a>)
(<a
href="d68ab3607a">d68ab36</a>)</li>
<li>compatibility with Node.js 18</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md">webpack-dev-middleware's
changelog</a>.</em></p>
<blockquote>
<h3><a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4">5.3.4</a>
(2024-03-20)</h3>
<h3>Bug Fixes</h3>
<ul>
<li><strong>security:</strong> do not allow to read files above (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1779">#1779</a>)
(<a
href="189c4ac7d2">189c4ac</a>)</li>
</ul>
<h3><a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.2...v5.3.3">5.3.3</a>
(2022-05-18)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>types for <code>Request</code> and <code>Response</code> (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1271">#1271</a>)
(<a
href="eeb8aa8b11">eeb8aa8</a>)</li>
</ul>
<h3><a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.1...v5.3.2">5.3.2</a>
(2022-05-17)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>node types (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1195">#1195</a>)
(<a
href="d68ab3607a">d68ab36</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="86071ead69"><code>86071ea</code></a>
chore(release): 5.3.4</li>
<li><a
href="189c4ac7d2"><code>189c4ac</code></a>
fix(security): do not allow to read files above (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1779">#1779</a>)</li>
<li><a
href="f3c62b8176"><code>f3c62b8</code></a>
chore(release): 5.3.3</li>
<li><a
href="eeb8aa8b11"><code>eeb8aa8</code></a>
fix: types for <code>Request</code> and <code>Response</code> (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1271">#1271</a>)</li>
<li><a
href="1a45388bcf"><code>1a45388</code></a>
chore(release): 5.3.2</li>
<li><a
href="b8fb945b1b"><code>b8fb945</code></a>
chore(deps): memfs force update (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1269">#1269</a>)</li>
<li><a
href="f88067d31f"><code>f88067d</code></a>
chore: update deps and ci (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1260">#1260</a>)</li>
<li><a
href="71863189d8"><code>7186318</code></a>
chore(deps-dev): bump <code>@​commitlint/cli</code></li>
<li><a
href="57c50ef1b6"><code>57c50ef</code></a>
ci: update <code>checkout</code>, <code>setup-node</code>, and
<code>codecov</code> actions (<a
href="https://redirect.github.com/webpack/webpack-dev-middleware/issues/1267">#1267</a>)</li>
<li><a
href="840146a501"><code>840146a</code></a>
chore(deps-dev): bump <code>@​babel/preset-env</code></li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack-dev-middleware/compare/v5.3.1...v5.3.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=webpack-dev-middleware&package-manager=npm_and_yarn&previous-version=5.3.1&new-version=5.3.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-29 22:42:27 +01:00
dependabot[bot]
dfe0c0b315 Bump black from 23.11.0 to 24.3.0 (#3361)
Bumps [black](https://github.com/psf/black) from 23.11.0 to 24.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/releases">black's
releases</a>.</em></p>
<blockquote>
<h2>24.3.0</h2>
<h3>Highlights</h3>
<p>This release is a milestone: it fixes Black's first CVE security
vulnerability. If you
run Black on untrusted input, or if you habitually put thousands of
leading tab
characters in your docstrings, you are strongly encouraged to upgrade
immediately to fix
<a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21503">CVE-2024-21503</a>.</p>
<p>This release also fixes a bug in Black's AST safety check that
allowed Black to make
incorrect changes to certain f-strings that are valid in Python 3.12 and
higher.</p>
<h3>Stable style</h3>
<ul>
<li>Don't move comments along with delimiters, which could cause crashes
(<a
href="https://redirect.github.com/psf/black/issues/4248">#4248</a>)</li>
<li>Strengthen AST safety check to catch more unsafe changes to strings.
Previous versions
of Black would incorrectly format the contents of certain unusual
f-strings containing
nested strings with the same quote type. Now, Black will crash on such
strings until
support for the new f-string syntax is implemented. (<a
href="https://redirect.github.com/psf/black/issues/4270">#4270</a>)</li>
<li>Fix a bug where line-ranges exceeding the last code line would not
work as expected
(<a
href="https://redirect.github.com/psf/black/issues/4273">#4273</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Fix catastrophic performance on docstrings that contain large
numbers of leading tab
characters. This fixes
<a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21503">CVE-2024-21503</a>.
(<a
href="https://redirect.github.com/psf/black/issues/4278">#4278</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Note what happens when <code>--check</code> is used with
<code>--quiet</code> (<a
href="https://redirect.github.com/psf/black/issues/4236">#4236</a>)</li>
</ul>
<h2>24.2.0</h2>
<h3>Stable style</h3>
<ul>
<li>Fixed a bug where comments where mistakenly removed along with
redundant parentheses
(<a
href="https://redirect.github.com/psf/black/issues/4218">#4218</a>)</li>
</ul>
<h3>Preview style</h3>
<ul>
<li>Move the <code>hug_parens_with_braces_and_square_brackets</code>
feature to the unstable style
due to an outstanding crash and proposed formatting tweaks (<a
href="https://redirect.github.com/psf/black/issues/4198">#4198</a>)</li>
<li>Fixed a bug where base expressions caused inconsistent formatting of
** in tenary
expression (<a
href="https://redirect.github.com/psf/black/issues/4154">#4154</a>)</li>
<li>Checking for newline before adding one on docstring that is almost
at the line limit
(<a
href="https://redirect.github.com/psf/black/issues/4185">#4185</a>)</li>
<li>Remove redundant parentheses in <code>case</code> statement
<code>if</code> guards (<a
href="https://redirect.github.com/psf/black/issues/4214">#4214</a>).</li>
</ul>
<h3>Configuration</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/blob/main/CHANGES.md">black's
changelog</a>.</em></p>
<blockquote>
<h2>24.3.0</h2>
<h3>Highlights</h3>
<p>This release is a milestone: it fixes Black's first CVE security
vulnerability. If you
run Black on untrusted input, or if you habitually put thousands of
leading tab
characters in your docstrings, you are strongly encouraged to upgrade
immediately to fix
<a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21503">CVE-2024-21503</a>.</p>
<p>This release also fixes a bug in Black's AST safety check that
allowed Black to make
incorrect changes to certain f-strings that are valid in Python 3.12 and
higher.</p>
<h3>Stable style</h3>
<ul>
<li>Don't move comments along with delimiters, which could cause crashes
(<a
href="https://redirect.github.com/psf/black/issues/4248">#4248</a>)</li>
<li>Strengthen AST safety check to catch more unsafe changes to strings.
Previous versions
of Black would incorrectly format the contents of certain unusual
f-strings containing
nested strings with the same quote type. Now, Black will crash on such
strings until
support for the new f-string syntax is implemented. (<a
href="https://redirect.github.com/psf/black/issues/4270">#4270</a>)</li>
<li>Fix a bug where line-ranges exceeding the last code line would not
work as expected
(<a
href="https://redirect.github.com/psf/black/issues/4273">#4273</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Fix catastrophic performance on docstrings that contain large
numbers of leading tab
characters. This fixes
<a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21503">CVE-2024-21503</a>.
(<a
href="https://redirect.github.com/psf/black/issues/4278">#4278</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Note what happens when <code>--check</code> is used with
<code>--quiet</code> (<a
href="https://redirect.github.com/psf/black/issues/4236">#4236</a>)</li>
</ul>
<h2>24.2.0</h2>
<h3>Stable style</h3>
<ul>
<li>Fixed a bug where comments where mistakenly removed along with
redundant parentheses
(<a
href="https://redirect.github.com/psf/black/issues/4218">#4218</a>)</li>
</ul>
<h3>Preview style</h3>
<ul>
<li>Move the <code>hug_parens_with_braces_and_square_brackets</code>
feature to the unstable style
due to an outstanding crash and proposed formatting tweaks (<a
href="https://redirect.github.com/psf/black/issues/4198">#4198</a>)</li>
<li>Fixed a bug where base expressions caused inconsistent formatting of
** in tenary
expression (<a
href="https://redirect.github.com/psf/black/issues/4154">#4154</a>)</li>
<li>Checking for newline before adding one on docstring that is almost
at the line limit
(<a
href="https://redirect.github.com/psf/black/issues/4185">#4185</a>)</li>
<li>Remove redundant parentheses in <code>case</code> statement
<code>if</code> guards (<a
href="https://redirect.github.com/psf/black/issues/4214">#4214</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="552baf8229"><code>552baf8</code></a>
Prepare release 24.3.0 (<a
href="https://redirect.github.com/psf/black/issues/4279">#4279</a>)</li>
<li><a
href="f000936726"><code>f000936</code></a>
Fix catastrophic performance in lines_with_leading_tabs_expanded() (<a
href="https://redirect.github.com/psf/black/issues/4278">#4278</a>)</li>
<li><a
href="7b5a657285"><code>7b5a657</code></a>
Fix --line-ranges behavior when ranges are at EOF (<a
href="https://redirect.github.com/psf/black/issues/4273">#4273</a>)</li>
<li><a
href="1abcffc818"><code>1abcffc</code></a>
Use regex where we ignore case on windows (<a
href="https://redirect.github.com/psf/black/issues/4252">#4252</a>)</li>
<li><a
href="719e67462c"><code>719e674</code></a>
Fix 4227: Improve documentation for --quiet --check (<a
href="https://redirect.github.com/psf/black/issues/4236">#4236</a>)</li>
<li><a
href="e5510afc06"><code>e5510af</code></a>
update plugin url for Thonny (<a
href="https://redirect.github.com/psf/black/issues/4259">#4259</a>)</li>
<li><a
href="6af7d11096"><code>6af7d11</code></a>
Fix AST safety check false negative (<a
href="https://redirect.github.com/psf/black/issues/4270">#4270</a>)</li>
<li><a
href="f03ee113c9"><code>f03ee11</code></a>
Ensure <code>blib2to3.pygram</code> is initialized before use (<a
href="https://redirect.github.com/psf/black/issues/4224">#4224</a>)</li>
<li><a
href="e4bfedbec2"><code>e4bfedb</code></a>
fix: Don't move comments while splitting delimiters (<a
href="https://redirect.github.com/psf/black/issues/4248">#4248</a>)</li>
<li><a
href="d0287e1f75"><code>d0287e1</code></a>
Make trailing comma logic more concise (<a
href="https://redirect.github.com/psf/black/issues/4202">#4202</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/black/compare/23.11.0...24.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=23.11.0&new-version=24.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 22:05:57 +11:00
zhexu14
bd5087b3c7 Update changelog, contributors list for Superhornet mod support (#3362)
Update changelog, contributors list for Superhornet mod support
2024-03-21 22:05:33 +11:00
Chilli935
88ebb8b612 FA18EFG mod support Patch 4 (#3340)
- Corrected banner file types.
- Corrected australia_2005.yaml and usn_2005.yaml
- Added australia_2009.yaml and usn_2009.yaml
2024-03-21 21:52:34 +11:00
dependabot[bot]
63702f859d Bump follow-redirects from 1.15.4 to 1.15.6 in /client (#3359)
Bumps
[follow-redirects](https://github.com/follow-redirects/follow-redirects)
from 1.15.4 to 1.15.6.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="35a517c586"><code>35a517c</code></a>
Release version 1.15.6 of the npm package.</li>
<li><a
href="c4f847f851"><code>c4f847f</code></a>
Drop Proxy-Authorization across hosts.</li>
<li><a
href="8526b4a1b2"><code>8526b4a</code></a>
Use GitHub for disclosure.</li>
<li><a
href="b1677ce001"><code>b1677ce</code></a>
Release version 1.15.5 of the npm package.</li>
<li><a
href="d8914f7982"><code>d8914f7</code></a>
Preserve fragment in responseUrl.</li>
<li>See full diff in <a
href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.4&new-version=1.15.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-17 22:29:19 +11:00
zhexu14
cc5e2ba26c Update pydcs (#3360)
This PR updates pydcs version to fix issues from the DCS 2.9.3.51704
export.
2024-03-17 20:52:36 +11:00
zhexu14
b0a8d53fa6 Beacon update (#3357)
This PR cherry-picks some DCS-update related changes from Retribution
fork:
- Updates to beacon information 
- Fixes to script used to import beacons.

---------

Authored-by: Raffson <Raffson@users.noreply.github.com>
2024-03-16 10:51:41 +11:00
zhexu14
77b7f777f6 Issue 3337 (#3356)
This PR addresses #3337 by:
- Updating the UI to identify that a destroyed carrier/LHA as "Sunk"
- Fall back on targeting other groups in the NavalControlPoint (e.g.
escorts if present) if the carrier/LHA is sunk.
2024-03-15 22:33:25 +11:00
zhexu14
e59da610e9 resources: reformat yaml files to be friendly to git (#3354)
This PR reformats some yaml files to be more friendly to Git. No
contents have been changed.
2024-03-09 17:31:31 +11:00
Starfire13
b61310d229 Update Starfire's campaigns (#3352)
This updates all ten of my campaigns with the improvements I made for
the Retribution versions. There are Retribution-specific units and
trigger zones in the miz templates, but I've tested them and they don't
appear to cause any issues (since Liberation will just ignore the
unknown units and trigger zones). This will make things easier for me in
the future, because then I don't have to maintain two separate sets of
the same campaign files.

The changes include a total redo of supply routes for better convoy
on-road pathing, as well as a balance pass for squadron distribution and
strength.

I have also made a slight edit to one of my faction files to fix a typo.
2024-03-09 15:19:38 +11:00
zhexu14
6550400604 Track damage (#3351)
This PR partially addresses #3313 by:
- Tracking DCS hit events and storing the unit hit point updates in
state.json
- Adding logic to kill aircraft when the hit points is reduced to 1, as
opposed to the DCS logic of hit points to 0. This behavior allows
Liberation to track deaths to parked aircraft, which are uncontrolled
and seem to have different damage logic in DCS.
- Tracking damage to TheaterGroundObjects across turns and killing the
unit when the unit's hitpoints reduces to 1 or lower.

Intention is to build on this PR by also tracking front line objects and
statics (buildings). However, larger refactoring is required and so
splitting those into a separate PR.
2024-03-09 15:07:38 +11:00
zhexu14
1ee1113e48 Bump starlette and fastapi versions (#3350)
Bump starlette to 0.35.1 and fastapi to 0.109.1 in one commit as they
depend on each other.
2024-03-08 22:30:02 +11:00
dependabot[bot]
01f22d6da7 Bump follow-redirects from 1.15.2 to 1.15.4 in /client (#3326)
Bumps
[follow-redirects](https://github.com/follow-redirects/follow-redirects)
from 1.15.2 to 1.15.4.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="65858205e5"><code>6585820</code></a>
Release version 1.15.4 of the npm package.</li>
<li><a
href="7a6567e16d"><code>7a6567e</code></a>
Disallow bracketed hostnames.</li>
<li><a
href="05629af696"><code>05629af</code></a>
Prefer native URL instead of deprecated url.parse.</li>
<li><a
href="1cba8e85fa"><code>1cba8e8</code></a>
Prefer native URL instead of legacy url.resolve.</li>
<li><a
href="72bc2a4229"><code>72bc2a4</code></a>
Simplify _processResponse error handling.</li>
<li><a
href="3d42aecdca"><code>3d42aec</code></a>
Add bracket tests.</li>
<li><a
href="bcbb096b32"><code>bcbb096</code></a>
Do not directly set Error properties.</li>
<li><a
href="192dbe7ce6"><code>192dbe7</code></a>
Release version 1.15.3 of the npm package.</li>
<li><a
href="bd8c81e4f3"><code>bd8c81e</code></a>
Fix resource leak on destroy.</li>
<li><a
href="9c728c314b"><code>9c728c3</code></a>
Split linting and testing.</li>
<li>Additional commits viewable in <a
href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.2&new-version=1.15.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 22:00:36 +11:00
dependabot[bot]
8e6893d550 Bump ip from 1.1.5 to 1.1.9 in /client (#3342)
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1ecbf2fd8c"><code>1ecbf2f</code></a>
1.1.9</li>
<li><a
href="6a3ada9b47"><code>6a3ada9</code></a>
lib: fixed CVE-2023-42282 and added unit test</li>
<li><a
href="5dc3b2f3f4"><code>5dc3b2f</code></a>
1.1.8</li>
<li><a
href="8e6f28b23a"><code>8e6f28b</code></a>
lib: even better node 6 support</li>
<li><a
href="088c9e5664"><code>088c9e5</code></a>
1.1.7</li>
<li><a
href="1a4ca35ddc"><code>1a4ca35</code></a>
lib: add back support for Node.js 6</li>
<li><a
href="af82ef42ad"><code>af82ef4</code></a>
1.1.6</li>
<li><a
href="dba19f6c0c"><code>dba19f6</code></a>
package: exclude test folder from publishing</li>
<li><a
href="7cd7f30991"><code>7cd7f30</code></a>
ci: use github workflows</li>
<li><a
href="4de50aec87"><code>4de50ae</code></a>
lib: node 18 support</li>
<li>See full diff in <a
href="https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ip&package-manager=npm_and_yarn&previous-version=1.1.5&new-version=1.1.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dcs-liberation/dcs_liberation/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 22:00:26 +11:00
zhexu14
fa9d5525c0 Update requirements.txt to point to a temporary build of pydcs that f… (#3349)
…ixes a bug with loading legacy missions like what Liberation ships with
for layouts
2024-03-07 22:01:40 +11:00
zhexu14
5127022910 Update README.md due to changes in URLs (#3348)
This PR updates a link in README.md.
2024-03-06 22:24:38 +11:00
138 changed files with 6717 additions and 794 deletions

View File

@@ -31,7 +31,7 @@ body:
If the bug was found in a development build, select "Development build"
and provide a link to the build in the field below.
options:
- 10.0.0
- 11.0.0
- Development build
- type: textarea
attributes:

View File

@@ -39,7 +39,7 @@ body:
If the bug was found in a development build, select "Development build"
and provide a link to the build in the field below.
options:
- 10.0.0
- 11.0.0
- Development build
- type: textarea
attributes:

View File

@@ -6,7 +6,7 @@ runs:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.11"
python-version: "3.11.4"
cache: pip
- name: Install environment

View File

@@ -17,11 +17,6 @@
DCS Liberation is a [DCS World](https://www.digitalcombatsimulator.com/en/products/world/) turn based single-player or co-op dynamic campaign.
It is an external program that generates full and complex DCS missions and manage a persistent combat environment.
**Note that DCS Liberation does not support the stable release of DCS. We can
only guarantee compatibility with either the open beta or the stable release,
and more people play the open beta. DCS stable _might_ work sometimes, but it's
untested, and we will be unable to fix any bugs unique to stable DCS.**
![Screenshot](https://user-images.githubusercontent.com/315852/120939254-0b4a9f80-c6cc-11eb-82f5-ce3f8d714bfe.png)
## Downloads

View File

@@ -1,13 +1,43 @@
# 11.1.0
Saves from 11.0.0 are compatible with 11.1.0. See Known Issues section for exceptions.
## Features/Improvements
* **[Engine]** Support for DCS 2.9.5.55300 including Heatblur F-4E.
## Fixes
* **[Campaign]** Fixed double counting of parked aircraft kills when DCS reports multiple kill events.
* **[Campaign]** Fixed error where frontline units are not re-deployed when multiple control points were captured in one turn or when control points are captured "out of order" using air-assault missions.
* **[Cheat Menu]** Re-deploy frontline units when using cheats to capture control points, so that cheats behave the same way as capturing a control point in-mission.
* **[Data]** Added FuSe-65 Early Warning Radar.
* **[Data]** Updated Peru 1995 and Germany 1944 factions.
* **[Flight Planning]** Theater refuelling flight plans (those not tied to a particular package) will remain on station for a longer period, specifically the desired mission duration + 30 minutes. By default, this increases the on-station time from 1 hour to 1.5 hours.
* **[Mission Generation]** Patched bug where Liberation crashed when aborting a turn when Fighter Sweep missions were planned.
* **[Radios]** Added radio setup for F-5E, F-86, Mi-8 and Mi-24.
* **[UI]** Naval control points (carriers, LHAs) can no longer be moved onto land.
## Known Issues
* When loading saves from 11.0, loadouts with AGM-45B (Imp), typically on A-4E-C mod, will have the AGM-45B replaced with an empty pylon due to changes in DCS for this weapon. The AGM-45A is not affected by this issue.
# 11.0.0
Saves from 10.x are not compatible with 11.0.0.
## Features/Improvements
* **[Engine]** Support for DCS 2.9.3.51704 Open Beta.
* **[Engine]** Support for DCS 2.9.3.51704.
* **[Campaign]** Improved tracking of parked aircraft deaths. Parked aircraft are now considered dead once sufficient damage is done, meaning guns, rockets and AGMs are viable weapons for OCA/Aircraft missions. Previously Liberation relied on DCS death tracking which required parked aircraft to be hit with more powerful weapons e.g. 2000lb bombs as they were uncontrolled.
* **[Campaign]** Track damage to theater ground objects across turns. Damage can accumulate across turns leading to death of the unit. This behavior only applies to SAMs, ships and other units that appear on the Liberation map. Frontline units and buildings are not tracked (yet).
* **[Mods]** F/A-18 E/F/G Super Hornet mod (v2.2.5) support added.
## Fixes
* **[Mission Generation]** When planning anti-ship missions against carriers or LHAs, target escorts (if present) if the carrier/LHA is sunk.
* **[UI]** Identify that a carrier or LHA is sunk instead of "damaged".
# 10.0.0
Saves from 9.x are not compatible with 10.0.0.

534
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = "DCS Liberation"
copyright = "2023, DCS Liberation Team"
copyright = "2024, DCS Liberation Team"
author = "DCS Liberation Team"
release = "11.0.0"
release = "11.1.0"
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

View File

@@ -17,7 +17,13 @@ class TheaterRefuelingFlightPlan(RefuelingFlightPlan):
@property
def patrol_duration(self) -> timedelta:
return timedelta(hours=1)
# Add 30 minutes to desired_player_mission_duration as TOTs for flights
# can sit up to this time. This extension means the tanker remains on
# station for the flights' return.
return (
self.flight.coalition.game.settings.desired_player_mission_duration
+ timedelta(minutes=30)
)
class Builder(IBuilder[TheaterRefuelingFlightPlan, PatrollingLayout]):

View File

@@ -34,6 +34,9 @@ from game.radio.channels import (
ViggenRadioChannelAllocator,
ViperChannelNamer,
WarthogChannelNamer,
PhantomChannelNamer,
HindChannelNamer,
HipChannelNamer,
)
from game.utils import (
Distance,
@@ -110,6 +113,9 @@ class RadioConfig:
"apache": ApacheChannelNamer,
"a10c-legacy": LegacyWarthogChannelNamer,
"a10c-ii": WarthogChannelNamer,
"phantom": PhantomChannelNamer,
"hind": HindChannelNamer,
"hip": HipChannelNamer,
}[config.get("namer", "default")]
@@ -498,9 +504,11 @@ class AircraftType(UnitType[Type[FlyingType]]):
patrol_altitude=patrol_config.altitude,
patrol_speed=patrol_config.speed,
max_mission_range=mission_range,
cruise_speed=knots(data["cruise_speed_kt_indicated"])
if "cruise_speed_kt_indicated" in data
else None,
cruise_speed=(
knots(data["cruise_speed_kt_indicated"])
if "cruise_speed_kt_indicated" in data
else None
),
fuel_consumption=fuel_consumption,
default_livery=data.get("default_livery"),
intra_flight_radio=radio_config.intra_flight,

View File

@@ -1,5 +1,5 @@
from __future__ import annotations
from abc import ABC
import itertools
import logging
from collections import defaultdict
@@ -9,7 +9,9 @@ from typing import (
Dict,
Iterator,
List,
Optional,
TYPE_CHECKING,
TypeVar,
Union,
)
from uuid import UUID
@@ -21,8 +23,10 @@ from game.theater import Airfield, ControlPoint
if TYPE_CHECKING:
from game import Game
from game.ato.flight import Flight
from game.dcs.unittype import UnitType
from game.sim.simulationresults import SimulationResults
from game.transfers import CargoShip
from game.theater import TheaterUnit
from game.unitmap import (
AirliftUnits,
ConvoyUnit,
@@ -90,6 +94,103 @@ class BaseCaptureEvent:
captured_by_player: bool
@dataclass
class UnitHitpointUpdate(ABC):
unit: Any
hit_points: int
@classmethod
def from_json(
cls, data: dict[str, Any], unit_map: UnitMap
) -> Optional[UnitHitpointUpdate]:
raise NotImplementedError()
def is_dead(self) -> bool:
# Use hit_points > 1 to indicate unit is alive, rather than >=1 (DCS logic) to account for uncontrolled units which often have a
# health floor of 1
if self.hit_points > 1:
return False
return True
def is_friendly(self, to_player: bool) -> bool:
raise NotImplementedError()
@dataclass
class FlyingUnitHitPointUpdate(UnitHitpointUpdate):
unit: FlyingUnit
@classmethod
def from_json(
cls, data: dict[str, Any], unit_map: UnitMap
) -> Optional[FlyingUnitHitPointUpdate]:
unit = unit_map.flight(data["name"])
if unit is None:
return None
return cls(unit, int(float(data["hit_points"])))
def is_friendly(self, to_player: bool) -> bool:
if to_player:
return self.unit.flight.departure.captured
return not self.unit.flight.departure.captured
@dataclass
class TheaterUnitHitPointUpdate(UnitHitpointUpdate):
unit: TheaterUnitMapping
@classmethod
def from_json(
cls, data: dict[str, Any], unit_map: UnitMap
) -> Optional[TheaterUnitHitPointUpdate]:
unit = unit_map.theater_units(data["name"])
if unit is None:
return None
if unit.theater_unit.unit_type is None:
logging.debug(
f"Ground unit {data['name']} does not have a valid unit type."
)
return None
if unit.theater_unit.hit_points is None:
logging.debug(f"Ground unit {data['name']} does not have hit_points set.")
return None
sim_hit_points = int(
float(data["hit_points"])
) # Hit points out of the sim i.e. new unit hit points - damage in this turn
previous_turn_hit_points = (
unit.theater_unit.hit_points
) # Hit points at the end of the previous turn
full_health_hit_points = (
unit.theater_unit.unit_type.hit_points
) # Hit points of a new unit
# Hit points left after damage this turn is subtracted from hit points at the end of the previous turn
new_hit_points = previous_turn_hit_points - (
full_health_hit_points - sim_hit_points
)
return cls(unit, new_hit_points)
def is_dead(self) -> bool:
# Some TheaterUnits can start with low health of around 1, make sure we don't always kill them off.
if (
self.unit.theater_unit.unit_type is not None
and self.unit.theater_unit.unit_type.hit_points is not None
and self.unit.theater_unit.unit_type.hit_points <= 1
):
return False
return super().is_dead()
def is_friendly(self, to_player: bool) -> bool:
return self.unit.theater_unit.ground_object.is_friendly(to_player)
def commit(self) -> None:
self.unit.theater_unit.hit_points = self.hit_points
@dataclass(frozen=True)
class StateData:
#: True if the mission ended. If False, the mission exited abnormally.
@@ -108,6 +209,10 @@ class StateData:
#: Mangled names of bases that were captured during the mission.
base_capture_events: List[str]
# List of descriptions of damage done to units. Each list element is a dict like the following
# {"name": "<damaged unit name>", "hit_points": <hit points as float>}
unit_hit_point_updates: List[dict[str, Any]]
@classmethod
def from_json(cls, data: Dict[str, Any], unit_map: UnitMap) -> StateData:
def clean_unit_list(unit_list: List[Any]) -> List[str]:
@@ -147,6 +252,7 @@ class StateData:
killed_ground_units=killed_ground_units,
destroyed_statics=data["destroyed_objects_positions"],
base_capture_events=data["base_capture_events"],
unit_hit_point_updates=data["unit_hit_point_updates"],
)
@@ -284,6 +390,25 @@ class Debriefing:
player_losses.append(aircraft)
else:
enemy_losses.append(aircraft)
# Keep track of damaged units that are counted as killed so we don't double count
# when DCS reports damage multiple times.
units_killed_by_damage = set()
for unit_data in self.state_data.unit_hit_point_updates:
damaged_unit = FlyingUnitHitPointUpdate.from_json(unit_data, self.unit_map)
if damaged_unit is None:
continue
if damaged_unit.is_dead():
# If unit already killed, nothing to do.
if unit_data["name"] in self.state_data.killed_aircraft:
continue
if unit_data["name"] in units_killed_by_damage:
continue
units_killed_by_damage.add(unit_data["name"])
if damaged_unit.is_friendly(to_player=True):
player_losses.append(damaged_unit.unit)
else:
enemy_losses.append(damaged_unit.unit)
return AirLosses(player_losses, enemy_losses)
def dead_ground_units(self) -> GroundLosses:
@@ -356,8 +481,29 @@ class Debriefing:
losses.enemy_airlifts.append(airlift_unit)
continue
for unit_data in self.state_data.unit_hit_point_updates:
damaged_unit = TheaterUnitHitPointUpdate.from_json(unit_data, self.unit_map)
if damaged_unit is None:
continue
if damaged_unit.is_dead():
if unit_data["name"] in self.state_data.killed_ground_units:
continue
if damaged_unit.is_friendly(to_player=True):
losses.player_ground_objects.append(damaged_unit.unit)
else:
losses.enemy_ground_objects.append(damaged_unit.unit)
return losses
def unit_hit_point_update_events(self) -> List[TheaterUnitHitPointUpdate]:
damaged_units = []
for unit_data in self.state_data.unit_hit_point_updates:
unit = TheaterUnitHitPointUpdate.from_json(unit_data, self.unit_map)
if unit is None:
continue
damaged_units.append(unit)
return damaged_units
def base_capture_events(self) -> List[BaseCaptureEvent]:
"""Keeps only the last instance of a base capture event for each base ID."""
blue_coalition_id = 2

View File

@@ -300,8 +300,11 @@ class Faction:
self.remove_aircraft("Su-57")
if not mod_settings.ov10a_bronco:
self.remove_aircraft("Bronco-OV-10A")
if not mod_settings.superhornet:
self.remove_aircraft("Super-Hornet")
if not mod_settings.fa18efg:
self.remove_aircraft("FA_18E")
self.remove_aircraft("FA_18F")
self.remove_aircraft("EA_18G")
# frenchpack
if not mod_settings.frenchpack:
self.remove_vehicle("AMX10RCR")

View File

@@ -20,8 +20,14 @@ class AntiShipIngressBuilder(PydcsWaypointBuilder):
group_names.append(target.name)
elif isinstance(target, NavalControlPoint):
carrier_name = target.get_carrier_group_name()
if carrier_name:
if carrier_name and self.mission.find_group(
carrier_name
): # Found a carrier, target it.
group_names.append(carrier_name)
else: # Could not find carrier/LHA, indicating it was sunk. Target other groups if present e.g. escorts.
for ground_object in target.ground_objects:
for group in ground_object.groups:
group_names.append(group.group_name)
else:
logging.error(
"Unexpected target type for anti-ship mission: %s",

View File

@@ -389,3 +389,51 @@ class WarthogChannelNamer(ChannelNamer):
@classmethod
def name(cls) -> str:
return "a10c-ii"
class PhantomChannelNamer(ChannelNamer):
"""Channel namer for the F4-E."""
@staticmethod
def channel_name(radio_id: int, channel_id: int) -> str:
radio_name = [
"COMM", # AN/ARC-164 COMM
"AUX", # AN/ARC-164 AUX
][radio_id - 1]
return f"{radio_name} Ch {channel_id}"
@classmethod
def name(cls) -> str:
return "phantom"
class HindChannelNamer(ChannelNamer):
"""Channel namer for Mi-24 Hind"""
@staticmethod
def channel_name(radio_id: int, channel_id: int) -> str:
radio_name = [
"R863",
"R828",
][radio_id - 1]
return f"{radio_name} Ch {channel_id-1}"
@classmethod
def name(cls) -> str:
return "hind"
class HipChannelNamer(ChannelNamer):
"""Channel namer for Mi-8 Hip"""
@staticmethod
def channel_name(radio_id: int, channel_id: int) -> str:
radio_name = [
"R863",
"R828",
][radio_id - 1]
return f"{radio_name} Ch {channel_id}"
@classmethod
def name(cls) -> str:
return "hip"

View File

@@ -1,4 +1,5 @@
"""Radio frequency types and allocators."""
from __future__ import annotations
import itertools
@@ -185,6 +186,7 @@ RADIOS: List[Radio] = [
),
),
Radio("AN/ARC-222", (RadioRange(MHz(116), MHz(152), MHz(1), Modulation.AM),)),
Radio("AN/ARC-27", (RadioRange(MHz(225), MHz(400), kHz(100), Modulation.AM),)),
Radio("SCR-522", (RadioRange(MHz(100), MHz(156), MHz(1), Modulation.AM),)),
Radio("A.R.I. 1063", (RadioRange(MHz(100), MHz(156), MHz(1), Modulation.AM),)),
Radio("BC-1206", (RadioRange(kHz(200), kHz(400), kHz(10), Modulation.AM),)),
@@ -292,6 +294,9 @@ RADIOS: List[Radio] = [
),
),
),
# Mi-8/Mi-24
Radio("R863", (RadioRange(MHz(220), MHz(400), kHz(25), Modulation.AM),)),
Radio("R828", (RadioRange(MHz(20), MHz(60), kHz(25), Modulation.FM),)),
]

View File

@@ -89,6 +89,11 @@ def set_destination(
detail=f"Cannot move {cp} more than "
f"{cp.max_move_distance.nautical_miles}nm.",
)
if cp.is_fleet and not game.theater.is_in_sea(point):
raise HTTPException(
status.HTTP_400_BAD_REQUEST,
detail=f"Cannot move naval control point {cp} onto land.",
)
cp.target_position = point
from .. import EventStream

View File

@@ -467,6 +467,12 @@ class Settings:
default=timedelta(minutes=60),
min=30,
max=150,
detail=(
"Period of time after the start of a turn where "
"there is coverage by one or more CAP flight(s), "
"refuelling flights not tied to a specific package are on station, "
"and other flights have their TOTs."
),
)
# Performance

View File

@@ -34,6 +34,7 @@ class MissionResultsProcessor:
self.commit_damaged_runways(debriefing)
self.commit_captures(debriefing, events)
self.commit_front_line_battle_impact(debriefing, events)
self.commit_unit_damage(debriefing)
self.record_carcasses(debriefing)
def commit_air_losses(self, debriefing: Debriefing) -> None:
@@ -307,42 +308,52 @@ class MissionResultsProcessor:
f"{enemy_cp.name}. {status_msg}",
)
@staticmethod
def commit_unit_damage(debriefing: Debriefing) -> None:
for damaged_unit in debriefing.unit_hit_point_update_events():
logging.info(
f"{damaged_unit.unit.theater_unit.name} damaged, setting hit points to {damaged_unit.hit_points}"
)
damaged_unit.commit()
def redeploy_units(self, cp: ControlPoint) -> None:
""" "
Auto redeploy units to newly captured base
"""
# Find the set of friendly CPs that can either contribute or receive frontline units
all_ally_connected_cps = cp.transitive_connected_friendly_points() + [cp]
ally_connected_cps = [
ocp for ocp in cp.connected_points if cp.captured == ocp.captured
]
enemy_connected_cps = [
ocp for ocp in cp.connected_points if cp.captured != ocp.captured
]
# Split into frontline CPs that are connected to enemy CPs and should receive units
# vs. non-frontline CPs that are not connected to enemy CPs and should send units.
frontline_cps = []
non_frontline_cps = []
for cp in all_ally_connected_cps:
is_frontline = False
for ocp in cp.connected_points:
if not ocp.captured:
is_frontline = True
break
if is_frontline:
frontline_cps.append(cp)
else:
non_frontline_cps.append(cp)
# If the newly captured cp does not have enemy connected cp,
# then it is not necessary to redeploy frontline units there.
if len(enemy_connected_cps) == 0:
# If there are no frontline CPs, then nothing to do.
if len(frontline_cps) == 0:
return
# From each ally cp, send reinforcements
for ally_cp in ally_connected_cps:
self.redeploy_between(cp, ally_cp)
# Equally split between all frontline CPs
move_factor = 1.0 / len(frontline_cps)
for non_frontline_cp in non_frontline_cps:
for frontline_cp in frontline_cps:
self.redeploy_between(frontline_cp, non_frontline_cp, move_factor)
def redeploy_between(self, destination: ControlPoint, source: ControlPoint) -> None:
def redeploy_between(
self, destination: ControlPoint, source: ControlPoint, move_factor: float
) -> None:
total_units_redeployed = 0
moved_units = {}
if source.has_active_frontline or not destination.captured:
# If there are still active front lines to defend at the
# transferring CP we should not transfer all units.
#
# Opfor also does not transfer all of their units.
# TODO: Balance the CPs rather than moving half from everywhere.
move_factor = 0.5
else:
# Otherwise we can move everything.
move_factor = 1
for frontline_unit, count in source.base.armor.items():
moved_units[frontline_unit] = int(count * move_factor)
total_units_redeployed = total_units_redeployed + int(count * move_factor)

View File

@@ -1283,7 +1283,10 @@ class NavalControlPoint(ControlPoint, ABC):
return RunwayStatus(damaged=not self.runway_is_operational())
def describe_runway_status(self) -> str:
return f"Flight deck {self.runway_status.describe()}"
if self.runway_is_operational():
return f"Flight deck {self.runway_status.describe()}"
# Special handling for not operational carriers/LHAs
return f"Sunk"
@property
def runway_can_be_repaired(self) -> bool:

View File

@@ -66,7 +66,7 @@ class ModSettings:
frenchpack: bool = False
high_digit_sams: bool = False
ov10a_bronco: bool = False
superhornet: bool = False
fa18efg: bool = False
def save_player_settings(self) -> None:
"""Saves the player's global settings to the user directory."""

View File

@@ -35,6 +35,8 @@ class TheaterUnit:
position: PointWithHeading
# The parent ground object
ground_object: TheaterGroundObject
# Number of hit points the unit has
hit_points: Optional[int] = None
# State of the unit, dead or alive
alive: bool = True
@@ -42,13 +44,17 @@ class TheaterUnit:
def from_template(
id: int, dcs_type: Type[DcsUnitType], t: LayoutUnit, go: TheaterGroundObject
) -> TheaterUnit:
return TheaterUnit(
unit = TheaterUnit(
id,
t.name,
dcs_type,
PointWithHeading.from_point(t.position, Heading.from_degrees(t.heading)),
go,
)
# if the TheaterUnit represents a GroundUnitType or ShipUnitType, initialize health to full hit points
if unit.unit_type is not None:
unit.hit_points = unit.unit_type.hit_points
return unit
@property
def unit_type(self) -> Optional[UnitType[Any]]:
@@ -70,14 +76,12 @@ class TheaterUnit:
@property
def display_name(self) -> str:
dead_label = " [DEAD]" if not self.alive else ""
unit_label = self.unit_type or self.type.name or self.name
return f"{str(self.id).zfill(4)} | {unit_label}{dead_label}"
return f"{str(self.id).zfill(4)} | {unit_label}{self._status_label()}"
@property
def short_name(self) -> str:
dead_label = " [DEAD]" if not self.alive else ""
return f"<b>{self.type.id[0:18]}</b> {dead_label}"
return f"<b>{self.type.id[0:18]}</b> {self._status_label()}"
@property
def is_static(self) -> bool:
@@ -117,6 +121,18 @@ class TheaterUnit:
unit_range = getattr(self.type, "threat_range", None)
return meters(unit_range if unit_range is not None and self.alive else 0)
def _status_label(self) -> str:
if not self.alive:
return " [DEAD]"
if self.unit_type is None:
return ""
if self.hit_points is None:
return ""
if self.unit_type.hit_points == self.hit_points:
return ""
damage_percentage = 100 - int(100 * self.hit_points / self.unit_type.hit_points)
return f" [DAMAGED {damage_percentage}%]"
class SceneryUnit(TheaterUnit):
"""Special TheaterUnit for handling scenery ground objects"""

View File

@@ -2,7 +2,7 @@ from pathlib import Path
MAJOR_VERSION = 11
MINOR_VERSION = 0
MINOR_VERSION = 1
MICRO_VERSION = 0
VERSION_NUMBER = ".".join(str(v) for v in (MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION))

View File

@@ -9,6 +9,7 @@ from .jas39 import *
from .ov10a import *
from .su57 import *
from .uh60l import *
from .fa18efg import *
def load_mods() -> None:

View File

@@ -1004,7 +1004,7 @@ class A_4E_C(PlaneType):
LAU3_WP156 = (1, Weapons.LAU3_WP156)
LAU3_HE151 = (1, Weapons.LAU3_HE151)
AGM_45A_Shrike_ARM = (1, Weapons.AGM_45A_Shrike_ARM)
AGM_45B_Shrike_ARM__Imp_ = (1, Weapons.AGM_45B_Shrike_ARM__Imp_)
AGM_45B_Shrike_ARM = (1, Weapons.AGM_45B_Shrike_ARM)
Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = (
1,
Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets,
@@ -1213,7 +1213,7 @@ class A_4E_C(PlaneType):
WeaponsA4EC._2_x_LAU_3_pod___19_x_2_75_Hydra__UnGd_Rkts_WTU_1_B__Practice__TER__,
)
AGM_45A_Shrike_ARM = (2, Weapons.AGM_45A_Shrike_ARM)
AGM_45B_Shrike_ARM__Imp_ = (2, Weapons.AGM_45B_Shrike_ARM__Imp_)
AGM_45B_Shrike_ARM = (2, Weapons.AGM_45B_Shrike_ARM)
Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = (
2,
Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets,
@@ -1850,7 +1850,7 @@ class A_4E_C(PlaneType):
WeaponsA4EC._2_x_LAU_3_pod___19_x_2_75_Hydra__UnGd_Rkts_WTU_1_B__Practice__TER___,
)
AGM_45A_Shrike_ARM = (4, Weapons.AGM_45A_Shrike_ARM)
AGM_45B_Shrike_ARM__Imp_ = (4, Weapons.AGM_45B_Shrike_ARM__Imp_)
AGM_45B_Shrike_ARM = (4, Weapons.AGM_45B_Shrike_ARM)
Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = (
4,
Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets,
@@ -2048,7 +2048,7 @@ class A_4E_C(PlaneType):
LAU3_WP156 = (5, Weapons.LAU3_WP156)
LAU3_HE151 = (5, Weapons.LAU3_HE151)
AGM_45A_Shrike_ARM = (5, Weapons.AGM_45A_Shrike_ARM)
AGM_45B_Shrike_ARM__Imp_ = (5, Weapons.AGM_45B_Shrike_ARM__Imp_)
AGM_45B_Shrike_ARM = (5, Weapons.AGM_45B_Shrike_ARM)
Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = (
5,
Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets,

View File

@@ -542,7 +542,7 @@ class VSN_F4C(PlaneType):
Weapons.BRU_42_with_3_x_Mk_82___500lb_GP_Bombs_LD,
)
Mk_84___2000lb_GP_Bomb_LD = (3, Weapons.Mk_84___2000lb_GP_Bomb_LD)
AGM_45B_Shrike_ARM__Imp_ = (3, Weapons.AGM_45B_Shrike_ARM__Imp_)
AGM_45B_Shrike_ARM = (3, Weapons.AGM_45B_Shrike_ARM)
AGM_45A_Shrike_ARM = (3, Weapons.AGM_45A_Shrike_ARM)
LAU_10_pod___4_x_127mm_ZUNI__UnGd_Rkts_Mk71__HE_FRAG = (
3,
@@ -653,7 +653,7 @@ class VSN_F4C(PlaneType):
Weapons.BRU_42_with_3_x_Mk_82___500lb_GP_Bombs_LD,
)
Mk_84___2000lb_GP_Bomb_LD = (9, Weapons.Mk_84___2000lb_GP_Bomb_LD)
AGM_45B_Shrike_ARM__Imp_ = (9, Weapons.AGM_45B_Shrike_ARM__Imp_)
AGM_45B_Shrike_ARM = (9, Weapons.AGM_45B_Shrike_ARM)
AGM_45A_Shrike_ARM = (9, Weapons.AGM_45A_Shrike_ARM)
LAU_10_pod___4_x_127mm_ZUNI__UnGd_Rkts_Mk71__HE_FRAG = (
9,

View File

@@ -0,0 +1 @@
from .fa18efg import *

File diff suppressed because it is too large Load Diff

View File

@@ -285,6 +285,7 @@ class SquadronConfigurationBox(QGroupBox):
)
self.player_list.setAcceptRichText(False)
self.player_list.setEnabled(squadron.player and squadron.aircraft.flyable)
self.player_list.setMaximumHeight(125)
left_column.addWidget(self.player_list)
button_row = QHBoxLayout()
@@ -664,7 +665,7 @@ class OverfullAirbasesDisplay(QGroupBox):
parent: QWidget | None = None,
) -> None:
super().__init__("Overfull airbases", parent)
self.setMaximumHeight(200)
self.setMaximumHeight(125)
self.parking_tracker = parking_tracker
self.parking_tracker.allocation_changed.connect(self.on_allocation_changed)
@@ -790,7 +791,7 @@ class AirWingConfigurationDialog(QDialog):
self.game = game
self.parking_tracker = AirWingConfigParkingTracker(game)
self.setMinimumSize(1024, 768)
self.resize(1024, 900)
self.setWindowTitle(f"Air Wing Configuration")
# TODO: self.setWindowIcon()

View File

@@ -493,6 +493,8 @@ class QLiberationWindow(QMainWindow):
"ColonelAkirNakesh",
"Nosajthedevil",
"kivipe",
"Chilli935",
"DillieKoe",
]
text = (
"<h3>DCS Liberation "

View File

@@ -16,6 +16,7 @@ from game import Game
from game.ato.flighttype import FlightType
from game.config import RUNWAY_REPAIR_COST
from game.server import EventStream
from game.sim.missionresultsprocessor import MissionResultsProcessor
from game.theater import (
AMMO_DEPOT_FRONTLINE_UNIT_CONTRIBUTION,
ControlPoint,
@@ -156,6 +157,9 @@ class QBaseMenu2(QDialog):
self.cp.capture(
self.game_model.game, events, for_player=not self.cp.captured
)
# Redeploy frontline units, as if the CP capture was done in mission.
results_processor = MissionResultsProcessor(self.game_model.game)
results_processor.redeploy_units(self.cp)
self.close()
@property

View File

@@ -127,6 +127,12 @@ class QFlightPayloadTab(QFrame):
scrolling_layout.addWidget(docsText)
self.setLayout(layout)
# Increase width of tab when there are long loadout names. Add 50px to loadout selector
# to account for padding around the selector.
width = max(
self.sizeHint().width(), self.loadout_selector.sizeHint().width() + 50
)
self.setMinimumWidth(width)
def resize_for_flight(self) -> None:
self.member_selector.setMaximum(self.flight.count - 1)

View File

@@ -83,7 +83,7 @@ class QFlightWaypointList(QTableView):
self.model.index(current_index, 0), QItemSelectionModel.Select
)
self.resizeColumnsToContents()
total_column_width = self.verticalHeader().width() + self.lineWidth()
total_column_width = self.verticalHeader().sizeHint().width() + self.lineWidth()
for i in range(0, self.model.columnCount()):
total_column_width += self.columnWidth(i) + self.lineWidth()
self.setFixedWidth(total_column_width)

View File

@@ -142,6 +142,10 @@ class NewGameWizard(QtWidgets.QWizard):
self.setWindowTitle("New Game")
# Resize wizard to the size of the largest page to keep size and position
# consistent.
self.resize(self.theater_page.sizeHint())
def accept(self):
logging.info("New Game Wizard accept")
logging.info("======================")
@@ -204,7 +208,7 @@ class NewGameWizard(QtWidgets.QWizard):
ov10a_bronco=self.field("ov10a_bronco"),
frenchpack=self.field("frenchpack"),
high_digit_sams=self.field("high_digit_sams"),
superhornet=self.field("superhornet"),
fa18efg=self.field("fa18efg"),
)
mod_settings.save_player_settings()
@@ -827,9 +831,9 @@ class GeneratorOptions(QtWidgets.QWizardPage):
high_digit_sams.setChecked(mod_settings.high_digit_sams)
self.registerField("high_digit_sams", high_digit_sams)
superhornet = QtWidgets.QCheckBox()
superhornet.setChecked(mod_settings.superhornet)
self.registerField("superhornet", superhornet)
fa18efg = QtWidgets.QCheckBox()
fa18efg.setChecked(mod_settings.fa18efg)
self.registerField("fa18efg", fa18efg)
modHelpText = QtWidgets.QLabel(
"<p>Select the mods you have installed. If your chosen factions support them, you'll be able to use these mods in your campaign.</p>"
@@ -883,8 +887,10 @@ class GeneratorOptions(QtWidgets.QWizardPage):
modLayout.addWidget(high_digit_sams, modLayout_row, 1)
modSettingsGroup.setLayout(modLayout)
modLayout_row += 1
modLayout.addWidget(QtWidgets.QLabel("Super Hornet"), modLayout_row, 0)
modLayout.addWidget(superhornet, modLayout_row, 1)
modLayout.addWidget(
QtWidgets.QLabel("F/A-18EFG Super Hornet (version 2.2.5)"), modLayout_row, 0
)
modLayout.addWidget(fa18efg, modLayout_row, 1)
modSettingsGroup.setLayout(modLayout)
modLayout_row += 1

View File

@@ -3,7 +3,7 @@ annotated-types==0.6.0
anyio==3.7.1
asgiref==3.7.2
attrs==23.1.0
black==23.11.0
black==24.3.0
certifi==2023.11.17
cfgv==3.4.0
click==8.1.7
@@ -12,15 +12,15 @@ coverage==7.3.2
distlib==0.3.7
exceptiongroup==1.2.0
Faker==20.1.0
fastapi==0.104.1
fastapi==0.109.1
filelock==3.13.1
future==0.18.3
h11==0.14.0
httptools==0.6.1
identify==2.5.32
idna==3.6
idna==3.7
iniconfig==2.0.0
Jinja2==3.1.3
Jinja2==3.1.4
MarkupSafe==2.1.3
mypy==1.7.1
mypy-extensions==1.0.0
@@ -29,14 +29,14 @@ numpy==1.26.2
packaging==23.2
pathspec==0.11.2
pefile==2023.2.7
Pillow==10.2.0
Pillow==10.3.0
platformdirs==4.0.0
pluggy==1.3.0
pre-commit==3.5.0
pydantic==2.5.2
pydantic-settings==2.1.0
pydantic_core==2.14.5
pydcs @ git+https://github.com/pydcs/dcs@7eeec23ea428846ebbbd0ea4c746f8eafea04e0d
pydcs @ git+https://github.com/dcs-liberation/dcs@b83c5a00bdda9719737ce61719a4d64a0dd4321c
pyinstaller==5.13.1
pyinstaller-hooks-contrib==2023.6
pyproj==3.6.1
@@ -54,7 +54,7 @@ shapely==2.0.2
shiboken6==6.4.1
six==1.16.0
sniffio==1.3.0
starlette==0.27.0
starlette==0.35.1
tabulate==0.9.0
tomli==2.0.1
types-Jinja2==2.11.9

View File

@@ -6,29 +6,29 @@ recommended_player_faction: USA 2005
recommended_enemy_faction: Private Military Company - Russian (Hard)
description:
<p><strong>Note:</strong> This campaign was designed for helicopters.</p><p>
Set against the rugged and windswept backdrop of the Falkland Islands,
this fictional campaign scenario unfolds with a dramatic dawn sneak attack
on RAF Mount Pleasant Airbase. Orchestrated by a Russia-backed private
military company, the deadly offensive with helicopter gunships and ground troops
has left the airbase's runways in ruins and its defences obliterated. This brutal
incursion resulted in significant casualties among the RAF personnel, with many
killed or wounded in the unexpected onslaught. The carrier HMS Queen Elizabeth and
its task force are on their way to evacuate the survivors and retake Mount Pleasant.
Set against the rugged and windswept backdrop of the Falkland Islands,
this fictional campaign scenario unfolds with a dramatic dawn sneak attack
on RAF Mount Pleasant Airbase. Orchestrated by a Russia-backed private
military company, the deadly offensive with helicopter gunships and ground troops
has left the airbase's runways in ruins and its defences obliterated. This brutal
incursion resulted in significant casualties among the RAF personnel, with many
killed or wounded in the unexpected onslaught. The carrier HMS Queen Elizabeth and
its task force are on their way to evacuate the survivors and retake Mount Pleasant.
However, they are eight days away at full steam.</p><p>
Amidst this chaos, a beacon of hope emerges in the heart of the Falklands. At Port
Stanley, a small detachment of US military personnel, including helicopter pilots
and armor units, find themselves inadvertently thrust into the fray. Originally at
Port Stanley for some R&R following a training exercise, these soldiers now face
an unexpected and urgent call to action. Their mission is daunting but clear - to
prevent the capture of Port Stanley and liberate East Falkland from the clutches
Amidst this chaos, a beacon of hope emerges in the heart of the Falklands. At Port
Stanley, a small detachment of US military personnel, including helicopter pilots
and armor units, find themselves inadvertently thrust into the fray. Originally at
Port Stanley for some R&R following a training exercise, these soldiers now face
an unexpected and urgent call to action. Their mission is daunting but clear - to
prevent the capture of Port Stanley and liberate East Falkland from the clutches
of the PMC forces.</p><p>
This small group must strategically push the PMC forces back through the treacherous
valley lying between Wickham Heights and the Onion Ranges, an area ominously known
as No Man's Land. Their plan involves a daring assault to destroy the enemy's
helicopter gunships stationed at San Carlos FOB. Following this, they aim to force
the PMC ground forces into a strategic retreat southward, along the 1.6 mile wide
isthmus into Lafonia. This calculated offensive is designed to create a defensible
position at Goose Green on the narrow isthmus, which can be held against a numerically
This small group must strategically destroy the PMC forces deployed around the treacherous
valley lying between Wickham Heights and the Onion Ranges, an area ominously known
as No Man's Land. Their plan involves a daring assault to destroy the enemy's
helicopter gunships stationed at San Carlos FOB. Following this, they aim to force
the PMC ground forces into a strategic retreat southward, along the 1.6 mile wide
isthmus into Lafonia. This offensive is designed to create a defensible position
at Goose Green on the narrow isthmus, which can be held against a numerically
superior force until the arrival of Big Lizzie.</p>
miz: battle_for_no_mans_land.miz
performance: 1
@@ -38,12 +38,12 @@ squadrons:
#Port Stanley
1:
- primary: DEAD
secondary: air-to-ground
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 6
- primary: BAI
secondary: air-to-ground
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 6
@@ -56,14 +56,15 @@ squadrons:
#San Carlos FOB
3:
- primary: BAI
secondary: air-to-ground
secondary: any
aircraft:
- Mi-24P Hind-F
size: 6
#Goose Green
24:
- primary: DEAD
secondary: air-to-ground
secondary: any
aircraft:
- Ka-50 Hokum III
- Ka-50 Hokum (Blackshark 3)
size: 6
size: 6

View File

@@ -8,7 +8,7 @@ recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 2010
recommended_start_date: 2004-01-07
miz: black_sea.miz
performance: 2
performance: 3
version: "11.0"
squadrons:
# Anapa-Vityazevo

View File

@@ -1,155 +1,174 @@
---
name: Sinai - Exercise Bright Star
theater: Sinai
authors: Starfire
recommended_player_faction: Bluefor Modern
recommended_enemy_faction: Egypt 2000s
description:
<p>For over 4 decades, the United States and Egypt have run a series of
biannual joint military exercises called Bright Star. Over the years, the
number of participating countries has grown substantially. Exercise Bright
Star 2025 boasts 8 participant nations and 14 observer nations. The United
States and a portion of the exercise coalition will play the part of a
fictional hostile nation dubbed Orangeland, staging a mock invasion against
Cairo. Israel, having for the first time accepted the invitation to observe,
is hosting the aggressor faction of the exercise coalition at its
airfields.</p>
miz: exercise_bright_star.miz
performance: 1
recommended_start_date: 2025-09-01
version: "11.0"
squadrons:
Blue CV-1:
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
size: 24
- primary: AEW&C
aircraft:
- E-2D Advanced Hawkeye
size: 2
- primary: Refueling
aircraft:
- S-3B Tanker
size: 4
Bombers from RAF Fairford:
- primary: Anti-ship
secondary: air-to-ground
aircraft:
- B-52H Stratofortress
size: 8
- primary: Strike
secondary: air-to-ground
aircraft:
- B-1B Lancer
size: 8
# Hatzerim (141)
7:
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
size: 6
- primary: Escort
secondary: any
aircraft:
- F-15C Eagle
size: 20
- primary: OCA/Runway
secondary: any
aircraft:
- F-15E Strike Eagle (Suite 4+)
size: 16
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
size: 20
- primary: BAI
secondary: any
aircraft:
- JF-17 Thunder
size: 16
- primary: BARCAP
secondary: any
aircraft:
- Mirage 2000C
size: 12
# Kedem
12:
- primary: Transport
secondary: any
aircraft:
- CH-47D
size: 20
- primary: Air Assault
secondary: any
aircraft:
- UH-60L
- UH-60A
size: 4
# Nevatim (106)
# 8:
# - primary: AEW&C
# aircraft:
# - E-3A
# size: 2
# - primary: Refueling
# aircraft:
# - KC-135 Stratotanker
# size: 2
# Melez (30)
5:
- primary: CAS
secondary: air-to-ground
aircraft:
- Ka-50 Hokum (Blackshark 3)
size: 4
- primary: BAI
secondary: any
aircraft:
- Mirage 2000C
size: 12
- primary: Escort
secondary: any
aircraft:
- MiG-21bis Fishbed-N
size: 12
# Wadi al Jandali (72)
13:
- primary: AEW&C
aircraft:
- E-2C Hawkeye
size: 2
- primary: SEAD
secondary: any
aircraft:
- F-4E Phantom II
size: 20
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
size: 20
- primary: Air Assault
secondary: any
aircraft:
- Mi-24P Hind-F
size: 4
- primary: OCA/Aircraft
secondary: any
aircraft:
- SA 342L Gazelle
size: 4
# Cairo West (95)
18:
- primary: Transport
aircraft:
- C-130
size: 8
- primary: BARCAP
secondary: air-to-air
aircraft:
- MiG-29S Fulcrum-C
---
name: Sinai - Exercise Bright Star
theater: Sinai
authors: Starfire
recommended_player_faction: Bluefor Modern
recommended_enemy_faction: Egypt 2000
description:
<p>For over four decades, the United States and Egypt have conducted a series
of biannual joint military exercises known as Bright Star. As the
geopolitical landscape has transformed, so too has the scope and scale of
Exercise Bright Star. The exercise has grown over the years to incorporate
a wide array of international participants. The 2025 iteration of
Exercise Bright Star features eight participating nations alongside
fourteen observer nations.</p><p>
For the 2025 exercises, the United States, along with a select contingent
from the exercise coalition, will take on the role of a hypothetical
adversarial nation, dubbed Orangeland. This scenario is designed to
simulate a mock invasion against Cairo, and presents a valuable
opportunity for participating nations to refine their joint operational
capabilities and improve logistical and tactical interoperability</p><p>
A historic addition to Exercise Bright Star 2025 is the participation of
Israel as an observer nation. This marks a significant milestone, given
the complex historical relations in the region, and symbolises a step
forward in regional collaboration and military diplomacy. Israel's role,
hosting the aggressor faction of the exercise coalition at its airfields,
not only demonstrates the broadening scope of the exercise but also highlights
the value of fostering an environment of mutual cooperation and shared
security objectives.</p>
miz: exercise_bright_star.miz
performance: 1
recommended_start_date: 2025-09-01
version: "11.0"
squadrons:
Blue CV-1:
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
size: 24
- primary: AEW&C
aircraft:
- E-2D Advanced Hawkeye
size: 2
- primary: Refueling
aircraft:
- S-3B Tanker
size: 4
Bombers from RAF Fairford:
- primary: Anti-ship
secondary: air-to-ground
aircraft:
- B-52H Stratofortress
size: 8
- primary: Strike
secondary: air-to-ground
aircraft:
- B-1B Lancer
size: 8
# Hatzerim (141)
7:
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
size: 6
- primary: Escort
secondary: any
aircraft:
- F-15C Eagle
size: 20
- primary: OCA/Runway
secondary: any
aircraft:
- F-15E Strike Eagle (Suite 4+)
size: 16
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
size: 20
- primary: BAI
secondary: any
aircraft:
- JF-17 Thunder
size: 16
- primary: BARCAP
secondary: any
aircraft:
- Mirage 2000C
size: 12
# Kedem
12:
- primary: Transport
secondary: any
aircraft:
- CH-47D
size: 20
- primary: BAI
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 8
- primary: Air Assault
secondary: any
aircraft:
- UH-60L
- UH-60A
size: 4
# Nevatim (106)
# Nevatim temporarilly disabled because airfield is borked
# 8:
# - primary: AEW&C
# aircraft:
# - E-3A
# size: 2
# - primary: Refueling
# aircraft:
# - KC-135 Stratotanker
# size: 2
# Melez (30)
5:
- primary: CAS
secondary: any
aircraft:
- Ka-50 Hokum III
- Ka-50 Hokum (Blackshark 3)
size: 4
- primary: BAI
secondary: any
aircraft:
- Mirage 2000C
size: 12
- primary: Escort
secondary: any
aircraft:
- MiG-21bis Fishbed-N
size: 12
# Wadi al Jandali (72)
13:
- primary: AEW&C
aircraft:
- E-2C Hawkeye
size: 2
- primary: SEAD
secondary: any
aircraft:
- F-4E Phantom II
size: 20
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
size: 20
- primary: Air Assault
secondary: any
aircraft:
- Mi-24P Hind-F
size: 4
- primary: OCA/Aircraft
secondary: any
aircraft:
- SA 342L Gazelle
size: 4
# Cairo West (95)
18:
- primary: Transport
aircraft:
- C-130
size: 8
- primary: BARCAP
secondary: air-to-air
aircraft:
- MiG-29S Fulcrum-C
size: 20

View File

@@ -53,7 +53,7 @@ squadrons:
- A-10C Thunderbolt II (Suite 7)
size: 8
- primary: CAS
secondary: air-to-ground
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 10
@@ -86,14 +86,15 @@ squadrons:
- Su-25T Frogfoot
size: 20
# Creech
Creech FARP:
1:
- primary: CAS
secondary: air-to-ground
secondary: any
aircraft:
- Ka-50 Hokum III
- Ka-50 Hokum (Blackshark 3)
size: 8
- primary: Air Assault
secondary: air-to-ground
secondary: any
aircraft:
- Mi-24P Hind-F
size: 4

View File

@@ -2,65 +2,7 @@
name: Normandy - The Final Countdown II
theater: Normandy
authors: Starfire
recommended_player_faction:
country: Combined Joint Task Forces Blue
name: D-Day Allied Forces 1944 and 1990
authors: Starfire
description: <p>Faction for Final Countdown II</p>
locales:
- en_US
aircrafts:
- Boston Mk.III
- Fortress Mk.III
- Mustang Mk.IV (Late)
- Spitfire LF Mk IX
- Thunderbolt Mk.II (Late)
- MosquitoFBMkVI
- F-14B Tomcat
- F/A-18C Hornet (Lot 20)
- S-3B Viking
- UH-60L
- UH-60A
awacs:
- E-2C Hawkeye
tankers:
- S-3B Tanker
frontline_units:
- A17 Light Tank Mk VII Tetrarch
- A22 Infantry Tank MK IV Churchill VII
- A27L Cruiser Tank MK VIII Centaur IV
- A27M Cruiser Tank MK VIII Cromwell IV
- Daimler Armoured Car Mk I
- M2A1 Half-Track
- QF 40 mm Mark III
- Sherman Firefly VC
- Sherman III
artillery_units:
- M12 Gun Motor Carriage
logistics_units:
- Truck Bedford
- Truck GMC "Jimmy" 6x6 Truck
infantry_units:
- Infantry M1 Garand
naval_units:
- DDG Arleigh Burke IIa
- CG Ticonderoga
- CVN-74 John C. Stennis
missiles: []
air_defense_units:
- Bofors 40 mm Gun
preset_groups:
- Ally Flak
requirements:
WW2 Asset Pack: https://www.digitalcombatsimulator.com/en/products/other/wwii_assets_pack/
carrier_names:
- CVN-71 Theodore Roosevelt
has_jtac: true
jtac_unit: MQ-9 Reaper
unrestricted_satnav: true
doctrine: ww2
building_set: ww2ally
cargo_ship: LST Mk.II
recommended_player_faction: D-Day Allied Forces 1944 and 1990
recommended_enemy_faction: Germany 1944
description:
<p>While enroute to the Persian Gulf for Operation Desert Shield, the USS
@@ -191,4 +133,4 @@ squadrons:
secondary: any
aircraft:
- Fw 190 A-8 Anton
size: 20
size: 20

View File

@@ -8,10 +8,10 @@ description:
<p>An Argentinean extremist group has contracted the Sons of Warvan (SoW), an
unusually well-equipped PMC with close ties to the Russian government, to
construct a beryllium bomb at the secret Omega 13 production facility in
Ushaia for use in its ongoing conflict with Chile. United States military
Ushuaia for use in its ongoing conflict with Chile. United States military
forces have established a foothold at San Julian. While the SoW are distracted
up north, it is up to the Marines to launch an assault upon Ushaia from an LHA
in order to disable the bomb production facility. Fortunately, Ushaia is
up north, it is up to the Marines to launch an assault upon Ushuaia from an LHA
in order to disable the bomb production facility. Fortunately, Ushuaia is
lightly defended as the SoW are trying to avoid unwanted attention.</p>
miz: grabthars_hammer.miz
performance: 2
@@ -35,6 +35,11 @@ squadrons:
aircraft:
- F-15C Eagle
size: 8
- primary: CAS
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 8
- primary: Refueling
aircraft:
- KC-135 Stratotanker
@@ -57,7 +62,7 @@ squadrons:
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
size: 20
size: 40
- primary: DEAD
secondary: air-to-ground
aircraft:
@@ -142,14 +147,15 @@ squadrons:
#Ushuaia
7:
- primary: CAS
secondary: air-to-ground
secondary: any
aircraft:
- Ka-50 Hokum III
- Ka-50 Hokum (Blackshark 3)
size: 8
#Ushuaia Helo Port
8:
- primary: Air Assault
secondary: air-to-ground
secondary: any
aircraft:
- Mi-24P Hind-F
size: 8

View File

@@ -48,7 +48,7 @@ squadrons:
#Tarawa Class LHA
Blue-LHA:
- primary: DEAD
secondary: air-to-ground
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 12
@@ -72,7 +72,7 @@ squadrons:
#Akrotiri
44:
- primary: BAI
secondary: air-to-ground
secondary: any
aircraft:
- AH-1W SuperCobra
size: 4
@@ -81,8 +81,8 @@ squadrons:
aircraft:
- OH-58D Kiowa Warrior
size: 4
- primary: Air Assault
secondary: air-to-ground
- primary: Transport
secondary: any
aircraft:
- UH-60A
size: 4
@@ -95,6 +95,7 @@ squadrons:
#Ercan
49:
- primary: Transport
secondary: any
aircraft:
- CH-47D
size: 6

View File

@@ -13,6 +13,7 @@ recommended_player_faction:
- en_US
aircrafts:
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-15C Eagle
- F-15E Strike Eagle
- F-15E Strike Eagle (Suite 4+)
@@ -100,7 +101,6 @@ recommended_enemy_faction:
assets. Designed for use with the Allied Sword scenario.</p>
aircrafts:
- MiG-23ML Flogger-G
- MiG-25RBT Foxbat-B
- MiG-29A Fulcrum-A
- Su-17M4 Fitter-K
- Su-24M Fencer-D
@@ -110,7 +110,6 @@ recommended_enemy_faction:
- Tu-22M3 Backfire-C
- Mi-24V Hind-E
- Mi-8MTV2 Hip
- SA 342M Gazelle
- SA 342L Gazelle
- IL-76MD
awacs:
@@ -263,7 +262,9 @@ squadrons:
- primary: SEAD
secondary: any
aircraft:
- F-4E-45MC Phantom II
- 201th Squadron
size: 16
- primary: Refueling
aircraft:
- VMGR-352
@@ -272,12 +273,12 @@ squadrons:
secondary: any
aircraft:
- 69th Squadron
size: 8
size: 12
- primary: BAI
secondary: any
aircraft:
- 110th Squadron
size: 8
size: 16
# Damascus
7:
- primary: TARCAP
@@ -315,20 +316,21 @@ squadrons:
- primary: CAS
secondary: air-to-ground
aircraft:
- SA 342M Gazelle
- SA 342L Gazelle
size: 6
# OPFOR Second inland FOB
FOB Homs:
- primary: CAS
secondary: air-to-ground
aircraft:
- SA 342M Gazelle
- SA 342L Gazelle
size: 6
# Palmyra
28:
- primary: BARCAP
secondary: air-to-air
aircraft:
- MiG-21bis Fishbed-N
- MiG-29A Fulcrum-A
size: 12
- primary: Strike
@@ -365,7 +367,7 @@ squadrons:
- primary: CAS
secondary: air-to-ground
aircraft:
- SA 342M Gazelle
- SA 342L Gazelle
# OPFOR Second inland FOB
FOB Ithriyah:
- primary: CAS
@@ -385,6 +387,7 @@ squadrons:
- primary: BARCAP
secondary: air-to-air
aircraft:
- MiG-23MLD Flogger-K
- Su-30 Flanker-C
- primary: CAS
secondary: air-to-ground
@@ -396,6 +399,7 @@ squadrons:
- primary: TARCAP
secondary: air-to-air
aircraft:
- MiG-25PD Foxbat-E
- MiG-23ML Flogger-G
- primary: BARCAP
secondary: any
@@ -405,6 +409,7 @@ squadrons:
- primary: Strike
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
- Su-34 Fullback
- primary: Transport
secondary: air-to-ground

View File

@@ -100,7 +100,7 @@ squadrons:
#Qeshm Island (12)
13:
- primary: Air Assault
secondary: air-to-ground
secondary: any
aircraft:
- Mi-24P Hind-F
size: 12

View File

@@ -80,7 +80,7 @@ squadrons:
- F-16CM Fighting Falcon (Block 50)
size: 28
- primary: CAS
secondary: air-to-ground
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 4
@@ -93,13 +93,13 @@ squadrons:
- H-6J Badger
size: 16
- primary: BAI
secondary: air-to-ground
secondary: any
aircraft:
- AH-1W SuperCobra
- Su-25 Frogfoot
size: 16
- primary: CAS
secondary: air-to-ground
secondary: any
aircraft:
- OH-58D Kiowa Warrior
- Mi-24P Hind-F

View File

@@ -1,169 +1,156 @@
---
name: Caucasus - Operation Vectron's Claw
theater: Caucasus
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 2010
description:
<p>United Nations Observer Mission in Georgia (UNOMIG) observers stationed in
Georgia to monitor the ceasefire between Georgia and Abkhazia have been cut
off from friendly forces by Russian troops backing the separatist state. The
UNOMIG HQ at Sukhumi has been taken, and a small contingent of observers and
troops at the Zugdidi Sector HQ will have to make a run for the coast,
supported by offshore US naval aircraft. The contingent is aware that their
best shot at survival is to swiftly retake Sukhumi before Russian forces have
a chance to dig in, so that friendly ground forces can land and reinforce
them.</p><p><strong>Note:</strong> Ground unit purchase will not be available
past Turn 0 until Sukhumi is retaken, so it is imperative you reach Sukhumi
with at least one surviving ground unit to capture it. Two Hueys are available
at Zugdidi for some close air support. The player can either play the first
leg of the scenario as an evacuation with a couple of light vehicles (e.g.
Humvees) set on breakthrough (modifying waypoints in the mission editor so
they are not charging head-on into enemy ground forces is suggested), or
purchase heavier ground units if they wish to experience a more traditional
frontline ground war. Once Sukhumi has been captured, squadrons based in
Incirlik Turkey can be ferried in via the "From Incirlik" off-map spawn
point.</p>
miz: operation_vectrons_claw.miz
performance: 1
recommended_start_date: 2008-08-08
version: "11.0"
control_points:
Squadrons from Incirlik:
ferry_only: true
squadrons:
Blue CV-1:
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
size: 16
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
size: 60
- primary: CAS
secondary: air-to-ground
aircraft:
- S-3B Viking
size: 8
- primary: AEW&C
aircraft:
- E-2C Hawkeye
size: 2
- primary: Refueling
aircraft:
- S-3B Tanker
size: 2
- primary: Air Assault
secondary: any
aircraft:
- UH-60L
- UH-60A
size: 2
Blue LHA:
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
size: 20
Squadrons from Incirlik:
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
size: 4
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
size: 6
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
size: 16
- primary: BAI
secondary: any
aircraft:
- F-15E Strike Eagle (Suite 4+)
size: 8
- primary: Refueling
aircraft:
- KC-135 Stratotanker
size: 1
Bombers from RAF Fairford:
- primary: Anti-ship
secondary: air-to-ground
aircraft:
- B-52H Stratofortress
size: 4
Bombers from Base Aérea de Morón:
- primary: OCA/Runway
secondary: air-to-ground
aircraft:
- B-1B Lancer
size: 4
#FARPs
UNOMIG Sector HQ:
- primary: Transport
secondary: any
aircraft:
- UH-1H Iroquois
size: 2
Dzhugba:
- primary: CAS
secondary: any
aircraft:
- Mi-24P Hind-F
size: 4
#Sukhumi-Babushara
20:
- primary: TARCAP
secondary: air-to-air
aircraft:
- MiG-29S Fulcrum-C
size: 8
- primary: BAI
secondary: air-to-ground
aircraft:
- Su-25T Frogfoot
size: 12
#Sochi-Adler
18:
- primary: Escort
secondary: air-to-air
aircraft:
- Su-27 Flanker-B
size: 8
- primary: SEAD
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
size: 20
- primary: DEAD
secondary: air-to-ground
aircraft:
- Su-34 Fullback
size: 20
#Maykop-Khanskaya
16:
- primary: Anti-ship
secondary: air-to-ground
aircraft:
- Tu-22M3 Backfire-C
size: 20
#Anapa-Vityazevo
12:
- primary: Strike
secondary: air-to-ground
aircraft:
- Tu-95MS Bear-H
size: 16
Red CV:
- primary: BARCAP
secondary: any
aircraft:
- SU-33 Flanker-D
---
name: Caucasus - Operation Vectron's Claw
theater: Caucasus
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 2010
description:
<p><strong>Background</strong> - The United Nations Observer Mission in Georgia (UNOMIG) has been actively monitoring the ceasefire agreement between Georgia and its breakaway region of Abkhazia. Recent developments have escalated tensions in the area, leading to a precarious situation for UN observers and affiliated personnel.
</p><p><strong>Current Situation</strong> - UNOMIG observers, along with a contingent of international troops, have found themselves isolated due to the intervention of Russian forces supporting the separatist ambitions of Abkhazia. The UNOMIG headquarters located in Sukhumi has fallen into enemy hands. A smaller group based at the Zugdidi Sector Headquarters now faces the daunting task of navigating to safety with the aid of offshore naval air support.
</p><p><strong>Objective</strong> - The immediate goal is to orchestrate a strategic withdrawal of UN forces to the coastline, leveraging support from US naval aircraft positioned offshore. The critical mission objective is the rapid recapture of Sukhumi. This action is essential to enable the landing of friendly ground forces and the ferrying in of land-based sqwuadrons from Incirlik.
</p><p><strong>Operational Constraints</strong> - It is crucial to note that reinforcement of ground units will not be possible until Sukhumi is successfully recaptured. This recapture can either be performed using existing UN personnel and ground vehicles, or via heliborne assault troop insertion.
</p><p><strong>Assets & Support</strong> - Available assets include two Huey helicopters for close air support. Commanders may opt to initiate the operation with light vehicles, such as Humvees, employing breakthrough tactics to avoid direct confrontations with enemy forces. Alternatively, the use of heavier ground units is an option for commanders seeking a more conventional combat engagement. Upon the recapture of Sukhumi, additional squadrons from Incirlik, Turkey, will become operational.
</p><p><strong>Secondary Objective</strong> - Consider prioritising the capture of the Batumi airfield, located to the south, for its strategic value as a forward operating base. Commanders should be aware of the inherent risks, as the airfield is relatively small and lacks air defence systems, posing a significant threat to any stationed aircraft.</p>
miz: operation_vectrons_claw.miz
performance: 1
recommended_start_date: 2008-08-08
version: "11.0"
control_points:
Squadrons from Incirlik:
ferry_only: true
squadrons:
Blue CV-1:
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
size: 16
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
size: 60
- primary: CAS
secondary: air-to-ground
aircraft:
- S-3B Viking
size: 8
- primary: AEW&C
aircraft:
- E-2C Hawkeye
size: 2
- primary: Refueling
aircraft:
- S-3B Tanker
size: 2
- primary: Air Assault
secondary: any
aircraft:
- UH-60L
- UH-60A
size: 2
Blue LHA:
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
size: 20
Squadrons from Incirlik:
- primary: CAS
secondary: any
aircraft:
- AH-64D Apache Longbow
size: 4
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
size: 6
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
size: 16
- primary: BAI
secondary: any
aircraft:
- F-15E Strike Eagle (Suite 4+)
size: 8
- primary: Refueling
aircraft:
- KC-135 Stratotanker
size: 1
Bombers from RAF Fairford:
- primary: Anti-ship
secondary: air-to-ground
aircraft:
- B-52H Stratofortress
size: 4
Bombers from Base Aérea de Morón:
- primary: OCA/Runway
secondary: air-to-ground
aircraft:
- B-1B Lancer
size: 4
#FARPs
UNOMIG Sector HQ:
- primary: Transport
secondary: any
aircraft:
- UH-1H Iroquois
size: 2
Dzhugba:
- primary: CAS
secondary: any
aircraft:
- Mi-24P Hind-F
size: 4
#Sukhumi-Babushara
20:
- primary: TARCAP
secondary: air-to-air
aircraft:
- MiG-29S Fulcrum-C
size: 8
- primary: BAI
secondary: air-to-ground
aircraft:
- Su-25T Frogfoot
size: 12
#Sochi-Adler
18:
- primary: Escort
secondary: air-to-air
aircraft:
- Su-27 Flanker-B
size: 8
- primary: SEAD
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
size: 20
- primary: DEAD
secondary: air-to-ground
aircraft:
- Su-34 Fullback
size: 20
#Maykop-Khanskaya
16:
- primary: Strike
secondary: air-to-ground
aircraft:
- Tu-22M3 Backfire-C
size: 20
#Anapa-Vityazevo
12:
- primary: Strike
secondary: air-to-ground
aircraft:
- Tu-95MS Bear-H
size: 16
Red CV:
- primary: BARCAP
secondary: any
aircraft:
- SU-33 Flanker-D
size: 16

View File

@@ -5,23 +5,27 @@ authors: Starfire
recommended_player_faction: USA 1970
recommended_enemy_faction: NVA 1970
description:
<p>Operation Velvet Thunder is a high-intensity training exercise designed to
prepare fresh troops for the challenges they will face in Vietnam. The dense
jungle and rugged terrain of the Mariana Islands will provide a realistic
backdrop, allowing our forces to hone essential skills in jungle warfare,
unconventional tactics, and counterinsurgency operations. There are multiple
checkpoints scattered across the area of operations that will have to be
captured by Air Assault. Due to the limited size and availability of LZs, it
<p>Operation Velvet Thunder is a high-intensity training exercise designed to
prepare fresh troops for the challenges they will face in Vietnam. The dense
jungle and rugged terrain of the Mariana Islands will provide a realistic
backdrop, allowing our forces to hone essential skills in jungle warfare,
unconventional tactics, and counterinsurgency operations. There are multiple
checkpoints scattered across the area of operations that will have to be
captured by Air Assault. Due to the limited size and availability of LZs, it
is vital to pay close attention to where you designate troop drop off zones.
</p><p><strong>Note:</strong> This campaign is intended to be played with the
A-4 Skyhawk and OV-10a aircraft mods active. The C-101CC has also been included
as a stand-in for the Cessna A-37 Dragonfly in order to provide a CAS platform
of roughly equivalent combat capability. This campaign will be updated to use
</p><p><strong>Note:</strong> This campaign is intended to be played with the
A-4 Skyhawk and OV-10a aircraft mods active. The C-101CC has also been included
as a stand-in for the Cessna A-37 Dragonfly in order to provide a CAS platform
of roughly equivalent combat capability. This campaign will be updated to use
Heatblur's F-4 Phantom II once it is in early access.</p>
miz: operation_velvet_thunder.miz
performance: 1
recommended_start_date: 1970-11-29
version: "11.0"
settings:
a4_skyhawk: true
f4bc_phantom: true
ov10a_bronco: true
squadrons:
#Andersen AFB
6:
@@ -43,8 +47,9 @@ squadrons:
- primary: SEAD
secondary: any
aircraft:
- F-4C Phantom II
- F-4E Phantom II
size: 16
size: 8
- primary: Strike
secondary: any
aircraft:
@@ -91,4 +96,4 @@ squadrons:
secondary: any
aircraft:
- MiG-21bis Fishbed-N
size: 8
size: 8

View File

@@ -178,15 +178,15 @@ local unitPayloads = {
["name"] = "Liberation SEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 5,
},
[2] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 1,
},
[3] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 4,
},
[4] = {
@@ -194,7 +194,7 @@ local unitPayloads = {
["num"] = 3,
},
[5] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 2,
},
},
@@ -265,15 +265,15 @@ local unitPayloads = {
["name"] = "Liberation SEAD Escort",
["pylons"] = {
[1] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 5,
},
[2] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 1,
},
[3] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 4,
},
[4] = {
@@ -281,7 +281,7 @@ local unitPayloads = {
["num"] = 3,
},
[5] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 2,
},
},
@@ -352,11 +352,11 @@ local unitPayloads = {
["name"] = "Liberation DEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 5,
},
[2] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 1,
},
[3] = {

View File

@@ -0,0 +1,53 @@
local unitPayloads = {
["name"] = "EA-18G",
["payloads"] = {
[1] = {
["name"] = "Retribution SEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{FPU_12_FUEL_TANKHighVis}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{ALQ-99Wing}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{ALQ-99Center}",
["num"] = 5,
},
[6] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 4,
},
[7] = {
["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}",
["num"] = 3,
},
[8] = {
["CLSID"] = "{ALQ-99Wing}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{FPU_12_FUEL_TANKHighVis}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
},
["tasks"] = {
},
["unitType"] = "EA-18G",
}
return unitPayloads

View File

@@ -0,0 +1,973 @@
local unitPayloads = {
["name"] = "F-4E-45MC",
["payloads"] = {
[1] = {
["displayName"] = "Liberation SEAD Escort",
["name"] = "Liberation SEAD Escort",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{AGM_12B}",
["num"] = 13,
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{AGM_12B}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{AGM_12B}",
["num"] = 11,
},
[14] = {
["CLSID"] = "{AGM_12B}",
["num"] = 3,
},
},
["tasks"] = {
},
},
[2] = {
["name"] = "Liberation Anti-ship",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}",
["num"] = 13,
},
[3] = {
["CLSID"] = "{C40A1E3A-DD05-40D9-85A4-217729E37FAE}",
["num"] = 11,
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
},
[5] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
},
[6] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[7] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[8] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{C40A1E3A-DD05-40D9-85A4-217729E37FAE}",
["num"] = 3,
},
[11] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
},
[12] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
},
[13] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL}",
["num"] = 1,
},
},
["tasks"] = {
},
},
[3] = {
["name"] = "Liberation BARCAP",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}",
["num"] = 13,
},
[3] = {
["CLSID"] = "{AIM-9M}",
["num"] = 12,
},
[4] = {
["CLSID"] = "{AIM-9M}",
["num"] = 10,
},
[5] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 6,
},
[6] = {
["CLSID"] = "{AIM-9M}",
["num"] = 2,
},
[7] = {
["CLSID"] = "{AIM-9M}",
["num"] = 4,
},
[8] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
},
["tasks"] = {
},
},
[4] = {
["displayName"] = "Liberation Escort",
["name"] = "Liberation Escort",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}",
["num"] = 13,
},
[3] = {
["CLSID"] = "{AIM-9M}",
["num"] = 12,
},
[4] = {
["CLSID"] = "{AIM-9M}",
["num"] = 10,
},
[5] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 6,
},
[6] = {
["CLSID"] = "{AIM-9M}",
["num"] = 2,
},
[7] = {
["CLSID"] = "{AIM-9M}",
["num"] = 4,
},
[8] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
},
["tasks"] = {
},
},
[5] = {
["displayName"] = "Liberation BAI",
["name"] = "Liberation BAI",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 13,
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 11,
},
[14] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 3,
},
},
["tasks"] = {
},
},
[6] = {
["displayName"] = "Liberation CAS",
["name"] = "Liberation CAS",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 13,
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 11,
},
[14] = {
["CLSID"] = "{AGM_62_I}",
["num"] = 3,
},
},
["tasks"] = {
},
},
[7] = {
["displayName"] = "Liberation SEAD",
["name"] = "Liberation SEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{LAU_34_AGM_45A}",
["num"] = 13,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{LAU_34_AGM_45A}",
["num"] = 1,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{LAU_34_AGM_45A}",
["num"] = 11,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[14] = {
["CLSID"] = "{LAU_34_AGM_45A}",
["num"] = 3,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
},
["tasks"] = {
},
},
[8] = {
["displayName"] = "Liberation Strike",
["name"] = "Liberation Strike",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}",
["num"] = 13,
["settings"] = {
["NFP_VIS_DrawArgNo_57"] = 0,
["NFP_fuze_type_nose"] = "M904E4",
["NFP_fuze_type_tail"] = "M905",
["arm_delay_ctrl_M904E4"] = 2,
["arm_delay_ctrl_M905"] = 4,
["function_delay_ctrl_M904E4"] = 0,
["function_delay_ctrl_M905"] = 0,
},
},
[3] = {
["CLSID"] = "{AIM-9M}",
["num"] = 12,
},
[4] = {
["CLSID"] = "{AIM-9M}",
["num"] = 10,
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "{AIM-9M}",
["num"] = 2,
},
[7] = {
["CLSID"] = "{AIM-9M}",
["num"] = 4,
},
[8] = {
["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}",
["num"] = 1,
["settings"] = {
["NFP_VIS_DrawArgNo_57"] = 0,
["NFP_fuze_type_nose"] = "M904E4",
["NFP_fuze_type_tail"] = "M905",
["arm_delay_ctrl_M904E4"] = 2,
["arm_delay_ctrl_M905"] = 4,
["function_delay_ctrl_M904E4"] = 0,
["function_delay_ctrl_M905"] = 0,
},
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
},
["tasks"] = {
},
},
[9] = {
["displayName"] = "Liberation TARCAP",
["name"] = "Liberation TARCAP",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}",
["num"] = 13,
},
[3] = {
["CLSID"] = "{AIM-9M}",
["num"] = 12,
},
[4] = {
["CLSID"] = "{AIM-9M}",
["num"] = 10,
},
[5] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 6,
},
[6] = {
["CLSID"] = "{AIM-9M}",
["num"] = 2,
},
[7] = {
["CLSID"] = "{AIM-9M}",
["num"] = 4,
},
[8] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
},
["tasks"] = {
},
},
[10] = {
["displayName"] = "Liberation DEAD",
["name"] = "Liberation DEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{AGM_12B}",
["num"] = 13,
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{AGM_12B}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{AGM_12B}",
["num"] = 11,
},
[14] = {
["CLSID"] = "{AGM_12B}",
["num"] = 3,
},
},
["tasks"] = {
},
},
[11] = {
["displayName"] = "Liberation OCA/Runway",
["name"] = "Liberation OCA/Runway",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}",
["num"] = 13,
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{F4_SARGENT_TANK_370_GAL}",
["num"] = 1,
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{HB_F4E_BLU-107B_6x}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{HB_F4E_BLU-107B_3x}",
["num"] = 11,
},
[14] = {
["CLSID"] = "{HB_F4E_BLU-107B_3x}",
["num"] = 3,
},
},
["tasks"] = {
},
},
[12] = {
["displayName"] = "Liberation OCA/Aircraft",
["name"] = "Liberation OCA/Aircraft",
["pylons"] = {
[1] = {
["CLSID"] = "{HB_ALE_40_30_60}",
["num"] = 14,
},
[2] = {
["CLSID"] = "{HB_F4E_MK-82_Snakeye_6x}",
["num"] = 13,
["settings"] = {
["NFP_VIS_DrawArgNo_57"] = 0,
["NFP_fuze_type_nose"] = "M904E4",
["NFP_fuze_type_tail"] = "M905",
["arm_delay_ctrl_M904E4"] = 2,
["arm_delay_ctrl_M905"] = 4,
["function_delay_ctrl_M904E4"] = 0,
["function_delay_ctrl_M905"] = 0,
},
},
[3] = {
["CLSID"] = "<CLEAN>",
["num"] = 12,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 10,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[5] = {
["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}",
["num"] = 6,
},
[6] = {
["CLSID"] = "<CLEAN>",
["num"] = 2,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 4,
["settings"] = {
["EAS_bypass_ctrl"] = 1,
["NFP_rfgu_type"] = 1,
["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000,
["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000,
},
},
[8] = {
["CLSID"] = "{HB_F4E_MK-82_Snakeye_6x}",
["num"] = 1,
["settings"] = {
["NFP_VIS_DrawArgNo_57"] = 0,
["NFP_fuze_type_nose"] = "M904E4",
["NFP_fuze_type_tail"] = "M905",
["arm_delay_ctrl_M904E4"] = 2,
["arm_delay_ctrl_M905"] = 4,
["function_delay_ctrl_M904E4"] = 0,
["function_delay_ctrl_M905"] = 0,
},
},
[9] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 5,
},
[10] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 8,
},
[11] = {
["CLSID"] = "{HB_F4E_AIM-7M}",
["num"] = 9,
},
[12] = {
["CLSID"] = "{F4_SARGENT_TANK_600_GAL}",
["num"] = 7,
},
[13] = {
["CLSID"] = "{HB_F4E_MK-82_Snakeye_3x}",
["num"] = 11,
["settings"] = {
["NFP_VIS_DrawArgNo_57"] = 0,
["NFP_fuze_type_nose"] = "M904E4",
["NFP_fuze_type_tail"] = "M905",
["arm_delay_ctrl_M904E4"] = 2,
["arm_delay_ctrl_M905"] = 4,
["function_delay_ctrl_M904E4"] = 0,
["function_delay_ctrl_M905"] = 0,
},
},
[14] = {
["CLSID"] = "{HB_F4E_MK-82_Snakeye_3x}",
["num"] = 3,
["settings"] = {
["NFP_VIS_DrawArgNo_57"] = 0,
["NFP_fuze_type_nose"] = "M904E4",
["NFP_fuze_type_tail"] = "M905",
["arm_delay_ctrl_M904E4"] = 2,
["arm_delay_ctrl_M905"] = 4,
["function_delay_ctrl_M904E4"] = 0,
["function_delay_ctrl_M905"] = 0,
},
},
},
["tasks"] = {
},
},
},
["tasks"] = {
},
["unitType"] = "F-4E-45MC",
}
return unitPayloads

View File

@@ -0,0 +1,463 @@
local unitPayloads = {
["name"] = "FA-18E",
["payloads"] = {
[1] = {
["displayName"] = "Retribution SEAD",
["name"] = "Retribution SEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[2] = {
["displayName"] = "Retribution BARCAP",
["name"] = "Retribution BARCAP",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 7,
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 3,
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
[10] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 10,
},
},
["tasks"] = {
[1] = 11,
},
},
[3] = {
["displayName"] = "Retribution TARCAP/Escort",
["name"] = "Retribution TARCAP/Escort",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[4] = {
["displayName"] = "Retribution Anti-ship",
["name"] = "Retribution Anti-ship",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{AGM_84D}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{AGM_84D}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[5] = {
["displayName"] = "Retribution BAI",
["name"] = "Retribution BAI",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 8,
},
[3] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[6] = {
["displayName"] = "Retribution CAS",
["name"] = "Retribution CAS",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 8,
},
[3] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[7] = {
["displayName"] = "Retribution OCA/Runway",
["name"] = "Retribution OCA/Runway",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{GBU_31_V_4B}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{GBU_31_V_4B}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[8] = {
["displayName"] = "Retribution DEAD",
["name"] = "Retribution DEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{AGM-154A}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{AGM-154A}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{AGM-154A}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{AGM-154A}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[9] = {
["displayName"] = "Retribution Strike",
["name"] = "Retribution Strike",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[10] = {
["displayName"] = "Retribution OCA/aircraft",
["name"] = "Retribution OCA/aircraft",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{BRU33_2X_CBU-99}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{BRU33_2X_CBU-99}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
},
["tasks"] = {
},
["unitType"] = "FA-18E",
}
return unitPayloads

View File

@@ -0,0 +1,463 @@
local unitPayloads = {
["name"] = "FA-18F",
["payloads"] = {
[1] = {
["displayName"] = "Retribution SEAD",
["name"] = "Retribution SEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[2] = {
["displayName"] = "Retribution BARCAP",
["name"] = "Retribution BARCAP",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 7,
},
[4] = {
["CLSID"] = "<CLEAN>",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 3,
},
[7] = {
["CLSID"] = "<CLEAN>",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
[10] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 10,
},
},
["tasks"] = {
[1] = 11,
},
},
[3] = {
["displayName"] = "Retribution TARCAP/Escort",
["name"] = "Retribution TARCAP/Escort",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "LAU-115_2*LAU-127_AIM-120C",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[4] = {
["displayName"] = "Retribution Anti-ship",
["name"] = "Retribution Anti-ship",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{AGM_84D}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{AGM_84D}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[5] = {
["displayName"] = "Retribution BAI",
["name"] = "Retribution BAI",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 8,
},
[3] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[6] = {
["displayName"] = "Retribution CAS",
["name"] = "Retribution CAS",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 8,
},
[3] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "LAU_117_AGM_65F",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[7] = {
["displayName"] = "Retribution OCA/Runway",
["name"] = "Retribution OCA/Runway",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{GBU_31_V_4B}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{GBU_31_V_4B}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[8] = {
["displayName"] = "Retribution DEAD",
["name"] = "Retribution DEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{AGM-154A}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{AGM-154A}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{AGM-154A}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{AGM-154A}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[9] = {
["displayName"] = "Retribution Strike",
["name"] = "Retribution Strike",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{GBU_32_V_2B}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
[10] = {
["displayName"] = "Retribution OCA/aircraft",
["name"] = "Retribution OCA/aircraft",
["pylons"] = {
[1] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 8,
},
[3] = {
["CLSID"] = "{BRU33_2X_CBU-99}",
["num"] = 7,
},
[4] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 6,
},
[5] = {
["CLSID"] = "{AN_ASQ_228}",
["num"] = 4,
},
[6] = {
["CLSID"] = "{BRU33_2X_CBU-99}",
["num"] = 3,
},
[7] = {
["CLSID"] = "{FPU_12_FUEL_TANK}",
["num"] = 5,
},
[8] = {
["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}",
["num"] = 2,
},
[9] = {
["CLSID"] = "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
["num"] = 1,
},
},
["tasks"] = {
[1] = 11,
},
},
},
["tasks"] = {
},
["unitType"] = "FA-18F",
}
return unitPayloads

View File

@@ -91,11 +91,11 @@ local unitPayloads = {
["name"] = "SEAD",
["pylons"] = {
[1] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 9,
},
[2] = {
["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}",
["CLSID"] = "{AGM_45A}",
["num"] = 3,
},
[3] = {

View File

@@ -90,6 +90,13 @@
"hertz": 343000,
"channel": null
},
"world_13": {
"name": "GHI",
"callsign": "GHI",
"beacon_type": 5,
"hertz": 113800000,
"channel": 85
},
"airfield2_0": {
"name": "",
"callsign": "IADA",
@@ -146,6 +153,20 @@
"hertz": 365000,
"channel": null
},
"airfield67_0": {
"name": "",
"callsign": "IAMN",
"beacon_type": 13,
"hertz": 109500000,
"channel": null
},
"airfield67_1": {
"name": "",
"callsign": "IAMN",
"beacon_type": 14,
"hertz": 109500000,
"channel": null
},
"airfield6_0": {
"name": "KALDE",
"callsign": "KAD",
@@ -233,8 +254,8 @@
"airfield7_4": {
"name": "DAMASCUS",
"callsign": "DAL",
"beacon_type": 10,
"hertz": 342000000,
"beacon_type": 9,
"hertz": 342000,
"channel": null
},
"airfield7_5": {
@@ -317,8 +338,8 @@
"airfield41_1": {
"name": "ALANYA/GAZIPASA",
"callsign": "GZP",
"beacon_type": 2,
"hertz": 0,
"beacon_type": 3,
"hertz": 114200000,
"channel": 89
},
"airfield41_2": {
@@ -405,6 +426,20 @@
"hertz": 111700000,
"channel": null
},
"airfield65_0": {
"name": "",
"callsign": "",
"beacon_type": 14,
"hertz": 109100000,
"channel": null
},
"airfield65_1": {
"name": "",
"callsign": "",
"beacon_type": 13,
"hertz": 109100000,
"channel": null
},
"airfield47_0": {
"name": "",
"callsign": "ILC",
@@ -468,6 +503,34 @@
"hertz": 358000,
"channel": null
},
"airfield68_0": {
"name": "",
"callsign": "",
"beacon_type": 13,
"hertz": 112910000,
"channel": null
},
"airfield68_1": {
"name": "",
"callsign": "",
"beacon_type": 13,
"hertz": 112900000,
"channel": null
},
"airfield68_2": {
"name": "",
"callsign": "",
"beacon_type": 14,
"hertz": 112910000,
"channel": null
},
"airfield68_3": {
"name": "",
"callsign": "",
"beacon_type": 14,
"hertz": 112900000,
"channel": null
},
"airfield27_0": {
"name": "ALEPPO",
"callsign": "ALE",
@@ -545,6 +608,27 @@
"hertz": null,
"channel": 79
},
"airfield64_0": {
"name": "PrinceHussein",
"callsign": "ABC",
"beacon_type": 4,
"hertz": 0,
"channel": 106
},
"airfield64_1": {
"name": "",
"callsign": "ABC",
"beacon_type": 13,
"hertz": 111400000,
"channel": null
},
"airfield64_2": {
"name": "",
"callsign": "ABC",
"beacon_type": 14,
"hertz": 111400000,
"channel": null
},
"airfield30_0": {
"name": "RAMATDAVID",
"callsign": "RMD",
@@ -580,6 +664,20 @@
"hertz": 115300000,
"channel": null
},
"airfield58_0": {
"name": "Sanliurfa",
"callsign": "GAP",
"beacon_type": 3,
"hertz": 113200000,
"channel": 79
},
"airfield58_1": {
"name": "Sanliurfa",
"callsign": "GAP",
"beacon_type": 9,
"hertz": 391000,
"channel": null
},
"airfield40_0": {
"name": "Cheka",
"callsign": "CAK",

View File

@@ -21,6 +21,7 @@ aircrafts:
- F-15E Strike Eagle (Suite 4+)
- F-16CM Fighting Falcon (Block 50)
- F-4E Phantom II
- F-4E-45MC Phantom II
- F/A-18C Hornet (Lot 20)
- Mirage 2000C
- OH-58D Kiowa Warrior

View File

@@ -1,19 +1,15 @@
---
country: Australia
name: Australia 2005
authors: Khopa, SpaceEnthusiast
description:
<p>The Australian army in 2005.</p><p>Some units might not be accurate,
but were picked to represent at best this army.</p>
authors: 'Khopa, SpaceEnthusiast'
description: >-
<p>The Australian army in 2005.</p><p>Some units might not be accurate, but
were picked to represent at best this army.</p>
aircrafts:
- AH-1W SuperCobra
- C-130J-30 Super Hercules
- F/A-18C Hornet (Lot 20)
- SH-60B Seahawk
- UH-1H Iroquois
- F/A-18E Super Hornet
- F/A-18F Super Hornet
- EA-18G Growler
awacs:
- E-3A
tankers:
@@ -42,7 +38,7 @@ missiles: []
air_defense_units:
- SAM Hawk SR (AN/MPQ-50)
requirements:
C-130J-30 Super Hercules Mod by Anubis: https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/
C-130J-30 Super Hercules Mod by Anubis: 'https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/'
carrier_names: []
helicopter_carrier_names:
- HMAS Canberra

View File

@@ -0,0 +1,54 @@
country: Australia
name: Australia 2009
authors: 'Khopa, SpaceEnthusiast, Chilli'
description: >-
<p>The Australian army in 2005.</p><p>Some units might not be accurate, but
were picked to represent at best this army.</p>
aircrafts:
- AH-1W SuperCobra
- C-130J-30 Super Hercules
- F/A-18C Hornet (Lot 20)
- F/A-18F Super Hornet
- EA-18G Growler
- SH-60B Seahawk
- UH-1H Iroquois
awacs:
- E-3A
tankers:
- KC-130
- KC-135 Stratotanker
frontline_units:
- FV510 Warrior
- LAV-25
- Leopard 1A3
- M113
- M1A2 Abrams
artillery_units: []
logistics_units:
- Truck M818 6x6
infantry_units:
- Infantry M249
- Infantry M4
- MANPADS Stinger
preset_groups:
- Hawk
- Rapier
naval_units:
- DDG Arleigh Burke IIa
- LHA-1 Tarawa
missiles: []
air_defense_units:
- SAM Hawk SR (AN/MPQ-50)
requirements:
C-130J-30 Super Hercules Mod by Anubis: 'https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/'
carrier_names: []
helicopter_carrier_names:
- HMAS Canberra
- HMAS Adelaide
has_jtac: true
jtac_unit: MQ-9 Reaper
liveries_overrides:
F/A-18C Hornet (Lot 20):
- Australian 75th Squadron
- Australian 77th Squadron
unrestricted_satnav: true

View File

@@ -13,6 +13,7 @@ aircrafts:
- F-14A Tomcat (Block 135-GR Late)
- F-14B Tomcat
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-5E Tiger II
- Mirage-F1B
- Mirage-F1BE

View File

@@ -1,6 +1,6 @@
---
country: Egypt
name: Egypt 2000s
name: Egypt 2000
authors: Starfire
description: <p>Egyptian military in the 21st century.</p>
locales:
@@ -10,6 +10,7 @@ aircrafts:
- MiG-21bis Fishbed-N
- Mirage 2000C
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-16CM Fighting Falcon (Block 50)
- IL-76MD
- C-130

View File

@@ -27,7 +27,10 @@ frontline_units:
- "Sturmgesch\xFCtz III Ausf. G"
- "Sturmgesch\xFCtz IV"
- "Sturmpanzer IV Brummb\xE4r"
artillery_units: []
artillery_units:
- FH Pak 40 75mm
- FH LeFH-18 105mm
- SPH Sd.Kfz.124 Wespe 105mm
logistics_units:
- LUV Kettenrad
- LUV Kubelwagen 82
@@ -41,6 +44,7 @@ preset_groups:
- Freya
naval_units:
- Boat Schnellboot type S130
- U-boat VIIC U-flak
requirements:
WW2 Asset Pack: https://www.digitalcombatsimulator.com/en/products/other/wwii_assets_pack/
carrier_names: []

View File

@@ -11,6 +11,7 @@ aircrafts:
- C-130J-30 Super Hercules
- F-16CM Fighting Falcon (Block 50)
- F-4E Phantom II
- F-4E-45MC Phantom II
- Mirage 2000-5
- Mirage 2000C
- UH-1H Iroquois

View File

@@ -9,6 +9,7 @@ aircrafts:
- AH-1J SeaCobra
- F-14A Tomcat (Block 135-GR Late)
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-5E Tiger II
- MiG-21bis Fishbed-N
awacs:

View File

@@ -8,6 +8,7 @@ locales:
aircrafts:
- F-14A Tomcat (Block 135-GR Late)
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-5E Tiger II
- IL-76MD
- Mi-24V Hind-E

View File

@@ -8,6 +8,7 @@ locales:
aircrafts:
- A-4E Skyhawk
- F-4E Phantom II
- F-4E-45MC Phantom II
- UH-1H Iroquois
awacs:
- E-2C Hawkeye

View File

@@ -12,6 +12,7 @@ aircrafts:
- F-16A
- F-16CM Fighting Falcon (Block 50)
- F-4E Phantom II
- F-4E-45MC Phantom II
- UH-1H Iroquois
awacs:
- E-2C Hawkeye

View File

@@ -16,6 +16,7 @@ aircrafts:
- F-15E Strike Eagle (Suite 4+)
- F-16CM Fighting Falcon (Block 50)
- F-4E Phantom II
- F-4E-45MC Phantom II
- UH-1H Iroquois
- UH-60L
awacs:

View File

@@ -17,6 +17,7 @@ aircrafts:
- F-15J Eagle
- F-2A
- F-4EJ Kai Phantom II
- F-4E-45MC Phantom II
awacs:
- E-2C Hawkeye
tankers:

View File

@@ -11,12 +11,15 @@ aircrafts:
- Mi-8MTV2 Hip
- MB-339A
- Su-22M4 Fitter-K
frontline_units:
- T-55A
- M113
- UH-1H Iroquois
frontline_units:
- AMX-13 75mm
- BRDM-2
- BTR-80
- BTR-80
- T-55A
- M1043 HMMWV (M2 HMG)
- M113
- M2A1 Half-Track
- ZSU-23-4 Shilka
artillery_units:
- BM-21 Grad

View File

@@ -11,6 +11,7 @@ aircrafts:
- CH-47D
- F-16CM Fighting Falcon (Block 50)
- F-4E Phantom II
- F-4E-45MC Phantom II
- OH-58D Kiowa Warrior
- UH-1H Iroquois
- UH-60A

View File

@@ -10,6 +10,7 @@ aircrafts:
- C-130
- CH-47D
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-4B Phantom II
- F-4C Phantom II
- F-5E Tiger II

View File

@@ -10,6 +10,7 @@ aircrafts:
- F-4C Phantom II
- F-4B Phantom II
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-5E Tiger II
- A-4E Skyhawk
- OV-10A Bronco

View File

@@ -12,6 +12,7 @@ aircrafts:
- CH-53E
- F-14A Tomcat (Block 135-GR Late)
- F-4E Phantom II
- F-4E-45MC Phantom II
- F-4B Phantom II
- F-4C Phantom II
- F-5E Tiger II

View File

@@ -12,6 +12,7 @@ aircrafts:
- F-14B Tomcat
- F-4B Phantom II
- F-4E Phantom II
- F-4E-45MC Phantom II
- S-3B Viking
- SH-60B Seahawk
- UH-1H Iroquois

View File

@@ -1,4 +1,3 @@
---
country: USA
name: US Navy 2005
authors: Fuzzle
@@ -8,14 +7,13 @@ locales:
aircrafts:
- F-14B Tomcat
- F/A-18C Hornet (Lot 20)
- F/A-18E Super Hornet
- F/A-18F Super Hornet
- AV-8B Harrier II Night Attack
- AH-1W SuperCobra
- S-3B Viking
- SH-60B Seahawk
- UH-1H Iroquois
- F/A-18E Super Hornet
- F/A-18F Super Hornet
- EA-18G Growler
awacs:
- E-2C Hawkeye
tankers:

View File

@@ -0,0 +1,76 @@
country: USA
name: US Navy 2009
authors: Fuzzle, Chilli
description: <p>A modern representation of the US Navy/Marine Corps.</p>
locales:
- en_US
aircrafts:
- F/A-18C Hornet (Lot 20)
- F/A-18E Super Hornet
- F/A-18F Super Hornet
- EA-18G Growler
- AV-8B Harrier II Night Attack
- AH-1W SuperCobra
- S-3B Viking
- SH-60B Seahawk
- UH-1H Iroquois
awacs:
- E-2C Hawkeye
tankers:
- S-3B Tanker
frontline_units:
- M113
- M1043 HMMWV (M2 HMG)
- M1045 HMMWV (BGM-71 TOW)
- M1A2 Abrams
- LAV-25
- M163 Vulcan Air Defense System
artillery_units:
- M270 Multiple Launch Rocket System
logistics_units:
- Truck M818 6x6
infantry_units:
- Infantry M4
- Infantry M249
- MANPADS Stinger
preset_groups:
- Hawk
- Patriot
naval_units:
- FFG Oliver Hazard Perry
- DDG Arleigh Burke IIa
- CG Ticonderoga
- LHA-1 Tarawa
- CVN-74 John C. Stennis
missiles: []
air_defense_units:
- SAM Hawk SR (AN/MPQ-50)
- M163 Vulcan Air Defense System
- M48 Chaparral
requirements: {}
carrier_names:
- CVN-71 Theodore Roosevelt
- CVN-72 Abraham Lincoln
- CVN-73 George Washington
- CVN-74 John C. Stennis
- CVN-75 Harry S. Truman
helicopter_carrier_names:
- LHA-1 Tarawa
- LHA-2 Saipan
- LHA-3 Belleau Wood
- LHA-4 Nassau
- LHA-5 Peleliu
has_jtac: true
jtac_unit: MQ-9 Reaper
doctrine: modern
liveries_overrides:
F-14B Tomcat:
- VF-142 Ghostriders
F/A-18C Hornet (Lot 20):
- VMFA-251 high visibility
AV-8B Harrier II Night Attack:
- VMAT-542
AH-1W SuperCobra:
- Marines
UH-1H Iroquois:
- US NAVY

View File

@@ -11,6 +11,7 @@ kill_events = {} -- killed units will be added via S_EVENT_KILL
base_capture_events = {}
destroyed_objects_positions = {} -- will be added via S_EVENT_DEAD event
killed_ground_units = {} -- keep track of static ground object deaths
unit_hit_point_updates = {} -- stores updates to unit hit points, triggered by S_EVENT_HIT
mission_ended = false
local function ends_with(str, ending)
@@ -41,6 +42,7 @@ function write_state()
["mission_ended"] = mission_ended,
["destroyed_objects_positions"] = destroyed_objects_positions,
["killed_ground_units"] = killed_ground_units,
["unit_hit_point_updates"] = unit_hit_point_updates,
}
if not json then
local message = string.format("Unable to save DCS Liberation state to %s, JSON library is not loaded !", _debriefing_file_location)
@@ -146,6 +148,16 @@ write_state_error_handling = function()
mist.scheduleFunction(write_state_error_handling, {}, timer.getTime() + WRITESTATE_SCHEDULE_IN_SECONDS)
end
function update_hit_points(event)
local update = {}
update.name = event.target:getName()
get_life_success, update.hit_points = pcall(event.target.getLife, event.target)
if get_life_success then
unit_hit_point_updates[#unit_hit_point_updates + 1] = update
write_state()
end
end
activeWeapons = {}
local function onEvent(event)
if event.id == world.event.S_EVENT_CRASH and event.initiator then
@@ -175,6 +187,15 @@ local function onEvent(event)
destroyed_objects_positions[#destroyed_objects_positions + 1] = destruction
write_state()
end
if event.id == world.event.S_EVENT_HIT then
target_category = event.target:getCategory()
if target_category == Object.Category.UNIT then
-- check on the health of the target 1 second after as the life value is sometimes not updated
-- at the time of the event
timer.scheduleFunction(update_hit_points, event, timer.getTime() + 1)
end
end
if event.id == world.event.S_EVENT_MISSION_END then
mission_ended = true

View File

@@ -0,0 +1,22 @@
---
name: EAF 222nd TFB
nickname: Pharaoh's Ghosts
country: Egypt
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: EAF-60366_Ghost
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: EAF 222nd TFB SEA
nickname: Pharaoh's Ghosts
country: Egypt
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: EAF-70373_SEAW
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: GAF JG 72
nickname: Westphalen
country: Germany
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: 37+24_N81B_JG72
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: GAF JG 74
nickname: Moelders
country: Germany
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: 37+36_N72_JG74
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: HAF 338rd FS
nickname: Ares
country: Greece
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: HAF-01507_AG
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: IAF 119 FS
nickname: Bat Squadron
country: Israel
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: IAF-Kurnass-114-119SQN
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: IAF 69 FS
nickname: Hammers
country: Israel
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: IAF-Kurnass-175-69SQN
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: IRIAF 61st TFS
nickname: Panthers
country: Iran
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: IRIAF-3-6643
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: JASDF 8th TFS
nickname: Black Panthers
country: Japan
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: JASDF-87-8312-3WG
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: RAAF No. 1 SQN
nickname: Fighting First
country: Australia
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: RAAF-97203_SEA
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: RAF No. 43 SQN
nickname: Fighting Cocks
country: UK
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: RAF-43-Sqn-FG.1
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: ROKAF 153rd FS
nickname: 153rd Fighter Squadron
country: South Korea
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: ROKAF-80470-CG-153FS
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: TuAF 111 Filo
nickname: Panter
country: Turkey
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: TUAF-67-0268-H2
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: USAF 110th ANG BS
nickname: Lindbergh's Own
country: USA
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: SL68-303_H1_110ANG
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

View File

@@ -0,0 +1,22 @@
---
name: USAF 141st TFS
nickname: Tigers
country: USA
role: Fighter Bomber
aircraft: F-4E-45MC Phantom II
livery: NJ68-357_H1_141TFS
mission_types:
- Anti-ship
- BAI
- BARCAP
- CAS
- DEAD
- Escort
- Intercept
- OCA/Aircraft
- OCA/Runway
- SEAD
- SEAD Escort
- Strike
- Fighter sweep
- TARCAP

Some files were not shown because too many files have changed in this diff Show More