Added commented 2.18 commands and updated script component

This commit is contained in:
lambdatiger 2024-02-08 17:11:36 -06:00
parent 07f055e16d
commit f63b4088eb
4 changed files with 23 additions and 15 deletions

View File

@ -38,13 +38,13 @@ private _timeSinceLastFrag = CBA_missionTime - GVAR(lastFragTime);
if (_timeSinceLastFrag < ACE_FRAG_HOLDOFF || {_posASL isEqualTo [0, 0, 0] || _ammo isEqualTo ""}) exitWith {
TRACE_3("timeExit",_timeSinceLastFrag,CBA_missionTime,GVAR(lastFragTime));
};
private _maxFragCount = round linearConversion [0.1, 1.5, _timeSinceLastFrag, ACE_FRAG_COUNT_MIN, ACE_FRAG_COUNT_MAX, true];
private _maxFragCount = round linearConversion [ACE_FRAG_COUNT_MIN_TIME, ACE_FRAG_COUNT_MAX_TIME, _timeSinceLastFrag, ACE_FRAG_COUNT_MIN, ACE_FRAG_COUNT_MAX, true];
TRACE_3("willFrag",_timeSinceLastFrag,CBA_missionTime,_maxFragCount);
private _ammoArr = [_ammo] call FUNC(getFragInfo);
_ammoArr params ["_fragRange", "_fragVel", "_fragTypes", "_modFragCount"];
// For low frag rounds limit the # of frags created
if (_modFragCount < 10) then {
if (_modFragCount < ACE_FRAG_LOW_FRAG_MOD_COUNT) then {
_maxFragCount = _modFragCount * ACE_FRAG_LOW_FRAG_COEFF;
GVAR(lastFragTime) = CBA_missionTime - ACE_FRAG_LOW_FRAG_HOLDOFF_REDUCTION;
} else {
@ -53,10 +53,10 @@ if (_modFragCount < 10) then {
// Offset for ground clearance
private _heightATL = (ASLToATL _posASL)#2;
if (_heightATL < ACE_FRAG_MIN_GROUND_OFFSET) then {
_posASL = _posASL vectorAdd [0, 0, ACE_FRAG_MIN_GROUND_OFFSET];
_posASL = _posASL vectorAdd [0, 0, ACE_FRAG_MIN_GROUND_OFFSET - (0 min _heightATL)];
};
TRACE_3("fnc_doFragTargeted IF", _fragRange, _timeSinceLastFrag, GVAR(fragSimComplexity));
TRACE_3("fnc_doFragTargeted IF",_fragRange,_timeSinceLastFrag,GVAR(fragSimComplexity));
if (GVAR(fragSimComplexity) != 1 && _fragRange > 3) then {
_maxFragCount = _maxFragCount - ([_posASL, _fragVel, _fragRange, _maxFragCount, _fragTypes, _modFragCount, _shotParents] call FUNC(doFragTargeted));
};

View File

@ -37,11 +37,7 @@ private _hMode = switch (true) do {
default {"_mid"};
};
private _type = if (_fragType isNotEqualTo [] && {"ace_frag_tiny" isEqualTo (_fragType#0)}) then {
QGVAR(def_tiny_)
} else {
QGVAR(def_small_)
};
private _type = [QGVAR(def_small_), QGVAR(def_tiny_)] select (_fragType isNotEqualTo [] && {"ace_frag_tiny" isEqualTo (_fragType#0)});
_maxFragCount = switch (true) do {
case (_maxFragCount <= 5): {"5"};

View File

@ -129,7 +129,7 @@ private _spallSpawner = createVehicle [
"CAN_COLLIDE"
];
_spallSpawner setVectorDirandUp [_lastVelocityUnit, _vectorUp];
_spallSpawner setVelocity (_lastVelocityUnit vectorMultiply (_velocityChange/ACE_FRAG_SPALL_VELOCITY_INHERIT_COEFF));
_spallSpawner setVelocity (_lastVelocityUnit vectorMultiply (_velocityChange * ACE_FRAG_SPALL_VELOCITY_INHERIT_COEFF));
_spallSpawner setShotParents _shotParents;
#ifdef DEBUG_MODE_FULL

View File

@ -3,7 +3,7 @@
#include "\z\ace\addons\main\script_mod.hpp"
// #define LOG_FRAG_INFO
// #define DEBUG_MODE_FULL
#define DEBUG_MODE_FULL
// #define DEBUG_MODE_DRAW
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS
@ -18,19 +18,31 @@
#include "\z\ace\addons\main\script_macros.hpp"
// Mimimum hold-off time between frag events globally or per vehicle
#define ACE_FRAG_HOLDOFF 0.25
#define ACE_FRAG_HOLDOFF_VEHICLE 1
#define ACE_FRAG_SPALL_HOLDOFF 0.25
// Scaling for the min/max # of fragments since last frag event
#define ACE_FRAG_COUNT_MIN_TIME 0.1
#define ACE_FRAG_COUNT_MIN 5
#define ACE_FRAG_COUNT_MAX_TIME 1
#define ACE_FRAG_COUNT_MAX 50
// Default hitpoint targets
#define ACE_FRAG_HITPOINTS ["spine1", "spine1", "spine1", "spine2", "spine2", "spine2", "spine3", "spine3", "spine3", "pelvis", "pelvis", "pelvis", "head", "leftarm", "leftarmroll", "leftforearm", "rightarm", "rightarmroll", "rightforearm", "leftupleg", "leftuplegroll", "leftlegroll", "leftfoot", "rightupleg", "rightuplegroll", "rightleg", "rightlegroll", "rightfoot", "neck"]
// sqrt(2)/50
#define ACE_FRAG_ROUND_COEF 0.02828427
// half of gravity approx 9.81/2
#define ACE_FRAG_HALF_GRAVITY_APPROX 4.905
// Lowest chance to hit of 0.5%
#define ACE_FRAG_MIN_FRAG_HIT_CHANCE 0.005
#define ACE_FRAG_MIN_GROUND_OFFSET 0.25
// Make frag hold-off time shortger for low frag
// value of 150/4/pi ~= 11.93662
#define ACE_FRAG_LOW_FRAG_MOD_COUNT 11.93662
#define ACE_FRAG_LOW_FRAG_COEFF 4
#define ACE_FRAG_LOW_FRAG_HOLDOFF_REDUCTION 4
#define ACE_FRAG_SPALL_VELOCITY_INHERIT_COEFF 2
// Max frag distance - correlates to a a fragCount of 20k & hit chance of 0.5%
#define ACE_FRAG_MAX_FRAG_RANGE 565
// Spall values
#define ACE_FRAG_SPALL_HOLDOFF 0.25
#define ACE_FRAG_SPALL_VELOCITY_INHERIT_COEFF 0.5
// sqrt(2)/50
#define ACE_FRAG_ROUND_COEF 0.02828427