mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
04e41a4d5a
* add variable full repair time * enable compile cache * Fix stupid * whoops * incremental full repair * cleanup function header * ignore hitpoints inFullRepairProgress * fix getHitPointsToIgnore * final cleanup * don't show repair hint while doing full repair * make this all work * fix stupid put this back in place * Add setting for speedup when near repair facility/vehicle enable compile cache * refactor near repair facility/vehicle checks * remove skipping hint from do_repair better for feedback this way * git diff stuff * use functions directly in ACE_Repair.hpp * add check for vehicle proximity * add a new line * switch to multiply by setting instead * speed boost settings, remove exit addRepairActions * stringtable * remove speed boost settings * fix things, add forceDisplayName * name in function header * fix TRACE * add animation looping * remove systemChat Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com> * add time coefficient setting * move to repair category * time coefficient max and default values --------- Co-authored-by: Salluci <69561145+Salluci@users.noreply.github.com> Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com>
51 lines
1.6 KiB
Plaintext
51 lines
1.6 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: LinkIsGrim
|
|
* Handles full repair by periodically repairing damaged hitpoints.
|
|
*
|
|
* Arguments:
|
|
* 0: Arguments <ARRAY>
|
|
* 0: Engineer <OBJECT>
|
|
* 1: Vehicle <OBJECT>
|
|
* 2: Hitpoint <STRING> (unused)
|
|
* 3: Repair action classname <STRING>
|
|
* 1: Elapsed Time <NUMBER>
|
|
* 2: Total Time <NUMBER>
|
|
*
|
|
* Return Value:
|
|
* Continue Repair <BOOL>
|
|
*
|
|
* Example:
|
|
* [[objNull, player], 5, 10] call ace_repair_fnc_fullRepairProgress
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_args", "_elapsedTime", "_totalTime"];
|
|
_args params ["_engineer", "_vehicle", "", "_action"];
|
|
|
|
if !((alive _vehicle) && {(abs speed _vehicle) < 1}) exitWith {false}; // make sure vehicle doesn't drive off
|
|
|
|
// Not enough time has elapsed to repair a hitpoint
|
|
if (_totalTime - _elapsedTime > ([_engineer, _vehicle] call FUNC(getFullRepairTime)) - (GVAR(miscRepairTime) * GVAR(timeCoefficientFullRepair))) exitWith {true};
|
|
|
|
private _allHitPointsDamage = getAllHitPointsDamage _vehicle;
|
|
_allHitPointsDamage params ["_hitPoints", "", "_damageValues"];
|
|
|
|
private _hitPointsToIgnore = [_vehicle] call FUNC(getHitPointsToIgnore);
|
|
|
|
private _firstDamagedIndex = {
|
|
private _hitPoint = _hitPoints select _forEachIndex;
|
|
if (_x > 0 && {!(_hitPoint in _hitPointsToIgnore)}) exitWith {_forEachIndex};
|
|
-1
|
|
} forEach _damageValues;
|
|
|
|
// Stop repairing if there are no more damaged hitpoints
|
|
// callBackSuccess to FUNC(doFullRepair) for ignored hitpoints
|
|
if (_firstDamagedIndex == -1) exitWith {true};
|
|
|
|
// Repair the first damaged hitpoint
|
|
[_engineer, _vehicle, _firstDamagedIndex, _action] call FUNC(doRepair);
|
|
|
|
true
|