change root level folder name to framework, update resupply+vehicleflags

tested locally
This commit is contained in:
2024-02-04 21:23:12 -08:00
parent c45f778188
commit 4cfa159ee9
88 changed files with 193 additions and 359 deletions

View File

@@ -0,0 +1,101 @@
params [
["_event", [], []],
["_maximumDistance", 2000, [0]],
["_minimumAltitude", 0, [0]],
["_primaryTurret", 0, [0]],
["_fullAmmoCount", 2000, [0]],
["_flakRoundsEvery", 2, [0]],
["_speedDispersion", 20, [0]],
["_distanceDispersion", 30, [0]]
];
// diag_log "[MILSIM] (ambience) flakEH running";
// diag_log text format["[MILSIM] (ambience) flakEH event: %1", _event];
_unit = _event select 0;
// diag_log text format["[MILSIM] (ambience) flahEH vehicle: %1", _unit];
_projectile = _event select 6;
// diag_log text format["[MILSIM] (ambience) flakEH projectile in flight: %1", _projectile];
deleteVehicle _projectile;
// diag_log text "[MILSIM] (ambience) flakEH projectile deleted");
// diag_log text format["[MILSIM] (ambience) flakEH primary turret: %1", _unit weaponsTurret [0] select _primaryTurret];
_weapon = _unit weaponsTurret [0] select _primaryTurret;
_munitionConversionRate = _fullAmmoCount - _flakRoundsEvery;
// diag_log text format["[MILSIM] (ambience) flakEH munition count: %1", _unit ammo _weapon];
// diag_log text format["[MILSIM] (ambience) flakEH munition replacement at: %1", _munitionConversionRate];
if (_unit ammo _weapon < _munitionConversionRate) then {
_unit setAmmo [_weapon, _fullAmmoCount];
// diag_log text format["[MILSIM] (ambience) flakEH replacing ammo count to: %1", _fullAmmoCount];
_targetPosition = [];
_target = 0;
if (isPlayer (assignedGunner _unit)) then {
_target = cursorTarget;
if (_unit distance _target < _maximumDistance) then {
_targetPosition = getPos _target;
};
} else {
_possibleTargets = _unit nearTargets _maximumDistance;
diag_log text format["ai has %1 possible targetting solutions", count _possibleTargets];
if ((count _possibleTargets) > 0) then {
_i = 0;
_hold = 0;
{
_i = _unit aimedAtTarget [_x select 4, _weapon];
if (_i > _hold && (_x select 3) > 0) then {
_target = _x select 4;
diag_log text format["setting target to %1", _target];
_targetPosition = _x select 0;
_hold = _i;
};
} forEach _possibleTargets;
};
};
// diag_log text format["[MILSIM] (ambience) flakEH target coordinates: %1", _targetPosition];
if ((count _targetPosition) > 0) then {
// diag_log text "[MILSIM] (ambience) flakEH calculating new projectile placement";
_targetX = _targetPosition select 0;
_targetY = _targetPosition select 1;
_targetZ = _targetPosition select 2;
// diag_log text format["[MILSIM] (ambience) flakEH checking target altitude: %1", _targetZ];
if (_targetZ > _minimumAltitude) then {
// diag_log text "[MILSIM] (ambience) flakEH target is above minimum height, proceeding";
if !(lineIntersects [getPos _unit, _targetPosition, _unit, _target]) then {
// diag_log text "[MILSIM] (ambience) flakEH intersection calculated";
_flakDistance = ((speed _target * 0.8) * (_speedDispersion / 100)) + ((_unit distance _target) * (_distanceDispersion / 500));
_distanceX = ((random (_flakDistance * 2)) - _flakDistance) + _targetX;
_distanceY = ((random (_flakDistance * 2)) - _flakDistance) + _targetY;
_distanceZ = ((random (_flakDistance * 2)) - _flakDistance) + _targetZ;
// diag_log text format["[MILSIM] (ambience) flakEH target is distance: %1 / distance2D %2 from me, creating munition distance %3, distance2D %4 from me", _unit distance _targetPosition, _unit distance2D _targetPosition, _unit distance [_distanceX, _distanceY, _distanceZ], _unit distance2D [_distanceX, _distanceY, _distanceZ]];
_flak = createVehicle ["SmallSecondary", [_distanceX, _distanceY, _distanceZ], [], 0, "CAN_COLLIDE"];
};
};
};
};