ACE3/addons/common/functions/fnc_getHitPoints.sqf
2015-02-19 19:14:52 +01:00

57 lines
1.2 KiB
Plaintext

/*
* Author: commy2
*
* Returns all hitpoints of any vehicle. Non unique hitpoints in turrets are ignored.
*
* Arguments:
* 0: A vehicle, not the classname (Object)
*
* Return Value:
* The hitpoints (Array)
*/
#include "script_component.hpp"
private ["_vehicle", "_config", "_hitpoints"];
_vehicle = _this select 0;
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
_hitpoints = [];
// get all classes that can contain hitpoints
private "_hitpointClasses";
_hitpointClasses = [_config >> "HitPoints"];
{
private "_class";
_class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints";
if (isClass _class) then {
_hitpointClasses pushBack _class;
};
} forEach allTurrets _vehicle;
// iterate through all classes with hitpoints and their parents
{
private "_class";
_class = _x;
while {isClass _class} do {
for "_i" from 0 to (count _class - 1) do {
private "_entry";
_entry = configName (_class select _i);
if (!(_entry in _hitpoints) && {!isNil {_vehicle getHitPointDamage _entry}}) then {
_hitpoints pushBack _entry;
};
};
_class = inheritsFrom _class;
};
} forEach _hitpointClasses;
_hitpoints