Compare commits

...

456 Commits

Author SHA1 Message Date
Hexo
ce873ad501
Update French (#10274) 2024-08-30 11:16:22 -05:00
johnb432
d56a3a6a95
Dragging - Add parameters for FUNC(setDraggable) & FUNC(setCarryable) to apply globally (#10266) 2024-08-27 18:34:46 -03:00
johnb432
96700e8dfd
Fastroping - Fix FRIES not working after vehicle respawn (#10268) 2024-08-27 18:30:16 -03:00
PabstMirror
884ae78704
Interaction - Add remote squad management (#10258)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-08-27 18:30:06 -03:00
PabstMirror
c5fb3d4cb0
Dragging - Fix dragging ai turrets via keybind (#10267) 2024-08-27 01:36:29 -03:00
johnb432
3b10396d3b
Dragging - Fix dragging breaking via keybind (#10261)
Fixed dragging breaking via keybind
2024-08-27 01:36:07 -03:00
johnb432
db7b78c068
Dragging - Add parameters check for FUNC(setDraggable) & FUNC(setCarryable) (#10264)
* Check params

* Update fnc_setDraggable.sqf
2024-08-26 22:59:22 -05:00
johnb432
284d3105db
Cargo - Fix missing cargo box sizes & cleanup (#10263)
* Clean up cargo's CfgVehicles

* Update CfgVehicles.hpp
2024-08-26 21:19:59 -05:00
johnb432
a894fc78c3
Safemode - Fix safemode being broken after respawning (#10260)
* Fix safemode being broken when respawning

* Update addons/safemode/XEH_postInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update XEH_postInit.sqf

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-26 11:33:40 -05:00
lambdatiger
da73cf979d
Common - Make FUNC(getVehicleIcon) check for strings without the .paa extension (#10257)
* added fallback for icons without .paa post-fix

* Make sure it's at least a valid path before we spend time searching

* Revert "Make sure it's at least a valid path before we spend time searching"

This reverts commit 2d7a9454e3316d3aa7bdfc4f6713ae3aa4859208.

* Added checking for empty `_vehicleValue` strings

Update addons/common/functions/fnc_getVehicleIcon.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-26 11:31:25 -05:00
lambdatiger
18bd1acc33
Compat GM - Fix inheritance and add GM stringtable entries to display names (#10256)
* Fixed inheritance on PETN and PLNP

* Added GM's localization strings

* adds required addons

* one of my testing scripts added forward slashes that aren't/aren't reflected in the GM configs
2024-08-26 11:29:34 -05:00
johnb432
cc00f5e551
SPE Compat - Improve SPE CfgVehicles explosives naming (#10259)
Improve SPE explosives naming
2024-08-25 15:41:36 -05:00
johnb432
008606f636
Interaction - Use animateSource instead of animate for interaction anims (#10249)
Use animateSource instead of animate
2024-08-24 18:59:01 -05:00
PabstMirror
fb177e43c5
aegis_compat - more names (#10254) 2024-08-24 18:57:10 -05:00
johnb432
ed1d42f71d
Aegis Compat - Add some realistic names (#10253) 2024-08-24 17:17:39 -03:00
PabstMirror
42d2322ac0
Missile Guidance - Cleanup merge (#10246) 2024-08-24 19:54:17 +00:00
johnb432
0983c9b3bb
General - Fix and improve misc. interaction anims (#10248) 2024-08-24 14:57:44 -03:00
johnb432
8161e5ceed
WS Compat - Use ACE MG for realistic name (#10252) 2024-08-24 14:56:38 -03:00
johnb432
9cfdf3dc19
Docs - Add interaction anims (#10250) 2024-08-24 14:55:59 -03:00
PabstMirror
17f2de4ec1
General - Fix some format args/strings (#10251) 2024-08-24 14:55:45 -03:00
Apricot
59314edf62
Translations - Improve Japanese (#10245)
update Japanese
2024-08-23 10:35:32 -05:00
Bailey Danyluk
7279b94945
Missileguidance - Update Javelin (#10030) 2024-08-23 14:51:55 +00:00
Bailey Danyluk
b36961937c
Metis - Update to use missile guidance framework (#10033) 2024-08-23 09:48:08 -05:00
Bailey Danyluk
9d429b8be5
Hot - Update to new framework (#10029) 2024-08-23 09:47:52 -05:00
Bailey Danyluk
fad9244104
Hellfire - Update to new framework (#10028) 2024-08-23 09:47:28 -05:00
Bailey Danyluk
4d088fd828
Missileguidance - Update DAGR (#10024) 2024-08-23 09:46:44 -05:00
Bailey Danyluk
8d2b2ce3b9
Dragon - Update to new framework (#10025) 2024-08-23 09:46:30 -05:00
Bailey Danyluk
a1cafef5ae
Nlaw - Update to use Missile Guidance Framework (#10034) 2024-08-23 09:46:01 -05:00
Bailey Danyluk
2c4c7c2fdf
Maverick - Update to missile guidance framework (#10032) 2024-08-23 09:45:21 -05:00
Bailey Danyluk
8ac2d09c31
Missileguidance -- rewrite to use real-world guidance principles, general refactor (#10019)
* update todo with list of weapons

* Add AIM-120 with ARH. Change AHR to not always seek all targets

* Implement some generic modes of flight

* implement augmented proportional navigation

* Add zero-effort miss. Seeker now feeds data to navigation

* Fix bug with ZEM

* remove placeholder

* Change out missile types to reflect navigation scheme they use IRL

* remove uneeded sets

* chane navigation profiles to go for attack direction instead of target

* multiple changes

* SALH: only update seeker pos if it within small error

* IR seeker and AIM-9M

* small tweaks

* more tweaks

* todo: fix nlaw

* update todo

* implement course state machine

* Improve radar simulation

* enable chaff decoy

* add config entries

* Implement optical mavericks

* Allow for debug info to be displayed via variable

* Change AIM-9 agility

* update dragon to not use new guidance

* Tweak flight parameters. Add R-77

* Add AIM-120A

* add ASRAAM

* add R-73/4

* Add all GBU-12s that exist for all planes

* update todo

* update todo for ground based weapons

* Add GPS selector dialog for GPS munitions

* add TOO TGP

* Add SDB and JDAM

* update todo

* fix gimbal lock via rotating with quaternions

* tweak JDAM guidance

* Better attack angle calculation. Does not get exactly right, but works for all cases.

Need to implement a PID controller navigation type to get a correct attack angle

* Fix SACLOS missiles

* Fix NLAW and PLOS

The missile pitches up due to initial angle stuff. I don't know if this is behaviour we want to fix or not?

* update todo

* update todo

* Add Vikhr ATGM

* Add long range SAMs

* fix SAM animations

* Add all ground based missiles. Tweak AIM-9 flare angle

* remove debugh print

* Fix Wiesel ATGM animation. Tweak SACLOS values

* Add action to get into jdam settings

* fix all script components

* Add paremter to allow weathervaning

Weapons usually tend toward the velocity vector due to aerodynamics - calculate side slip and use calculation to do this

* Add new navigation profile. Tweak javelin mid-course guidance

* Process all navigation onFired. Send the correct array to function

* fix missing semicolons

* Add hellfire mid course guidance

* Tweak hellfire attack profile

* change how IR seeker performs

The angle check is better now. Relative velocites guarenteed

* tabs -> spaces

* localise aim120

* localise aim9

* localise gbu

* fix IR tracker losing lock immediately due to being blocked by launcher

* localise manpad

* actually localise manpad

* localise maverick

* localise missile guidance

* localise sam

* localise sdb

* localise vikhr

* tabs -> spaces again

* init commit 9m14

* update stringtables so they are in titlecase

* crash on load

* perplexed

* fix game crashing on load

* Add joystick model

* Add realistic 9m14 behaviour

the 9m14 control joystick can attach 4 9m14 launchers at a time. Replicate that here

* add MCLOS guidance

* add the ability to see a light trail

* tweak HOT guidance params

* tweak metis guidance params

* tweak Vikhr guidance

* add trail to vikhr

* Add Iron Dome interceptor API

* Optimise iron dome

* Only launch if we are above a threshold angle

* add local event for mission makers

* change events to allow for any number of arguments

* avoid making un-needed calls to the server

* Update doppler seeker to allow the tracking and killing of projectiles

* Avoid overshooting target

* Add settings for various things

* Add missile hiding for malyutka

* init commit of cruise missile

* Various - Add missing units/weapons to cfgPatches (#8175)

* Various - Add missing units/weapons to cfgPatches

* Update config.cpp

* Documentation - Add Mikero binarization note (#8172)

* Bump is-svg from 4.2.1 to 4.3.1 in /docs/src (#8177)

Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 4.2.1 to 4.3.1.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.2.1...v4.3.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Adjust "New issue" link to lead to template selection page (#8182)

We want people to choose a template when creating a new issue

* Update linguist settings (#8151)

* Typo in usage example (#8201)

* Mk6 Mortar - Fix README.md typo (#8205)

* Overhaul CSW docs (#8206)

* Medical - Add Alternative Survival Chance (#8192)

Co-authored-by: TyroneMF <TyroneMF@hotmail.com>
Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>
Co-authored-by: Kyle Mckay <5459452+kymckay@users.noreply.github.com>

* Fix make.py temp files cleanup (#8189)

* Fix Injured Sounds Not Playing At Altitudes Above 70 (#8212)

* Particles - Fix macro (#8214)

* initial push

* Update script_component.hpp

* Update script_component.hpp

* Update script_component.hpp

* Map - Fix stuck map compass size (add 0.1 zoom duration) (#8176)

Co-authored-by: jonpas <jonpas33@gmail.com>

* Medical - Allow unconscious unit in Taru pods (#8168)

Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>

* Name Tags - Add ability to set custom rank icon (#8174)

* Tools - Add script to update HEMTT include folder (#8134)

* Tools - Add script to check sqf/config with sqfvm (#8137)

* Medical - Add Vehicle Crashes setting (#8149)

Co-authored-by: jonpas <jonpas33@gmail.com>

* Dragging - Add new dragging animations (#7950)

* New custom animation added

* Adjusted CfgMoves and the script components

* New drop animation and key handler

* CBA settings and new ManActions added

* Adjustments to the drop animation

* Added translations and fixed some stuff

* Update CfgMovesBasic.hpp

* Fix translations

Co-authored-by: Elgin675 <elgin675@hotmail.com>
Co-authored-by: Blutze <37950828+Blutze@users.noreply.github.com>

* Use the same key to drop object

* Update addons/dragging/stringtable.xml

Co-authored-by: Jo David <github@jonathandavid.de>

* Fix French translation

Co-authored-by: Elgin675 <elgin675@hotmail.com>

* Lower the weapon accuracy of the drag animations

* Removed auto-switch to handgun

* Update fnc_startDrag.sqf

 - Holding a launcher breaks the firing animation.
 - Now the unit has to hold either a primary weapon or handgun.

* Handle the unit's current weapon

Co-authored-by: BaerMitUmlaut <BaerMitUmlaut@users.noreply.github.com>

* Update addons/dragging/functions/fnc_handlePlayerWeaponChanged.sqf

Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>

* Update addons/dragging/initSettings.sqf

Co-authored-by: Elgin675 <elgin675@hotmail.com>
Co-authored-by: Blutze <37950828+Blutze@users.noreply.github.com>
Co-authored-by: Jo David <github@jonathandavid.de>
Co-authored-by: BaerMitUmlaut <BaerMitUmlaut@users.noreply.github.com>
Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>
Co-authored-by: jonpas <jonpas33@gmail.com>

* Dragging - Fix build issue (#8219)

* Documentation - Remove DeTex requirement (#8220)

DeTex is subscriber-only now, not required for building ACE3.

* User Interface - Add setting for Development Build watermark (#8140)

Co-authored-by: jonpas <jonpas33@gmail.com>

* RHS USAF Compat - Nightforce NXS scopes updated (#8222)

* Interact Menu - Make List default (#8217)

* Markers - Add scale slider (#8059)

Co-authored-by: commy2 <commy-2@gmx.de>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: jonpas <jonpas33@gmail.com>

* Initial push (#8225)

* MicroDAGR - Add mode switching keybinds (#8216)

* Initial push

* Mode cycling

* Use defines

* RHS ARF Compat - Fix RPK74M wrong ammo bug (#8223)

* Fixed RPK74M wrong ammo bug

* Fix wrong deleted lines of code

* Edit rjs_weap_rpk74_base to rhs_weap_rpk_base

Co-authored-by: Dabako <github@dabakoworld.de>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Extensions - Various Improvments (#8227)

* Translations - Spanish (#8229)

Complete to date spanish translation.

* Attach - Added attached/detaching events (#8193)

* Added ace_attach attached/detach events

* Apply suggestions from code review

Co-authored-by: Jo David <github@jonathandavid.de>

* Apply suggestions from code review

Co-authored-by: jonpas <jonpas33@gmail.com>

Co-authored-by: Jo David <github@jonathandavid.de>
Co-authored-by: jonpas <jonpas33@gmail.com>

* Markers - Fix marker scale (#8233)

* Cargo - paradrop fixes (#8203)

* Small fixes in ace_cargo

Makes paradropItem and unloadItem invoke event "ace_cargoUnloaded" with parameters _itemObject, _vehicle and "paradrop" or "unload" respectivelty.
paradropItem invoked said event but if item was classname it would send classname to event which is not particularly useful.

* Update XEH_postInit.sqf

Moved event invocation to unloadItem, this provides ability to always pass object to eventhandlers.

* code refactor

refactored according to https://github.com/acemod/ACE3/pull/8203#discussion_r610394484

* Update fnc_paradropItem.sqf

apply new fix

* Revert "Update fnc_paradropItem.sqf"

This reverts commit 3db5cc191082a4d8e3cb0c39f0a5c791e2874f0e.

* Update fnc_paradropItem.sqf

fixed hint that was broken by previous fixes

* style check

Co-authored-by: commy2 <commy-2@gmx.de>

* style check

Co-authored-by: commy2 <commy-2@gmx.de>

* naming convention

replaced object references called _item with _object.

* Update fnc_paradropItem.sqf

Co-authored-by: commy2 <commy-2@gmx.de>

* Parachute - Add failure chance (#8226)

* Initial push

* disable forgotten define

* Improve exitWith check

* Requested/suggested changes

* Requested changes

* Requested changes

* Bump lodash from 4.17.20 to 4.17.21 in /docs/src (#8244)

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump grunt from 1.0.4 to 1.3.0 in /docs/src (#8246)

Bumps [grunt](https://github.com/gruntjs/grunt) from 1.0.4 to 1.3.0.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.0.4...v1.3.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump hosted-git-info from 2.5.0 to 2.8.9 in /docs/src (#8247)

Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.5.0 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.5.0...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Markers - Fix JIP scale (#8248)

* Night Vision - Add color variants to all generations (#8209)

* Fix wrong shot size in birdshot strings (#8253)

* Patachute - Add sound effect when cutting (#8239)

* Changes poisson disc to centered random. (#8257)

It looks nicer and distributes more realistically. I don't know what I was thinking when I first put in poisson disc.

* Fix tabs and manpad UBC

* fix tabs in aim9

* progress update: tercom now flies to acquisition basket

* add TERCOM state defines

* work on parsing heightmap

* Change GBU navigation

* remove testing constants

* remove TERCOM guidance

* better JDAM simulation

Attack heading and impact angle now are followed better

* Better flare decoy calculation

* Update 9m14_joystick.p3d

removed p:\ part from proxy path:
was: `\p:\a3\data_f\proxies\gunner_static_low01\gunner.p3d`

* Destroy projectile on all clients

The projectile needs to be destroyed on all clients to stop it from being simulated. If not destroyed where projectile is local, it will still explode when hitting the ground. If not destroyed on remote clients, the projectile will still be visible but deal no damage

* fix NLAW navigation profile

* fix uninitialised values

* make over-fly trajectory over-fly

* remove malyutka

* SACLOS tweaks

* small changes

* fix bug in laser

* make pronav use the correct units

* change back

* add dev function to get ammo which has MG class data

* improve lin navigation

* Minor style

* add spike ATGM

* Allow multiple cameras to exist at once. Fix script error

* fix bug with angles close to 0

* remove debug

* misc updates

* Handle pre-tracking

* Tweak target acquisition. Reset target after shooting

* Tweak how targets are acquired. Fix velocity calculation

* tweak navigation to allow for <200m shots

* enhance target designation

* Stringtable addition

* Config changes

* more SACLOS tweaks

* Some minor fixes

* fix undefined array

* Only play sound when Spike is launcher. Change onFired to missileguidance

* Tweak IR seeker. Fix MCLOS fired from vehicles

* Remove debug sets

* Update all Line guidance missiles

* remove debug sets

* tweak javelin to make minimum ranges more realistic

* cut spike

* add better error messaging

* better debug info

* Rewrite documentation

* Add ability to disable iron dome (disabled by default)

* Change name

* fix typo

* Remove null projectiles from iron dome nonTrackingProjectiles

* HEMTT v10 Compatibility

* Update addons/field_rations/CfgUIGrids.hpp

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* fix PabstMirror review

* optionals

* Change configs to enclose strings for calculations

* Fix NLAW guidance that was causing massive overfly

* make tweaks for PLOS movement path

* fix NLAW overfly

* Fix hemmit merge

* fix header

* Update fnc_seekerType_SACLOS.sqf

* Update to new include paths

* Update fnc_midCourseTransition.sqf

* initSettings.inc.sqf

* Remove weapon additions

* revert old weapons, pt1

* revert pt2

* readd javelin

* split iron dome

* cleanup laser

* remove GPS files

* remove gps definitions

* remove IR

* remove MCLOS

* remove doppler

* final cleanup

* restore final final i promise

* cleanup arbitrary files

* small cleanup

* fix hemtt warnings

* cleanup unused var

* fix preping some missing files (jdam/doppler)

* move cam func

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: jonpas <jonpas33@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jo David <github@jonathandavid.de>
Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>
Co-authored-by: Pascal Dunaj <32539404+t-zilla@users.noreply.github.com>
Co-authored-by: BaerMitUmlaut <BaerMitUmlaut@users.noreply.github.com>
Co-authored-by: Brett <brett@bmandesigns.com>
Co-authored-by: TyroneMF <TyroneMF@hotmail.com>
Co-authored-by: Kyle Mckay <5459452+kymckay@users.noreply.github.com>
Co-authored-by: Dystopian <sddex@ya.ru>
Co-authored-by: commy2 <commy-2@gmx.de>
Co-authored-by: R3voA3 <robertseibel@outlook.de>
Co-authored-by: Steve Zhao <ampersand38@gmail.com>
Co-authored-by: Kyle J. McKeown <Drift91@users.noreply.github.com>
Co-authored-by: Salluci <69561145+Salluci@users.noreply.github.com>
Co-authored-by: Dániel Boros <43353942+Malbryn@users.noreply.github.com>
Co-authored-by: Elgin675 <elgin675@hotmail.com>
Co-authored-by: Blutze <37950828+Blutze@users.noreply.github.com>
Co-authored-by: Laid3acK <bal2.chris@orange.fr>
Co-authored-by: frankplow <post@frankplowman.com>
Co-authored-by: JoramD <j.davids@hotmail.nl>
Co-authored-by: Dabako <dabako@gmx.de>
Co-authored-by: Dabako <github@dabakoworld.de>
Co-authored-by: Abogado <regiregi22@hotmail.com>
Co-authored-by: Dedmen Miller <dedmen@users.noreply.github.com>
Co-authored-by: Lupus the Canine <tymoteusz.2000.0+GitHub@gmail.com>
Co-authored-by: Drofseh <Drofseh@users.noreply.github.com>
Co-authored-by: LorenLuke <LukeLLL@aol.com>
Co-authored-by: SzwedzikPL <szwedzikpl@gmail.com>
Co-authored-by: BrettMayson <brett@mayson.io>
2024-08-23 09:21:31 -05:00
PabstMirror
1f67058dda
Interaction - Give some feedback if action is disabled (#10244) 2024-08-23 09:12:53 -05:00
johnb432
87333a1218
CSW/Reload - Don't allow interactions with hostile CSWs (#10152)
Don't allow interactions with hostile CSWs

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-23 07:22:19 -03:00
PabstMirror
7cdafe1d10
Interaction - Add setting for blocking interaction with enemy crew (#10237) 2024-08-23 07:21:51 -03:00
johnb432
dcf49d77eb
CUP Compat - Add interaction anims to CUP vehicles (#10238)
Add interaction anims to CUP
2024-08-22 20:00:15 -05:00
johnb432
7790028aa7
RHS Compat - Add interaction anims for ammo boxes (#10242)
* Add ammo boxes interaction anims to RHS

* Fix bad inheritance
2024-08-22 19:59:48 -05:00
johnb432
f564016b4b
WS Compat - Rename WS weapon holders when realistic names is loaded (#10240)
Rename WS weapon holders
2024-08-22 12:15:20 -05:00
johnb432
53a42fc89e
General - Improve backpack interaction anim names (#10239)
Improve backpack interaction names
2024-08-22 12:14:38 -05:00
PabstMirror
afde7264ba
UI - Add keybind to hide all hud elements (#10227)
* UI - Add keybind to hide all hud elements

* Handle advFatigue stamina bar

* Update stringtable.xml

* Update docs/wiki/framework/ui-framework.md

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-08-22 12:13:54 -05:00
johnb432
82f5019488
SPE Compat - Add interaction anims to SPE vehicles (#10226)
Add interaction anims to SPE
2024-08-21 22:49:28 -05:00
johnb432
15a5e74649
GM Compat - Add interaction anims to GM vehicles (#10234)
Add interaction anims to GM
2024-08-21 22:49:06 -05:00
johnb432
1dae884fff
General - Add replacement items for editor inventory management (#10216)
Add replacement items for editor inventory management
2024-08-21 22:48:36 -05:00
Hexo
6304a9e5f3
Translation French (#10236)
* Update translate Hearing french

* update map tools

* trad fr

* correction

* Translate realisticnames

* compat_ws translate fr

* translate FR

* Update stringtable.xml

* Update addons/cookoff/stringtable.xml

space correction

---------
2024-08-21 21:16:43 -05:00
PabstMirror
b4700aeffc
Interaction - Add action to drop distant units from group (#10228)
Co-authored-by: Dystopian <sddex@ya.ru>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-08-21 22:13:29 -03:00
johnb432
e798050a00
SOG Compat - Add interaction anims to SOG vehicles (#10223) 2024-08-21 21:57:30 -03:00
johnb432
abced51bb0
WS Compat - Add interaction anims to WS vehicles (#10229) 2024-08-21 21:56:30 -03:00
johnb432
b2091f0e4d
RHS Compats - Improve some locations for interaction anims (#10235) 2024-08-21 21:55:42 -03:00
johnb432
ffba612011
Interaction - Add distance to interaction anims (#10233) 2024-08-20 19:27:28 -03:00
Mike-MF
52c19d53af
Magazine Repack - Add ability to disable repacking via class (#10232)
* Magazine Repack - Add ability to disable repacking via class

* Update addons/magazinerepack/functions/fnc_getMagazineChildren.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Bretts suggestion

* Documentation

* Apply suggestions from code review

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Review missed a line

* Fix getting number instead of config & microoptimisation

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-20 17:24:58 -05:00
johnb432
0643ca6fd9
Repair - Improve some locations for interaction anims (#10224)
Improve some locations for interaction anims
2024-08-20 14:44:47 -05:00
johnb432
c292f0ed31
Interaction - Improve interaction anims locations for bags (#10230)
Improve interaction anims locations
2024-08-20 14:44:33 -05:00
johnb432
80b2fa9a05
Vehicle damage - Code cleanup (#9831)
* Cook-off improvements

* More changes

* Update fnc_getVehicleAmmo.sqf

* Better engine fire placement

* Update fnc_detonateAmmunition.sqf

* Update XEH_postInit.sqf

* Update fnc_getVehicleAmmo.sqf

* Update events-framework.md

* Various improvements

* Separate effect handling

* Tweaks

* Update XEH_postInit.sqf

* Prevent double ammo detonation

* Fixed objects not being able to cook-off again

* Added incendiary rounds as source of box cookoff

* Converted enable setting to bool

* Fixed brackets

* Update fnc_cookOff.sqf

* Update CfgEden.hpp

* Removed GVAR(enable), added GVAR(enableFire) back

* Vehicle damage fixes

* Made hitpoint hash common

* Update fnc_addEventHandler.sqf

* Update fnc_medicalDamage.sqf

* Update fnc_handleBail.sqf

* Changed API

* Remove `CBA_fnc_getConfigEntry` as much as possible, as it's 2x slower

* More cleanup

* More cleanup

* Fix merging issues, remove turret tossing

* Update translations

* More cleanup

* Reverted some logic back to original, minor tweaks & fixes

* Fix undefined variable

* Cleanup

* Fixed bad logic

* Update addons/vehicle_damage/script_macros.hpp

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/vehicle_damage/functions/fnc_handleDamage.sqf

* Update addons/vehicle_damage/stringtable.xml

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/vehicle_damage/stringtable.xml

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/vehicle_damage/XEH_postInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-20 16:23:21 -03:00
Dart
2682778499
HEMTT - Use extends for launch presets (#10231)
Use extends for launch presets
2024-08-20 10:47:47 -05:00
Enrico Machado
962b498e6a
Translation - Improve Portuguese (#10159)
* Update stringtable.xml

* Update stringtable.xml
2024-08-19 20:31:43 -05:00
johnb432
81f44e6e7a
Realistic Names - Fix bad inheritance from #10202 (#10225)
Fix bad inheritance from #10202
2024-08-19 00:51:37 -05:00
johnb432
35658e41cc
Docs - Update Arma 3 Issues (#10207)
Update arma-3-issues.md
2024-08-19 00:50:54 -05:00
PabstMirror
1b210d80a7
workflow - fix hemtt lint, drop sqflint, fix ext clippy warnings (#10219) 2024-08-18 14:02:35 -05:00
BrettMayson
b72ce6180a
Extension - Change clipboard crate (#10221)
* extension: change clipboard crate

* forgot fmt :|
2024-08-18 09:53:11 -05:00
Grim
fcfb2121be
Common - Use lifeState check in FUNC(isAwake) (#9646)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-17 12:59:26 -03:00
Fabio Schick
22f97270f6
Kestrel4500 - Measure wind relative to player's head direction (#10215) 2024-08-17 12:57:37 -03:00
johnb432
bdf6a179ad
Artillery Tables - Fix artillery UI not refreshing when being teleported from one vehicle to another (#10217) 2024-08-17 12:56:51 -03:00
johnb432
094e235f7a
Artillery Tables - Fix artillery UI not showing if no gunner view available (#10218) 2024-08-17 12:56:19 -03:00
BrettMayson
043b3907fe
Extensions - Rust (#9015)
Co-authored-by: Pepijn Holster <pgaholster@gmail.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: LorenLuke <LukeLLL@aol.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-17 12:50:38 -03:00
BrettMayson
1cd48c52c3
HuntIR - Add Events & Animation Disable Flag (#10214) 2024-08-17 09:42:34 -03:00
johnb432
e5178fe6fd
Explosives - Use full magazine name in interaction menu (#10192)
* Force better names in explosives placing menu

* Revert "Force better names in explosives placing menu"

This reverts commit 29af35ae8bb2d6355512ce27d6c4dd94687fabeb.

* Use `displayName` instead of `displayNameShort`
2024-08-17 00:30:32 -07:00
johnb432
8e2398d7cc
Docs - Force functions to be alphabetically sorted on wiki (#10208)
Force functions to be alphabetically sorted on wiki
2024-08-16 12:44:58 -07:00
johnb432
0164b6259f
General - Add missing pretty names to components (#10211)
Add missing pretty names to components
2024-08-16 12:44:37 -07:00
PabstMirror
6572422ec7
Doc - Try to fix framework-attach event list (#10212)
* Doc - Try to fix framework-attach event list

* Update docs/wiki/framework/attach-framework.md

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-16 12:58:13 -05:00
johnb432
8dbad08838
Arsenal - Fix modParams printing messages in RPT (#10213)
Fix modParams printing messages in RPT
2024-08-16 10:17:57 -07:00
commy2
903f046810
Optics - Convert Optics to use CBA Optics (#7273)
* convert ace_optics to use cba_optics

* convert ace optics to cba optics

* Remove duplicate

* Add PIP config

* Use optics index

* Fix pboProject build

* Update CfgWeapons.hpp

* Correct SOS, adjust sizes and fix build issues

* Update addons/optics/script_component.hpp

* Corrected sizes again

* Made the scripted optics the first optics mode, fixed PIP SOS not being able to use irons

* Remove unused test object

* Readd AI stuff

visionMode is already set

* Updated some info on binos

forceOptics also already set

* Overhaul of magnifications

* Adjusted MOS & Nightforce

* Maybe this time the optics sizes will be fine... surely?

* Replace heavy optics blur with CBA one

* Added PIP names back

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-15 01:17:46 -07:00
johnb432
4014cd5539
Explosives - Remove replacement explosives (#10206)
Remove replacement explosives
2024-08-15 00:32:17 -07:00
Tim Beswick
f3e2e11693
Headless - Fix unable to transfer groups (#10203)
* Fix headless unable to transfer groups

* Switch events to use `CBA_fnc_ownerEvent`

* Update variable definitions

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-15 00:31:51 -07:00
PabstMirror
3728bc4b8b
Hearing - Fix explosions from AI fire (#10204) 2024-08-14 16:30:13 -05:00
johnb432
3229336018
Explosives - Trivial cleanup (#10205)
Explosives trivial cleanup
2024-08-14 10:53:40 -07:00
johnb432
740869e859
Realistic Names - Complete & cleanup (#10202)
Cleanup & complete realistic names
2024-08-13 09:30:42 -07:00
johnb432
a2be42ba57
Realistic Names - Add optics & vehicles compats (#10201)
Add optics & vehicles compats to realistic names
2024-08-13 04:28:24 -07:00
johnb432
62ba5ffe24
Explosives/Realistic Names - Improve CfgVehicles explosives naming (#10200)
* Improve explosives naming

* Move all ACE explosives into compat

* Update CfgMagazines.hpp
2024-08-13 04:12:52 -07:00
PabstMirror
b96d74fb11
Interact Menu - Fix self actions when handcuffed (#10188) 2024-08-13 02:19:18 -07:00
johnb432
7cd2b9820b
Docs - Update CfgVehicles ACE config entries (#10199)
* Update CfgVehicles ACE config entries

* Update ace3-config-entries.md
2024-08-12 14:27:08 -07:00
johnb432
a99c78cf87
Compats - Use EGVAR where possible (#10194)
Use `EGVAR` in compats where possible
2024-08-12 14:25:29 -07:00
johnb432
3d86fffef6
No Uniform Restrictions - Update FUNC(exportConfig) (#10198)
* Update fnc_exportConfig.sqf

* Update fnc_exportConfig.sqf

* Update fnc_exportConfig.sqf
2024-08-12 14:22:53 -07:00
johnb432
cf3a86ffc7
Medical Treatment - Notify restart requirement (#10197)
Add restart notification for convert items setting
2024-08-12 09:59:48 -07:00
johnb432
72f230a3a2
Hearing - Fix explosions not affecting hearing (#10002)
* Have explosions affect hearing

* Update fnc_explosion.sqf

* Update XEH_postInit.sqf

* Update addons/hearing/functions/fnc_explosion.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update fnc_explosion.sqf

* Make EH local

* Use sound entry instead

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-12 06:45:03 -07:00
johnb432
f3938ba0cc
Explosives - Use triggerAmmo instead of setDamage (#10182)
* Use `triggerAmmo` instead of `setDamage`

* Update docs/wiki/framework/explosives-framework.md
2024-08-12 06:18:21 -07:00
johnb432
5e65e56c5e
Wiki - Fix dependencies list on wiki (#10109)
* Fix dependencies list on wiki

* laser-guided

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Update docs/wiki/feature/xm157.md

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Moved medical_menu to medical-gui

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
2024-08-12 10:16:27 -03:00
johnb432
198c09dccd
CUP Compat - Improve explosives compat (#10193)
Updated CUP explosives compat
2024-08-12 06:15:35 -07:00
johnb432
ada7b93219
General - Use QUOTE(ADDON) for status effects (#10195)
Use ADDON for status effects
2024-08-12 06:15:09 -07:00
johnb432
43d42c85cd
Cookoff - Use triggerAmmo instead of setDamage (#10185) 2024-08-11 20:31:02 -03:00
PabstMirror
285f903b14
General - Optimize some loops with forEachReversed (#10191) 2024-08-11 20:30:08 -03:00
PabstMirror
3ff635f82d
Common - Use hashmap for canInteractWith check (#10189) 2024-08-11 20:29:33 -03:00
Grim
fff66bc27c
Medical - Make Peripheral Resistance affect blood loss (#8420)
Co-authored-by: Salluci <69561145+Salluci@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-11 20:29:11 -03:00
johnb432
c8e7b6396b
Medical Damage - Improve custom wound handling (#9310) 2024-08-11 20:28:51 -03:00
johnb432
be23ae7ecd
Medical GUI - Make separate file for keybinds (#10190)
* Make separate file for keybinds

* Add missing ;
2024-08-11 14:24:01 -07:00
johnb432
70c8322392
Aegis Compat - Overwrite some Aegis changes (#10173)
* Overwrite some Aegis changes

* Preemptively overwrite upcoming changes to Aegis
2024-08-11 08:10:48 -07:00
johnb432
b7f48a912f
IR Light - Fix bad item replacements and switching to primary weapons (#10119)
* Fix bad item replacements and switching to primary weapons

* Update addons/irlight/functions/fnc_initItemContextMenu.sqf

* Update fnc_initItemContextMenu.sqf

* Remove unused funtions

* Various fixes/tweaks

- Added a weapon parameter to `switchAttachmentMode`
- Made `switchPersistentLaser` take pointer switching into account
- Fixed IR light attachments being added to the wrong weapon
2024-08-11 08:08:50 -07:00
johnb432
ff31bc69a8
Medical AI - Prevent medics from being blocked on treatments they can't complete (#10167)
* Add tourniquet support for Medical AI

* Stop blocking start

* Renamed states, condensed `canHeal`

* Renamed `tooManyMeds` state

* Update addons/medical_ai/functions/fnc_healUnit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Change states to use singular, add states for autoinjectors & splint

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-11 08:06:59 -07:00
PabstMirror
0b4029b12f
Medical AI - AI will remove tourniquets (#10166)
* Medical AI - AI will remove tourniquets

* Medical AI - Improve tourniquet removal (for #10166) (#10178)

* Fixes & tweaks

- Have AI remove tourniquets ASAP
- Fixed bug where AI would not remove tourniquet, because it didn't have any bandages
- Allowed for more multitasking

* Allow healer to administer morphine if out of bandages

* Remove TODO comment

* Allow AI to remove tourniquets from limbs with no open wounds

* Update addons/medical_ai/functions/fnc_healingLogic.sqf

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-11 00:19:35 -07:00
Dystopian
96f81f1c9b
Interaction - Add actions based on animations (#6144)
* Add actions based on animations

* Add setting

* Add ability to set items for users

* Add actions for 1.82 changes

Add actions for backpacks, canisters, entrench tool.
Move items and backpack to WeaponHolder.

* Add RHS 0.4.6 ZIL spare

* Update to new standards

* Handle RHS BTR retread system

* Make init faster: move condition to configClasses

* Fix CUP fake anims

* Refactor

* Rework

* Rename init function

* Decrease number of classes to init

* Fix merge mistake

* Apply suggestions from code review

* Updated code for current mod structure

* Multiple fixes & tweaks

- Made anim setting require a mission restart
- Handle more types of items that can be spawned
- Prioritise adding items to inventory and only drop on ground if no inventory space
- Add more position checks to make certain no valid position are present before stopping
- If 1 item was spawned in, it's considered as success
- Disable RHS' wheel replacement only if ace_repair is loaded

* Update CfgVehicles.hpp

* cache config lookup at preStart

* Fix error

* Add text config entry for progress bar title

* Restructure interactions, improved some locations & added interaction to some missing vehicles

* Reverted preInit change

---------

Co-authored-by: jonpas <jonpas33@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-10 23:29:50 -05:00
Dart
e36363e8cc
Arsenal - Add ace_arsenal_fnc_saveLoadout as API to save loadouts (#10151)
* Added fnc_saveLoadout

* Changed to toLower for other languages

* GitHub didn't like editing the file in the browser

* Fix case-sensitive _loadoutIndex

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Unicode support

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* setVariable in case no loadouts are saved

* Fix return not happening properly

* Added scripting example

* Update docs/wiki/framework/arsenal-framework.md

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-10 12:01:12 -07:00
PabstMirror
346d56c659
QuickMount - Fix keybind (#10184) 2024-08-10 13:53:01 -05:00
johnb432
e181cffc83
RHS Compats - Remove nametags related functions being called if nametags isn't loaded (#10177)
Don't call nametags related functions if nametags isn't loaded
2024-08-10 12:58:43 -05:00
johnb432
d7c98ea366
Medical AI - Fix specific treatment items not being removed (#10179)
Fix treatment items not being removed

Bug introduced in #10158
2024-08-10 10:19:36 -07:00
johnb432
9e4bcc5d72
Explosives - Remove delayTime for explosives, as it no longer serves any purpose (#10181)
Remove `delayTime` for explosives, as it no longer serves any purpose
2024-08-10 10:06:45 -07:00
johnb432
22c71ba80e
CSW - Fix round count in GMG belt description (#10180)
* Correct round count in GMG belt

* Fixed failing CI
2024-08-10 06:48:34 -07:00
tuntematonjr
b2a3fac4b6
Medical Feedback - Add parameters to fnc_playInjuredSound (#10175)
* Additional parameters

- added parameters to allow changing distances for sounds for each severity.
- added parameter to allow unconscious units to do sounds.

* fix conditio

* Updated header formatting + minor tweaks

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-09 16:35:35 -05:00
johnb432
4db0f7de24
Interaction - Improve FUNC(switchWeaponAttachment) (#10145)
* Improve swtichWeaponAttachment

* change interact_SWA to use common_SAM (#10176)

* change interact_SWA to use common_SAM

* Directly call

* exit on bad arg

* Update fnc_switchAttachmentMode.sqf

* Minor optimisations

* Cleanup leftover code, use unit instead of target

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/interaction/functions/fnc_switchWeaponAttachment.sqf

* Revert some unnecessary changes

* Remove sound, as it was part of the CBA attachment switching & pass missing parameter

* Add sound back, to indicate new attachment

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-09 14:08:07 -07:00
johnb432
5afe06999f
Chemlights - Add pretty name for addon (#10174)
Add pretty name for chemlights addon
2024-08-08 12:27:27 -03:00
johnb432
0b2a8f23e6
Vehicle Damage - Let AP trigger ERA/SLAT (#10169)
Let AP trigger ERA/SLAT
2024-08-08 12:26:52 -03:00
johnb432
7838dea543
Common - Improve persistent lights/lasers (#10118)
* Improve persistent lasers

* Update addons/common/functions/fnc_switchPersistentLaser.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Fix inventory changes toggling laser, removed alignment code

* Update addons/common/functions/fnc_switchPersistentLaser.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Added API for setting weapon lights/lasers

* Fix undefined variables

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-08 01:01:39 -07:00
johnb432
80a310d4c6
Vehicles - Remove unneeded magazines (#10172)
Remove unneeded magazines
2024-08-08 00:29:41 -07:00
johnb432
b9a361fd39
Vehicle damage - Fix ERA/SLAT not being detected (#10168)
* Fix ERA/SLAT not being detected
2024-08-06 11:15:01 -05:00
johnb432
973cfdd1c4
Common - Move missing compats warning to pre start (#10162)
* Remove missing compats warning

* move to common/preStart

* ?

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-06 00:48:10 -07:00
johnb432
92e10bc578
Fix overlapping CSW interaction position for SPG-9, improve positions for Mk19 and DSHKM (#10165)
Fix overlappting CSW interaction position for SPG-9, improve Mk19 and DSHKM
2024-08-06 00:33:52 -07:00
Fabio Schick
f4f2dbaad9
Docs - Add missing info to Interaction Menu Framework (#10160)
* Interaction Exceptions

* Additional Action Parameters
2024-08-05 17:33:00 -05:00
johnb432
c31ef9e16b
Medical AI - Add command actions to heal injured units (#10164)
* Add AI command menu for healing

* Moved actions to separate function

* Minor cleanup
2024-08-05 02:39:35 -07:00
johnb432
cd678c5b90
Medical AI - Add tourniquet support (#10158)
Add tourniquet support for Medical AI
2024-08-05 02:39:01 -07:00
Grim
4226cd383e
Interact Menu - Add inheritance support to removeActionFromClass (#8396)
* Add inheritance & exclusion support

* Update documentation in wiki

* additional check for parent class in findIf

* forEach instead of count

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* condition for children of excluded classes

* touch everything but the params check

* apply configName in same line

* fix param data type for _excludedClasses

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/interact_menu/functions/fnc_removeActionFromClass.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Fix & formatting

* Fix missing _x & headers, remove invalid classes

---------

Co-authored-by: Salluci <69561145+Salluci@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-05 02:38:46 -07:00
amsteadrayle
c491b78468
Recoil - Tweak launcher recoil to be more realistic (#9528)
* First pass at RPG recoil tweaks

* Crank up camera shake when using launcher

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-08-05 02:38:26 -07:00
johnb432
2db56cc4bb
Advanced Ballistics/Field Rations - Notify restart requirement (#10161)
Add notification for settings requiring restart
2024-08-03 10:16:46 +02:00
Will/KJW
90d855c2c5
Nightvision - Improve NVG Brightness adjustment limits (#10136)
* Update fnc_changeNVGBrightness.sqf

* Update XEH_postInit.sqf

* Update addons/nightvision/XEH_postInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update XEH_postInit.sqf

* Update fnc_changeNVGBrightness.sqf

* Update nightvision-framework.md

* load order independence

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-08-02 09:52:44 -03:00
johnb432
6a25e9365a
Safemode - Refactor (#10111)
* Refactor safemode

* Further improvements and fixes

* Update XEH_postInit.sqf

* Don't allow binoculars to be set to safe

* Add API for getting weapon safety status

* Update fnc_jamWeapon.sqf

* Added doc

* Update fnc_playChangeFiremodeSound.sqf

* Update addons/overheating/functions/fnc_jamWeapon.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/weaponselect/functions/fnc_selectWeaponMode.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-08-02 13:59:18 +02:00
Enrico Machado
4e56d58210
Translations - Add and Improve Portuguese (#10155) 2024-07-30 20:45:31 -05:00
johnb432
98da279e8f
Medical AI - Give blood in Cardiac Arrest before doing CPR (#10154)
Give blood in CA if needed before doing CPR
2024-07-29 15:04:59 +02:00
PabstMirror
7e93715bcc
Medical - Gracefully handle bad configs in testHitpoints (#10156) 2024-07-29 15:04:36 +02:00
PabstMirror
a6ab050a07
Dogtags - Rename inventory items via CBA (#10130)
* Dogtags - Rename inventory items via CBA

* Update addons/dogtags/XEH_postInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-07-28 11:43:03 -05:00
johnb432
56eae4060c
CSW - Improve function headers & comments (#10149)
Code formatting changes from 9234
2024-07-27 19:42:31 +02:00
PabstMirror
e3d8f40538
Interaction - Show all possible modes for an attachment (#8154)
* Interaction - Show all possible modes for an attachement

* Move attach & detach actions under item action

* Remove switching from PIP to regular 2D

* Remove attachment name from attach/detach actions

* Fixed typo in variable name

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-07-27 19:37:33 +02:00
PabstMirror
aa6e5c30ec
Fire - Fix medical macros in compiled sqfc (#10147)
* Fire - Fix medical macros in compiled sqfc

* Update addons/fire/functions/fnc_burnSimulation.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-07-27 19:16:49 +02:00
johnb432
b7cd72e936
CSW - Fix belt linking (#10148)
* fix unloading to units with full inventory

* fix belt linking issues

* Enhance workaround

* Use unit instead if magSource is null

---------

Co-authored-by: Salluci <salluci.lovi@gmail.com>
2024-07-27 19:15:50 +02:00
PabstMirror
ba22c407e3
Common - Add ace_common_fnc_switchAttachmentMode (#10135)
* Common - Add `ace_common_fnc_switchAttachmentMode`

* Update addons/common/functions/fnc_switchAttachmentMode.sqf

* Update addons/common/functions/fnc_switchAttachmentMode.sqf

* playSound only for ACE_player

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-07-27 19:15:28 +02:00
johnb432
8eefffe811
Recoil - Code cleanup (#10150)
* Recoil code cleanup

* Store recoil values as numbers in config, only `compile` if needed

* Updated header

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-07-27 14:43:07 +02:00
johnb432
b85150e6eb
Explosives - Only add "detonate all" action for dead man switch when necessary (#10146)
Only add detonate all when necessary
2024-07-25 20:34:26 +02:00
johnb432
e99d6d9381
Medical AI - Make AI take tourniquets into account when medicing (#10142)
* Make AI take tourniquets into account when medicing

* Update fnc_healingLogic.sqf
2024-07-25 07:49:45 +02:00
johnb432
bfbaae65e1
Arsenal - Fix mission and campaign insignia (#10143) 2024-07-24 20:17:22 -03:00
johnb432
74de646a02
Medical AI - Fix splints not being applied in special circumstance & setting adding multiple EH (#10141)
Several medical AI fixes

- Not applying splints if too many medications were taken
- Potential nil for _target
- Setting could add multiple EH, require mission restart
2024-07-24 15:04:53 +02:00
johnb432
cb3c18c2fb
Medical AI - Header fixes (#10140)
Header fixes for medical AI
2024-07-23 15:28:40 +02:00
johnb432
43c1f97dfa
Laser - Remove unnecessary EGVAR (#10139)
Remove unnecessary EGVAR
2024-07-22 19:27:26 +02:00
johnb432
db339ab8e3
Cargo - Reenable UAV AI when on ground when paradropped (#10137)
Reenable UAV AI when on ground when paradropped
2024-07-22 19:15:43 +02:00
johnb432
b6e9cabc34
Cargo & Dragging - Disable UAV AI when being dragged, carried or cargo (#10100)
* Disable UAV AI when being dragged, carried or cargo

* Update addons/common/functions/fnc_disableAiUAV.sqf

* Improve dragging/carrying conditions, fixed duplicate JIP
2024-07-22 08:38:39 +02:00
PabstMirror
05c7f84b01
Medical Engine - Allow disabling seat locking on vehicle types (#10123) 2024-07-21 14:31:57 -05:00
johnb432
3f5a2ee64b
RHS Compats - Remove silent ace_hearing dependency from RHS compats (#10134)
Remove hearing silent hearing dependency from RHS compats
2024-07-20 21:19:18 +02:00
johnb432
f6c5425733
RHS Compats - Add common to loadorder (#10133)
Add common to RHS compat loadorder
2024-07-20 21:10:16 +02:00
johnb432
4cb358ebf2
Dogtags - Add missing private (#10132)
Update fnc_getDogtagItem.sqf
2024-07-20 10:26:01 +02:00
johnb432
a7ce63a536
Fire - Remove medical_engine dependency (#10122)
* Remove medical dependency from fire

* Update initSettings.inc.sqf
2024-07-20 08:37:04 +02:00
johnb432
5d133bd793
Dogtags - Code cleanup (#10097)
* Clean up dogtags

* Only allow taking of dogtags if unit has space

* Fixed upper case T

* Stop throwing error

* Reverted to case insensitive method of checking

* Remove unused files

* More cleanup & fixes

- Better check for taking dog tags until 2.18 comes
- Changed parent condition from `canTakeDogtag` to `canCheckDogtag`
- Register EH only where necessary

* Update CfgEventHandlers.hpp

* More header cleanup
2024-07-20 08:29:17 +02:00
johnb432
05ab1bbe99
Dragging - Fix dragging/carrying failing for items in ViV (#10128)
* Unload ViV before dragging/carrying

* Update addons/dragging/functions/fnc_carryObject.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Use lazy eval to check if item was unloaded

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-07-20 08:26:53 +02:00
johnb432
8ab36f64ff
Quickmount - Fix quickmount for vehicle interactions (#10126)
* Fix quickmount for vehicle interactions

* Update addons/quickmount/functions/fnc_getInNearest.sqf
2024-07-20 08:15:15 +02:00
johnb432
5cada7d397
General - Remove "SwitchWeapon" spam (#10113)
* Remove "switchWeapon" spam

* Update fnc_startDragLocal.sqf

* Don't add invalid fire modes

* Tweaks & fix
2024-07-20 08:13:42 +02:00
johnb432
68738316c2
Dragging - Remove weight calculation workaround (#10117)
* loadAbs has been fixed

* Update fnc_getWeight.sqf
2024-07-19 19:13:44 +02:00
johnb432
37d7c4c544
Interaction - Hide push interaction if target is in ViV cargo (#10127)
Hide push interaction for ViV cargo
2024-07-19 18:26:14 +02:00
OverlordZorn
2c3396a4e8
Documentation - Add ACE_suture entry to list of classnames (#10125)
Update class-names.md
2024-07-19 14:36:37 +02:00
Dart
8f84df77d0
Sitting - Add config overwrite for random animation pool (#10120)
* Add config property animation overwrite

* Update addons/sitting/functions/fnc_getRandomAnimation.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Fix header

* Update addons/sitting/functions/fnc_getRandomAnimation.sqf

* Update function call

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-07-18 16:53:34 -05:00
johnb432
f4272f0e36
Spectator - Remove spectator lights when exiting spectator (#10114)
Remove spectator lights when exiting spectator
2024-07-17 10:42:37 +02:00
Dart
66c31928ab
General - Fix case in event handler commands (#10121) 2024-07-17 01:12:01 -05:00
V1nsyara
ec5b84c278
Translation - Small update Russian (#10115)
* Translation - Update Russian for new features

* Up to date translate RU

* Small update medical treatment

* resolve problem

* i`m cry

i hate this conflict
2024-07-14 21:46:14 -05:00
Apricot
63d1ab82a7
Translations - Improve Japanese (#10112)
* Improve Japanese

* Tweaks

* bit tweak

* even more tweak

* Update stringtable.xml

* Update stringtable.xml
2024-07-13 19:22:06 -05:00
johnb432
f65138f65e
Casings - Fix settings (#10110) 2024-07-07 11:41:10 -03:00
johnb432
edc7e9af3e
Dogtags - Add context menu action to check dog tag (#10101)
* Broadcast dogtag info globally so that arsenal can use it

* Broadcast changes incrementally

* Add context menu option for dogtags
2024-07-04 00:39:08 -07:00
johnb432
3745305323
Dogtags - Fix arsenal not showing dogtag info in multiplayer (#10095)
* Broadcast dogtag info globally so that arsenal can use it

* Broadcast changes incrementally

* Update addons/dogtags/XEH_postInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/dogtags/functions/fnc_getDogtagItem.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Add EH only on necessary machines

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-07-04 00:32:37 -07:00
johnb432
4d0641abb8
Dogtags - Improve displaying dogtags from bodies with no name (#10096)
Improve displaying dogtags from bodies with no name
2024-07-03 09:50:08 -07:00
johnb432
dae2c5b465
Common - Clean up ace_common_fnc_hasItem & ace_common_fnc_hasMagazine functions (#10108)
* Clean up hasItem & hasMagazine functions

* Replace EFUNC

* Update fnc_hasItem.sqf
2024-07-03 08:39:04 -07:00
johnb432
7b0e5b6416
Common - Fix ace_common_fnc_uniqueItems (#10107)
Fix `ace_common_fnc_uniqueItems`
2024-07-03 08:30:41 -07:00
johnb432
b714c8bce2
Nametags - Only display talking waves when unit is alive and conscious (#10106)
Only display waves when unit is alive and conscious
2024-07-03 02:02:43 -07:00
johnb432
ee0e947611
General - Use ace_common_fnc_isAwake where possible (#10098)
* Use `ace_common_fnc_isAwake` where possible

* Revert bad change
2024-07-02 12:38:14 -07:00
johnb432
516eb48c93
Dogtags - Stop throwing error when trying to take dog tags (#10103)
Stop throwing error
2024-07-02 11:16:28 -07:00
Psycool
45f9301019
Korean translation updated (#10104)
* KoreanTranslation

Someone has returned all the translations in Korean to English. there is no need to return them.

* koreantranslation

* Korean Typo Fix

* Korean Translation

* Update stringtable.xml

* Korean Translation Added

Added Korean translation related to Cargo Refuel

* Merge branch 'master' of https://github.com/Psycool3695/ACE3

* Korean translation Add/Updated

* Fixed wrong strings

* Korean translation improved

* Korean translation updated

* Korean translation updated

* Fix Merge

* Update stringtable.xml

* Update stringtable.xml

* Korean translation updated

* Korean translation minor fix

* Korean translation fixed

* Korean translation updated

* Update stringtable.xml

* Spacing fixed

* Korean translation updated

* Spacing fixed

* Korean translation updated

* Korean translation updated

* Korean translation updated

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-07-02 13:14:19 -05:00
Fabio Schick
aecafe673b
Aircraft - Drone "Follow Unit" Waypoint Action (#9889)
* Fix "Recharge" interaction showing on destroyed drone

* Add "Follow Unit" action

* Improve condition check

* UGV Following via PFH that updates WP Pos

* Use HOLD WP for all Follow Actions

Since FOLLOW WP would stop working on AI Soldiers after some time.

* Allow selecting a follow distance

* Follow Distance under separate interaction, just like Loiter Alt

Only visible when a HOLD waypoint is selected, which is pretty much always going to have been created by the "Follow" interaction.

* Localize "Follow" Interaction

* Show structuredText Hint when following/changing distance

* Variable for cursorTarget Reuse

* Better isKindOf condition use

* Make "Ship"-kind vehicles followable

* Clean up Comments and systemChat Debugs

* Comment explanation for custom PFH solution over vanilla "Follow"-WP

* Trim excess brackets from setWaypointPosition argument

Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com>

* Broader determination for UGV follow distances

Co-Authored-By: PabstMirror <pabstmirror@gmail.com>

* Prevent infinite PFH loop if follow target is deleted

Co-Authored-By: PabstMirror <pabstmirror@gmail.com>

* Delete Follow WP when PFH terminates

* The ternary rules

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Various requested changes

Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-07-02 02:16:48 -07:00
johnb432
ba47c12a97
Dogtags - Drop dogtag on ground if unit doesn't have inventory space (#10094)
* Drop dogtag on ground if unit doesn't have inventory space

* Only allow taking of dogtags if unit has space
2024-07-02 02:16:27 -07:00
johnb432
71afce53c1
Dogtags - Make "Dog Tag" consistent (#10099)
Make Dog Tag consistent
2024-07-01 09:56:00 -07:00
johnb432
cb40c8ec5d
Vehicle damage - Add missing documentation (#10093)
Update vehicledamage-framework.md
2024-06-28 10:43:13 -07:00
johnb432
a30afe69b7
Interaction - Disable magazine passing to dead and unconscious units (#10091)
* Disable magazine passing to dead units

* Disable for unconscious units as well
2024-06-28 05:41:04 -07:00
johnb432
bfa23f01db
Refuel - Remove unused variable (#10089)
Update XEH_postInit.sqf
2024-06-26 05:02:19 -07:00
Apricot
ad4af0d553
Translations - Improve Japanese (killtracker/overpressure) (#10088)
killtracker/overpressure
2024-06-25 21:43:24 -05:00
Fabio Schick
b013ab81d5
Translations - Italian and German (#10087)
* Grenades italian+german translation

* Fix english typo in MicroDAGR

* Medical Treatment italian+german translations

* Realisticnames italian+german translations

* Hitreactions italian+german translations

* Fix italian typo in 3 addons

* Cookoff italian+german translations

* Killtracker italian+german translations

* Zeus italian+german translations

* Overpressure italian+german translations

* Compat RF italian+german translations

* Realisticnames Fix italian+german oversight

* Compat WS italian+german translations

* Compat CUP-CSW italian translations

* Compat CUP-NVG italian translations

* Fixup overpressure
2024-06-24 16:44:41 -05:00
PabstMirror
5c8ea65f7c
Common - Update header for addPlayerEH (#10086) 2024-06-23 18:12:30 -05:00
Fabio Schick
bdb6c7c69c
Compat RHS/Hellfire - Use RHS models when loaded (#10076)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-06-23 00:36:41 -03:00
PabstMirror
aed2222b81
Artillery Tables - Support for ammo that has native airFriction (#10059)
* Artillery Tables - Support for ammo that has native `airFriction`

* fix comment

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/artillerytables/functions/fnc_rangeTableOpen.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* replace if block with select const

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-22 22:34:34 -05:00
V1nsyara
05d6327e5e
Translation - Update Russian for small features (#10085)
* Translation - Update Russian for new features

* Up to date translate RU
2024-06-22 20:24:00 -05:00
Psycool
c9e82afff7
Korean translation updated (#10077)
* KoreanTranslation

Someone has returned all the translations in Korean to English. there is no need to return them.

* koreantranslation

* Korean Typo Fix

* Korean Translation

* Update stringtable.xml

* Korean Translation Added

Added Korean translation related to Cargo Refuel

* Merge branch 'master' of https://github.com/Psycool3695/ACE3

* Korean translation Add/Updated

* Fixed wrong strings

* Korean translation improved

* Korean translation updated

* Korean translation updated

* Fix Merge

* Update stringtable.xml

* Update stringtable.xml

* Korean translation updated

* Korean translation minor fix

* Korean translation fixed

* Korean translation updated

* Update stringtable.xml

* Spacing fixed

* Korean translation updated

* Spacing fixed

* Korean translation updated

* Korean translation updated

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-06-22 14:47:23 -05:00
johnb432
56016a4816
Vehicle Damage - Add turret tossing again (#9989)
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
2024-06-22 15:08:43 -03:00
johnb432
f45dff8a09
Fire - Mini-Rewrite (#9757)
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-06-22 15:07:36 -03:00
johnb432
f86e882b18
Advanced Fatigue - Various improvements (continuation of #5723) (#9714)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: ulteq <ulteq@web.de>
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-06-22 14:53:08 -03:00
johnb432
cd66f495ad
CSW - Improve tripod and weapon disassembly (#9915)
* Add disassembly for tripods when players have occupied launcher slots

* Update fnc_assemble_canDeployWeapon.sqf

* Update fnc_assemble_canPickupWeapon.sqf

* Revert file renaming (see #9777)

* Correct headers

* Update fnc_canPickupTripod.sqf

* Fixed checks and eject dead bodies

* Invert checks
2024-06-22 19:39:36 +02:00
johnb432
1f5044aabd
CSW - Improved weapon attachments handling (#9904) 2024-06-22 14:03:32 -03:00
johnb432
18ea360b1e
Cargo - Add check for invoking ace_cargoAdded EH only if cargo was actually added (#10084)
Only invoke cargoAdded EH if cargo was actually added
2024-06-22 12:18:28 -03:00
johnb432
7ea2aab2c9
Common - Improve PBO checking (#9266)
* Update PBO checking

* Added kicking of clients without ACE loaded

* Update fnc_errorMessage.sqf

* Update fnc_checkVersionNumber.sqf

* More compatibility for #9568

* Cleanup

* Minor cleanup + added server source

* update outdated/not present error message

* check version number fixes

* Update fnc_errorMessage.sqf

* Changed error names

Server is always right, client has either older or newer versions, or missing or additional addons

* Improved ACE detection method

* Tweaks and fixes

* Try another approach

* Update events-framework.md

* Update XEH_postInit.sqf

* Update fnc_checkVersionNumber.sqf

* Removed check for non-ACE clients

* Update XEH_postInit.sqf

* Cleanup

* Remove rogue change

* Improved message display in systemChat

* Update fnc_checkPBOs.sqf

* Removed loop variable initialisers

* Fixed header

* Updated headers

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-06-22 15:52:59 +02:00
Cyruz
db6c4a72a6
Cookoff - Fix incorrect parent class in cookoff sounds (#10083)
Fix incorrect parent

Co-authored-by: Cyruz143 <root.cyruz@gmail.com>
2024-06-21 12:06:44 -03:00
bluefield
1439680795
Overpressure - Separate backblast and overpressure range coefficient (#10070)
* feat: separate overpressure and backblast configurations

* documentation: remove undefined return

* typo: trace macro padding

* refactor: add range<number> return

* refactor: reuse return values for overpressure coef

* refactor: reuse return values for backblast coef

* whitespace

Co-authored-by: Drofseh <Drofseh@users.noreply.github.com>

* headers

Co-authored-by: Drofseh <Drofseh@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* feat: change backblast limit to 0

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* remove: deleted ACE_Settings.hpp

* fix: update postInit.sqf event handler to register new GVARs

* fix: remove `ACE_Settings.hpp`

* typo: add spacing

Co-authored-by: Drofseh <Drofseh@users.noreply.github.com>

* typo: fix spacing

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* feat: switch distanceCoef minimun value to 0

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* typo: update the slider checks with new minimuns

temporary solution until i figure out the EH

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* feat: new stringable elements

* Update stringtable.xml

* Added translations

* Switched order of settings to match age of settings

* setting require restart, split adding firedEH

* Added notifications about mission restart

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: Drofseh <Drofseh@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-06-20 22:30:33 +02:00
Kex
c4fb858c1d
Medical - Refactor target blood pressure (#10081)
Refactor target blood pressure
2024-06-20 13:19:14 -05:00
Apricot
5ea202ce25
Compat RF - Improve/Change RF Realistic Name (#10071)
* Update RF Realname Stringtables

Add HEMMT Fire Truck
Change Puma family naming and add missing variation

* typo fix

* Tab to space I hate this

* Update stringtable.xml

Import HEMTT Fire Truck localization from RF
Add "Container" to AMOS. cuz that is not just AMOS...

* Uppercase and add rifle the HERA H6

* add space start of comment

* Add "ASW" to Wildcat AH-11F

For distinction with WY-55(Vanilla Wildcat) and AH-11F (RF Wildcat)

* Remove "Rifle" from H6

Does it really need? Probably not.
2024-06-20 13:01:28 -05:00
Grim
c8be3a4e05
Docs - Clarifiy ! operator usage in Coding Guidelines (#10080)
coding guidelines brackets
2024-06-18 12:26:24 -03:00
Mike-MF
1c6c4d6bff
All - Fix parentheses around code (#10073)
* Fix Brackets around code

* Update fnc_handleFired.sqf

* Shouldn't have changed this one

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-06-18 14:08:03 +00:00
johnb432
8fc093de8f
Grenades - Code cleanup (#9979)
* Improved various aspects of grenades

* Update addons/grenades/functions/fnc_flashbangExplosionEH.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Update addons/grenades/functions/fnc_incendiary.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Update addons/grenades/functions/fnc_incendiary.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Update fnc_flashbangExplosionEH.sqf

* More cleanup

* Update fnc_incendiary.sqf

* Update fnc_incendiary.sqf

* Update fnc_flashbangThrownFuze.sqf

* Update fnc_flashbangThrownFuze.sqf

* Update addons/grenades/functions/fnc_nextMode.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/grenades/functions/fnc_flashbangExplosionEH.sqf

* Update addons/grenades/functions/fnc_incendiary.sqf

* Removed fix that is included in another PR

* Update fnc_incendiary.sqf

* Messed up merge conflict resolution

---------

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-06-18 01:05:01 -07:00
Grim
95b7951919
General - Use variable for checking if medical is enabled (#10063) 2024-06-18 00:07:38 +00:00
johnb432
421071027e
Common - Add wheel hitpoint function (#10075)
* Add wheel hitpoint function

* Moved cache to missionNamespace
2024-06-17 10:31:35 -07:00
PabstMirror
c28a3d6cdf
Kill Tracker - Add setting to show kills from vehicle to crew (#10069)
* Kill Tracker - Add setting to show kills from vehicle to crew

* Update addons/killtracker/XEH_postInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-16 22:04:40 -05:00
johnb432
f3722bf5e8
Cookoff - Fix engine fire not starting (#10074)
Fix engine fire not starting
2024-06-15 20:59:01 -05:00
Mike-MF
2dc0cd4fc4
Documentation - Remove Hashes from Coding guidelines (#10072)
Remove Hashes from Coding guidelines
2024-06-14 16:21:53 -05:00
johnb432
7a6c837f1b
Headless - Add warning about duplicate loadout validation (#9878)
* Warn users about duplicate loadout validation

* Update XEH_postInit.sqf
2024-06-14 20:02:13 +02:00
johnb432
34362d48eb
Grenades - Fix incendiary grenades damaging invulnerable objects (#10068)
Disable damage from incendiaries when object is invulnerable
2024-06-13 09:49:31 -07:00
PabstMirror
d4d69b9141
Medical Engine - Fix death animation hash keys (#10067) 2024-06-13 14:11:21 +02:00
Mike-MF
690ee55369
Compat CUP Units - Goggles Compatibility (#10065) 2024-06-13 14:10:20 +02:00
PabstMirror
70b0a4c434
Medical - Cleanup refs to hdBracket (#10064) 2024-06-11 14:37:43 -03:00
Grim
59af3e1f6d
General - Change CBA Namespaces to HashMap (#8801)
* medical_treatment

* advanced_throwing

* common, csw

* Update fnc_replaceRegisteredItems.sqf

* Sanitised numerous components

* Update XEH_postInit.sqf

* Update XEH_postInit.sqf

* FUNC -> LINKFUNC

* Changed tagging hashmap

* Reverted some changes

* Reverted some changes

* Update XEH_clientInit.sqf

* Tweaks and fixes

* Fix number replacements

* Minor cleanup

* Update fnc_getMagazineName.sqf

* Update fnc_getMagazineName.sqf

* Minor improvement

* Made factions case-sensitive and added `toLowerANSI` to be safe

* Update fnc_getDetectedObject.sqf

* Update addons/common/functions/fnc_actionKeysNamesConverted.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Throw error if item doesn't exist

---------

Co-authored-by: Salluci <69561145+Salluci@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-11 12:34:32 -03:00
PabstMirror
898daff7f6
General - Cleanup event capitalization (#10062) 2024-06-11 08:00:50 -07:00
johnb432
9760095c42
Grenades - Fix how incendiary grenades do damage to vehicles (#9983)
* Allow incendiary grenades to damage multiple vehicles

Disable incendiaries damaging invulnerable vehicles

* Apply fire damage to vehicles even after grenade detonation

* Update fnc_damageEngineAndWheels.sqf

* Update fnc_incendiary.sqf

* Update fnc_damageEngineAndWheels.sqf

* british people don't exist

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-06-11 07:59:36 -07:00
Grim
2bd1f39de7
Medical - Add ace_medical_enabled variable for future-proofing API (#9996)
* add ace_medical_enabled setting

* Update addons/medical_engine/XEH_preInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-11 11:46:14 -03:00
Grim
a85074a797
Medical Engine - Remove ACE_HDBracket hitpoint (#9732)
* Medical Engine - Remove ACE_HDBracket hitpoint

* skip context 4

* move checks to vars

* skip uav/logic entities

* add check for arm/leg hitpoints

* Update addons/medical_engine/functions/fnc_handleDamage.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* don't skip context 2

* clearer custom hitpoint array name

* reenable compile cache

* remove debug mode

* lazy eval

* whitespace

* update comment

* Update fnc_handleDamage.sqf header

* Update addons/medical_engine/functions/fnc_handleDamage.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/medical_engine/XEH_postInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* update hitpoint test

* missing "

* Update addons/medical/dev/test_hitpointConfigs.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-11 11:11:28 -03:00
Apricot
c862c47617
Translations - Improve Japanese (Mortar and some) (#10061)
Tweaks
2024-06-10 21:29:28 -05:00
V1nsyara
41d6cae93b
Translation - Update Russian for new features (#10060) 2024-06-10 21:28:30 -05:00
Nilia119
d66c3904d0
Translation - Add Missing German (#9975)
* Added Missing German Translation

* Improved German Translation

* Update Medical_treatment

* Update Medical_treatment stringtable.xml

* Update addons/common/stringtable.xml

Co-authored-by: BaerMitUmlaut <BaerMitUmlaut@users.noreply.github.com>

* Update stringtable.xml

* Update stringtable.xml

* Update stringtable.xml

* Update stringtable.xml

* Update addons/arsenal/stringtable.xml

---------

Co-authored-by: BaerMitUmlaut <BaerMitUmlaut@users.noreply.github.com>
Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
2024-06-09 18:21:36 -05:00
Apricot
46e840b5a2
Translations and Compat - Improve Japanese and CDLC WS/RF localization (#10058)
* Update Japanese

* rename smoke

* Leo2SG

* Rename FAL Para to FAL OSW Para

* Fix wood as woodland in japanese

* change camo to aaf camo in jp

* Rename RF R1 to equalize with WS R1

* Add dedicated name config VRCO-S

* Add stringtable for VRCO-S
2024-06-09 18:21:00 -05:00
PabstMirror
97bc371f5c
Common - Add addPlayerEH for adding EHs to ace_player (#10056)
* Common - Add `addPlayerEH` for adding EHs to ace_player

* Update fnc_addPlayerEH.sqf

* convert ui to use new func
2024-06-09 18:20:39 -05:00
PabstMirror
130348d3a5
Hit Reactions - Prevent AI's hitpart EH running on all clients (#10057)
also dynamically add ehs
2024-06-09 18:20:17 -05:00
Mike-MF
565d64d50e
Reaction Forces Compatibility (#10016)
* Reaction Forces Compatibility

* Fix Desert Eagle Name, add RAM 1500 variants

* Mortars, Drone and lower cased Ram because thats how baer likes it
2024-06-06 16:12:49 -05:00
Will/KJW
33dc7e3dbd
Hit Reactions - Add weapon dropping on arm hit (#9539)
* Create fnc_checkWeaponDrop.sqf

* Update fnc_checkWeaponDrop.sqf

* Create XEH_postInit.sqf

* Update XEH_postInit.sqf

* Update XEH_postInit.sqf

* Update fnc_checkWeaponDrop.sqf

* fix spelling issue

* Update initSettings.sqf

Add weaponDropEnabled setting

* Update stringtable.xml

* Update fnc_checkWeaponDrop.sqf

* Update initSettings.sqf

Forgot a bracket

* Add weapon drop chance setting

* Update XEH_postInit.sqf

* Update CfgEventHandlers.hpp

actually make it run postinit

* Update XEH_PREP.hpp

* Update stringtable.xml

* Update initSettings.sqf

No need, set chance to 0

* Update XEH_postInit.sqf

already comparing against chance, can just set to 0

* Update initSettings.sqf

* Update stringtable.xml

* Update XEH_postInit.sqf

* add arm hit chance

fix weapon thing too

* Update stringtable.xml

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* appearance stuff

* Update addons/hitreactions/initSettings.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* kjw's poor arithmetic

* Update fnc_checkWeaponDrop.sqf

wrong check

* remove systemchat debug

whoops

* Update fnc_checkWeaponDrop.sqf

* Update XEH_postInit.sqf

* Update fnc_checkWeaponDrop.sqf

* Early exit, wait for clear

* Make default setting 0

* Update script_component.hpp

* Update XEH_postInit.sqf

* Update script_component.hpp

* Update XEH_postInit.sqf

* Update XEH_postInit.sqf

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

* Update XEH_postInit.sqf

Unsure if exitWith in postInit is proper? Seems better than nesting all of that in another scope imo

* Update XEH_preInit.sqf

* Update fnc_checkWeaponDrop.sqf

* Update addons/hitreactions/XEH_preInit.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update hitreactions.md

* Update hitreactions.md

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hitreactions/initSettings.sqf

* Update XEH_postInit.sqf

* Update addons/hitreactions/XEH_postInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hitreactions/XEH_postInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update XEH_postInit.sqf

* Update XEH_postInit.sqf

* Update fnc_checkWeaponDrop.sqf

* Spacing fixes

* Update addons/hitreactions/XEH_postInit.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Take _hitEntity into account if exists

* Update fnc_checkWeaponDrop.sqf

_didHitGun will no longer ever be true

* Minor component cleanup

* Removed gun hits, added double hit detection

* Decouple AI and player probabilities

* Tweaks and fixes

* Update XEH_PREP.hpp

* Add missing param

* Fixed bugged state AI are in after using TakeWeapon

* Fixes and cleanup

* Made API clear, moved undroppable to config entry

* Update fnc_checkWeaponDrop.sqf

* Check for Zeus RC and avoid `setUnitLoadout`

* Expand `addWeapon`'s capabilities

* Cleaned up `addWeapon`

* Removed weapon replacement as it's apparently not necessary

* Defined undefined variable

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-06 04:49:15 -07:00
johnb432
c44a1e7ea7
Cookoff - Mini-Rewrite (#9758)
* Cook-off improvements

* More changes

* Update fnc_getVehicleAmmo.sqf

* Better engine fire placement

* Update fnc_detonateAmmunition.sqf

* Update XEH_postInit.sqf

* Update fnc_getVehicleAmmo.sqf

* Update events-framework.md

* Various improvements

* Separate effect handling

* Tweaks

* Update XEH_postInit.sqf

* Prevent double ammo detonation

* Fixed objects not being able to cook-off again

* Added incendiary rounds as source of box cookoff

* Converted enable setting to bool

* Fixed brackets

* Update fnc_cookOff.sqf

* Update CfgEden.hpp

* Removed GVAR(enable), added GVAR(enableFire) back

* Update initSettings.inc.sqf

* Update events-framework.md

* Update addons/cookoff/functions/fnc_cookOffEffect.sqf

* Restructured, redid API events

* Fix effect for JIP, minor optimisations

* Removed `cbaSettings_settingChanged`

* Renamed variables, tweaked string table entries

* Update fire damage #9991

* Capitalize comments again

* Fix cookoff for very short durations and fix effect removal being too quick
2024-06-05 12:36:39 -07:00
johnb432
73111fa0fd
Nametags - Add documentation (#10055)
Create nametags-framework.md
2024-06-05 08:51:14 -07:00
johnb432
738a32dba9
Gunbag - Optimise weapon taking/storing code (#10053)
Optimise gunbag code
2024-06-05 06:22:19 -07:00
johnb432
06f47e600d
Cookoff - Change cook-off fire damage (#9991)
Increase cookoff fire damage
2024-06-05 06:22:09 -07:00
johnb432
29728352e2
Rearm - Optimise getting magazine names (#10052)
* Optimise getting rearm magazine names

* Replace using regex and localize CSW entries

* Added comments about prefix
2024-06-04 23:32:41 -07:00
Mike-MF
7c689bdff7
Compat WS - Update realistic names (#10014)
* Compat WS - Update realistic names

* Fix duplicate class

* WS 1.1.3

* alter SLR para barrel length

* RPG-32
2024-06-03 05:52:59 -07:00
PabstMirror
fe9f59bed7
Refuel - Fix for SOG/SPE (#10049)
* Refuel - Fix SOG/SPE Compats

* fix export

* Added missing fuel sources, improved some existing hook positions

* Removed outdated todo

* Add default code if refuel isn't loaded

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-06-03 02:00:12 -07:00
johnb432
60eabda47e
Vehicle Damage - Add API to prevent AI from dismounting from immobile vehicles (#9990)
* Add API to prevent AI from dismounting from immobile vehicles

* Update vehicledamage-framework.md
2024-06-01 09:55:56 -07:00
johnb432
99bb6983bb
Common - Improve addWeapon (#10051)
Improve `addWeapon`
2024-06-01 09:52:18 -07:00
johnb432
1cca2db964
General - Cleaned up cbaSettings_settingChanged (#10050)
Adapted `cbaSettings_settingChanged`
2024-05-31 13:20:21 -07:00
johnb432
dc56cdbd8b
Vehicle Damage - Fix applying medical damage to non-local and invulnerable units (#9988)
* Make medical damage apply to non-local units

* Update addons/vehicle_damage/functions/fnc_medicalDamage.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/vehicle_damage/functions/fnc_medicalDamage.sqf

* Update fnc_medicalDamage.sqf

* Specify reason for death

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-05-31 13:15:46 -07:00
johnb432
9f2ee9fb6f
Common - Add setDead API (#10045)
* Added `setDead` API

* Update XEH_PREP.hpp

* Update fnc_setDead.sqf

* Update addons/common/functions/fnc_disableUserInput.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update fnc_setDead.sqf

* Added warning for non-local units

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-05-31 13:07:50 -07:00
PabstMirror
5a1e3bc585
Zeus - Add a translation (#10047) 2024-05-30 07:58:46 -05:00
PabstMirror
d30c01aee9
Hearing - prevent audio from stacking when tabbed out (#10048) 2024-05-30 01:34:19 -07:00
johnb432
98f4b51c52
Hearing - Fix deafness reducing when game is paused (#10039)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-05-29 18:55:17 +00:00
Mike-MF
d9a2aa01a4
Realistic Names - Add missing classes (#10013)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-05-29 15:51:18 -03:00
Fabio Schick
8c0d0944c6
Parachute - Make Jet Ejection Seats use Non-Steerable Parachutes (#9963) 2024-05-29 15:50:18 -03:00
johnb432
120589512e
Headless - Improve group transfer and add API (#9874) 2024-05-29 15:49:59 -03:00
mharis001
440b9d5721
Zeus - Add spectator module (#6202)
Co-authored-by: Ozan Eğitmen <ozan@egitmen.net>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-05-29 15:48:34 -03:00
johnb432
0034f4b9cc
Arsenal - Fix insignia not reapplying after switching vests & backpacks (#10046)
Fix insignia not reapplying
2024-05-29 11:40:41 -07:00
johnb432
e535988479
Hearing - Code cleanup (#10041)
* Hearing cleanup

* Update fnc_updateHearingProtection.sqf

* Fixes + tweaks

* Update initSettings.inc.sqf

* Update fnc_removeEarplugs.sqf
2024-05-29 10:01:39 -07:00
johnb432
be61424fed
Hearing - Fix volume being force updated when loadouts are set on AI (#10044)
* Update XEH_preInit.sqf

* Update XEH_preInit.sqf
2024-05-29 08:40:32 -07:00
johnb432
be9797d11d
Grenades - Add grenade rolling (#10005)
* Add grenade rolling

* Added some safeguards

* Use `setVectorDirAndUp` instead of rotation

* Don't allow players to roll grenades when in vehicles

* Grenades - Rolling only add PFEH when needed (#10015)

* Grenades - Rolling only add PFEH when needed

* Corrected minor typo, moved variable init in preInit, fixed bugs

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Don't switch modes if grenade can't be thrown

* Minor tweaks

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-05-27 02:19:52 -07:00
JonBons
be77ef233e
Cookoff - Delay full vehicle destruction (#9061)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-05-24 20:06:33 -03:00
johnb432
d7c1984a5a
Grenades - Fix not being able to switch throw modes in FFV (#10012) 2024-05-24 20:06:13 -03:00
johnb432
dc3753893f
Hearing - Improve and cleanup code (#9933)
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-05-24 20:05:19 -03:00
PabstMirror
22c6621878
Refuel - Cleanup compats (#10011)
* Refuel - Cleanup compats

* add `XEH_INHERITED`
2024-05-24 17:59:59 -05:00
PabstMirror
05ebe1f48f
Medical Treatment - Allow diagnosing cardiac arrest with clear language (#9997) 2024-05-23 17:25:59 -05:00
johnb432
c634bbe1ab
CSW - Force QGVAR(handleExtraMagazinesType) to be respected (#9903)
Force QGVAR(handleExtraMagazinesType) to be respected
2024-05-23 21:56:28 +02:00
johnb432
c0d74ba703
Refuel - Fix fuel source disabling (#9995)
* Add enable setting

* Exclude man class init

* Fix multiplayer terrain pump fuel sync

* Add terrain pumps positions

* Add vanilla fuel cargo restoring before destroying

* Add Livonia positions by bux

* Fix terrain pumps destruction

* Improve settings init

* Fix double settings category

* Check enabled var in public functions

* Fix fnc_makeSource

* Handle recent CUP Terrains changes

* Update includes

* Fix issues introduced in #9133

* Change warning

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Optimisations and cleanup

- Use hashmaps wherever possible
- Reduced pump search radius by ~30%
- Sorted pumps alphabetically and sorted positions by "smallest" first, for consistency

* Add init debug trace

* compileScript in dev

* yoda conditions & DFUNC macro

* Wait until CBA settings are ready

* Update Chernarus 2020 and add more maps configs

* Remove vanilla fuel cargo restoring before destroying

* Update fnc_makeSource.sqf

---------

Co-authored-by: Dystopian <sddex@ya.ru>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-05-23 21:56:08 +02:00
Dystopian
7c65f8503d
Refuel - Add enable setting (#7613)
* Add enable setting

* Exclude man class init

* Fix multiplayer terrain pump fuel sync

* Add terrain pumps positions

* Add vanilla fuel cargo restoring before destroying

* Add Livonia positions by bux

* Fix terrain pumps destruction

* Improve settings init

* Fix double settings category

* Check enabled var in public functions

* Fix fnc_makeSource

* Handle recent CUP Terrains changes

* Update includes

* Fix issues introduced in #9133

* Change warning

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Optimisations and cleanup

- Use hashmaps wherever possible
- Reduced pump search radius by ~30%
- Sorted pumps alphabetically and sorted positions by "smallest" first, for consistency

* Add init debug trace

* compileScript in dev

* yoda conditions & DFUNC macro

* Wait until CBA settings are ready

* Update Chernarus 2020 and add more maps configs

* Remove vanilla fuel cargo restoring before destroying

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-05-23 21:47:19 +02:00
PabstMirror
f97f11d224
AdvThrowing - Fix showing wind info when no grenades in inventory (#10008)
AdvThrowing - Fix showing wind info if no grenades in inventory
2024-05-22 21:19:40 -05:00
johnb432
67fe22a5a6
Grenades - Make flashbang detonation sound configurable via config (#9985)
* Added configurable flashbang detonation sound

Updated documentation by filling missing information in

* Update grenades-framework.md

* Update grenades-framework.md
2024-05-22 13:38:59 -07:00
johnb432
e1137ac903
Fire - Remove unused plant integration (#9993)
Removed unused plant integration in fire
2024-05-22 13:37:24 -07:00
johnb432
c03e08e51b
Grenades - Change damage from M14 incendiary grenade (#9992)
Doubled damage from M14 incendiary grenade
2024-05-22 13:08:09 -07:00
johnb432
052f1c95a3
Cargo - Add checks for adding cargo via config (#9999)
* Add checks for cargo via config

* Update fnc_initVehicle.sqf

* Use loaded number instead of intended number
2024-05-22 01:32:46 -05:00
johnb432
99d7e4d57b
Grenades - Add 3 more sounds to flashbang detonations (#9982)
* Add 3 more sounds to flashbang detonations

* Update addons/grenades/functions/fnc_flashbangThrownFuze.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-05-21 20:24:50 -05:00
PabstMirror
52762c1e62
Arsenal - Changes for CBA Disposable hashs (#9998)
* Arsenal - Changes for CBA Disposable hashs

* Update addons/arsenal/functions/fnc_onSelChangedRight.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/arsenal/functions/fnc_onSelChangedRight.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-05-21 20:23:46 -05:00
johnb432
4cf61a026b
Interact Menu - Use hashmaps for interactions (#9920)
* Use hashmaps for interactions

* Update addons/interact_menu/functions/fnc_splitPath.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Account for case sensitivity

* Update addons/interact_menu/functions/fnc_compileMenu.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-05-21 20:18:32 -05:00
johnb432
db2bf60c28
Cargo - Add documentation on adding cargo via config (#9994)
* Fix bag of holdings in cargo

* Update CfgVehicles.hpp

* Update CfgVehicles.hpp

* Revert space changes
2024-05-21 20:16:05 -05:00
PabstMirror
a31608073e
Maptools - Fix gps detection (#10007)
* Maptools - Fix gps detection

* Use `infoPanelComponents`

Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-05-21 18:25:59 -05:00
PabstMirror
b26d6543a6 Prepare 3.17.1 Build 86 2024-05-11 22:15:02 -05:00
PabstMirror
9efd60d798 Merge branch 'master' into release-3.17.1 2024-05-11 22:14:36 -05:00
Abogado
6972f02bc4
Translation - Add Missing Spanish (#10001)
Translation to Spanish

Translation to Spanish
2024-05-10 20:42:55 -05:00
johnb432
2a3ff8e185
Medical Treatment - Fix low SpO2 making units go into cardiac arrest again (#10003)
* Set SpO2 after successful CPR

* Update fnc_cprLocal.sqf

* Add API

* Update fnc_cprLocal.sqf
2024-05-10 20:39:41 -05:00
Fabio Schick
62353a9175
Translations - Updated Italian with recent additions (#10004)
* hearing italian translations

* common italian translations
2024-05-10 20:34:34 -05:00
PabstMirror
8e367ee80e Prepare 3.17.1 Build 85 2024-05-05 15:24:45 -05:00
PabstMirror
7b0c1c425d Merge branch 'master' into release-3.17.1 2024-05-05 15:23:29 -05:00
PabstMirror
9d168756df
CUP Compat - Fix NVG Black/Green translations (#9976)
* cup compat - fix nvg black/green

* Capitalize some colors
2024-04-30 00:55:59 -05:00
johnb432
4f1c2fa8d7
Common - Fix adding unusable throwables (#9980)
* Prevent adding unusable grenades

* Update fnc_addToInventory.sqf

* Update addons/common/functions/fnc_addToInventory.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update fnc_addToInventory.sqf

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-29 12:13:47 -05:00
johnb432
3987c62acc
Grenades - Add missing documentation on flares and incendiaries (#9984)
Update grenades-framework.md
2024-04-29 00:34:35 -07:00
johnb432
0f5b7c8762
Grenades - Fix unconscious AI being affected by flashbangs (#9978)
* Stop players being affected by AI flashbang code

* Stop affecting unconscious AI

* Update fnc_flashbangExplosionEH.sqf
2024-04-28 21:49:36 -05:00
johnb432
7c4f4cf8f8
Grenades - Fix flashbangs causing pain for invulnerable units (#9981)
Disable flashbang pain for invulnerable units
2024-04-28 09:07:15 -07:00
johnb432
6e32fc1144
Hearing - Add earplugs only if not present (#9987)
Only add earplugs if not present
2024-04-28 09:04:56 -07:00
johnb432
3b806295f7
Hearing - Use class EH instead of extended EH (#9986)
Use class EH instead of extended EH
2024-04-28 09:02:50 -07:00
johnb432
60b87f0b41
Medical - Add _createLitter to medical events (#9959)
Added `_createLitter` to medical events
2024-04-26 17:35:57 -05:00
PabstMirror
872d460e6d
Tools - Add missing includes for p3ds (#9974)
* Tools - Add missing includes for p3ds

* Cleanup vn?

* Update project.toml

* Update tools\.vscode
2024-04-26 17:35:30 -05:00
Apricot
b513a110f5
Translations - Improve Japanese localization (3.17.1) (#9977)
Tweaks
2024-04-26 17:34:11 -05:00
Dystopian
a12ad9ec59
Interact menu - Fix condition in consolidated menu (#9946)
Fix condition in consolidated menu
2024-04-25 00:23:10 -05:00
johnb432
1eca83db9f
Common - Fix animations not playing (#9973)
Update CfgMoves.hpp
2024-04-24 23:41:27 -05:00
jonpas
c17873dcad Prepare 3.17.1 Build 84 2024-04-24 02:29:25 +02:00
johnb432
9e6f624a68
Cargo - Fix undefined variable and config entries (#9965)
Cargo fixes
2024-04-23 14:07:16 -07:00
Hexo
a0e4f09555
Translations - French (Map tools) (#9953)
* Update translate Hearing french

* update map tools

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-04-22 17:15:05 -05:00
Crowdedlight
5a6d6a73df
Wiki - Fix search being broken by the attach-framework page (#9969) 2024-04-22 19:08:49 +02:00
OverlordZorn
97257ca77a
Documentation - minor fix (#9967)
a -> an
2024-04-21 07:15:07 -07:00
Dart
ac9ffb5276
Docs - Fix tables and inconsistencies (#9952)
Co-authored-by: LinkIsGrim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-19 20:53:33 +00:00
Tim Beswick
23842aab39
Medical - Fix script error when bandaging (#9956)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-04-19 16:57:41 -03:00
johnb432
7480ae377d
Scopes - Stop changing CBA setting value directly (#9954)
Update XEH_postInit.sqf
2024-04-19 10:27:04 -07:00
johnb432
dda6b9d2dc
Medical Treatment - Enforce bandage effectiveness variable type (#9950)
Enforce bandage effectiveness variable type
2024-04-16 13:33:40 -07:00
Hexo
b637a0ea09
Update translate Hearing french (#9949)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-04-13 15:09:48 -05:00
V1nsyara
32707dd860
Language Russian - Update translation (#9947)
Russian
2024-04-13 14:53:50 -05:00
PlayerBotPro
6165b46ab6
Medical Treatment - Fix Painkiller has no effect when Advanced Medication is off (#9942)
* fix: Painkiller has no effect when Advanced Medication is off

* Change PainKillers_PAIN_SUPPRESSION to uppercase

* Update addons/medical_treatment/functions/fnc_medicationLocal.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-04-11 12:58:50 -03:00
johnb432
bcf1133477
Scopes - Notify restart req. for enable & pressure settings (#9944)
* Moved keybinds, made settings require restart

* Move keybinds
2024-04-11 17:43:19 +02:00
OverlordZorn
2b5ea1628f
Weather - Winter Terrain Temperatures (#9943)
* a -> an

* Added last resort catch for winter maps to define suitable temps

* removed debug line

* purge 🧼

* added check for "snow" in raintexture

* cleaned up conditions

* Update arma-3-scheduler-and-our-practices.md

* isNull && {}

* Update fnc_getMapData.sqf

* Update fnc_getMapData.sqf

* Update fnc_getMapData.sqf

* changed order in condition checks and indentation

* not so lazy

* deep config lookup -> _cfg

* comment

* removed accidental empty line

* 🎢

* Update fnc_getMapData.sqf

* Revert "Update fnc_getMapData.sqf"

This reverts commit a57d114182ee094a873274dda8874f12780e4795.

* Update addons/weather/functions/fnc_getMapData.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/weather/functions/fnc_getMapData.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/weather/functions/fnc_getMapData.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* then -> exitWith

---------

Co-authored-by: Mr. Zorn <56258612+PulsarNeutronStar@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-04-10 08:26:30 -03:00
lambdatiger
3255dbef36
Compats - Add/Fix Adv, Vehicle Damage ERA and SLAT arrays (#9925)
* added missing hitpoints and new classes

* added CUP compats

* Fixed missing base class and missing comma
2024-04-10 08:25:46 -03:00
johnb432
5130a22008
Hearing - Add setting to add earplugs to all units (#9935)
Add option to add earplugs to all units
2024-04-10 08:23:50 -03:00
johnb432
095ce88279
Hearing - Notify restart req. for combat deafness setting (#9934) 2024-04-07 12:59:14 -03:00
Kex
0c529446ec
Fix bug template (#9936) 2024-04-07 12:57:14 -03:00
Grim
6a2f3a21f2
Medical - Fix broken AI ragdolls if AI unconsciousness is disabled (#9917)
Co-authored-by: jonpas <jonpas33@gmail.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-04-06 22:20:51 -03:00
BrettMayson
f3f7f2c492
Medical Status - API to modify getBloodLoss (#9926)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-06 22:18:07 -03:00
PabstMirror
431c4d616e
Casing - Move model lookup to cartridge config (#9893)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-06 22:12:06 -03:00
PabstMirror
5ca3465b8a
Medical Treatment - Only create litter on empty container (#9924) 2024-04-06 22:11:51 -03:00
johnb432
f5e8e06c24
Interact Menu - Add nil handling for condition (#9922)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-04-06 22:11:09 -03:00
johnb432
04ac1d8808
Arsenal - Fix #9916 (#9932) 2024-04-06 22:04:52 -03:00
johnb432
dce7da60c9
General - Change count to isEqualTo where appropriate (#9921)
count -> isEqualTo
2024-04-06 11:57:08 -07:00
johnb432
8f46ffd8d5
General - Change count to forEach where appropriate (#9890)
count -> forEach

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-04 08:15:26 -03:00
Fabio Schick
ccb3e65734
Map Tools - Show GPS on Map when equipped with UAV Terminal (#9885)
* Show Map GPS when equipped with UAV Terminal

* Update Maptools Documentation

* Reword documentation

* Reword docs, remove dash

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Allow GPS when terminal slot is not empty

* Allow GPS on map when GPS sidepanel is available

* Reword docs

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Return statement - remove ; and add comment

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

---------

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-04 08:09:02 -03:00
Hexo
d312792631
Translation - French (#9919)
* Translate French

* Update stringtable.xml

Translate - FR

* Translate - French

* Translate - French - overheating

* Translate -French - compat_sog

* Update stringtable.xml

* Translate - French

* Fix - Translate French

Minor correction

* Update Translate French

* Update French

* Update - french

* Transalte French fieldmanual

* Translate French compat_cup_weapons_cws

* Update translate
2024-04-04 08:01:24 -03:00
johnb432
0d401b2664
Headless - Code optimisation (#9873)
* Headless optimisations

* Swapped blacklist for unitIsUAV check

* Moved UAV check

* Update addons/headless/functions/fnc_transferGroups.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/headless/functions/fnc_transferGroups.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update fnc_transferGroups.sqf

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-04-04 08:01:12 -03:00
Grim
e6cc5fca89
Arsenal - Handle arrays in loadout extended info (#9918) 2024-04-03 19:46:26 -03:00
johnb432
a72b3a43a5
Arsenal - Fix FUNC(baseAttachment) returning non-CBA item modes (#9916)
Update fnc_baseAttachment.sqf
2024-04-03 14:53:12 -07:00
Sotirios Pupakis
558849b91c
Interaction - Add door events (#9910)
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
2024-04-03 17:47:51 -03:00
Hexo
020d21d562
Translate - French (#9908)
* Translate - French

* Translate - French - overheating

* Translate -French - compat_sog

* Update stringtable.xml

* Translate - French

* Fix - Translate French

Minor correction
2024-04-02 23:04:56 -05:00
BrettMayson
19e0064730
Medical - Fix typo caridac to cardiac (#9900) 2024-04-02 21:07:03 -03:00
johnb432
613fc36385
Common - Use existing weapon holders for FUNC(addToInventory) (#9895)
* Reuse existing weapon holders

* Update fnc_addToInventory.sqf

* Return correct weapon holder
2024-04-02 14:07:45 -07:00
johnb432
cc3fbc5f3f
Cargo - Fix undefined variable (#9909)
Update fnc_initVehicle.sqf
2024-04-02 13:46:14 -07:00
johnb432
0375d0dae6
CSW - Fix CUP CSW (#9907)
* Update CfgWeapons.hpp

* Update other CUP weapons

* Update addons/compat_cup_weapons/compat_cup_weapons_csw/CfgWeapons.hpp
2024-04-02 12:37:30 -07:00
johnb432
316bb355ad
CSW - Minor code cleanup (#9902)
CSW minor code cleanup
2024-04-02 08:22:45 -07:00
johnb432
a5a3fe4232
CSW - Deploy & pickup CSW parts only if they are not destroyed (#9905)
Deploy & pickup CSW parts only if they are not destroyed
2024-04-02 08:15:06 -07:00
johnb432
7171ca7947
CSW - Remove unused 3den attributes (#9898)
Remove unused 3den attributes
2024-04-02 06:27:10 -07:00
johnb432
35d40e614c
Yardage - Make macros uppercase (#9894)
* Renamed macros in yardage

* Update fnc_turnOn.sqf
2024-04-02 06:26:42 -07:00
PabstMirror
8805414669
Common - Cleanup strange texture (#9897) 2024-04-02 01:52:45 +02:00
jonpas
8165201565 Documentation - Fix news post link 2024-04-01 19:47:09 +02:00
jonpas
16411f0a5c Prepare 3.17.0 Build 83 2024-04-01 18:10:30 +02:00
jonpas
3a232bbfa8 Fix release build type 2024-04-01 18:10:30 +02:00
jonpas
ac09cea0d0 Prepare 3.17.0 Build 82 2024-04-01 15:49:54 +02:00
jonpas
64e16a2136 Merge branch 'acerep-12' into release-3.17 2024-04-01 15:49:35 +02:00
jonpas
c8eebf461b Merge branch 'master' into release-3.17 2024-04-01 15:48:07 +02:00
BaerMitUmlaut
7ddd62f4d3 Documentation - Fix typo (#9608) 2024-04-01 15:43:24 +02:00
PabstMirror
0c589c2346
Interaction - Check canInteractWith before taking dropped weapons (#9783)
* Interaction - Block interaction on carried ground weapon holders

* Don't check if cargo container is claimed
2024-04-01 09:11:14 -03:00
jonpas
d9f6beacc5 Prepare 3.17.0 Build 81 2024-04-01 13:34:39 +02:00
jonpas
dd256bfb18 Merge branch 'master' into release-3.17 2024-04-01 13:32:48 +02:00
PabstMirror
0365565efc
Yardage - Fix broken display in 2.16 (#9892) 2024-04-01 13:28:08 +02:00
Mike-MF
0d45a85db6
Casings - Add CUP Casings (#9888) 2024-04-01 13:27:15 +02:00
jonpas
6c52cfa95f Link to acemod.org 2024-04-01 04:31:13 +02:00
jonpas
193f52222b Remove docker compose version (deprecated) 2024-04-01 04:18:43 +02:00
jonpas
686498680f Fix 'Fork me on GitHub' ribbon 2024-04-01 03:50:47 +02:00
jonpas
134951f331 Update Anvil logo 2024-04-01 02:45:40 +02:00
jonpas
b919da797b Merge branch 'master' into release-3.17 2024-04-01 02:42:18 +02:00
jonpas
3ddf147238 effect -> affect 2024-03-31 00:42:06 +01:00
jonpas
cfbadca621 Add ACEREP 12 2024-03-31 00:16:56 +01:00
PabstMirror
9293623d9e
CUP Compats - Cleanup temp __has_include (#9832) 2024-03-30 20:33:28 +01:00
PabstMirror
a4dbff3ff8
Common - Add word weapon to sway setting (#9887)
* Common - Add word `weapon` to sway setting

* Update stringtable.xml
2024-03-28 17:12:27 -05:00
PabstMirror
9daf71edd0
Options Menu - Fix main-menu news setting not working (#9886) 2024-03-28 14:55:07 -05:00
Psycool
cbb160c1e0
Korean translation updated (#9883)
* KoreanTranslation

Someone has returned all the translations in Korean to English. there is no need to return them.

* koreantranslation

* Korean Typo Fix

* Korean Translation

* Update stringtable.xml

* Korean Translation Added

Added Korean translation related to Cargo Refuel

* Merge branch 'master' of https://github.com/Psycool3695/ACE3

* Korean translation Add/Updated

* Fixed wrong strings

* Korean translation improved

* Korean translation updated

* Korean translation updated

* Fix Merge

* Update stringtable.xml

* Update stringtable.xml

* Korean translation updated

* Korean translation minor fix

* Korean translation fixed

* Korean translation updated

* Update stringtable.xml

* Spacing fixed

* Korean translation updated

* Spacing fixed

* Korean translation updated

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-03-28 13:58:02 -05:00
johnb432
415d2f685c
General - Change FUNC to LINKFUNC where appropriate (#9882)
FUNC -> LINKFUNC
2024-03-28 13:57:23 -05:00
jonpas
2a52ad14c4
Improve GitHub labels and Release Drafter (#9884) 2024-03-28 18:29:08 +01:00
johnb432
48bdc6fbcd
Repair/UI - Minor code cleanup (#9879) 2024-03-28 14:11:26 +01:00
Mr. Zorn
46cc49dc1e
Documentation - Add info about Plotting Board (#9838)
* Update maptools.md

* Update maptools.md

* Update docs/wiki/feature/maptools.md

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-28 08:49:45 -03:00
johnb432
3bba9735c7
Mk6mortar - Remove return values from FUNC(handleFired) (#9880)
Update fnc_handleFired.sqf
2024-03-27 22:37:59 -05:00
johnb432
512ceaa1a1
Missile Guidance - Rename preInit and postInit files (#9881)
Renamed preInit and postInit files
2024-03-27 22:37:36 -05:00
jonpas
dc7d7b1429 Prepare 3.17.0 Build 80 2024-03-27 23:01:47 +01:00
Apricot
4952c09f41
Translations - Improve Japanese localization part 4 (sway factor) (#9877) 2024-03-26 19:58:19 +01:00
Fabio Schick
c88e1abd0e
Weather - More permissive wind info indicator + auto-enabling when throwing grenades (#9820)
* More permissive displaying of Wind Info

* Temporary Wind Info while throwing Grenades

* Add Temporary Wind Info Setting

* Safer reading of EGVAR from addon that may not be loaded

* Show Wind Info only in Static Vehicles

* Improve Exclusion Check

Co-Authored-By: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Improve Abort Checks on Keybind Statements

Co-Authored-By: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Raise eyePos when inside Static Weapon

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-03-26 09:59:48 -03:00
Mike-MF
cee187adac
General - Convert vehicle to objectParent (#9801)
Convert vehicle to objectParent
2024-03-26 09:54:06 -03:00
johnb432
a8ed533004
Dragging - Minor code cleanup (#9859)
* Dragging minor code cleanup

* Update fnc_startCarryPFH.sqf

* Revert UAV changes
2024-03-26 09:50:21 -03:00
ZluskeN
5ca81b7ef3
Interaction - Make magazine passing animation optional (#9875)
* Update fnc_passMagazine.sqf

* Update fnc_passMagazine.sqf

* Update fnc_passMagazine.sqf

* Update addons/interaction/functions/fnc_passMagazine.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-26 09:50:04 -03:00
Dart
31217ae5d0
Fortify - Add onDeployStop event for cancelling before confirming (#9854)
* onDeployStop event

* Updated wiki with new event

* Fixed params

* Revert "onDeployStop event"

This reverts commit c3dae82915f7d36754096feaf5ae2249688742e7.

* Uses deployCanceled

* Re-added fortify stop event

* Update fnc_deployObject.sqf

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-25 09:08:06 -07:00
johnb432
80417b114d
Advanced Fatigue - Move sway to common and add enable sway setting (#9872)
* Move sway from fatigue to common

* Added enable sway setting

* Update addons/common/stringtable.xml

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/common/stringtable.xml

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/common/stringtable.xml

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-03-24 14:28:14 -07:00
PabstMirror
86f1b6b142
AB/Scopes - Fix script errors on profiling branch (#9869)
* AB/Scopes - Fix script errors on profiling branch

* Update addons/scopes/functions/fnc_calculateZeroAngleCorrection.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-24 09:32:28 -07:00
johnb432
58f6430bb6
Arsenal - Revert unicode support for sorting (#9871)
Revert unicode sorting
2024-03-23 06:29:26 -07:00
Mike-MF
2456c445b2
Compat CUP Weapons - Fix Metis UBC (#9870) 2024-03-23 14:28:20 +01:00
PabstMirror
9a5cb8bd91
Maverick - Cleanup config (#9868) 2024-03-21 22:56:44 +01:00
BrettMayson
3c5b46c42d
Medical - Support Magazine Treatment Items (#9816)
* count treatment items

* getCountofItem

Co-Authored-By: Blue <itzblueman@gmail.com>

* getCountofItem fix

Co-Authored-By: Blue <itzblueman@gmail.com>

* convert painkillers to magazine

* use isclass

Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com>

* forget to change variable

* Update addons/medical_treatment/functions/fnc_hasItem.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* better magazine adjustment

* Update addons/common/functions/fnc_adjustMagazineAmmo.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/medical_treatment/functions/fnc_medication.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/medical_treatment/functions/fnc_treatmentFailure.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update docs/wiki/framework/arsenal-framework.md

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Update addons/common/functions/fnc_adjustMagazineAmmo.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Header

* use switch statement in fnc_useItem

* Update addons/common/functions/fnc_adjustMagazineAmmo.sqf

* Update addons/common/functions/fnc_adjustMagazineAmmo.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* only check adding to mags that are not full

Co-Authored-By: LinkIsGrim <salluci.lovi@gmail.com>

* Update addons/common/functions/fnc_adjustMagazineAmmo.sqf

* Update fnc_getCountOfItem.sqf

* Optimisations & header fix

* Update addons/common/functions/fnc_adjustMagazineAmmo.sqf

* Fixed vehicle implementation

---------

Co-authored-by: Blue <itzblueman@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-03-21 22:56:24 +01:00
johnb432
50978efa46
Hearing - Removed remoteExec & added microoptimisations (#9853)
* Removed remoteExec. added microoptimisations

* Update addons/hearing/XEH_preInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* move EH to after !hasInterface

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-03-21 20:26:46 +01:00
johnb432
b4eaa1e270
Advanced Fatigue - Disable sway when Advanced Fatigue is off (#9867)
Disabled sway when advanced fatigue is off
2024-03-21 20:24:49 +01:00
Dart
af3c95a5a6
Fire - Add ability to disable screams for individual units (#9863)
* Disable screams for individual units

* Update addons/fire/XEH_postInit.sqf

* Changed wording

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* isGlobal instead of true

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-21 20:20:23 +01:00
Cyruz
8c69bd25ea
Rearm - Show distance to target on actions (#9866)
* Show rearm distance in action

* Update addons/rearm/functions/fnc_addRearmActions.sqf

---------

Co-authored-by: Cyruz143 <root.cyruz@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-20 05:06:45 -07:00
johnb432
017d47f8c9
Fortify - Skip placement animation for no cost fortifications (#9861)
Skip placement animation for no cost fortifications
2024-03-19 08:57:09 +01:00
BrettMayson
c5b54c65a8
Medical Treatment - Fix bandage effectiveness (#9865)
* fix broken bandages

* update params
2024-03-19 08:56:05 +01:00
Apricot
e7827813ee
Translations - Improve Japanese localization 3 (#9864)
Japanese
2024-03-18 21:59:54 -05:00
johnb432
11844ef05e
Dragging - Fix dropping incorrect object when carrying fails (#9860)
Update fnc_startCarryPFH.sqf
2024-03-18 14:17:05 -03:00
johnb432
0856e58ae9
Dragging - Release ownership when target is too heavy to drag/carry (#9858)
Release ownership when target is too heavy to drag/carry
2024-03-18 14:16:34 -03:00
johnb432
3cafac2f67
Common - Fix players sliding when holstering weapons (#9846)
Update CfgMoves.hpp
2024-03-17 04:47:46 -07:00
Mike-MF
de106c3418
Grenades - Fix Flashbang in epilepsy mode (#9855)
Fix Flashbang in epilepsy mode
2024-03-17 04:47:24 -07:00
Mr. Zorn
a332ad7095
Repair - Wheel Patching - Tooltip rephrasing (#9851)
* Update stringtable.xml

* Add PL Translation

* added FR

* added japanese

---------

Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>
2024-03-17 03:33:12 -07:00
prisonerMO
5e1771aecd
General - Don't add keybinds to headless client/dedicated server (#9842)
* Do not need to register keybinds on machines that don't have interfaces.

* add newline

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-03-12 14:33:08 -07:00
johnb432
0dabc678f6
Arsenal - Fix faces & voices for JIP (#9847)
Update fnc_onArsenalClose.sqf
2024-03-11 03:18:02 -07:00
PabstMirror
e5145ba4f7
Cup Weapon Compat - Fix NVG classnames (#9845) 2024-03-10 11:49:53 -03:00
Fabio Schick
dd32190dfa
Parachute - Add Seconds Indicator to Altimeter Watch (#9834) 2024-03-10 11:48:43 -03:00
Fabio Schick
d54ba4ddcf
Translations - Complete Italian (#9844)
* Arsenal Italian Translations

* Cargo Italian Translations

* Hearing Italian Translations

* Killtracker Italian Translations

* Map Tools Italian Translations

* Markers Italian Translations

* Medical GUI Italian Translations

* Medical Treatment Italian Translations

* Medical Vitals Italian Translations

* Overheating Italian Translations
2024-03-09 17:58:15 -06:00
PabstMirror
9bb9fae85c
Arsenal - Show load stat's actual value (#9833)
* Arsenal - Show load stat's actual value

* Update addons/arsenal/functions/fnc_statTextStatement_load.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-09 17:17:13 -06:00
V1nsyara
a3b9c53fd8
Translations - Russian - Fix (#9841)
Russian Translate - Fix
2024-03-09 16:56:33 -06:00
Grim
8e975a6b91
Medical Treatment - Add hook to modify bandaging treatment (#9814)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-09 14:15:24 -03:00
johnb432
d7e5ea4898
Rearm - Fix actions not being added immeditately (#9843) 2024-03-09 14:11:27 -03:00
BaerMitUmlaut
f1488c9c88
Documentation - Update management team (#9837) 2024-03-07 22:30:26 +01:00
MiszczuZPolski
4694974054
Documentation - Add MiszczuZPolski to Team page (#9836) 2024-03-07 22:28:41 +01:00
Grim
e06c6f7835
General - Replace toLower with toLowerANSI where applicable (#9790)
* General - Replace toLower with toLowerANSI where applicable

* whoops

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/repair/functions/fnc_setHitPointDamage.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/repair/dev/draw_showRepairInfo.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/tagging/XEH_preStart.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/vehicle_damage/functions/fnc_handleCookoff.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/tagging/XEH_preStart.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* comparment -> compartment

* Update fnc_showHud.sqf

* Update fnc_registerObjects.sqf

* Update addons/common/functions/fnc_cbaSettings_settingChanged.sqf

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-07 22:08:13 +01:00
Kex
aa3917c299
Documentation - Add Kex to maintainers (#9835) 2024-03-07 20:57:45 +01:00
Drofseh
6ea0312770
Overheating - Increase cooling for open bolt guns and spare barrels (#9827)
* open bolt and spare barrel cooling boost

* change magic number to macro
2024-03-06 09:45:41 -08:00
johnb432
78334e2be4
Refuel - Add ownership concept to nozzles & jerry cans (#9826)
Add ownership concept to nozzles & jerry cans
2024-03-05 11:55:59 -08:00
Apricot
61ca55f268
Translations - Improve Japanese localization 2 (#9829)
Update stringtable.xml
2024-03-05 12:42:38 -06:00
johnb432
86580f3d6f
Fortify - Fix invalid object filtering (#9825)
Actually filter object
2024-03-04 14:01:40 -08:00
BrettMayson
f76485ff3a
Common - Fix addToInventory for magazines (#9823)
fix addToInventory for magazines
2024-03-04 14:00:31 -08:00
PabstMirror
f63704911e
CUP Compats - Don't load if cup's compats present (temporary) (#9824)
* CUP Compats - Don't load if cup's compats present (temporary)

* cup veh and ter
2024-03-04 15:20:59 -06:00
BrettMayson
67fa53fd2c
General - Events for Mods (#9813)
* full heal local

* update body image

* log list

* better _enable in categories

* update injury list

* cardiac output internal variable

* typo

* remove duplicate event

* rename event

* add docs

* Update docs/wiki/framework/events-framework.md

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-03-04 15:08:12 -06:00
Kex
b1520a9aaf
Improve version badge (#9822)
Replace hard-coded version badge
2024-03-03 19:51:43 -06:00
BrettMayson
a85a65331f
Medical GUI - Show Bleeding Rate (#9815)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-03-03 22:47:37 +00:00
BrettMayson
fd22ff04c5
Medical GUI - Display IV Type (#9817)
Co-authored-by: MisczczuZPolski <71414303+MiszczuZPolski@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-03-03 19:45:12 -03:00
Fabio Schick
22deb3af79
Artillery - Add Rangetable Keybind, Fix remembering last charge (#9818) 2024-03-03 19:43:31 -03:00
Grim
64538f2ad0
Arsenal - Native baseWeapon support for CBA items (#9799)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-02 14:29:20 -03:00
Mike-MF
2036c83dc8
CUP Weapons Compat - Add WP NVGs (#9810)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-03-02 14:26:33 -03:00
Apricot
b828a14afa
Translations - Improve Japanese localization (#9812)
* update japanese

* update

* Update stringtable.xml

* dogtag wording to ID tag
2024-03-01 19:23:33 -06:00
jonpas
6de7d60636
CI - Use Node.js 20 actions (#9809) 2024-02-29 04:54:08 +01:00
prisonerMO
8a67744cd4
Hearing - Keybind for putting or taking out earplugs (#9804)
* Added keybind put or take out earplugs

* Update addons/hearing/XEH_postInit.sqf

Don't need to register keybinds on machines that don't have interfaces.

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hearing/initKeybinds.inc.sqf

Removed default keybind, added new line at the end of the file and changed some code formatting, as well as some functions:

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/hearing/stringtable.xml

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-28 13:44:27 -06:00
kerckasha
bfbfc66d1c
SPE Compat - Fix flamethrower magazines not showing in arsenal / 50 Cal deafness (#9803)
* Fixed old invalid type on SPE flamethrower magazines

* Added ACE_caliber to SPE 50 cal ammo as it was causing extreme deafness

* Update addons/compat_spe/CfgAmmo/bullets.hpp

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Fixed duplicate base classes

* Update addons/compat_spe/CfgAmmo/bullets.hpp

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/compat_spe/CfgMagazines/flamethrower.hpp

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-28 17:09:02 +01:00
Drofseh
c4688f2ae5
Compat WS - Add barrel swap to WS machine guns (#9808)
Add barrel swap to WS machine guns
2024-02-28 17:05:11 +01:00
Mike-MF
5111062e6d
Add CUP Vehicles Compatibility (#9602)
Co-authored-by: jonpas <jonpas33@gmail.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-02-28 16:50:07 +01:00
Mike-MF
147f28d443
Add CUP Weapons Compatibility (#9599)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-02-28 16:47:53 +01:00
V1nsyara
4d487dc33e
Translations - Russian (#9802)
Update Russian Translate
2024-02-20 19:22:38 -06:00
Sotirios Pupakis
fd7a5004f0
KillTracker - Add option to filter out AI unit kills (#9800)
* Add option to disable AI kills tracking in Kill Tracker

Add an option to disable tracking of kills of AI units when using ACE Kill Tracker. Configurable through Addon Settings

* Made setting global

* Requested changes

* Omitted optional default params

Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>

* Added missing dot

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Added missing dot in Czech translation

* Update addons/killtracker/XEH_preInit.sqf

* Update addons/killtracker/XEH_preInit.sqf

---------

Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-19 17:53:47 -06:00
johnb432
fd5e56ffbc
Arsenal - Improved sorting, insignia detection, identity info verification and minor cleanup (#9795)
* Changed sorting + minor cleanup

* Update addons/arsenal/functions/fnc_fillLeftPanel.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* check and log missing extended info

* fix extended loadout logging

* Made voice stuff config case

* use lowercase voice everywhere

* check loadout voice against configCase

* Update fnc_verifyLoadout.sqf

* Update addons/arsenal/functions/fnc_verifyLoadout.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/arsenal/functions/fnc_verifyLoadout.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Update addons/arsenal/functions/fnc_verifyLoadout.sqf

---------

Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-02-13 11:22:27 -08:00
BAXENdev
a0f3933bf0
Medical - Change max medication dosage behavior (#9746)
* Consistentency Update with Overdosing

* Added Description to Condition Cases

* Updated to CASE 2

Overdose behavior:
ODs on uses `_maxDose + {1 or 2 or 3}` from `_maxDose + {0 or 1 or 2}`

* Update fnc_onMedicationUsage.sqf

* Update fnc_onMedicationUsage.sqf

* Added riskDose range and updated medications

* maxDose -> maxSafeDose | riskDose -> chanceDoses

* Fixed maxDose reference in trace

* Added chanceDoses to trace

* Fixed use of TRACE macro

* Updated comments and variable maxSafeDose -> maxDose

* Updated comment and overdose formula

* chanceDoses -> maxDoseDeviation

* Update addons/medical_treatment/functions/fnc_onMedicationUsage.sqf

* Update addons/medical_treatment/functions/fnc_onMedicationUsage.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/medical_treatment/ACE_Medical_Treatment.hpp

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-02-13 02:45:04 -08:00
johnb432
05a5ccd140
Arsenal - Add mod icons to editor arsenal attribute (#9797) 2024-02-12 15:15:48 -03:00
BrettMayson
1002dfe31b
Grenades - Flashbang events (#9796) 2024-02-12 14:01:24 -03:00
Grim
d6eb6b981c
Common - Allow multiple events to clear a cached call (#9770) 2024-02-11 22:13:37 -03:00
Grim
1e1d1d63f2
Arsenal - Add ace_arsenal_loadoutVerified event (#9792)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-11 20:25:12 -03:00
Grim
b2849aaa29
Fix filling loadouts list during preInit (#9794) 2024-02-11 20:21:29 -03:00
Grim
f3f9d18f55
Arsenal - Fill loadouts list over multiple frames (#9789) 2024-02-11 19:35:42 -03:00
Grim
bb7b05fd0d
Arsenal - Left panel code improvements (#9787)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-11 19:34:24 -03:00
Grim
95ec6eb765
Arsenal - Cleanup action UI code (#9784)
* Arsenal - Cleanup action UI code

* derp
2024-02-11 19:23:44 -03:00
Grim
a47ae27080
Nightvision - Register effects during preInit (#9788) 2024-02-11 13:55:48 -03:00
johnb432
cdc51643bb
Inventory - Remove duplicate code (#9791)
Update XEH_preStart.sqf
2024-02-11 07:33:58 -08:00
PabstMirror
e75ef3de06
General - Cleanup remaining HEMTT warnings/suggestions (#9786)
* General - Cleanup remaining HEMTT warnings/suggestions

* Update addons/medical_engine/script_macros_medical.hpp
2024-02-10 16:58:14 +01:00
Grim
6928adfc72
Arsenal - Improve performance of loadout verification (#9316)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-10 12:58:02 -03:00
Laid3acK
41c7b12acb
Documentation - Fix Wiki AtragMx links (#9780) 2024-02-10 12:52:36 -03:00
Grim
ee79decb45
CSW - Code cleanup (#9777)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-07 20:36:13 -03:00
Grim
802560da8a
CSW - Delay init for CSW with simulation disabled (#9778)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-07 20:25:49 -03:00
BrettMayson
1649422cbd
Medical Vitals - Add SPO2 (#9360)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-02-07 17:50:18 -03:00
Fabio Schick
2f9b7002c3
Explosives - Add Cellphone/Detonator Keybinds (#9687)
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-07 17:47:01 -03:00
johnb432
28e45c2979
Laser - Public getter and setter for laser codes (#9772)
* Getter and setter for laser codes

* Documentation

* Sanitising input
2024-02-07 08:49:36 -08:00
Grim
ae532c72f7
Medical - Prevent uncon AI from talking (#9776) 2024-02-07 12:56:24 -03:00
Smith
8731bcc8b5
Cargo - Add alternative unloading item from vehicle cargo (#8827)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-02-07 09:16:18 -03:00
Laid3acK
6637a15af9
Documentation - Update Wiki AtragMx (#9608)
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-02-07 07:30:50 -03:00
Grim
e69ffb6f21
Arsenal Actions - Add support for multiline text & updating on cargo event (#9771)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-06 20:34:52 -03:00
johnb432
8de0740e94
Reload - Add manual reload for vehicle weapons - continued (#9398)
* Add manual reload to turrets

* Added reload via reload keybind

* Update fnc_canSwapTurretMagazine.sqf

* Update fnc_canSwapTurretMagazine.sqf

* Update fnc_canSwapTurretMagazine.sqf

* Engine based reloading, added more checks

* Update addons/reload/functions/fnc_canSwapTurretMagazine.sqf

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

---------

Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-02-06 15:14:25 -08:00
Grim
244bee4a61
Medical Engine - Prevent uncon units from ragdolling on death (#9762) 2024-02-06 20:11:47 -03:00
Grim
77a49a081a
Small Arms - Fix magazineReloadTime for vehicle FN Minimi SPW (#9774) 2024-02-06 20:06:49 -03:00
johnb432
907758385c
Common - Cleanup define.hpp (#9773)
Update define.hpp
2024-02-06 09:29:24 -08:00
Mike-MF
5a3f3d3b82
Add CUP Terrains Compatibility (#9627)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: jonpas <jonpas33@gmail.com>
2024-02-05 15:58:15 -03:00
Dystopian
b54992b8fc
Towing - Fix some issues (#9007)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-02-05 15:54:51 -03:00
PabstMirror
a3aef6a066
General - Cleanup spaces in macros (#9769)
Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
2024-02-05 14:04:24 -03:00
Grim
6c60b67494
Arsenal - Exit refresh early if no display is found (#9754)
Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
2024-02-05 10:57:22 -03:00
Grim
4bb9d6c42c
Medical - Add Painkillers (#9720)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-05 10:56:25 -03:00
johnb432
b440cf9cb2
Arsenal/RHS Compats - Removed bad illuminator stats for RHS attachments (#9766) 2024-02-04 16:24:14 -03:00
alexban011
f1e3753606
Common - Fix syntax error in fnc_disableUserInput.sqf (#9767)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-02-04 16:24:04 -03:00
Grim
5bd1fa7629
Common - Update header for FUNC(getWeight) (#9765) 2024-02-04 16:08:07 -03:00
Grim
ef9195f21a
Fix hellfire script error (#9764) 2024-02-04 15:12:13 -03:00
BrettMayson
1e404cf85b
General - SQF Improvements (#9698)
Co-authored-by: Dystopian <sddex@ya.ru>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2024-02-04 14:50:24 -03:00
johnb432
8d6555ad0f
Arsenal - Make face tab adhere to mod icon setting (#9763) 2024-02-04 14:45:23 -03:00
Joko
2a6fd19762
Cookoff - Improve ammo detonation sounds (#5327)
* initital commit

* use Define for SOS

* fix some issues that got introduced in 1.70

* Prepare config for sounds

* add New Sounds 

improve distanced volume values

* add LAxemann to Author

* add Object Pooling

improve Distances

* fix small mistake

* change pool clearing timing

* change pool wait time

* fix Cookoff sound cleanup

* change to Jonpas Method

change random Distance add

* improve sound Volume over Distance (asked by Bux)

improve mid sounds

* improve a calculation

* Use playSound3D locally

* Make sounds configurable by 3rd party mods

* Added comments, used macros

* Update CfgSounds.hpp

---------

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-02-04 01:36:59 -08:00
Grim
7696d9aa2e
Cargo - Fix object lock when failling to load a carried object (#9759) 2024-02-04 06:09:15 -03:00
Apricot
a97a8dbb73
Translations - Improve/Add Japanese localization (#9760) 2024-02-04 05:57:39 -03:00
johnb432
6ba46ffa90
Map Tools - Code cleanup (#9750)
* Maptools cleanup

* Changed conditions to check

* Minor cleanup + fix
2024-02-03 10:48:21 -08:00
PabstMirror
c150d923f7
Map Tools - Fix tools showing after item is dropped out of inventory (#9749)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-01-22 19:44:57 -03:00
Grim
7bc3fab533
Medical - Fix getting no pulse on a dead patient receiving CPR (#9756)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-01-22 19:44:42 -03:00
Grim
4470b1f341
Cargo - Show item and vehicle in progress bar text (#9747)
* improve cargo progress bar text

* spanish

---------

Co-authored-by: BrettMayson <brett@mayson.io>
2024-01-22 16:41:46 -06:00
PabstMirror
7e255bf05b
Tools - Fix header arg types (#9752)
Fix header arg types
2024-01-22 16:33:30 -06:00
Mike-MF
d8961c68d6
Add CUP Units Compatibility (#9649) 2024-01-20 22:29:40 +01:00
PabstMirror
4756bb6f8c Prepare 3.16.3 Build 79 2024-01-17 09:27:10 -06:00
johnb432
824679e40a
Common - Fixed status effects (#9741) 2024-01-16 16:20:40 -03:00
2139 changed files with 36904 additions and 89144 deletions

View File

@ -11,5 +11,8 @@ trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.yml]
indent_size = 2
[Makefile]
indent_style = tab

View File

@ -23,14 +23,14 @@ All good? Then proceed and fill out the items below.
**Mods (complete and add to the following information):**
- **Arma 3:** `x.xx` [e.g. 1.00 stable, rc, dev]
- **CBA:** `3.x.x` [e.g. 3.0.0 stable, commit hash]
- **ACE3:** `3.x.x` [eg. 3.0.0 stable, commit hash]
- **ACE3:** `3.x.x` [e.g. 3.0.0 stable, commit hash]
<!-- Make sure to reproduce the issue with only CBA and ACE3 on a newly created mission! -->
**Description:**
A clear and concise description of what the bug is.
**Steps to reproduce:**
_Follow [https://ace3.acemod.org/img/wiki/user/issue_flowchart.webp](this flowchart)!_
_Follow [this flowchart](https://ace3.acemod.org/img/wiki/user/issue_flowchart.webp)!_
1. _Go to ..._
2. _Click ..._

View File

@ -11,11 +11,10 @@ sort-direction: ascending
categories:
- title: '**ADDED:**'
labels:
- 'kind/feature request'
- 'kind/added feature'
- 'kind/feature'
- title: '**FIXED:**'
labels:
- 'kind/bug fix'
- 'kind/bug-fix'
- title: '**IMPROVED:**'
labels:
- 'kind/enhancement'
@ -23,17 +22,16 @@ categories:
- title: '**CHANGED:**'
labels:
- 'kind/cleanup'
- 'area/compatibility'
- 'kind/change'
- title: '**SETTINGS:**'
labels:
- 'kind/setting'
- title: '**TRANSLATIONS:**'
labels:
- 'area/translations'
- 'kind/translation'
exclude-labels:
- 'ignore changelog'
- 'ignore-changelog'
- 'dependencies'
change-template: '- $TITLE (#$NUMBER)'

View File

@ -27,15 +27,6 @@ jobs:
- name: Validate function headers
run: python3 docs/tools/document_functions.py --debug
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4
- name: Lint (sqflint)
uses: arma-actions/sqflint@master
continue-on-error: true # No failure due to many false-positives
build:
runs-on: ubuntu-latest
steps:
@ -48,7 +39,7 @@ jobs:
- name: Rename build folder
run: mv .hemttout/build .hemttout/@ace
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ace3-${{ github.sha }}-nobin
path: .hemttout/@*

View File

@ -47,7 +47,7 @@ jobs:
destination: docs/_site/
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: jekyll-site
path: docs/_site/
@ -63,7 +63,7 @@ jobs:
steps:
- name: Download Artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: jekyll-site
path: _site/

View File

@ -1,29 +1,65 @@
name: Extensions
on:
pull_request:
push:
paths:
- 'extensions/**'
- 'extension/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/extensions.yml'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@master
- name: Install dependencies
run: |
rustup toolchain update stable --no-self-update
rustup default stable
rustup component add clippy rustfmt
- name: Run rustfmt
run: cargo fmt -- --check
- name: Run clippy
run: cargo clippy --all -- -Dwarnings
test:
runs-on: ubuntu-latest
container:
image: xd009642/tarpaulin
options: --security-opt seccomp=unconfined
steps:
- name: Checkout the source code
uses: actions/checkout@master
- name: Test & Coverage
run: cargo tarpaulin --verbose --no-default-features --workspace --timeout 240
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
arrays: [
os: { tag: "windows-latest", target: "i686-pc-windows-msvc" },
os: { tag: "windows-latest", target: "x86_64-pc-windows-msvc" },
]
runs-on: ${{ matrix.arrays.os.tag }}
steps:
- name: Checkout the source code
uses: actions/checkout@v4
- name: Build
shell: cmd
run: |
cd extensions
mkdir build
cd build
cmake .. && cmake --build .
- name: Upload Artifact
uses: actions/upload-artifact@v3
- name: Install stable Rust
uses: actions-rs/toolchain@v1
with:
name: ace3_extensions-${{ matrix.os }}-debug
path: extensions/build
target: ${{ matrix.arrays.os.target }}
toolchain: stable
default: true
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --verbose
- name: Upload
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.arrays.os.target }}
path: target/debug/ace.dll
if-no-files-found: error
retention-days: 30

View File

@ -33,12 +33,14 @@ jobs:
xcopy /e /h /q pullrequest\addons addons\
xcopy /e /h /q pullrequest\optionals optionals\
xcopy /e /h /q pullrequest\include include\
xcopy /y /h /q pullrequest\ace.dll ace.dll
xcopy /y /h /q pullrequest\ace_x64.dll ace_x64.dll
- name: Run HEMTT build
run: hemtt build
- name: Rename build folder
run: mv .hemttout/build .hemttout/@ace
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ace3-${{ github.sha }}
path: .hemttout/@*

View File

@ -67,18 +67,19 @@ jobs:
xcopy /e /h /q z\ace\tools\pDummies\gm gm\
xcopy /e /h /q z\ace\tools\pDummies\vn vn\
xcopy /e /h /q z\ace\tools\pDummies\WW2 WW2\
xcopy /e /h /q z\ace\tools\pDummies\CUP CUP\
- name: Build
run: py P:\z\ace\tools\make.py ci
env:
PYTHONUNBUFFERED: 1
- name: Archive logs
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: logs
path: temp/*.log
- name: Archive @ace
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: '@ace3-${{ github.sha }}'
path: z\ace\release\@ace

View File

@ -11,6 +11,6 @@ jobs:
steps:
- name: Release Drafter
if: github.repository == 'acemod/ACE3'
uses: release-drafter/release-drafter@v5
uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4
.gitignore vendored
View File

@ -2,8 +2,6 @@
*.zip
release/*
releases/*
extensions/vcproj32/*
extensions/vcproj64/*
.vscode/*
hemtt
hemtt.exe
@ -20,3 +18,5 @@ CHANGELOG.md
sqfvm.exe
ArmaScriptCompiler.exe
*.sqfc
target/
!extras/**/*.zip

View File

@ -28,38 +28,32 @@ exclude = [
"zeus/functions/fnc_zeusAttributes.sqf",
]
[hemtt.launch]
[hemtt.launch.default]
workshop = [
"450814997", # CBA_A3
]
[hemtt.launch.spe]
workshop = [
"450814997", # CBA_A3
]
extends = "default"
dlc = [
"spe"
]
[hemtt.launch.vn]
workshop = [
"450814997", # CBA_A3's Workshop ID
]
extends = "default"
dlc = [
"S.O.G. Prairie Fire",
]
[hemtt.launch.ws]
workshop = [
"450814997", # CBA_A3's Workshop ID
]
extends = "default"
dlc = [
"Western Sahara",
]
[hemtt.launch.rhs]
extends = "default"
workshop = [
"450814997", # CBA_A3's Workshop ID
"843425103", # RHS AFRF Workshop ID
"843577117", # RHS USAF Workshop ID
"843593391", # RHS GREF Workshop ID

View File

@ -6,6 +6,7 @@
# request, preferably including an email address.
# CORE TEAM
BaerMitUmlaut
Brett Mayson
bux578 <github@jonathandavid.de>
commy2
@ -25,6 +26,7 @@ Kieran
kymckay
mharis001 <mhariszakar@gmail.com>
MikeMF
MiszczuZPolski
NouberNou
PabstMirror <pabstmirror@gmail.com>
Ruthberg <ulteq@web.de>
@ -56,7 +58,6 @@ Arcanum417 <lubos.len@gmail.com>
Arkhir <wonsz666@gmail.com >
ARV187 aka Spark23
Asgar Serran <piechottaf@web.de>
BaerMitUmlaut
Bamse <bamsis@gmail.com>
Barman75
Bla1337
@ -126,6 +127,7 @@ Keithen <Keithen.Neu@gmail.com>
Kllrt <kllrtik@gmail.com>
KokaKolaA3
Krzyciu
LAxemann
legman <juicemelon@msn.com>
Legolasindar "Viper" <legolasindar@gmail.com>
licht-im-Norden87 <lichtimnorden87@gmail.com>
@ -190,3 +192,4 @@ YetheSamartaka
xrufix
Zakant <Zakant@gmx.de>
zGuba
Zman6258

1364
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

11
Cargo.toml Normal file
View File

@ -0,0 +1,11 @@
[workspace]
resolver = "2"
members = [
"extension"
]
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
strip = true

View File

@ -5,7 +5,7 @@
<p align="center">
<a href="https://github.com/acemod/ACE3/releases/latest">
<img src="https://img.shields.io/badge/Version-3.16.2-blue.svg?style=flat-square" alt="ACE3 Version">
<img src="https://img.shields.io/github/release/acemod/ACE3.svg?style=flat-square&label=Version" alt="ACE3 Version">
</a>
<a href="https://github.com/acemod/ACE3/issues">
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">

BIN
ace.dll Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
ace_x64.dll Normal file

Binary file not shown.

View File

@ -2,15 +2,15 @@
#include "initKeybinds.inc.sqf"
GVAR(currentbulletID) = -1;
GVAR(Protractor) = false;
GVAR(ProtractorStart) = CBA_missionTime;
GVAR(allBullets) = [];
GVAR(allBullets) = createHashMap;
GVAR(currentGrid) = 0;
if (!hasInterface) exitWith {};
#include "initKeybinds.inc.sqf"
["CBA_settingsInitialized", {
//If not enabled, dont't add PFEH
if (!GVAR(enabled)) exitWith {};
@ -19,27 +19,11 @@ if (!hasInterface) exitWith {};
[] call FUNC(initializeTerrainExtension);
// Register fire event handler
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
["ace_firedPlayer", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
["ace_firedPlayerNonLocal", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
// Register Perframe Handler
[FUNC(handleFirePFH), GVAR(simulationInterval)] call CBA_fnc_addPerFrameHandler;
//Add warnings for missing compat PBOs (only if AB is on)
{
_x params ["_modPBO", "_compatPBO"];
if ([_modPBO] call EFUNC(common,isModLoaded) && {!([_compatPBO] call EFUNC(common,isModLoaded))}) then {
WARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
};
} forEach [
["RH_acc","ace_compat_rh_acc"],
["RH_de_cfg","ace_compat_rh_de"],
["RH_m4_cfg","ace_compat_rh_m4"],
["RH_PDW","ace_compat_rh_pdw"],
["RKSL_PMII","ace_compat_rksl_pm_ii"],
["iansky_opt","ace_compat_sma3_iansky"],
["R3F_Armes","ace_compat_r3f"]
];
[LINKFUNC(handleFirePFH), GVAR(simulationInterval)] call CBA_fnc_addPerFrameHandler;
}] call CBA_fnc_addEventHandler;
#ifdef DEBUG_MODE_FULL

View File

@ -18,10 +18,3 @@ class CfgPatches {
#include "CfgVehicles.hpp"
#include "RscTitles.hpp"
#include "ACE_Settings.hpp"
class ACE_Extensions {
class ace_advanced_ballistics {
windows = 1;
client = 1;
};
};

View File

@ -80,7 +80,7 @@ for "_i" from 0 to (count _cfgWeapons)-1 do {
diag_log text format ["AB_Diagnose_barrelTwist,%1,%2,%3,%4,%5",_weapon,_magazine,_ammo,_twistDirection,_barrelTwist];
};
if (_barrelLength == 0) then {
diag_log text format ["AB_Diagnose_barrelLength,%1,%2,%3,%4,%5",_weapon,_magazine,_ammo,_barrelLength];
diag_log text format ["AB_Diagnose_barrelLength,%1,%2,%3,%4",_weapon,_magazine,_ammo,_barrelLength];
};
};
} forEach _magazines;

View File

@ -1,6 +1,6 @@
#include "..\script_component.hpp"
/*
* Author: Glowbal, Ruthberg, joko // Jonas
* Author: Glowbal, Ruthberg, joko // Jonas, Brett Mayson
* Handle the PFH for Bullets
*
* Arguments:
@ -17,7 +17,7 @@
private _deleted = false;
{
_x params ["_bullet","_caliber","_bulletTraceVisible","_index"];
_y params ["_bullet","_caliber","_bulletTraceVisible"];
if (alive _bullet) then {
private _bulletVelocity = velocity _bullet;
@ -27,13 +27,21 @@ private _deleted = false;
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
};
_bullet setVelocity (_bulletVelocity vectorAdd (parseSimpleArray ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6", _index, _bulletVelocity, _bulletPosition, wind, ASLToATL(_bulletPosition) select 2, CBA_missionTime toFixed 6])));
(
"ace" callExtension ["ballistics:bullet:simulate", [
_x,
_bulletVelocity,
_bulletPosition,
wind,
ASLToATL(_bulletPosition) select 2,
CBA_missionTime toFixed 6
]]
) params ["_data", "_code"];
if (_code == 0) then {
_bullet setVelocity (_bulletVelocity vectorAdd (parseSimpleArray (_data)));
};
} else {
GVAR(allBullets) set [_forEachIndex, objNull];
_deleted = true;
GVAR(allBullets) deleteAt _x;
"ace" callExtension ["ballistics:bullet:delete", [_x]];
};
} forEach GVAR(allBullets);
if (_deleted) then {
GVAR(allBullets) = GVAR(allBullets) - [objNull];
};
} forEach GVAR(allBullets)

View File

@ -1,6 +1,6 @@
#include "..\script_component.hpp"
/*
* Author: Glowbal, Ruthberg
* Author: Glowbal, Ruthberg, Brett Mayson
*
* Handles advanced ballistics for (BulletBase) projectiles. Called from the unified fired EH only for players.
*
@ -17,9 +17,9 @@
*/
//IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"];
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
TRACE_10("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_vehicle,_gunner,_turret);
if (!(_ammo isKindOf "BulletBase")) exitWith {};
if !(_ammo isKindOf "BulletBase") exitWith {};
if (!alive _projectile) exitWith {};
if (underwater _unit) exitWith {};
@ -62,11 +62,11 @@ if (_abort) exitWith {};
// Get Weapon and Ammo Configurations
private _AmmoCacheEntry = uiNamespace getVariable format[QGVAR(%1), _ammo];
if (isNil "_AmmoCacheEntry") then {
_AmmoCacheEntry = _ammo call FUNC(readAmmoDataFromConfig);
_AmmoCacheEntry = _ammo call FUNC(readAmmoDataFromConfig);
};
private _WeaponCacheEntry = uiNamespace getVariable format[QGVAR(%1), _weapon];
if (isNil "_WeaponCacheEntry") then {
_WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig);
_WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig);
};
_AmmoCacheEntry params ["_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocityVariationSD"];
@ -120,8 +120,26 @@ if (_caliber * _bulletLength * _bulletMass * _barrelTwist > 0) then {
_stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor);
};
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _ammoCount, _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _transonicStabilityCoef, getPosASL _projectile, _bulletVelocity, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), EGVAR(weather,currentOvercast), CBA_missionTime toFixed 6];
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
("ace" callExtension [
"ballistics:bullet:new", [
_ammoCount,
_airFriction,
_ballisticCoefficients,
_velocityBoundaries,
_atmosphereModel,
_dragModel,
_stabilityFactor,
_twistDirection,
_transonicStabilityCoef,
_bulletVelocity,
EGVAR(common,mapLatitude),
EGVAR(weather,currentTemperature),
EGVAR(common,mapAltitude),
EGVAR(weather,currentHumidity),
EGVAR(weather,currentOvercast),
CBA_missionTime toFixed 6
]
]) params ["_id", "_code"];
if (_code == 0) then {
GVAR(allBullets) set [_id, [_projectile, _caliber, _bulletTraceVisible]];
};

View File

@ -21,8 +21,15 @@ if (!GVAR(enabled)) exitWith {};
private _initStartTime = diag_tickTime;
private _mapSize = worldSize;
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
INFO_1("Terrain already initialized [world: %1]", worldName);
(
"ace" callExtension ["ballistics:map:init", [worldName, _mapSize]]
) params ["_data", "_code"];
if (_code != 0) exitWith {
ERROR("Error initializing map")
};
if (_data == "true") exitWith {
INFO_1("Terrain already initialized [world: %1]",worldName);
#ifdef DEBUG_MODE_FULL
systemChat "AdvancedBallistics: Terrain already initialized";
#endif
@ -33,14 +40,14 @@ private _gridCells = _mapGrids * _mapGrids;
GVAR(currentGrid) = 0;
INFO_2("Starting Terrain Extension [cells: %1] [world: %2]", _gridCells, worldName);
INFO_2("Starting Terrain Extension [cells: %1] [world: %2]",_gridCells,worldName);
[{
params ["_args","_idPFH"];
_args params ["_mapGrids", "_gridCells", "_initStartTime"];
if (GVAR(currentGrid) >= _gridCells) exitWith {
INFO_2("Finished terrain initialization in %1 seconds [world: %2]", (diag_tickTime - _initStartTime) toFixed 2, worldName);
INFO_2("Finished terrain initialization in %1 seconds [world: %2]",(diag_tickTime - _initStartTime) toFixed 2,worldName);
#ifdef DEBUG_MODE_FULL
systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", (diag_tickTime - _initStartTime) toFixed 2];
#endif
@ -53,8 +60,7 @@ INFO_2("Starting Terrain Extension [cells: %1] [world: %2]", _gridCells, worldNa
private _gridCenter = [_x + 25, _y + 25];
private _gridHeight = round(getTerrainHeightASL _gridCenter);
private _gridNumObjects = count (_gridCenter nearObjects ["Building", 50]);
private _gridSurfaceIsWater = if (surfaceIsWater _gridCenter) then {1} else {0};
"ace_advanced_ballistics" callExtension format["set:%1:%2:%3", _gridHeight, _gridNumObjects, _gridSurfaceIsWater];
"ace" callExtension ["ballistics:map:set", [GVAR(currentGrid), _gridHeight, _gridNumObjects, surfaceIsWater _gridCenter]];
GVAR(currentGrid) = GVAR(currentGrid) + 1;
if (GVAR(currentGrid) >= _gridCells) exitWith {};
};

View File

@ -40,10 +40,13 @@ if (_transonicStabilityCoef == 0) then {
_transonicStabilityCoef = 0.5;
};
private _dragModel = getNumber(_ammoConfig >> "ACE_dragModel");
if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then {
if !(_dragModel in [1, 2, 5, 6, 7, 8]) then {
_dragModel = 1;
};
private _ballisticCoefficients = getArray(_ammoConfig >> "ACE_ballisticCoefficients");
if (_ballisticCoefficients isEqualTo []) then {
_ballisticCoefficients = [0.5];
};
private _velocityBoundaries = getArray(_ammoConfig >> "ACE_velocityBoundaries");
private _atmosphereModel = getText(_ammoConfig >> "ACE_standardAtmosphere");
if (_atmosphereModel isEqualTo "") then {
@ -66,7 +69,7 @@ if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
if (_inheritedBarrelConfig || _inheritedTempConfig) then {
private _parentConfig = inheritsFrom _ammoConfig;
private _parentSpeed = getNumber (_parentConfig >> "typicalSpeed");
WARNING_4("Subsonic Ammo %1 (%2 m/s) missing `ACE_muzzleVelocities` or `ACE_ammoTempMuzzleVelocityShifts` configs, attempting to use parent %3 (%4m/s)",_this,_typicalSpeed,configName _parentConfig, _parentSpeed);
WARNING_4("Subsonic Ammo %1 (%2 m/s) missing `ACE_muzzleVelocities` or `ACE_ammoTempMuzzleVelocityShifts` configs, attempting to use parent %3 (%4m/s)",_this,_typicalSpeed,configName _parentConfig,_parentSpeed);
if (_parentSpeed <= 0) exitWith {//Handle weird or null parent
_muzzleVelocityTable = [];
_ammoTempMuzzleVelocityShifts = [];

View File

@ -21,7 +21,7 @@
private _weaponConfig = (configFile >> "CfgWeapons" >> _this);
private _barrelTwist = 0 max getNumber(_weaponConfig >> "ACE_barrelTwist");
private _twistDirection = [0, 1] select (_barrelTwist != 0);
private _twistDirection = parseNumber (_barrelTwist != 0);
if (isNumber (_weaponConfig >> "ACE_twistDirection")) then {
_twistDirection = getNumber (_weaponConfig >> "ACE_twistDirection");
if !(_twistDirection in [-1, 0, 1]) then {

View File

@ -5,7 +5,9 @@ private _category = format ["ACE %1", localize LSTRING(DisplayName)];
[LSTRING(enabled_DisplayName), LSTRING(enabled_Description)],
_category,
false,
1
1,
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_fnc_addSetting;
[
@ -45,5 +47,7 @@ private _category = format ["ACE %1", localize LSTRING(DisplayName)];
[LSTRING(simulationInterval_DisplayName), LSTRING(simulationInterval_Description)],
_category,
[0, 0.2, 0.05, 2],
1
1,
{[QGVAR(simulationInterval), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_fnc_addSetting;

View File

@ -46,7 +46,7 @@
<Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian>
<Italian>Balistica Avanzata</Italian>
<Japanese>アドバンスド弾道計算</Japanese>
<Japanese>高度な弾道計算</Japanese>
<Korean>고급 탄도학</Korean>
<Chinese>先進彈道系統</Chinese>
<Chinesesimp>进阶弹道系统</Chinesesimp>
@ -63,7 +63,7 @@
<Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian>
<Italian>Balistica Avanzata</Italian>
<Japanese>アドバンスド弾道計算を有効化</Japanese>
<Japanese>高度な弾道計算を有効化</Japanese>
<Korean>고급 탄도학</Korean>
<Chinese>先進彈道系統</Chinese>
<Chinesesimp>进阶弹道系统</Chinesesimp>
@ -80,7 +80,7 @@
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
<Russian>Включает продвинутую баллистику</Russian>
<Italian>Abilita Balistica Avanzata</Italian>
<Japanese>アドバンスド弾道計算は高度な弾道計算処理を有効化します。</Japanese>
<Japanese>高度な弾道計算を有効化します。</Japanese>
<Korean>고급 탄도학을 적용합니다</Korean>
<Chinese>啟用先進彈道系統</Chinese>
<Chinesesimp>启用进阶弹道系统</Chinesesimp>
@ -280,7 +280,7 @@
<Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian>
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
<Italian>Definisce il raggio attorno al giocatore (in metri) entro il quale la Balistica Avanzata è applicata ai proiettili</Italian>
<Japanese>アドバンスド弾道計算の適用半径範囲 (プレイヤー中心、メートル単位) を定義します。</Japanese>
<Japanese>高度な弾道計算が飛翔体に適用される半径距離 (プレイヤー中心、メートル単位) を定義します。</Japanese>
<Korean>플레이어 주위의 발사체를 고급 탄도학으로 정의하는 범위를 정합니다(미터)</Korean>
<Chinese>以玩家的半徑距離(公尺)定義先進彈道系統啟用範圍</Chinese>
<Chinesesimp>定义玩家周围的半径(米),在这个半径内,进阶弹道系统会被启用</Chinesesimp>
@ -297,7 +297,7 @@
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
<Spanish>Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada.</Spanish>
<Italian>Questo modulo abilita la simulazione della Balistica Avanzata - essa comporta che la traiettoria dei proiettili è influenzata da variabili come la temperatura dell'aria, pressione atmosferica, umidità, gravità, il tipo di munizione e l'arma da cui è sparata.</Italian>
<Japanese>アドバンスド弾道計算のシミュレーションを有効化します。 弾道は気温・気圧・湿度・重力・弾薬の種類・発射する武器などの変化による影響を受けるようになります。</Japanese>
<Japanese>高度な弾道計算のシミュレーションを有効化します。 弾道は気温・気圧・湿度・重力・弾薬の種類・発射する武器などの変化による影響を受けるようになります。</Japanese>
<Korean>이 모듈은 고급 탄도학을 적용시킵니다 - 이는 발사체의 궤적이 기온, 대기압, 습도, 중력, 탄환의 종류와 어느 무기에서 발사되는지에 따라 영향을 받습니다.</Korean>
<Chinese>該模塊實現先進的彈道仿真 - 這意味著子彈的軌跡是由空氣溫度、大氣壓力、濕度、重力、彈藥類型以及射擊的武器所影響</Chinese>
<Chinesesimp>该模块实现增强的弹道模拟—子弹的轨迹由空气温度、大气压力、湿度、重力、弹药类型和射击的武器等变量所影响</Chinesesimp>

View File

@ -9,3 +9,5 @@ PREP(handleStaminaBar);
PREP(mainLoop);
PREP(moduleSettings);
PREP(removeDutyFactor);
PREP(renderDebugLines);
PREP(updateStaminaBar);

View File

@ -2,34 +2,9 @@
if (!hasInterface) exitWith {};
["baseline", {
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
switch (stance ACE_player) do {
case ("CROUCH"): {
(1.0 + _fatigue ^ 2 * 0.1)
};
case ("PRONE"): {
(1.0 + _fatigue ^ 2 * 2.0)
};
default {
(1.5 + _fatigue ^ 2 * 3.0)
};
};
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
["multiplier", {
switch (true) do {
case (isWeaponRested ACE_player): {
GVAR(swayFactor) * GVAR(restedSwayFactor)
};
case (isWeaponDeployed ACE_player): {
GVAR(swayFactor) * GVAR(deployedSwayFactor)
};
default {
GVAR(swayFactor)
};
};
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
#ifdef DEBUG_MODE_FULL
call FUNC(renderDebugLines);
#endif
// recheck weapon inertia after weapon swap, change of attachments or switching unit
["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
@ -39,6 +14,23 @@ if (!hasInterface) exitWith {};
["CBA_settingsInitialized", {
if (!GVAR(enabled)) exitWith {};
[QEGVAR(ui,hideHud), LINKFUNC(updateStaminaBar)] call CBA_fnc_addEventHandler;
["baseline", {
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
switch (stance ACE_player) do {
case ("CROUCH"): {
(1.0 + _fatigue ^ 2 * 0.1)
};
case ("PRONE"): {
(1.0 + _fatigue ^ 2 * 2.0)
};
default {
(1.5 + _fatigue ^ 2 * 3.0)
};
};
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
// - Post process effect ------------------------------------------------------
GVAR(ppeBlackout) = ppEffectCreate ["ColorCorrections", 4220];
GVAR(ppeBlackout) ppEffectEnable true;
@ -47,25 +39,23 @@ if (!hasInterface) exitWith {};
GVAR(ppeBlackout) ppEffectCommit 0.4;
// - GVAR updating and initialization -----------------------------------------
["unit", LINKFUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
["unit", LINKFUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
["visibleMap", {
params ["", "_visibleMap"]; // command visibleMap is updated one frame later
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlShow ((!_visibleMap) && {(vehicle ACE_player) == ACE_player});
(uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull]) ctrlShow (!_visibleMap && isNull objectParent ACE_player);
}, true] call CBA_fnc_addPlayerEventHandler;
["vehicle", {
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlShow ((!visibleMap) && {(vehicle ACE_player) == ACE_player});
(uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull]) ctrlShow (!visibleMap && isNull objectParent ACE_player);
}, true] call CBA_fnc_addPlayerEventHandler;
// - Duty factors -------------------------------------------------------------
if (["ace_medical"] call EFUNC(common,isModLoaded)) then {
if (GETEGVAR(medical,enabled,false)) then {
[QEGVAR(medical,pain), { // 0->1.0, 0.5->1.05, 1->1.1
linearConversion [0, 1, (_this getVariable [QEGVAR(medical,pain), 0]), 1, 1.1, true];
linearConversion [0, 1, _this getVariable [QEGVAR(medical,pain), 0], 1, 1.1, true];
}] call FUNC(addDutyFactor);
[QEGVAR(medical,bloodVolume), { // 6->1.0, 5->1.167, 4->1.33
linearConversion [6, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 6]), 1, 2, true];
linearConversion [6, 0, _this getVariable [QEGVAR(medical,bloodVolume), 6], 1, 2, true];
}] call FUNC(addDutyFactor);
};
if (["ace_dragging"] call EFUNC(common,isModLoaded)) then {
@ -76,7 +66,7 @@ if (!hasInterface) exitWith {};
// Weather has an off switch, Dragging & Medical don't.
if (missionNamespace getVariable [QEGVAR(weather,enabled), false]) then {
[QEGVAR(weather,temperature), { // 35->1, 45->2
linearConversion [35, 45, (missionNamespace getVariable [QEGVAR(weather,currentTemperature), 25]), 1, 2, true];
linearConversion [35, 45, missionNamespace getVariable [QEGVAR(weather,currentTemperature), 25], 1, 2, true];
}] call FUNC(addDutyFactor);
};

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: BaerMitUmlaut
* Calculates the duty of the current animation.
* Calculates the duty ('postureWeight') of the current animation.
*
* Arguments:
* 0: Unit <OBJECT>

View File

@ -1,54 +1,74 @@
#include "..\script_component.hpp"
/*
* Author: BaerMitUmlaut
* Calculates the current metabolic costs for a unit.
* Author: BaerMitUmlaut, ulteq
* Calculates the current metabolic costs.
* Calculation is done according to the Pandolf/Wojtowicz formulas.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Speed <NUMBER>
* 0: Duty of animation
* 1: Mass of unit <NUMBER>
* 2: Terrain gradient <NUMBER>
* 3: Terrain factor <NUMBER>
* 4: Speed <NUMBER>
*
* Return Value:
* Metabolic cost <NUMBER>
*
* Example:
* [player, 3.3] call ace_advanced_fatigue_fnc_getMetabolicCosts
* [1, 840, 20, 1, 4] call ace_advanced_fatigue_fnc_getMetabolicCosts
*
* Public: No
*/
params ["_unit", "_velocity"];
private _gearMass = ((_unit getVariable [QEGVAR(movement,totalLoad), loadAbs _unit]) / 22.046) * GVAR(loadFactor);
private _terrainAngle = asin (1 - ((surfaceNormal getPosASL _unit) select 2));
private _terrainGradient = (_terrainAngle / 45 min 1) * 5 * GVAR(terrainGradientFactor);
private _duty = GVAR(animDuty);
{
if (_x isEqualType 0) then {
_duty = _duty * _x;
} else {
_duty = _duty * (_unit call _x);
};
} forEach (values GVAR(dutyList));
if (GVAR(isSwimming)) then {
_terrainGradient = 0;
};
params ["_duty", "_gearMass", "_terrainGradient", "_terrainFactor", "_speed"];
// Metabolic cost for walking and running is different
if (_velocity > 2) then {
if (_speed > 2) then {
// Running
#ifdef DEBUG_MODE_FULL
private _baseline = 2.1 * SIM_BODYMASS + 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2) + (SIM_BODYMASS + _gearMass) * 0.9 * (_speed ^ 2);
private _graded = 2.1 * SIM_BODYMASS + 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2) + _terrainFactor * (SIM_BODYMASS + _gearMass) * (0.9 * (_speed ^ 2) + 0.66 * _speed * _terrainGradient);
private _terrainImpact = abs ((_graded / _baseline) - 1);
hintSilent format ["FwdAngle: %1 | SideAngle: %2 \n TerrainFactor: %3 | TerrainGradient: %4 \n TerrainImpact: %5 \n Speed: %6 | CarriedLoad: %7 \n Duty: %8 | Work: %9",
_fwdAngle toFixed 1,
_sideAngle toFixed 1,
_terrainFactor toFixed 2,
_terrainGradient toFixed 1,
_terrainImpact toFixed 2,
_speed toFixed 2,
_gearMass toFixed 1,
_duty toFixed 2,
round (_graded * BIOMECH_EFFICIENCY * _duty)
];
#endif
(
2.10 * SIM_BODYMASS
2.1 * SIM_BODYMASS
+ 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
+ (SIM_BODYMASS + _gearMass) * (0.9 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
) * 0.23 * _duty
+ _terrainFactor * (SIM_BODYMASS + _gearMass) * (0.9 * (_speed ^ 2) + 0.66 * _speed * _terrainGradient)
) * BIOMECH_EFFICIENCY * _duty
} else {
// Walking
#ifdef DEBUG_MODE_FULL
private _baseline = 1.05 * SIM_BODYMASS + 2 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2) + (SIM_BODYMASS + _gearMass) * 1.15 * (_speed ^ 2);
private _graded = 1.05 * SIM_BODYMASS + 2 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2) + _terrainFactor * (SIM_BODYMASS + _gearMass) * (1.15 * (_speed ^ 2) + 0.66 * _speed * _terrainGradient);
private _terrainImpact = abs ((_graded / _baseline) - 1);
hintSilent format ["FwdAngle: %1 | SideAngle: %2 \n TerrainFactor: %3 | TerrainGradient: %4 \n TerrainImpact: %5 \n Speed: %6 | CarriedLoad: %7 \n Duty: %8 | Work: %9",
_fwdAngle toFixed 1,
_sideAngle toFixed 1,
_terrainFactor toFixed 2,
_terrainGradient toFixed 1,
_terrainImpact toFixed 2,
_speed toFixed 2,
_gearMass toFixed 1,
_duty toFixed 2,
round (_graded * BIOMECH_EFFICIENCY * _duty)
];
#endif
(
1.05 * SIM_BODYMASS
+ 2 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
+ (SIM_BODYMASS + _gearMass) * (1.15 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
) * 0.23 * _duty
+ _terrainFactor * (SIM_BODYMASS + _gearMass) * (1.15 * (_speed ^ 2) + 0.66 * _speed * _terrainGradient)
) * BIOMECH_EFFICIENCY * _duty
};

View File

@ -1,44 +1,44 @@
#include "..\script_component.hpp"
/*
* Author: BaerMitUmlaut
* Author: BaerMitUmlaut, ulteq
* Handles any audible, visual and physical effects of fatigue.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Fatigue <NUMBER>
* 2: Speed <NUMBER>
* 3: Overexhausted <BOOL>
* 2: Overexhausted <BOOL>
* 3: Forward Angle <NUMBER>
* 4: Side Angle <NUMBER>
*
* Return Value:
* None
*
* Example:
* [_player, 0.5, 3.3, true] call ace_advanced_fatigue_fnc_handleEffects
* [_player, 0.5, 3.3, true, 0, 0] call ace_advanced_fatigue_fnc_handleEffects
*
* Public: No
*/
params ["_unit", "_fatigue", "_speed", "_overexhausted"];
#ifdef DEBUG_MODE_FULL
systemChat str _fatigue;
systemChat str vectorMagnitude velocity _unit;
#endif
params ["_unit", "_fatigue", "_overexhausted", "_fwdAngle", "_sideAngle"];
// - Audible effects ----------------------------------------------------------
GVAR(lastBreath) = GVAR(lastBreath) + 1;
if (_fatigue > 0.4 && {GVAR(lastBreath) > (_fatigue * -10 + 9)} && {!underwater _unit}) then {
if (!isGameFocused) exitWith {};
switch (true) do {
case (_fatigue < 0.6): {
playSound (QGVAR(breathLow) + str(floor random 6));
playSound (QGVAR(breathLow) + str (floor random 6));
};
case (_fatigue < 0.85): {
playSound (QGVAR(breathMid) + str(floor random 6));
playSound (QGVAR(breathMid) + str (floor random 6));
};
default {
playSound (QGVAR(breathMax) + str(floor random 6));
playSound (QGVAR(breathMax) + str (floor random 6));
};
};
GVAR(lastBreath) = 0;
};
@ -62,31 +62,35 @@ if (GVAR(isSwimming)) exitWith {
if (GVAR(setAnimExclusions) isEqualTo []) then {
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
};
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
if (isSprintAllowed _unit && _fatigue > 0.7) then { // small checks like these are faster without lazy eval
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
} else {
if ((!isSprintAllowed _unit) && {_fatigue < 0.7}) then {
if (!isSprintAllowed _unit && _fatigue < 0.7) then {
[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
};
};
};
if ((getAnimSpeedCoef _unit) != 1) then {
if (GVAR(setAnimExclusions) isEqualTo []) then {
TRACE_1("reset",getAnimSpeedCoef _unit);
_unit setAnimSpeedCoef 1;
};
// If other components are setting setAnimSpeedCoef, do not change animSpeedCoef
if (getAnimSpeedCoef _unit != 1 && {GVAR(setAnimExclusions) isEqualTo []}) then {
TRACE_1("reset",getAnimSpeedCoef _unit);
_unit setAnimSpeedCoef 1;
};
if (_overexhausted) then {
if (!isForcedWalk _unit && _fatigue >= 1) then { // small checks like these are faster without lazy eval
[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
} else {
if (isForcedWalk _unit && {_fatigue < 0.7}) then {
if (isForcedWalk _unit && _fatigue < 0.7) then {
[_unit, "forceWalk", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
} else {
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
// Forward angle is the slope of the terrain, side angle simulates the unevenness/roughness of the terrain
if (isSprintAllowed _unit && {_fatigue > 0.7 || abs _fwdAngle > 20 || abs _sideAngle > 20}) then {
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
} else {
if ((!isSprintAllowed _unit) && {_fatigue < 0.6}) then {
if (!isSprintAllowed _unit && _fatigue < 0.6 && abs _fwdAngle < 20 && abs _sideAngle < 20) then {
[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
};
};

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: BaerMitUmlaut
* Handles switching units (once on init and afterwards via Zeus).
* Author: BaerMitUmlaut, ulteq
* Handles switching units (once on init and afterwards via Zeus). Also handles CBA setting change for performance factor.
*
* Arguments:
* 0: New Unit <OBJECT>
@ -15,20 +15,24 @@
*
* Public: No
*/
params ["_newUnit", "_oldUnit"];
TRACE_2("unit changed",_newUnit,_oldUnit);
if !(isNull _oldUnit) then {
if (!isNull _oldUnit) then {
TRACE_1("remove old",_oldUnit getVariable QGVAR(animHandler));
_oldUnit enableStamina true;
_oldUnit removeEventHandler ["AnimChanged", _oldUnit getVariable [QGVAR(animHandler), -1]];
_oldUnit setVariable [QGVAR(animHandler), nil];
TRACE_1("remove old",_oldUnit getVariable QGVAR(animHandler));
_oldUnit setVariable [QGVAR(ae1Reserve), GVAR(ae1Reserve)];
_oldUnit setVariable [QGVAR(ae2Reserve), GVAR(ae2Reserve)];
_oldUnit setVariable [QGVAR(anReserve), GVAR(anReserve)];
_oldUnit setVariable [QGVAR(anFatigue), GVAR(anFatigue)];
_oldUnit setVariable [QGVAR(muscleDamage), GVAR(muscleDamage)];
_oldUnit setVariable [QGVAR(respiratoryRate), GVAR(respiratoryRate)];
};
_newUnit enableStamina false;
@ -38,6 +42,7 @@ if (_newUnit getVariable [QGVAR(animHandler), -1] == -1) then {
private _animHandler = _newUnit addEventHandler ["AnimChanged", {
GVAR(animDuty) = _this call FUNC(getAnimDuty);
}];
TRACE_1("add new",_animHandler);
_newUnit setVariable [QGVAR(animHandler), _animHandler];
};
@ -47,18 +52,27 @@ GVAR(ae2Reserve) = _newUnit getVariable [QGVAR(ae2Reserve), AE2_MAXRESERVE]
GVAR(anReserve) = _newUnit getVariable [QGVAR(anReserve), AN_MAXRESERVE];
GVAR(anFatigue) = _newUnit getVariable [QGVAR(anFatigue), 0];
GVAR(muscleDamage) = _newUnit getVariable [QGVAR(muscleDamage), 0];
GVAR(respiratoryRate) = _newUnit getVariable [QGVAR(respiratoryRate), 0];
// Clean variables for respawning units
{
_newUnit setVariable [_x, nil];
} forEach [QGVAR(ae1Reserve), QGVAR(ae2Reserve), QGVAR(anReserve), QGVAR(anFatigue), QGVAR(muscleDamage)];
} forEach [QGVAR(ae1Reserve), QGVAR(ae2Reserve), QGVAR(anReserve), QGVAR(anFatigue), QGVAR(muscleDamage), QGVAR(respiratoryRate)];
GVAR(VO2Max) = 35 + 20 * (_newUnit getVariable [QGVAR(performanceFactor), GVAR(performanceFactor)]);
GVAR(VO2MaxPower) = GVAR(VO2Max) * SIM_BODYMASS * 0.23 * JOULES_PER_ML_O2 / 60;
GVAR(VO2MaxPower) = GVAR(VO2Max) * SIM_BODYMASS * BIOMECH_EFFICIENCY * JOULES_PER_ML_O2 / 60;
GVAR(peakPower) = VO2MAX_STRENGTH * GVAR(VO2MaxPower);
GVAR(ae1PathwayPower) = GVAR(peakPower) / (13.3 + 16.7 + 113.3) * 13.3 * ANTPERCENT ^ 1.28 * 1.362;
GVAR(ae2PathwayPower) = GVAR(peakPower) / (13.3 + 16.7 + 113.3) * 16.7 * ANTPERCENT ^ 1.28 * 1.362;
GVAR(ae1PathwayPower) = GVAR(peakPower) / (AE1_ATP_RELEASE_RATE + AE2_ATP_RELEASE_RATE + AN_ATP_RELEASE_RATE) * AE1_ATP_RELEASE_RATE * ANTPERCENT ^ 1.28 * 1.362;
GVAR(ae2PathwayPower) = GVAR(peakPower) / (AE1_ATP_RELEASE_RATE + AE2_ATP_RELEASE_RATE + AN_ATP_RELEASE_RATE) * AE2_ATP_RELEASE_RATE * ANTPERCENT ^ 1.28 * 1.362;
GVAR(aePathwayPower) = GVAR(ae1PathwayPower) + GVAR(ae2PathwayPower);
GVAR(anPathwayPower) = GVAR(peakPower) - GVAR(aePathwayPower);
GVAR(aeWattsPerATP) = GVAR(ae1PathwayPower) / AE1_ATP_RELEASE_RATE;
GVAR(anWattsPerATP) = GVAR(anPathwayPower) / AN_ATP_RELEASE_RATE;
GVAR(respiratoryBufferDivisor) = (RESPIRATORY_BUFFER - 1) / RESPIRATORY_BUFFER;
GVAR(maxPowerFatigueRatio) = 0.057 / GVAR(peakPower);
GVAR(ppeBlackoutLast) = 100;
GVAR(lastBreath) = 0;

View File

@ -1,6 +1,6 @@
#include "..\script_component.hpp"
/*
* Author: BaerMitUmlaut
* Author: BaerMitUmlaut, ulteq
* Main looping function that updates fatigue values.
*
* Arguments:
@ -17,67 +17,131 @@
// Dead people don't breathe, will also handle null (map intros)
if (!alive ACE_player) exitWith {
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
[LINKFUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 1;
_staminaBarContainer ctrlCommit 1;
};
private _velocity = velocity ACE_player;
private _normal = surfaceNormal (getPosWorld ACE_player);
private _movementVector = vectorNormalized _velocity;
private _sideVector = vectorNormalized (_movementVector vectorCrossProduct _normal);
private _fwdAngle = asin (_movementVector select 2);
private _sideAngle = asin (_sideVector select 2);
private _currentWork = REE;
private _currentSpeed = (vectorMagnitude (velocity ACE_player)) min 6;
private _currentSpeed = (vectorMagnitude _velocity) min 6;
// fix #4481. Diving to the ground is recorded as PRONE stance with running speed velocity. Cap maximum speed to fix.
if (GVAR(isProne)) then {
_currentSpeed = _currentSpeed min 1.5;
};
if ((vehicle ACE_player == ACE_player) && {_currentSpeed > 0.1} && {isTouchingGround ACE_player || {underwater ACE_player}}) then {
_currentWork = [ACE_player, _currentSpeed] call FUNC(getMetabolicCosts);
// Get the current duty
private _duty = GVAR(animDuty);
{
if (_x isEqualType 0) then {
_duty = _duty * _x;
} else {
_duty = _duty * (ACE_player call _x);
};
} forEach (values GVAR(dutyList));
private _terrainGradient = abs _fwdAngle;
private _terrainFactor = 1;
private _gearMass = 0 max (((ACE_player getVariable [QEGVAR(movement,totalLoad), loadAbs ACE_player]) / 22.046 - UNDERWEAR_WEIGHT) * GVAR(loadFactor));
if (isNull objectParent ACE_player && {_currentSpeed > 0.1} && {isTouchingGround ACE_player || {underwater ACE_player}}) then {
if (!GVAR(isSwimming)) then {
// If the unit is going downhill, it's much less demanding
if (_fwdAngle < 0) then {
_terrainGradient = 0.15 * _terrainGradient;
};
// Used to simulate the unevenness/roughness of the terrain
if ((getPosATL ACE_player) select 2 < 0.01) then {
private _sideGradient = abs (_sideAngle / 45) min 1;
_terrainFactor = 1 + _sideGradient ^ 4;
};
};
_currentWork = [_duty, _gearMass, _terrainGradient * GVAR(terrainGradientFactor), _terrainFactor, _currentSpeed] call FUNC(getMetabolicCosts);
_currentWork = _currentWork max REE;
};
// Oxygen calculation
private _oxygen = if (GETEGVAR(medical,enabled,false) && {EGVAR(medical_vitals,simulateSpo2)}) then { // Defer to medical
(ACE_player getVariable [QEGVAR(medical,spo2), 97]) / 100
} else {
1 - 0.131 * GVAR(respiratoryRate) ^ 2 // Default AF oxygen saturation
};
// Calculate muscle damage increase
// Note: Muscle damage recovery is ignored as it takes multiple days
GVAR(muscleDamage) = (GVAR(muscleDamage) + (_currentWork / GVAR(peakPower)) ^ 3.2 * 0.00004) min 1;
private _muscleIntegritySqrt = sqrt (1 - GVAR(muscleDamage));
GVAR(muscleDamage) = GVAR(muscleDamage) + (_currentWork / GVAR(peakPower)) ^ 3.2 * MUSCLE_TEAR_RATE;
// Calculate muscle damage recovery
GVAR(muscleDamage) = 0 max (GVAR(muscleDamage) - MUSCLE_RECOVERY * GVAR(recoveryFactor)) min 1;
private _muscleIntegrity = 1 - GVAR(muscleDamage);
private _muscleFactor = sqrt _muscleIntegrity;
// Calculate available power
private _ae1PathwayPowerFatigued = GVAR(ae1PathwayPower) * sqrt (GVAR(ae1Reserve) / AE1_MAXRESERVE) * OXYGEN * _muscleIntegritySqrt;
private _ae2PathwayPowerFatigued = GVAR(ae2PathwayPower) * sqrt (GVAR(ae2Reserve) / AE2_MAXRESERVE) * OXYGEN * _muscleIntegritySqrt;
private _ae1PathwayPowerFatigued = GVAR(ae1PathwayPower) * sqrt (GVAR(ae1Reserve) / AE1_MAXRESERVE) * _oxygen * _muscleFactor;
private _ae2PathwayPowerFatigued = GVAR(ae2PathwayPower) * sqrt (GVAR(ae2Reserve) / AE2_MAXRESERVE) * _oxygen * _muscleFactor;
private _aePathwayPowerFatigued = _ae1PathwayPowerFatigued + _ae2PathwayPowerFatigued;
private _anPathwayPowerFatigued = GVAR(anPathwayPower) * sqrt (GVAR(anReserve) / AN_MAXRESERVE) * _oxygen * _muscleIntegrity;
// Calculate how much power is consumed from each reserve
private _ae1Power = _currentWork min _ae1PathwayPowerFatigued;
private _ae2Power = ((_currentWork - _ae1Power) max 0) min _ae2PathwayPowerFatigued;
private _anPower = (_currentWork - _ae1Power - _ae2Power) max 0;
private _ae2Power = (_currentWork - _ae1Power) min _ae2PathwayPowerFatigued;
private _anPower = 0 max (_currentWork - _ae1Power - _ae2Power);
// Remove ATP from reserves for current work
GVAR(ae1Reserve) = GVAR(ae1Reserve) - _ae1Power / WATTSPERATP;
GVAR(ae2Reserve) = GVAR(ae2Reserve) - _ae2Power / WATTSPERATP;
GVAR(anReserve) = GVAR(anReserve) - _anPower / WATTSPERATP;
// Increase anearobic fatigue
GVAR(anFatigue) = GVAR(anFatigue) + _anPower * (0.057 / GVAR(peakPower)) * 1.1;
GVAR(ae1Reserve) = 0 max (GVAR(ae1Reserve) - _ae1Power / GVAR(aeWattsPerATP));
GVAR(ae2Reserve) = 0 max (GVAR(ae2Reserve) - _ae2Power / GVAR(aeWattsPerATP));
GVAR(anReserve) = 0 max (GVAR(anReserve) - _anPower / GVAR(anWattsPerATP));
// Acidosis accumulation
GVAR(anFatigue) = GVAR(anFatigue) + _anPower * GVAR(maxPowerFatigueRatio) * 1.1;
// Aerobic ATP reserve recovery
GVAR(ae1Reserve) = ((GVAR(ae1Reserve) + OXYGEN * 6.60 * (GVAR(ae1PathwayPower) - _ae1Power) / GVAR(ae1PathwayPower) * GVAR(recoveryFactor)) min AE1_MAXRESERVE) max 0;
GVAR(ae2Reserve) = ((GVAR(ae2Reserve) + OXYGEN * 5.83 * (GVAR(ae2PathwayPower) - _ae2Power) / GVAR(ae2PathwayPower) * GVAR(recoveryFactor)) min AE2_MAXRESERVE) max 0;
GVAR(ae1Reserve) = (GVAR(ae1Reserve) + _oxygen * GVAR(recoveryFactor) * AE1_ATP_RECOVERY * (GVAR(ae1PathwayPower) - _ae1Power) / GVAR(ae1PathwayPower)) min AE1_MAXRESERVE;
GVAR(ae2Reserve) = (GVAR(ae2Reserve) + _oxygen * GVAR(recoveryFactor) * AE2_ATP_RECOVERY * (GVAR(ae2PathwayPower) - _ae2Power) / GVAR(ae2PathwayPower)) min AE2_MAXRESERVE;
// Anaerobic ATP reserver and fatigue recovery
GVAR(anReserve) = ((GVAR(anReserve)
+ (_ae1PathwayPowerFatigued + _ae2PathwayPowerFatigued - _ae1Power - _ae2Power) / GVAR(VO2MaxPower) * 56.7 * GVAR(anFatigue) ^ 2 * GVAR(recoveryFactor)
) min AN_MAXRESERVE) max 0;
private _aeSurplus = _ae1PathwayPowerFatigued + _ae2PathwayPowerFatigued - _ae1Power - _ae2Power;
GVAR(anFatigue) = ((GVAR(anFatigue)
- (_ae1PathwayPowerFatigued + _ae2PathwayPowerFatigued - _ae1Power - _ae2Power) * (0.057 / GVAR(peakPower)) * GVAR(anFatigue) ^ 2 * GVAR(recoveryFactor)
) min 1) max 0;
// Anaerobic ATP reserve recovery
GVAR(anReserve) = 0 max (GVAR(anReserve) + _aeSurplus / GVAR(VO2MaxPower) * AN_ATP_RECOVERY * GVAR(recoveryFactor) * (GVAR(anFatigue) max linearConversion [AN_MAXRESERVE, 0, GVAR(anReserve), 0, 0.75, true]) ^ 2) min AN_MAXRESERVE; // max linearConversion ensures that if GVAR(anFatigue) is very low, it will still regenerate reserves
// Acidosis recovery
GVAR(anFatigue) = 0 max (GVAR(anFatigue) - _aeSurplus * GVAR(maxPowerFatigueRatio) * GVAR(recoveryFactor) * GVAR(anFatigue) ^ 2) min 1;
private _aeReservePercentage = (GVAR(ae1Reserve) / AE1_MAXRESERVE + GVAR(ae2Reserve) / AE2_MAXRESERVE) / 2;
private _anReservePercentage = GVAR(anReserve) / AN_MAXRESERVE;
private _perceivedFatigue = 1 - (_anReservePercentage min _aeReservePercentage);
// Respiratory rate decrease
GVAR(respiratoryRate) = GVAR(respiratoryRate) * GVAR(respiratoryBufferDivisor);
[ACE_player, _perceivedFatigue, _currentSpeed, GVAR(anReserve) == 0] call FUNC(handleEffects);
// Respiratory rate increase
private _aePowerRatio = (GVAR(aePathwayPower) / _aePathwayPowerFatigued) min 2;
private _respiratorySampleDivisor = 1 / (RESPIRATORY_BUFFER * 4.72 * GVAR(VO2Max));
GVAR(respiratoryRate) = (GVAR(respiratoryRate) + _currentWork * _respiratorySampleDivisor * _aePowerRatio) min 1;
if (GVAR(enableStaminaBar)) then {
// Calculate a pseudo-perceived fatigue, which is used for effects
GVAR(aeReservePercentage) = (GVAR(ae1Reserve) / AE1_MAXRESERVE + GVAR(ae2Reserve) / AE2_MAXRESERVE) / 2;
GVAR(anReservePercentage) = GVAR(anReserve) / AN_MAXRESERVE;
private _perceivedFatigue = 1 - (GVAR(anReservePercentage) min GVAR(aeReservePercentage));
#ifdef DEBUG_MODE_FULL
systemChat format ["---- muscleDamage: %1 ----", GVAR(muscleDamage) toFixed 8];
systemChat format ["---- ae2: %1 - an: %2 ----", (GVAR(ae2Reserve) / AE2_MAXRESERVE) toFixed 2, (GVAR(anReserve) / AN_MAXRESERVE) toFixed 2];
systemChat format ["---- anFatigue: %1 - perceivedFatigue: %2 ----", GVAR(anFatigue) toFixed 2, _perceivedFatigue toFixed 2];
systemChat format ["---- velocity %1 - respiratoryRate: %2 ----", (vectorMagnitude _velocity) toFixed 2, GVAR(respiratoryRate) toFixed 2];
// systemChat format ["---- aePower: %1 ----", _aePathwayPowerFatigued toFixed 1];
#endif
[ACE_player, _perceivedFatigue, GVAR(anReserve) == 0, _fwdAngle, _sideAngle] call FUNC(handleEffects);
if (GVAR(enableStaminaBarRealized)) then {
[GVAR(anReserve) / AN_MAXRESERVE] call FUNC(handleStaminaBar);
};
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
[LINKFUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;

View File

@ -0,0 +1,40 @@
#include "..\script_component.hpp"
/*
* Author: ulteq
* Draw lines for debugging.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* call ace_advanced_fatigue_fnc_renderDebugLines
*
* Public: No
*/
addMissionEventHandler ["Draw3D", {
private _normal = surfaceNormal (getPosWorld ACE_player);
private _beg = (getPosWorld ACE_player) vectorAdd (_normal vectorMultiply 0.5);
private _end = _beg vectorAdd (_normal vectorMultiply 2);
drawLine3D [ASLToATL _beg, ASLToATL _end, [0, 1, 0, 1]];
private _side = vectorNormalized (_normal vectorCrossProduct [0, 0, 1]);
private _end = _beg vectorAdd (_side vectorMultiply 2);
drawLine3D [ASLToATL _beg, ASLToATL _end, [0, 0, 1, 1]];
private _up = vectorNormalized (_normal vectorCrossProduct _side);
private _end = _beg vectorAdd (_up vectorMultiply 2);
drawLine3D [ASLToATL _beg, ASLToATL _end, [1, 0, 0, 1]];
private _movementVector = vectorNormalized (velocity ACE_player);
private _end = _beg vectorAdd (_movementVector vectorMultiply 2);
drawLine3D [ASLToATL _beg, ASLToATL _end, [1, 1, 0, 1]];
private _sideVector = vectorNormalized (_movementVector vectorCrossProduct _normal);
_sideVector set [2, 0];
private _end = _beg vectorAdd (_sideVector vectorMultiply 2);
drawLine3D [ASLToATL _beg, ASLToATL _end, [0, 1, 1, 1]];
}];

View File

@ -0,0 +1,25 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Updates the stamina bar state
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [] call ace_advanced_fatigue_fnc_updateStaminaBar
*
* Public: No
*/
GVAR(enableStaminaBarRealized) = GVAR(enabled) && GVAR(enableStaminaBar) && {!(missionNamespace getVariable [QEGVAR(ui,hideHud), false])};
TRACE_1("updateStaminaBar",GVAR(enableStaminaBarRealized));
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
if (isNull _staminaBarContainer) exitWith {};
_staminaBarContainer ctrlSetFade ([1, 0] select GVAR(enableStaminaBarRealized));
_staminaBarContainer ctrlCommit 0;

View File

@ -4,12 +4,9 @@
[LSTRING(Enabled), LSTRING(Enabled_Description)],
LSTRING(DisplayName),
true,
true, {
if (!_this) then {
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 1;
_staminaBarContainer ctrlCommit 0;
};
1,
{
call FUNC(updateStaminaBar);
[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)
},
true // Needs mission restart
@ -21,13 +18,8 @@
[LSTRING(EnableStaminaBar), LSTRING(EnableStaminaBar_Description)],
LSTRING(DisplayName),
true,
true, {
if (!_this) then {
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 1;
_staminaBarContainer ctrlCommit 0;
};
}
1,
{call FUNC(updateStaminaBar)}
] call CBA_fnc_addSetting;
[
@ -36,7 +28,8 @@
[LSTRING(FadeStaminaBar), LSTRING(FadeStaminaBar_Description)],
LSTRING(DisplayName),
true,
false, {
0,
{
if (!_this && GVAR(enabled) && GVAR(enableStaminaBar)) then {
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 0;
@ -50,8 +43,14 @@
"SLIDER",
[LSTRING(PerformanceFactor), LSTRING(PerformanceFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 1],
true
[0, 10, 1, 2],
1,
{
// Recalculate values if the setting is changed mid-mission
if (GVAR(enabled) && hasInterface && !isNull ACE_player) then {
[ACE_player, ACE_player] call FUNC(handlePlayerChanged);
};
}
] call CBA_fnc_addSetting;
[
@ -59,8 +58,8 @@
"SLIDER",
[LSTRING(RecoveryFactor), LSTRING(RecoveryFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 1],
true
[0, 10, 1, 2],
1
] call CBA_fnc_addSetting;
[
@ -68,8 +67,8 @@
"SLIDER",
[LSTRING(LoadFactor), LSTRING(LoadFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 1],
true
[0, 5, 1, 2],
1
] call CBA_fnc_addSetting;
[
@ -77,33 +76,6 @@
"SLIDER",
[LSTRING(TerrainGradientFactor), LSTRING(TerrainGradientFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 1],
true
] call CBA_fnc_addSetting;
[
QGVAR(swayFactor),
"SLIDER",
[LSTRING(SwayFactor), LSTRING(SwayFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 1],
true
] call CBA_fnc_addSetting;
[
QGVAR(restedSwayFactor),
"SLIDER",
[LSTRING(RestedSwayFactor), LSTRING(RestedSwayFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 2],
true
] call CBA_fnc_addSetting;
[
QGVAR(deployedSwayFactor),
"SLIDER",
[LSTRING(DeployedSwayFactor), LSTRING(DeployedSwayFactor_Description)],
LSTRING(DisplayName),
[0, 5, 1, 2],
true
1
] call CBA_fnc_addSetting;

View File

@ -16,14 +16,28 @@
#include "\z\ace\addons\main\script_macros.hpp"
#define UNDERWEAR_WEIGHT 3.5
#define ANTPERCENT 0.8
#define SIM_BODYMASS 70
#define JOULES_PER_ML_O2 20.9
#define VO2MAX_STRENGTH 4.1
#define REE 18.83 //((0.5617 * SIM_BODYMASS + 42.57) * 0.23)
#define OXYGEN 0.9
#define WATTSPERATP 7
#define BIOMECH_EFFICIENCY 0.23
#define REE 18.83 // ((0.5617 * SIM_BODYMASS + 42.57) * BIOMECH_EFFICIENCY)
#define AE1_MAXRESERVE 4000000
#define AE2_MAXRESERVE 84000
#define AN_MAXRESERVE 2300
#define RESPIRATORY_BUFFER 60
#define MUSCLE_TEAR_RATE 0.00004
#define MUSCLE_RECOVERY 0.00000386
#define AE1_ATP_RELEASE_RATE 13.3 // mmol
#define AE2_ATP_RELEASE_RATE 16.7 // mmol
#define AN_ATP_RELEASE_RATE 113.3 // mmol
#define AE1_ATP_RECOVERY 6.60 // mmol
#define AE2_ATP_RECOVERY 5.83 // mmol
#define AN_ATP_RECOVERY 56.70 // mmol
#define AE1_MAXRESERVE 4000000 // mmol
#define AE2_MAXRESERVE 84000 // mmol
#define AN_MAXRESERVE 2300 // mmol

View File

@ -7,7 +7,7 @@
<German>ACE Erweiterte Ausdauer</German>
<Chinese>ACE 進階疲勞</Chinese>
<Chinesesimp>ACE 进阶体力</Chinesesimp>
<Japanese>ACE アドバンスド疲労</Japanese>
<Japanese>ACE 高度な疲労</Japanese>
<Italian>ACE Fatica Avanzata</Italian>
<Korean>ACE 고급 피로도</Korean>
<French>ACE Fatigue avancée</French>
@ -44,7 +44,7 @@
<Italian>Influenza la prestazione generale di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore.</Italian>
<Chinese>影響所有玩家的體力表現,值越高代表體力越好</Chinese>
<Chinesesimp>影响所有玩家的体力表现,值越高代表体力越好</Chinesesimp>
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение.</Russian>
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение. Чем выше, тем лучше.</Russian>
<Portuguese>Influencia na performance geral de todos os jogadores sem nenhum fator personalizado. Quanto maior, melhor.</Portuguese>
<Czech>Ovlivňuje celkový výkon všech hráčů bez vlastního faktoru. Vyšší znamená lépe.</Czech>
</Key>
@ -59,7 +59,7 @@
<Italian>Influenza la prestazione personalizzata di questa unità. Maggiore significa migliore.</Italian>
<Chinese>影響這個單位的體力表現,值越高代表體力越好</Chinese>
<Chinesesimp>影响这个单位的体力表现,值越高代表体力越好</Chinesesimp>
<Russian>Влияет на общую производительность юнита.</Russian>
<Russian>Влияет на общую производительность юнита.Чем выше, тем лучше.</Russian>
<Portuguese>Influencia na performance geral dessa unidade. Quanto maior, melhor.</Portuguese>
<Czech>Ovlivňuje celkový výkon této jednotky. Vyšší znamená lépe.</Czech>
</Key>
@ -154,72 +154,6 @@
<Portuguese>Define o quanto que um terreno íngrime aumenta na perda de estamina. Quanto maior, maior a perda de estamina.</Portuguese>
<Czech>Nastavuje, o kolik strmý terén zvyšuje ztrátu výdrže. Vyšší znamená vyšší ztrátu výdrže.</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor">
<English>Sway factor</English>
<Spanish>Factor de balanceo de mira</Spanish>
<German>Verwacklungsfaktor</German>
<Japanese>手ぶれ因数</Japanese>
<Chinesesimp>抖动系数</Chinesesimp>
<Chinese>抖動因素</Chinese>
<French>Facteur de tremblement</French>
<Italian>Fattore di Oscillazione</Italian>
<Polish>Czynnik kołysania</Polish>
<Russian>Фактор колебания прицела</Russian>
<Portuguese>Fator de Balanço de Mira</Portuguese>
<Czech>Faktor kývání</Czech>
<Korean>손떨림 정도</Korean>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor_Description">
<English>Influences the amount of weapon sway. Higher means more sway.</English>
<Spanish>Afecta al la estabilidad de la mira. Más alto significa más balanceo</Spanish>
<German>Beeinflusst, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung.</German>
<Japanese>武器の手ぶれの量に影響します。値が高いほど、手ぶれが強くなります。</Japanese>
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害。</Chinesesimp>
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
<French>Influe sur l'amplitude du tremblement de l'arme. Une valeur plus élevée signifie plus de tremblement.</French>
<Italian>Influenza l'aumento di oscillazione dell'arma quando affaticato. Maggiore significa più oscillazione.</Italian>
<Polish>Wpływa na poziom kołysania broni. Większa ilość znaczy większe kołysanie.</Polish>
<Russian>Влияет на колебания прицела оружия. Чем выше - тем больше.</Russian>
<Portuguese>Influencia a quantidade de balanço da mira da arma. Quanto maior, mais balanço.</Portuguese>
<Czech>Ovlivňuje množství kývání zbraní. Vyšší znamená více kývání.</Czech>
<Korean>손떨림의 정도를 정합니다. 높을 수록 많이 휘적입니다.</Korean>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_RestedSwayFactor">
<English>Rested sway factor</English>
<French>Facteur de balancement au repos</French>
<Korean>휴식 시 손떨림 정도</Korean>
<Portuguese>Fator de balanço de mira em repouso</Portuguese>
<German>Verwacklungsfaktor, wenn aufgelegt</German>
<Italian>Fattore di Oscillazione Appoggiato</Italian>
<Japanese>静止時の手ぶれ係数</Japanese>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_RestedSwayFactor_Description">
<English>Influences the amount of weapon sway while weapon is rested.</English>
<French>Influence le degré de balancement de l'arme au repos.</French>
<Korean>무기가 아무런 행동도 하지 않는 동안 무기가 흔들리는 정도를 정합니다.</Korean>
<Portuguese>Influencia a quantidade de balanço de mira enquanto a arma está em repouso.</Portuguese>
<German>Beeinflusst, wie ruhig man die Waffe hält, während sie aufgelegt ist.</German>
<Italian>Determina la quantità di oscillazione dell'arma quando questa è appoggiata.</Italian>
<Japanese>静止している時の武器の手ぶれの量に影響します。</Japanese>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_DeployedSwayFactor">
<English>Deployed sway factor</English>
<French>Facteur de balancement déployé</French>
<Korean>거치 시 손떨림 정도</Korean>
<Portuguese>Fator de balanço de mira em posição de tiro</Portuguese>
<German>Verwacklungsfaktor, wenn Zweibein aufgestellt ist.</German>
<Italian>Fattore di Oscillazione su Bipode</Italian>
<Japanese>展開時の手ぶれ係数</Japanese>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_DeployedSwayFactor_Description">
<English>Influences the amount of weapon sway while weapon is deployed.</English>
<French>Influence le degré de balancement de l'arme déployée.</French>
<Korean>무기를 거치하는 동안 무기를 흔드는 정도를 정합니다.</Korean>
<Portuguese>Influencia a quantidade de balanço de mira enquanto a arma está em posição de tiro.</Portuguese>
<German>Beeinflusst, wie ruhig man die Waffen hält, während das Zweibein aufgestellt ist.</German>
<Italian>Determina la quantità di oscillazione dell'arma quando questa è stabilizzata usando il bipode.</Italian>
<Japanese>武器の展開(Cキー)時の武器の手ぶれの量に影響します。</Japanese>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
<English>Enabled</English>
<Spanish>Activada</Spanish>
@ -239,14 +173,14 @@
<English>Enables/disables Advanced Fatigue.</English>
<Spanish>Activa/desactiva la fatiga avanzada</Spanish>
<German>Aktiviert/deaktiviert Advanced Fatigue.</German>
<Japanese>アドバンスド疲労は高度な疲労管理システムを有効化します。</Japanese>
<Japanese>高度な疲労を有効/無効化します。</Japanese>
<Polish>Włącza/wyłącza zaawansowaną wytrzymałość</Polish>
<Korean>고급 피로도 활성화/비활성화</Korean>
<French>Active/Désactive la fatigue avancée.</French>
<Italian>Abilita/Disabilita la Fatica Avanzata.</Italian>
<Chinese>啟用/關閉進階體力.</Chinese>
<Chinesesimp>启用/关闭进阶体力。</Chinesesimp>
<Russian>Включает / Отключает Продвинутую усталость</Russian>
<Russian>Включает/отключает Продвинутую усталость</Russian>
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
</Key>

View File

@ -2,26 +2,18 @@
// Fired XEH
GVAR(ammoEventHandlers) = createHashMap;
[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
[QGVAR(throwFiredXEH), LINKFUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
// Exit on HC
if (!hasInterface) exitWith {};
// Ammo/Magazines look-up hash for correctness of initSpeed
GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
{
{
private _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo");
if (_ammo != "") then { GVAR(ammoMagLookup) setVariable [_ammo, _x]; };
} count (getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"));
nil
} count getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles");
// Temporary Wind Info indication
GVAR(tempWindInfo) = false;
// Add keybinds
["ACE3 Weapons", QGVAR(prepare), localize LSTRING(Prepare), {
// Condition
if (!([ACE_player] call FUNC(canPrepare))) exitWith {false};
if !([ACE_player] call FUNC(canPrepare)) exitWith {false};
if (EGVAR(common,isReloading)) exitWith {true};
// Statement

View File

@ -1,3 +1,21 @@
#include "script_component.hpp"
#include "XEH_PREP.hpp"
// Ammo/Magazines look-up hash for correctness of initSpeed
private _cfgMagazines = configFile >> "CfgMagazines";
private _cfgAmmo = configFile >> "CfgAmmo";
private _cfgThrow = configFile >> "CfgWeapons" >> "Throw";
private _ammoMagLookup = createHashMap;
{
{
private _ammo = getText (_cfgMagazines >> _x >> "ammo");
if (_ammo != "") then {
_ammoMagLookup set [configName (_cfgAmmo >> _ammo), _x];
};
} forEach (getArray (_cfgThrow >> _x >> "magazines"));
} forEach (getArray (_cfgThrow >> "muzzles"));
uiNamespace setVariable [QGVAR(ammoMagLookup), compileFinal _ammoMagLookup];

View File

@ -19,7 +19,7 @@ params ["_unit"];
if !(_unit getVariable [QGVAR(inHand), false]) exitWith {false};
if (vehicle _unit != _unit) exitWith {
if (!isNull objectParent _unit) exitWith {
private _startPos = eyePos _unit;
private _aimLinePos = AGLToASL (positionCameraToWorld [0, 0, 1]);
private _intersections = lineIntersectsSurfaces [_startPos, _aimLinePos, _unit, objNull, false];

View File

@ -43,13 +43,10 @@ if ((!_primed) && {!((_throwableMag in (uniformItems ACE_player)) || {_throwable
// Get correct throw power for primed grenade
if (_primed) then {
private _ammoType = typeOf _activeThrowable;
_throwableMag = GVAR(ammoMagLookup) getVariable _ammoType;
if (isNil "_throwableMag") then {
// What we're trying to throw must not be a normal throwable because it is not in our lookup hash (e.g. 40mm smoke)
// Just use HandGrenade as it has an average initSpeed value
_throwableMag = "HandGrenade";
};
// If ammo type is not found:
// What we're trying to throw must not be a normal throwable because it is not in our lookup hash (e.g. 40mm smoke)
// Just use HandGrenade as it has an average initSpeed value
_throwableMag = (uiNamespace getVariable QGVAR(ammoMagLookup)) getOrDefault [typeOf _activeThrowable, "HandGrenade"];
};
// Some throwables have different classname for magazine and ammo

View File

@ -53,6 +53,12 @@ _unit setVariable [QGVAR(dropDistance), DROP_DISTANCE_DEFAULT];
// Remove controls hint (check if ever enabled is inside the function)
call EFUNC(interaction,hideMouseHint);
// Hide wind info after throw, if it was temporarily enabled for the throw
if (GVAR(tempWindInfo)) then {
EGVAR(weather,WindInfo) = false;
GVAR(tempWindInfo) = false;
};
// Remove throw action
[_unit, "DefaultAction", _unit getVariable [QGVAR(throwAction), -1]] call EFUNC(common,removeActionEventHandler);

View File

@ -17,9 +17,9 @@
params ["_magazineClassname"];
_magazineClassname = toLower _magazineClassname;
_magazineClassname = toLowerANSI _magazineClassname;
private _throwMuzzles = getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles");
_throwMuzzles = _throwMuzzles select {_magazineClassname in ((getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines")) apply {toLower _x})};
_throwMuzzles = _throwMuzzles select {_magazineClassname in ((getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines")) apply {toLowerANSI _x})};
[_throwMuzzles select 0, ""] select (_throwMuzzles isEqualTo [])

View File

@ -21,7 +21,7 @@ TRACE_1("params",_unit);
// Select next throwable if one already in hand
if (_unit getVariable [QGVAR(inHand), false]) exitWith {
TRACE_1("inHand",_unit);
if (!(_unit getVariable [QGVAR(primed), false])) then {
if !(_unit getVariable [QGVAR(primed), false]) then {
TRACE_1("not primed",_unit);
// Restore muzzle ammo (setAmmo 1 has no impact if no appliccable throwable in inventory)
// selectNextGrenade relies on muzzles array (setAmmo 0 removes the muzzle from the array and current can't be found, cycles between 0 and 1 muzzles)
@ -35,6 +35,11 @@ if (isNull (_unit getVariable [QGVAR(activeThrowable), objNull]) && {(currentThr
TRACE_1("no throwables",_unit);
};
// Temporarily enable wind info, to aid in throwing smoke grenades effectively
if (GVAR(enableTempWindInfo) && {!(missionNamespace getVariable [QEGVAR(weather,WindInfo), false])}) then {
[] call EFUNC(weather,displayWindInfo);
GVAR(tempWindInfo) = true;
};
_unit setVariable [QGVAR(inHand), true];

View File

@ -44,8 +44,7 @@
_addedPickUpHelpers pushBack _pickUpHelper;
_throwablesHelped pushBack _x;
};
nil
} count _nearThrowables;
} forEach _nearThrowables;
_args set [0, getPosASL ACE_player];
_args set [3, _nearThrowables];
@ -56,11 +55,10 @@
{
// Only handling with attachTo works nicely
_x attachTo [_x getVariable [QGVAR(throwable), objNull], [0, 0, 0]];
nil
} count _addedPickUpHelpers;
} forEach _addedPickUpHelpers;
} else {
TRACE_1("Cleaning Pick Up Helpers",count _addedPickUpHelpers);
{deleteVehicle _x} count _addedPickUpHelpers;
{deleteVehicle _x} forEach _addedPickUpHelpers;
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
}, 0, [(getPosASL ACE_player) vectorAdd [-100, 0, 0], [], [], []]] call CBA_fnc_addPerFrameHandler;

View File

@ -20,7 +20,7 @@ TRACE_1("params",_unit);
// Prime the throwable if it hasn't been cooking already
// Next to proper simulation this also has to happen before delay for orientation of the throwable to be set
if (!(_unit getVariable [QGVAR(primed), false])) then {
if !(_unit getVariable [QGVAR(primed), false]) then {
[_unit] call FUNC(prime);
};
@ -45,7 +45,7 @@ if (!(_unit getVariable [QGVAR(primed), false])) then {
private _newVelocity = (_p1 vectorFromTo _p2) vectorMultiply _velocity;
// Adjust for throwing from inside vehicles, where we have a vehicle-based velocity that can't be compensated for by a human
if (vehicle _unit != _unit) then {
if (!isNull objectParent _unit) then {
_newVelocity = _newVelocity vectorAdd (velocity (vehicle _unit));
};

View File

@ -40,3 +40,11 @@ private _category = format ["ACE %1", localize LSTRING(Category)];
true,
1
] call CBA_fnc_addSetting;
[
QGVAR(enableTempWindInfo), "CHECKBOX",
[LSTRING(EnableTempWindInfo_DisplayName), LSTRING(EnableTempWindInfo_Description)],
_category,
true,
0
] call CBA_fnc_addSetting;

View File

@ -5,7 +5,7 @@
<English>Advanced Throwing</English>
<Spanish>Lanzamiento Avanzado</Spanish>
<Russian>Улучшенный бросок гранат</Russian>
<Japanese>アドバンスド投擲</Japanese>
<Japanese>高度な投擲</Japanese>
<Polish>Zaawansowane rzucanie</Polish>
<German>Erweitertes Wurfsystem</German>
<Korean>고급 투척</Korean>
@ -21,7 +21,7 @@
<English>Allows changing advanced throwing behaviour.</English>
<Spanish>Permite modificar el comportamiento del lanzamiento avanzado</Spanish>
<Russian>Позволяет настраивать поведение улучшенного броска гранат.</Russian>
<Japanese>アドバンスド投擲は投擲の高度な動作挙動を変更可能にします。</Japanese>
<Japanese>高度な投擲挙動への変更を可能にします。</Japanese>
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
<German>Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern.</German>
<Korean>고급 투척 행위를 허가합니다</Korean>
@ -36,7 +36,7 @@
<English>Enable Advanced Throwing</English>
<Spanish>Activar Lanzamiento Avanzado</Spanish>
<Russian>Вкл. улучшенный бросок</Russian>
<Japanese>アドバンスド投擲を有効化</Japanese>
<Japanese>高度な投擲を有効化</Japanese>
<Polish>Aktywuj zaawansowane rzucanie</Polish>
<German>Aktiviere erweitertes Wurfsystem</German>
<Korean>고급 투척 활성화 </Korean>
@ -52,7 +52,7 @@
<English>Enables advanced throwing system.</English>
<Spanish>Activa el Lanzamiento Avanzado</Spanish>
<Russian>Включает систему улучшенного броска.</Russian>
<Japanese>アドバンスド投擲は高度な投擲システムを有効化します。</Japanese>
<Japanese>高度な投擲システムを有効化します。</Japanese>
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
<German>Aktiviert das erweiterte Wurfsystem.</German>
<Korean>고급 투척을 활성화 합니다</Korean>
@ -144,7 +144,7 @@
<English>Enables ability to pick up throwables from the ground.</English>
<Spanish>Activa la habilidad de coger objetos lanzados del suelo</Spanish>
<Russian>Включает возможность подбирать гранаты с земли.</Russian>
<Japanese>地面に落ちている投擲物を拾い上げる機能を有効化します。</Japanese>
<Japanese>地面に落ちている投擲物を拾機能を有効化します。</Japanese>
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
<German>Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben.</German>
<Korean>땅에 떨어진 투척물을 주울 수 있게 해줍니다.</Korean>
@ -174,7 +174,7 @@
<English>Enables ability to pick up throwables from attached objects.</English>
<Spanish>Activa la habilidad de lanzar objetos enganchados</Spanish>
<Russian>Включает возможность подбирать гранаты, прикрепленные к объектам.</Russian>
<Japanese>オブジェクトに装着された投擲可能物を拾い上げる機能を有効化します。</Japanese>
<Japanese>オブジェクトに装着された投擲物を拾う機能を有効化します。</Japanese>
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
<German>Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen.</German>
<Korean>부착된 투척물을 주울 수 있게 해줍니다.</Korean>
@ -185,6 +185,26 @@
<Portuguese>Permite que arremessáveis fixados em objetos sejam pegos.</Portuguese>
<Czech>Zapíná schopnost zvednutí předmětů z objektů ke kterým jsou připnuté.</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_EnableTempWindInfo_DisplayName">
<English>Show Temporary Wind Info</English>
<German>Zeige temporäre Windinformationen</German>
<Italian>Mostra informazioni sul vento temporaneamente</Italian>
<Japanese>一時的に風の情報を表示</Japanese>
<Korean>바람 정보 임시로 표시</Korean>
<French>Afficher temporairement les informations sur le vent</French>
<Russian>Временно показать информацию о ветре</Russian>
<Spanish>Mostrar información del viento temporalmente</Spanish>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_EnableTempWindInfo_Description">
<English>Temporarily display Wind Info while throwing, to aid in placing smoke grenades effectively.</English>
<German>Zeige während des werfens Windinformationen an, um Rauchgranaten effektiver zu platzieren.</German>
<Italian>Mostra le informazioni sul vento durante il lancio di granate, facilitando il piazzamento ottimale di fumogeni.</Italian>
<Japanese>投擲行動中に風向きの情報を一時的に表示し、発煙手榴弾の煙幕を効果的に展開しやすくします。</Japanese>
<Korean>연막탄을 효과적으로 배치하는 데 도움이 되도록 투척하는 동안 일시적으로 바람 정보를 표시합니다.</Korean>
<French>Affiche les informations sur le vent pendant le lancement pour placer les grenades fumigènes plus efficacement.</French>
<Russian>Временно отображайте информацию о ветре во время броска, чтобы помочь эффективно разместить дымовые шашки.</Russian>
<Spanish>Mostrar información del viento temporalmente mientras se lanza, para ayudar a lanzar las granadas de humo de forma efectiva.</Spanish>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
<English>Prepare/Change Throwable</English>
<Spanish>Preparar/Cambiar objetos lanzables</Spanish>
@ -234,7 +254,7 @@
<English>Primed</English>
<Spanish>Preparado</Spanish>
<Russian>Подготовлена</Russian>
<Japanese>点火</Japanese>
<Japanese>点火した</Japanese>
<Polish>Odbezpieczony</Polish>
<German>Scharf gemacht</German>
<Korean>뇌관 작동</Korean>

View File

@ -16,7 +16,7 @@
} forEach _sections;
}] call CBA_fnc_addEventHandler;
[QGVAR(unGarrison), FUNC(unGarrison)] call CBA_fnc_addEventHandler;
[QGVAR(unGarrison), LINKFUNC(unGarrison)] call CBA_fnc_addEventHandler;
[QGVAR(doMove), {
params ["_unitsArray"];
@ -73,6 +73,6 @@
if (isServer) then {
["CAManBase", "init", {
// wait for HMD to be assigned so `hmd _unit` works
[FUNC(assignNVG), _this, 1] call CBA_fnc_waitAndExecute;
[LINKFUNC(assignNVG), _this, 1] call CBA_fnc_waitAndExecute;
}] call CBA_fnc_addClassEventHandler;
};

View File

@ -7,8 +7,8 @@
* 0: The building(s) nearest this position are used <POSITION>
* 1: Limit the building search to those type of building <ARRAY>
* 2: Units that will be garrisoned <ARRAY>
* 3: Radius to fill building(s) <SCALAR> (default: 50)
* 4: 0: even filling, 1: building by building, 2: random filling <SCALAR> (default: 0)
* 3: Radius to fill building(s) <NUMBER> (default: 50)
* 4: 0: even filling, 1: building by building, 2: random filling <NUMBER> (default: 0)
* 5: True to fill building(s) from top to bottom <BOOL> (default: false) (note: only works with filling mode 0 and 1)
* 6: Teleport units <BOOL> (default: false)
@ -33,7 +33,7 @@ if (_startingPos isEqualTo [0,0,0]) exitWith {
[LSTRING(GarrisonInvalidPosition)] call EFUNC(common,displayTextStructured);
};
if (count _unitsArray == 0 || {isNull (_unitsArray select 0)}) exitWith {
if (_unitsArray isEqualTo [] || {isNull (_unitsArray select 0)}) exitWith {
TRACE_1("fnc_garrison: Units error",_unitsArray);
[LSTRING(GarrisonNoUnits)] call EFUNC(common,displayTextStructured);
};
@ -43,7 +43,7 @@ if (_fillingRadius >= 50) then {
_buildings = [_buildings] call CBA_fnc_shuffle;
};
if (count _buildings == 0) exitWith {
if (_buildings isEqualTo []) exitWith {
TRACE_1("fnc_garrison: Building error",_buildings);
[LSTRING(GarrisonNoBuilding)] call EFUNC(common,displayTextStructured);
};
@ -128,7 +128,7 @@ switch (_fillingType) do {
} else {
private _pos = _building select 0;
private _nearestUnits = (_pos nearEntities ["CAManBase", 2]);
LOG(format [ARR_3("fnc_garrison: Unit detection | %1 units nearby | %2 units within height",count _nearestUnits, {floor ((getPos _x) select 2) == floor (_pos select 2)} count _nearestUnits)]);
LOG(format [ARR_3("fnc_garrison: Unit detection | %1 units nearby | %2 units within height",count _nearestUnits,{floor ((getPos _x) select 2) == floor (_pos select 2)} count _nearestUnits)]);
if (count _nearestUnits > 0 && {[_nearestUnits, _pos] call _fnc_comparePos}) then {
LOG(format [ARR_2("fnc_garrison: Unit present | removing position | %1 positions remaining for this building",count (_buildingsIndex select (_buildingsIndex find _building)) - 1)]);
@ -177,7 +177,7 @@ switch (_fillingType) do {
} else {
private _pos = _building select 0;
private _nearestUnits = (_pos nearEntities ["CAManBase", 2]);
LOG(format [ARR_3("fnc_garrison: Unit detection | %1 units nearby | %2 units within height",count _nearestUnits, {floor ((getPos _x) select 2) == floor (_pos select 2)} count _nearestUnits)]);
LOG(format [ARR_3("fnc_garrison: Unit detection | %1 units nearby | %2 units within height",count _nearestUnits,{floor ((getPos _x) select 2) == floor (_pos select 2)} count _nearestUnits)]);
if (count _nearestUnits > 0 && {[_nearestUnits, _pos] call _fnc_comparePos}) then {
LOG(format [ARR_2("fnc_garrison: Unit present | removing position | %1 positions remaining for this building",count (_buildingsIndex select (_buildingsIndex find _building)) - 1)]);
@ -224,7 +224,7 @@ switch (_fillingType) do {
} else {
private _pos = selectRandom _building;
private _nearestUnits = (_pos nearEntities ["CAManBase", 2]);
LOG(format [ARR_3("fnc_garrison: Unit detection | %1 units nearby | %2 units within height",count _nearestUnits, {floor ((getPos _x) select 2) == floor (_pos select 2)} count _nearestUnits)]);
LOG(format [ARR_3("fnc_garrison: Unit detection | %1 units nearby | %2 units within height",count _nearestUnits,{floor ((getPos _x) select 2) == floor (_pos select 2)} count _nearestUnits)]);
if (count _nearestUnits > 0 && {[_nearestUnits, _pos] call _fnc_comparePos}) then {
LOG(format [ARR_2("fnc_garrison: Unit present | removing position | %1 positions remaining for this building",count (_buildingsIndex select (_buildingsIndex find _building)) - 1)]);
@ -258,7 +258,7 @@ switch (_fillingType) do {
};
};
TRACE_1(format [ARR_2("fnc_garrison: while loop ended | %1 units ready to be treated by PFH",count _unitMoveList)], _teleport);
TRACE_1(format [ARR_2("fnc_garrison: while loop ended | %1 units ready to be treated by PFH",count _unitMoveList)],_teleport);
// Update the unit list and remove duplicate positions and units
private _garrison_unitMoveList = missionNameSpace getVariable [QGVAR(garrison_unitMoveList), []];
@ -279,5 +279,5 @@ if (_teleport) then {
[_unitMoveList] call FUNC(garrisonMove);
};
TRACE_1(format [ARR_3("fnc_garrison: End | %1 units left | %2 buildings left", count _unitsArray, count _buildingsIndex)], _unitsArray);
TRACE_1(format [ARR_3("fnc_garrison: End | %1 units left | %2 buildings left",count _unitsArray,count _buildingsIndex)],_unitsArray);
_unitsArray

View File

@ -81,13 +81,13 @@ if (isNil QGVAR(garrison_moveUnitPFH)) then {
[QGVAR(enableAttack), [[_unit], true], _unit] call CBA_fnc_targetEvent;
};
LOG(format [ARR_2("garrisonMove PFH: unit in position | %1 units left", count _unitMoveList)]);
LOG(format [ARR_2("garrisonMove PFH: unit in position | %1 units left",count _unitMoveList)]);
};
// Check if unit is alive or even existing
if (!alive _unit || {_unit getVariable [QGVAR(garrisoned), false]}) then {
_unitMoveList deleteAt (_unitMoveList find _x);
LOG(format [ARR_2("garrisonMove PFH: unit dead, deleted or garrisoned via TP | %1 units left", count _unitMoveList)]);
LOG(format [ARR_2("garrisonMove PFH: unit dead, deleted or garrisoned via TP | %1 units left",count _unitMoveList)]);
} else {
private _unitPos = getPos _unit;

View File

@ -28,7 +28,7 @@ _units = _units select {local _x};
private _leader = leader _unit;
TRACE_3("fnc_ungarrison: unit and leader",_unit , _leader, (_leader == _unit));
TRACE_3("fnc_ungarrison: unit and leader",_unit,_leader,(_leader == _unit));
_unit setVariable [QGVAR(garrisonned), false, true];

View File

@ -90,6 +90,8 @@
<French>Equipement JVN automatique</French>
<Portuguese>Equipar NVGs automaticamente</Portuguese>
<Japanese>暗視装置の自動装備</Japanese>
<Russian>Автоматическое оснащение ПНВ</Russian>
<Spanish>Auto equipar gafas de visión nocturna</Spanish>
</Key>
<Key ID="STR_ACE_AI_AssignNVG_Description">
<English>Equips NVG in inventory during night time and unequips it during day time.\nDoes not add NVGs to inventory!</English>
@ -100,6 +102,8 @@
<French>Equipe des JVN pendant la nuit et les déséquipe le jour.\nN'ajoute pas les JVN dans l'intenvaire !</French>
<Portuguese>Equipa o NVG do inventário durante a noite e desequipa durante o dia.\nNão adiciona NVGs ao inventário!</Portuguese>
<Japanese>インベントリ内の暗視装置を夜間に装備し、日中は解除し収納します。\nこれはNVGをインベントリに追加しません。</Japanese>
<Russian>Экипирует ПНВ в ночное время и отключает его в дневное время.\nНе добавляет ПНВ в инвентарь!</Russian>
<Spanish>Equipa las gafas de visión nocturna en el inventario cuando es de noche, y las desequipa cuando es de día.\nNo añade las gafas al inventario!</Spanish>
</Key>
</Package>
</Project>

View File

@ -30,6 +30,6 @@ _vehicle == vehicle _unit
if (_unit == _x select FULLCREW_UNIT) exitWith {
_ejectVarName = format [QGVAR(ejectAction_%1_%2), _x select FULLCREW_ROLE, _x select FULLCREW_TURRETPATH];
};
} count fullCrew _vehicle;
} forEach fullCrew _vehicle;
_vehicle getVariable [_ejectVarName, false]
}

View File

@ -22,7 +22,7 @@ if (!alive _vehicle) exitWith {};
if (_vehicle getVariable [QGVAR(droneActionsAdded), false]) exitWith {};
_vehicle setVariable [QGVAR(droneActionsAdded), true];
// move to location
// Move to location
private _condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
@ -37,14 +37,63 @@ private _action = [QGVAR(droneSetWaypointMove), localize "$STR_AC_MOVE",
"\a3\3DEN\Data\CfgWaypoints\Move_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// Follow unit/vehicle at turret location
_condition = {
params ["_vehicle"];
private _target = cursorTarget;
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} && {!isNull _target} && {["CAManBase", "LandVehicle", "Ship"] findIf {_target isKindOf _x} != -1}
};
_statement = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0;
[QGVAR(droneSetWaypoint), [_vehicle, _group, _pos, "FOLLOW", cursorTarget], _group] call CBA_fnc_targetEvent;
private _followDistance = _vehicle getVariable [QGVAR(wpFollowDistance), 0];
[[LLSTRING(DroneFollowHint), _followDistance], 3] call EFUNC(common,displayTextStructured);
};
_action = [QGVAR(droneSetWaypointFollow), localize "$STR_AC_FOLLOW", "\a3\3DEN\Data\CfgWaypoints\Follow_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// Set drone follow distance
_condition = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} && {(waypointType _waypoint) == "HOLD"}
};
_statement = {
params ["_vehicle", "", "_value"];
_vehicle setVariable [QGVAR(wpFollowDistance), _value];
[[LLSTRING(DroneFollowHint), _value], 3] call EFUNC(common,displayTextStructured);
};
_action = [QGVAR(droneSetFollowDistance), LLSTRING(DroneFollowDistance), "", {}, _condition] call EFUNC(interact_menu,createAction);
private _base = [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
private _followDistances = if (_vehicle isKindOf "Car_F") then {
[0, 25, 50, 100, 200]
} else {
[0, 100, 200, 300, 400, 500]
};
{
_action = [
QGVAR(droneSetFollowDistance_) + str _x,
str _x,
"",
_statement,
{true},
{},
_x
] call EFUNC(interact_menu,createAction);
[_vehicle, 1, _base, _action] call EFUNC(interact_menu,addActionToObject);
} forEach _followDistances;
if (_vehicle isKindOf "Air") then {
// loiter at location
// Loiter at location
_condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
};
_statement = {
_statement = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0;
@ -55,7 +104,7 @@ if (_vehicle isKindOf "Air") then {
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// set height
// Set height
_condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
@ -74,7 +123,7 @@ if (_vehicle isKindOf "Air") then {
} forEach [20, 50, 200, 500, 2000];
// set loiter radius
// Set loiter radius
_condition = {
params ["_vehicle"];
private _group = group driver _vehicle;
@ -97,7 +146,7 @@ if (_vehicle isKindOf "Air") then {
} forEach [500, 750, 1000, 1250, 1500];
// set loiter direction
// Set loiter direction
_condition = {
params ["_vehicle", "", "_args"];
private _group = group driver _vehicle;

View File

@ -17,13 +17,13 @@
*
* Public: No
*/
params ["_vehicle", "_group", "_type", "_value"];
TRACE_4("droneModifyWaypoint",_vehicle,_group,_type,_value);
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
switch (toLower _type) do {
switch (toLowerANSI _type) do {
case ("height"): {
private _pos = waypointPosition _waypoint;
_pos set [2, _value];

View File

@ -8,6 +8,7 @@
* 1: Group <GROUP>
* 2: Pos 2D <ARRAY>
* 3: Type <STRING>
* 4: Target to follow <OBJECT> (default: objNull)
*
* Return Value:
* None
@ -18,7 +19,7 @@
* Public: No
*/
params ["_vehicle", "_group", "_pos", "_type"];
params ["_vehicle", "_group", "_pos", "_type", ["_target", objNull]];
TRACE_4("droneSetWaypoint",_vehicle,_group,_pos,_type);
private _index = (currentWaypoint _group) min count waypoints _group;
@ -29,11 +30,39 @@ private _currentLoiterRadius = waypointLoiterRadius _waypoint;
private _currentLoiterType = waypointLoiterType _waypoint;
// Set pos to ATL
_pos set [2, if (_currentHeight >= 50) then { _currentHeight } else { 0 }];
_pos set [
2,
[0, _currentHeight] select (_currentHeight >= 50)
];
// [_group] call CBA_fnc_clearWaypoints;
_waypoint = _group addWaypoint [_pos, 0];
_waypoint setWaypointType _type;
// The Vanilla "FOLLOW"-type waypoint is not used directly, due to 2 main issues (as of v2.16):
// - It does not work at all for UGVs, which is a known issue https://feedback.bistudio.com/T126283;
// - No clear scripting way was found to mimic the UAV Terminal's "Follow Distance" functionality;
// Instead, the solution for both UAV and UGV following consists of a CBA PFH that moves a "HOLD"-type Waypoint every 3 seconds.
// Either on the target itself, or on the Drone's current position if the target is within the desired follow distance.
if (_type == "FOLLOW" && {["CAManBase", "LandVehicle", "Ship"] findIf {_target isKindOf _x} != -1}) then {
_waypoint setWaypointType "HOLD";
[{
params ["_args", "_handle"];
_args params ["_vehicle", "_group", "_waypoint", "_target"];
if ( // Abort PFH if a new waypoint is created via UAV Terminal or ACE Interaction
_waypoint select 1 != currentWaypoint _group ||
{!alive _vehicle} || {isNull _target}
) exitWith {
deleteWaypoint _waypoint;
[_handle] call CBA_fnc_removePerFrameHandler;
};
private _followDistance = _vehicle getVariable [QGVAR(wpFollowDistance), 0];
if ((_vehicle distance2D _target) < _followDistance) then {
_waypoint setWaypointPosition [getPosASL _vehicle, -1];
} else {
_waypoint setWaypointPosition [getPosASL _target, -1];
};
}, 3, [_vehicle, _group, _waypoint, _target]] call CBA_fnc_addPerFrameHandler;
};
TRACE_3("",_currentHeight,_currentLoiterRadius,_currentLoiterType);
if (_currentHeight > 1) then { _vehicle flyInHeight _currentHeight; };

View File

@ -29,7 +29,7 @@
<Russian>Открыть грузовой отсек</Russian>
<Italian>Apri la rampa di carico</Italian>
<Portuguese>Abrir porta de carga</Portuguese>
<Japanese>カーゴ ドアを開く</Japanese>
<Japanese>貨物室ドアを 開く</Japanese>
<Korean>화물칸 개방</Korean>
<Chinese>開啟貨艙門</Chinese>
<Chinesesimp>开启货舱门</Chinesesimp>
@ -46,7 +46,7 @@
<Russian>Закрыть грузовой отсек</Russian>
<Italian>Chiudi la rampa di carico</Italian>
<Portuguese>Fechar porta de carga</Portuguese>
<Japanese>カーゴ ドアを閉じる</Japanese>
<Japanese>貨物室ドアを 閉じる</Japanese>
<Korean>화물칸 폐쇄</Korean>
<Chinese>關閉貨艙門</Chinese>
<Chinesesimp>关闭货舱门</Chinesesimp>
@ -129,7 +129,7 @@
<Japanese>30mm コンバット ミックス 4:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese>
<Czech>30mm Bojový Mix 4:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 4:1 ОУ:ОФЗ</Russian>
<Korean>30mm 4:1 열화:고폭소이</Korean>
<Korean>30mm 열화우라늄:고폭소이 4:1 혼합</Korean>
<Portuguese>30mm Mix de Combate 4:1 DU:AEI</Portuguese>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM41">
@ -145,7 +145,7 @@
<Japanese>30mm CM 4:1</Japanese>
<Czech>30mm BM 4:1</Czech>
<Russian>30мм СБ 4:1</Russian>
<Korean>30mm CM 4:1</Korean>
<Korean>30mm 4:1 혼합</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM51">
<English>30mm Combat Mix 5:1 DU:HEI</English>
@ -160,7 +160,7 @@
<Japanese>30mm コンバット ミックス 5:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese>
<Czech>30mm Bojový Mix 5:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 5:1 ОУ:ОФЗ</Russian>
<Korean>30mm 5:1 열화:고폭소이</Korean>
<Korean>30mm 열화우라늄:고폭소이 5:1 혼합</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM51">
<English>30mm CM 5:1</English>
@ -175,7 +175,23 @@
<Japanese>30mm CM 5:1</Japanese>
<Czech>30mm BM 5:1</Czech>
<Russian>30мм СБ 5:1</Russian>
<Korean>30mm CM 5:1</Korean>
<Korean>30mm 5:1 혼합</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_DroneFollowDistance">
<English>Follow Distance</English>
<Italian>Distanza di seguimento</Italian>
<German>Folge-Entfernung</German>
<Korean>따라가는 거리</Korean>
<French>Distance de suivi</French>
<Japanese>追跡距離</Japanese>
</Key>
<Key ID="STR_ACE_Aircraft_DroneFollowHint">
<English>Following unit within %1m</English>
<Italian>Seguendo unità entro %1m</Italian>
<German>Folgt Einheit bis zu %1m</German>
<Korean>%1m 이내로 유닛을 따라갑니다</Korean>
<French>Suivre l'unité jusqu'à %1m</French>
<Japanese>%1m 間隔で 目標を追跡します</Japanese>
</Key>
</Package>
</Project>

View File

@ -123,7 +123,9 @@ class GVAR(stats) {
stats[] = {"maximumLoad"};
displayName = "$STR_a3_rscdisplayarsenal_stat_load";
showBar = 1;
showText = 1;
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
textStatement = QUOTE(call FUNC(statTextStatement_load));
tabs[] = {{3,4,5}, {}};
};
class ACE_smokeChemTTL: statBase {

View File

@ -110,7 +110,7 @@ class Cfg3DEN {
h = QUOTE(65 * ATTRIBUTE_H);
drawSideArrows = 1;
disableOverflow = 1;
columns[] = {0.05, 0.15, 0.85};
columns[] = {0.05, 0.15, 0.83, 0.87};
};
class ArrowLeft: ctrlButton {
idc = IDC_ATTRIBUTE_LIST_LEFT;

View File

@ -16,6 +16,8 @@ PREP(attributeKeyDown);
PREP(attributeLoad);
PREP(attributeMode);
PREP(attributeSelect);
PREP(baseAttachment);
PREP(baseOptic);
PREP(baseWeapon);
PREP(buttonActionsPage);
PREP(buttonCargo);
@ -76,6 +78,7 @@ PREP(removeStat);
PREP(removeVirtualItems);
PREP(renameDefaultLoadout);
PREP(replaceUniqueItemsLoadout);
PREP(saveLoadout);
PREP(scanConfig);
PREP(showItem);
PREP(sortPanel);
@ -96,6 +99,7 @@ PREP(statBarStatement_rateOfFIre);
PREP(statTextStatement_accuracy);
PREP(statTextStatement_explosionTime);
PREP(statTextStatement_illuminators);
PREP(statTextStatement_load);
PREP(statTextStatement_magCount);
PREP(statTextStatement_mass);
PREP(statTextStatement_rateOfFire);

View File

@ -22,7 +22,8 @@ GVAR(lastSortDirectionRight) = DESCENDING;
params ["_object"];
// If the arsenal is already open, refresh arsenal display
if (!isNil QGVAR(currentBox) && {GVAR(currentBox) isEqualTo _object}) then {
// Deliberate == check, fail on objNull
if (!isNil QGVAR(currentBox) && {GVAR(currentBox) == _object}) then {
[true, true] call FUNC(refresh);
};
}] call CBA_fnc_addEventHandler;
@ -69,7 +70,7 @@ GVAR(lastSortDirectionRight) = DESCENDING;
if (!isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
private _curSelData = _contentPanelCtrl lnbData [lnbCurSelRow _contentPanelCtrl, 1];
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount"];
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsList", "_unavailableItemsList"];
_extendedLoadout params ["_loadout"];
private _newRow = _contentPanelCtrl lnbAddRow [_playerName, _loadoutName];
@ -80,10 +81,10 @@ GVAR(lastSortDirectionRight) = DESCENDING;
_contentPanelCtrl lnbSetData [[_newRow, 1], _playerName + _loadoutName];
// Set color of row, depending if items are unavailable/missing
if (_nullItemsAmount > 0) then {
if (_nullItemsList isNotEqualTo []) then {
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 0, 0, 0.8]];
} else {
if (_unavailableItemsAmount > 0) then {
if (_unavailableItemsList isNotEqualTo []) then {
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 1, 1, 0.25]];
};
};
@ -107,24 +108,16 @@ GVAR(lastSortDirectionRight) = DESCENDING;
private _face = _extendedInfo getOrDefault [QGVAR(face), ""];
if (_face != "") then {
if (isMultiplayer) then {
private _id = [QGVAR(broadcastFace), [_unit, _face], QGVAR(centerFace_) + netId _unit] call CBA_fnc_globalEventJIP;
[_id, _unit] call CBA_fnc_removeGlobalEventJIP;
} else {
_unit setFace _face;
};
private _id = [QGVAR(broadcastFace), [_unit, _face], QGVAR(centerFace_) + hashValue _unit] call CBA_fnc_globalEventJIP;
[_id, _unit] call CBA_fnc_removeGlobalEventJIP;
};
// Set voice
private _voice = _extendedInfo getOrDefault [QGVAR(voice), ""];
if (_voice != "") then {
if (isMultiplayer) then {
private _id = [QGVAR(broadcastVoice), [_unit, _voice], QGVAR(centerVoice_) + netId _unit] call CBA_fnc_globalEventJIP;
[_id, _unit] call CBA_fnc_removeGlobalEventJIP;
} else {
_unit setSpeaker _voice;
};
private _id = [QGVAR(broadcastVoice), [_unit, _voice], QGVAR(centerVoice_) + hashValue _unit] call CBA_fnc_globalEventJIP;
[_id, _unit] call CBA_fnc_removeGlobalEventJIP;
};
// Set insignia
@ -146,7 +139,7 @@ GVAR(lastSortDirectionRight) = DESCENDING;
// Set voice if enabled
if (GVAR(loadoutsSaveVoice)) then {
_extendedInfo set [QGVAR(voice), speaker _unit];
_extendedInfo set [QGVAR(voice), (speaker _unit) call EFUNC(common,getConfigName)];
};
// Set insignia if enabled

View File

@ -36,7 +36,59 @@ call FUNC(compileStats);
EGVAR(common,blockItemReplacement) = false;
}] call CBA_fnc_addEventHandler;
[QGVAR(cargoChanged), {
params ["_display"];
// Only update actions if necessary, this can get performance-intensive using the arrow keys
if (!GVAR(updateActionsOnCargoChange)) exitWith {};
private _actionInfo = [_display];
_actionInfo append GVAR(actionInfo);
[QGVAR(displayActions), _actionInfo] call CBA_fnc_localEvent;
}] call CBA_fnc_addEventHandler;
// Setup Tools tab
[keys (uiNamespace getVariable [QGVAR(configItemsTools), createHashMap]), LLSTRING(toolsTab), TOOLS_TAB_ICON, -1, true] call FUNC(addRightPanelButton);
// TODO: make IDCs able to match IDX with simple math?
GVAR(idxMap) = createHashMapFromArray [
[IDC_buttonPrimaryWeapon, IDX_VIRT_PRIMARY_WEAPONS],
[IDC_buttonHandgun, IDX_VIRT_HANDGUN_WEAPONS],
[IDC_buttonSecondaryWeapon, IDX_VIRT_SECONDARY_WEAPONS],
[IDC_buttonHeadgear, IDX_VIRT_HEADGEAR],
[IDC_buttonUniform, IDX_VIRT_UNIFORM],
[IDC_buttonVest, IDX_VIRT_VEST],
[IDC_buttonBackpack, IDX_VIRT_BACKPACK],
[IDC_buttonGoggles, IDX_VIRT_GOGGLES],
[IDC_buttonNVG, IDX_VIRT_NVG],
[IDC_buttonBinoculars, IDX_VIRT_BINO],
[IDC_buttonMap, IDX_VIRT_MAP],
[IDC_buttonGPS, IDX_VIRT_COMMS],
[IDC_buttonRadio, IDX_VIRT_RADIO],
[IDC_buttonCompass, IDX_VIRT_COMPASS],
[IDC_buttonWatch, IDX_VIRT_WATCH]
];
// Make new hashmaps for face/voice/insignia so mission makers can disable them
// Copies of hashmaps aren't final
GVAR(faceCache) = +(uiNamespace getVariable QGVAR(faceCache));
GVAR(voiceCache) = +(uiNamespace getVariable QGVAR(voiceCache));
GVAR(insigniaCache) = +(uiNamespace getVariable QGVAR(insigniaCache));
// Get mission/campaign insignias
// BIS_fnc_setUnitInsignia will look in mission config, then campaign, then global config last, so overwrite accordingly
private _insigniaCondition = toString {
if (isNumber (_x >> "scope")) then {
getNumber (_x >> "scope") == 2
} else {
true
};
};
// Ref fnc_addListBoxItem, 0/nil = configFile, 1 = campaignConfigFile, 2 = missionConfigFile
{
GVAR(insigniaCache) set [configName _x, 1];
} forEach (_insigniaCondition configClasses (campaignConfigFile >> "CfgUnitInsignia"));
{
GVAR(insigniaCache) set [configName _x, 2];
} forEach (_insigniaCondition configClasses (missionConfigFile >> "CfgUnitInsignia"));
ADDON = true;

View File

@ -155,6 +155,8 @@
#define IDC_statsNextPage 53
#define IDC_statsCurrentPage 54
#define IDC_actionsBox 90
#define IDC_actionsBackground1 90010
#define IDC_actionsBackground2 90011
#define IDC_actionsText1 9001
#define IDC_actionsButton1 9002
#define IDC_actionsText2 9003
@ -268,6 +270,7 @@
#define IDX_VIRT_UNIQUE_UNKNOWN_ITEMS 25
// Indexes of current items array
// Should match IDX_VIRT_X macros for any left panel tabs
#define IDX_CURR_PRIMARY_WEAPON 0
#define IDX_CURR_SECONDARY_WEAPON 1
#define IDX_CURR_HANDGUN_WEAPON 2
@ -487,3 +490,6 @@ if (!isNil QGVAR(customRightPanelButtons)) then {\
_contentPanelCtrl lnbSetPicture [[_newRow, 7], getText (configFile >> "CfgVehicles" >> (_loadout select IDX_LOADOUT_BACKPACK) select 0 >> "picture")];\
_contentPanelCtrl lnbSetPicture [[_newRow, 8], getText (_cfgWeapons >> _loadout select IDX_LOADOUT_HEADGEAR >> "picture")];\
_contentPanelCtrl lnbSetPicture [[_newRow, 9], getText (configFile >> "CfgGlasses" >> _loadout select IDX_LOADOUT_GOGGLES >> "picture")];
#define ACTION_TYPE_TEXT 0
#define ACTION_TYPE_BUTTON 1

View File

@ -1,4 +1,5 @@
#include "..\script_component.hpp"
#include "..\defines.hpp"
/*
* Author: johnb43
* Adds custom action buttons.
@ -10,6 +11,7 @@
* 3: Actions <ARRAY of ARRAYS>
* 4: Condition <CODE> (default: {true})
* 5: Scope editor <NUMBER> (default: 2)
* 6: Update when cargo content changes <BOOL> (default: false)
*
* Return Value:
* 0: Array of IDs <ARRAY of STRINGS>
@ -30,7 +32,8 @@ params [
["_title", "", [""]],
["_actions", [], [[]]],
["_rootCondition", {true}, [{}]],
["_scopeEditor", 2, [0]]
["_scopeEditor", 2, [0]],
["_updateOnCargoChange", false, [false]]
];
// Compile actions from config (in case this is called before preInit)
@ -38,13 +41,13 @@ call FUNC(compileActions);
// Skip if not allowed in editor and in editor
if (is3DEN && {_scopeEditor != 2}) exitWith {
TRACE_1("Skipping action because in editor", _rootClass);
TRACE_1("Skipping action because in editor",_rootClass);
[]
};
// Class can't contain ~, because it's used for formatting result
if ("~" in _rootClass) exitWith {
TRACE_1("Classname can't contain '~'", _rootClass);
TRACE_1("Classname can't contain '~'",_rootClass);
[]
};
@ -65,7 +68,7 @@ private _fnc_addToGroup = {
// Don't allow two of the same class
if (_group findIf {(_x select 0) == _class} != -1) then {
TRACE_1("An action with this ID already exists", _class);
TRACE_1("An action with this ID already exists",_class);
continue;
};
@ -119,4 +122,8 @@ private _group = [];
};
} forEach _tabs;
if (_updateOnCargoChange) then {
GVAR(updateActionsOnCargoChange) = true;
};
_return

View File

@ -6,9 +6,10 @@
*
* Arguments:
* 0: Config category, must be "CfgWeapons", "CfgVehicles", "CfgMagazines", "CfgVoice" or "CfgUnitInsignia" <STRING>
* 1: Classname <STRING>
* 1: Classname (must be in config case) <STRING>
* 2: Panel control <CONTROL>
* 3: Name of the picture entry in that Cfg class <STRING> (default: "picture")
* 4: Config root <NUMBER> (default: 0 -> configFile)
*
* Return Value:
* None
@ -19,9 +20,9 @@
* Public: Yes
*/
params ["_configCategory", "_className", "_ctrlPanel", ["_pictureEntryName", "picture", [""]]];
params ["_configCategory", "_className", "_ctrlPanel", ["_pictureEntryName", "picture", [""]], ["_configRoot", 0, [0]]];
private _skip = GVAR(favoritesOnly) && {!(_className in GVAR(currentItems))} && {!((toLower _className) in GVAR(favorites))};
private _skip = GVAR(favoritesOnly) && {!(_className in GVAR(currentItems))} && {!((toLowerANSI _className) in GVAR(favorites))};
if (_skip) then {
switch (GVAR(currentLeftPanel)) do {
case IDC_buttonPrimaryWeapon: {
@ -41,10 +42,10 @@ if (_skip) then {
if (_skip) exitWith {};
// Sanitise key, as it's public; If not in cache, find info and cache it for later use
((uiNamespace getVariable QGVAR(addListBoxItemCache)) getOrDefaultCall [_configCategory + _className, {
// If not in cache, find info and cache it for later use
((uiNamespace getVariable QGVAR(addListBoxItemCache)) getOrDefaultCall [_configCategory + _className + str _configRoot, {
// Get classname (config case), display name, picture and DLC
private _configPath = configFile >> _configCategory >> _className;
private _configPath = ([configFile, campaignConfigFile, missionConfigFile] select _configRoot) >> _configCategory >> _className;
private _dlcName = _configPath call EFUNC(common,getAddon);
// If _pictureEntryName is empty, then this item has no picture (e.g. faces)
@ -57,7 +58,7 @@ _ctrlPanel lbSetPicture [_lbAdd, _itemPicture];
_ctrlPanel lbSetPictureRight [_lbAdd, ["", _modPicture] select GVAR(enableModIcons)];
_ctrlPanel lbSetTooltip [_lbAdd, format ["%1\n%2", _displayName, _className]];
if ((toLower _className) in GVAR(favorites)) then {
if ((toLowerANSI _className) in GVAR(favorites)) then {
_ctrlPanel lbSetColor [_lbAdd, FAVORITES_COLOR];
_ctrlPanel lbSetSelectColor [_lbAdd, FAVORITES_COLOR];
};

View File

@ -66,7 +66,8 @@ _items = _items select {
_x isKindOf ["CBA_MiscItem", _cfgWeapons] && {getNumber (_configItemInfo >> "type") in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD]} ||
{getNumber (_configItemInfo >> "type") in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} ||
{getText (_cfgWeapons >> _x >> "simulation") == "ItemMineDetector"} ||
{getNumber (_cfgMagazines >> _x >> "ACE_isUnique") == 1}
{getNumber (_cfgMagazines >> _x >> "ACE_isUnique") == 1} ||
{getNumber (_cfgMagazines >> _x >> "ACE_asItem") == 1}
};
GVAR(customRightPanelButtons) set [_position, [_items apply {_x call EFUNC(common,getConfigName)}, _picture, _tooltip, _moveOnOverwrite]];

View File

@ -72,7 +72,7 @@ private _fnc_addToTabs = {
_currentTab pushBack _sort;
_return pushBack _sortName;
} else {
TRACE_1("A sort with this ID already exists", _sortName);
TRACE_1("A sort with this ID already exists",_sortName);
};
} forEach _tabsToAddTo;
};

View File

@ -77,7 +77,7 @@ private _fnc_addToTabs = {
// Find if there is an entry with same ID
if (_currentTab findIf {_x select 5 == _statName} != -1) then {
TRACE_1("A stat with this ID already exists", _statName);
TRACE_1("A stat with this ID already exists",_statName);
} else {
_stat = +_finalArray;
_stat set [5, _statName];
@ -109,11 +109,10 @@ private _tabToChange = [];
{
_x params ["_tab", "_tabSide"];
_tabToChange = if (_tabSide == "R") then {
_tabToChange = [
GVAR(statsListLeftPanel),
GVAR(statsListRightPanel)
} else {
GVAR(statsListLeftPanel)
};
] select (_tabSide == "R");
_stats = _tabToChange select _tab;

View File

@ -46,6 +46,7 @@ private _cfgWeapons = configFile >> "CfgWeapons";
private _cfgMagazines = configFile >> "CfgMagazines";
private _cfgVehicles = configFile >> "CfgVehicles";
private _cfgGlasses = configFile >> "CfgGlasses";
private _dlcName = "";
// Exit with current items (no specific category)
if (_category == IDX_CAT_ALL) exitWith {
@ -73,6 +74,12 @@ if (_category == IDX_CAT_ALL) exitWith {
_listbox lnbSetData [[_index, 1], _x];
_listbox lnbSetPicture [[_index, 0], getText (_config >> "picture")];
_listbox lnbSetTooltip [[_index, 0], _x];
_dlcName = _config call EFUNC(common,getAddon);
if (_dlcName != "") then {
_listbox lnbSetPicture [[_index, 2], (modParams [_dlcName, ["logo"]]) param [0, ""]];
};
};
} forEach _attributeItems;
@ -130,12 +137,20 @@ private _config = _cfgClass;
_alpha = 0.5;
};
_index = _listbox lnbAddRow ["", _displayName, _symbol];
_index = _listbox lnbAddRow ["", _displayName, "", _symbol];
_listbox lnbSetData [[_index, 1], _x];
_listbox lnbSetPicture [[_index, 0], getText (_config >> _x >> "picture")];
_listbox lnbSetTooltip [[_index, 0], _x];
_listbox lnbSetColor [[_index, 1], [1, 1, 1, _alpha]];
_listbox lnbSetColor [[_index, 2], [1, 1, 1, _alpha]];
_listbox lnbSetColor [[_index, 3], [1, 1, 1, _alpha]];
// Mod icon is in column 2
_dlcName = (_config >> _x) call EFUNC(common,getAddon);
if (_dlcName != "") then {
_listbox lnbSetPicture [[_index, 2], (modParams [_dlcName, ["logo"]]) param [0, ""]];
_listbox lnbSetPictureColor [[_index, 2], [1, 1, 1, _alpha]];
};
};
} forEach (keys _categoryItems);

View File

@ -35,9 +35,10 @@ if (_addItem && {_itemIndex == -1}) exitWith {
_attributeItems pushBack _itemClassname;
// Change symbol and increase alpha
_listbox lnbSetText [[_currentRow, 2], [SYMBOL_ITEM_VIRTUAL, SYMBOL_ITEM_REMOVE] select _attributeMode];
_listbox lnbSetText [[_currentRow, 3], [SYMBOL_ITEM_VIRTUAL, SYMBOL_ITEM_REMOVE] select _attributeMode];
_listbox lnbSetColor [[_currentRow, 1], [1, 1, 1, 1]];
_listbox lnbSetColor [[_currentRow, 2], [1, 1, 1, 1]];
_listbox lnbSetPictureColor [[_currentRow, 2], [1, 1, 1, 1]]; // mod icon is in column 2
_listbox lnbSetColor [[_currentRow, 3], [1, 1, 1, 1]];
};
// Remove item if in list
@ -45,7 +46,8 @@ if (!_addItem && {_itemIndex != -1}) exitWith {
_attributeItems deleteAt _itemIndex;
// Change symbol and reduce alpha
_listbox lnbSetText [[_currentRow, 2], SYMBOL_ITEM_NONE];
_listbox lnbSetText [[_currentRow, 3], SYMBOL_ITEM_NONE];
_listbox lnbSetColor [[_currentRow, 1], [1, 1, 1, 0.5]];
_listbox lnbSetColor [[_currentRow, 2], [1, 1, 1, 0.5]];
_listbox lnbSetPictureColor [[_currentRow, 2], [1, 1, 1, 0.5]]; // mod icon is in column 2
_listbox lnbSetColor [[_currentRow, 3], [1, 1, 1, 0.5]];
};

View File

@ -0,0 +1,59 @@
#include "..\script_component.hpp"
/*
* Author: Jonpas, LinkIsGrim
* Returns base attachment for CBA scripted attachment
* Adapted from CBA_fnc_switchableAttachments
*
* Arguments:
* 0: Attachment <STRING>
*
* Return Value:
* Base attachment <STRING>
*
* Example:
* "ACE_acc_pointer_green_IR" call ace_arsenal_fnc_baseAttachment
*
* Public: Yes
*/
params [["_item", "", [""]]];
TRACE_1("looking up base attachment",_item);
private _switchableClasses = [];
private _cfgWeapons = configfile >> "CfgWeapons";
private _config = _cfgWeapons >> _item;
_item = configName _config;
// If the switch config entries are inherited, ignore
if (
(inheritsFrom (_config >> "MRT_SwitchItemNextClass") isNotEqualTo _config) ||
{inheritsFrom (_config >> "MRT_SwitchItemPrevClass") isNotEqualTo _config}
) exitWith {
_item // return
};
while {
_config = _cfgWeapons >> getText (_config >> "MRT_SwitchItemNextClass");
isClass _config && {_switchableClasses pushBackUnique configName _config != -1}
} do {};
_config = _cfgWeapons >> _item;
private _backward = [];
while {
_config = _cfgWeapons >> getText (_config >> "MRT_SwitchItemPrevClass");
isClass _config && {_backward pushBackUnique configName _config != -1}
} do {};
_switchableClasses append _backward;
_switchableClasses = _switchableClasses arrayIntersect _switchableClasses;
{
if (getNumber (_cfgWeapons >> _x >> "scope") == 2) exitWith {
TRACE_2("found class",_item,_x);
_item = _x;
};
} forEach _switchableClasses;
_item

View File

@ -0,0 +1,32 @@
#include "..\script_component.hpp"
/*
* Author: Jonpas, LinkIsGrim
* Returns base optic for CBA scripted optics (PIP and 2D)
*
* Arguments:
* 0: Optic <STRING>
*
* Return Value:
* Base optic <STRING>
*
* Example:
* "CUP_optic_Elcan_SpecterDR_black_PIP" call ace_arsenal_fnc_baseOptic
*
* Public: Yes
*/
params [["_optic", "", [""]]];
// PIP
private _baseClasses = configProperties [configFile >> "CBA_PIPItems", "getText _x == _optic"];
// Carry Handle
{
_baseClasses append (configProperties [_x, "getText _x == _optic"]);
} forEach configProperties [configFile >> "CBA_CarryHandleTypes"];
if (_baseClasses isNotEqualTo []) then {
_optic = configName (_baseClasses select 0);
};
_optic

View File

@ -19,7 +19,7 @@
params [["_weapon", "", [""]]];
// Check if item is cached
(uiNamespace getVariable QGVAR(baseWeaponNameCache)) getOrDefaultCall [toLower _weapon, {
(uiNamespace getVariable QGVAR(baseWeaponNameCache)) getOrDefaultCall [toLowerANSI _weapon, {
private _cfgWeapons = configfile >> "CfgWeapons";
private _config = _cfgWeapons >> _weapon;

View File

@ -17,7 +17,7 @@
params ["_display", "_control", "_nextPage"];
TRACE_1("control enabled", ctrlEnabled _control);
TRACE_1("control enabled",ctrlEnabled _control);
if !(ctrlEnabled _control) exitWith {};
GVAR(currentActionPage) = GVAR(currentActionPage) + ([-1, 1] select _nextPage);

View File

@ -26,28 +26,27 @@ if (GVAR(shiftState)) then {
switch (true) do {
// Beginning
case (_index == -1): {
"ace_clipboard" callExtension (format ["[%1", endl]);
"ace" callExtension ["clipboard:append", [format ["[%1", endl]]];
};
// End
case (_index == _listLength): {
"ace_clipboard" callExtension "];";
"ace" callExtension ["clipboard:append", ["];"]];
};
// Rest
default {
"ace_clipboard" callExtension ([" ", str (GVAR(defaultLoadoutsList) select _index), [",", ""] select (_index == _listLength - 1), endl] joinString "");
"ace" callExtension ["clipboard:append", [[" ", str (GVAR(defaultLoadoutsList) select _index), [",", ""] select (_index == _listLength - 1), endl] joinString ""]];
};
};
};
"ace_clipboard" callExtension "--COMPLETE--";
"ace" callExtension ["clipboard:complete", []];
[_display, LLSTRING(exportDefault)] call FUNC(message);
} else {
// Export singular loadout
private _export = str (GVAR(center) call CBA_fnc_getLoadout);
"ace_clipboard" callExtension (_export + ";");
"ace_clipboard" callExtension "--COMPLETE--";
"ace" callExtension ["clipboard:append", [_export]];
"ace" callExtension ["clipboard:complete", []];
[_display, LLSTRING(exportCurrent)] call FUNC(message);
};

View File

@ -16,7 +16,13 @@
params ["_display"];
// Can be either a singular loadout or an array of loadouts
private _extendedLoadout = call compile copyFromClipboard;
private _extendedLoadout = if (isMultiplayer) then {
("ace" callExtension ["clipboard:loadout", []]) params ["_loadout", "_code"];
if (_code != 0) exitWith {};
parseSimpleArray _loadout
} else {
call compile copyFromClipboard
};
// If error, exit
if (isNil "_extendedLoadout" || {!(_extendedLoadout isEqualType [])}) exitWith {

View File

@ -17,7 +17,7 @@
params ["_display", "_control", "_nextPage"];
TRACE_1("control enabled", ctrlEnabled _control);
TRACE_1("control enabled",ctrlEnabled _control);
if !(ctrlEnabled _control) exitWith {};
GVAR(currentStatPage) = GVAR(currentStatPage) + ([-1, 1] select _nextPage);

View File

@ -1,4 +1,5 @@
#include "..\script_component.hpp"
#include "..\defines.hpp"
/*
* Author: Brett Mayson
* Create the internal actions arrays when needed for the first time.
@ -37,6 +38,8 @@ private _actionList = [
private _configGroupEntries = "true" configClasses (configFile >> QGVAR(actions));
GVAR(updateActionsOnCargoChange) = false;
{
private _scopeEditor = getNumber (_x >> "scopeEditor");
@ -48,6 +51,10 @@ private _configGroupEntries = "true" configClasses (configFile >> QGVAR(actions)
private _rootDisplayName = getText (_x >> "displayName");
private _rootCondition = getText (_x >> "condition");
private _rootTabs = getArray (_x >> "tabs");
private _updateOnCargoChanged = getNumber (_x >> "updateOnCargoChanged");
if (_updateOnCargoChanged > 0) then {
GVAR(updateActionsOnCargoChange) = true;
};
if (_rootCondition != "") then {
_rootCondition = compile _rootCondition;

View File

@ -101,7 +101,7 @@ private _priority = 0;
(_finalArray select 4) set [1, compile (getText (_x >> "textStatement"))];
};
TRACE_3("stats array", _finalArray, _leftTabsList, _rightTabsList);
TRACE_3("stats array",_finalArray,_leftTabsList,_rightTabsList);
if (_leftTabsList isNotEqualTo []) then {
[_statsListLeftPanel, _leftTabsList, "L"] call _fnc_addToTabs;

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
#include "..\defines.hpp"
/*
* Author: Alganthe, johnb43
* Author: Alganthe, johnb43, LinkIsGrim
* Fills left panel.
*
* Arguments:
@ -17,21 +17,28 @@
params ["_display", "_control", ["_animate", true]];
private _ctrlIDC = ctrlIDC _control;
private _ctrlPanel = _display displayCtrl IDC_leftTabContent;
private _idxVirt = GVAR(idxMap) getOrDefault [_ctrlIDC, -1, true];
// Fade old control background
if (!isNil QGVAR(currentLeftPanel)) then {
private _previousCtrlBackground = _display displayCtrl (GVAR(currentLeftPanel) - 1);
_previousCtrlBackground ctrlSetFade 1;
_previousCtrlBackground ctrlCommit ([0, FADE_DELAY] select _animate);
// When switching tabs, clear searchbox
if (GVAR(currentLeftPanel) != _ctrlIDC) then {
(_display displayCtrl IDC_leftSearchbar) ctrlSetText "";
(_display displayCtrl IDC_rightSearchbar) ctrlSetText "";
};
};
// Show new control background
private _ctrlIDC = ctrlIDC _control;
private _ctrlBackground = _display displayCtrl (_ctrlIDC - 1);
_ctrlBackground ctrlSetFade 0;
_ctrlBackground ctrlCommit ([0, FADE_DELAY] select _animate);
private _ctrlPanel = _display displayCtrl IDC_leftTabContent;
// Force a "refresh" animation of the panel
if (_animate) then {
_ctrlPanel ctrlSetFade 1;
@ -41,212 +48,82 @@ if (_animate) then {
};
_ctrlPanel lbSetCurSel -1;
// Purge old data
lbClear _ctrlPanel;
// Handle icons and filling
private _selectedItem = switch (true) do {
// Primary weapons, secondary weapons, handgun weapons
case (_ctrlIDC in [IDC_buttonPrimaryWeapon, IDC_buttonHandgun, IDC_buttonSecondaryWeapon]): {
// Purge old data
lbClear _ctrlPanel;
// Add "Empty" entry
private _addEmpty = _ctrlPanel lbAdd format [" <%1>", localize "str_empty"];
_ctrlPanel lbSetValue [_addEmpty, -1];
// Add selected tab's weapons
private _index = [IDC_buttonPrimaryWeapon, IDC_buttonSecondaryWeapon, IDC_buttonHandgun] find _ctrlIDC;
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys ((GVAR(virtualItems) get IDX_VIRT_WEAPONS) get _index));
GVAR(currentItems) select _index
};
// Uniforms, vests, backpacks
case (_ctrlIDC in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack]): {
// Purge old data
lbClear _ctrlPanel;
// Add "Empty" entry
private _addEmpty = _ctrlPanel lbAdd format [" <%1>", localize "str_empty"];
_ctrlPanel lbSetValue [_addEmpty, -1];
switch (_ctrlIDC) do {
// Add uniforms
case IDC_buttonUniform: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIFORM));
GVAR(currentItems) select IDX_CURR_UNIFORM
};
// Add vests
case IDC_buttonVest: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_VEST));
GVAR(currentItems) select IDX_CURR_VEST
};
// Add backpacks
case IDC_buttonBackpack: {
{
["CfgVehicles", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_BACKPACK));
GVAR(currentItems) select IDX_CURR_BACKPACK
};
};
};
// Other
default {
// Don't reset right panel selection if left tab is binos
if (_ctrlIDC != IDC_buttonBinoculars) then {
GVAR(currentRightPanel) = nil;
};
lbClear _ctrlPanel;
// For every left tab except faces and voices, add "Empty" entry
if !(_ctrlIDC in [IDC_buttonFace, IDC_buttonVoice]) then {
private _addEmpty = _ctrlPanel lbAdd format [" <%1>", localize "str_empty"];
_ctrlPanel lbSetValue [_addEmpty, -1];
};
switch (_ctrlIDC) do {
// Headgear
case IDC_buttonHeadgear: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_HEADGEAR));
GVAR(currentItems) select IDX_CURR_HEADGEAR
};
// Facewear
case IDC_buttonGoggles: {
{
["CfgGlasses", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_GOGGLES));
GVAR(currentItems) select IDX_CURR_GOGGLES
};
// NVGs
case IDC_buttonNVG: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_NVG));
GVAR(currentItems) select IDX_CURR_NVG
};
// Binoculars
case IDC_buttonBinoculars: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_BINO));
GVAR(currentItems) select IDX_CURR_BINO
};
// Maps
case IDC_buttonMap: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_MAP));
GVAR(currentItems) select IDX_CURR_MAP
};
// Compasses
case IDC_buttonCompass: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_COMPASS));
GVAR(currentItems) select IDX_CURR_COMPASS
};
// Radios
case IDC_buttonRadio: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_RADIO));
GVAR(currentItems) select IDX_CURR_RADIO
};
// Watches
case IDC_buttonWatch: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_WATCH));
GVAR(currentItems) select IDX_CURR_WATCH
};
// GPS and UAV Terminals
case IDC_buttonGPS: {
{
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach (keys (GVAR(virtualItems) get IDX_VIRT_COMMS));
GVAR(currentItems) select IDX_CURR_COMMS
};
// Faces
case IDC_buttonFace: {
private _lbAdd = -1;
{
_y params ["_displayName", "_modPicture"];
_lbAdd = _ctrlPanel lbAdd _displayName;
_ctrlPanel lbSetData [_lbAdd, _x];
_ctrlPanel lbSetTooltip [_lbAdd, format ["%1\n%2", _displayName, _x]];
_ctrlPanel lbSetPictureRight [_lbAdd, _modPicture];
} forEach (uiNamespace getVariable QGVAR(faceCache));
GVAR(currentFace)
};
// Voices
case IDC_buttonVoice: {
{
["CfgVoice", _x, _ctrlPanel, "icon"] call FUNC(addListBoxItem);
} forEach (uiNamespace getVariable QGVAR(voiceCache));
GVAR(currentVoice)
};
// Insignia
case IDC_buttonInsignia: {
// Insignia from config
{
["CfgUnitInsignia", _x, _ctrlPanel, "texture"] call FUNC(addListBoxItem);
} forEach (uiNamespace getVariable QGVAR(insigniaCache));
private _displayName = "";
private _className = "";
private _lbAdd = -1;
// Insignia from mission file
{
_className = configName _x;
_displayName = getText (_x >> "displayName");
_lbAdd = _ctrlPanel lbAdd _displayName;
_ctrlPanel lbSetData [_lbAdd, _className];
_ctrlPanel lbSetPicture [_lbAdd, getText (_x >> "texture")];
_ctrlPanel lbSetTooltip [_lbAdd, format ["%1\n%2", _displayName, _className]];
} forEach ("(if (isNumber (_x >> 'scope')) then {getNumber (_x >> 'scope')} else {2}) == 2" configClasses (missionConfigFile >> "CfgUnitInsignia"));
GVAR(currentInsignia)
};
// Unknown
default {""};
};
};
// For every left tab except faces and voices, add "Empty" entry
if !(_ctrlIDC in [IDC_buttonFace, IDC_buttonVoice]) then {
private _addEmpty = _ctrlPanel lbAdd format [" <%1>", localize "str_empty"];
_ctrlPanel lbSetValue [_addEmpty, -1];
};
// When switching tabs, clear searchbox
if (GVAR(currentLeftPanel) != _ctrlIDC) then {
(_display displayCtrl IDC_leftSearchbar) ctrlSetText "";
(_display displayCtrl IDC_rightSearchbar) ctrlSetText "";
// Don't reset the current right panel for weapons, binos and containers
if !(_idxVirt in [IDX_VIRT_PRIMARY_WEAPONS, IDX_VIRT_SECONDARY_WEAPONS, IDX_VIRT_HANDGUN_WEAPONS, IDX_VIRT_BINO, IDX_VIRT_UNIFORM, IDX_VIRT_VEST, IDX_VIRT_BACKPACK]) then {
GVAR(currentRightPanel) = nil;
};
GVAR(currentLeftPanel) = _ctrlIDC;
// Add items to the listbox
private _selectedItem = if (_idxVirt != -1) then { // Items
private _configParent = switch (_idxVirt) do {
case IDX_VIRT_GOGGLES: {"CfgGlasses"};
case IDX_VIRT_BACKPACK: {"CfgVehicles"};
default {"CfgWeapons"};
};
private _items = if (_idxVirt < IDX_VIRT_HEADGEAR) then {
keys ((GVAR(virtualItems) get IDX_VIRT_WEAPONS) get _idxVirt)
} else {
keys (GVAR(virtualItems) get _idxVirt)
};
{
[_configParent, _x, _ctrlPanel] call FUNC(addListBoxItem);
} forEach _items;
GVAR(currentItems) select _idxVirt
} else { // Special cases
switch (_ctrlIDC) do {
// Faces
case IDC_buttonFace: {
private _lbAdd = -1; // micro-optimization
// Faces need to be added like this because their config path is
// configFile >> "CfgFaces" >> face category >> className
{
_y params ["_displayName", "_modPicture"];
_lbAdd = _ctrlPanel lbAdd _displayName;
_ctrlPanel lbSetData [_lbAdd, _x];
_ctrlPanel lbSetTooltip [_lbAdd, format ["%1\n%2", _displayName, _x]];
_ctrlPanel lbSetPictureRight [_lbAdd, ["", _modPicture] select GVAR(enableModIcons)];
} forEach GVAR(faceCache); // HashMap, not array
GVAR(currentFace)
};
// Voices
case IDC_buttonVoice: {
{
["CfgVoice", _x, _ctrlPanel, "icon"] call FUNC(addListBoxItem);
} forEach (keys GVAR(voiceCache));
GVAR(currentVoice)
};
// Insignia
case IDC_buttonInsignia: {
{
["CfgUnitInsignia", _x, _ctrlPanel, "texture", _y] call FUNC(addListBoxItem);
} forEach GVAR(insigniaCache);
GVAR(currentInsignia)
};
// Unknown
default {
WARNING_1("Unknown arsenal left panel with IDC %1, update ace_arsenal_idxMap and relevant macros if adding a new tab",_ctrlIDC);
""
};
};
};
// Trigger event
GVAR(currentLeftPanel) = _ctrlIDC;
[QGVAR(leftPanelFilled), [_display, _ctrlIDC, GVAR(currentRightPanel)]] call CBA_fnc_localEvent;
// Sort

View File

@ -1,12 +1,16 @@
#include "..\script_component.hpp"
#include "..\defines.hpp"
/*
* Author: Alganthe, johnb43
* Fill loadouts list.
* Author: Alganthe, johnb43, LinkIsGrim
* Fill loadouts list over multiple frames. LOADOUTS_PER_FRAME macro does what it says on the tin.
* Should only ever be called by display load (with optional params as default) and by itself.
* Listen to ace_arsenal_loadoutsListFilled event if you need to iterate over the loadouts list.
*
* Arguments:
* 0: Loadouts display <DISPLAY>
* 1: Tab control <CONTROL>
* 2: Current frame filling loadouts list <NUMBER> (default: 0)
* 3: Frames necessary to fill loadouts list <NUMBER> (default: -1)
*
* Return Value:
* None
@ -14,29 +18,46 @@
* Public: No
*/
params ["_display", "_control"];
// Can just be modified directly, no further setup needed
#define LOADOUTS_PER_FRAME 10
(_display displayCtrl IDC_textEditBox) ctrlSetText "";
params ["_display", "_control", ["_currentFrame", 0], ["_framesToFill", -1]];
if (isNull _display) exitWith {
TRACE_2("display closed, aborting",_currentFrame,_framesToFill);
};
private _contentPanelCtrl = _display displayCtrl IDC_contentPanel;
if (_currentFrame == 0) then {
(_display displayCtrl IDC_textEditBox) ctrlSetText "";
// Force a "refresh" animation of the panel
_contentPanelCtrl ctrlSetFade 1;
_contentPanelCtrl ctrlCommit 0;
_contentPanelCtrl ctrlSetFade 0;
_contentPanelCtrl ctrlCommit FADE_DELAY;
// Force a "refresh" animation of the panel
_contentPanelCtrl ctrlSetFade 1;
_contentPanelCtrl ctrlCommit 0;
_contentPanelCtrl ctrlSetFade 0;
_contentPanelCtrl ctrlCommit FADE_DELAY;
_contentPanelCtrl lnbSetCurSelRow -1;
lnbClear _contentPanelCtrl;
_contentPanelCtrl lnbSetCurSelRow -1;
lnbClear _contentPanelCtrl;
};
private _sharedLoadoutsVars = GVAR(sharedLoadoutsNamespace) getVariable QGVAR(sharedLoadoutsVars);
private _cfgWeapons = configFile >> "CfgWeapons";
private _cfgWeapons = configFile >> "CfgWeapons"; // Used by ADD_LOADOUTS_LIST_PICTURES macro, do not remove
private _newRow = -1;
if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
private _loadoutNameAndTab = "";
private _loadoutCachedInfo = "";
private _sharingEnabled = GVAR(allowSharedLoadouts) && {isMultiplayer};
private _loadouts = [
profileNamespace getVariable [QGVAR(saved_loadouts), []],
GVAR(defaultLoadoutsList)
] select (ctrlIDC _control == IDC_buttonDefaultLoadouts);
if (_currentFrame == 0) then {
_framesToFill = floor ((count _loadouts) / LOADOUTS_PER_FRAME);
TRACE_2("filling loadouts list",_currentFrame,_framesToFill);
_this set [3, _framesToFill];
};
// Add all loadouts to loadout list
{
@ -50,15 +71,16 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
_loadoutCachedInfo = [_loadoutData] call FUNC(verifyLoadout);
_contentPanelCtrl setVariable [_loadoutNameAndTab, _loadoutCachedInfo];
_loadoutCachedInfo params ["", "_nullItemsAmount", "_unavailableItemsAmount", "_nullItemsList", "_unavailableItemsList"];
_loadoutCachedInfo params ["", "_nullItemsList", "_unavailableItemsList", "_missingExtendedInfo"];
// Log missing / nil items to RPT (only once per arsenal session)
if (GVAR(EnableRPTLog) && {(_nullItemsAmount > 0) || {_unavailableItemsAmount > 0}}) then {
if (GVAR(EnableRPTLog) && {(_nullItemsList isNotEqualTo []) || {_unavailableItemsList isNotEqualTo [] || {_missingExtendedInfo isNotEqualTo []}}}) then {
private _printComponent = "ACE_Arsenal - Loadout:";
private _printNullItemsList = ["Missing items:", str _nullItemsList] joinString " ";
private _printUnavailableItemsList = ["Unavailable items:", str _unavailableItemsList] joinString " ";
private _printMissingExtendedInfo = ["Missing extended loadout:", str _missingExtendedInfo] joinString " ";
diag_log text (format ["%1%5 %2%5 %3%5 %4", _printComponent, "Name: " + _loadoutName, _printNullItemsList, _printUnavailableItemsList, endl]);
diag_log text (format ["%1%6 %2%6 %3%6 %4%6 %5", _printComponent, "Name: " + _loadoutName, _printNullItemsList, _printUnavailableItemsList, _printMissingExtendedInfo, endl]);
};
};
@ -69,18 +91,18 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
_contentPanelCtrl lnbSetColumnsPos [0, 0.05, 0.40, 0.50, 0.60, 0.70, 0.75, 0.80, 0.85, 0.90];
};
_loadoutCachedInfo params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount"];
_extendedLoadout params ["_loadout"];
_loadoutCachedInfo params ["_extendedLoadout", "_nullItemsList", "_unavailableItemsList"];
_extendedLoadout params ["_loadout"]; // Used by ADD_LOADOUTS_LIST_PICTURES macro, do not remove
_newRow = _contentPanelCtrl lnbAddRow ["", _loadoutName];
ADD_LOADOUTS_LIST_PICTURES
// Change color on loadout lines that have items that aren't available or don't exist
if (_nullItemsAmount > 0) then {
if (_nullItemsList isNotEqualTo []) then {
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 0, 0, 0.8]]; // Red
} else {
if (_unavailableItemsAmount > 0) then {
if (_unavailableItemsList isNotEqualTo []) then {
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 1, 1, 0.25]]; // Gray
};
};
@ -90,10 +112,16 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
_contentPanelCtrl lnbSetPicture [[_newRow, 0], QPATHTOF(data\iconPublic.paa)];
_contentPanelCtrl lnbSetValue [[_newRow, 0], 1];
};
} forEach ([profileNamespace getVariable [QGVAR(saved_loadouts), []], GVAR(defaultLoadoutsList)] select (ctrlIDC _control == IDC_buttonDefaultLoadouts));
} forEach (_loadouts select [_currentFrame * LOADOUTS_PER_FRAME, [LOADOUTS_PER_FRAME, count _loadouts] select is3DEN]);
} else {
private _allPlayerNames = allPlayers apply {name _x};
private _loadouts = _sharedLoadoutsVars apply {GVAR(sharedLoadoutsNamespace) getVariable _x};
private _loadoutVar = "";
if (_currentFrame == 0) then {
_framesToFill = floor ((count _loadouts) / LOADOUTS_PER_FRAME);
TRACE_2("filling loadouts list",_currentFrame,_framesToFill);
_this set [3, _framesToFill];
};
{
_x params ["_playerName", "_loadoutName", "_loadoutData"];
@ -107,8 +135,8 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
[QGVAR(loadoutUnshared), [_contentPanelCtrl, profileName, _loadoutName]] call CBA_fnc_remoteEvent;
} else {
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount"];
_extendedLoadout params ["_loadout"];
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsList", "_unavailableItemsList"];
_extendedLoadout params ["_loadout"]; // Used by ADD_LOADOUTS_LIST_PICTURES macro, do not remove
_contentPanelCtrl lnbSetColumnsPos [0, 0.15, 0.40, 0.50, 0.60, 0.70, 0.75, 0.80, 0.85, 0.90];
_newRow = _contentPanelCtrl lnbAddRow [_playerName, _loadoutName];
@ -118,17 +146,23 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
_contentPanelCtrl lnbSetData [[_newRow, 1], _loadoutVar];
// Change color on loadout lines that have items that aren't available or don't exist
if (_nullItemsAmount > 0) then {
if (_nullItemsList isNotEqualTo []) then {
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 0, 0, 0.8]]; // Red
} else {
if (_unavailableItemsAmount > 0) then {
if (_unavailableItemsList isNotEqualTo []) then {
_contentPanelCtrl lnbSetColor [[_newRow, 1], [1, 1, 1, 0.25]]; // Gray
};
};
};
} forEach (_sharedLoadoutsVars apply {GVAR(sharedLoadoutsNamespace) getVariable _x});
} forEach (_loadouts select [_currentFrame * LOADOUTS_PER_FRAME, [LOADOUTS_PER_FRAME, count _loadouts] select is3DEN]);
};
if (!is3DEN && _currentFrame != _framesToFill) exitWith {
_this set [2, _currentFrame + 1];
[FUNC(fillLoadoutsList), _this] call CBA_fnc_execNextFrame;
};
TRACE_3("finished",_currentFrame,_framesToFill,lnbSize _contentPanelCtrl);
[QGVAR(loadoutsListFilled), [_display, _control]] call CBA_fnc_localEvent;
// Sort loadouts alphabetically

View File

@ -53,7 +53,7 @@ if (GVAR(favoritesOnly)) then {
private _fnc_fillRightContainer = {
params ["_configCategory", "_className", ["_isUnique", false, [false]], ["_unknownOrigin", false, [false]]];
if (GVAR(favoritesOnly) && {!(_className in _currentCargo)} && {!((toLower _className) in GVAR(favorites))}) exitWith {};
if (GVAR(favoritesOnly) && {!(_className in _currentCargo)} && {!((toLowerANSI _className) in GVAR(favorites))}) exitWith {};
// If item is not in the arsenal, it must be unique
if (!_isUnique && {!(_className in GVAR(virtualItemsFlat))}) then {
@ -87,9 +87,9 @@ private _fnc_fillRightContainer = {
_ctrlPanel lnbSetText [[_lbAdd, 1], _displayName];
_ctrlPanel lnbSetData [[_lbAdd, 0], _className];
_ctrlPanel lnbSetPicture [[_lbAdd, 0], _picture];
_ctrlPanel lnbSetValue [[_lbAdd, 2], [0, 1] select _isUnique];
_ctrlPanel lnbSetValue [[_lbAdd, 2], parseNumber _isUnique];
_ctrlPanel lnbSetTooltip [[_lbAdd, 0], format ["%1\n%2", _displayName, _className]];
if ((toLower _className) in GVAR(favorites)) then {
if ((toLowerANSI _className) in GVAR(favorites)) then {
_ctrlPanel lnbSetColor [[_lbAdd, 1], FAVORITES_COLOR];
_ctrlPanel lnbSetColorRight [[_lbAdd, 1], FAVORITES_COLOR];
};

View File

@ -7,7 +7,7 @@
* Arguments:
* 0: Arsenal display <DISPLAY>
* 1: Current panel control <CONTROL>
* 2: Current panel selection <SCALAR>
* 2: Current panel selection <NUMBER>
* 3: Item config entry <CONFIG>
*
* Return Value:
@ -15,7 +15,6 @@
*
* Public: No
*/
params ["_display", "_control", "_curSel", "_itemCfg"];
GVAR(actionsInfo) = [_control, _curSel, _itemCfg];
@ -46,13 +45,12 @@ private _groups = (GVAR(actionList) select _panel) select {
};
private _show = _groups isNotEqualTo [];
private _ctrl = _display displayCtrl IDC_actionsBox;
_ctrl ctrlShow _show;
_ctrl ctrlCommit 0.15;
private _actionsBoxCtrl = _display displayCtrl IDC_actionsBox;
_actionsBoxCtrl ctrlShow _show;
_actionsBoxCtrl ctrlCommit FADE_DELAY;
if (!_show) exitWith {};
private _actionsBoxCtrl = _display displayCtrl IDC_actionsBox;
private _actionsCurrentPageCtrl = _display displayCtrl IDC_actionsCurrentPage;
private _currentPage = GVAR(currentActionPage);
@ -79,33 +77,29 @@ private _items = _group select 3 select {
};
_actionsCurrentPageCtrl ctrlSetText (_group select 1);
_actionsCurrentPageCtrl ctrlSetFade 0;
_actionsCurrentPageCtrl ctrlShow true;
_actionsCurrentPageCtrl ctrlCommit 0;
private _activeCtrls = [];
{
_x params ["", "_type", "_label", "_statement"];
private _idc = 9001 + _forEachIndex * 2;
private _actionTextCtrl = _display displayCtrl _idc;
private _actionButtonCtrl = _display displayCtrl (_idc + 1);
private _idc = IDC_actionsText1 + _type + _forEachIndex * 2;
private _actionCtrl = _display displayCtrl _idc;
switch (_type) do {
case ACTION_TYPE_BUTTON: {
_actionButtonCtrl ctrlRemoveAllEventHandlers "ButtonClick";
_actionButtonCtrl ctrlAddEventHandler ["ButtonClick", {
_actionCtrl ctrlRemoveAllEventHandlers "ButtonClick";
_actionCtrl ctrlAddEventHandler ["ButtonClick", {
if (is3DEN) exitWith {[true] call FUNC(refresh)};
[{
[true] call FUNC(refresh);
}] call CBA_fnc_execNextFrame;
}];
_actionButtonCtrl ctrlAddEventHandler ["ButtonClick", _statement];
_actionButtonCtrl ctrlSetText _label;
_actionButtonCtrl ctrlSetFade 0;
_actionButtonCtrl ctrlEnable true;
_actionButtonCtrl ctrlCommit 0;
_actionTextCtrl ctrlSetFade 1;
_actionTextCtrl ctrlCommit 0;
_actionCtrl ctrlAddEventHandler ["ButtonClick", _statement];
_actionCtrl ctrlSetText _label;
_actionCtrl ctrlEnable true;
};
case ACTION_TYPE_TEXT: {
private _text = call _statement;
@ -113,38 +107,43 @@ _actionsCurrentPageCtrl ctrlCommit 0;
if (isNil "_text") then {
_text = "";
};
if (_text isEqualType []) then {
_text = _text joinString endl;
};
_actionTextCtrl ctrlSetText _text;
_actionTextCtrl ctrlSetFade 0;
_actionTextCtrl ctrlCommit 0;
_actionButtonCtrl ctrlSetFade 1;
_actionButtonCtrl ctrlEnable false;
_actionButtonCtrl ctrlCommit 0;
};
default {
_actionTextCtrl ctrlSetFade 1;
_actionTextCtrl ctrlCommit 0;
_actionButtonCtrl ctrlSetFade 1;
_actionButtonCtrl ctrlEnable false;
_actionButtonCtrl ctrlCommit 0;
_actionCtrl ctrlSetText _text;
_actionCtrl ctrlSetPositionH (ctrlTextHeight _actionCtrl);
_actionCtrl ctrlEnable false;
};
};
if (_activeCtrls isNotEqualTo []) then {
(ctrlPosition (_activeCtrls select -1)) params ["", "_lastPosY", "", "_lastPosH"];
_actionCtrl ctrlSetPositionY (_lastPosY + _lastPosH + GRID_H);
} else {
_actionCtrl ctrlSetPositionY ((5 + _type) * GRID_H);
};
_actionCtrl ctrlShow true;
_actionCtrl ctrlCommit 0;
_activeCtrls pushBack _actionCtrl;
} forEach _items;
private _actionCount = count _items;
{
private _idc = 9001 + _x * 2;
private _actionTextCtrl = _display displayCtrl _idc;
private _actionButtonCtrl = _display displayCtrl (_idc + 1);
private _idc = ctrlIDC _x;
if (_idc < IDC_actionsText1 || _idc > IDC_actionsButton5) then {continue};
_actionTextCtrl ctrlSetFade 1;
_actionTextCtrl ctrlCommit 0;
_actionButtonCtrl ctrlSetFade 1;
_actionButtonCtrl ctrlCommit 0;
} forEach ([0, 1, 2, 3, 4] select [_actionCount, 5]);
_x ctrlShow false;
_x ctrlEnable false;
_x ctrlSetPositionY 0;
_x ctrlCommit 0;
} forEach ((allControls _actionsBoxCtrl) select {!(_x in _activeCtrls)});
private _pos = ctrlPosition _actionsBoxCtrl;
_pos set [3, ([11, (5 * _actionCount) + 6] select (_actionCount > 0)) * GRID_H];
_actionsBoxCtrl ctrlSetPosition _pos;
(ctrlPosition (_activeCtrls select -1)) params ["", "_lastPosY", "", "_lastPosH"];
private _actionsBoxHeight = _lastPosY + _lastPosH + GRID_H;
_actionsBoxCtrl ctrlSetPositionH _actionsBoxHeight;
_actionsBoxCtrl ctrlCommit 0;
private _background = _display displayCtrl IDC_actionsBackground1;
_background ctrlSetPositionH _actionsBoxHeight;
_background ctrlCommit 0;

View File

@ -18,7 +18,7 @@
(_this select 1) params ["", "_exitCode"];
[QGVAR(displayClosed), []] call CBA_fnc_localEvent;
removeMissionEventHandler ["draw3D", GVAR(camPosUpdateHandle)];
removeMissionEventHandler ["Draw3D", GVAR(camPosUpdateHandle)];
if (is3DEN) then {
private _centerOriginParent = objectParent GVAR(centerOrigin);
@ -78,10 +78,10 @@ if (!isNull curatorCamera) then {
// Make face and voice selection JIP compatible; 3DEN doesn't need this though
if (isMultiplayer && {!is3DEN}) then {
private _id = [QGVAR(broadcastFace), [GVAR(center), GVAR(currentFace)], QGVAR(centerFace_) + netId GVAR(center)] call CBA_fnc_globalEventJIP;
private _id = [QGVAR(broadcastFace), [GVAR(center), GVAR(currentFace)], QGVAR(centerFace_) + hashValue GVAR(center)] call CBA_fnc_globalEventJIP;
[_id, GVAR(center)] call CBA_fnc_removeGlobalEventJIP;
_id = [QGVAR(broadcastVoice), [GVAR(center), GVAR(currentVoice)], QGVAR(centerVoice_) + netId GVAR(center)] call CBA_fnc_globalEventJIP;
_id = [QGVAR(broadcastVoice), [GVAR(center), GVAR(currentVoice)], QGVAR(centerVoice_) + hashValue GVAR(center)] call CBA_fnc_globalEventJIP;
[_id, GVAR(center)] call CBA_fnc_removeGlobalEventJIP;
};

View File

@ -68,7 +68,7 @@ if (isNil QGVAR(virtualItems)) then {
GVAR(virtualItemsFlatAll) = +GVAR(virtualItemsFlat);
GVAR(currentFace) = face GVAR(center);
GVAR(currentVoice) = speaker GVAR(center);
GVAR(currentVoice) = (speaker GVAR(center)) call EFUNC(common,getConfigName);
GVAR(currentInsignia) = GVAR(center) call BIS_fnc_getUnitInsignia;
GVAR(currentAction) = "Stand";
@ -138,14 +138,6 @@ _actionsBoxCtrl ctrlSetPosition [
];
_actionsBoxCtrl ctrlCommit 0;
// Disable import in MP
if (isMultiplayer) then {
private _importButtonCtrl = _display displayCtrl IDC_buttonImport;
_importButtonCtrl ctrlEnable false;
_importButtonCtrl ctrlSetFade 0.6;
_importButtonCtrl ctrlCommit 0;
};
//--------------- Camera prep
cutText ["", "PLAIN"];
showCommandingMenu "";
@ -278,4 +270,4 @@ showCinemaBorder false;
//--------------- Reset camera pos
[nil, [controlNull, 0, 0]] call FUNC(handleMouse);
GVAR(camPosUpdateHandle) = addMissionEventHandler ["draw3D", {call FUNC(updateCamPos)}];
GVAR(camPosUpdateHandle) = addMissionEventHandler ["Draw3D", {call FUNC(updateCamPos)}];

View File

@ -94,8 +94,8 @@ if (!isNull _loadoutsDisplay) then {
};
} params ["_className"];
"ace_clipboard" callExtension (_className + ";");
"ace_clipboard" callExtension "--COMPLETE--";
"ace" callExtension ["clipboard:append", [_className]];
"ace" callExtension ["clipboard:complete", []];
[_display, LLSTRING(exportedClassnameText)] call FUNC(message);
} else {
@ -147,7 +147,7 @@ if (!isNull _loadoutsDisplay) then {
// Right panel lnb + and - buttons
case (_keyPressed in [DIK_LEFT, DIK_RIGHT]): {
if (GVAR(rightTabLnBFocus)) then {
[_display, [1, 0] select (_keyPressed == DIK_LEFT)] call FUNC(buttonCargo);
[_display, parseNumber (_keyPressed != DIK_LEFT)] call FUNC(buttonCargo);
};
};
};

View File

@ -27,9 +27,9 @@ private _favorited = false;
// Favorites/blacklist will always be lowercase to handle configCase changes
private _item = "";
if (_isLnB) then {
_item = toLower (_control lnbData [_curSel, 0]);
_item = toLowerANSI (_control lnbData [_curSel, 0]);
} else {
_item = toLower (_control lbData _curSel);
_item = toLowerANSI (_control lbData _curSel);
};
if (_item in GVAR(favorites)) then {

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