mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
More fixes and improvements for wounds
This commit is contained in:
parent
e4756efaa0
commit
3fc29673bb
@ -82,15 +82,16 @@ _woundsCreated = [];
|
||||
for "_i" from 0 to (1+ floor(random(_x select 1)-1)) /* step +1 */ do {
|
||||
|
||||
// Find the injury we are going to add. Format [ classID, allowdSelections, bloodloss, painOfInjury, minimalDamage]
|
||||
_toAddInjury = _allPossibleInjuries select (floor(random (count _allPossibleInjuries)));
|
||||
_toAddInjury = if (random(1) >= 0.5) then {_allPossibleInjuries select _highestPossibleSpot} else {_allPossibleInjuries select (floor(random (count _allPossibleInjuries)));};
|
||||
_toAddClassID = _toAddInjury select 0;
|
||||
_foundIndex = -1;
|
||||
|
||||
_bodyPartNToAdd = if (_injuryTypeInfo select 1) then {_bodyPartn} else {floor(random(6))};
|
||||
// If the injury type is selection part specific, we will check if one of those injury types already exists and find the spot for it..
|
||||
if ((_injuryTypeInfo select 1)) then {
|
||||
{
|
||||
// Check if we have an id of the given class on the given bodypart already
|
||||
if (_x select 0 == _toAddClassID && {_x select 2 == _bodyPartn}) exitwith {
|
||||
if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith {
|
||||
_foundIndex = _foreachIndex;
|
||||
};
|
||||
}foreach _openWounds;
|
||||
@ -99,7 +100,7 @@ _woundsCreated = [];
|
||||
_injury = [];
|
||||
if (_foundIndex < 0) then {
|
||||
// Create a new injury. Format [ID, classID, bodypart, percentage treated, bloodloss rate]
|
||||
_injury = [_woundID, _toAddInjury select 0, if (_injuryTypeInfo select 1) then {_bodyPartn} else {floor(random(6))}, 1, _toAddInjury select 2];
|
||||
_injury = [_woundID, _toAddInjury select 0, _bodyPartNToAdd, 1, _toAddInjury select 2];
|
||||
|
||||
// Since it is a new injury, we will have to add it to the open wounds array to store it
|
||||
_openWounds pushback _injury;
|
||||
@ -108,7 +109,7 @@ _woundsCreated = [];
|
||||
_woundID = _woundID + 1;
|
||||
} else {
|
||||
// We already have one of these, so we are just going to increase the number that we have of it with a new one.
|
||||
_injury = _openWounds select _foreachIndex;
|
||||
_injury = _openWounds select _foundIndex;
|
||||
_injury set [3, (_injury select 3) + 1];
|
||||
};
|
||||
// Store the injury so we can process it later correctly.
|
||||
|
@ -29,7 +29,7 @@ for "_i" from 0 to (count _configDamageTypes -1) /* step +1 */ do {
|
||||
GVAR(allAvailableDamageTypes) = _allFoundDamageTypes;
|
||||
|
||||
// Creating a hash map to map wound IDs to classnames
|
||||
GVAR(woundClassNameIDHash) = HASHCREATE;
|
||||
GVAR(woundClassNames) = [];
|
||||
|
||||
// function for parsing a sublcass of an injury
|
||||
_parseForSubClassWounds = {
|
||||
@ -42,9 +42,9 @@ _parseForSubClassWounds = {
|
||||
_subClasspain = if (isNumber(_subClassConfig >> "pain")) then { getNumber(_subClassConfig >> "pain");} else { _pain };
|
||||
_subClassminDamage = if (isNumber(_subClassConfig >> "minDamage")) then { getNumber(_subClassConfig >> "minDamage");} else { _minDamage };
|
||||
_subClasscauses = if (isArray(_subClassConfig >> "causes")) then { getArray(_subClassConfig >> "causes");} else { _causes };
|
||||
_subClassDisplayName = if (isText(_entry >> "name")) then { getText(_entry >> "name");} else {_classDisplayName + " " + _subClass};
|
||||
_subClassDisplayName = if (isText(_subClassConfig >> "name")) then { getText(_subClassConfig >> "name");} else {_classDisplayName + " " + _subClass};
|
||||
if (count _selections > 0 && {count _causes > 0}) then {
|
||||
HASH_SET(GVAR(woundClassNameIDHash), _classID, _subClasstype);
|
||||
GVAR(woundClassNames) pushback _subClasstype;
|
||||
_allWoundClasses pushback [_classID, _subClassselections, _subClassbloodLoss, _subClasspain, _subClassminDamage, _subClasscauses, _subClassDisplayName];
|
||||
_classID = _classID + 1;
|
||||
};
|
||||
@ -75,7 +75,7 @@ if (isClass _woundsConfig) then {
|
||||
|
||||
// There were no subclasses, so we will add this one instead.
|
||||
if (count _selections > 0 && count _causes > 0) then {
|
||||
HASH_SET(GVAR(woundClassNameIDHash), _classID, _classType);
|
||||
GVAR(woundClassNames) pushback _classType;
|
||||
_allWoundClasses pushback [_classID, _selections, _bloodLoss, _pain, _minDamage, _causes, _classDisplayName];
|
||||
_classID = _classID + 1;
|
||||
};
|
||||
|
@ -44,11 +44,13 @@ _mostEffectiveInjury = _openWounds select 0;
|
||||
if (_x select 2 == _part) then {
|
||||
_woundEffectivenss = _effectiveness;
|
||||
_classID = (_x select 1);
|
||||
// Check if this wound type has attributes specified for the used bandage
|
||||
if (HASH_HASKEY(GVAR(woundClassNameIDHash), _classID)) then {
|
||||
|
||||
// Select the classname from the wound classname storage
|
||||
_className = GVAR(woundClassNames) select _classID;
|
||||
// Check if this wound type has attributes specified for the used bandage
|
||||
if (isClass (_config >> _className)) then {
|
||||
// Collect the effectiveness from the used bandage for this wound type
|
||||
_woundTreatmentConfig = (_config >> (HASH_GET(GVAR(woundClassNameIDHash), _classID)));
|
||||
_woundTreatmentConfig = (_config >> _className);
|
||||
if (isNumber (_woundTreatmentConfig >> "effectiveness")) then {
|
||||
_woundEffectivenss = getNumber (_woundTreatmentConfig >> "effectiveness");
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user