mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
commit
b6ed944123
@ -13,22 +13,23 @@
|
|||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_typeOfProjectile","_typeOfInjury"];
|
PARAMS_1(_typeOfProjectile);
|
||||||
_typeOfProjectile = _this select 0;
|
|
||||||
_typeOfInjury = switch (true) do {
|
private ["_typeOfDamage"];
|
||||||
case (_typeOfProjectile iskindof "BulletBase"): {"Bullet"};
|
|
||||||
case (_typeOfProjectile iskindof "GrenadeCore"): {"Grenade"};
|
_typeOfDamage = switch (true) do {
|
||||||
case (_typeOfProjectile iskindof "TimeBombCore"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "BulletBase"): {"bullet"};
|
||||||
case (_typeOfProjectile iskindof "MineCore"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "GrenadeCore"): {"grenade"};
|
||||||
case (_typeOfProjectile iskindof "FuelExplosion"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "TimeBombCore"): {"explosive"};
|
||||||
case (_typeOfProjectile iskindof "ShellBase"): {"Shell"};
|
case (_typeOfProjectile isKindOf "MineCore"): {"explosive"};
|
||||||
case (_typeOfProjectile iskindof "RocketBase"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "FuelExplosion"): {"explosive"};
|
||||||
case (_typeOfProjectile iskindof "MissileBase"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "ShellBase"): {"shell"};
|
||||||
case (_typeOfProjectile iskindof "LaserBombCore"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "RocketBase"): {"explosive"};
|
||||||
case (_typeOfProjectile iskindof "BombCore"): {"Explosive"};
|
case (_typeOfProjectile isKindOf "MissileBase"): {"explosive"};
|
||||||
case (_typeOfProjectile iskindof "Grenade"): {"Grenade"};
|
case (_typeOfProjectile isKindOf "LaserBombCore"): {"explosive"};
|
||||||
case (_typeOfProjectile == "VehicleCrash"): {"VehicleCrash"};
|
case (_typeOfProjectile isKindOf "BombCore"): {"explosive"};
|
||||||
default {_typeOfProjectile};
|
case (_typeOfProjectile isKindOf "Grenade"): {"grenade"};
|
||||||
|
default {toLower _typeOfProjectile};
|
||||||
};
|
};
|
||||||
// TODO replace the capitalization on the switch results instead..
|
|
||||||
toLower _typeOfInjury;
|
_typeOfDamage
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* 6: Type of Damage <STRING>
|
* 6: Type of Damage <STRING>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Damage To Be Inflicted <NUMBER>
|
* Nothing
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -28,10 +28,7 @@ _typeOfProjectile = _this select 4;
|
|||||||
_newDamage = _this select 5;
|
_newDamage = _this select 5;
|
||||||
|
|
||||||
// Most likely taking exessive fire damage. Lets exit.
|
// Most likely taking exessive fire damage. Lets exit.
|
||||||
if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) exitwith {
|
if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) exitwith {};
|
||||||
0
|
|
||||||
};
|
|
||||||
_typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage);
|
|
||||||
_part = [_selectionName] call FUNC(selectionNameToNumber);
|
_part = [_selectionName] call FUNC(selectionNameToNumber);
|
||||||
if (_part < 0) exitwith {};
|
if (_part < 0) exitwith {};
|
||||||
|
|
||||||
@ -44,6 +41,7 @@ _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true];
|
|||||||
|
|
||||||
[_unit] call FUNC(handleDamage_advancedSetDamage);
|
[_unit] call FUNC(handleDamage_advancedSetDamage);
|
||||||
|
|
||||||
|
_typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage);
|
||||||
[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds);
|
[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds);
|
||||||
|
|
||||||
// TODO Disabled until implemented fully
|
// TODO Disabled until implemented fully
|
||||||
@ -63,5 +61,3 @@ if (alive _unit && {!(_unit getvariable ["ACE_isUnconscious", false])}) then {
|
|||||||
[_unit] call FUNC(setUnconscious);
|
[_unit] call FUNC(setUnconscious);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
_amountOfDamage;
|
|
||||||
|
@ -13,42 +13,22 @@
|
|||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_unit", "_bodyStatus", "_headDamage", "_torsoDamage", "_handsDamage", "_legsDamage"];
|
PARAMS_1(_unit);
|
||||||
_unit = _this select 0;
|
|
||||||
|
|
||||||
if (!local _unit) exitwith {};
|
if (!local _unit) exitwith {};
|
||||||
|
|
||||||
_bodyStatus = _unit getvariable [QGVAR(bodyPartStatus),[0,0,0,0,0,0]];
|
private ["_bodyStatus", "_headDamage", "_torsoDamage", "_handsDamage", "_legsDamage"];
|
||||||
|
|
||||||
// ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]
|
// ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]
|
||||||
_headDamage = _bodyStatus select 0;
|
_bodyStatus = _unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]];
|
||||||
if (_headDamage > 0.95) then {
|
|
||||||
_unit setHitPointDamage ["hitHead", 0.95];
|
|
||||||
} else {
|
|
||||||
_unit setHitPointDamage ["hitHead", _headDamage];
|
|
||||||
};
|
|
||||||
|
|
||||||
_torsoDamage = _bodyStatus select 1;
|
EXPLODE_6_PVT(_bodyStatus,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL);
|
||||||
if (_torsoDamage > 0.95) then {
|
|
||||||
_unit setHitPointDamage ["hitBody", 0.95];
|
|
||||||
} else {
|
|
||||||
_unit setHitPointDamage ["hitBody", _torsoDamage];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
_unit setHitPointDamage ["hitHead", _headDamage min 0.95];
|
||||||
|
_unit setHitPointDamage ["hitBody", _torsoDamage min 0.95];
|
||||||
|
_unit setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95];
|
||||||
|
_unit setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95];
|
||||||
|
|
||||||
_handsDamage = (_bodyStatus select 2) + (_bodyStatus select 3);
|
if (_bodyStatus isEqualTo [0,0,0,0,0,0]) then {
|
||||||
if (_handsDamage > 0.95) then {
|
|
||||||
_unit setHitPointDamage ["hitHands", 0.95];
|
|
||||||
} else {
|
|
||||||
_unit setHitPointDamage ["hitHands", _handsDamage];
|
|
||||||
};
|
|
||||||
|
|
||||||
_legsDamage = (_bodyStatus select 4) + (_bodyStatus select 5);
|
|
||||||
if (_legsDamage > 0.95) then {
|
|
||||||
_unit setHitPointDamage ["hitLegs", 0.95];
|
|
||||||
} else {
|
|
||||||
_unit setHitPointDamage ["hitLegs", _legsDamage];
|
|
||||||
};
|
|
||||||
|
|
||||||
if ({_x > 0} count _bodyStatus == 0) then {
|
|
||||||
_unit setDamage 0;
|
_unit setDamage 0;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user