From 79115a8400d538d7eca2542db31727be49691677 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:34:58 +0200 Subject: [PATCH 01/41] Add overpressure to vehicle missile/rocket launchers --- addons/overpressure/CfgWeapons.hpp | 45 +++++++++++++++++++ .../overpressure/functions/fnc_firedEHOP.sqf | 11 ++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index 7102e84d1b0..e6901768fe1 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -1,6 +1,8 @@ class CfgWeapons { + // Man-Portable launchers, rear-facing overpressure + class LauncherCore; class Launcher: LauncherCore { GVAR(priority) = 1; @@ -61,6 +63,49 @@ class CfgWeapons { GVAR(offset) = 0.9; }; + // Vehicle recoilless rifles and missile launchers, rear-facing overpressure + + class MissileLauncher; + class MissileLauncher: LauncherCore { + GVAR(priority) = 1; + GVAR(angle) = 60; + GVAR(range) = 10; + GVAR(damage) = 0.7; + GVAR(offset) = -0.8; + }; + + class missiles_titan_static; + class missiles_titan_static { + GVAR(angle) = 40; + GVAR(range) = 8; + GVAR(damage) = 0.5; + }; + + class EGVAR(javelin,Titan_Static): missiles_titan_static { + // Titan is a soft-launch launcher + GVAR(priority) = 1; + GVAR(angle) = 30; + GVAR(range) = 2; + GVAR(damage) = 0.5; + GVAR(offset) = -0.5; + }; + + class missiles_Vorona: MissileLauncher { + GVAR(angle) = 50; + GVAR(offset) = -0.5; + }; + + class RocketPods; + class RocketPods: LauncherCore { + GVAR(priority) = 1; + GVAR(angle) = 60; + GVAR(range) = 10; + GVAR(damage) = 0.7; + GVAR(offset) = -0.8; + }; + + // Vehicle cannons, forward-facing overpressure + class CannonCore; class cannon_120mm: CannonCore { GVAR(priority) = 1; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index e011098b59e..5bae876b0d0 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -21,7 +21,7 @@ TRACE_10("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_veh // Retrieve overpressure values private _opValues = [_weapon, _ammo, _magazine] call FUNC(getOverPressureValues); -_opValues params ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; +_opValues params ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage", "_offset"]; _dangerZoneRange = _dangerZoneRange * GVAR(overpressureDistanceCoefficient); TRACE_3("cache",_dangerZoneAngle,_dangerZoneRange,_dangerZoneDamage); @@ -32,6 +32,15 @@ if (_dangerZoneDamage <= 0) exitWith {}; private _position = getPosASL _projectile; private _direction = vectorDir _projectile; +// Offset overpressure origin position along the barrel +if (_offset != 0) then { + _position = _position vectorAdd (_direction vectorMultiply _offset); + // A negative offset will invert the direction, for vehicle weapons like recoilless rifles and missile launchers + if (_offset < 0) then { + _direction = _direction vectorMultiply -1; + }; +}; + // Damage to others private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; From b26e0977118dfb7ae6b21a5a104121fad518f273 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:35:49 +0200 Subject: [PATCH 02/41] Tweak M47 Dragon Overpressure --- addons/dragon/CfgWeapons.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/dragon/CfgWeapons.hpp b/addons/dragon/CfgWeapons.hpp index 9cb58e2c1f4..9f59765f47e 100644 --- a/addons/dragon/CfgWeapons.hpp +++ b/addons/dragon/CfgWeapons.hpp @@ -33,9 +33,10 @@ class CfgWeapons { }; class GVAR(superStatic): missiles_titan_static { - EGVAR(overpressure,angle) = 90; - EGVAR(overpressure,range) = 30; + EGVAR(overpressure,angle) = 60; + EGVAR(overpressure,range) = 10; EGVAR(overpressure,damage) = 0.85; + EGVAR(overpressure,offset) = -0.4; initSpeed = 120; From f58d514be4fbeddafebacbab175700c517ec43bb Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:07:41 +0200 Subject: [PATCH 03/41] Isolate Compat RHS_AFRF Overpressure --- addons/compat_rhs_afrf3/CfgWeapons.hpp | 32 --------------- .../CfgWeapons.hpp | 41 +++++++++++++++++++ .../compat_rhs_afrf3_overpressure/config.cpp | 18 ++++++++ .../script_component.hpp | 3 ++ 4 files changed, 62 insertions(+), 32 deletions(-) create mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp create mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp create mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp diff --git a/addons/compat_rhs_afrf3/CfgWeapons.hpp b/addons/compat_rhs_afrf3/CfgWeapons.hpp index a25d1f7cd05..ac3ea8b3027 100644 --- a/addons/compat_rhs_afrf3/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/CfgWeapons.hpp @@ -85,27 +85,6 @@ class CfgWeapons { class Launcher_Base_F; class rhs_weap_rpg7: Launcher_Base_F { EGVAR(reloadlaunchers,enabled) = 1; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,offset) = 0.9; - }; - - class rhs_weap_rpg26: Launcher_Base_F { - EGVAR(overpressure,range) = 10; - EGVAR(overpressure,angle) = 50; - EGVAR(overpressure,offset) = 0.65; - }; - - class rhs_weap_rpg18: rhs_weap_rpg26 { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,offset) = 1; - }; - - class rhs_weap_strela; - class rhs_weap_igla: rhs_weap_strela { - EGVAR(overpressure,range) = 6; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = 1.65; }; class rhs_zsh7a; @@ -121,17 +100,6 @@ class CfgWeapons { ACE_Protection = 1; }; - class rhs_weap_d81; - class rhs_weap_2a70: rhs_weap_d81 { // "Low pressure" 100mm cannon - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,damage) = 0.5; - }; - class cannon_120mm; - class rhs_weap_2a28_base: cannon_120mm { // "Low pressure" - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,damage) = 0.5; - }; - class rhs_uniform_flora; class rhs_uniform_df15: rhs_uniform_flora { ACE_GForceCoef = 0.8; diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp new file mode 100644 index 00000000000..343a119aec1 --- /dev/null +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -0,0 +1,41 @@ +class CfgWeapons { + // Man-Portable launchers, rear-facing overpressure + + class Launcher_Base_F; + class rhs_weap_rpg7: Launcher_Base_F { + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,offset) = 0.9; + }; + + class rhs_weap_rpg26: Launcher_Base_F { + EGVAR(overpressure,range) = 10; + EGVAR(overpressure,angle) = 50; + EGVAR(overpressure,offset) = 0.65; + }; + + class rhs_weap_rpg18: rhs_weap_rpg26 { + EGVAR(overpressure,angle) = 45; + EGVAR(overpressure,offset) = 1; + }; + + class rhs_weap_strela; + class rhs_weap_igla: rhs_weap_strela { + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = 1.65; + }; + + // Vehicle cannons, forward-facing overpressure + + class rhs_weap_d81; + class rhs_weap_2a70: rhs_weap_d81 { // "Low pressure" 100mm cannon + EGVAR(overpressure,range) = 15; + EGVAR(overpressure,damage) = 0.5; + }; + class cannon_120mm; + class rhs_weap_2a28_base: cannon_120mm { // "Low pressure" + EGVAR(overpressure,range) = 15; + EGVAR(overpressure,damage) = 0.5; + }; +}; diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp new file mode 100644 index 00000000000..64301c46b3c --- /dev/null +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp @@ -0,0 +1,18 @@ +#include "script_component.hpp" + +class CfgPatches { + class SUBADDON { + addonRootClass = QUOTE(COMPONENT); + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "rhs_main_loadorder", + "ace_overpressure" + }; + skipWhenMissingDependencies = 1; + VERSION_CONFIG; + }; +}; + +#include "CfgWeapons.hpp" diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp new file mode 100644 index 00000000000..0a56058711a --- /dev/null +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp @@ -0,0 +1,3 @@ +#define SUBCOMPONENT overpressure +#define SUBCOMPONENT_BEAUTIFIED Overpressure +#include "..\script_component.hpp" From 4a9acf8554aa1017e13159e386f7e942a7a35b5e Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:08:36 +0200 Subject: [PATCH 04/41] Soft-Launch for RHS_AFRF 9K38 Igla Turret --- .../compat_rhs_afrf3_overpressure/CfgWeapons.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp index 343a119aec1..132a891d31b 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -26,6 +26,16 @@ class CfgWeapons { EGVAR(overpressure,offset) = 1.65; }; + // Vehicle recoilless rifles and missile launchers, rear-facing overpressure + + class missiles_titan_static; + class rhs_Igla_AA_pod_Base: missiles_titan_static { // Soft-launched Igla missile + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = -1.8; + }; + // Vehicle cannons, forward-facing overpressure class rhs_weap_d81; From b75a3daf70e3ca0ebd6f9ee5a9bd4f40257e524a Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:14:46 +0200 Subject: [PATCH 05/41] Correct RHS_AFRF SPG-9 Offset --- .../compat_rhs_afrf3_overpressure/CfgWeapons.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp index 132a891d31b..b2d48f3a0a7 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -36,6 +36,11 @@ class CfgWeapons { EGVAR(overpressure,offset) = -1.8; }; + class RocketPods; + class rhs_weap_SPG9: RocketPods { + EGVAR(overpressure,offset) = -1.2; + }; + // Vehicle cannons, forward-facing overpressure class rhs_weap_d81; From 318c5c14d87359e50bcca7bbd71316f8d0c8d023 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:14:51 +0200 Subject: [PATCH 06/41] Isolate Compat RHS_USAF Overpressure --- addons/compat_rhs_usf3/CfgWeapons.hpp | 21 ------------ .../CfgWeapons.hpp | 32 +++++++++++++++++++ .../compat_rhs_usf3_overpressure/config.cpp | 18 +++++++++++ .../script_component.hpp | 3 ++ 4 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp create mode 100644 addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp create mode 100644 addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp diff --git a/addons/compat_rhs_usf3/CfgWeapons.hpp b/addons/compat_rhs_usf3/CfgWeapons.hpp index 50b09c760f9..f18e4651aab 100644 --- a/addons/compat_rhs_usf3/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/CfgWeapons.hpp @@ -175,35 +175,14 @@ class CfgWeapons { }; // RHS launchers - class launch_O_Titan_F; - - class rhs_weap_fim92: launch_O_Titan_F { - EGVAR(overpressure,range) = 6; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = 1.45; - }; - class Launcher_Base_F; class rhs_weap_smaw: Launcher_Base_F { EGVAR(reloadlaunchers,enabled) = 1; - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,offset) = 1.3; }; class rhs_weap_maaws: Launcher_Base_F { EGVAR(reloadlaunchers,enabled) = 1; - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,angle) = 70; - EGVAR(overpressure,damage) = 0.75; - EGVAR(overpressure,offset) = 0.95; - }; - - class rhs_weap_M136: Launcher_Base_F { - EGVAR(overpressure,range) = 10; - EGVAR(overpressure,angle) = 50; - EGVAR(overpressure,offset) = 0.9; }; class rhsusf_hgu56p; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp new file mode 100644 index 00000000000..7dd4d0ddf39 --- /dev/null +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -0,0 +1,32 @@ +class CfgWeapons { + // Man-Portable launchers, rear-facing overpressure + + class launch_O_Titan_F; + + class rhs_weap_fim92: launch_O_Titan_F { + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = 1.45; + }; + + class Launcher_Base_F; + + class rhs_weap_smaw: Launcher_Base_F { + EGVAR(overpressure,angle) = 45; + EGVAR(overpressure,offset) = 1.3; + }; + + class rhs_weap_maaws: Launcher_Base_F { + EGVAR(overpressure,range) = 15; + EGVAR(overpressure,angle) = 70; + EGVAR(overpressure,damage) = 0.75; + EGVAR(overpressure,offset) = 0.95; + }; + + class rhs_weap_M136: Launcher_Base_F { + EGVAR(overpressure,range) = 10; + EGVAR(overpressure,angle) = 50; + EGVAR(overpressure,offset) = 0.9; + }; +}; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp new file mode 100644 index 00000000000..04e0542e893 --- /dev/null +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp @@ -0,0 +1,18 @@ +#include "script_component.hpp" + +class CfgPatches { + class SUBADDON { + addonRootClass = QUOTE(COMPONENT); + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "rhsusf_main_loadorder", + "ace_overpressure" + }; + skipWhenMissingDependencies = 1; + VERSION_CONFIG; + }; +}; + +#include "CfgWeapons.hpp" diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp new file mode 100644 index 00000000000..0a56058711a --- /dev/null +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp @@ -0,0 +1,3 @@ +#define SUBCOMPONENT overpressure +#define SUBCOMPONENT_BEAUTIFIED Overpressure +#include "..\script_component.hpp" From 801bd444648be0123f969722f9b169d1dabf8552 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:22:20 +0200 Subject: [PATCH 07/41] Soft-Launch for RHS_USAF Stinger Turret --- .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index 7dd4d0ddf39..6ed693ad4dc 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -29,4 +29,14 @@ class CfgWeapons { EGVAR(overpressure,angle) = 50; EGVAR(overpressure,offset) = 0.9; }; + + // Missile launchers, rear-facing overpressure + + class rhs_weap_TOW_Launcher; + class Rhs_weap_stinger_Launcher_static: rhs_weap_TOW_Launcher { + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = -1.2; + }; }; From 3f571a449781f7fe6f2cb7030ac52801360439b2 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:27:52 +0200 Subject: [PATCH 08/41] Soft-Launch for RHS_USAF TOW --- .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index 6ed693ad4dc..056cac0c416 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -39,4 +39,12 @@ class CfgWeapons { EGVAR(overpressure,damage) = 0.6; EGVAR(overpressure,offset) = -1.2; }; + + class missiles_titan; + class Rhs_weap_TOW_Launcher_static: missiles_titan { + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,range) = 4; + EGVAR(overpressure,damage) = 0.7; + EGVAR(overpressure,offset) = -0.8; + }; }; From 75e4f6ba8592084ea7c3f56cc3d7a62069de1829 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:35:25 +0200 Subject: [PATCH 09/41] Correct Vanilla AT Gun Offset --- addons/overpressure/CfgWeapons.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index e6901768fe1..f7e68466d16 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -95,6 +95,10 @@ class CfgWeapons { GVAR(offset) = -0.5; }; + class launcher_SPG9: MissileLauncher { + GVAR(offset) = -1.25; + }; + class RocketPods; class RocketPods: LauncherCore { GVAR(priority) = 1; From dfe8fa794a26e25f9340a712bf99871e3f4f73ed Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:07:17 +0200 Subject: [PATCH 10/41] Fix duplicate class definition --- addons/overpressure/CfgWeapons.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index f7e68466d16..32e2f5cdeda 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -65,7 +65,6 @@ class CfgWeapons { // Vehicle recoilless rifles and missile launchers, rear-facing overpressure - class MissileLauncher; class MissileLauncher: LauncherCore { GVAR(priority) = 1; GVAR(angle) = 60; @@ -74,7 +73,6 @@ class CfgWeapons { GVAR(offset) = -0.8; }; - class missiles_titan_static; class missiles_titan_static { GVAR(angle) = 40; GVAR(range) = 8; @@ -99,7 +97,6 @@ class CfgWeapons { GVAR(offset) = -1.25; }; - class RocketPods; class RocketPods: LauncherCore { GVAR(priority) = 1; GVAR(angle) = 60; From dea6edf40536e23472a17c487f2afefd064e61f0 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 29 Aug 2024 13:13:08 +0200 Subject: [PATCH 11/41] Update Documentation --- docs/wiki/feature/overpressure.md | 5 +++- docs/wiki/framework/overpressure-framework.md | 27 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/docs/wiki/feature/overpressure.md b/docs/wiki/feature/overpressure.md index e9c8ab15c68..c10de2fa2d3 100644 --- a/docs/wiki/feature/overpressure.md +++ b/docs/wiki/feature/overpressure.md @@ -16,4 +16,7 @@ version: ## 1. Overview ### 1.1 Overpressure -Adds backblast to AT launchers and overpressure zones to tank cannons, don't stay behind a firing RPG or it'll hurt. +Adds backblast to Man-Portable AT/AA launchers, static/vehicle-mounted Missile launchers and Recoilless Guns. +Tank and Artillery cannons also have large overpressure zones that can cause injury to dismounted personnel. + +Don't stand behind a firing RPG or it'll hurt! diff --git a/docs/wiki/framework/overpressure-framework.md b/docs/wiki/framework/overpressure-framework.md index 243157c186b..2c7f95ab896 100644 --- a/docs/wiki/framework/overpressure-framework.md +++ b/docs/wiki/framework/overpressure-framework.md @@ -14,33 +14,46 @@ version: ## 1. Config Values -### 1.1 Launchers +### 1.1 Man-Portable Launchers ```cpp class CfgWeapons { class MyLauncher { - ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher) - ace_overpressure_range = 15; // Range in meters in which the damage is applied + ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher towards the side) + ace_overpressure_range = 10; // Range in meters in which the damage is applied ace_overpressure_damage = 0.7; // Damage multiplier - ace_overpressure_offset = 1; // Offset from the projectile, where the backblast originates + ace_overpressure_offset = 1; // Offset from the projectile origin backwards, to where the backblast should originate (backblast is always directed backwards, regardless of the number's sign) }; }; ``` -### 1.2 Cannons +### 1.2 Vehicle-mounted/Static Cannons, forward-facing overpressure ```cpp class CfgWeapons { class MyBananaCannon { - ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon) + ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon towards the side) ace_overpressure_range = 50; // Range in meters in which the damage is applied ace_overpressure_damage = 0.85; // Damage multiplier + ace_overpressure_offset = 1; // Offset from the projectile origin forward, to where the overpressure should originate (positive number to direct the overpressure forward) }; }; ``` -- You can note that the angle range and damage values are higher, that's because this is a cannon and the backblast area is bigger. +- You can note that the angle, range and damage values are higher, that's because this is a cannon and the overpressure area is much larger. + +### 1.3 Vehicle-mounted/Static Missile launchers and Recoilless Guns, rear-facing overpressure +```cpp +class CfgWeapons { + class MyStaticATGM { + ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher towards the side) + ace_overpressure_range = 15; // Range in meters in which the damage is applied + ace_overpressure_damage = 0.8; // Damage multiplier + ace_overpressure_offset = -1; // Offset from the projectile origin backwards, to where the backblast should originate (negative number to direct the overpressure backwards) + }; +}; +``` ## 2. Events From 0acf42372a7245cb046fbfc6fcb09f19c74301da Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 13:08:12 +0200 Subject: [PATCH 12/41] Fix inheritance --- .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 4 ++-- addons/overpressure/CfgWeapons.hpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index 056cac0c416..ee523d59830 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -32,8 +32,8 @@ class CfgWeapons { // Missile launchers, rear-facing overpressure - class rhs_weap_TOW_Launcher; - class Rhs_weap_stinger_Launcher_static: rhs_weap_TOW_Launcher { + class rhs_weap_stinger_Launcher; + class rhs_weap_stinger_Launcher_static: rhs_weap_stinger_Launcher { EGVAR(overpressure,range) = 6; EGVAR(overpressure,angle) = 40; EGVAR(overpressure,damage) = 0.6; diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index 32e2f5cdeda..7603ed9bf5b 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -73,7 +73,8 @@ class CfgWeapons { GVAR(offset) = -0.8; }; - class missiles_titan_static { + class missiles_titan; + class missiles_titan_static: missiles_titan { GVAR(angle) = 40; GVAR(range) = 8; GVAR(damage) = 0.5; From 8da11c489b8600a8d3ba6f2304388fb12cd183a5 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 13:09:09 +0200 Subject: [PATCH 13/41] Move Javelin overpressure to own component --- addons/javelin/CfgWeapons.hpp | 7 +++++++ addons/overpressure/CfgWeapons.hpp | 9 --------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp index e06c6aae0bc..cbd5661050f 100644 --- a/addons/javelin/CfgWeapons.hpp +++ b/addons/javelin/CfgWeapons.hpp @@ -19,6 +19,13 @@ class CfgWeapons { magazines[] = {"1Rnd_GAT_missiles"}; lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; + + // Titan is a soft-launch launcher + EGVAR(overpressure,priority) = 1; + EGVAR(overpressure,angle) = 30; + EGVAR(overpressure,range) = 2; + EGVAR(overpressure,damage) = 0.5; + EGVAR(overpressure,offset) = -0.5; }; class Launcher_Base_F; diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index 7603ed9bf5b..4d018abf60d 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -80,15 +80,6 @@ class CfgWeapons { GVAR(damage) = 0.5; }; - class EGVAR(javelin,Titan_Static): missiles_titan_static { - // Titan is a soft-launch launcher - GVAR(priority) = 1; - GVAR(angle) = 30; - GVAR(range) = 2; - GVAR(damage) = 0.5; - GVAR(offset) = -0.5; - }; - class missiles_Vorona: MissileLauncher { GVAR(angle) = 50; GVAR(offset) = -0.5; From 0e944ce2d3d399de52e9c823ee272878d5d45479 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 13:38:03 +0200 Subject: [PATCH 14/41] Rough working version of firedEHBB for Vehicles Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/overpressure/CfgWeapons.hpp | 2 ++ addons/overpressure/XEH_postInit.sqf | 8 +++++++- addons/overpressure/functions/fnc_firedEHBB.sqf | 14 +++++++------- addons/overpressure/functions/fnc_firedEHOP.sqf | 4 ++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index 4d018abf60d..514d761c49e 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -71,6 +71,7 @@ class CfgWeapons { GVAR(range) = 10; GVAR(damage) = 0.7; GVAR(offset) = -0.8; + GVAR(backblast) = 1; }; class missiles_titan; @@ -95,6 +96,7 @@ class CfgWeapons { GVAR(range) = 10; GVAR(damage) = 0.7; GVAR(offset) = -0.8; + GVAR(backblast) = 1; }; // Vehicle cannons, forward-facing overpressure diff --git a/addons/overpressure/XEH_postInit.sqf b/addons/overpressure/XEH_postInit.sqf index 4b014e89e24..525c0a436db 100644 --- a/addons/overpressure/XEH_postInit.sqf +++ b/addons/overpressure/XEH_postInit.sqf @@ -10,7 +10,13 @@ ["ace_firedPlayer", LINKFUNC(firedEHBB)] call CBA_fnc_addEventHandler; }; if (GVAR(overpressureDistanceCoefficient) > 0) then { - ["ace_firedPlayerVehicle", LINKFUNC(firedEHOP)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerVehicle", { + if (getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(backblast)) == 1) then { + _this call FUNC(firedEHBB); + } else { + _this call FUNC(firedEHOP); + }; + }] call CBA_fnc_addEventHandler; }; GVAR(cacheHash) = createHashMap; diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 98147fc7df3..1ce66e10366 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -29,24 +29,24 @@ TRACE_4("cache",_backblastAngle,_backblastRange,_backblastDamage,_offset); if (_backblastDamage <= 0) exitWith {}; private _direction = (vectorDir _projectile) vectorMultiply -1; -private _position = (getPosASL _projectile) vectorAdd (_direction vectorMultiply _offset); +private _position = (getPosASL _projectile) vectorAdd (_direction vectorMultiply (abs _offset)); // Temp fix before more extensive config changes // Damage to others private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; // Let each client handle their own affected units -["ace_overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; +["ace_overpressure", [_gunner, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; // Damage to the firer -private _distance = 2 * ([_position, _direction, _backblastRange, _unit] call FUNC(getDistance)); +private _distance = 2 * ([_position, _direction, _backblastRange, _gunner] call FUNC(getDistance)); TRACE_1("Distance",_distance); if (_distance < _backblastRange) then { - TRACE_2("",isDamageAllowed _unit,_unit getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); + TRACE_2("",isDamageAllowed _gunner,_gunner getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); // Skip damage if not allowed - if (isDamageAllowed _unit && {_unit getVariable [QEGVAR(medical,allowDamage), true]}) then { + if (isDamageAllowed _gunner && {_gunner getVariable [QEGVAR(medical,allowDamage), true]}) then { private _alpha = sqrt (1 - _distance / _backblastRange); private _beta = sqrt 0.5; @@ -56,9 +56,9 @@ if (_distance < _backblastRange) then { [_damage * 100] call BIS_fnc_bloodEffect; if (GETEGVAR(medical,enabled,false)) then { - [_unit, _damage, "body", "backblast", _unit] call EFUNC(medical,addDamageToUnit); + [_gunner, _damage, "body", "backblast", _gunner] call EFUNC(medical,addDamageToUnit); } else { - _unit setDamage (damage _unit + _damage); + _gunner setDamage (damage _gunner + _damage); }; }; }; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index e875dd97e4d..3706915e393 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -33,13 +33,13 @@ private _position = getPosASL _projectile; private _direction = vectorDir _projectile; // Offset overpressure origin position along the barrel -if (_offset != 0) then { +/*if (_offset != 0) then { _position = _position vectorAdd (_direction vectorMultiply _offset); // A negative offset will invert the direction, for vehicle weapons like recoilless rifles and missile launchers if (_offset < 0) then { _direction = _direction vectorMultiply -1; }; -}; +};*/ // Damage to others private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; From 8ce4e4747b397e3b7ae92c96da62c5ee024e1444 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 16:28:50 +0200 Subject: [PATCH 15/41] Use _unit in case _shooter would be undefined --- addons/overpressure/functions/fnc_firedEHBB.sqf | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 1ce66e10366..27a7e754c63 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -18,6 +18,8 @@ //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_gunner"]; TRACE_8("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_gunner); +private _shooter = if (vehicle _unit != _unit) then {_gunner} else {_unit}; + // Retrieve backblast values private _bbValues = [_weapon, _ammo, _magazine] call FUNC(getOverPressureValues); @@ -35,18 +37,18 @@ private _position = (getPosASL _projectile) vectorAdd (_direction vectorMultiply private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; // Let each client handle their own affected units -["ace_overpressure", [_gunner, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; +["ace_overpressure", [_shooter, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; // Damage to the firer -private _distance = 2 * ([_position, _direction, _backblastRange, _gunner] call FUNC(getDistance)); +private _distance = 2 * ([_position, _direction, _backblastRange, _shooter] call FUNC(getDistance)); TRACE_1("Distance",_distance); if (_distance < _backblastRange) then { - TRACE_2("",isDamageAllowed _gunner,_gunner getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); + TRACE_2("",isDamageAllowed _shooter,_shooter getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); // Skip damage if not allowed - if (isDamageAllowed _gunner && {_gunner getVariable [QEGVAR(medical,allowDamage), true]}) then { + if (isDamageAllowed _shooter && {_shooter getVariable [QEGVAR(medical,allowDamage), true]}) then { private _alpha = sqrt (1 - _distance / _backblastRange); private _beta = sqrt 0.5; @@ -56,9 +58,9 @@ if (_distance < _backblastRange) then { [_damage * 100] call BIS_fnc_bloodEffect; if (GETEGVAR(medical,enabled,false)) then { - [_gunner, _damage, "body", "backblast", _gunner] call EFUNC(medical,addDamageToUnit); + [_shooter, _damage, "body", "backblast", _shooter] call EFUNC(medical,addDamageToUnit); } else { - _gunner setDamage (damage _gunner + _damage); + _shooter setDamage (damage _shooter + _damage); }; }; }; From b668682cee002742e99ffcdde74c18545655e8cb Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 16:55:44 +0200 Subject: [PATCH 16/41] Fix undefined _gunner for FFV shots --- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 27a7e754c63..47deac4b7a5 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -18,7 +18,7 @@ //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_gunner"]; TRACE_8("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_gunner); -private _shooter = if (vehicle _unit != _unit) then {_gunner} else {_unit}; +private _shooter = if (isNil "_gunner") then {_unit} else {_gunner}; // Retrieve backblast values private _bbValues = [_weapon, _ammo, _magazine] call FUNC(getOverPressureValues); From d6e4bc883aa7bb90e7d0c4c8c6449698a829c19b Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:07:57 +0200 Subject: [PATCH 17/41] Prevent bb reflection damage when within heavy vehicles --- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 47deac4b7a5..c716587e4fa 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -44,7 +44,7 @@ private _distance = 2 * ([_position, _direction, _backblastRange, _shooter] call TRACE_1("Distance",_distance); -if (_distance < _backblastRange) then { +if (_distance < _backblastRange && {EGVAR(hearing,playerVehAttenuation) > 0.8}) then { TRACE_2("",isDamageAllowed _shooter,_shooter getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); // Skip damage if not allowed From 6662938a1ab599b7a8f0e45332fa994f4746b858 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:08:39 +0200 Subject: [PATCH 18/41] Prevent bb reflection by own vehicle --- addons/overpressure/functions/fnc_getDistance.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 64ee5639742..ea2f6f15928 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -21,7 +21,7 @@ params ["_posASL", "_direction", "_maxDistance", "_shooter"]; TRACE_4("params",_posASL,_direction,_maxDistance,_shooter); -private _intersections = lineIntersectsSurfaces [_posASL, _posASL vectorAdd (_direction vectorMultiply _maxDistance), _shooter, objNull, true, 99]; +private _intersections = lineIntersectsSurfaces [_posASL, _posASL vectorAdd (_direction vectorMultiply _maxDistance), _shooter, vehicle _shooter, true, 99]; TRACE_1("lineIntersectsSurfaces",_intersections); From e0b63bb498920289c5bd70ca316fe5e3359d2729 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:08:53 +0200 Subject: [PATCH 19/41] Fix comment typo --- addons/overpressure/functions/fnc_getDistance.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index ea2f6f15928..48473f70820 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -44,7 +44,7 @@ private _distance = 999; if (_angle < 25) exitWith {_distance = 999}; // Angles is below 45deg the distance is increased according to the difference if (_angle < 45) exitWith {_distance = _distance * (5 - 4 * sqrt ((_angle - 25)/20))}; - // Angles above 45degcreate full backblast + // Angles above 45deg create full backblast }; }; } forEach _intersections; From dc01de962635fc59ad8525cb37bdedfd0180a691 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:37:03 +0200 Subject: [PATCH 20/41] Revert negative offset --- .../compat_rhs_afrf3_overpressure/CfgWeapons.hpp | 4 ++-- .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 4 ++-- addons/overpressure/CfgWeapons.hpp | 8 ++++---- addons/overpressure/functions/fnc_firedEHOP.sqf | 11 +---------- 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp index b2d48f3a0a7..280e0c071ca 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -33,12 +33,12 @@ class CfgWeapons { EGVAR(overpressure,range) = 6; EGVAR(overpressure,angle) = 40; EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = -1.8; + EGVAR(overpressure,offset) = 1.8; }; class RocketPods; class rhs_weap_SPG9: RocketPods { - EGVAR(overpressure,offset) = -1.2; + EGVAR(overpressure,offset) = 1.2; }; // Vehicle cannons, forward-facing overpressure diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index ee523d59830..c306ec6a028 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -37,7 +37,7 @@ class CfgWeapons { EGVAR(overpressure,range) = 6; EGVAR(overpressure,angle) = 40; EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = -1.2; + EGVAR(overpressure,offset) = 1.2; }; class missiles_titan; @@ -45,6 +45,6 @@ class CfgWeapons { EGVAR(overpressure,angle) = 40; EGVAR(overpressure,range) = 4; EGVAR(overpressure,damage) = 0.7; - EGVAR(overpressure,offset) = -0.8; + EGVAR(overpressure,offset) = 0.8; }; }; diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index 514d761c49e..dde87a45654 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -70,7 +70,7 @@ class CfgWeapons { GVAR(angle) = 60; GVAR(range) = 10; GVAR(damage) = 0.7; - GVAR(offset) = -0.8; + GVAR(offset) = 0.8; GVAR(backblast) = 1; }; @@ -83,11 +83,11 @@ class CfgWeapons { class missiles_Vorona: MissileLauncher { GVAR(angle) = 50; - GVAR(offset) = -0.5; + GVAR(offset) = 0.5; }; class launcher_SPG9: MissileLauncher { - GVAR(offset) = -1.25; + GVAR(offset) = 1.25; }; class RocketPods: LauncherCore { @@ -95,7 +95,7 @@ class CfgWeapons { GVAR(angle) = 60; GVAR(range) = 10; GVAR(damage) = 0.7; - GVAR(offset) = -0.8; + GVAR(offset) = 0.8; GVAR(backblast) = 1; }; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index 3706915e393..b4b7763eae6 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -21,7 +21,7 @@ TRACE_8("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_gunn // Retrieve overpressure values private _opValues = [_weapon, _ammo, _magazine] call FUNC(getOverPressureValues); -_opValues params ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage", "_offset"]; +_opValues params ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; _dangerZoneRange = _dangerZoneRange * GVAR(overpressureDistanceCoefficient); TRACE_3("cache",_dangerZoneAngle,_dangerZoneRange,_dangerZoneDamage); @@ -32,15 +32,6 @@ if (_dangerZoneDamage <= 0) exitWith {}; private _position = getPosASL _projectile; private _direction = vectorDir _projectile; -// Offset overpressure origin position along the barrel -/*if (_offset != 0) then { - _position = _position vectorAdd (_direction vectorMultiply _offset); - // A negative offset will invert the direction, for vehicle weapons like recoilless rifles and missile launchers - if (_offset < 0) then { - _direction = _direction vectorMultiply -1; - }; -};*/ - // Damage to others private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; From eadb5b972c08c2352183f73e3e19184c62b49278 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:40:53 +0200 Subject: [PATCH 21/41] Call overpressure "backblast" when it's rear-facing --- .../compat_rhs_afrf3_overpressure/CfgWeapons.hpp | 4 ++-- .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 4 ++-- addons/overpressure/CfgWeapons.hpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp index 280e0c071ca..6180c8f0843 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -1,5 +1,5 @@ class CfgWeapons { - // Man-Portable launchers, rear-facing overpressure + // Man-Portable launchers, rear-facing backblast class Launcher_Base_F; class rhs_weap_rpg7: Launcher_Base_F { @@ -26,7 +26,7 @@ class CfgWeapons { EGVAR(overpressure,offset) = 1.65; }; - // Vehicle recoilless rifles and missile launchers, rear-facing overpressure + // Vehicle recoilless rifles and missile launchers, rear-facing backblast class missiles_titan_static; class rhs_Igla_AA_pod_Base: missiles_titan_static { // Soft-launched Igla missile diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index c306ec6a028..b5bdfa19d32 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -1,5 +1,5 @@ class CfgWeapons { - // Man-Portable launchers, rear-facing overpressure + // Man-Portable launchers, rear-facing backblast class launch_O_Titan_F; @@ -30,7 +30,7 @@ class CfgWeapons { EGVAR(overpressure,offset) = 0.9; }; - // Missile launchers, rear-facing overpressure + // Missile launchers, rear-facing backblast class rhs_weap_stinger_Launcher; class rhs_weap_stinger_Launcher_static: rhs_weap_stinger_Launcher { diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index dde87a45654..9738648802b 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -1,7 +1,7 @@ class CfgWeapons { - // Man-Portable launchers, rear-facing overpressure + // Man-Portable launchers, rear-facing backblast class LauncherCore; class Launcher: LauncherCore { @@ -63,7 +63,7 @@ class CfgWeapons { GVAR(offset) = 0.9; }; - // Vehicle recoilless rifles and missile launchers, rear-facing overpressure + // Vehicle recoilless rifles and missile launchers, rear-facing backblast class MissileLauncher: LauncherCore { GVAR(priority) = 1; From 70c64d2243ceb021e1eba5d1142cf575a21d5c71 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:47:59 +0200 Subject: [PATCH 22/41] Update Documentation --- docs/wiki/framework/overpressure-framework.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/wiki/framework/overpressure-framework.md b/docs/wiki/framework/overpressure-framework.md index 2c7f95ab896..4a3086ef7d9 100644 --- a/docs/wiki/framework/overpressure-framework.md +++ b/docs/wiki/framework/overpressure-framework.md @@ -22,7 +22,7 @@ class CfgWeapons { ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher towards the side) ace_overpressure_range = 10; // Range in meters in which the damage is applied ace_overpressure_damage = 0.7; // Damage multiplier - ace_overpressure_offset = 1; // Offset from the projectile origin backwards, to where the backblast should originate (backblast is always directed backwards, regardless of the number's sign) + ace_overpressure_offset = 1; // Offset from the projectile origin backwards, to where the backblast should originate from }; }; ``` @@ -35,14 +35,13 @@ class CfgWeapons { ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon towards the side) ace_overpressure_range = 50; // Range in meters in which the damage is applied ace_overpressure_damage = 0.85; // Damage multiplier - ace_overpressure_offset = 1; // Offset from the projectile origin forward, to where the overpressure should originate (positive number to direct the overpressure forward) }; }; ``` - You can note that the angle, range and damage values are higher, that's because this is a cannon and the overpressure area is much larger. -### 1.3 Vehicle-mounted/Static Missile launchers and Recoilless Guns, rear-facing overpressure +### 1.3 Vehicle-mounted/Static Missile launchers and Recoilless Guns, rear-facing backblast ```cpp class CfgWeapons { @@ -50,7 +49,8 @@ class CfgWeapons { ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher towards the side) ace_overpressure_range = 15; // Range in meters in which the damage is applied ace_overpressure_damage = 0.8; // Damage multiplier - ace_overpressure_offset = -1; // Offset from the projectile origin backwards, to where the backblast should originate (negative number to direct the overpressure backwards) + ace_overpressure_offset = 1; // Offset from the projectile origin backwards, to where the backblast should originate from + ace_overpressure_backblast = 1; // Defines the overpressure as backblast, so that it will be directed backwards }; }; ``` From 296a5a3ed854419477157489c6174c64864d2065 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:52:49 +0200 Subject: [PATCH 23/41] Optimize as advised by HEMTT --- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index c716587e4fa..f6f5a83582c 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -18,7 +18,7 @@ //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_gunner"]; TRACE_8("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_gunner); -private _shooter = if (isNil "_gunner") then {_unit} else {_gunner}; +private _shooter = [_gunner, _unit] select (isNil "_gunner"); // Retrieve backblast values private _bbValues = [_weapon, _ammo, _magazine] call FUNC(getOverPressureValues); From 6f413281a3daa257b2d86e1a7c011a9a0cef9b5e Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 5 Sep 2024 18:27:19 +0200 Subject: [PATCH 24/41] Enable Offset for Cannon Overpressure --- addons/overpressure/functions/fnc_firedEHOP.sqf | 7 ++++++- docs/wiki/framework/overpressure-framework.md | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index b4b7763eae6..7b98b8b8906 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -21,7 +21,7 @@ TRACE_8("firedEH:",_unit,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile,_gunn // Retrieve overpressure values private _opValues = [_weapon, _ammo, _magazine] call FUNC(getOverPressureValues); -_opValues params ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; +_opValues params ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage", "_offset"]; _dangerZoneRange = _dangerZoneRange * GVAR(overpressureDistanceCoefficient); TRACE_3("cache",_dangerZoneAngle,_dangerZoneRange,_dangerZoneDamage); @@ -32,6 +32,11 @@ if (_dangerZoneDamage <= 0) exitWith {}; private _position = getPosASL _projectile; private _direction = vectorDir _projectile; +// Offset overpressure origin position along the barrel +if (_offset != 0) then { + _position = _position vectorAdd (_direction vectorMultiply _offset); +}; + // Damage to others private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; diff --git a/docs/wiki/framework/overpressure-framework.md b/docs/wiki/framework/overpressure-framework.md index 4a3086ef7d9..56b76c547cd 100644 --- a/docs/wiki/framework/overpressure-framework.md +++ b/docs/wiki/framework/overpressure-framework.md @@ -35,6 +35,7 @@ class CfgWeapons { ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon towards the side) ace_overpressure_range = 50; // Range in meters in which the damage is applied ace_overpressure_damage = 0.85; // Damage multiplier + ace_overpressure_offset = 1; // Offset from the projectile origin forward, to where the overpressure should originate from }; }; ``` From 9119a2942dc0837cfe83bb5e271fa2890081114d Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 5 Sep 2024 18:30:04 +0200 Subject: [PATCH 25/41] Mortar Overpressure --- .../compat_rhs_afrf3_overpressure/CfgWeapons.hpp | 6 ++++++ .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 7 +++++++ addons/overpressure/CfgWeapons.hpp | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp index 6180c8f0843..4d6b6c26a9b 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -48,9 +48,15 @@ class CfgWeapons { EGVAR(overpressure,range) = 15; EGVAR(overpressure,damage) = 0.5; }; + class cannon_120mm; class rhs_weap_2a28_base: cannon_120mm { // "Low pressure" EGVAR(overpressure,range) = 15; EGVAR(overpressure,damage) = 0.5; }; + + class mortar_82mm; + class rhs_weap_2b14: mortar_82mm { + EGVAR(overpressure,offset) = 0.4; + }; }; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index b5bdfa19d32..1dc7ad607c6 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -47,4 +47,11 @@ class CfgWeapons { EGVAR(overpressure,damage) = 0.7; EGVAR(overpressure,offset) = 0.8; }; + + // Vehicle cannons, forward-facing overpressure + + class mortar_82mm; + class rhs_mortar_81mm: mortar_82mm { + EGVAR(overpressure,offset) = 0.2; + }; }; diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index 9738648802b..d366817ba96 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -129,4 +129,12 @@ class CfgWeapons { GVAR(range) = 60; GVAR(damage) = 1; }; + + class mortar_82mm: CannonCore { + GVAR(priority) = 1; + GVAR(angle) = 80; + GVAR(range) = 5; + GVAR(damage) = 0.7; + GVAR(offset) = 0.6; + }; }; From cf1d32c777798523df3ae8e17a55733753580cab Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 5 Sep 2024 18:31:17 +0200 Subject: [PATCH 26/41] Allow negative Backblast Offset --- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index f6f5a83582c..2567cd34fb6 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -31,7 +31,7 @@ TRACE_4("cache",_backblastAngle,_backblastRange,_backblastDamage,_offset); if (_backblastDamage <= 0) exitWith {}; private _direction = (vectorDir _projectile) vectorMultiply -1; -private _position = (getPosASL _projectile) vectorAdd (_direction vectorMultiply (abs _offset)); // Temp fix before more extensive config changes +private _position = (getPosASL _projectile) vectorAdd (_direction vectorMultiply _offset); // Damage to others private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; From 0b9b97a6d2afb2e6a461b7f4145fc8e7085cc49e Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 5 Sep 2024 18:32:08 +0200 Subject: [PATCH 27/41] Correct Offset for MLRSs --- .../compat_rhs_afrf3_overpressure/CfgWeapons.hpp | 5 +++++ .../compat_rhs_usf3_overpressure/CfgWeapons.hpp | 5 +++++ addons/overpressure/CfgWeapons.hpp | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp index 4d6b6c26a9b..85a951d094c 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp @@ -41,6 +41,11 @@ class CfgWeapons { EGVAR(overpressure,offset) = 1.2; }; + class rhs_weap_grad; + class rhs_weap_bm21: rhs_weap_grad { + EGVAR(overpressure,offset) = 0; + }; + // Vehicle cannons, forward-facing overpressure class rhs_weap_d81; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp index 1dc7ad607c6..975f61f8dcb 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp @@ -48,6 +48,11 @@ class CfgWeapons { EGVAR(overpressure,offset) = 0.8; }; + class rockets_230mm_GAT; + class rhs_weap_mlrs: rockets_230mm_GAT { + EGVAR(overpressure,offset) = 3.8; + }; + // Vehicle cannons, forward-facing overpressure class mortar_82mm; diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index d366817ba96..a75958de097 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -99,6 +99,10 @@ class CfgWeapons { GVAR(backblast) = 1; }; + class rockets_230mm_GAT: RocketPods { + GVAR(offset) = 1; + }; + // Vehicle cannons, forward-facing overpressure class CannonCore; From e262208a6c90ebc49c0627bdae86f9336a5b61e1 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Fri, 6 Sep 2024 02:45:47 +0200 Subject: [PATCH 28/41] Prevent Backblast being blocked by Firing Vehicle --- addons/overpressure/functions/fnc_overpressureDamage.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index 12b7a820cab..5e00ca5d57d 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -37,7 +37,7 @@ TRACE_3("cache",_overpressureAngle,_overpressureRange,_overpressureDamage); private _distance = vectorMagnitude _relativePosition; private _angle = acos (_axisDistance / _distance); - private _line = [_posASL, _targetPositionASL, _firer, _x]; + private _line = [_posASL, _targetPositionASL, vehicle _firer, _x]; private _line2 = [_posASL, _targetPositionASL]; TRACE_4("Affected:",_x,_axisDistance,_distance,_angle); From a9ce879f542c343970366e9544dee9e9eb0d4956 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Fri, 6 Sep 2024 02:47:09 +0200 Subject: [PATCH 29/41] Increase MLRS Backblast Damage --- addons/overpressure/CfgWeapons.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index a75958de097..eadbc39a9fe 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -100,6 +100,7 @@ class CfgWeapons { }; class rockets_230mm_GAT: RocketPods { + GVAR(damage) = 0.85; GVAR(offset) = 1; }; From 34c3ae95d0c9348d392f5e40c260db322ff62c14 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Fri, 6 Sep 2024 02:48:33 +0200 Subject: [PATCH 30/41] Flag "noReflection" to prevent bb reflection inside closed vehicle --- .../overpressure/functions/fnc_firedEHBB.sqf | 26 +++++++++++-------- docs/wiki/framework/overpressure-framework.md | 8 ++++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 2567cd34fb6..6f9d35ab3aa 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -48,20 +48,24 @@ if (_distance < _backblastRange && {EGVAR(hearing,playerVehAttenuation) > 0.8}) TRACE_2("",isDamageAllowed _shooter,_shooter getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); // Skip damage if not allowed - if (isDamageAllowed _shooter && {_shooter getVariable [QEGVAR(medical,allowDamage), true]}) then { - private _alpha = sqrt (1 - _distance / _backblastRange); - private _beta = sqrt 0.5; + if (!isDamageAllowed _shooter || {!(_shooter getVariable [QEGVAR(medical,allowDamage), true])}) exitWith {}; - private _damage = _alpha * _beta * _backblastDamage; - TRACE_1("",_damage); + // Skip if vehicle backblast reflection is disabled + private _vehicle = vehicle _shooter; + if (_vehicle != _shooter && {getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(noReflection)) == 1}) exitWith {}; - [_damage * 100] call BIS_fnc_bloodEffect; + private _alpha = sqrt (1 - _distance / _backblastRange); + private _beta = sqrt 0.5; - if (GETEGVAR(medical,enabled,false)) then { - [_shooter, _damage, "body", "backblast", _shooter] call EFUNC(medical,addDamageToUnit); - } else { - _shooter setDamage (damage _shooter + _damage); - }; + private _damage = _alpha * _beta * _backblastDamage; + TRACE_1("",_damage); + + [_damage * 100] call BIS_fnc_bloodEffect; + + if (GETEGVAR(medical,enabled,false)) then { + [_shooter, _damage, "body", "backblast", _shooter] call EFUNC(medical,addDamageToUnit); + } else { + _shooter setDamage (damage _shooter + _damage); }; }; diff --git a/docs/wiki/framework/overpressure-framework.md b/docs/wiki/framework/overpressure-framework.md index 56b76c547cd..69406824d0f 100644 --- a/docs/wiki/framework/overpressure-framework.md +++ b/docs/wiki/framework/overpressure-framework.md @@ -56,6 +56,14 @@ class CfgWeapons { }; ``` +```cpp +class CfgVehicles { + class MyClosedMLRS { + ace_overpressure_noReflection = 1; // Prevents backblast reflection to the gunner in light vehicles like Vanilla MLRS Trucks, which are otherwise counted as "open" by ace_hearing_fnc_updatePlayerVehAttenuation + }; +}; +``` + ## 2. Events ### 2.1 Listenable From 7e1d8647119cf2866f10e7ad9f541213bd7cc512 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Fri, 6 Sep 2024 02:49:42 +0200 Subject: [PATCH 31/41] Set "noReflection" on BRDM2, BM21 and Vanilla MLRS Truck --- .../CfgVehicles.hpp | 6 ++++++ .../compat_rhs_afrf3_overpressure/config.cpp | 1 + .../CfgVehicles.hpp | 6 ++++++ .../compat_rhs_gref3_overpressure/config.cpp | 21 +++++++++++++++++++ .../script_component.hpp | 3 +++ addons/overpressure/CfgVehicles.hpp | 6 ++++++ addons/overpressure/config.cpp | 1 + 7 files changed, 44 insertions(+) create mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp create mode 100644 addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp create mode 100644 addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp create mode 100644 addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp create mode 100644 addons/overpressure/CfgVehicles.hpp diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp new file mode 100644 index 00000000000..50de80196ec --- /dev/null +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp @@ -0,0 +1,6 @@ +class CfgVehicles { + class RHS_Ural_BaseTurret; + class RHS_BM21_MSV_01: RHS_Ural_BaseTurret { + EGVAR(overpressure,noReflection) = 1; + }; +}; diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp index 64301c46b3c..9faff41f7a9 100644 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp +++ b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp @@ -15,4 +15,5 @@ class CfgPatches { }; }; +#include "CfgVehicles.hpp" #include "CfgWeapons.hpp" diff --git a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp new file mode 100644 index 00000000000..ac5b261f50f --- /dev/null +++ b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp @@ -0,0 +1,6 @@ +class CfgVehicles { + class Wheeled_APC_F; + class rhsgref_BRDM2: Wheeled_APC_F { + EGVAR(overpressure,noReflection) = 1; + }; +}; diff --git a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp new file mode 100644 index 00000000000..ef810dc2df1 --- /dev/null +++ b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp @@ -0,0 +1,21 @@ +#include "script_component.hpp" + +class CfgPatches { + class SUBADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "rhsgref_main_loadorder", + "ace_overpressure" + }; + skipWhenMissingDependencies = 1; + author = ECSTRING(common,ACETeam); + authors[] = {}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgVehicles.hpp" diff --git a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp new file mode 100644 index 00000000000..0a56058711a --- /dev/null +++ b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp @@ -0,0 +1,3 @@ +#define SUBCOMPONENT overpressure +#define SUBCOMPONENT_BEAUTIFIED Overpressure +#include "..\script_component.hpp" diff --git a/addons/overpressure/CfgVehicles.hpp b/addons/overpressure/CfgVehicles.hpp new file mode 100644 index 00000000000..116fa7eee72 --- /dev/null +++ b/addons/overpressure/CfgVehicles.hpp @@ -0,0 +1,6 @@ +class CfgVehicles { + class Truck_02_base_F; + class Truck_02_MRL_base_F: Truck_02_base_F { + GVAR(noReflection) = 1; + }; +}; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 7274cd50593..d76ee43bd12 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -15,5 +15,6 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "ACE_Arsenal_Stats.hpp" From a2d37863ec94f061398e54d53aab0d7b1aef620b Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 25 Sep 2024 20:33:09 +0200 Subject: [PATCH 32/41] Requested Changes Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- addons/overpressure/functions/fnc_getDistance.sqf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 8334bb24a44..e1f09cf6648 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -52,7 +52,7 @@ if (_distance < _backblastRange && {EGVAR(hearing,playerVehAttenuation) > 0.8}) // Skip if vehicle backblast reflection is disabled private _vehicle = vehicle _shooter; - if (_vehicle != _shooter && {getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(noReflection)) == 1}) exitWith {}; + if (_vehicle != _shooter && {getNumber (configOf _vehicle >> QGVAR(noReflection)) == 1}) exitWith {}; private _alpha = sqrt (1 - _distance / _backblastRange); private _beta = sqrt 0.5; diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 48473f70820..62ca393c0d8 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -40,11 +40,11 @@ private _distance = 999; // Calculate the angle between the terrain and the back blast direction private _angle = 90 - acos (- (_surfaceNormal vectorDotProduct _direction)); TRACE_3("Terrain Intersect",_surfaceNormal,_direction,_angle); - // Angles is below 25deg, no backblast at all + // Angles is below 25°, no backblast at all if (_angle < 25) exitWith {_distance = 999}; - // Angles is below 45deg the distance is increased according to the difference + // Angles is below 45° the distance is increased according to the difference if (_angle < 45) exitWith {_distance = _distance * (5 - 4 * sqrt ((_angle - 25)/20))}; - // Angles above 45deg create full backblast + // Angles above 45° create full backblast }; }; } forEach _intersections; From 3e86ccdfd8e48c8c68b86b95e05956d44e47e922 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Wed, 25 Sep 2024 20:34:15 +0200 Subject: [PATCH 33/41] Mitigate dependency from addon/hearing --- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index e1f09cf6648..1cac2edc855 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -44,7 +44,7 @@ private _distance = 2 * ([_position, _direction, _backblastRange, _shooter] call TRACE_1("Distance",_distance); -if (_distance < _backblastRange && {EGVAR(hearing,playerVehAttenuation) > 0.8}) then { +if (_distance < _backblastRange && {isNil QEGVAR(hearing,playerVehAttenuation) || {EGVAR(hearing,playerVehAttenuation) > 0.8}}) then { TRACE_2("",isDamageAllowed _shooter,_shooter getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); // Skip damage if not allowed From d6b002db2cc4fbab04cf047fa1e64f76c9f62e0b Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 26 Sep 2024 10:55:12 +0200 Subject: [PATCH 34/41] Moved playerVehAttenuation logic to common --- addons/common/XEH_PREP.hpp | 1 + addons/common/XEH_postInit.sqf | 9 +++++++++ .../functions/fnc_updatePlayerVehAttenuation.sqf | 4 ++-- addons/hearing/XEH_PREP.hpp | 1 - addons/hearing/XEH_postInit.sqf | 4 ---- addons/hearing/functions/fnc_explosion.sqf | 2 +- addons/hearing/functions/fnc_firedNear.sqf | 2 +- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- 8 files changed, 15 insertions(+), 10 deletions(-) rename addons/{hearing => common}/functions/fnc_updatePlayerVehAttenuation.sqf (95%) diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 529da07da2b..c9c7c5904fe 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -208,6 +208,7 @@ PREP(unloadPerson); PREP(unloadPersonLocal); PREP(unloadUnitWeapon); PREP(unmuteUnit); +PREP(updatePlayerVehAttenuation); PREP(useItem); PREP(useMagazine); PREP(watchVariable); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 91f3de8e0c6..971cb8e082f 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -373,6 +373,15 @@ GVAR(OldIsCamera) = false; ["ace_activeCameraChanged", [_player, GVAR(OldIsCamera)]] call CBA_fnc_localEvent; }, true] call CBA_fnc_addPlayerEventHandler; +// Update veh audio attunation when player veh changes +GVAR(playerVehAttenuation) = 1; +["vehicle", { + params ["_player", "_vehicle"]; + TRACE_2("vehicle change",_player,_vehicle); + _this call FUNC(updatePlayerVehAttenuation); +}, true] call CBA_fnc_addPlayerEventHandler; +["turret", LINKFUNC(updatePlayerVehAttenuation), false] call CBA_fnc_addPlayerEventHandler; + // Add event handler for UAV control change ACE_controlledUAV = [objNull, objNull, [], ""]; addMissionEventHandler ["PlayerViewChanged", { diff --git a/addons/hearing/functions/fnc_updatePlayerVehAttenuation.sqf b/addons/common/functions/fnc_updatePlayerVehAttenuation.sqf similarity index 95% rename from addons/hearing/functions/fnc_updatePlayerVehAttenuation.sqf rename to addons/common/functions/fnc_updatePlayerVehAttenuation.sqf index 856b694a3f6..fd432f50293 100644 --- a/addons/hearing/functions/fnc_updatePlayerVehAttenuation.sqf +++ b/addons/common/functions/fnc_updatePlayerVehAttenuation.sqf @@ -10,7 +10,7 @@ * Amount that unit can hear outside * * Example: - * call ace_hearing_fnc_updatePlayerVehAttenuation + * call ace_common_fnc_updatePlayerVehAttenuation * * Public: No */ @@ -27,7 +27,7 @@ if (ACE_player != _vehicle) then { private _effectType = getText (_vehicleConfig >> "attenuationEffectType"); if (_turretPath isNotEqualTo []) then { - private _turretConfig = [_vehicleConfig, _turretPath] call EFUNC(common,getTurretConfigPath); + private _turretConfig = [_vehicleConfig, _turretPath] call FUNC(getTurretConfigPath); if ((getNumber (_turretConfig >> "disableSoundAttenuation")) == 1) then { _effectType = ""; diff --git a/addons/hearing/XEH_PREP.hpp b/addons/hearing/XEH_PREP.hpp index 64161300d3e..b02ee702df5 100644 --- a/addons/hearing/XEH_PREP.hpp +++ b/addons/hearing/XEH_PREP.hpp @@ -9,5 +9,4 @@ PREP(moduleHearing); PREP(putInEarPlugs); PREP(removeEarPlugs); PREP(updateHearingProtection); -PREP(updatePlayerVehAttenuation); PREP(updateVolume); diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index f9fb2043334..e3b650336c9 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -40,7 +40,6 @@ GVAR(cacheAmmoLoudness) = createHashMap; GVAR(deafnessDV) = 0; GVAR(deafnessPrior) = 0; GVAR(volume) = 1; -GVAR(playerVehAttenuation) = 1; GVAR(time3) = 0; GVAR(damageCoefficent) = 1; GVAR(volumeAttenuation) = 1; @@ -63,7 +62,6 @@ GVAR(lastPlayerVehicle) = objNull; params ["_player", "_vehicle"]; TRACE_2("vehicle change",_player,_vehicle); - _this call FUNC(updatePlayerVehAttenuation); if (!isNull GVAR(lastPlayerVehicle)) then { private _firedEH = GVAR(lastPlayerVehicle) getVariable [QGVAR(firedEH), -1]; @@ -81,8 +79,6 @@ GVAR(lastPlayerVehicle) = objNull; }; }, true] call CBA_fnc_addPlayerEventHandler; - ["turret", LINKFUNC(updatePlayerVehAttenuation), false] call CBA_fnc_addPlayerEventHandler; - // Reset deafness on respawn (or remote control player switch) ["unit", { params ["_player", "_oldPlayer"]; diff --git a/addons/hearing/functions/fnc_explosion.sqf b/addons/hearing/functions/fnc_explosion.sqf index b5a6f14a69c..bc754eb2909 100644 --- a/addons/hearing/functions/fnc_explosion.sqf +++ b/addons/hearing/functions/fnc_explosion.sqf @@ -32,7 +32,7 @@ if (_distance > 100) exitWith { private _ammoConfig = configOf _projectile; private _explosive = getNumber (_ammoConfig >> "explosive"); -private _vehAttenuation = [GVAR(playerVehAttenuation), 1] select (isNull objectParent ACE_player || {isTurnedOut ACE_player}); +private _vehAttenuation = [EGVAR(common,playerVehAttenuation), 1] select (isNull objectParent ACE_player || {isTurnedOut ACE_player}); TRACE_5("",typeOf _projectile,_distance,_explosive,_audibleFire,_vehAttenuation); diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index 1c9a1c54968..be3ef007d08 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -51,7 +51,7 @@ if (_magazine == "") exitWith { TRACE_6("mag",_magazine,_weapon,_muzzle,_ammo,_firer,_gunner); -private _vehAttenuation = [GVAR(playerVehAttenuation), 1] select (isNull objectParent ACE_player || {isTurnedOut ACE_player}); +private _vehAttenuation = [EGVAR(common,playerVehAttenuation), 1] select (isNull objectParent ACE_player || {isTurnedOut ACE_player}); private _loudness = _magazine call FUNC(getAmmoLoudness); _loudness = _loudness * _audibleFireCoef; diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 1cac2edc855..780f0e4f43b 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -44,7 +44,7 @@ private _distance = 2 * ([_position, _direction, _backblastRange, _shooter] call TRACE_1("Distance",_distance); -if (_distance < _backblastRange && {isNil QEGVAR(hearing,playerVehAttenuation) || {EGVAR(hearing,playerVehAttenuation) > 0.8}}) then { +if (_distance < _backblastRange && {EGVAR(common,playerVehAttenuation) > 0.8}) then { TRACE_2("",isDamageAllowed _shooter,_shooter getVariable [ARR_2(QEGVAR(medical,allowDamage),true)]); // Skip damage if not allowed From 83484d31635a3f90a88636b8cc996cbb8d04bac0 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 26 Sep 2024 11:43:34 +0200 Subject: [PATCH 35/41] Revert overpressure subconfigs --- addons/compat_rhs_afrf3/CfgVehicles.hpp | 4 ++ addons/compat_rhs_afrf3/CfgWeapons.hpp | 47 +++++++++++++ .../CfgVehicles.hpp | 6 -- .../CfgWeapons.hpp | 67 ------------------- .../compat_rhs_afrf3_overpressure/config.cpp | 19 ------ .../script_component.hpp | 3 - addons/compat_rhs_gref3/CfgVehicles.hpp | 1 + .../CfgVehicles.hpp | 6 -- .../compat_rhs_gref3_overpressure/config.cpp | 21 ------ .../script_component.hpp | 3 - addons/compat_rhs_usf3/CfgWeapons.hpp | 46 +++++++++++++ .../CfgWeapons.hpp | 62 ----------------- .../compat_rhs_usf3_overpressure/config.cpp | 18 ----- .../script_component.hpp | 3 - 14 files changed, 98 insertions(+), 208 deletions(-) delete mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp delete mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp delete mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp delete mode 100644 addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp delete mode 100644 addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp delete mode 100644 addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp delete mode 100644 addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp delete mode 100644 addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp delete mode 100644 addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp delete mode 100644 addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp diff --git a/addons/compat_rhs_afrf3/CfgVehicles.hpp b/addons/compat_rhs_afrf3/CfgVehicles.hpp index 2ba6caf56f9..4e60ebfaf6d 100644 --- a/addons/compat_rhs_afrf3/CfgVehicles.hpp +++ b/addons/compat_rhs_afrf3/CfgVehicles.hpp @@ -101,6 +101,10 @@ class CfgVehicles { EGVAR(refuel,fuelCapacity) = 360; }; + class RHS_BM21_MSV_01: RHS_Ural_BaseTurret { + EGVAR(overpressure,noReflection) = 1; + }; + class RHS_Ural_Base: RHS_Ural_BaseTurret {}; class RHS_Ural_MSV_Base: RHS_Ural_Base {}; class RHS_Ural_Support_MSV_Base_01: RHS_Ural_MSV_Base {}; diff --git a/addons/compat_rhs_afrf3/CfgWeapons.hpp b/addons/compat_rhs_afrf3/CfgWeapons.hpp index ac3ea8b3027..c6c664dbb1c 100644 --- a/addons/compat_rhs_afrf3/CfgWeapons.hpp +++ b/addons/compat_rhs_afrf3/CfgWeapons.hpp @@ -85,6 +85,53 @@ class CfgWeapons { class Launcher_Base_F; class rhs_weap_rpg7: Launcher_Base_F { EGVAR(reloadlaunchers,enabled) = 1; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,offset) = 0.9; + }; + class rhs_weap_rpg26: Launcher_Base_F { + EGVAR(overpressure,range) = 10; + EGVAR(overpressure,angle) = 50; + EGVAR(overpressure,offset) = 0.65; + }; + class rhs_weap_rpg18: rhs_weap_rpg26 { + EGVAR(overpressure,angle) = 45; + EGVAR(overpressure,offset) = 1; + }; + class rhs_weap_strela; + class rhs_weap_igla: rhs_weap_strela { + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = 1.65; + }; + class missiles_titan_static; + class rhs_Igla_AA_pod_Base: missiles_titan_static { // Soft-launched Igla missile + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = 1.8; + }; + class RocketPods; + class rhs_weap_SPG9: RocketPods { + EGVAR(overpressure,offset) = 1.2; + }; + class rhs_weap_grad; + class rhs_weap_bm21: rhs_weap_grad { + EGVAR(overpressure,offset) = 0; + }; + class rhs_weap_d81; + class rhs_weap_2a70: rhs_weap_d81 { // "Low pressure" 100mm cannon + EGVAR(overpressure,range) = 15; + EGVAR(overpressure,damage) = 0.5; + }; + class cannon_120mm; + class rhs_weap_2a28_base: cannon_120mm { // "Low pressure" + EGVAR(overpressure,range) = 15; + EGVAR(overpressure,damage) = 0.5; + }; + class mortar_82mm; + class rhs_weap_2b14: mortar_82mm { + EGVAR(overpressure,offset) = 0.4; }; class rhs_zsh7a; diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp deleted file mode 100644 index 50de80196ec..00000000000 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgVehicles.hpp +++ /dev/null @@ -1,6 +0,0 @@ -class CfgVehicles { - class RHS_Ural_BaseTurret; - class RHS_BM21_MSV_01: RHS_Ural_BaseTurret { - EGVAR(overpressure,noReflection) = 1; - }; -}; diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp deleted file mode 100644 index 85a951d094c..00000000000 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/CfgWeapons.hpp +++ /dev/null @@ -1,67 +0,0 @@ -class CfgWeapons { - // Man-Portable launchers, rear-facing backblast - - class Launcher_Base_F; - class rhs_weap_rpg7: Launcher_Base_F { - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,offset) = 0.9; - }; - - class rhs_weap_rpg26: Launcher_Base_F { - EGVAR(overpressure,range) = 10; - EGVAR(overpressure,angle) = 50; - EGVAR(overpressure,offset) = 0.65; - }; - - class rhs_weap_rpg18: rhs_weap_rpg26 { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,offset) = 1; - }; - - class rhs_weap_strela; - class rhs_weap_igla: rhs_weap_strela { - EGVAR(overpressure,range) = 6; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = 1.65; - }; - - // Vehicle recoilless rifles and missile launchers, rear-facing backblast - - class missiles_titan_static; - class rhs_Igla_AA_pod_Base: missiles_titan_static { // Soft-launched Igla missile - EGVAR(overpressure,range) = 6; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = 1.8; - }; - - class RocketPods; - class rhs_weap_SPG9: RocketPods { - EGVAR(overpressure,offset) = 1.2; - }; - - class rhs_weap_grad; - class rhs_weap_bm21: rhs_weap_grad { - EGVAR(overpressure,offset) = 0; - }; - - // Vehicle cannons, forward-facing overpressure - - class rhs_weap_d81; - class rhs_weap_2a70: rhs_weap_d81 { // "Low pressure" 100mm cannon - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,damage) = 0.5; - }; - - class cannon_120mm; - class rhs_weap_2a28_base: cannon_120mm { // "Low pressure" - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,damage) = 0.5; - }; - - class mortar_82mm; - class rhs_weap_2b14: mortar_82mm { - EGVAR(overpressure,offset) = 0.4; - }; -}; diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp deleted file mode 100644 index 9faff41f7a9..00000000000 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/config.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class SUBADDON { - addonRootClass = QUOTE(COMPONENT); - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { - "rhs_main_loadorder", - "ace_overpressure" - }; - skipWhenMissingDependencies = 1; - VERSION_CONFIG; - }; -}; - -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" diff --git a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp b/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp deleted file mode 100644 index 0a56058711a..00000000000 --- a/addons/compat_rhs_afrf3/compat_rhs_afrf3_overpressure/script_component.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#define SUBCOMPONENT overpressure -#define SUBCOMPONENT_BEAUTIFIED Overpressure -#include "..\script_component.hpp" diff --git a/addons/compat_rhs_gref3/CfgVehicles.hpp b/addons/compat_rhs_gref3/CfgVehicles.hpp index 89692c83002..72ca7a22638 100644 --- a/addons/compat_rhs_gref3/CfgVehicles.hpp +++ b/addons/compat_rhs_gref3/CfgVehicles.hpp @@ -14,5 +14,6 @@ class CfgVehicles { GVAR(turretFireProb) = 0.7; GVAR(engineFireProb) = 0.7; GVAR(detonationDuringFireProb) = 0.5; + EGVAR(overpressure,noReflection) = 1; }; }; diff --git a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp deleted file mode 100644 index ac5b261f50f..00000000000 --- a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/CfgVehicles.hpp +++ /dev/null @@ -1,6 +0,0 @@ -class CfgVehicles { - class Wheeled_APC_F; - class rhsgref_BRDM2: Wheeled_APC_F { - EGVAR(overpressure,noReflection) = 1; - }; -}; diff --git a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp deleted file mode 100644 index ef810dc2df1..00000000000 --- a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/config.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class SUBADDON { - name = COMPONENT_NAME; - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { - "rhsgref_main_loadorder", - "ace_overpressure" - }; - skipWhenMissingDependencies = 1; - author = ECSTRING(common,ACETeam); - authors[] = {}; - url = ECSTRING(main,URL); - VERSION_CONFIG; - }; -}; - -#include "CfgVehicles.hpp" diff --git a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp b/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp deleted file mode 100644 index 0a56058711a..00000000000 --- a/addons/compat_rhs_gref3/compat_rhs_gref3_overpressure/script_component.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#define SUBCOMPONENT overpressure -#define SUBCOMPONENT_BEAUTIFIED Overpressure -#include "..\script_component.hpp" diff --git a/addons/compat_rhs_usf3/CfgWeapons.hpp b/addons/compat_rhs_usf3/CfgWeapons.hpp index f18e4651aab..f6f5b517293 100644 --- a/addons/compat_rhs_usf3/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/CfgWeapons.hpp @@ -179,10 +179,56 @@ class CfgWeapons { class rhs_weap_smaw: Launcher_Base_F { EGVAR(reloadlaunchers,enabled) = 1; + EGVAR(overpressure,angle) = 45; + EGVAR(overpressure,offset) = 1.3; }; class rhs_weap_maaws: Launcher_Base_F { EGVAR(reloadlaunchers,enabled) = 1; + EGVAR(overpressure,range) = 15; + EGVAR(overpressure,angle) = 70; + EGVAR(overpressure,damage) = 0.75; + EGVAR(overpressure,offset) = 0.95; + }; + + class rhs_weap_M136: Launcher_Base_F { + EGVAR(overpressure,range) = 10; + EGVAR(overpressure,angle) = 50; + EGVAR(overpressure,offset) = 0.9; + }; + + class launch_O_Titan_F; + class rhs_weap_fim92: launch_O_Titan_F { + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = 1.45; + }; + + class rhs_weap_stinger_Launcher; + class rhs_weap_stinger_Launcher_static: rhs_weap_stinger_Launcher { + EGVAR(overpressure,range) = 6; + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,damage) = 0.6; + EGVAR(overpressure,offset) = 1.2; + }; + + class missiles_titan; + class Rhs_weap_TOW_Launcher_static: missiles_titan { + EGVAR(overpressure,angle) = 40; + EGVAR(overpressure,range) = 4; + EGVAR(overpressure,damage) = 0.7; + EGVAR(overpressure,offset) = 0.8; + }; + + class rockets_230mm_GAT; + class rhs_weap_mlrs: rockets_230mm_GAT { + EGVAR(overpressure,offset) = 3.8; + }; + + class mortar_82mm; + class rhs_mortar_81mm: mortar_82mm { + EGVAR(overpressure,offset) = 0.2; }; class rhsusf_hgu56p; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp deleted file mode 100644 index 975f61f8dcb..00000000000 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/CfgWeapons.hpp +++ /dev/null @@ -1,62 +0,0 @@ -class CfgWeapons { - // Man-Portable launchers, rear-facing backblast - - class launch_O_Titan_F; - - class rhs_weap_fim92: launch_O_Titan_F { - EGVAR(overpressure,range) = 6; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = 1.45; - }; - - class Launcher_Base_F; - - class rhs_weap_smaw: Launcher_Base_F { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,offset) = 1.3; - }; - - class rhs_weap_maaws: Launcher_Base_F { - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,angle) = 70; - EGVAR(overpressure,damage) = 0.75; - EGVAR(overpressure,offset) = 0.95; - }; - - class rhs_weap_M136: Launcher_Base_F { - EGVAR(overpressure,range) = 10; - EGVAR(overpressure,angle) = 50; - EGVAR(overpressure,offset) = 0.9; - }; - - // Missile launchers, rear-facing backblast - - class rhs_weap_stinger_Launcher; - class rhs_weap_stinger_Launcher_static: rhs_weap_stinger_Launcher { - EGVAR(overpressure,range) = 6; - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,damage) = 0.6; - EGVAR(overpressure,offset) = 1.2; - }; - - class missiles_titan; - class Rhs_weap_TOW_Launcher_static: missiles_titan { - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,range) = 4; - EGVAR(overpressure,damage) = 0.7; - EGVAR(overpressure,offset) = 0.8; - }; - - class rockets_230mm_GAT; - class rhs_weap_mlrs: rockets_230mm_GAT { - EGVAR(overpressure,offset) = 3.8; - }; - - // Vehicle cannons, forward-facing overpressure - - class mortar_82mm; - class rhs_mortar_81mm: mortar_82mm { - EGVAR(overpressure,offset) = 0.2; - }; -}; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp deleted file mode 100644 index 04e0542e893..00000000000 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/config.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class SUBADDON { - addonRootClass = QUOTE(COMPONENT); - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { - "rhsusf_main_loadorder", - "ace_overpressure" - }; - skipWhenMissingDependencies = 1; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp deleted file mode 100644 index 0a56058711a..00000000000 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_overpressure/script_component.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#define SUBCOMPONENT overpressure -#define SUBCOMPONENT_BEAUTIFIED Overpressure -#include "..\script_component.hpp" From 2bb02d7756127b1078ae58ed98f40bfdcabacc44 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:57:08 +0100 Subject: [PATCH 36/41] Rephrase comments --- addons/common/XEH_postInit.sqf | 2 +- addons/overpressure/functions/fnc_getDistance.sqf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 06e0393457f..123a2053bce 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -373,7 +373,7 @@ GVAR(OldIsCamera) = false; ["ace_activeCameraChanged", [_player, GVAR(OldIsCamera)]] call CBA_fnc_localEvent; }, true] call CBA_fnc_addPlayerEventHandler; -// Update veh audio attunation when player veh changes +// Update vehicle audio attenuation when player vehicle changes GVAR(playerVehAttenuation) = 1; ["vehicle", { params ["_player", "_vehicle"]; diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 62ca393c0d8..cedb8f4c09d 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -40,11 +40,11 @@ private _distance = 999; // Calculate the angle between the terrain and the back blast direction private _angle = 90 - acos (- (_surfaceNormal vectorDotProduct _direction)); TRACE_3("Terrain Intersect",_surfaceNormal,_direction,_angle); - // Angles is below 25°, no backblast at all + // Angles below 25° don't cause backblast reflection if (_angle < 25) exitWith {_distance = 999}; - // Angles is below 45° the distance is increased according to the difference + // At angles below 45° the distance is increased according to the difference if (_angle < 45) exitWith {_distance = _distance * (5 - 4 * sqrt ((_angle - 25)/20))}; - // Angles above 45° create full backblast + // Angles above 45° create full backblast reflection }; }; } forEach _intersections; From bbddf053705cd39d91f5c2f4f9146788e4cf6a3c Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sat, 28 Dec 2024 10:15:49 +0100 Subject: [PATCH 37/41] Suggestions from Review Co-Authored-By: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/hearing/functions/fnc_handleVehicleKilled.sqf | 2 +- docs/wiki/framework/overpressure-framework.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/hearing/functions/fnc_handleVehicleKilled.sqf b/addons/hearing/functions/fnc_handleVehicleKilled.sqf index 08e44ed194c..3e434f31348 100644 --- a/addons/hearing/functions/fnc_handleVehicleKilled.sqf +++ b/addons/hearing/functions/fnc_handleVehicleKilled.sqf @@ -56,7 +56,7 @@ private _powerCoef = getNumber (_cfg >> "fuelExplosionPower"); // Number + coef mechanics found through extensive testing if (_explosionPower > 6.25 * _powerCoef) then { // Calculate effective strength for player - private _vehAttenuation = [GVAR(playerVehAttenuation), 1] select (isNull objectParent ACE_player || {isTurnedOut ACE_player}); + private _vehAttenuation = [EGVAR(common,playerVehAttenuation), 1] select (isNull objectParent ACE_player || {isTurnedOut ACE_player}); private _effect = getText (_cfg >> "explosionEffect"); private _strength = [VEHICLE_EXPLOSION_STRENGTH, VEHICLE_EXPLOSION_BIG_STRENGTH] select (toLower _effect in ["fuelexplosionbig", "fuelcapacitorexplosion"]); diff --git a/docs/wiki/framework/overpressure-framework.md b/docs/wiki/framework/overpressure-framework.md index 69406824d0f..899550a8cc9 100644 --- a/docs/wiki/framework/overpressure-framework.md +++ b/docs/wiki/framework/overpressure-framework.md @@ -35,7 +35,7 @@ class CfgWeapons { ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon towards the side) ace_overpressure_range = 50; // Range in meters in which the damage is applied ace_overpressure_damage = 0.85; // Damage multiplier - ace_overpressure_offset = 1; // Offset from the projectile origin forward, to where the overpressure should originate from + ace_overpressure_offset = 1; // Offset from the projectile origin forwards, to where the overpressure should originate from }; }; ``` @@ -59,7 +59,7 @@ class CfgWeapons { ```cpp class CfgVehicles { class MyClosedMLRS { - ace_overpressure_noReflection = 1; // Prevents backblast reflection to the gunner in light vehicles like Vanilla MLRS Trucks, which are otherwise counted as "open" by ace_hearing_fnc_updatePlayerVehAttenuation + ace_overpressure_noReflection = 1; // Prevents backblast reflection to the gunner in light vehicles like Vanilla MLRS Trucks, which are otherwise counted as "open" by ace_common_fnc_updatePlayerVehAttenuation }; }; ``` From 4b7f7a90a6714f9fddfb85ea175b520834559511 Mon Sep 17 00:00:00 2001 From: Fabio Schick <58027418+mrschick@users.noreply.github.com> Date: Sun, 19 Jan 2025 14:42:10 +0100 Subject: [PATCH 38/41] Suggestion Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/overpressure/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/XEH_postInit.sqf b/addons/overpressure/XEH_postInit.sqf index 525c0a436db..096fb1bdb84 100644 --- a/addons/overpressure/XEH_postInit.sqf +++ b/addons/overpressure/XEH_postInit.sqf @@ -9,7 +9,7 @@ if (GVAR(backblastDistanceCoefficient) > 0) then { ["ace_firedPlayer", LINKFUNC(firedEHBB)] call CBA_fnc_addEventHandler; }; - if (GVAR(overpressureDistanceCoefficient) > 0) then { + if (GVAR(overpressureDistanceCoefficient) > 0 || {GVAR(backblastDistanceCoefficient) > 0}) then { ["ace_firedPlayerVehicle", { if (getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(backblast)) == 1) then { _this call FUNC(firedEHBB); From 0a66a3c398b9535dae0f7639d76952e9179501a4 Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:59:36 +0100 Subject: [PATCH 39/41] Correct negative offsets from previous implementation --- addons/dragon/CfgWeapons.hpp | 2 +- addons/javelin/CfgWeapons.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/dragon/CfgWeapons.hpp b/addons/dragon/CfgWeapons.hpp index ea4903cf5ac..b2c3188d80c 100644 --- a/addons/dragon/CfgWeapons.hpp +++ b/addons/dragon/CfgWeapons.hpp @@ -36,7 +36,7 @@ class CfgWeapons { EGVAR(overpressure,angle) = 60; EGVAR(overpressure,range) = 10; EGVAR(overpressure,damage) = 0.85; - EGVAR(overpressure,offset) = -0.4; + EGVAR(overpressure,offset) = 0.4; initSpeed = 120; diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp index cbd5661050f..d711ec208b3 100644 --- a/addons/javelin/CfgWeapons.hpp +++ b/addons/javelin/CfgWeapons.hpp @@ -25,7 +25,7 @@ class CfgWeapons { EGVAR(overpressure,angle) = 30; EGVAR(overpressure,range) = 2; EGVAR(overpressure,damage) = 0.5; - EGVAR(overpressure,offset) = -0.5; + EGVAR(overpressure,offset) = 0.5; }; class Launcher_Base_F; From 38bdd87f96e560db37c73c2e67d4e2753d13159d Mon Sep 17 00:00:00 2001 From: mrschick <58027418+mrschick@users.noreply.github.com> Date: Sun, 19 Jan 2025 16:27:01 +0100 Subject: [PATCH 40/41] Less offset for 230mm MLRs --- addons/overpressure/CfgWeapons.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index eadbc39a9fe..dc0fb80fc0c 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -101,7 +101,7 @@ class CfgWeapons { class rockets_230mm_GAT: RocketPods { GVAR(damage) = 0.85; - GVAR(offset) = 1; + GVAR(offset) = 0.5; }; // Vehicle cannons, forward-facing overpressure From f22f995c87bfb3a2c331e2837c0de394533e70eb Mon Sep 17 00:00:00 2001 From: Fabio Schick <58027418+mrschick@users.noreply.github.com> Date: Mon, 20 Jan 2025 20:41:16 +0100 Subject: [PATCH 41/41] Comment suggestion Co-authored-by: PabstMirror --- addons/overpressure/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/XEH_postInit.sqf b/addons/overpressure/XEH_postInit.sqf index 096fb1bdb84..f6b5b4898f9 100644 --- a/addons/overpressure/XEH_postInit.sqf +++ b/addons/overpressure/XEH_postInit.sqf @@ -10,7 +10,7 @@ ["ace_firedPlayer", LINKFUNC(firedEHBB)] call CBA_fnc_addEventHandler; }; if (GVAR(overpressureDistanceCoefficient) > 0 || {GVAR(backblastDistanceCoefficient) > 0}) then { - ["ace_firedPlayerVehicle", { + ["ace_firedPlayerVehicle", { //IGNORE_PRIVATE_WARNING ["_weapon"]; if (getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(backblast)) == 1) then { _this call FUNC(firedEHBB); } else {