From 15bed8e12209db2f1d5e38d6325d9cd20f32258c Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Thu, 15 Sep 2016 02:25:32 +0200 Subject: [PATCH 01/26] Added advanced fatigue documentation --- docs/wiki/feature/advanced-fatigue.md | 99 +++++++++++++++++++ .../framework/advanced-fatigue-framework.md | 28 ++++++ 2 files changed, 127 insertions(+) create mode 100644 docs/wiki/feature/advanced-fatigue.md create mode 100644 docs/wiki/framework/advanced-fatigue-framework.md diff --git a/docs/wiki/feature/advanced-fatigue.md b/docs/wiki/feature/advanced-fatigue.md new file mode 100644 index 0000000000..197fed9e03 --- /dev/null +++ b/docs/wiki/feature/advanced-fatigue.md @@ -0,0 +1,99 @@ +--- +layout: wiki +title: Advanced Fatigue +description: Human fatigue simulation based on scientific formulas. +group: feature +category: realism +parent: wiki +mod: ace +version: + major: 3 + minor: 7 + patch: 0 +--- + +## 1. Overview + +Advanced Fatigue is a human fatigue simulation based on the information and formulas provided by Bohemia Interactive Simulations, which are [publicly available online](https://manuals.bisimulations.com/vbs3/3-0/downloads/VBS_AdvFatigueSys.pdf) and apparently used in VBS3. However, just to make this clear again, none of VBS3 code was taken over, this is an independant implementation. + + +### 1.1 Basics + +Advanced Fatigue is based on scientific formulas that try to predict human performance, which enables ACE to provide a fairly accurate fatigue simulation with understandable in-game results in terms of performance. This means that any movement will be taken into account and may have an impact on both your short term and your long term fatigue: running around all mission will influence how long and how far you can run later, but if you're more conservative with your energy, you might benefit from that when you actually need more power. + + +### 1.2 Fatigue Influences + +Your stamina will be drained more or less depending on various factors, some of them more severe than others. Here's a short list of all currently implemented fatigue influences: + +- **Character stance:** Moving upright, crouched or prone. +- **Weapon holding:** Lowering your weapon, raising it or moving with the gun high ready +- **Movement speed:** Running, jogging or walking +- **Gear weight** +- **Terrain steepness:** Walking on slopes, up or down hill +- **Injuries:** Pain and blood volume +- **Carrying:** Both units and objects +- **Environment temperature** + + +### 1.3 Effects of High Fatigue + +Depending on how much your character is fatigued you will experience various visual, audible and physical symptoms: + +- Breathing sounds (with different intensity and frequency) +- Black flashing border when hitting the bodies limits +- Not being able to sprint +- Not being able to jog +- Slowed down movement whilst swimming or diving +- Weapon sway (majorly reduced when crouched or prone) + + +### 1.4 Stamina Bar + +ACE provides a stamina bar similar to the one in vanilla Arma 3. You can enable and disable it through your ACE options menu. If you want to move the stamina bar, simply move the vanilla one in the GUI game options, the Advanced Fatigue one will move to the same location (this requires a restart though). + +The Advanced Fatigue stamina bar has a few changes compared to the vanilla one to improve both immersion and user feedback, inspired by Dslyecxi's custom stamina bar. It will initially have a very low opacity which rises with the loss of stamina. Additionally it will first turn from white to orange and bright red afterwards. + + + +## 2. Simulation Details + +Since Advanced Fatigue is based on real life biological systems we will explain some of them in more detail here. + + +### 2.1 How Human Stamina Works + +Human stamina is based on the availabilty of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readibly available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. + + +### 2.2 ATP Pathways + +Each pathway has different properties: They store different amounts of ATP and can provide and regenerate different amounts of ATP per second. You can compare this to having three differently sized barrels filled with water, each having a differently sized faucet and opening at the top to refill it with water. + + +#### 2.2.1 Anaerobic Pathway + +This pathway is essentially responsible for your short term stamina. It has a very small capacity of ATP available (2300 mmol), which is can provide a lot of ATP very fast (13.3 mmol/s), but also replenished very quickly (56.7 mmol/s). This pathway is pretty much what limits how long you can jog or sprint in one go, which is why we use it as an indicator for the stamina bar. + + +#### 2.2.2 Aerobic Pathways + +The two aerobic pathways store way bigger amounts of ATP than the anaerobic one, the first one stores over 1700 times as much ATP (4000 mol) and the second one still over 36 times as much ATP (84 mol) as the aerobic pathway. However, they can also provide (13.3 and 16.7 mmol) and replenish (6.6 and 5.83 mmol) a lot less ATP then the aerobic pathway. + +This means that while these will last a lot longer, they do not have such a large impact on your short term performance. Instead, they will drain slowly during the day, which means that at the end you will have less power available than at the beginning, depending on how much you exhausted yourself. However, at that point they will start influencing your short term performance. + + +### 2.3 ATP Consumption + +At any time the body consumes a certain amount of ATP - even when not moving. Since the aerobic pathways have so much ATP available, they will be drained first, and when you're not moving they can usually cover all the ATP you need. They can actually mostly regenerate the same amount of ATP that is used as is consumed, which means standing still has no effect on your performance. Once you exert yourself a little more, by jogging for example, more ATP is needed, and the anaerobic pathway comes into play. It will fill in the rest of the ATP needed. + + +### 2.4 ATP Pathway Fatigue + +Another factor that comes into play here is pathway fatigue - the pathways themselves can fatigue too! That means, the more ATP the pathways have to provide, the slower they will will be able to, limiting how much ATP can overall be provided by each pathway. If we take into account that the aerobic pathways have provide their ATP first for any consumption, that means that the anaerobic pathway will have to provide more ATP if the aerobic ones are fatigued. This is how the long term fatigue effect is created. + + + +## 3. Dependencies + +{% include dependencies_list.md component="ace_advanced_fatigue" %} diff --git a/docs/wiki/framework/advanced-fatigue-framework.md b/docs/wiki/framework/advanced-fatigue-framework.md new file mode 100644 index 0000000000..f99d780c78 --- /dev/null +++ b/docs/wiki/framework/advanced-fatigue-framework.md @@ -0,0 +1,28 @@ +--- +layout: wiki +title: Advanced Fatigue Framework +description: Explains the effects of various Advanced Fatigue mission settings. +group: framework +parent: wiki +mod: ace +version: + major: 3 + minor: 7 + patch: 0 +--- + +## 1. Global Settings + +ACE provides four settings to tweak Advanced Fatigue. Adjust these factors depending on how hard you want your experience to be. + +- **Performance factor:** This influences the overall performance of players, malnourished or super soldiers, everything is possible. +- **Recovery factor:** Do you like looking at the landscape or think breaks are boring? Whatever the case, this influences the lenght of your stamina breaks. +- **Load factor:** If you believe a Javelin is the perfect companion for your .50 BMG sniper rifle you probably should tweak this setting. +- **Terrain factor**: Not everyone is used to mountainous terrain. Tweak this until you feel more at home. + +Note that while there currently is no restriction on the value of these settings, it's generally recommended to keep them between 0 and 2. + + +## 2. Unit Specific Settings + +When double clicking a unit you can find a performance factor slider under the ACE options. This unit specific factor will override the global setting, but is only applied to that unit, unless you select multiple and change the slider for all of them at once of course. From a93aad10a0816fac2447197a6854d3029c2a53cf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 14 Sep 2016 20:00:18 -0500 Subject: [PATCH 02/26] Fix speeling --- docs/wiki/feature/advanced-fatigue.md | 4 ++-- docs/wiki/framework/advanced-fatigue-framework.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/wiki/feature/advanced-fatigue.md b/docs/wiki/feature/advanced-fatigue.md index 197fed9e03..f82bd9dd83 100644 --- a/docs/wiki/feature/advanced-fatigue.md +++ b/docs/wiki/feature/advanced-fatigue.md @@ -14,7 +14,7 @@ version: ## 1. Overview -Advanced Fatigue is a human fatigue simulation based on the information and formulas provided by Bohemia Interactive Simulations, which are [publicly available online](https://manuals.bisimulations.com/vbs3/3-0/downloads/VBS_AdvFatigueSys.pdf) and apparently used in VBS3. However, just to make this clear again, none of VBS3 code was taken over, this is an independant implementation. +Advanced Fatigue is a human fatigue simulation based on the information and formulas provided by Bohemia Interactive Simulations, which are [publicly available online](https://manuals.bisimulations.com/vbs3/3-0/downloads/VBS_AdvFatigueSys.pdf) and apparently used in VBS3. However, just to make this clear again, none of VBS3 code was taken over, this is an independent implementation. ### 1.1 Basics @@ -63,7 +63,7 @@ Since Advanced Fatigue is based on real life biological systems we will explain ### 2.1 How Human Stamina Works -Human stamina is based on the availabilty of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readibly available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. +Human stamina is based on the availability of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readibly available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. ### 2.2 ATP Pathways diff --git a/docs/wiki/framework/advanced-fatigue-framework.md b/docs/wiki/framework/advanced-fatigue-framework.md index f99d780c78..7ef836b7f2 100644 --- a/docs/wiki/framework/advanced-fatigue-framework.md +++ b/docs/wiki/framework/advanced-fatigue-framework.md @@ -16,7 +16,7 @@ version: ACE provides four settings to tweak Advanced Fatigue. Adjust these factors depending on how hard you want your experience to be. - **Performance factor:** This influences the overall performance of players, malnourished or super soldiers, everything is possible. -- **Recovery factor:** Do you like looking at the landscape or think breaks are boring? Whatever the case, this influences the lenght of your stamina breaks. +- **Recovery factor:** Do you like looking at the landscape or think breaks are boring? Whatever the case, this influences the length of your stamina breaks. - **Load factor:** If you believe a Javelin is the perfect companion for your .50 BMG sniper rifle you probably should tweak this setting. - **Terrain factor**: Not everyone is used to mountainous terrain. Tweak this until you feel more at home. From 200d620d117a356e2930401bb81b7b4f4376acad Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 14 Sep 2016 22:18:42 -0500 Subject: [PATCH 03/26] spellfix2 --- docs/wiki/feature/advanced-fatigue.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/wiki/feature/advanced-fatigue.md b/docs/wiki/feature/advanced-fatigue.md index f82bd9dd83..1f7cdf8c82 100644 --- a/docs/wiki/feature/advanced-fatigue.md +++ b/docs/wiki/feature/advanced-fatigue.md @@ -61,9 +61,9 @@ The Advanced Fatigue stamina bar has a few changes compared to the vanilla one t Since Advanced Fatigue is based on real life biological systems we will explain some of them in more detail here. -### 2.1 How Human Stamina Works +### 2.1 How Human Stamina Works -Human stamina is based on the availability of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readibly available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. +Human stamina is based on the availability of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readability available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. ### 2.2 ATP Pathways From 207944a3a2ecd479650a45e5856ac02851ff428d Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Thu, 15 Sep 2016 12:51:18 +0200 Subject: [PATCH 04/26] Fix pabst --- docs/wiki/feature/advanced-fatigue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/feature/advanced-fatigue.md b/docs/wiki/feature/advanced-fatigue.md index 1f7cdf8c82..423f45de6e 100644 --- a/docs/wiki/feature/advanced-fatigue.md +++ b/docs/wiki/feature/advanced-fatigue.md @@ -63,7 +63,7 @@ Since Advanced Fatigue is based on real life biological systems we will explain ### 2.1 How Human Stamina Works -Human stamina is based on the availability of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readability available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. +Human stamina is based on the availability of adenosine triphosphate (ATP), which is a molecule used by the body to transfer power. Small amounts of ATP are already stored readily available within muscle cells and larger amounts are generated by several pathways, which then transfer the ATP through blood to the muscles. There are quite a few pathways which generate and store ATP, so instead of simulating all of them, we merge them into 3 generic pathways. ### 2.2 ATP Pathways From e59727d322c6e2d1467c80e05d378ee2e319ba1f Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 16 Sep 2016 03:34:54 +0200 Subject: [PATCH 05/26] Remove dependencies list prefix --- docs/wiki/feature/advanced-fatigue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/feature/advanced-fatigue.md b/docs/wiki/feature/advanced-fatigue.md index 423f45de6e..7ef8b6b03f 100644 --- a/docs/wiki/feature/advanced-fatigue.md +++ b/docs/wiki/feature/advanced-fatigue.md @@ -96,4 +96,4 @@ Another factor that comes into play here is pathway fatigue - the pathways thems ## 3. Dependencies -{% include dependencies_list.md component="ace_advanced_fatigue" %} +{% include dependencies_list.md component="advanced_fatigue" %} From ed91aec84b8b551ae2f3f9cb15335ffe9fa6413f Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 19 Sep 2016 20:37:43 +0200 Subject: [PATCH 06/26] Fixed usage of aerobic instead of anaerobic --- docs/wiki/feature/advanced-fatigue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/feature/advanced-fatigue.md b/docs/wiki/feature/advanced-fatigue.md index 7ef8b6b03f..acf7df8276 100644 --- a/docs/wiki/feature/advanced-fatigue.md +++ b/docs/wiki/feature/advanced-fatigue.md @@ -78,7 +78,7 @@ This pathway is essentially responsible for your short term stamina. It has a ve #### 2.2.2 Aerobic Pathways -The two aerobic pathways store way bigger amounts of ATP than the anaerobic one, the first one stores over 1700 times as much ATP (4000 mol) and the second one still over 36 times as much ATP (84 mol) as the aerobic pathway. However, they can also provide (13.3 and 16.7 mmol) and replenish (6.6 and 5.83 mmol) a lot less ATP then the aerobic pathway. +The two aerobic pathways store way bigger amounts of ATP than the anaerobic one, the first one stores over 1700 times as much ATP (4000 mol) and the second one still over 36 times as much ATP (84 mol) as the anaerobic pathway. However, they can also provide (13.3 and 16.7 mmol) and replenish (6.6 and 5.83 mmol) a lot less ATP then the anaerobic pathway. This means that while these will last a lot longer, they do not have such a large impact on your short term performance. Instead, they will drain slowly during the day, which means that at the end you will have less power available than at the beginning, depending on how much you exhausted yourself. However, at that point they will start influencing your short term performance. From 93139c86f721043a7e61b58ba31546d3d581b882 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 19 Sep 2016 21:26:46 +0200 Subject: [PATCH 07/26] Added hint to grenades pages for advanced throwing --- docs/wiki/feature/grenades.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/wiki/feature/grenades.md b/docs/wiki/feature/grenades.md index d043d67d0b..aba68bc121 100644 --- a/docs/wiki/feature/grenades.md +++ b/docs/wiki/feature/grenades.md @@ -12,6 +12,11 @@ version: patch: 0 --- +
+
Note:
+

Check out the Advanced Throwing page for the new alternative system introduced in version 3.7.0.

+
+ ## 1. Overview ### 1.1 Throw modes From d088fc5212d278a17fbd39a72db37d3921db7729 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 19 Sep 2016 23:11:07 +0200 Subject: [PATCH 08/26] Revert "add LGTM configuration" (#4426) --- .lgtm | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .lgtm diff --git a/.lgtm b/.lgtm deleted file mode 100644 index 6bcc0cd7b8..0000000000 --- a/.lgtm +++ /dev/null @@ -1,3 +0,0 @@ -approvals = 1 -pattern = "(?i)LGTM|(?i):\\+1:|(?i):shipit:" -self_approval_off = true From c7e16210c3f5aa82888d10b56f85501d37d3e85b Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 19 Sep 2016 23:17:10 +0200 Subject: [PATCH 09/26] fix pboprefix path --- addons/medical_blood/$PBOPREFIX$ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical_blood/$PBOPREFIX$ b/addons/medical_blood/$PBOPREFIX$ index 69894f9fd4..352725c3fd 100644 --- a/addons/medical_blood/$PBOPREFIX$ +++ b/addons/medical_blood/$PBOPREFIX$ @@ -1 +1 @@ -x\ace\addons\medical_blood +z\ace\addons\medical_blood From ac2a71e3762d1fea869b1c774d53b97c0993223d Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 20 Sep 2016 14:28:11 +0200 Subject: [PATCH 10/26] Fix grenade docs base url --- docs/wiki/feature/grenades.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/feature/grenades.md b/docs/wiki/feature/grenades.md index aba68bc121..348425d3d9 100644 --- a/docs/wiki/feature/grenades.md +++ b/docs/wiki/feature/grenades.md @@ -14,7 +14,7 @@ version:
Note:
-

Check out the Advanced Throwing page for the new alternative system introduced in version 3.7.0.

+

Check out the Advanced Throwing page for the new alternative system introduced in version 3.7.0.

## 1. Overview From b1f6973772976231b297548d4f6910e15ff717d6 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 20 Sep 2016 16:01:54 +0200 Subject: [PATCH 11/26] Filter player medics (#4444) --- addons/medical_ai/functions/fnc_canRequestMedic.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical_ai/functions/fnc_canRequestMedic.sqf b/addons/medical_ai/functions/fnc_canRequestMedic.sqf index a73b7a7822..75a4a0fb32 100644 --- a/addons/medical_ai/functions/fnc_canRequestMedic.sqf +++ b/addons/medical_ai/functions/fnc_canRequestMedic.sqf @@ -19,7 +19,7 @@ if ([_this] call EFUNC(medical,isMedic) || {vehicle _this != _this}) exitWith {false}; { - if ([_x] call EFUNC(medical,isMedic)) exitWith { + if ([_x] call EFUNC(medical,isMedic) && {!([_x] call EFUNC(common,isPlayer))}) exitWith { _this setVariable [QGVAR(assignedMedic), _x]; true }; From 58bd6467b2fef25b629ad58ace974305889a82ba Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 20 Sep 2016 12:18:44 -0500 Subject: [PATCH 12/26] Debugging tool to watch variables on main display (#4408) * Debugging tool to watch variables on main display * Fix error when called from scheduled code * Remove demo code --- addons/common/HintConfig.hpp | 16 ++ addons/common/XEH_PREP.hpp | 1 + addons/common/functions/fnc_watchVariable.sqf | 149 ++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 addons/common/functions/fnc_watchVariable.sqf diff --git a/addons/common/HintConfig.hpp b/addons/common/HintConfig.hpp index 04c6995318..e3912e56f3 100644 --- a/addons/common/HintConfig.hpp +++ b/addons/common/HintConfig.hpp @@ -2,8 +2,24 @@ class RscStructuredText; class RscMapControl; +class ctrlStructuredText; + +class GVAR(debug_structuredText): ctrlStructuredText { + sizeEx = "16 * pixelH"; + size = "16 * pixelH"; +}; class RscTitles { + class GVAR(watchVariableUI) { + idd = -1; + onLoad = QUOTE(with uiNameSpace do {GVAR(watchVariableUI) = _this select 0};); + movingEnable = 0; + duration = 999999; + fadeIn = "false"; + fadeOut = "false"; + class controls {}; + }; + class ACE_RscHint { idd = -1; onLoad = "uiNamespace setVariable ['ACE_ctrlHint', (_this select 0) displayCtrl 1];"; diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index d8b22a8198..30ca38fe73 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -172,6 +172,7 @@ PREP(unloadPersonLocal); PREP(unmuteUnit); PREP(useItem); PREP(useMagazine); +PREP(watchVariable); PREP(waitAndExecute); PREP(waitUntilAndExecute); PREP(waveHeightAt); diff --git a/addons/common/functions/fnc_watchVariable.sqf b/addons/common/functions/fnc_watchVariable.sqf new file mode 100644 index 0000000000..931450bd22 --- /dev/null +++ b/addons/common/functions/fnc_watchVariable.sqf @@ -0,0 +1,149 @@ +/* + * Author: PabstMirror + * Shows multiple watched variables on the main display (for easy debugging) + * + * Arguments: + * 0: Title (var name) + * 1: Code to generate result (passed nothing, can return any) + * 2: Array containing modifiers + * For Numbers: + * 0: Show Delta change (default: true) + * 1: Slider Min Value (default: 0) + * 1: Slider Max Value (default: 0) + * For Anything else: + * 0: Number of structured text lines (default: 1) + * + * Return Value: + * Nothing + * + * Example: + * ["CBA_missionTime"] call ace_common_fnc_watchVariable; // Uses title as code + * ["diag_frameNo", {diag_frameNo}, [false]] call ace_common_fnc_watchVariable; // Won't show delta + * ["blood", {player getVariable "ace_medical_bloodVolume"}, [true, 0, 100]] call ace_common_fnc_watchVariable; // Shows slider + * ["multiLine text", {"Line 1
Line 2"}, [2]] call ace_common_fnc_watchVariable; + * ["player names", {allPlayers apply {name _x}}, [5]] call ace_common_fnc_watchVariable; // handles any data types + * + * Public: Yes + */ +// #define DEBUG_MODE_FULL +#include "script_component.hpp" + +#define TEXT_HEIGHT 16 + +params [["_name", "", [""]],["_code", {}, [{}]], ["_mods", [], [[]]]]; +TRACE_3("params",_name,_code,_mods); + +if (!hasInterface) exitWith {}; + +if (canSuspend) exitWith { // Ensure atomic - (fix `disableSerialization` error when called from init.sqf) + [FUNC(watchVariable), _this] call CBA_fnc_directCall; +}; + +if (isNull (findDisplay 46)) exitWith { + TRACE_1("waiting for main display to be ready",isNull (findDisplay 46)); + [{!isNull (findDisplay 46)}, {_this call FUNC(watchVariable);}, _this] call CBA_fnc_waitUntilAndExecute; +}; + +if (_code isEqualTo {}) then {TRACE_1("using title as code",_title); _code = compile _name;}; + +private _trackedDisplay = uiNamespace getVariable [QGVAR(watchVariableUI), displayNull]; +if (isNull _trackedDisplay) then { + TRACE_1("creating display and adding PFEH",time); + QGVAR(watchVariableUI) cutRsc [QGVAR(watchVariableUI), "PLAIN", 1, true]; + + [{ + private _trackedDisplay = uiNamespace getVariable [QGVAR(watchVariableUI), displayNull]; + private _varArray = _trackedDisplay getVariable [QGVAR(vars), []]; + TRACE_1("updating watched variables",count _varArray); + { + _x params ["_ctrlGroup", "_code", "_showDelta", "_lastNumber", "_barMin", "_barMax"]; + private _result = [] call _code; + if (isNil "_result") then { + (_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["NIL"]; + } else { + if (_result isEqualType 0) then { + (_ctrlGroup controlsGroupCtrl 2) progressSetPosition linearConversion [_barMin, _barMax, _result, 0, 1, true]; + if (_showDelta) then { + private _delta = _result - _lastNumber; + _x set [3, _result]; + if (_delta < 0) then { + (_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1 (%2)", _result, _delta]; + } else { + (_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1 (%2)", _result, _delta]; + }; + } else { + (_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1", _result]; + }; + } else { + (_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1", _result]; + }; + }; + } forEach _varArray; + }, 1, []] call CBA_fnc_addPerFrameHandler; +}; + +// Add curent call: + +private _trackedDisplay = uiNamespace getVariable [QGVAR(watchVariableUI), displayNull]; +private _varArray = _trackedDisplay getVariable [QGVAR(vars), []]; +private _freePositionY = _trackedDisplay getVariable [QGVAR(freePosition), safeZoneY + 100 * pixelH]; + +private _height = 2 * TEXT_HEIGHT * pixelH; + +private _ctrlGroup = _trackedDisplay ctrlCreate ["ctrlControlsGroupNoScrollbars", -1]; + +private _ctrlBackground = (_trackedDisplay ctrlCreate ["ctrlStaticBackground", -1, _ctrlGroup]); +_ctrlBackground ctrlSetBackgroundColor [0.2, 0.2, 0.2, 0.5]; + +private _ctrlTitle = (_trackedDisplay ctrlCreate ["ctrlStatic", -1, _ctrlGroup]); +_ctrlTitle ctrlSetFontHeight (TEXT_HEIGHT * pixelH); +_ctrlTitle ctrlSetFont "EtelkaMonospacePro"; +_ctrlTitle ctrlSetPosition [0, 0, 300 * pixelW, TEXT_HEIGHT * pixelW]; +_ctrlTitle ctrlCommit 0; +_ctrlTitle ctrlSetText _name; + +if ((_mods param [0, true, [0, false]]) isEqualType false) then { + _mods params [["_showDelta", true, [false]], ["_barMin", 0, [0]], ["_barMax", 0, [0]]]; + TRACE_3("adding number",_barMin,_barMax,_showDelta); + + if (_barMin != _barMax) then { + TRACE_2("creating bar",_barMin,_barMax); + private _ctrlSlider = _trackedDisplay ctrlCreate ["RscProgress", 2, _ctrlGroup]; + _ctrlSlider ctrlSetPosition [0 * pixelW, TEXT_HEIGHT * pixelH, 300 * pixelW, TEXT_HEIGHT * pixelH]; + _ctrlSlider ctrlSetFade 0.25; + _ctrlSlider ctrlSetTextColor [0, 0, 0.2, 1]; + _ctrlSlider ctrlCommit 0; + }; + + private _ctrlResultText = _trackedDisplay ctrlCreate [QGVAR(debug_structuredText), 1, _ctrlGroup]; + _ctrlResultText ctrlSetPosition [25 * pixelW, TEXT_HEIGHT * pixelH, 275 * pixelW, TEXT_HEIGHT * pixelH]; + _ctrlResultText ctrlCommit 0; + + _varArray pushBack [_ctrlGroup, _code, _showDelta, 0, _barMin, _barMax]; + +} else { + _mods params [["_lines", 1, [1]]]; + _lines = _lines max 1; + TRACE_1("adding text",_lines); + + private _ctrlResultText = _trackedDisplay ctrlCreate [QGVAR(debug_structuredText), 1, _ctrlGroup]; + _ctrlResultText ctrlSetPosition [25 * pixelW, TEXT_HEIGHT * pixelH, 275 * pixelW, _lines * TEXT_HEIGHT * pixelH]; + _ctrlResultText ctrlCommit 0; + + _height = (1 + _lines) * TEXT_HEIGHT * pixelH; + + _varArray pushBack [_ctrlGroup, _code, false, -1, 0, 0]; +}; + +_trackedDisplay setVariable [QGVAR(vars), _varArray]; + +_ctrlGroup ctrlSetPosition [safeZoneX, _freePositionY, 300 * pixelW, _height]; +_ctrlGroup ctrlCommit 0; +_ctrlBackground ctrlSetPosition [0, 0, 300 * pixelW, _height]; +_ctrlBackground ctrlCommit 0; + + +_freePositionY = _freePositionY + _height + 5 * pixelH; +_trackedDisplay setVariable [QGVAR(freePosition), _freePositionY]; + +nil From 03d83b633f5559eb91ad42ee4e55ae4ab4100d7d Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 21 Sep 2016 09:07:45 +0200 Subject: [PATCH 13/26] more immersive dogtag interaction (#4446) * more immersive dogtag interaction * fix indent and macro usage * move dogtag interaction point to neck --- addons/dogtags/CfgVehicles.hpp | 41 +++++++++---------- addons/dogtags/XEH_postInit.sqf | 28 +++++++------ .../dogtags/functions/fnc_addDogtagItem.sqf | 6 ++- addons/dogtags/functions/fnc_checkDogtag.sqf | 21 +++++++++- addons/dogtags/functions/fnc_takeDogtag.sqf | 21 +++++++++- addons/dogtags/script_component.hpp | 9 ++++ 6 files changed, 89 insertions(+), 37 deletions(-) diff --git a/addons/dogtags/CfgVehicles.hpp b/addons/dogtags/CfgVehicles.hpp index 9757ac1c53..f2e0fc6ad7 100644 --- a/addons/dogtags/CfgVehicles.hpp +++ b/addons/dogtags/CfgVehicles.hpp @@ -2,30 +2,29 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_Actions { - class ACE_MainActions { - class ACE_Dogtag { - displayName = CSTRING(itemName); - condition = ""; - statement = ""; + class ACE_Dogtag { + displayName = CSTRING(itemName); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag)); + statement = ""; + showDisabled = 0; + distance = 1.75; + icon = QPATHTOF(data\dogtag_icon_ca.paa); + selection = "neck"; + class ACE_CheckDogtag { + displayName = CSTRING(checkDogtag); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckDogtag)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkDogtag)); + showDisabled = 0; + priority = 3; + icon = QPATHTOF(data\dogtag_icon_ca.paa); + }; + class ACE_TakeDogtag { + displayName = CSTRING(takeDogtag); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(takeDogtag)); showDisabled = 0; priority = 3; icon = QPATHTOF(data\dogtag_icon_ca.paa); - class ACE_CheckDogtag { - displayName = CSTRING(checkDogtag); - condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckDogtag)); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkDogtag)); - showDisabled = 0; - priority = 3; - icon = QPATHTOF(data\dogtag_icon_ca.paa); - }; - class ACE_TakeDogtag { - displayName = CSTRING(takeDogtag); - condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag)); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(takeDogtag)); - showDisabled = 0; - priority = 3; - icon = QPATHTOF(data\dogtag_icon_ca.paa); - }; }; }; }; diff --git a/addons/dogtags/XEH_postInit.sqf b/addons/dogtags/XEH_postInit.sqf index 729ae7eb04..b0352c39ef 100644 --- a/addons/dogtags/XEH_postInit.sqf +++ b/addons/dogtags/XEH_postInit.sqf @@ -10,25 +10,27 @@ // - Adding actions via config would create a dependency if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { if (hasInterface) then { - private _checkTagAction = [ - "ACE_CheckDogtag", - format ["%1: %2", localize LSTRING(itemName), localize LSTRING(checkDogtag)], - QPATHTOF(data\dogtag_icon_ca.paa), - {[_player,_target] call FUNC(checkDogtag)}, - {!isNil {_target getVariable QGVAR(dogtagData)}} - ] call ace_interact_menu_fnc_createAction; + "ACE_CheckDogtag", + format ["%1: %2", localize LSTRING(itemName), localize LSTRING(checkDogtag)], + QPATHTOF(data\dogtag_icon_ca.paa), + {[_player,_target] call FUNC(checkDogtag)}, + {!isNil {_target getVariable QGVAR(dogtagData)}} + ] call EFUNC(interact_menu,createAction); + ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction] call EFUNC(interact_menu,addActionToClass); private _takeTagAction = [ - "ACE_TakeDogtag", - format ["%1: %2", localize LSTRING(itemName), localize LSTRING(takeDogtag)], - QPATHTOF(data\dogtag_icon_ca.paa), - {[_player,_target] call FUNC(takeDogtag)}, - {(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}} - ] call ace_interact_menu_fnc_createAction; + "ACE_TakeDogtag", + format ["%1: %2", localize LSTRING(itemName), localize LSTRING(takeDogtag)], + QPATHTOF(data\dogtag_icon_ca.paa), + {[_player,_target] call FUNC(takeDogtag)}, + {(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}} + ] call EFUNC(interact_menu,createAction); + ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction] call EFUNC(interact_menu,addActionToClass); }; + if (isServer) then { ["ace_placedInBodyBag", { params ["_target", "_bodyBag"]; diff --git a/addons/dogtags/functions/fnc_addDogtagItem.sqf b/addons/dogtags/functions/fnc_addDogtagItem.sqf index e734b6f38f..09d07f1d13 100644 --- a/addons/dogtags/functions/fnc_addDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_addDogtagItem.sqf @@ -24,4 +24,8 @@ if (_item == "") exitWith {}; _dogtagData params ["_nickName"]; private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickName]; -[_displayText] call EFUNC(common,displayText); + +// display message +[{ + [_this, 2.5] call EFUNC(common,displayTextStructured); +}, _displayText, DOGTAG_SHOW_DELAY] call CBA_fnc_waitAndExecute; diff --git a/addons/dogtags/functions/fnc_checkDogtag.sqf b/addons/dogtags/functions/fnc_checkDogtag.sqf index 7b703b995c..7c032259c1 100644 --- a/addons/dogtags/functions/fnc_checkDogtag.sqf +++ b/addons/dogtags/functions/fnc_checkDogtag.sqf @@ -18,7 +18,26 @@ params ["_player", "_target"]; +// animation +_player call EFUNC(common,goKneeling); + +// sound +private _position = AGLToASL (_target modelToWorld (_target selectionPosition "neck")); + +playSound3D [ + selectRandom RUSTLING_SOUNDS, + objNull, + false, + _position, + 1, + 1, + 50 +]; + +// display dogtag private _doubleTags = (_target getVariable [QGVAR(dogtagTaken), objNull]) != _target; private _dogTagData = [_target] call FUNC(getDogTagData); -[QGVAR(showDogtag), [_dogTagData, _doubleTags]] call CBA_fnc_localEvent; +[{ + [QGVAR(showDogtag), _this] call CBA_fnc_localEvent; +}, [_dogTagData, _doubleTags], DOGTAG_SHOW_DELAY] call CBA_fnc_waitAndExecute; diff --git a/addons/dogtags/functions/fnc_takeDogtag.sqf b/addons/dogtags/functions/fnc_takeDogtag.sqf index 0b779c029b..5073ff73f7 100644 --- a/addons/dogtags/functions/fnc_takeDogtag.sqf +++ b/addons/dogtags/functions/fnc_takeDogtag.sqf @@ -19,8 +19,27 @@ params ["_player", "_target"]; +// animation +_player call EFUNC(common,goKneeling); + +// sound +private _position = AGLToASL (_target modelToWorld (_target selectionPosition "neck")); + +playSound3D [ + selectRandom RUSTLING_SOUNDS, + objNull, + false, + _position, + 1, + 1, + 50 +]; + +// display message if ((_target getVariable [QGVAR(dogtagTaken), objNull]) == _target) then { - [localize LSTRING(dogtagAlreadyTaken)] call EFUNC(common,displayText); + [{ + [_this, 2.5] call EFUNC(common,displayTextStructured); + }, localize LSTRING(dogtagAlreadyTaken), DOGTAG_SHOW_DELAY] call CBA_fnc_waitAndExecute; } else { _target setVariable [QGVAR(dogtagTaken), _target, true]; [QGVAR(getDogtagItem), [_player, _target]] call CBA_fnc_serverEvent; diff --git a/addons/dogtags/script_component.hpp b/addons/dogtags/script_component.hpp index c5912f2d2c..d57471d367 100644 --- a/addons/dogtags/script_component.hpp +++ b/addons/dogtags/script_component.hpp @@ -16,3 +16,12 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define DOGTAG_SHOW_DELAY 1 + +#define RUSTLING_SOUNDS [\ + "a3\sounds_f\characters\ingame\AinvPknlMstpSlayWpstDnon_medic.wss",\ + "a3\sounds_f\characters\ingame\AinvPknlMstpSlayWrflDnon_medic.wss",\ + "a3\sounds_f\characters\ingame\AinvPpneMstpSlayWpstDnon_medic.wss",\ + "a3\sounds_f\characters\ingame\AinvPpneMstpSlayWrflDnon_medic.wss"\ +] From 26ae575d4a811eee0ce1ad09071a082befa81415 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 22 Sep 2016 23:55:52 +0200 Subject: [PATCH 14/26] fix broken ace menu in main menu (#4451) --- addons/optionsmenu/CfgEventHandlers.hpp | 3 --- addons/optionsmenu/gui/pauseMenu.hpp | 8 -------- 2 files changed, 11 deletions(-) diff --git a/addons/optionsmenu/CfgEventHandlers.hpp b/addons/optionsmenu/CfgEventHandlers.hpp index d6451e638d..dc5816df05 100644 --- a/addons/optionsmenu/CfgEventHandlers.hpp +++ b/addons/optionsmenu/CfgEventHandlers.hpp @@ -20,8 +20,5 @@ class Extended_PostInit_EventHandlers { class Extended_DisplayLoad_EventHandlers { class RscDisplayMain { GVAR(loadMainMenuBox) = QUOTE(_this call COMPILE_FILE(init_loadMainMenuBox)); - - //Hide the button if there is no world (-world=empty) - GVAR(hideButtonEmptyWorld) = "((_this select 0) displayCtrl 80085) ctrlShow (missionName != '');"; }; }; diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index 75177fa3b6..79aed168de 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -102,14 +102,6 @@ class RscDisplayMovieInterrupt: RscStandardDisplay { }; class RscDisplayMain: RscStandardDisplay { class controls { - class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase { - action = "if (missionName != '') then {createDialog 'ACE_settingsMenu';};"; - x = "safezoneX"; - y = "safezoneY"; - idc = 80085; - }; - - class ACE_news_apex: RscControlsGroupNoHScrollbars { idc = 80090; x = "safezoneX + safezoneW - 10 * (pixelW * pixelGrid * 2) - (4 * pixelH)"; From 4abf969abfbe17e2c12f35c57a4863d311845974 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 23 Sep 2016 12:48:04 -0500 Subject: [PATCH 15/26] Update for newest JR / 1.64 UBC (#4208) * Update flashsuppressor JR configs for pistols * Update for newest JR / 1.64 UBC --- addons/ai/CfgWeapons.hpp | 5 +- addons/ballistics/CfgWeapons.hpp | 7 +- addons/flashsuppressors/CfgWeapons.hpp | 161 +++---------------------- addons/realisticweights/CfgWeapons.hpp | 7 +- addons/smallarms/CfgWeapons.hpp | 7 +- 5 files changed, 32 insertions(+), 155 deletions(-) diff --git a/addons/ai/CfgWeapons.hpp b/addons/ai/CfgWeapons.hpp index be3245cce3..03dfe2d6a0 100644 --- a/addons/ai/CfgWeapons.hpp +++ b/addons/ai/CfgWeapons.hpp @@ -22,6 +22,7 @@ class CfgWeapons { }; class Rifle_Base_F: Rifle {}; + class Rifle_Short_Base_F: Rifle_Base_F {}; class Rifle_Long_Base_F: Rifle_Base_F {}; // MX @@ -470,7 +471,7 @@ class CfgWeapons { }; // PD2000 - class pdw2000_base_F: Rifle_Base_F { + class pdw2000_base_F: Rifle_Short_Base_F { aiDispersionCoefY = 18.0; aiDispersionCoefX = 12.0; @@ -484,7 +485,7 @@ class CfgWeapons { }; // Vector - class SMG_01_Base: Rifle_Base_F { + class SMG_01_Base: Rifle_Short_Base_F { aiDispersionCoefY = 18.0; aiDispersionCoefX = 12.0; diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 0344e618bb..2446aeb3b3 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -9,7 +9,8 @@ class CfgWeapons { class MMG_01_base_F; class MMG_02_base_F; class Rifle_Base_F; - class Rifle_Long_Base_F; + class Rifle_Short_Base_F: Rifle_Base_F {}; + class Rifle_Long_Base_F: Rifle_Base_F {}; class MuzzleSlot; /* Long Rifles */ @@ -189,8 +190,8 @@ class CfgWeapons { dispersion = 0.0008727; // radians. Equal to 3 MOA. }; }; - class pdw2000_base_F: Rifle_Base_F {}; - class SMG_01_Base: Rifle_Base_F {}; + class pdw2000_base_F: Rifle_Short_Base_F {}; + class SMG_01_Base: Rifle_Short_Base_F {}; class SMG_02_base_F: Rifle_Base_F {}; /* Pistols */ diff --git a/addons/flashsuppressors/CfgWeapons.hpp b/addons/flashsuppressors/CfgWeapons.hpp index e807dc2ae9..bf5aee16f1 100644 --- a/addons/flashsuppressors/CfgWeapons.hpp +++ b/addons/flashsuppressors/CfgWeapons.hpp @@ -9,6 +9,12 @@ class asdg_MuzzleSlot_762: asdg_MuzzleSlot { // for 7.62x51 universal mount supp ACE_muzzle_mzls_B = 1; }; }; +class asdg_MuzzleSlot_65: asdg_MuzzleSlot_762 { // for 6.5 weapons, mostly to deal with BIS vanilla compatibility + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; +}; class asdg_MuzzleSlot_93x64: asdg_MuzzleSlot { // for 9.3x64 universal mount suppressors class compatibleItems { ACE_muzzle_mzls_93mmg = 1; @@ -19,6 +25,11 @@ class asdg_MuzzleSlot_9MM_SMG: asdg_MuzzleSlot { // for 9x19mm universal mount S ACE_muzzle_mzls_smg_02 = 1; }; }; +class asdg_MuzzleSlot_9MM: asdg_MuzzleSlot { // for 9x19mm universal mount pistol suppressors + class compatibleItems { + ACE_muzzle_mzls_smg_02 = 1; + }; +}; class asdg_MuzzleSlot_556: asdg_MuzzleSlot { // for 5.56x45 universal mount suppressors class compatibleItems { ACE_muzzle_mzls_L = 1; @@ -29,12 +40,16 @@ class asdg_MuzzleSlot_45ACP_SMG: asdg_MuzzleSlot { // for .45ACP universal mount ACE_muzzle_mzls_smg_01 = 1; }; }; +class asdg_MuzzleSlot_45ACP: asdg_MuzzleSlot { // for .45ACP universal mount pistol suppressors + class compatibleItems { + ACE_muzzle_mzls_smg_01 = 1; + }; +}; class asdg_MuzzleSlot_762MG: asdg_MuzzleSlot { // for 7.62, 6.5 and 5.56 universal mount MG suppressors class compatibleItems { ACE_muzzle_mzls_B = 1; }; }; - class MuzzleSlot; class CfgWeapons { @@ -44,100 +59,6 @@ class CfgWeapons { class WeaponSlotsInfo; }; - /* MX */ - class arifle_MX_Base_F: Rifle_Base_F { - class WeaponSlotsInfo; - }; - - class arifle_MXC_F: arifle_MX_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - class arifle_MX_F: arifle_MX_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - class arifle_MX_GL_F: arifle_MX_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - class arifle_MX_SW_F: arifle_MX_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762MG { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - class arifle_MXM_F: arifle_MX_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - - - /* Katiba */ - - class arifle_Katiba_Base_F: Rifle_Base_F { - class WeaponSlotsInfo; - }; - class arifle_Katiba_F: arifle_Katiba_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - class arifle_Katiba_C_F: arifle_Katiba_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - class arifle_Katiba_GL_F: arifle_Katiba_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: asdg_MuzzleSlot_762 { - class compatibleItems: compatibleItems { - ACE_muzzle_mzls_H = 1; - ACE_muzzle_mzls_B = 0; - }; - }; - }; - }; - - /* Other */ class LMG_Mk200_F: Rifle_Long_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { @@ -150,56 +71,6 @@ class CfgWeapons { }; }; - /* Pistols */ - - class Pistol; - class Pistol_Base_F: Pistol { - class WeaponSlotsInfo; - }; - - class hgun_P07_F: Pistol_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; - compatibleItems[] += {"ACE_muzzle_mzls_smg_02"}; - }; - }; - }; - - class hgun_Rook40_F: Pistol_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; - compatibleItems[] += {"ACE_muzzle_mzls_smg_02"}; - }; - }; - }; - - class hgun_ACPC2_F: Pistol_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; - }; - }; - }; - - class hgun_Pistol_heavy_01_F: Pistol_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; - }; - }; - }; - - /*class hgun_Pistol_heavy_02_F: Pistol_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot { - linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; - compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; - }; - }; - };*/ - /* Flashsuppressors */ diff --git a/addons/realisticweights/CfgWeapons.hpp b/addons/realisticweights/CfgWeapons.hpp index 5c60f8d464..d84b13ab72 100644 --- a/addons/realisticweights/CfgWeapons.hpp +++ b/addons/realisticweights/CfgWeapons.hpp @@ -3,6 +3,9 @@ class CfgWeapons { class Rifle_Long_Base_F: Rifle_Base_F { class WeaponSlotsInfo; }; + class Rifle_Short_Base_F: Rifle_Base_F { + class WeaponSlotsInfo; + }; class Launcher; class Launcher_Base_F: Launcher { class WeaponSlotsInfo; @@ -176,7 +179,7 @@ class CfgWeapons { // - SMGs --------------------------------------------------------------------- // - CPW ------------------------------------------------------------------ - class pdw2000_base_F: Rifle_Base_F { + class pdw2000_base_F: Rifle_Short_Base_F { class WeaponSlotsInfo; }; class hgun_PDW2000_F: pdw2000_base_F { @@ -186,7 +189,7 @@ class CfgWeapons { }; // - KRISS Vector --------------------------------------------------------- - class SMG_01_Base: Rifle_Base_F { + class SMG_01_Base: Rifle_Short_Base_F { class WeaponSlotsInfo; }; class SMG_01_F: SMG_01_Base { diff --git a/addons/smallarms/CfgWeapons.hpp b/addons/smallarms/CfgWeapons.hpp index 1cb7979d5b..d998ceb1da 100644 --- a/addons/smallarms/CfgWeapons.hpp +++ b/addons/smallarms/CfgWeapons.hpp @@ -4,7 +4,8 @@ class Mode_FullAuto; class CfgWeapons { class Rifle_Base_F; - class Rifle_Long_Base_F; + class Rifle_Short_Base_F: Rifle_Base_F {}; + class Rifle_Long_Base_F: Rifle_Base_F {}; /////////////////////////////////////////////////////////////////////////////// //////////// SMALL ARMS WEAPONS /////////////////////////////////////////////// @@ -91,7 +92,7 @@ class CfgWeapons { // SMG Vermin //////////////////////////////////////////////////// - class SMG_01_Base: Rifle_Base_F { + class SMG_01_Base: Rifle_Short_Base_F { // http://kriss-usa.com/pdf/operatormanual/ // 1200 rpm class Single: Mode_SemiAuto { @@ -131,7 +132,7 @@ class CfgWeapons { // SMG PDW2000 /////////////////////////////////////////////////// - class pdw2000_base_F: Rifle_Base_F { + class pdw2000_base_F: Rifle_Short_Base_F { modes[] = {"Single", "FullAuto"}; // No burst on this thing class Single: Mode_SemiAuto { From b7dfdc6c8446cd243d01631315509e14b11a9298 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 23 Sep 2016 12:48:15 -0500 Subject: [PATCH 16/26] End path drawing when passing through Geom/Fire (#4385) * End path drawing when passing through Geom/Fire * Add Advanced Throwing colored circles documentation --- .../advanced_throwing/functions/fnc_drawArc.sqf | 12 ++++++++---- docs/wiki/feature/advanced-throwing.md | 17 +++++++++++++++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/addons/advanced_throwing/functions/fnc_drawArc.sqf b/addons/advanced_throwing/functions/fnc_drawArc.sqf index 53398f7b2f..0935b75ab5 100644 --- a/addons/advanced_throwing/functions/fnc_drawArc.sqf +++ b/addons/advanced_throwing/functions/fnc_drawArc.sqf @@ -47,11 +47,15 @@ for "_i" from 0.05 to 1.45 step 0.1 do { if (_newTrajASL distance (getPosASLVisual ACE_player) <= 20) then { if ((ASLToATL _newTrajASL) select 2 <= 0) then { - _cross = 1 + _cross = 1; // 1: Distance Limit (Green) } else { // Even vanilla throwables go through glass, only "GEOM" LOD will stop it but that will also stop it when there is glass in a window - if (lineIntersects [_prevTrajASL, _newTrajASL]) then { - _cross = 2; + if (lineIntersects [_prevTrajASL, _newTrajASL]) then { // Checks the "VIEW" LOD + _cross = 2; // 2: View LOD Block (Red) + } else { + if (!((lineIntersectsSurfaces [_prevTrajASL, _newTrajASL, _activeThrowable, ACE_player, true, 1, "GEOM", "FIRE"]) isEqualTo [])) then { + _cross = 3; // 3: GEOM/FIRE LOD Block (Yellow) - pass a3 bulding glass, but blocked on some CUP glass + }; }; }; @@ -60,7 +64,7 @@ for "_i" from 0.05 to 1.45 step 0.1 do { private _movePerc = linearConversion [3, 0, vectorMagnitude (velocity ACE_player), 0, 1, true]; _alpha = _alpha * _movePerc; - private _col = [ [1, 1, 1, _alpha], [0, 1, 0, _alpha], [1, 0, 0, _alpha] ] select _cross; + private _col = [ [1, 1, 1, _alpha], [0, 1, 0, _alpha], [1, 0, 0, _alpha], [1, 1, 0, _alpha] ] select _cross; if (_cross != 2 && {lineIntersects [eyePos ACE_player, _newTrajASL]}) then { _col set [3, 0.1] diff --git a/docs/wiki/feature/advanced-throwing.md b/docs/wiki/feature/advanced-throwing.md index 7c8dbc06b9..23464be9fa 100644 --- a/docs/wiki/feature/advanced-throwing.md +++ b/docs/wiki/feature/advanced-throwing.md @@ -27,11 +27,24 @@ After cooking a grenade any mode can be used to throw it further or it can simpl Grenade will be thrown where you are currently looking at, free-look (including TrackIR) is fully supported. However, the further to the side and back you are looking, the lower the throw power will be. -### 1.2 Rethrowing +### 1.2 Indicators + +When enabled, an arc of colored filled circles will indicate the path grenade will fly through. + +Color | Meaning +----- | -------- +White | Flight path +Green | Collision with ground surface +Red | Collision with object +Yellow | Possible collision + +Possible collisions are collisions that might happen, but there is also a chance that the grenade will not collide with that object. It is impossible to predict in many cases due to different object configurations. + +### 1.3 Rethrowing Advanced Throwing allows you to pick up grenades that have already been thrown. You have to be very close to it to effectively pick it up. Useful for rethrowing smoke grenades or repositioning chemlights. Frag grenades can also be thrown back, for example out of the house, however doing so is extremely risky. -### 1.3 Settings +### 1.4 Settings Various settings can be set according to your likeness. Next to global toggle to disable Advanced Throwing there are settings to hide the throw arc indicating approximate throw distance and the arc it will fly through and hide mouse controls. Additionally for server administrators and mission makers, picking up grenades can be entirely disabled, as well as a setting to enable picking up attached items such as chemlights attached to vehicles or other player's shoulder. From f23e5d33fc1b823b503cf6af52a12f19c3746013 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 23 Sep 2016 12:48:25 -0500 Subject: [PATCH 17/26] Fix throwing from map screen - global XEH (#4449) * Fix throwing from map screen - global XEH * Fix Capitalization --- addons/advanced_throwing/CfgEventHandlers.hpp | 2 +- .../{XEH_postInitClient.sqf => XEH_postInit.sqf} | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) rename addons/advanced_throwing/{XEH_postInitClient.sqf => XEH_postInit.sqf} (95%) diff --git a/addons/advanced_throwing/CfgEventHandlers.hpp b/addons/advanced_throwing/CfgEventHandlers.hpp index 9426fa861e..0d3301d6e0 100644 --- a/addons/advanced_throwing/CfgEventHandlers.hpp +++ b/addons/advanced_throwing/CfgEventHandlers.hpp @@ -12,6 +12,6 @@ class Extended_PreInit_EventHandlers { class Extended_PostInit_EventHandlers { class ADDON { - clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient)); + init = QUOTE(call COMPILE_FILE(XEH_postInit)); }; }; diff --git a/addons/advanced_throwing/XEH_postInitClient.sqf b/addons/advanced_throwing/XEH_postInit.sqf similarity index 95% rename from addons/advanced_throwing/XEH_postInitClient.sqf rename to addons/advanced_throwing/XEH_postInit.sqf index f188becbb4..4cb4f320e2 100644 --- a/addons/advanced_throwing/XEH_postInitClient.sqf +++ b/addons/advanced_throwing/XEH_postInit.sqf @@ -1,5 +1,8 @@ #include "script_component.hpp" +// Fired XEH +[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler; + // Exit on HC if (!hasInterface) exitWith {}; @@ -63,6 +66,13 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace; [_this select 1, "Player changed"] call FUNC(exitThrowMode); }] call CBA_fnc_addPlayerEventhandler; +["visibleMap", { + if (visibleMap && {ACE_player getVariable [QGVAR(inHand), false]}) then { + [ACE_player, "Opened Map"] call FUNC(exitThrowMode); + }; +}] call CBA_fnc_addPlayerEventhandler; + + ["ace_interactMenuOpened", { // Exit if advanced throwing is disabled (pick up only supports advanced throwing) if (!GVAR(enabled)) exitWith {}; @@ -80,9 +90,6 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace; }] call CBA_fnc_addEventHandler; -// Fired XEH -[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler; - // Set last thrown time on Vanilla Throwing and Advanced Throwing ["ace_firedPlayer", { if (_weapon == "Throw") then { From 33ab8c18ff853c4249c8a39a0429d561357b35a3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 23 Sep 2016 20:21:24 +0200 Subject: [PATCH 18/26] Add version note to yellow Advanced Throwing circle documentation --- docs/wiki/feature/advanced-throwing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/feature/advanced-throwing.md b/docs/wiki/feature/advanced-throwing.md index 23464be9fa..e440ab9641 100644 --- a/docs/wiki/feature/advanced-throwing.md +++ b/docs/wiki/feature/advanced-throwing.md @@ -36,7 +36,7 @@ Color | Meaning White | Flight path Green | Collision with ground surface Red | Collision with object -Yellow | Possible collision +Yellow | Possible collision (_added in ACE3 v3.8.0_) Possible collisions are collisions that might happen, but there is also a chance that the grenade will not collide with that object. It is impossible to predict in many cases due to different object configurations. From a7c75a3bf6615fa840049c827e0b2f08a260e002 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 23 Sep 2016 16:38:24 -0500 Subject: [PATCH 19/26] Handle RHS impact grenades (RGN/RGO) (#4447) --- addons/advanced_throwing/functions/fnc_prime.sqf | 6 ++++++ optionals/compat_rhs_afrf3/CfgAmmo.hpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/addons/advanced_throwing/functions/fnc_prime.sqf b/addons/advanced_throwing/functions/fnc_prime.sqf index 5068cf3ab8..727ace4e23 100644 --- a/addons/advanced_throwing/functions/fnc_prime.sqf +++ b/addons/advanced_throwing/functions/fnc_prime.sqf @@ -31,6 +31,12 @@ private _muzzle = _unit getVariable [QGVAR(activeMuzzle), ""]; // Set muzzle ammo to 0 to block vanilla throwing (can only be 0 or 1), removeItem above resets it _unit setAmmo [_muzzle, 0]; +// Handle weird scripted grenades (RHS) which could cause unexpected behaviour +private _nonInheritedCfg = configProperties [configFile >> "CfgAmmo" >> _throwableType, 'configName _x == QGVAR(replaceWith)', false]; +if ((count _nonInheritedCfg) == 1) then { + _throwableType = getText (_nonInheritedCfg select 0); +}; + // Create actual throwable globally private _activeThrowableOld = _unit getVariable [QGVAR(activeThrowable), objNull]; private _activeThrowable = createVehicle [_throwableType, _activeThrowableOld, [], 0, "CAN_COLLIDE"]; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 0ab559f96c..6f335be3a8 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -163,6 +163,8 @@ class CfgAmmo { ace_frag_force = 1; }; class rhs_ammo_rgn: rhs_ammo_rgn_base { + // RGN is scripted grenade that deletes itself, which will break advanced throwing, replace with it's base + ace_advanced_throwing_replaceWith = "rhs_ammo_rgn_base"; ace_frag_enabled = 0; ace_frag_skip = 1; ace_frag_force = 0; From 0b3d38a72f6cccb9880acb03cc446b725f51ba5d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 23 Sep 2016 16:40:52 -0500 Subject: [PATCH 20/26] Use waitAndExecute for fatigue loop (#4453) * Use waitAndExecute for fatigue loop Close #4379 - Will use CBA_missionTime so it repsects pause and time accl - Possible performance improvment over using a PFEH * Rename main loop function --- addons/advanced_fatigue/XEH_PREP.hpp | 2 +- addons/advanced_fatigue/XEH_postInit.sqf | 4 ++-- .../functions/{fnc_pfhMain.sqf => fnc_mainLoop.sqf} | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) rename addons/advanced_fatigue/functions/{fnc_pfhMain.sqf => fnc_mainLoop.sqf} (91%) diff --git a/addons/advanced_fatigue/XEH_PREP.hpp b/addons/advanced_fatigue/XEH_PREP.hpp index 1ec7705695..c6250516f5 100644 --- a/addons/advanced_fatigue/XEH_PREP.hpp +++ b/addons/advanced_fatigue/XEH_PREP.hpp @@ -5,6 +5,6 @@ PREP(getMetabolicCosts); PREP(handleEffects); PREP(handlePlayerChanged); PREP(handleStaminaBar); +PREP(mainLoop); PREP(moduleSettings); -PREP(pfhMain); PREP(removeDutyFactor); diff --git a/addons/advanced_fatigue/XEH_postInit.sqf b/addons/advanced_fatigue/XEH_postInit.sqf index ba733b33e1..d566e3b042 100644 --- a/addons/advanced_fatigue/XEH_postInit.sqf +++ b/addons/advanced_fatigue/XEH_postInit.sqf @@ -37,8 +37,8 @@ if (!hasInterface) exitWith {}; }] call FUNC(addDutyFactor); }; - // - Add main PFH ------------------------------------------------------------- - [FUNC(pfhMain), 1, []] call CBA_fnc_addPerFrameHandler; + // - Add main loop at 1 second interval ------------------------------------------------------------- + [FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute; }] call CBA_fnc_addEventHandler; ["ace_settingChanged", { diff --git a/addons/advanced_fatigue/functions/fnc_pfhMain.sqf b/addons/advanced_fatigue/functions/fnc_mainLoop.sqf similarity index 91% rename from addons/advanced_fatigue/functions/fnc_pfhMain.sqf rename to addons/advanced_fatigue/functions/fnc_mainLoop.sqf index 9e7ad381d6..6430643cac 100644 --- a/addons/advanced_fatigue/functions/fnc_pfhMain.sqf +++ b/addons/advanced_fatigue/functions/fnc_mainLoop.sqf @@ -1,6 +1,6 @@ /* * Author: BaerMitUmlaut - * Main perFrameHandler that updates fatigue values. + * Main looping function that updates fatigue values. * * Arguments: * None @@ -9,7 +9,9 @@ * None */ #include "script_component.hpp" -if (!alive ACE_player) exitWith {}; // Dead people don't breath, Will also handle null (Map intros) +if (!alive ACE_player) exitWith { // Dead people don't breath, Will also handle null (Map intros) + [FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute; +}; private _currentWork = REE; private _currentSpeed = (vectorMagnitude (velocity ACE_player)) min 6; @@ -61,3 +63,5 @@ private _perceivedFatigue = 1 - (_anReservePercentage min _aeReservePercentage); if (GVAR(enableStaminaBar)) then { [GVAR(anReserve) / AN_MAXRESERVE] call FUNC(handleStaminaBar); }; + +[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute; From c1ead851cb58a2f7266427402c4550c5524f66f7 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 24 Sep 2016 21:46:03 +0200 Subject: [PATCH 21/26] Add 3den attribute to disable bft (#4452) * add 3den object attribte to disable BFT on the object * delay setVariable public on group * fix tooltip --- addons/common/CfgEden.hpp | 10 ++++++++++ addons/map/Cfg3DEN.hpp | 21 +++++++++++++++++++++ addons/map/config.cpp | 1 + addons/map/stringtable.xml | 10 +++++++++- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 addons/map/Cfg3DEN.hpp diff --git a/addons/common/CfgEden.hpp b/addons/common/CfgEden.hpp index 1b833b0342..a58896b6fc 100644 --- a/addons/common/CfgEden.hpp +++ b/addons/common/CfgEden.hpp @@ -8,4 +8,14 @@ class Cfg3DEN { }; }; }; + + class Group { + class AttributeCategories { + class ace_attributes { + displayName = CSTRING(Options); + collapsed = 1; + class Attributes {}; + }; + }; + }; }; diff --git a/addons/map/Cfg3DEN.hpp b/addons/map/Cfg3DEN.hpp new file mode 100644 index 0000000000..bf230829f4 --- /dev/null +++ b/addons/map/Cfg3DEN.hpp @@ -0,0 +1,21 @@ + +class Cfg3DEN { + class Group { + class AttributeCategories { + class ace_attributes { + class Attributes { + class GVAR(hideBlueForceMarker) { + property = QGVAR(hideBlueForceMarker); + control = "Checkbox"; + displayName = CSTRING(disableBFT); + tooltip = CSTRING(disableBFT_description); + // groups are kaputt. have to delay setVariable public for it to work. + expression = QUOTE(if (_value) then {[ARR_2({(_this select 0) setVariable [ARR_3('%s',_this select 1,true)];},[ARR_2(_this,_value)])] call CBA_fnc_execNextFrame};); + typeName = "BOOL"; + defaultValue = "(false)"; // fix pbo project preprocessing bug + }; + }; + }; + }; + }; +}; diff --git a/addons/map/config.cpp b/addons/map/config.cpp index b619d96d10..aab52c3536 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -26,6 +26,7 @@ class RscButtonMenu; class RscEdit; #include "ACE_Settings.hpp" +#include "Cfg3DEN.hpp" #include "CfgEventHandlers.hpp" #include "CfgMarkers.hpp" #include "CfgVehicles.hpp" diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 364f595637..47c1025456 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -374,5 +374,13 @@ Cambiar el canal de marcadores inicial al comenzar la misión Change le canal de communication par défaut au début de la mission. + + Disable BFT + BFT deaktivieren + + + Always disable Blue Force Tracking for this group. + Blue Force Tracking für diese Gruppe immer deaktivieren. + - \ No newline at end of file + From bc520c7fe79af61c0cd6720d09d0edc010f18074 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 24 Sep 2016 22:08:56 +0200 Subject: [PATCH 22/26] add dmg materials to spare tracks and wheel (#4450) * add dmg materials to spare tracks and wheel * attempt to fix damage rvmats by making FIRE GEO components convex * get materials to work --- addons/repair/CfgVehicles.hpp | 56 +++++++++- addons/repair/data/ace_track.p3d | Bin 108931 -> 112186 bytes addons/repair/data/ace_wheel.p3d | Bin 261222 -> 271537 bytes addons/repair/data/material_dummy.p3d | Bin 0 -> 1447 bytes addons/repair/data/model.cfg | 44 ++++++++ addons/repair/data/trailObjects.rvmat | 100 ------------------ addons/repair/data/trailObjects_steel.rvmat | 91 ++++++++++++++++ .../data/trailObjects_steel_damage.rvmat | 91 ++++++++++++++++ .../data/trailObjects_steel_destruct.rvmat | 91 ++++++++++++++++ addons/repair/data/trailObjects_tyre.rvmat | 91 ++++++++++++++++ .../data/trailObjects_tyre_damage.rvmat | 91 ++++++++++++++++ 11 files changed, 553 insertions(+), 102 deletions(-) create mode 100644 addons/repair/data/material_dummy.p3d create mode 100644 addons/repair/data/model.cfg delete mode 100644 addons/repair/data/trailObjects.rvmat create mode 100644 addons/repair/data/trailObjects_steel.rvmat create mode 100644 addons/repair/data/trailObjects_steel_damage.rvmat create mode 100644 addons/repair/data/trailObjects_steel_destruct.rvmat create mode 100644 addons/repair/data/trailObjects_tyre.rvmat create mode 100644 addons/repair/data/trailObjects_tyre_damage.rvmat diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 15627dc893..e073c3d2ff 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -314,8 +314,6 @@ class CfgVehicles { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {}; }; - icon = "iconObject_circle"; - mapSize = 0.7; accuracy = 0.2; vehicleClass = "ACE_Logistics_Items"; destrType = "DesturctNo"; // scripted delayed destruction @@ -328,6 +326,25 @@ class CfgVehicles { scope = 2; model = QPATHTOF(data\ace_track.p3d); displayName = CSTRING(SpareTrack); + icon = "iconObject_2x1"; + mapSize = 0.5; + + // damage handling + armor = 0.6; + armorStructural = 1; + minTotalDamageThreshold = 0.01; + explosionShielding = 1; + replaceDamagedLimit = 0.9; + selectionDamage = "mat_track"; + + class Damage { + tex[] = {}; + mat[] = { + QPATHTO_R(data\trailObjects_steel.rvmat), + QPATHTO_R(data\trailObjects_steel_damage.rvmat), + QPATHTO_R(data\trailObjects_steel_destruct.rvmat) + }; + }; }; class ACE_Wheel: ACE_RepairItem_Base { @@ -338,6 +355,41 @@ class CfgVehicles { model = QPATHTOF(data\ace_wheel.p3d); displayName = CSTRING(SpareWheel); picture = QPATHTOF(ui\tire_ca.paa); + icon = "iconObject_circle"; + mapSize = 0.7; + + // damage handling + armor = 0.05; + armorStructural = 1; + minTotalDamageThreshold = 0.01; + explosionShielding = 1; + replaceDamagedLimit = 0.9; + selectionDamage = "mat_tyre"; //"mat_rim" + + // necessary because only one "selectionDamage" (== "visual") is allowed for simple damage objects + // can not take damage individually though, because of limitations of the thingX simulation type + class HitPoints { + class HitBody { + armor = 0.6; + material = -1; + name = "zbytek"; + visual = "mat_rim"; + passThrough = 1; + explosionShielding = 1; + }; + }; + + class Damage { + tex[] = {}; + mat[] = { + QPATHTO_R(data\trailObjects_tyre.rvmat), + QPATHTO_R(data\trailObjects_tyre_damage.rvmat), + QPATHTO_R(data\trailObjects_tyre_damage.rvmat), + QPATHTO_R(data\trailObjects_steel.rvmat), + QPATHTO_R(data\trailObjects_steel_damage.rvmat), + QPATHTO_R(data\trailObjects_steel_destruct.rvmat) + }; + }; }; // disable vanilla repair diff --git a/addons/repair/data/ace_track.p3d b/addons/repair/data/ace_track.p3d index 988499c32bed085e9148295bcd5e6babdafa6a89..749de18239e2328d0c762c79e9fc90eae8271823 100644 GIT binary patch delta 6376 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 diff --git a/addons/repair/data/material_dummy.p3d b/addons/repair/data/material_dummy.p3d new file mode 100644 index 0000000000000000000000000000000000000000..0926cc0f7328646e94706802b2118708802b30de GIT binary patch literal 1447 zcmcJNO>fgc5Qf)`JXUFiLjjosV~C$1{3A9z>B4<|jTJ3`TE^2CN&kXZ~woCpSjjEEbDj4Nf|k z*dab2?_lE8QimiROdUQr5b~BWz5^j@U*E_6Y4YJkdf1lR2u3s$Hd^a1FjR8pIXeZ%tYl*h=`O4 zJhRv_@fmglt`nG_Tg=fg{nJ!brOT^{?tGaSfm5W+>7~W42h3LiyVZDYF^7N6$G1mE zQG9$R%gbSYs;XFgX>#0}`So%W#K&9EOw+F$ni&vdHuORqjUO97Hrm{%3bS=8kL|>x ww#1)4A1fV;-zK#!zHRifO_uk0-L5n!ZE70bt^a@VC?3x8@wa!=LdBu0KmRntNdN!< literal 0 HcmV?d00001 diff --git a/addons/repair/data/model.cfg b/addons/repair/data/model.cfg new file mode 100644 index 0000000000..95f4bfb2e5 --- /dev/null +++ b/addons/repair/data/model.cfg @@ -0,0 +1,44 @@ +class CfgSkeletons { + class Default { + isDiscrete = 1; + skeletonInherit = ""; + skeletonBones[] = {}; + }; + + class ace_wheel: Default { + skeletonBones[] = { + "zbytek", "" + }; + }; + + class ace_track: Default { + skeletonBones[] = { + "zbytek", "" + }; + }; +}; + +class CfgModels { + class Default { + skeletonName = ""; + sectionsInherit = ""; + sections[] = {}; + }; + + class ace_wheel: Default { + skeletonName = "ace_wheel"; + sectionsInherit = ""; + sections[] = { + "mat_tyre", + "mat_rim" + }; + }; + + class ace_track: Default { + skeletonName = "ace_track"; + sectionsInherit = ""; + sections[] = { + "mat_track" + }; + }; +}; diff --git a/addons/repair/data/trailObjects.rvmat b/addons/repair/data/trailObjects.rvmat deleted file mode 100644 index 8692493699..0000000000 --- a/addons/repair/data/trailObjects.rvmat +++ /dev/null @@ -1,100 +0,0 @@ -#define _ARMA_ - -class StageTI -{ - texture = "a3\data_f\default_ti_ca.paa"; -}; -ambient[] = {1,1,1,1}; -diffuse[] = {1,1,1,1}; -forcedDiffuse[] = {0,0,0,0}; -emmisive[] = {0,0,0,0}; -specular[] = {0.0099999998,0.0099999998,0.0099999998,0.0099999998}; -specularPower = 500; -surfaceInfo="a3\data_f\penetration\metal.bisurf"; -PixelShaderID = "Super"; -VertexShaderID = "Super"; -class Stage1 -{ - texture = "z\ace\addons\repair\data\trailObjects_nohq.paa"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage2 -{ - texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage3 -{ - texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage4 -{ - texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage5 -{ - texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage6 -{ - texture = "#(ai,64,64,1)fresnelGlass(2)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage7 -{ - useWorldEnvMap = "true"; - texture = "a3\data_f\env_land_ca.paa"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; diff --git a/addons/repair/data/trailObjects_steel.rvmat b/addons/repair/data/trailObjects_steel.rvmat new file mode 100644 index 0000000000..f92ea9113f --- /dev/null +++ b/addons/repair/data/trailObjects_steel.rvmat @@ -0,0 +1,91 @@ +class StageTI { + texture = "a3\data_f\default_ti_ca.paa"; +}; + +ambient[] = {1,1,1,1}; +diffuse[] = {1,1,1,1}; +forcedDiffuse[] = {0,0,0,0}; +emmisive[] = {0,0,0,0}; +specular[] = {0.01,0.01,0.01,0.01}; +specularPower = 500; +surfaceInfo = "a3\data_f\penetration\metal.bisurf"; +PixelShaderID = "Super"; +VertexShaderID = "Super"; + +class Stage1 { + texture = "z\ace\addons\repair\data\trailObjects_nohq.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage2 { + texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage3 { + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage4 { + texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage5 { + texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage6 { + texture = "#(ai,64,64,1)fresnelGlass(2)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage7 { + useWorldEnvMap = "true"; + texture = "a3\data_f\env_land_ca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; diff --git a/addons/repair/data/trailObjects_steel_damage.rvmat b/addons/repair/data/trailObjects_steel_damage.rvmat new file mode 100644 index 0000000000..1850a7396c --- /dev/null +++ b/addons/repair/data/trailObjects_steel_damage.rvmat @@ -0,0 +1,91 @@ +class StageTI { + texture = "a3\data_f\default_ti_ca.paa"; +}; + +ambient[] = {1,1,1,1}; +diffuse[] = {1,1,1,1}; +forcedDiffuse[] = {0,0,0,0}; +emmisive[] = {0,0,0,0}; +specular[] = {0.01,0.01,0.01,0.01}; +specularPower = 500; +surfaceInfo = "a3\data_f\penetration\metal.bisurf"; +PixelShaderID = "Super"; +VertexShaderID = "Super"; + +class Stage1 { + texture = "z\ace\addons\repair\data\trailObjects_nohq.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage2 { + texture = "a3\data_f\destruct\damage_metal_cdt.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {5,0,0}; + up[] = {0,5,0}; + dir[] = {0,0,0}; + pos[] = {0,0,0}; + }; +}; + +class Stage3 { + texture = "a3\data_f\destruct\damage_metal_mc.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {3,0,0}; + up[] = {0,3,0}; + dir[] = {0,0,0}; + pos[] = {0.1,0.23,0}; + }; +}; + +class Stage4 { + texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage5 { + texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage6 { + texture = "#(ai,64,64,1)fresnelGlass(2)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage7 { + useWorldEnvMap = "true"; + texture = "a3\data_f\env_land_ca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; diff --git a/addons/repair/data/trailObjects_steel_destruct.rvmat b/addons/repair/data/trailObjects_steel_destruct.rvmat new file mode 100644 index 0000000000..5be6a7c912 --- /dev/null +++ b/addons/repair/data/trailObjects_steel_destruct.rvmat @@ -0,0 +1,91 @@ +class StageTI { + texture = "a3\data_f\default_ti_ca.paa"; +}; + +ambient[] = {1,1,1,1}; +diffuse[] = {1,1,1,1}; +forcedDiffuse[] = {0,0,0,0}; +emmisive[] = {0,0,0,0}; +specular[] = {0.01,0.01,0.01,0.01}; +specularPower = 500; +surfaceInfo = "a3\data_f\penetration\metal.bisurf"; +PixelShaderID = "Super"; +VertexShaderID = "Super"; + +class Stage1 { + texture = "z\ace\addons\repair\data\trailObjects_nohq.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage2 { + texture = "a3\data_f\destruct\destruct_rust_cdt.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {8,8,0}; + up[] = {-8,8,0}; + dir[] = {0,0,0}; + pos[] = {0,0,0}; + }; +}; + +class Stage3 { + texture = "a3\data_f\destruct\destruct_rust_mca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {2,0,0}; + up[] = {0,2,0}; + dir[] = {0,0,0}; + pos[] = {0,0,0}; + }; +}; + +class Stage4 { + texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage5 { + texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage6 { + texture = "#(ai,64,64,1)fresnelGlass(2)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage7 { + useWorldEnvMap = "true"; + texture = "a3\data_f\env_land_ca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; diff --git a/addons/repair/data/trailObjects_tyre.rvmat b/addons/repair/data/trailObjects_tyre.rvmat new file mode 100644 index 0000000000..f92ea9113f --- /dev/null +++ b/addons/repair/data/trailObjects_tyre.rvmat @@ -0,0 +1,91 @@ +class StageTI { + texture = "a3\data_f\default_ti_ca.paa"; +}; + +ambient[] = {1,1,1,1}; +diffuse[] = {1,1,1,1}; +forcedDiffuse[] = {0,0,0,0}; +emmisive[] = {0,0,0,0}; +specular[] = {0.01,0.01,0.01,0.01}; +specularPower = 500; +surfaceInfo = "a3\data_f\penetration\metal.bisurf"; +PixelShaderID = "Super"; +VertexShaderID = "Super"; + +class Stage1 { + texture = "z\ace\addons\repair\data\trailObjects_nohq.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage2 { + texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage3 { + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage4 { + texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage5 { + texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage6 { + texture = "#(ai,64,64,1)fresnelGlass(2)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage7 { + useWorldEnvMap = "true"; + texture = "a3\data_f\env_land_ca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; diff --git a/addons/repair/data/trailObjects_tyre_damage.rvmat b/addons/repair/data/trailObjects_tyre_damage.rvmat new file mode 100644 index 0000000000..00bb746293 --- /dev/null +++ b/addons/repair/data/trailObjects_tyre_damage.rvmat @@ -0,0 +1,91 @@ +class StageTI { + texture = "a3\data_f\default_ti_ca.paa"; +}; + +ambient[] = {1,1,1,1}; +diffuse[] = {1,1,1,1}; +forcedDiffuse[] = {0,0,0,0}; +emmisive[] = {0,0,0,0}; +specular[] = {0.01,0.01,0.01,0.01}; +specularPower = 500; +surfaceInfo = "a3\data_f\penetration\metal.bisurf"; +PixelShaderID = "Super"; +VertexShaderID = "Super"; + +class Stage1 { + texture = "z\ace\addons\repair\data\trailObjects_nohq.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage2 { + texture = "a3\data_f\destruct\destr_rubber_half_dt.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {5,0,0}; + up[] = {0,5,0}; + dir[] = {0,0,0}; + pos[] = {0,0,0}; + }; +}; + +class Stage3 { + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + class uvTransform { + aside[] = {3,0,0}; + up[] = {0,3,0}; + dir[] = {0,0,0}; + pos[] = {0.1,0.23,0}; + }; +}; + +class Stage4 { + texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage5 { + texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage6 { + texture = "#(ai,64,64,1)fresnelGlass(2)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; + +class Stage7 { + useWorldEnvMap = "true"; + texture = "a3\data_f\env_land_ca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; From 9451716a4433fb99299dfaf7dba0243173bfa10a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 24 Sep 2016 15:15:02 -0500 Subject: [PATCH 23/26] Show damage on repair items interaction point (#4448) * Show damage on repair items interaction point * Fix dot size * Change scaling --- addons/repair/CfgVehicles.hpp | 5 ++++ addons/repair/XEH_PREP.hpp | 1 + .../functions/fnc_modifyInteraction.sqf | 28 ++++++++++++++++++ addons/repair/ui/damage_0_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_1_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_2_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_3_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_4_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_5_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_6_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_7_ca.paa | Bin 0 -> 5625 bytes addons/repair/ui/damage_8_ca.paa | Bin 0 -> 5625 bytes 12 files changed, 34 insertions(+) create mode 100644 addons/repair/functions/fnc_modifyInteraction.sqf create mode 100644 addons/repair/ui/damage_0_ca.paa create mode 100644 addons/repair/ui/damage_1_ca.paa create mode 100644 addons/repair/ui/damage_2_ca.paa create mode 100644 addons/repair/ui/damage_3_ca.paa create mode 100644 addons/repair/ui/damage_4_ca.paa create mode 100644 addons/repair/ui/damage_5_ca.paa create mode 100644 addons/repair/ui/damage_6_ca.paa create mode 100644 addons/repair/ui/damage_7_ca.paa create mode 100644 addons/repair/ui/damage_8_ca.paa diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index e073c3d2ff..847258f6da 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -313,6 +313,11 @@ class CfgVehicles { class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {}; }; + class ACE_Actions { + class ACE_MainActions { + modifierFunction = QUOTE(_this call FUNC(modifyInteraction)); + }; + }; accuracy = 0.2; vehicleClass = "ACE_Logistics_Items"; diff --git a/addons/repair/XEH_PREP.hpp b/addons/repair/XEH_PREP.hpp index e3604c95a7..692bee6112 100644 --- a/addons/repair/XEH_PREP.hpp +++ b/addons/repair/XEH_PREP.hpp @@ -23,6 +23,7 @@ PREP(isEngineer); PREP(isInRepairFacility); PREP(isNearRepairVehicle); PREP(isRepairVehicle); +PREP(modifyInteraction); PREP(moduleAddSpareParts); PREP(moduleAssignEngineer); PREP(moduleAssignRepairVehicle); diff --git a/addons/repair/functions/fnc_modifyInteraction.sqf b/addons/repair/functions/fnc_modifyInteraction.sqf new file mode 100644 index 0000000000..cff0fbe6e8 --- /dev/null +++ b/addons/repair/functions/fnc_modifyInteraction.sqf @@ -0,0 +1,28 @@ +/* + * Author: PabstMirror + * Modifies the base interaction point for repair items to show it's current damage + * + * Arguments: + * 0: Target + * 1: Player + * 2: Args + * 3: Action Data + * + * Return Value: + * Nothing + * + * Example: + * [cursorObject, player, [], []] call ace_repair_fnc_modifyInteraction; + * + * Public: No + */ +#include "script_component.hpp" + +params ["_target", "_player", "_args", "_actionData"]; +TRACE_4("params",_target,_player,_args,_actionData); + +// Interaction dots numbered 0..8, white to red. +// Convert damage to number (rounding up), so that even slight damage can bee seen + +private _fileName = format [QPATHTOF(ui\damage_%1_ca.paa), ceil (linearConversion [0, 1, damage _target, 0, 8, true])]; +_actionData set [2, _fileName]; diff --git a/addons/repair/ui/damage_0_ca.paa b/addons/repair/ui/damage_0_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..f7c2348f295c6d520b850ae48fae5112b281bd7a GIT binary patch literal 5625 zcmeHLUr19?82@&s=}?)-2ENEHSPwqCd3X(5VkQaJlDq&Ub&`pYxqR z_tdlAUjOCOy+MB+0IaXCpEU5G{~Te4g>bJwAQQIWL->*`pO>(%;q$N+V8Q_~=>%B8 zr?Mh}1b_^?g%t8Sy=%A@k6J$bjzDcb{C_^YY9DKThDDxBg)^y+*_3bxy>WRWqEEgkv!O-Anwf!r{Kc3r4 zvV0QV&5A8Hi)Fw4E#(`}u?-*7eWY(xm85d^Rl9#YhtB5{hW{3et?J{C{-g7{i~N@) z_0Y%PssBh6)}o&%A6rg%CQHX_zp+zi-y3|z1=2S<7z$Q5o&)H99cKQDFm+SkN zJ*f3i_Jf)|W&~>SujL<~3-ms!`5=M_KsO9#IjUwJwta1jsqmN_*}3)=e@hfkeNRT+ zp;$3C?Vc3?dNTG6j)yb=ls~s@FD#kzp$mJp-?Osyp5;w_Hj7o@lZ#r2yA*p?*hZ4+ z*gNf3r8HV(7A{{YM!qB~&@pe?Em$qKQhlWu<(ZG=T_mriCACt0rSffyYtgLtW`^Qf z?@^SV40&Q-BYps3*2JvU#M)5XqOX{~A2#GKgcPNeuZGPCP!y@wN>_n&$!HedyjR>c zBTtxVJM4a96NIiAd%hMahF@^O4z^`M#Mq z``Aj>(&E~;t)C> zJG^GMB#;2m!{nlX{5RdpxU5IH9|{VT_rve^!&6hYF@(z!3U|cAhZ+v=5pjmdb(Tc9 za^ToamS+7X?@*)YNXFjeP|OtjVD>Hna3tgDI~)%KSQ7UWdQaA=+P9rnRDbtxJl6c> z$9P3}JdPKtKI@S0n(&d0oG+{Ywp-8vq}WrlO|L@@v<%b8n0OcPcSd?mk5kM^=Jh_^ zU8qw1wfm!h@eJ_?Yu^^@L8e>_x|a&uN1g@74%GaldiB|?2A;+2`Tm(6_L0@OCxf}= z6tA`2*U34Tif?f|NAhbVHxW_$*`ODM0{@x#%+S)Q_lXATM}yVYSI9p_Es0xRt4Ny7 zR}a;n(>~%Hec5#VF~#fjwYQeK-o^279tF;Z55{R8)yc@X9yYq3{e#P4;e@y7Dpd+Fv~F@KKv`^XY{7TAxkK(2=+ksbW}`sjYD zm)JPu#r|dNRj`Bl7hs8o<%b3h4|^>MmbrSv94C9_beq=_THO$z^f#3+kH_Pq*9DpX z<@lNcW&O+j$M*u=|CN3)gBgInFlg&vNxRhfdeV5z{}K4O>r1!MJA}tvQ}brZA;s#e z2ShBlsbA-x#9ayi+8g56@=?{kZT`npQ{;JsUwz>xWv zbI-ZwJLleea_y|EEBNcrU6EiD0BkRgbr?7r{Dm+>A>0+*5h5($LwHvx6qfN_!{@XM z;M_8R zxQD1~J^8eK=@oZ)M>jYSki;rI~y zi4kAZVbV{MzBg+70~Q$eV(~1XKWFaN>c><0uqu9k@qS|bw?!W)UrAq^lgBgLc)yho ze{p5y?r>!(`HRG&y;kQxP?HkoR?}+k>n;;1 zQ~sY#4phjVDB2t|`)6YrHqlJ_nwE{v)ql7YI?{n{2Jvb4;ol+&E!tei$UcBLWMJ?I zOst&@vZuT{z_#Kd*OYX+5{0=bx)<4 zl{*PXWsR#(Tb8YQd6+#ox{>rj6xv#KHa4ib?iyH=qujvvnr{oVfD91SvE%Y5UNH9Z z4M6vZflpO+6Wg1E`tc(_pbFs;T-!l?U^NXP+-#@)w2An<4cnHug^NEj=9qwGcvEZ0 EM}+x`NB{r; literal 0 HcmV?d00001 diff --git a/addons/repair/ui/damage_3_ca.paa b/addons/repair/ui/damage_3_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..88bc0b87ab65b4d3b8c4999702edeacfa421d9d6 GIT binary patch literal 5625 zcmeHLOK1~O6umQPY=cCDpBfQ0sb-^<+C?G+q!S7$f|8<63>YK^L=dY5K|~ibq9VAk zDrO=0S%@D31yRUCghWLVRN75tBqo;n-)N+z5}M?B?@XSGP-|0RK=NS79CF{i@0@$z zXP%XHbp^I|c7+2C0I=%$Xq%2BflY)NHo{$jjX}Z!K7_XfgCPmuReVl508TFeNGt?+ zh0pYw1QGyxs5T17-|4rG>w47d;im%i`S9oY@X&e8k;LXsrh2leU9An9Ex3j#%iXz@ zwSVtrW@T5M^3WR5pVwZLP|RzUH!gWLfIput+~9Z^z@59DvxSNsy8X68s_yUhrTd1z z@)*wukH@iD`B{d1m!x*D=6qSpr*6Rl@Tl_8<+YIp#t1#gI4sLD$JZ;zE2P(CnCuf| z-x9Ihgju@3XeRm{;eLqk;SD41Eu*C zFC2~Znw@`t{$si{k=EpVeZA3 zcuXMs?x-x!H2(kI-$7S_bjfJ6TFdnJ{>|E~W2KT_w(TB4gl5fMYGg$!%l3$*a`Q>c zvRNw*uqXT1l0Armr&(j8R}{ws9jj7=JNQ@QZGt9{00J7GxP0*sjII0(&^@T*qh-y& v*2aK#aNi0vAv}n4JD~L~r7naUt+bvtke>Ho!#tO8ZY5*8#$f^8)ava!7|xbb literal 0 HcmV?d00001 diff --git a/addons/repair/ui/damage_4_ca.paa b/addons/repair/ui/damage_4_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..24584de084ad68182bc521982637110b08ae0072 GIT binary patch literal 5625 zcmeHLO=uHQ5T4x_ZIEd2r$$6gT6?lmdq{+Ubc2#2D2eFSfI(uc2*qka5YfY~SP(o| z6?+i;IVh-sf+*x5LZTHBRO&@piHW8DAHwjT;+HWz?-|7bA*d6hW@rgs$uWug}bIb zeUxW}`{UTE{4B$Gm!$Trj!&L&N!G`Y!9VKxM)MH_ z$B+D18sB961@aiY@?{bElcc!i`S%YEetsL;-$?c7Z1DB+`BVMl^1aUSbonUT>+lb? z3_or;usM7@{;Bf8<3)QAS5Np1 zdzpA_S@QJS?2S&t->A;5Ti>tp^T?Zgkl2n#Am_uID-OJS+OeJTC9ZlVWBoGrq^FbW z7htxDmD^4e56a#g8##NylO=ui&^FndT-=x~+xs;?wSvW#&eUHrD~N4VGdc2MhCN<#?S?X;iHAU^NFhIt<0%nHWVe}V;gQ)|d~(D|Wp literal 0 HcmV?d00001 diff --git a/addons/repair/ui/damage_5_ca.paa b/addons/repair/ui/damage_5_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..41a7e5b42d1588c1d3917025773ea7fe7c2b42fe GIT binary patch literal 5625 zcmeHLU1$?o6h1R!v_YalYmJDSwDxH$wGW99STaFK5tKx9YQP{dvIt_eAc*M0jPyb9 zVY`2QSnvnTgAyo+LLNj&G$4XXeNjeYVyU`6AehpigigGkGn2bYpw_06;*tZGnJ;tZ z{Cwx!J2%(H`ul@>xAzYOmjJ-p-=}*`91ZRw%uopT2X}@D3pfbx35CKk-fK9{IRSod z2N+!g@EphdLj_>1|{RgNbBJcSztd$;%hcc z`Tg{&$DCV2**Ye?; zTxZ-JH&&Csfmn2i=iID(>;3tQ|747rjM>i)yCCrV=gOzi=l-HPb(p(j>e;Io;GD!Uku-wAxEr*3C6i!EOSsK{mw1&dB>}Iu$d8q?1`depW8p1&an5(NMF;k@rC*imqN#SX`6xk z+q{axTxd~po*?@G;+ToS=eMwSI$Ta(_Ghh7**5W V^ET{Q29B_)IKCaKsrH45tKx9YQV6>6cLuK78aJG4>RI} z;Dc4M4}w1reNX}gQOJV`i3UVasV^=g*rYd(KR*N}$%JlA`3oF!PZ! z=R4;+=ia%wHrCe{*tesvKd=M<)()4tO&kgACd_aU?hEV+5*F|xyf+vO$@r|{b;=2F zW;MX*8i0TCn%|H?20#zBL4^F7?k(KXqty?e6==!dS*!;?r3W|N1y2KMa0 zHALOy$t7*$e_mmdG3HX9ZV~-?{T~CxoT_Bp%5ngIK3lxT@g#sJcQa=Xm3vM5{ll8+ z@8;#ZmcQyWuL$Skc(LlU5%XQ2JiM9b%R1hK1qlG-cYEy;YG6g!VPq;Z6l4ugRSFf- zYc@>wDKhVfNY`Ph=`R{f1M)etw>CVh*Mm&C7IbeG_7(2Or+;5DL-iW2OMJ2%TlD(-3X|_%1dn!6KRPWF_sz=RV%2()p|ET-YUE&*xMEjdv?|MF5kK)IZ2eY&uZBjAg4%iB7&aS}t z+#uP#JpcLX!Sh9b5YtY3O@HZFbYtS&_Uw&8lW)4py*F>YtIwZf{yp*}?#B<{Cy?vm z$(1KwKKbJS)l1y+RKfmb?D5DT^)JA33#+#s7M@f*Iaa!G*_|bOZFs-pNv!M2*8F{$ zFX!X@=yg%n{}#WcKuiBt|M9s%_aCJn+~5YF69#MiC}B4{-cS*@`5)rXGbQ{Rqj+u1 z)w7Lan5qo4jf+@r*O(Nm;bR&A+B>ort7*$V8pfZ@(Wt(z)PoeOUd3(ZK$~3>MLyYP z+g7+zYEfmCUb2s+HLXV9a9g@k<^Nb^#2|m7DB0)cXQdSTxQy&IEgf4Zf2bHd(v8~; z($nTu6y`#YlJhU}4hj%wCf&Y87pI3N<9%-m8 Xq~{&jxymh^|BbOs30C7ttvUV&%!a`o literal 0 HcmV?d00001 diff --git a/addons/repair/ui/damage_7_ca.paa b/addons/repair/ui/damage_7_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..087359e3244761b1df1eefa90d84dedc8d87c7f2 GIT binary patch literal 5625 zcmeHLO=uHQ5T4yM+91*3PmPGWsrF>0^^gbw=>{Q1P!iFt0fWSV2x4nN5YfY~R1iE^ z6?+i;Ie1V41yRUBgpC$NP^lMXB_@{Q|HWvFC2i8@%x<1apw_06qU6D{`(c`8Lyj_c6`%cl*kH%U^Mn zSA_F%JXiHuje1um53J{US>wmBU;{vXlGkCw99R*`<1ju+L6)$DnDR9hCVQRC8zZ)x zFwgWCjimtjoasBOUY6&BOnENoTrKPyei$F!yKs`~)#q(;@+fAi_fPZT8(vX(Fj!bZ zd>zq9H`iP(z2$uV><7Itp;JFgPKO|H{nP2G^u9l0w97kd(?yj79e z=A-0K_YJpwdD3$EKJj%&q8-()cR3%fNAVNMeQ8>c)~Kks5n5r{xrJ08usOV3|4j42 z^`bwBX=l8qzf>%`I&pq;`c|jOH(KQ0tGC{j>*tuik35No@jdto<5}iQWSF6GfY2dVV&dv$6SPuW6~+Z23dEU{?!nGbo>Suc9z~ zd4kP#g!}`D{U!#V-@@AQP;SxXm$*$J`*2iIX3PJ-KkuSXf%K8l8kM$b`ST6Nyq-dV z+IFC|Nf4pI@D%2=JhtUPYed$#`IK$hVB`ncqrPtA z&z8Ek<#mZ~UXN<|@1A@dnK`oNJH>0r)nr?;e@oQIJ-MmyaJ;ad_&P(u-mm0LI z^{=oeGnFXJCMcf;o0a3{da>Mi|3ME=M*h;pzRASb8y3at`;X2)9i;dR9A{ne_?|@rh!%>hX6^PJDjv>uJXRIBZR>p_Pumd$Rq@v)1dQ#Mc`Pbyhq6I3GpM#*e0G zK5CG0)HOmIY`C+4sDHH-krMBt?|ti=d4$4{OkJb>yb0| zIC2=5Kw7Uz4`(_*{^7;(!xS&R<)wuA%h>b5Zo&YoOIW^dE8z*rnP$^hZwM*EO5Y*L z8QavHD%<md z@88?$D3A^rOJzQxD#P{as)0gbnEsC1nm8WnRcE1= Date: Sat, 24 Sep 2016 22:31:10 +0200 Subject: [PATCH 24/26] remove deprecated code for 3.8.0 (#4457) * remove deprecated scroll wheel event handler * remove deprecated ace hash functions * remove deprecated execNextFrame * remove deprecated insertionSort * remove deprecated getConfigType * remove deprecated binocularMagazine * remove deprecated wait(Until)AndExecute * remove old ass and deprecated alternative syntax setHitPointDamage * remove deprecated event handlers (#4459) * remove deprecated event handlers# * remove ACE_newEvents * Remove old ACE PlayerEventHandler wrappers --- addons/atragmx/config.cpp | 4 -- addons/attach/config.cpp | 4 -- addons/backpacks/config.cpp | 4 -- addons/captives/config.cpp | 8 --- addons/cargo/config.cpp | 10 --- addons/common/XEH_PREP.hpp | 29 --------- addons/common/XEH_missionDisplayLoad.sqf | 1 - addons/common/XEH_postInit.sqf | 65 ------------------- addons/common/config.cpp | 64 ------------------ .../common/functions/fnc_addEventHandler.sqf | 14 ---- .../fnc_addScrollWheelEventHandler.sqf | 35 ---------- .../functions/fnc_binocularMagazine.sqf | 20 ------ addons/common/functions/fnc_execNextFrame.sqf | 18 ----- addons/common/functions/fnc_getConfigType.sqf | 17 ----- .../functions/fnc_getConfigTypeObject.sqf | 17 ----- addons/common/functions/fnc_globalEvent.sqf | 14 ---- .../functions/fnc_handleScrollWheel.sqf | 20 ------ addons/common/functions/fnc_hashCreate.sqf | 17 ----- addons/common/functions/fnc_hashGet.sqf | 40 ------------ addons/common/functions/fnc_hashHasKey.sqf | 35 ---------- addons/common/functions/fnc_hashRem.sqf | 41 ------------ addons/common/functions/fnc_hashSet.sqf | 38 ----------- addons/common/functions/fnc_insertionSort.sqf | 22 ------- addons/common/functions/fnc_localEvent.sqf | 13 ---- addons/common/functions/fnc_objectEvent.sqf | 13 ---- .../functions/fnc_removeAllEventHandlers.sqf | 14 ---- .../functions/fnc_removeBinocularMagazine.sqf | 20 ------ .../functions/fnc_removeEventHandler.sqf | 13 ---- .../fnc_removeScrollWheelEventHandler.sqf | 31 --------- addons/common/functions/fnc_serverEvent.sqf | 13 ---- addons/common/functions/fnc_targetEvent.sqf | 13 ---- .../common/functions/fnc_waitAndExecute.sqf | 22 ------- .../functions/fnc_waitUntilAndExecute.sqf | 24 ------- addons/common/init_handleScrollWheel.sqf | 19 ------ addons/concertina_wire/config.cpp | 4 -- addons/dagr/config.cpp | 4 -- addons/disarming/config.cpp | 5 -- addons/explosives/config.cpp | 5 -- addons/goggles/config.cpp | 5 -- addons/grenades/config.cpp | 4 -- addons/interact_menu/config.cpp | 6 -- addons/interaction/config.cpp | 9 --- addons/laser/config.cpp | 5 -- addons/laserpointer/config.cpp | 5 -- addons/logistics_wirecutter/config.cpp | 4 -- addons/microdagr/config.cpp | 4 -- addons/mk6mortar/config.cpp | 4 -- addons/overheating/config.cpp | 7 -- addons/overpressure/config.cpp | 4 -- addons/reload/config.cpp | 6 -- addons/reloadlaunchers/config.cpp | 4 -- addons/repair/config.cpp | 7 -- .../functions/fnc_setHitPointDamage.sqf | 6 -- addons/respawn/config.cpp | 5 -- addons/sandbag/config.cpp | 4 -- addons/sitting/config.cpp | 4 -- addons/spectator/config.cpp | 5 -- addons/tacticalladder/config.cpp | 4 -- addons/tagging/config.cpp | 5 -- addons/trenches/config.cpp | 4 -- addons/tripod/config.cpp | 4 -- addons/vector/config.cpp | 4 -- addons/vehiclelock/config.cpp | 5 -- addons/zeus/config.cpp | 7 -- 64 files changed, 881 deletions(-) delete mode 100644 addons/common/functions/fnc_addEventHandler.sqf delete mode 100644 addons/common/functions/fnc_addScrollWheelEventHandler.sqf delete mode 100644 addons/common/functions/fnc_binocularMagazine.sqf delete mode 100644 addons/common/functions/fnc_execNextFrame.sqf delete mode 100644 addons/common/functions/fnc_getConfigType.sqf delete mode 100644 addons/common/functions/fnc_getConfigTypeObject.sqf delete mode 100644 addons/common/functions/fnc_globalEvent.sqf delete mode 100644 addons/common/functions/fnc_handleScrollWheel.sqf delete mode 100644 addons/common/functions/fnc_hashCreate.sqf delete mode 100644 addons/common/functions/fnc_hashGet.sqf delete mode 100644 addons/common/functions/fnc_hashHasKey.sqf delete mode 100644 addons/common/functions/fnc_hashRem.sqf delete mode 100644 addons/common/functions/fnc_hashSet.sqf delete mode 100644 addons/common/functions/fnc_insertionSort.sqf delete mode 100644 addons/common/functions/fnc_localEvent.sqf delete mode 100644 addons/common/functions/fnc_objectEvent.sqf delete mode 100644 addons/common/functions/fnc_removeAllEventHandlers.sqf delete mode 100644 addons/common/functions/fnc_removeBinocularMagazine.sqf delete mode 100644 addons/common/functions/fnc_removeEventHandler.sqf delete mode 100644 addons/common/functions/fnc_removeScrollWheelEventHandler.sqf delete mode 100644 addons/common/functions/fnc_serverEvent.sqf delete mode 100644 addons/common/functions/fnc_targetEvent.sqf delete mode 100644 addons/common/functions/fnc_waitAndExecute.sqf delete mode 100644 addons/common/functions/fnc_waitUntilAndExecute.sqf delete mode 100644 addons/common/init_handleScrollWheel.sqf diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index aec53ba837..d7cb846c60 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -18,7 +18,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "RscTitles.hpp" - -class ACE_newEvents { - RangerfinderData = QEGVAR(vector,rangefinderData); -}; diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index cadc84705b..f862a008a2 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -19,7 +19,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "GUI_VirtualAmmo.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; \ No newline at end of file diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index 80439533e2..9b63e4df9f 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -15,7 +15,3 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" - -class ACE_newEvents { - backpackOpened = "ace_backpackOpened"; -}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index b879e906fa..e9055e896a 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -20,11 +20,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgEden.hpp" - -class ACE_newEvents { - SetSurrendered = QGVAR(setSurrendered); - SetHandcuffed = QGVAR(setHandcuffed); - MoveOutCaptive = QGVAR(moveOutCaptive); - MoveInCaptive = QGVAR(moveInCaptive); - CaptiveStatusChanged = "ace_captiveStatusChanged"; -}; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index c368cab8d5..1912740903 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -18,13 +18,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "menu.hpp" - -class ACE_newEvents { - LoadCargo = "ace_loadCargo"; - cargoUnloaded = "ace_cargoUnloaded"; - cargoLoaded = "ace_cargoLoaded"; - AddCargoByClass = "ace_addCargo"; - ServerUnloadCargo = QGVAR(serverUnload); - UnloadCargo = "ace_unloadCargo"; - cargoAddedByClass = "ace_cargoAdded"; -}; diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 30ca38fe73..1f6086b24e 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -38,7 +38,6 @@ PREP(dropBackpack); PREP(endRadioTransmission); PREP(eraseCache); PREP(errorMessage); -PREP(execNextFrame); PREP(findUnloadPosition); PREP(firedEH); PREP(fixCollision); @@ -85,12 +84,10 @@ PREP(hadamardProduct); PREP(handleEngine); PREP(handleModifierKey); PREP(handleModifierKeyUp); -PREP(handleScrollWheel); PREP(hasItem); PREP(hasMagazine); PREP(headBugFix); PREP(hideUnit); -PREP(insertionSort); PREP(interpolateFromArray); PREP(inTransitionAnim); PREP(isAwake); @@ -173,8 +170,6 @@ PREP(unmuteUnit); PREP(useItem); PREP(useMagazine); PREP(watchVariable); -PREP(waitAndExecute); -PREP(waitUntilAndExecute); PREP(waveHeightAt); PREP(translateToWeaponSpace); @@ -184,14 +179,12 @@ PREP(translateToModelSpace); PREP(worldToScreenBounds); // config items -PREP(getConfigType); PREP(getItemType); PREP(getWeaponType); PREP(getWeaponModes); PREP(getWeaponMuzzles); // config objects -PREP(getConfigTypeObject); PREP(getConfigGunner); PREP(getConfigCommander); PREP(getSelectionsWithoutHitPoints); @@ -212,10 +205,6 @@ PREP(getTurretsFFV); PREP(getTurretsOther); PREP(hasHatch); -// missing inventory commands -PREP(binocularMagazine); -PREP(removeBinocularMagazine); - // ACE_Debug PREP(getChildren); PREP(getDisplayConfigName); @@ -225,15 +214,6 @@ PREP(showUser); PREP(dumpPerformanceCounters); PREP(dumpArray); -PREP(globalEvent); -PREP(addEventHandler); -PREP(objectEvent); -PREP(targetEvent); -PREP(serverEvent); -PREP(localEvent); -PREP(removeEventHandler); -PREP(removeAlLEventHandlers); - // Synchronized Events PREP(syncedEventPFH); PREP(addSyncedEventHandler); @@ -248,17 +228,8 @@ PREP(_handleRequestAllSyncedEvents); // other eventhandlers PREP(addActionEventHandler); PREP(addActionMenuEventHandler); -PREP(addScrollWheelEventHandler); PREP(addMapMarkerCreatedEventHandler); PREP(removeActionEventHandler); PREP(removeActionMenuEventHandler); -PREP(removeScrollWheelEventHandler); PREP(removeMapMarkerCreatedEventHandler); - -// hashes -PREP(hashCreate); -PREP(hashSet); -PREP(hashGet); -PREP(hashHasKey); -PREP(hashRem); diff --git a/addons/common/XEH_missionDisplayLoad.sqf b/addons/common/XEH_missionDisplayLoad.sqf index a07c301288..f1657703c0 100644 --- a/addons/common/XEH_missionDisplayLoad.sqf +++ b/addons/common/XEH_missionDisplayLoad.sqf @@ -1,4 +1,3 @@ #include "script_component.hpp" -call COMPILE_FILE(init_handleScrollWheel); call COMPILE_FILE(init_handleModifierKey); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index a930fba126..2beb6ea291 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -306,71 +306,6 @@ if (!isNull (missionNamespace getVariable ["cba_events_oldUnit", objNull])) then // "playerChanged" event ["unit", { ACE_player = (_this select 0); - ["ace_playerChanged", _this] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -// "playerVehicleChanged" event -["vehicle", { - ["ace_playerVehicleChanged", _this] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -// "playerTurretChanged" event -["turret", { - ["ace_playerTurretChanged", _this] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -// "playerWeaponChanged" event -["weapon", { - ["ace_playerWeaponChanged", _this] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -// "playerInventoryChanged" event -["loadout", { - private _fnc_getAllGear = { - if (isNull _this) exitWith {[ - "", - "", - "", [], - "", [], - "", [], - "", ["","","",""], [], - "", ["","","",""], [], - "", ["","","",""], [], - [], - "", - "" - ]}; - - [ - headgear _this, - goggles _this, - uniform _this, uniformItems _this, - vest _this, vestItems _this, - backpack _this, backpackItems _this, - primaryWeapon _this, primaryWeaponItems _this, primaryWeaponMagazine _this, - secondaryWeapon _this, secondaryWeaponItems _this, secondaryWeaponMagazine _this, - handgunWeapon _this, handgunItems _this, handgunMagazine _this, - assignedItems _this, - binocular _this, - _this call CBA_fnc_binocularMagazine - ] - }; - - ["ace_playerInventoryChanged", [ACE_player, ACE_player call _fnc_getAllGear]] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -// "playerVisionModeChanged" event -["visionMode", { - ["ace_playerVisionModeChanged", _this] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -// "cameraViewChanged" event -["cameraView", { - ["ace_cameraViewChanged", _this] call CBA_fnc_localEvent; -}] call CBA_fnc_addPlayerEventHandler; - -["visibleMap", { - ["ace_visibleMapChanged", _this] call CBA_fnc_localEvent; }] call CBA_fnc_addPlayerEventHandler; GVAR(OldIsCamera) = false; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 74e5691973..2cddf76bd8 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -14,70 +14,6 @@ class CfgPatches { }; }; -// This class will be deprecated in version 3.8.0 -class ACE_newEvents { - // Status effect events - forceWalk = QGVAR(forceWalk); - blockSprint = QGVAR(blockSprint); - setCaptive = QGVAR(setCaptive); - blockDamage = QGVAR(blockDamage); - blockEngine = QGVAR(blockEngine); - - // Public listenable events - PlayerJip = "ace_playerJIP"; - activeCameraChanged = "ace_activeCameraChanged"; - visibleMapChanged = "ace_visibleMapChanged"; - cameraViewChanged = "ace_cameraViewChanged"; - playerVisionModeChanged = "ace_playerVisionModeChanged"; - playerInventoryChanged = "ace_playerInventoryChanged"; - playerWeaponChanged = "ace_playerWeaponChanged"; - playerTurretChanged = "ace_playerTurretChanged"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerChanged = "ace_playerChanged"; - SettingsInitialized = "ace_settingsInitialized"; - SettingChanged = "ace_settingChanged"; - firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; - firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; - firedPlayerVehicle = "ace_firedPlayerVehicle"; - firedNonPlayer = "ace_firedNonPlayer"; - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; - unloadPersonEvent = "ace_unloadPersonEvent"; - loadPersonEvent = "ace_loadPersonEvent"; - useItem = "ace_useItem"; - infoDisplayChanged = "ace_infoDisplayChanged"; - - // Internal callable events - setStatusEffect = QGVAR(setStatusEffect); - HeadbugFixUsed = QGVAR(headbugFixUsed); - InitSettingsFromModules = QGVAR(initSettingsFromModules); - enableSimulationGlobal = QGVAR(enableSimulationGlobal); - hideObjectGlobal = QGVAR(hideObjectGlobal); - fixPosition = QGVAR(fixPosition); - fixFloating = QGVAR(fixFloating); - fixCollision = QGVAR(fixCollision); - unlockVehicle = QGVAR(unlockVehicle); - lockVehicle = QGVAR(lockVehicle); - displayTextPicture = QGVAR(displayTextPicture); - displayTextStructured = QGVAR(displayTextStructured); - setVanillaHitPointDamage = QGVAR(setVanillaHitPointDamage); - setVectorDirAndUp = QGVAR(setVectorDirAndUp); - switchMove = QGVAR(switchMove); - playMoveNow = QGVAR(playMoveNow); - playMove = QGVAR(playMove); - setVelocity = QGVAR(setVelocity); - selectLeader = QGVAR(selectLeader); - setSpeaker = QGVAR(setSpeaker); - engineOn = QGVAR(engineOn); - setFuel = QGVAR(setFuel); - setDir = QGVAR(setDir); - - // Events framework - SEH_s = "ACEs"; - SEH = "ACEe"; - SEH_all = "ACEa"; -}; - #include "CfgEventHandlers.hpp" #include "CfgLocationTypes.hpp" diff --git a/addons/common/functions/fnc_addEventHandler.sqf b/addons/common/functions/fnc_addEventHandler.sqf deleted file mode 100644 index 6ded410c87..0000000000 --- a/addons/common/functions/fnc_addEventHandler.sqf +++ /dev/null @@ -1,14 +0,0 @@ -#define DEBUG_MODE_FULL -#include "script_component.hpp" - -params ["_eventName", "_eventCode"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName, _eventCode] call CBA_fnc_addEventHandler; - -ACE_DEPRECATED("ace_common_fnc_addEventHandler","3.8.0","CBA_fnc_addEventHandler"); diff --git a/addons/common/functions/fnc_addScrollWheelEventHandler.sqf b/addons/common/functions/fnc_addScrollWheelEventHandler.sqf deleted file mode 100644 index 2a9b26e71c..0000000000 --- a/addons/common/functions/fnc_addScrollWheelEventHandler.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: commy2 - * Add an event handler that executes every time the scroll wheel is used. This is needed, because adding a MouseZ display event handler to display 46 will break in save games. - * _this will be [Interval] where 'Interval' is a number. - * - * Arguments: - * 0: Code to execute - * - * Return Value: - * ID of the event script (used to remove it later). - * - * Public: Yes - */ -#include "script_component.hpp" - -params ["_statement"]; - -ACE_DEPRECATED("ace_common_fnc_addScrollWheelEventHandler", "3.8.0", "'MouseZChanged' Display EventHandler"); - -if (_statement isEqualType "") then { - _statement = compile _statement; -}; - -private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]; - -_actionsVar params ["_id", "_actionIDs", "_actions"]; - -_id = _id + 1; - -_actionIDs pushBack _id; -_actions pushBack _statement; - -missionNamespace setVariable ["ACE_EventHandler_ScrollWheel", [_id, _actionIDs, _actions]]; - -_id diff --git a/addons/common/functions/fnc_binocularMagazine.sqf b/addons/common/functions/fnc_binocularMagazine.sqf deleted file mode 100644 index aacac7c142..0000000000 --- a/addons/common/functions/fnc_binocularMagazine.sqf +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Author: commy2 - * Returns the magazine of the units rangefinder. - * - * Arguments: - * 0: Unit - * - * Return Value: - * Magazine of the units binocular - * - * Example: - * player call ace_common_fnc_binocularMagazine - * - * Public: Yes - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_binocularMagazine","3.8.0","CBA_fnc_binocularMagazine"); - -_this call CBA_fnc_binocularMagazine diff --git a/addons/common/functions/fnc_execNextFrame.sqf b/addons/common/functions/fnc_execNextFrame.sqf deleted file mode 100644 index c1c4b81592..0000000000 --- a/addons/common/functions/fnc_execNextFrame.sqf +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Author: esteldunedain - * Executes a code on the next frame - * - * Arguments: - * 0: Code to execute - * 1: Parameters to run the code with - * - * Return Value: - * PFH handler ID - * - * Public: Yes - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_execNextFrame","3.8.0","CBA_fnc_execNextFrame"); - -_this call CBA_fnc_execNextFrame; diff --git a/addons/common/functions/fnc_getConfigType.sqf b/addons/common/functions/fnc_getConfigType.sqf deleted file mode 100644 index 34aaa03172..0000000000 --- a/addons/common/functions/fnc_getConfigType.sqf +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Author: commy2 - * Determins type of item. Can be CfgMagaines, CfgWeapons or CfgGlasses. - * - * Arguments: - * 0: Item Classname - * - * Return Value: - * Config category ("CfgWeapons", "CfgMagazines", "CfgGlasses", "") - * - * Public: Yes - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_getConfigType","3.8.0","CBA_fnc_getItemConfig"); - -configName (configHierarchy (_item call CBA_fnc_getItemConfig) param [1, configNull]) diff --git a/addons/common/functions/fnc_getConfigTypeObject.sqf b/addons/common/functions/fnc_getConfigTypeObject.sqf deleted file mode 100644 index 92a6d43a42..0000000000 --- a/addons/common/functions/fnc_getConfigTypeObject.sqf +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Author: commy2 - * Determins type of object. Can be CfgVehicles or CfgAmmo. - * - * Arguments: - * 0: Object classname - * - * Return Value: - * Config category ("CfgWeapons", "Cfgmagazines", "CfgGlasses", "") - * - * Public: Yes - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_getConfigTypeObject","3.8.0","CBA_fnc_getObjectConfig"); - -configName (configHierarchy (_item call CBA_fnc_getObjectConfig) param [1, configNull]) diff --git a/addons/common/functions/fnc_globalEvent.sqf b/addons/common/functions/fnc_globalEvent.sqf deleted file mode 100644 index b58a0f092c..0000000000 --- a/addons/common/functions/fnc_globalEvent.sqf +++ /dev/null @@ -1,14 +0,0 @@ -#define DEBUG_MODE_FULL -#include "script_component.hpp" - -params ["_eventName", "_eventArgs"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName, _eventArgs] call CBA_fnc_globalEvent; - -ACE_DEPRECATED("ace_common_fnc_globalEvent","3.8.0","CBA_fnc_globalEvent"); diff --git a/addons/common/functions/fnc_handleScrollWheel.sqf b/addons/common/functions/fnc_handleScrollWheel.sqf deleted file mode 100644 index 037b7b640b..0000000000 --- a/addons/common/functions/fnc_handleScrollWheel.sqf +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Author: commy2 - * Handles MouseZChanged event. - * - * Arguments: - * None - * - * Return Value: - * None - * - * Public : No - */ -#include "script_component.hpp" - -{ - [_this select 1] call _x; - false -} count ((missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]) select 2); - -nil diff --git a/addons/common/functions/fnc_hashCreate.sqf b/addons/common/functions/fnc_hashCreate.sqf deleted file mode 100644 index c3ff836573..0000000000 --- a/addons/common/functions/fnc_hashCreate.sqf +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Author: ? - * Returns an empty hash structure - * - * Arguments: - * None - * - * Return Value: - * Empty Hash Structure - * - * Public: No - */ -#include "script_component.hpp" - -ACE_DEPRECATED(QFUNC(hashCreate),"3.8.0","CBA_fnc_hashCreate"); - -[[],[]] diff --git a/addons/common/functions/fnc_hashGet.sqf b/addons/common/functions/fnc_hashGet.sqf deleted file mode 100644 index e7bee04eec..0000000000 --- a/addons/common/functions/fnc_hashGet.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Author: ? - * Returns value attached to key in given hash. - * - * Arguments: - * 0: Hash - * 1: Key - * - * Return Value: - * Value - * - * Public: No - */ -#include "script_component.hpp" - -ACE_DEPRECATED(QFUNC(hashGet),"3.8.0","CBA_fnc_hashGet"); - -params ["_hash", "_key"]; - -ERRORDATA(2); -private _val = nil; -try { - if(VALIDHASH(_hash)) then { - private _index = (_hash select 0) find _key; - if(_index != -1) then { - _val = (_hash select 1) select _index; - if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { - _val = nil; - }; - }; - } else { - ERROR("Input hash is not valid"); - }; -} catch { - HANDLECATCH; -}; - -if (isNil "_val") exitWith { nil }; - -_val diff --git a/addons/common/functions/fnc_hashHasKey.sqf b/addons/common/functions/fnc_hashHasKey.sqf deleted file mode 100644 index 65c1517e4f..0000000000 --- a/addons/common/functions/fnc_hashHasKey.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: ? - * ? - * - * Arguments: - * ? - * - * Return Value: - * ? - * - * Public: ? - */ -#include "script_component.hpp" - -ACE_DEPRECATED(QFUNC(hashHasKey),"3.8.0","CBA_fnc_hashHasKey"); - -// diag_log text format["%1 HASH HAS KEY: %2", diag_tickTime, _this]; - -params ["_hash", "_key"]; - -ERRORDATA(2); -private _val = false; -try { - if(VALIDHASH(_hash)) then { - private _index = (_hash select 0) find _key; - if(_index != -1) then { - _val = true; - }; - } else { - ERROR("Input hash is not valid"); - }; -} catch { - HANDLECATCH; -}; -_val diff --git a/addons/common/functions/fnc_hashRem.sqf b/addons/common/functions/fnc_hashRem.sqf deleted file mode 100644 index a09f87ee2e..0000000000 --- a/addons/common/functions/fnc_hashRem.sqf +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Author: ? - * ? - * - * Arguments: - * ? - * - * Return Value: - * ? - * - * Public: ? - */ -#include "script_component.hpp" - -ACE_DEPRECATED(QFUNC(hashRem),"3.8.0","CBA_fnc_hashRem"); - -params ["_hash", "_key"]; - -ERRORDATA(2); -private _val = nil; -try { - if(VALIDHASH(_hash)) then { - private _index = (_hash select 0) find _key; - if(_index != -1) then { - (_hash select 1) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; - // is this hash is not part of a hash list? - // if it is we need to leave the keys intact. - if((count _hash) == 2) then { - // if this is a standalone hash then we can clean it up - (_hash select 0) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; - _hash set[0, ((_hash select 0) - ["ACREHASHREMOVEDONOTUSETHISVAL"])]; - _hash set[1, ((_hash select 1) - ["ACREHASHREMOVEDONOTUSETHISVAL"])]; - }; - }; - } else { - ERROR("Input hash is not valid"); - }; -} catch { - HANDLECATCH; -}; -true diff --git a/addons/common/functions/fnc_hashSet.sqf b/addons/common/functions/fnc_hashSet.sqf deleted file mode 100644 index 8344b50f92..0000000000 --- a/addons/common/functions/fnc_hashSet.sqf +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Author: ? - * ? - * - * Arguments: - * ? - * - * Return Value: - * ? - * - * Public: ? - */ -#include "script_component.hpp" - -ACE_DEPRECATED(QFUNC(hashSet),"3.8.0","CBA_fnc_hashSet"); - -// diag_log text format["%1 HASH SET: %2", diag_tickTime, _this]; - -params ["_hash", "_key", "_val"]; - -ERRORDATA(3); -try { - if(VALIDHASH(_hash)) then { - private _index = (_hash select 0) find _key; - if(_index == -1) then { - _index = (_hash select 0) find "ACREHASHREMOVEDONOTUSETHISVAL"; - if(_index == -1) then { - _index = (count (_hash select 0)); - }; - (_hash select 0) set[_index, _key]; - }; - (_hash select 1) set[_index, _val]; - } else { - ERROR("Input hash is not valid"); - }; -} catch { - HANDLECATCH; -}; diff --git a/addons/common/functions/fnc_insertionSort.sqf b/addons/common/functions/fnc_insertionSort.sqf deleted file mode 100644 index 1b664e1fd6..0000000000 --- a/addons/common/functions/fnc_insertionSort.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: Ruthberg - * Sorts an array of numbers - * - * Arguments: - * 0: array - * 1: ascending (optional) - * - * Return Value: - * sortedArray (ARRAY) - * - * Public: No - */ -#include "script_component.hpp" - -ACE_DEPRECATED(QFUNC(insertionSort),"3.8.0","sort"); - -params [["_list", [], [[]]], ["_ascending", true, [false]]]; - -_list = + _list; // copy array to not alter the original one -_list sort _ascending; -_list diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf deleted file mode 100644 index fb473b75b8..0000000000 --- a/addons/common/functions/fnc_localEvent.sqf +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -params ["_eventName", "_eventArgs"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName, _eventArgs] call CBA_fnc_localEvent; - -ACE_DEPRECATED("ace_common_fnc_localEvent","3.8.0","CBA_fnc_localEvent"); diff --git a/addons/common/functions/fnc_objectEvent.sqf b/addons/common/functions/fnc_objectEvent.sqf deleted file mode 100644 index 878b0d80d1..0000000000 --- a/addons/common/functions/fnc_objectEvent.sqf +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -params ["_eventName", "_eventTargets", "_eventArgs"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName, _eventArgs, _eventTargets] call CBA_fnc_targetEvent; - -ACE_DEPRECATED("ace_common_fnc_objectEvent","3.8.0","CBA_fnc_targetEvent"); diff --git a/addons/common/functions/fnc_removeAllEventHandlers.sqf b/addons/common/functions/fnc_removeAllEventHandlers.sqf deleted file mode 100644 index 958923f808..0000000000 --- a/addons/common/functions/fnc_removeAllEventHandlers.sqf +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -params ["_eventName"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -CBA_events_eventNamespace setVariable [_eventName,nil]; -CBA_events_eventHashes setVariable [_eventName,nil]; - -ACE_DEPRECATED("ace_common_fnc_removeAllEventHandlers","3.8.0","N/A (remove events individually w/ CBA_fnc_removeEventHandler)"); diff --git a/addons/common/functions/fnc_removeBinocularMagazine.sqf b/addons/common/functions/fnc_removeBinocularMagazine.sqf deleted file mode 100644 index 4f1e0fcdd6..0000000000 --- a/addons/common/functions/fnc_removeBinocularMagazine.sqf +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Author: commy2 - * Removes the magazine of the units rangefinder. - * - * Arguments: - * 0: Unit - * - * Return Value: - * None - * - * Example: - * player call ace_common_fnc_removeBinocularMagazine - * - * Public: Yes - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_removeBinocularMagazine","3.8.0","CBA_fnc_removeBinocularMagazine"); - -_this call CBA_fnc_removeBinocularMagazine diff --git a/addons/common/functions/fnc_removeEventHandler.sqf b/addons/common/functions/fnc_removeEventHandler.sqf deleted file mode 100644 index ff89571a6e..0000000000 --- a/addons/common/functions/fnc_removeEventHandler.sqf +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -params ["_eventName", "_eventCode"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName, _eventCode] call CBA_fnc_removeEventHandler; - -ACE_DEPRECATED("ace_common_fnc_removeEventHandler","3.8.0","CBA_fnc_removeEventHandler"); diff --git a/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf b/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf deleted file mode 100644 index d7a8ae28cc..0000000000 --- a/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Author: commy2 - * Remove a scroll wheel event handler. - * - * Arguments: - * 0: ID of the event handler - * - * Return Value: - * None - * - * Public: Yes - */ -#include "script_component.hpp" - -params ["_id"]; - -private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]; - -_actionsVar params ["_currentId", "_actionIDs", "_actions"]; - -_id = _actionIDs find _id; - -if (_id == -1) exitWith {}; - -_actionIDs set [_id, -1]; -_actionIDs = _actionIDs - [-1]; - -_actions set [_id, []];//{} -_actions = _actions - [[]];//[{}] - -missionNamespace setVariable ["ACE_EventHandler_ScrollWheel", [_currentId, _actionIDs, _actions]]; diff --git a/addons/common/functions/fnc_serverEvent.sqf b/addons/common/functions/fnc_serverEvent.sqf deleted file mode 100644 index 5b116e9661..0000000000 --- a/addons/common/functions/fnc_serverEvent.sqf +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -params ["_eventName", "_eventArgs"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName, _eventArgs] call CBA_fnc_serverEvent; - -ACE_DEPRECATED("ace_common_fnc_serverEvent","3.8.0","CBA_fnc_serverEvent"); diff --git a/addons/common/functions/fnc_targetEvent.sqf b/addons/common/functions/fnc_targetEvent.sqf deleted file mode 100644 index 8cce931547..0000000000 --- a/addons/common/functions/fnc_targetEvent.sqf +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -params ["_eventName", "_eventTargets", "_eventArgs"]; - -private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); -if (_newName != "") then { - TRACE_2("Switching Names",_eventName,_newName); - _eventName = _newName; -}; - -[_eventName,_eventArgs,_eventTargets] call CBA_fnc_targetEvent; - -ACE_DEPRECATED("ace_common_fnc_targetEvent","3.8.0","CBA_fnc_targetEvent"); diff --git a/addons/common/functions/fnc_waitAndExecute.sqf b/addons/common/functions/fnc_waitAndExecute.sqf deleted file mode 100644 index 1ac0d3f54d..0000000000 --- a/addons/common/functions/fnc_waitAndExecute.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: esteldunedain - * Executes a code once with a given game time delay, using a PFH - * - * Arguments: - * 0: Code to execute - * 1: Parameters to run the code with - * 2: Delay in seconds before executing the code - * - * Return Value: - * None - * - * Example: - * [{(_this select 0) setVelocity [0,0,200];}, [player], 10] call ace_common_fnc_waitAndExecute - * - * Public: Yes - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_waitAndExecute","3.8.0","CBA_fnc_waitAndExecute"); - -_this call CBA_fnc_waitAndExecute; diff --git a/addons/common/functions/fnc_waitUntilAndExecute.sqf b/addons/common/functions/fnc_waitUntilAndExecute.sqf deleted file mode 100644 index 52c596c70a..0000000000 --- a/addons/common/functions/fnc_waitUntilAndExecute.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: joko // Jonas - * Executes a code once with after the Condition is True, using a PFH - * - * Arguments: - * 0: Condition - * 1: Code to execute - * 2: Parameters to run the code with - * - * Return Value: - * None - * - * Example: - * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitUntilAndExecute - * - * Public: No - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_common_fnc_waitUntilAndExecute","3.8.0","CBA_fnc_waitUntilAndExecute"); - -_this call CBA_fnc_waitUntilAndExecute; - -nil diff --git a/addons/common/init_handleScrollWheel.sqf b/addons/common/init_handleScrollWheel.sqf deleted file mode 100644 index 0acb84a5f2..0000000000 --- a/addons/common/init_handleScrollWheel.sqf +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Author: commy2 - * Initializes the MouseZChanged eventhandler. - * - * Arguments: - * None - * - * Return Value: - * None - * - * Public : No - */ -#include "script_component.hpp" - -disableSerialization; - -params ["_display"]; - -_display displayAddEventHandler ["MouseZChanged", QUOTE(_this call FUNC(handleScrollWheel))]; diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index 326c1cd0ea..438822a93b 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -16,7 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index f84f4aeb38..b923c3ea94 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -19,7 +19,3 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "Dialog.hpp" #include "RscTitles.hpp" - -class ACE_newEvents { - RangerfinderData = QEGVAR(vector,rangefinderData); -}; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index d8f249a9c6..e38f4346ab 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -19,8 +19,3 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "gui_disarm.hpp" - -class ACE_newEvents { - DisarmDebugCallback = QGVAR(debugCallback); - DisarmDropItems = QGVAR(dropItems); -}; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 9c323af6c1..71952c2eec 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -45,8 +45,3 @@ class CfgMineTriggers { mineTriggerRange = 1; }; }; - -class ACE_newEvents { - clientRequestsOrientations = QGVAR(sendOrientations); - serverSendsOrientations = QGVAR(orientationsSent); -}; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 8341caa9f4..9102b7fbf0 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -270,8 +270,3 @@ class CfgCloudlets { destroyOnWaterSurface = 1; }; }; - -class ACE_newEvents { - GlassesChanged = "ace_glassesChanged"; - GlassesCracked = "ace_glassesCracked"; -}; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index a06d5f74d8..c836b613e1 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -28,7 +28,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "Effects.hpp" - -class ACE_newEvents { - flashbangExplosion = "ace_flashbangExploded"; -}; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 95561f4579..687d644924 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -25,9 +25,3 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_break_line", "ace_parse_imagepath"}; }; - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; - clearConditionCaches = QGVAR(clearConditionCaches); - interactMenuClosed = "ace_interactMenuClosed"; -}; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index c6aff730cf..77c2b408af 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -19,12 +19,3 @@ class CfgPatches { #include "RscTitles.hpp" #include "ACE_Settings.hpp" #include "ACE_ZeusActions.hpp" - -class ACE_newEvents { - getDown = QGVAR(getDown); - pardon = QGVAR(pardon); - tapShoulder = QGVAR(tapShoulder); - sendAway = QGVAR(sendAway); - lampTurnOff = QGVAR(setLampOff); - lampTurnOn = QGVAR(setLampOn); -}; diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp index d989c4f85b..fd51886dc5 100644 --- a/addons/laser/config.cpp +++ b/addons/laser/config.cpp @@ -17,8 +17,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "RscInGameUI.hpp" - -class ACE_newEvents { - laser_laserOff = "ace_laserOff"; - laser_laserOn = "ace_laserOn"; -}; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index add36aeff5..4058157660 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -19,8 +19,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgJointRails.hpp" - -class ACE_newEvents { - GunLightOff = "ace_gunLightOff"; - SetHandcuffed = QEGVAR(captives,setHandcuffed); -}; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index 25c58f1604..e1bdf84e47 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgWeapons.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; \ No newline at end of file diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index 5d33c073e1..c3ca72b454 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -19,7 +19,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "gui.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - RangerfinderData = QEGVAR(vector,rangefinderData); -}; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index a63f7086f9..f387632446 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -34,7 +34,3 @@ class RscStructuredText; #include "RscInGameUI.hpp" #include "RscRangeTable.hpp" - -class ACE_newEvents { - initMortar = "ace_initMortar"; -}; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 8ef1ac2d51..bedd96fa30 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -52,10 +52,3 @@ class CfgGesturesMale { }; }; }; -class ACE_newEvents { - initiateSwapBarrelAssisted = QGVAR(initiateSwapBarrelAssisted); - showWeaponTemperature = QGVAR(showWeaponTemperature); - loadCoolestSpareBarrel = QGVAR(loadCoolestSpareBarrel); - sendSpareBarrelTemperatureHint = QGVAR(sendSpareBarrelTemperatureHint); - weaponJammed = "ace_weaponJammed"; -}; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 0aa455de7d..75b58d5988 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -16,7 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - overpressure = "ace_overpressure"; -}; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 9c66dd4828..21e28d35f5 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -20,9 +20,3 @@ class CfgPatches { #include "CfgActions.hpp" #include "ACE_Settings.hpp" #include "ACE_UI.hpp" - -class ACE_newEvents { - setAmmoSync = QGVAR(syncAmmo); - returnedAmmo = QGVAR(ammoReturned); - linkedAmmo = QGVAR(ammoLinked); -}; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 16ae8cb867..09f01e0594 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -18,7 +18,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - reloadLauncher = QGVAR(reloadLauncher); -}; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index 71a990ea73..a8904a0a0a 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -20,10 +20,3 @@ class CfgPatches { #include "CfgActions.hpp" #include "CfgVehicles.hpp" #include "CfgEden.hpp" - -class ACE_newEvents { - setWheelHitPointDamage = QGVAR(setWheelHitPointDamage); - setVehicleHitPointDamage = QGVAR(setVehicleHitPointDamage); - setVehicleDamage = QGVAR(setVehicleDamage); - AddCargoByClass = "ace_addCargo"; -}; diff --git a/addons/repair/functions/fnc_setHitPointDamage.sqf b/addons/repair/functions/fnc_setHitPointDamage.sqf index 01a29eb377..090a0e868f 100644 --- a/addons/repair/functions/fnc_setHitPointDamage.sqf +++ b/addons/repair/functions/fnc_setHitPointDamage.sqf @@ -26,12 +26,6 @@ private ["_damageNew", "_damageOld", "_hitPointDamageRepaired", "_hitPointDamage // can't execute all commands if the vehicle isn't local. exit here. if !(local _vehicle) exitWith {ACE_LOGERROR_1("Vehicle Not Local %1", _vehicle);}; -//Check for bad typeName (changed from orignal v3.3 that took string) -if (_hitPointIndex isEqualType "") then { - ACE_DEPRECATED("repair-setHitPointDamage (hit point name ","3.5.0","hit index "); - _hitPointIndex = _allHitPoints find _hitPointIndex; -}; - // get all hitpoints and selections and damages (getAllHitPointsDamage _vehicle) params [["_allHitPoints", []], ["_allHitPointsSelections", []], ["_allHitPointDamages", []]]; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index cd87087e20..79fbf69d74 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -19,8 +19,3 @@ class CfgPatches { #include "CfgVehicleClasses.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - rallypointMoved = "ace_rallypointMoved"; - killedByFriendly = "ace_killedByFriendly"; -}; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 9c28b948ac..80e3f71808 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 785cb75aeb..a19334946c 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -18,7 +18,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgMoves.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - SetHandcuffed = QEGVAR(captives,setHandcuffed); -}; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index cadde0db9d..92736edb48 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -25,8 +25,3 @@ class CfgRespawnTemplates { onPlayerRespawn = QFUNC(respawnTemplate); }; }; - -class ACE_newEvents { - spectatorStaged = "ace_spectatorStaged"; - spectatorSet = "ace_spectatorSet"; -}; \ No newline at end of file diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index eddca58449..def7b0ce96 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -16,7 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index e066bcafe5..6ec32da0a6 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -19,8 +19,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - createTag = QGVAR(createTag); - tagCreated = "ace_tagCreated"; -}; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index 2b4f3c9051..3f76f012ed 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 8251e0c469..8d068d2d9a 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - interactMenuOpened = "ace_interactMenuOpened"; -}; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index 2f2302d9af..cf6f235a5e 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -20,7 +20,3 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "RscInGameUI.hpp" - -class ACE_newEvents { - RangerfinderData = QGVAR(rangefinderData); -}; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 52299ca512..454fb4952a 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -20,8 +20,3 @@ class CfgPatches { #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - -class ACE_newEvents { - VehicleLock_SetVehicleLock = QGVAR(setVehicleLock); - VehicleLock_SetupCustomKey = QGVAR(setupCustomKey); -}; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 4c9a831fd0..ac7ac9832a 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -53,10 +53,3 @@ class ACE_Curator { #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" #include "ui\RscAttributes.hpp" - -class ACE_newEvents { - zeusUnitAssigned = QGVAR(zeusUnitAssigned); - SetSurrendered = QEGVAR(captives,setSurrendered); - SetHandcuffed = QEGVAR(captives,setHandcuffed); - AddCargoByClass = "ace_addCargo"; -}; From 7f07d4e4b8cf0de15fdb2aebde68837a25af3c0b Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 25 Sep 2016 09:45:55 +0200 Subject: [PATCH 25/26] fix broken parachutes, fix #4437 (#4462) --- addons/cargo/functions/fnc_paradropItem.sqf | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/cargo/functions/fnc_paradropItem.sqf b/addons/cargo/functions/fnc_paradropItem.sqf index 7631cdf21f..283d32345e 100644 --- a/addons/cargo/functions/fnc_paradropItem.sqf +++ b/addons/cargo/functions/fnc_paradropItem.sqf @@ -57,13 +57,16 @@ _newItem setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vectorDi if (isNull _item || {getPos _item select 2 < 1}) exitWith {}; - private _itemPosASL = getPosASL _item; - private _itemVelocity = velocity _item; private _parachute = createVehicle ["B_Parachute_02_F", [0,0,0], [], 0, "CAN_COLLIDE"]; - _item attachTo [_parachute, [0,0,0.2]]; - _parachute setPosASL _itemPosASL; - _parachute setVelocity _itemVelocity; + // cannot use setPos on parachutes without them closing down + _parachute attachTo [_item, [0,0,0]]; + detach _parachute; + + private _velocity = velocity _item; + + _item attachTo [_parachute, [0,0,-1]]; + _parachute setVelocity _velocity; private _light = "Chemlight_yellow" createVehicle [0,0,0]; _light attachTo [_item, [0,0,0]]; From 883006c420a42c1f5a7925e7c5886ad45b0e9a1e Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 25 Sep 2016 12:48:52 +0200 Subject: [PATCH 26/26] Create .gibot.yml --- .gibot.yml | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .gibot.yml diff --git a/.gibot.yml b/.gibot.yml new file mode 100644 index 0000000000..4b8dffb6f7 --- /dev/null +++ b/.gibot.yml @@ -0,0 +1,55 @@ +stages: + mark_for_closing: + days: 30 + labels: + - need more info + - invalid + - can't reproduce + - wontfix + - information required + exclude: + - marked for cleanup + comment: + - 'Hello @{author}! There has been no activity on this ticket for over a period of {days} days. I am automatically replying to let you know we will close this ticket within 1 week due to inactivity and consider this resolved.' + - 'If you believe this in error, please reply with the requested information.' + - 'Thank you. :robot:' + action: + close: false + comment: true + assign_label: + - marked for cleanup + clean_up: + days: 7 + labels: + - marked for cleanup + comment: + - 'Hello @{author}! We have detected no activity for {days} days on this ticket. We therefore assume that the original reporter has lost interest or the issue has been resolved.' + - 'Since we have marked this ticket for deletion, we will be closing it.' + - 'If this has been closed in error, please create a comment below and we can reopen this issue. Note that you may need to provide additional information that was requested.' + - 'Thank you. :robot:' + action: + close: true + comment: true + assign_label: + - closed by bot + remove_label: + - marked for cleanup + remind_about_old_ticket: + days: 130 + labels: + - bug + - critical bug + exclude: + - need more info + - invalid + - can't reproduce + - wontfix + - information required + - marked for cleanup + - inactive + comment: + - 'Hello @acemod/maintainers. This ticket has been open for over {days} days without any activity.' + action: + comment: true + assign_label: + - inactive