Medical - Cleanup settings (#7057)

* Cleanup medical settings

* Fix extra [

* Allow giving IV/blood to self by default

* Medical Blood - Settings improvements and cleanup (#7069)

* Add more blood settings and cleanup

* Fix include before header

* Update addons/medical_blood/functions/fnc_init.sqf

Co-Authored-By: PabstMirror <pabstmirror@gmail.com>

* Disable debug

* Cleanup moved settings

* Fix remaining setting descriptions
This commit is contained in:
mharis001 2019-06-28 12:50:11 -04:00 committed by PabstMirror
parent de13ab0f47
commit b2f4b8ea20
37 changed files with 552 additions and 775 deletions

View File

@ -21,6 +21,9 @@ LOG("Adding ACE_Settings to CBA_settings");
GVAR(cbaSettings_forcedSettings) = [];
GVAR(cbaSettings_missionSettings) = [];
GVAR(settings) = []; // will stay empty - for BWC?
#ifdef DEBUG_MODE_FULL
GVAR(settingsMovedToSQF) = [];
#endif
// Add Event Handlers:
[QGVAR(setSetting), {
@ -66,6 +69,13 @@ GVAR(settings) = []; // will stay empty - for BWC?
false
} count GVAR(runAtSettingsInitialized);
GVAR(runAtSettingsInitialized) = nil; //cleanup
#ifdef DEBUG_MODE_FULL
INFO_1("checking settingsMovedToSQF [%1]",count GVAR(settingsMovedToSQF));
{
if (isNil _x) then { WARNING_1("setting [%1] NOT moved to sqf",_x); };
} forEach GVAR(settingsMovedToSQF);
#endif
}] call CBA_fnc_addEventHandler;
private _start = diag_tickTime;
@ -81,6 +91,10 @@ for "_index" from 0 to (_countOptions - 1) do {
} else {
WARNING_1("Setting [%1] - Already defined from somewhere else??",_varName);
};
#ifdef DEBUG_MODE_FULL
} else {
GVAR(settingsMovedToSQF) pushBack configName _optionEntry;
#endif
};
};

View File

@ -1,34 +1,30 @@
// CBA Settings [ADDON: ace_medical]:
private _categoryArray = [LELSTRING(medical,Category), "?"];
// todo: Check the description is still accurate
[
QGVAR(spontaneousWakeUpChance), "SLIDER",
[LSTRING(MedicalSettings_spontaneousWakeUpChance_DisplayName), LSTRING(MedicalSettings_spontaneousWakeUpChance_Description)],
_categoryArray,
[0,1,0.05,2], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QGVAR(spontaneousWakeUpChance), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(limping),
"LIST",
[LSTRING(Limping_DisplayName), LSTRING(Limping_Description)],
LSTRING(Category),
[[0, 1, 2], [ELSTRING(common,Disabled), LSTRING(Limping_LimpOnOpenWounds), LSTRING(Limping_LimpRequiresStitching)], 1],
true,
{[QGVAR(limping), _this] call EFUNC(common,cbaSettings_settingChanged)},
true
] call CBA_settings_fnc_init;
[
QEGVAR(medical,limping), "LIST",
[LSTRING(setting_limping_DisplayName), LSTRING(setting_limping_Description)],
_categoryArray,
[[0,1,2],[LELSTRING(common,disabled), LLSTRING(setting_limping_limpOnOpenWounds), LLSTRING(setting_limping_limpRequiresStitching)], 1], // [values, titles, defaultIndex]
true, // isGlobal
{[QEGVAR(medical,limping), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(fractures),
"LIST",
[LSTRING(Fractures_DisplayName), LSTRING(Fractures_Description)],
LSTRING(Category),
[[0, 1, 2], [ELSTRING(common,Disabled), LSTRING(Fractures_SplintHealsFully), LSTRING(Fractures_SplintHasEffects)], 1],
true,
{[QGVAR(fractures), _this] call EFUNC(common,cbaSettings_settingChanged)},
true
] call CBA_settings_fnc_init;
[
QEGVAR(medical,fractures), "LIST",
[LSTRING(setting_fractures_DisplayName), LSTRING(setting_fractures_Description)],
_categoryArray,
[[0,1,2],[LELSTRING(common,disabled), LLSTRING(setting_fractures_splintHealsFully), LLSTRING(setting_fractures_splintHasEffects)], 1], // [values, titles, defaultIndex]
true, // isGlobal
{[QEGVAR(medical,fractures), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(spontaneousWakeUpChance),
"SLIDER",
[LSTRING(SpontaneousWakeUpChance_DisplayName), LSTRING(SpontaneousWakeUpChance_Description)],
LSTRING(Category),
[0, 1, 0.05, 2],
true
] call CBA_settings_fnc_init;

View File

@ -17,117 +17,49 @@
<Chinesesimp>ACE 医疗系统</Chinesesimp>
<Chinese>ACE 醫療系統</Chinese>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_level_DisplayName">
<English>Medical Level</English>
<Russian>Сложность медицины</Russian>
<Polish>Poziom medyczny</Polish>
<Spanish>Nivel médico</Spanish>
<German>Stufe des Sanitätssystem</German>
<Czech>Úroveň medického</Czech>
<Portuguese>Nível médico</Portuguese>
<French>Niveau de simulation médicale</French>
<Hungarian>Orvosi szint</Hungarian>
<Italian>Livello Medico</Italian>
<Japanese>医療レベル</Japanese>
<Korean>의료 수준</Korean>
<Chinesesimp>医疗等级</Chinesesimp>
<Chinese>醫療等級</Chinese>
<Key ID="STR_ACE_Medical_SpontaneousWakeUpChance_DisplayName">
<English>Unconscious Wake Up Chance</English>
<German>Wahrscheinlichkeit aufzuwachen</German>
<Japanese>気絶から覚醒する可能性</Japanese>
<Russian>Шанс очнуться при потере сознания</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_level_Description">
<English>What is the medical simulation level?</English>
<Russian>Каков уровень сложности медицинской системы?</Russian>
<Polish>Jaki jest poziom symulacji medycznej?</Polish>
<Spanish>¿Cuál es el nivel de simulación médica?</Spanish>
<German>Wie hoch soll das medizinische Simulationslevel sein?</German>
<Czech>Jaká je úroveň lékařské simulace?</Czech>
<Portuguese>Qual o nível de simulação médica?</Portuguese>
<French>Quel niveau de simulation médicale choisissez-vous?</French>
<Hungarian>Milyen komplex legyen az orvosi szimuláció?</Hungarian>
<Italian>Qual'è il livello di simulazione medica?</Italian>
<Japanese>治療の再現度は?</Japanese>
<Korean>의료 시뮬레이션의 수준</Korean>
<Chinesesimp>选择需要的医疗模拟等级</Chinesesimp>
<Chinese>選擇需要的醫療模擬等級</Chinese>
<Key ID="STR_ACE_Medical_SpontaneousWakeUpChance_Description">
<English>The probablity that a unit with stable vitals will wake up from unconsciousness (checked every 15 seconds).</English>
<German>Wahrscheinlichkeit, dass eine bewusstlose Person mit stabilen Vitalwerten wieder aufwacht ()Überprüfung alle 15 Sekunden)</German>
<Japanese>安定状態にある人が覚醒する確率です。(15 秒毎に確認)</Japanese>
<Russian>Вероятность, что стабилизированный юнит очнется от потери сознания (Проверяется каждые 15 сек)</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_disable">
<English>Disable medics</English>
<Russian>Отключить медиков</Russian>
<Polish>Wyłącz medyków</Polish>
<Spanish>Desactivar médicos</Spanish>
<German>Sanitäter deaktivieren</German>
<Czech>Zakázat zdravotníky</Czech>
<Portuguese>Desativar médicos</Portuguese>
<French>Désactiver les infirmiers</French>
<Hungarian>Orvosok letiltása</Hungarian>
<Italian>Disabilita medici</Italian>
<Japanese>衛生兵を無効化</Japanese>
<Korean>의무병 비활성화</Korean>
<Chinesesimp>关闭医护兵</Chinesesimp>
<Chinese>關閉醫護兵</Chinese>
<Key ID="STR_ACE_Medical_Limping_DisplayName">
<English>Limping</English>
<Russian>Хромота</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_DisplayName">
<English>Enable Litter</English>
<Russian>Включить мусор</Russian>
<Polish>Aktywuj odpadki</Polish>
<Spanish>Activar restos médicos</Spanish>
<German>Abfälle aktivieren</German>
<Czech>Povolit odpadky</Czech>
<Portuguese>Ativar lixo médico</Portuguese>
<French>Activer les détritus</French>
<Hungarian>Szemét engedélyezése</Hungarian>
<Italian>Abilita Barella</Italian>
<Japanese>医療廃棄物の表示を有効化</Japanese>
<Korean>의료폐기물 활성화</Korean>
<Chinesesimp>启用医疗废弃物</Chinesesimp>
<Chinese>啟用醫療廢棄物</Chinese>
<Key ID="STR_ACE_Medical_Limping_Description">
<English>Limp when unit has leg wounds...(todo)</English>
<Russian>Хромота, когда юнит имеет ранения ног...</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_Description">
<English>Enable litter being created upon treatment</English>
<Russian>Включить появление мусора после лечения</Russian>
<Polish>Twórz odpadki medyczne podczas leczenia</Polish>
<Spanish>Activar los restos médicos que se crean en el tratamiento</Spanish>
<German>Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde</German>
<Czech>Vytváří odpad zdravotnického materiálu pří léčení</Czech>
<Portuguese>Ativar lixo ser criado após tratamento</Portuguese>
<French>Activer la création de détrimus au début des traitements</French>
<Hungarian>Engedélyezi a szemét keletkezését ellátáskor</Hungarian>
<Italian>Abilita la creazione della barella dopo trattamento</Italian>
<Japanese>治療を始めると、医療廃棄物の作成を有効化する</Japanese>
<Korean>의료폐기물이 치료중 주변에 생성되는것을 활성화 합니다</Korean>
<Chinesesimp>本功能启用后,当每次医疗动作结束时,地上会产生相应的医疗废弃物</Chinesesimp>
<Chinese>本功能啟用後,當每次醫療動作結束時,地上會產生相應的醫療廢棄物</Chinese>
<Key ID="STR_ACE_Medical_Limping_LimpOnOpenWounds">
<English>Limp on open wounds</English>
<Russian>Хромота при открытых ранах</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_DisplayName">
<English>Life time of litter objects</English>
<Russian>Время удаления мусора</Russian>
<Polish>Długość życia odpadków</Polish>
<Spanish>Tiempo de vida de los restos médicos</Spanish>
<German>Dauer des angezeigten Abfalls</German>
<Czech>Životnost pro odpadky</Czech>
<Portuguese>Tempo de vida dos objetos do lixo</Portuguese>
<French>Durée d'affichage des détritus</French>
<Hungarian>Szemétobjektumok élettartama</Hungarian>
<Italian>Tempo di vita delle barelle</Italian>
<Japanese>医療廃棄物の作成限界数を設定</Japanese>
<Korean>의료폐기물 시간제한</Korean>
<Chinesesimp>医疗废弃物存在时间</Chinesesimp>
<Chinese>醫療廢棄物存在時間</Chinese>
<Key ID="STR_ACE_Medical_Limping_LimpRequiresStitching">
<English>Limp on open or bandaged wounds</English>
<Russian>Хромота при открытых или забинтованых ранах</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_Description">
<English>How long should litter objects stay? In seconds. -1 is forever.</English>
<Russian>Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время.</Russian>
<Polish>Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.</Polish>
<Spanish>¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre.</Spanish>
<German>Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.</German>
<Czech>Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy.</Czech>
<Portuguese>Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre.</Portuguese>
<French>Combien de temps doivent rester affiché les détritus? En secondes. -1 pour tout le temps</French>
<Hungarian>Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent.</Hungarian>
<Italian>Per quanto devono restare le barelle? In secondi. -1 è permanente</Italian>
<Japanese>医療廃棄物オブジェクトが表示されつづける時間を設定しますか? -1 は永遠です。</Japanese>
<Korean>얼마동안 폐기물이 존재합니까? 초 단위. -1 은 영구적.</Korean>
<Chinesesimp>定义医疗废弃物存在时间,以秒为单位,-1为永远存在。</Chinesesimp>
<Chinese>定義醫療廢棄物存在時間,以秒為單位,-1為永遠存在。</Chinese>
<Key ID="STR_ACE_Medical_Fractures_DisplayName">
<English>Fractures</English>
<Russian>Переломы</Russian>
</Key>
<Key ID="STR_ACE_Medical_Fractures_Description">
<English>Limp fractures... (todo)</English>
<Russian>Хромота при переломах...</Russian>
</Key>
<Key ID="STR_ACE_Medical_Fractures_SplintHealsFully">
<English>Splints fully heal fractures</English>
<Russian>Шины полностью лечат перелом</Russian>
</Key>
<Key ID="STR_ACE_Medical_Fractures_SplintHasEffects">
<English>Splints heal (but cannot sprint)</English>
<Russian>Шины вылечивают, но не дают бегать</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_remoteControlledAI_DisplayName">
<English>Remote Controlled AI</English>
@ -209,21 +141,6 @@
<Chinesesimp>医疗系统将同时对玩家与AI发生作用</Chinesesimp>
<Chinese>醫療系統將同時對玩家與AI發生作用</Chinese>
</Key>
<Key ID="STR_ACE_Medical_BasicMedicalSettings_Module_DisplayName">
<English>Basic Medical Settings [ACE]</English>
<German>Standard Sanitätseinstellungen [ACE]</German>
<Polish>Podstawowe ustawienia medyczne</Polish>
<Spanish>Ajustes médicos básicos [ACE]</Spanish>
<French>Paramètres des soins basiques [ACE]</French>
<Italian>Impostazioni Mediche Di Base [ACE]</Italian>
<Czech>Základní zdravotnické nastavení [ACE]</Czech>
<Portuguese>Ajustes médicos básicos [ACE]</Portuguese>
<Russian>Настройки базовой медицины [ACE]</Russian>
<Japanese>ベーシック医療設定 [ACE]</Japanese>
<Korean>기본 의료 설정 [ACE]</Korean>
<Chinesesimp>基本医疗设定 [ACE]</Chinesesimp>
<Chinese>基本醫療設定 [ACE]</Chinese>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableFor_DisplayName">
<English>Enabled for</English>
<Russian>Включено для</Russian>
@ -320,21 +237,6 @@
<Chinesesimp>设定人员是否会因为载具冲撞别的物件而产生伤害?</Chinesesimp>
<Chinese>設定人員是否會因為載具衝撞別的物件而產生傷害?</Chinese>
</Key>
<Key ID="STR_ACE_Medical_BasicMedicalSettings_useLocation_basicEpi_Description">
<English>Where can the Epinephrine be used? (Basic Medical)</English>
<German>Wo kann Epiniphrin verwendet werden? (Standard Sanitätseinstellungen)</German>
<Spanish>Configura donde puede usarse Epinefrina (Solo sistema médico básico)</Spanish>
<Polish>Gdzie można korzystać z adrenaliny? (Podstawowy system medyczny)</Polish>
<French>Où peut être utilisé l'épinéphrine ? (Médical basique)</French>
<Italian>Dove si può usare l'epinefrina? (Sistema medico di base)</Italian>
<Czech>Kde může být použit adrenalin? (Pouze základní zdravotní systém)</Czech>
<Portuguese>Onde pode-se usar a Epinefrina? (Somente sistema médico básico)</Portuguese>
<Russian>Где может использоваться адреналин? (Базовая медицина)</Russian>
<Japanese>どこでもアドレナリンを使えるようにしますか? (ベーシック医療のみ)</Japanese>
<Korean>어디에서 에피네프린을 사용할 수 있습니까? (기본 의료)</Korean>
<Chinesesimp>在哪里可以使用肾上腺素? (基本医疗)</Chinesesimp>
<Chinese>在哪裡可以使用腎上腺素? (基本醫療)</Chinese>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_healHitPointAfterAdvBandage_DisplayName">
<English>Heal hitpoints</English>
<German>Heile Trefferpunkte</German>
@ -440,18 +342,6 @@
<Chinesesimp>设定当距离超过%1将不能使用治疗动作</Chinesesimp>
<Chinese>設定當距離超過%1將不能使用治療動作</Chinese>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_spontaneousWakeUpChance_DisplayName">
<English>Unconscious Wake Up Chance</English>
<German>Wahrscheinlichkeit aufzuwachen</German>
<Japanese>気絶から覚醒する可能性</Japanese>
<Russian>Шанс очнуться при потере сознания</Russian>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_spontaneousWakeUpChance_Description">
<English>Probablity that a unit with stable vitals will wake up from unconscious [Checked every 15 sec]</English>
<German>Wahrscheinlichkeit, dass eine bewusstlose Person mit stabilen Vitalwerten wieder aufwacht [Überprüfung alle 15 Sekunden]</German>
<Japanese>安定状態にある人が覚醒する確率です。(15 秒毎に確認)</Japanese>
<Russian>Вероятность, что стабилизированный юнит очнется от потери сознания [Проверяется каждые 15 сек]</Russian>
</Key>
<Key ID="STR_ACE_Medical_openLid">
<English>Open lid</English>
<German>Deckel aufklappen</German>
@ -474,37 +364,5 @@
<Polish>Zamknij pokrywę</Polish>
<Russian>Закрыть крышку</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_limping_DisplayName">
<English>Limping</English>
<Russian>Хромота</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_limping_Description">
<English>Limp when unit has leg wounds...(todo)</English>
<Russian>Хромота, когда юнит имеет ранения ног...</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_limping_limpOnOpenWounds">
<English>Limp on open wounds</English>
<Russian>Хромота при открытых ранах</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_limping_limpRequiresStitching">
<English>Limp on open or bandaged wounds</English>
<Russian>Хромота при открытых или забинтованых ранах</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_fractures_DisplayName">
<English>Fractures</English>
<Russian>Переломы</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_fractures_Description">
<English>Limp fractures... (todo)</English>
<Russian>Хромота при переломах...</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_fractures_splintHealsFully">
<English>Splints fully heal fractures</English>
<Russian>Шины полностью лечат перелом</Russian>
</Key>
<Key ID="STR_ACE_Medical_setting_fractures_splintHasEffects">
<English>Splints heal (but cannot sprint)</English>
<Russian>Шины вылечивают, но не дают бегать</Russian>
</Key>
</Package>
</Project>

View File

@ -1,4 +1,3 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));

View File

@ -1,7 +1,7 @@
ace_medical_blood
===============
=================
Adds blood visual effect on the ground near a bleeding player.
Creates blood drops on the ground near bleeding units.
## Maintainers

View File

@ -1,7 +1,7 @@
PREP(cleanupLoop);
PREP(createBlood);
PREP(handleWoundReceived);
PREP(init);
PREP(isBleeding);
PREP(onBleeding);
PREP(createBlood);
PREP(serverCleanupBlood);
PREP(spurt);

View File

@ -10,33 +10,18 @@ if (isServer) then {
[QGVAR(bloodDropCreated), {
params ["_bloodDrop"];
// Add to created queue with format [expireTime, object]
private _index = GVAR(bloodDrops) pushBack [(CBA_missionTime + BLOOD_OBJECT_LIFETIME), _bloodDrop];
if (count GVAR(bloodDrops) >= MAX_BLOOD_OBJECTS) then {
// Add to created queue with format: [expire time, blood object]
private _index = GVAR(bloodDrops) pushBack [CBA_missionTime + GVAR(bloodLifetime), _bloodDrop];
if (count GVAR(bloodDrops) >= GVAR(maxBloodObjects)) then {
(GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"];
deleteVehicle _deletedBloodDrop;
};
if (_index == 1) then { // Start the waitAndExecute loop
[FUNC(serverCleanupBlood), [], BLOOD_OBJECT_LIFETIME] call CBA_fnc_waitAndExecute;
// Start the cleanup loop
if (_index == 0) then {
[FUNC(cleanupLoop), [], GVAR(bloodLifetime)] call CBA_fnc_waitAndExecute;
};
}] call CBA_fnc_addEventHandler;
};
["ace_settingsInitialized", {
TRACE_1("settingsInitialized", GVAR(enabledFor));
if (GVAR(enabledFor) == 0) exitWith {}; // 0: disabled
if ((GVAR(enabledFor) == 1) && {!hasInterface}) exitWith {}; // 1: enabledFor_OnlyPlayers
private _listcode = if (GVAR(enabledFor) == 1) then {
{if (alive ACE_player) then {[ACE_player]} else {[]}} // ace_player is only possible local player
} else {
EFUNC(common,getLocalUnits) // filter all local units
};
private _stateMachine = [_listcode, true] call CBA_statemachine_fnc_create;
[_stateMachine, LINKFUNC(onBleeding), {}, {}, "Bleeding"] call CBA_statemachine_fnc_addState;
[QEGVAR(medical,woundReceived), FUNC(handleWoundReceived)] call CBA_fnc_addEventHandler;
}] call CBA_fnc_addEventHandler;

View File

@ -14,5 +14,5 @@ class CfgPatches {
};
};
#include "ACE_Settings.hpp"
#include "CfgEventHandlers.hpp"
#include "ACE_Settings.hpp"

View File

@ -1,23 +1,26 @@
#include "script_component.hpp"
/*
* Author: PabstMirror
* Loop that cleans up blood
* Handles cleaning up blood objects that have reached the end of their lifetime.
*
* Arguments:
* None
*
* ReturnValue:
* Return Value:
* None
*
* Example:
* [] call ace_medical_blood_fnc_cleanupLoop
*
* Public: No
*/
(GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"];
deleteVehicle _deletedBloodDrop;
// If we cleaned out the array, exit loop
// Exit the loop if we have cleaned out the array
if (GVAR(bloodDrops) isEqualTo []) exitWith {};
// Wait until the next blood drop in the queue will expire
(GVAR(bloodDrops) select 0) params ["_expireTime"];
[FUNC(serverCleanupBlood), [], (_expireTime - CBA_missionTime)] call CBA_fnc_waitAndExecute;
[FUNC(cleanupLoop), [], _expireTime - CBA_missionTime] call CBA_fnc_waitAndExecute;

View File

@ -1,15 +1,15 @@
#include "script_component.hpp"
/*
* Author: Glowbal
* Spawn a blood drop.
* Creates a blood object and handles its cleanup.
* Available blood drop classes are blooddrop_1 through blooddrop_4.
*
* Arguments:
* 0: classname of blood drop <OBJECT>
* 0: Blood Drop Type <STRING>
* 1: Position <ARRAY>
*
* Return Value:
* Created blood drop <OBJECT>
* Blood Drop <OBJECT>
*
* Example:
* ["blooddrop_2", getPos player] call ace_medical_blood_fnc_createBlood
@ -17,15 +17,15 @@
* Public: No
*/
params ["_type", "_pos"];
TRACE_2("creating blood",_type,_pos);
params ["_type", "_position"];
TRACE_2("Creating blood",_type,_position);
private _model = GVAR(models) getVariable _type;
private _object = createSimpleObject [_model, [0,0,0]];
_object setDir random 360;
_object setPos _pos;
private _bloodDrop = createSimpleObject [_model, [0, 0, 0]];
_bloodDrop setDir random 360;
_bloodDrop setPos _position;
[QGVAR(bloodDropCreated), [_object]] call CBA_fnc_serverEvent;
[QGVAR(bloodDropCreated), _bloodDrop] call CBA_fnc_serverEvent;
_object
_bloodDrop

View File

@ -1,13 +1,13 @@
#include "script_component.hpp"
/*
* Author: Glowbal, commy2
* Handle wounds received event.
* Handles the wounds received event by triggering any needed blood creation.
*
* Arguments:
* 0: unit <OBJECT>
* 1: bodyPart <String>
* 2: damage <NUMBER>
* 3: shooter <OBJECT>
* 0: Unit <OBJECT>
* 1: Body Part (not used) <STRING>
* 2: Damage <NUMBER>
* 3: Shooter <OBJECT>
*
* Return Value:
* None
@ -20,16 +20,16 @@
params ["_unit", "", "_damage", "_shooter"];
if (GVAR(enabledFor) == 1 && {!isPlayer _unit && {_unit != ACE_player}}) exitWith {};
if (vehicle _unit != _unit && {!((vehicle _unit) isKindOf "StaticWeapon")}) exitWith {}; // Don't bleed on ground if mounted
// Don't bleed when players only and a non-player unit is wounded
if (GVAR(enabledFor) == BLOOD_ONLY_PLAYERS && {!isPlayer _unit && {_unit != ACE_player}}) exitWith {};
_damage = _damage min 1;
// Don't bleed on the ground if in a vehicle
if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")}) exitWith {};
if (isNull _shooter) exitWith { // won't be able to calculate the direction properly, so instead we pick something at random
[QGVAR(spurt), [_unit, random 360, _damage]] call CBA_fnc_serverEvent;
private _bulletDir = if (isNull _shooter) then {
random 360 // Cannot calculate the direction properly, pick a random direction
} else {
_shooter getDir _unit // Calculate the bullet direction
};
// Calculate bulletDirection
private _bulletDir = _shooter getDir _unit;
[QGVAR(spurt), [_unit, _bulletDir, _damage]] call CBA_fnc_serverEvent;
[QGVAR(spurt), [_unit, _bulletDir, _damage min 1]] call CBA_fnc_serverEvent;

View File

@ -0,0 +1,65 @@
#include "script_component.hpp"
/*
* Author: mharis001
* Initializes the medical blood system based on the given mode.
* Should only be called from the CBA setting changed script.
*
* Arguments:
* 0: Mode <NUMBER>
*
* Return Value:
* None
*
* Example:
* [2] call ace_medical_blood_fnc_init
*
* Public: No
*/
params ["_mode"];
// Exit if setting is refreshed to the same value
if (!isNil QGVAR(currentSetup) && {_mode == GVAR(currentSetup)}) exitWith {
TRACE_2("Setting refreshed to current setup",GVAR(currentSetup),_mode);
};
// Track this new configuration that will be set up
GVAR(currentSetup) = _mode;
// Delete current state machine if it exists
if (!isNil QGVAR(stateMachine)) then {
GVAR(stateMachine) call CBA_statemachine_fnc_delete;
GVAR(stateMachine) = nil;
};
// Remove wound received if it was previously added
if (!isNil QGVAR(woundReceivedEH)) then {
[QEGVAR(medical,woundReceived), GVAR(woundReceivedEH)] call CBA_fnc_removeEventHandler;
GVAR(woundReceivedEH) = nil;
};
// Don't need to set up anything if blood is disabled or players only on a non-player machine
if (_mode == BLOOD_DISABLED || {_mode == BLOOD_ONLY_PLAYERS && {!hasInterface}}) exitWith {
TRACE_1("Mode does not require any setup",_mode);
};
private _listCode = if (_mode == BLOOD_ONLY_PLAYERS) then {
// ACE_player is the only possible local player
{
if (alive ACE_player) then {
[ACE_player]
} else {
[]
};
}
} else {
// Filter all local units
EFUNC(common,getLocalUnits)
};
GVAR(stateMachine) = [_listCode, true] call CBA_statemachine_fnc_create;
[GVAR(stateMachine), LINKFUNC(onBleeding), {}, {}, "Bleeding"] call CBA_statemachine_fnc_addState;
GVAR(woundReceivedEH) = [QEGVAR(medical,woundReceived), FUNC(handleWoundReceived)] call CBA_fnc_addEventHandler;
TRACE_3("Set up state machine and wounds event",_mode,GVAR(stateMachine),GVAR(woundReceivedEH));

View File

@ -1,13 +1,13 @@
#include "script_component.hpp"
/*
* Author: Glowbal
* Check if is bleeding
* Checks if the given unit is bleeding. Handles both ACE Medical and Vanilla.
*
* Arguments:
* 0: unit <TYPE>
* 0: Unit <OBJECT>
*
* Return Value:
* is Bleeding <BOOL>
* Is Bleeding <BOOL>
*
* Example:
* [player] call ace_medical_blood_fnc_isBleeding

View File

@ -1,13 +1,14 @@
#include "script_component.hpp"
/*
* Author: Glowbal
* handle bleeding state (state machine)
* Handles periodically creating blood for a bleeding unit.
* Called from the medical_blood state machine.
*
* Arguments:
* 0: unit <TYPE>
* 0: Unit <OBJECT>
*
* Return Value:
* is Bleeding <BOOL>
* None
*
* Example:
* [player] call ace_medical_blood_fnc_onBleeding
@ -17,20 +18,20 @@
params ["_unit"];
if (!([_unit] call FUNC(isBleeding))) exitWith {};
if (((vehicle _unit) != _unit) && {!((vehicle _unit) isKindOf "StaticWeapon")}) exitWith {}; // Don't bleed on ground if mounted
// Nothing to do if unit is not bleeding
if !(_unit call FUNC(isBleeding)) exitWith {};
// Don't bleed on the ground if in a vehicle
if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")}) exitWith {};
if (CBA_missionTime > (_unit getVariable [QGVAR(nextTime), -10])) then {
private _bloodLoss = (if (GVAR(useAceMedical)) then {GET_BLOOD_LOSS(_unit) * 2.5} else {getDammage _unit * 2}) min 6;
TRACE_2("",_unit,_bloodLoss);
_unit setVariable [QGVAR(nextTime), CBA_missionTime + 8 + random 2 - _bloodLoss];
TRACE_2("Creating blood drop for bleeding unit",_unit,_bloodLoss);
private _position = getPosASL _unit;
_position = _position vectorAdd [
random 0.4 - 0.2,
random 0.4 - 0.2,
0
];
_position = _position vectorAdd [random 0.4 - 0.2, random 0.4 - 0.2, 0];
_position set [2, 0];
private _bloodDrop = ["blooddrop_1", "blooddrop_2", "blooddrop_3", "blooddrop_4"] select floor (_bloodLoss min 3);

View File

@ -1,18 +1,18 @@
#include "script_component.hpp"
/*
* Author: Sickboy
* Spurt blood on the ground
* Spurts blood on the ground based on the direction and damage.
*
* Arguments:
* 0: unit <OBJECT>
* 1: direction <NUMBER>
* 2: damage <NUMBER>
* 0: Unit <OBJECT>
* 1: Direction <NUMBER>
* 2: Damage <NUMBER>
*
* Return Value:
* None
*
* Example:
* [UNIT, random 360, 1] call ace_medical_blood_fnc_spurt
* [player, random 360, 1] call ace_medical_blood_fnc_spurt
*
* Public: No
*/
@ -21,20 +21,20 @@
#define DISTANCE_BETWEEN_DROPS 0.20
#define OFFSET 0.25
params ["_unit", "_dir", "_damage"];
params ["_unit", "_direction", "_damage"];
private _distanceBetweenDrops = DISTANCE_BETWEEN_DROPS * _damage;
private _offset = OFFSET + _distanceBetweenDrops;
private _pos = _unit getPos [_offset, _dir];
private _position = _unit getPos [_offset, _direction];
["blooddrop_2", _pos, _dir] call FUNC(createBlood);
["blooddrop_2", _position, _direction] call FUNC(createBlood);
private _dropAmount = ceil (MAXIMUM_DROPS * _damage);
TRACE_2("spurt blood",_dropAmount,_damage);
TRACE_2("Spurting blood",_dropAmount,_damage);
if (_dropAmount > 1) then {
for "_i" from 2 to _dropAmount do {
_pos = _pos getPos [_distanceBetweenDrops, _dir];
["blooddrop_1", _pos, _dir] call FUNC(createBlood);
_position = _position getPos [_distanceBetweenDrops, _direction];
["blooddrop_1", _position, _direction] call FUNC(createBlood);
};
};

View File

@ -1,13 +1,27 @@
// CBA Settings [ADDON: ace_medical_blood]:
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
[
QGVAR(enabledFor),
"LIST",
[LSTRING(EnabledFor_DisplayName), LSTRING(EnabledFor_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[[BLOOD_DISABLED, BLOOD_ONLY_PLAYERS, BLOOD_ENABLED], [ELSTRING(Common,Disabled), LSTRING(OnlyPlayers), ELSTRING(Common,Enabled)], 2],
true,
LINKFUNC(init)
] call CBA_settings_fnc_init;
[
QGVAR(enabledFor), "LIST",
[LSTRING(MedicalBloodSettings_enabledFor_DisplayName), LSTRING(MedicalBloodSettings_enabledFor_Description)],
_categoryArray,
[[0,1,2],[LELSTRING(Common,Disabled),LLSTRING(enabledFor_OnlyPlayers),LELSTRING(Common,Enabled)],2], // [values, titles, defaultIndex]
true, // isGlobal
{[QGVAR(enabledFor), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(maxBloodObjects),
"LIST",
[LSTRING(MaxBloodObjects_DisplayName), LSTRING(MaxBloodObjects_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[[50, 100, 200, 300, 400, 500, 1000, 2000, 3000, 4000, 5000], [/* settings function will auto create names */], 5],
true
] call CBA_settings_fnc_init;
[
QGVAR(bloodLifetime),
"TIME",
[LSTRING(BloodLifetime_DisplayName), LSTRING(BloodLifetime_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[1, 3600, 900],
true
] call CBA_settings_fnc_init;

View File

@ -2,7 +2,7 @@
#define COMPONENT_BEAUTIFIED Medical Blood
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_ENABLED_MEDICAL_BLOOD
// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS
@ -17,5 +17,6 @@
#include "\z\ace\addons\medical_engine\script_macros_medical.hpp"
#include "\z\ace\addons\main\script_macros.hpp"
#define MAX_BLOOD_OBJECTS 500
#define BLOOD_OBJECT_LIFETIME 900
#define BLOOD_DISABLED 0
#define BLOOD_ONLY_PLAYERS 1
#define BLOOD_ENABLED 2

View File

@ -1,25 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="medical_blood">
<Key ID="STR_ACE_medical_blood_subCategory">
<English>Bleeding Effect</English>
<German>Blutungseffekt</German>
<Japanese>出血中の効果</Japanese>
<Russian>Эффекты кровотечения</Russian>
<Package name="Medical_Blood">
<Key ID="STR_ACE_Medical_Blood_SubCategory">
<English>Blood</English>
<French>Sang</French>
<Spanish>Sangre</Spanish>
<Italian>Sangue</Italian>
<Polish>Krew</Polish>
<Russian>Кровь</Russian>
<German>Blut</German>
<Czech>Krev</Czech>
<Portuguese>Sangue</Portuguese>
<Korean>혈흔</Korean>
<Japanese></Japanese>
</Key>
<Key ID="STR_ACE_medical_blood_enabledFor_OnlyPlayers">
<English>Only Players</English>
<Japanese>プレイヤーのみ</Japanese>
<German>Nur Spieler</German>
<Korean>오직 플레이어만</Korean>
<Polish>Tylko gracze</Polish>
<French>Joueurs seulement</French>
<Italian>Solo Giocatori</Italian>
<Chinesesimp>只有玩家</Chinesesimp>
<Chinese>只有玩家</Chinese>
<Russian>Только игроки</Russian>
</Key>
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_DisplayName">
<Key ID="STR_ACE_Medical_Blood_EnabledFor_DisplayName">
<English>Enable Blood Drops</English>
<Japanese>血痕を有効化</Japanese>
<German>Aktiviere Blutspritzer</German>
@ -31,17 +26,32 @@
<Chinese>開啟血液滴落效果</Chinese>
<Russian>Разрешить капли крови</Russian>
</Key>
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_Description">
<English>Enable or disable Blood Drops created on bleeding and taking damage</English>
<Japanese>ダメージを受けたり、出血していると出る血痕の有効か無効化</Japanese>
<German>Aktiviere oder deaktiviere Blutspritzer, die durch Blutungen oder bei Schadensnahme entstehen.</German>
<Polish>Włącz lub wyłącz pozostawianie śladów krwi na ziemi kiedy postać odnosi obrażenia bądź krwawi</Polish>
<French>(Dés)active les gouttes de sang lors d'un saignement ou de blessure</French>
<Italian>Abilita o disabilita la Perdite di Sangue create sanguinando e prendendo danno</Italian>
<Chinesesimp>开启后, 会让受伤时伤口有血液滴落的效果</Chinesesimp>
<Chinese>開啟後, 會讓受傷時傷口有血液滴落的效果</Chinese>
<Korean>출혈이나 부상을 입었을 때, 떨어지는 혈액을 활성화 하거나 비활성화 합니다.</Korean>
<Russian>Включает или отключает капли крови при кровотечении и получении урона</Russian>
<Key ID="STR_ACE_Medical_Blood_EnabledFor_Description">
<English>Enables the creation of blood drops when units are bleeding or take damage.</English>
</Key>
<Key ID="STR_ACE_Medical_Blood_MaxBloodObjects_DisplayName">
<English>Max Blood Objects</English>
</Key>
<Key ID="STR_ACE_Medical_Blood_MaxBloodObjects_Description">
<English>Sets the maximum number of blood drop objects which can be spawned, excessive amounts can cause FPS lag.</English>
</Key>
<Key ID="STR_ACE_Medical_Blood_BloodLifetime_DisplayName">
<English>Blood Lifetime</English>
</Key>
<Key ID="STR_ACE_Medical_Blood_BloodLifetime_Description">
<English>Controls the lifetime of blood drop objects.</English>
</Key>
<Key ID="STR_ACE_Medical_Blood_OnlyPlayers">
<English>Only Players</English>
<Japanese>プレイヤーのみ</Japanese>
<German>Nur Spieler</German>
<Korean>오직 플레이어만</Korean>
<Polish>Tylko gracze</Polish>
<French>Joueurs seulement</French>
<Italian>Solo Giocatori</Italian>
<Chinesesimp>只有玩家</Chinesesimp>
<Chinese>只有玩家</Chinese>
<Russian>Только игроки</Russian>
</Key>
</Package>
</Project>

View File

@ -1,23 +1,17 @@
// CBA Settings [ADDON: ace_medical_damage]:
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
[
QEGVAR(medical,playerDamageThreshold), "SLIDER",
[LSTRING(playerDamageThreshold_DisplayName), LSTRING(playerDamageThreshold_Description)],
_categoryArray,
[0,25,1,2], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QEGVAR(medical,playerDamageThreshold), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QEGVAR(medical,playerDamageThreshold),
"SLIDER",
[LSTRING(PlayerDamageThreshold_DisplayName), LSTRING(PlayerDamageThreshold_Description)],
ELSTRING(medical,Category),
[0, 25, 1, 2],
true
] call CBA_settings_fnc_init;
[
QEGVAR(medical,AIDamageThreshold), "SLIDER",
QEGVAR(medical,AIDamageThreshold),
"SLIDER",
[LSTRING(AIDamageThreshold_DisplayName), LSTRING(AIDamageThreshold_Description)],
_categoryArray,
[0,25,1,2], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QEGVAR(medical,AIDamageThreshold), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
ELSTRING(medical,Category),
[0, 25, 1, 2],
true
] call CBA_settings_fnc_init;

View File

@ -1,78 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Medical_Damage">
<Container name="Settings">
<Key ID="STR_ACE_Medical_damage_subCategory">
<English>Damage Threshold</English>
<German>Schaden</German>
<Japanese>損傷のしきい値</Japanese>
<Russian>Порог повреждения</Russian>
</Key>
<Key ID="STR_ACE_Medical_damage_playerDamageThreshold_DisplayName">
<English>Player Damage</English>
<Russian>Урон игроку</Russian>
<Polish>Próg obrażeń graczy</Polish>
<Spanish>Daño de jugador</Spanish>
<German>Spielerschaden</German>
<Czech>Poškození hráče</Czech>
<Portuguese>Dano do jogador</Portuguese>
<French>Dégats du joueur</French>
<Hungarian>Játékos sérülés</Hungarian>
<Italian>Danno Giocatore</Italian>
<Japanese>プレイヤーへの損傷</Japanese>
<Korean>플레이어 부상</Korean>
<Chinesesimp>玩家伤害</Chinesesimp>
<Chinese>玩家傷害</Chinese>
</Key>
<Key ID="STR_ACE_Medical_damage_playerDamageThreshold_Description">
<English>What is the damage a player can take before being killed?</English>
<Russian>Какой уровень урона необходим, чтобы убить игрока?</Russian>
<Polish>Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity?</Polish>
<Spanish>¿Cuál es el daño que un jugador puede sufrir antes de morir?</Spanish>
<German>Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird?</German>
<Czech>Jaké poškození může hráč dostat než bude zabit?</Czech>
<Portuguese>Qal é o dano que um jogador pode sofrer antes de morrer?</Portuguese>
<French>Quels dégâts peut subir un joueur avant d'être tué</French>
<Hungarian>Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal?</Hungarian>
<Italian>Quanto è il danno che un giocatore può sostenere prima di essere ucciso?</Italian>
<Japanese>プレイヤーが死に始める前に損傷を受けるようにしますか?</Japanese>
<Korean>얼마정도의 부상을 플레이어가 죽기 전까지 버틸 수 있습니까?</Korean>
<Chinesesimp>玩家死亡前所能承受的伤害程度</Chinesesimp>
<Chinese>玩家死亡前所能承受的傷害程度</Chinese>
</Key>
<Key ID="STR_ACE_Medical_damage_AIDamageThreshold_DisplayName">
<English>AI Damage</English>
<Russian>Урон ботам</Russian>
<Polish>Próg obrażeń AI</Polish>
<Spanish>Daño IA</Spanish>
<German>KI-Schaden</German>
<Czech>Poškození AI</Czech>
<Portuguese>Dano da IA</Portuguese>
<French>Dégâts des IA</French>
<Hungarian>AI sérülés</Hungarian>
<Italian>Danno AI</Italian>
<Japanese>AI への損傷</Japanese>
<Korean>인공지능 부상</Korean>
<Chinesesimp>AI伤害</Chinesesimp>
<Chinese>AI傷害</Chinese>
</Key>
<Key ID="STR_ACE_Medical_damage_AIDamageThreshold_Description">
<English>What is the damage an AI can take before being killed?</English>
<Russian>Какой уровень урона необходим, чтобы убить бота?</Russian>
<Polish>Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite?</Polish>
<Spanish>¿Cuál es el daño que la IA puede sufrir antes de morir?</Spanish>
<German>Wie viel Schaden kann eine KI erleiden, bis sie getötet wird?</German>
<Czech>Jaké poškození může AI dostat než bude zabito?</Czech>
<Portuguese>Qual é o dano que uma IA pode sofrer antes de morrer?</Portuguese>
<French>Quels dégâts peut subir une IA avant d'être tuée</French>
<Hungarian>Mennyi sérülést szenvedhet el egy AI, mielőtt meghal?</Hungarian>
<Italian>Quanto è il danno che un'IA può sostenere prima di essere uccisa?</Italian>
<Japanese>AI が死に始める前に損傷を受けるようにしますか?</Japanese>
<Korean>얼마정도의 부상을 인공지능이 죽기 전까지 버틸 수 있습니까?</Korean>
<Chinesesimp>AI 死亡前所能承受的伤害程度</Chinesesimp>
<Chinese>AI 死亡前所能承受的傷害程度</Chinese>
</Key>
</Container>
<Key ID="STR_ACE_Medical_Damage_PlayerDamageThreshold_DisplayName">
<English>Player Critical Damage Threshold</English>
</Key>
<Key ID="STR_ACE_Medical_Damage_PlayerDamageThreshold_Description">
<English>Sets the amount of damage a player can receive before going unconscious.</English>
</Key>
<Key ID="STR_ACE_Medical_Damage_AIDamageThreshold_DisplayName">
<English>AI Critical Damage Threshold</English>
</Key>
<Key ID="STR_ACE_Medical_Damage_AIDamageThreshold_Description">
<English>Sets the amount of damage an AI unit can receive before going unconscious.</English>
</Key>
<Key ID="STR_ACE_Medical_Damage_Abrasion">
<English>Scrape</English>
<German>Kratzer</German>

View File

@ -1,4 +1,5 @@
class ACE_Settings {
/*
// Not currently used anywhere
class GVAR(enableScreams) {
category = ECSTRING(medical,Category_Medical);
@ -7,4 +8,5 @@ class ACE_Settings {
typeName = "BOOL";
value = 1;
};
*/
};

View File

@ -1,21 +1,16 @@
// CBA Settings [ADDON: ace_medical_feedback]:
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
[
QGVAR(painEffectType),
"LIST",
[localize LSTRING(painEffectType), "Selects the used pain effect type"], //@todo
_categoryArray,
[
[0, 1],
[LLSTRING(painEffectType_whiteFlashing), LLSTRING(painEffectType_pulsingBlur)],
0
],
[LSTRING(PainEffectType_DisplayName), LSTRING(PainEffectType_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[[0, 1], [LSTRING(PainEffectType_WhiteFlashing), LSTRING(PainEffectType_PulsingBlur)], 0],
false,
{
if (isNil QGVAR(ppPain)) exitWith {TRACE_1("Before Post-Init",_this)};
TRACE_1("reseting ppEffect type",_this);
if (isNil QGVAR(ppPain)) exitWith {
TRACE_1("painEffectType setting - before postInit",_this);
};
TRACE_1("painEffectType setting - resetting effect",_this);
[true] call FUNC(initEffects);
}
] call CBA_Settings_fnc_init;

View File

@ -1,13 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Medical_Feedback">
<Key ID="STR_ACE_Medical_Feedback_SubCategory">
<English>Feedback</English>
<German>Feedback</German>
<Japanese>フィードバック</Japanese>
<Russian>Реакция на ранения</Russian>
</Key>
<Key ID="STR_ACE_Medical_Feedback_PainEffectType_DisplayName">
<English>Pain Effect Type</English>
<German>Schmerzeffekt-Typ</German>
<Polish>Rodzaj efektu bólu</Polish>
<Russian>Визуальный эффект боли</Russian>
<Italian>Pain Effect Type</Italian>
<Spanish>Tipo de efecto de dolor</Spanish>
<French>Type d'effet de douleur</French>
<Hungarian>Fájdalom-effekt típusa</Hungarian>
<Portuguese>Tipo do efeito de dor</Portuguese>
<Czech>Typ bolesti - efekt</Czech>
<Japanese>痛み効果の種類</Japanese>
<Korean>고통 효과 종류</Korean>
</Key>
<Key ID="STR_ACE_Medical_Feedback_PainEffectType_Description">
<English>Selects the used pain effect type.</English>
</Key>
<Key ID="STR_ACE_Medical_Feedback_PainEffectType_WhiteFlashing">
<English>White Flashing</English>
<German>Weißes blinken</German>
<Japanese>白く点滅</Japanese>
<Russian>Белые вспышки</Russian>
</Key>
<Key ID="STR_ACE_Medical_Feedback_PainEffectType_PulsingBlur">
<English>Pulsing Blur</English>
<German>Wiederkehrende Unschärfe</German>
<Japanese>ボケの強弱</Japanese>
<Russian>Пульсирующее размытие</Russian>
</Key>
<Container name="Settings">
<Key ID="STR_ACE_Medical_feedback_subCategory">
<English>Feedback</English>
<German>Feedback</German>
<Japanese>フィードバック</Japanese>
<Russian>Реакция на ранения</Russian>
</Key>
<Key ID="STR_ACE_Medical_feedback_enableScreams_DisplayName">
<English>Enable Screams</English>
<Russian>Включить крики</Russian>
@ -41,31 +70,5 @@
<Chinese>啟用傷者的尖叫聲</Chinese>
</Key>
</Container>
<Key ID="STR_ACE_Medical_feedback_painEffectType">
<English>Pain Effect Type</English>
<German>Schmerzeffekt-Typ</German>
<Polish>Rodzaj efektu bólu</Polish>
<Russian>Визуальный эффект боли</Russian>
<Italian>Pain Effect Type</Italian>
<Spanish>Tipo de efecto de dolor</Spanish>
<French>Type d'effet de douleur</French>
<Hungarian>Fájdalom-effekt típusa</Hungarian>
<Portuguese>Tipo do efeito de dor</Portuguese>
<Czech>Typ bolesti - efekt</Czech>
<Japanese>痛み効果の種類</Japanese>
<Korean>고통 효과 종류</Korean>
</Key>
<Key ID="STR_ACE_Medical_feedback_painEffectType_whiteFlashing">
<English>White flashing</English>
<German>Weißes blinken</German>
<Japanese>白く点滅</Japanese>
<Russian>Белые вспышки</Russian>
</Key>
<Key ID="STR_ACE_Medical_feedback_painEffectType_pulsingBlur">
<English>Pulsing blur</English>
<German>Wiederkehrende Unschärfe</German>
<Japanese>ボケの強弱</Japanese>
<Russian>Пульсирующее размытие</Russian>
</Key>
</Package>
</Project>

View File

@ -1,11 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Medical GUI">
<Key ID="STR_ACE_Medical_GUI_Category">
<English>ACE Medical GUI</English>
<German>Sanitätsmenü</German>
<Japanese>ACE 医療 GUI</Japanese>
<Russian>ACE Медицина - Интерфейс</Russian>
<Key ID="STR_ACE_Medical_GUI_SubCategory">
<English>GUI</English>
<Japanese>GUI</Japanese>
</Key>
<Key ID="STR_ACE_Medical_GUI_EnableActions_DisplayName">
<English>Enable Medical Actions</English>

View File

@ -1,14 +0,0 @@
class ACE_Settings {
class GVAR(fatalInjuryCondition) {
movedToSQF = 1;
};
class GVAR(fatalInjuryConditionAI) {
movedToSQF = 1;
};
class GVAR(unconsciousConditionAI) {
movedToSQF = 1;
};
class GVAR(cardiacArrestTime) {
movedToSQF = 1;
};
};

View File

@ -47,7 +47,7 @@ class ACE_Medical_StateMachine {
onStateEntered = QUOTE([ARR_2(_this,(true))] call EFUNC(medical_status,setUnconscious));
class DeathAI {
targetState = "Dead";
condition = QUOTE(!isPlayer _this && {GVAR(unconsciousConditionAI)});
condition = QUOTE(!GVAR(AIUnconsciousness) && {!isPlayer _this});
};
class WakeUp {
targetState = "Injured";

View File

@ -14,6 +14,5 @@ class CfgPatches {
};
};
#include "ACE_Settings.hpp"
#include "Statemachine.hpp"
#include "CfgEventHandlers.hpp"

View File

@ -18,8 +18,7 @@
params ["_unit"];
// If the unit died the loop is finished
if (!alive _unit) exitWith {};
if (!local _unit) exitWith {};
if (!alive _unit || {!local _unit}) exitWith {};
[_unit] call EFUNC(medical_vitals,handleUnitVitals);
@ -28,14 +27,22 @@ if (_painLevel > 0) then {
[QEGVAR(medical,moan), [_unit, _painLevel]] call CBA_fnc_localEvent;
};
// Handle spontaneous wakeup from unconsciousness
// Handle spontaneous wake up from unconsciousness
if (EGVAR(medical,spontaneousWakeUpChance) > 0) then {
if (_unit call EFUNC(medical_status,hasStableVitals)) then {
private _lastWakeUpCheck = _unit getVariable [QEGVAR(medical,lastWakeUpCheck), 0];
private _lastWakeUpCheck = _unit getVariable QEGVAR(medical,lastWakeUpCheck);
// Handle setting being changed mid-mission and still properly check
// already unconscious units, should handle locality changes as well
if (isNil "_lastWakeUpCheck") exitWith {
_unit setVariable [QGVAR(medical,lastWakeUpCheck), CBA_missionTime];
};
if (CBA_missionTime - _lastWakeUpCheck > SPONTANEOUS_WAKE_UP_INTERVAL) then {
TRACE_2("Checking for wake up",_unit,EGVAR(medical,spontaneousWakeUpChance));
_unit setVariable [QEGVAR(medical,lastWakeUpCheck), CBA_missionTime];
if ((random 1) < EGVAR(medical,spontaneousWakeUpChance)) then {
if (random 1 <= EGVAR(medical,spontaneousWakeUpChance)) then {
TRACE_1("Spontaneous wake up!",_unit);
[QEGVAR(medical,WakeUp), _unit] call CBA_fnc_localEvent;
};

View File

@ -1,43 +1,35 @@
// CBA Settings [ADDON: ace_medical_statemachine]:
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
[
QGVAR(fatalInjuryCondition), "LIST",
[LSTRING(fatalInjuryCondition_DisplayName), LSTRING(fatalInjuryCondition_Description)],
_categoryArray,
[[0,1,2],["Always","In Cardiac Arrest","Never"],0], // [values, titles, defaultIndex] //ToDo: Localize
true, // isGlobal
{[QGVAR(fatalInjuryCondition), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(fatalInjuryCondition),
"LIST",
[LSTRING(FatalInjuryCondition_DisplayName), LSTRING(FatalInjuryCondition_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[[0, 1, 2], [ELSTRING(common,Always), LSTRING(InCardiacArrest), ELSTRING(common,Never)], 0],
true
] call CBA_settings_fnc_init;
[
QGVAR(fatalInjuryConditionAI), "CHECKBOX",
[LSTRING(fatalInjuryConditionAI_DisplayName), LSTRING(fatalInjuryConditionAI_Description)],
_categoryArray,
true, // default value
true, // isGlobal
{[QGVAR(fatalInjuryConditionAI), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(fatalInjuryConditionAI),
"CHECKBOX",
[LSTRING(FatalInjuryConditionAI_DisplayName), LSTRING(FatalInjuryConditionAI_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
true,
true
] call CBA_settings_fnc_init;
[
QGVAR(unconsciousConditionAI), "CHECKBOX",
[LSTRING(unconsciousConditionAI_DisplayName), LSTRING(unconsciousConditionAI_Description)],
_categoryArray,
true, // default value
true, // isGlobal
{[QGVAR(unconsciousConditionAI), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(AIUnconsciousness),
"CHECKBOX",
[LSTRING(AIUnconsciousness_DisplayName), LSTRING(AIUnconsciousness_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
true,
true
] call CBA_settings_fnc_init;
[
QGVAR(cardiacArrestTime), "SLIDER",
[LSTRING(cardiacArrestTime_DisplayName), LSTRING(cardiacArrestTime_Description)],
_categoryArray,
[1,3600,30,0], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QGVAR(cardiacArrestTime), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QGVAR(cardiacArrestTime),
"TIME",
[LSTRING(CardiacArrestTime_DisplayName), LSTRING(CardiacArrestTime_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[1, 3600, 30],
true
] call CBA_settings_fnc_init;

View File

@ -1,99 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Medical_Statemachine">
<Container name="Settings">
<Key ID="STR_ACE_Medical_statemachine_subCategory">
<English>States</English>
<German>Zustände</German>
<Japanese>状態</Japanese>
<Russian>Состояния</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryCondition_DisplayName">
<English>Fatal Injury Player</English>
<German>Tödliche Spielerverletzungen</German>
<Japanese>致命傷プレイヤー</Japanese>
<Russian>Смертельные ранения игрока</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryCondition_Description">
<English>Defines when Player can receive a fatal injury</English>
<German>Definiert wann ein Spieler tödliche Verletzungen bekommen kann</German>
<Japanese>プレイヤーが致命傷から蘇生できるかどうか決定します</Japanese>
<Russian>Определяет, когда игрок может получить смертельное ранение</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryConditionAI_DisplayName">
<English>Instant death AI</English>
<German>Direkter Tod KI</German>
<Japanese>AI の即死</Japanese>
<Russian>Мгновенная смерть ИИ</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryConditionAI_Description">
<English>Defines if AI will be able to die instantly</English>
<German>Legt fest, ob eine KI direkt sterben kann</German>
<Japanese>AI が即死できるかどうか決定します</Japanese>
<Russian>Определяет, сможет ли ИИ мгновенно умереть</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_unconsciousConditionAI_DisplayName">
<English>Forbid unconscious AI</English>
<German>Verhindere KI-Bewusstlosigkeit</German>
<Japanese>AI の気絶を禁止</Japanese>
<Russian>Запретить потерю сознания ИИ</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_unconsciousConditionAI_Description">
<English>Defines if AI will be denied to go unconscious and will die instead</English>
<German>Legt fest, ob eine KI bewusstlos wird oder stirbt</German>
<Japanese>AI が気絶すると、即時に死亡するかどうか決定します</Japanese>
<Russian>Определяет, потеряет ли ИИ сознание или вместо этого умрет</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryCondition_InCardiacArrest">
<English>In Cardiac Arrest</English>
<German>Herzstillstand</German>
<Japanese>心停止中</Japanese>
<Russian>При остановке сердца</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_cardiacArrestTime_DisplayName">
<English>Cardiac Arrest time (seconds)</English>
<German>Zeit bis zum Herzstillstand (Sekunden)</German>
<Japanese>心停止時間 (秒)</Japanese>
<Russian>Длительность остановки сердца (сек)</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_cardiacArrestTime_Description">
<English>Defines how long it takes to die from cardiac arrest?</English>
<German>Legt fest, wie lang es dauert, bis man an einem Herzstillstand stirbt</German>
<Japanese>心停止がどのくらい続けば死亡するようにしますか?</Japanese>
<Russian>Определяет, сколько времени требуется, чтобы умереть от остановки сердца</Russian>
</Key>
<Key ID="STR_ACE_Medical_statemachine_enableUnconsciousnessAI_DisplayName">
<English>AI Unconsciousness</English>
<Russian>Потеря сознания ботами</Russian>
<Polish>Nieprzytomność AI</Polish>
<Spanish>Inconsciencia IA</Spanish>
<German>KI-Bewusstlosigkeit</German>
<Czech>Bezvědomí AI</Czech>
<Portuguese>Inconsciência da IA</Portuguese>
<French>Inconscience des IA</French>
<Hungarian>AI eszméletlenség</Hungarian>
<Italian>Incoscienza IA</Italian>
<Japanese>AI の気絶</Japanese>
<Korean>인공지능 기절</Korean>
<Chinesesimp>AI无意识</Chinesesimp>
<Chinese>AI無意識</Chinese>
</Key>
<Key ID="STR_ACE_Medical_statemachine_enableUnconsciousnessAI_Description">
<English>Allow AI to go unconscious</English>
<Russian>Позволить ботам терять сознание</Russian>
<Polish>Czy AI może być nieprzytomne od odniesionych obrażeń?</Polish>
<Spanish>Permita a la IA caer inconsciente</Spanish>
<German>KI kann bewusstlos werden</German>
<Czech>Umožňuje AI upadnout do bezvědomí</Czech>
<Portuguese>Permite IA ficar inconsciente</Portuguese>
<French>Autoriser les IA à tomber inconscients</French>
<Hungarian>Engedélyezi az AI eszméletének elvesztését</Hungarian>
<Italian>Permetti alle IA di diventare incoscienti</Italian>
<Japanese>AI が気絶をするようになります</Japanese>
<Korean>인공지능도 기절에 빠지게 합니다</Korean>
<Chinesesimp>允许AI进入无意识状态</Chinesesimp>
<Chinese>允許AI進入無意識狀態</Chinese>
</Key>
</Container>
<Key ID="STR_ACE_Medical_Statemachine_SubCategory">
<English>States</English>
<German>Zustände</German>
<Japanese>状態</Japanese>
<Russian>Состояния</Russian>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryCondition_DisplayName">
<English>Fatal Injury Player</English>
<German>Tödliche Spielerverletzungen</German>
<Japanese>致命傷プレイヤー</Japanese>
<Russian>Смертельные ранения игрока</Russian>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryCondition_Description">
<English>Controls when a player can receive a fatal injury.</English>
<German>Definiert wann ein Spieler tödliche Verletzungen bekommen kann</German>
<Japanese>プレイヤーが致命傷から蘇生できるかどうか決定します</Japanese>
<Russian>Определяет, когда игрок может получить смертельное ранение</Russian>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryConditionAI_DisplayName">
<English>AI Instant Death</English>
<German>Direkter Tod KI</German>
<Japanese>AI の即死</Japanese>
<Russian>Мгновенная смерть ИИ</Russian>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryConditionAI_Description">
<English>Controls if AI units are able to die instantly.</English>
<German>Legt fest, ob eine KI direkt sterben kann</German>
<Japanese>AI が即死できるかどうか決定します</Japanese>
<Russian>Определяет, сможет ли ИИ мгновенно умереть</Russian>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_AIUnconsciousness_DisplayName">
<English>AI Unconsciousness</English>
<Russian>Потеря сознания ботами</Russian>
<Polish>Nieprzytomność AI</Polish>
<Spanish>Inconsciencia IA</Spanish>
<German>KI-Bewusstlosigkeit</German>
<Czech>Bezvědomí AI</Czech>
<Portuguese>Inconsciência da IA</Portuguese>
<French>Inconscience des IA</French>
<Hungarian>AI eszméletlenség</Hungarian>
<Italian>Incoscienza IA</Italian>
<Japanese>AI の気絶</Japanese>
<Korean>인공지능 기절</Korean>
<Chinesesimp>AI无意识</Chinesesimp>
<Chinese>AI無意識</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_AIUnconsciousness_Description">
<English>Allows AI to go unconscious instead of dying.</English>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestTime_DisplayName">
<English>Cardiac Arrest Time</English>
<German>Zeit bis zum Herzstillstand</German>
<Japanese>心停止時間</Japanese>
<Russian>Длительность остановки сердца</Russian>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestTime_Description">
<English>Controls how long it takes to die from cardiac arrest.</English>
</Key>
<Key ID="STR_ACE_Medical_Statemachine_InCardiacArrest">
<English>In Cardiac Arrest</English>
<German>Herzstillstand</German>
<Japanese>心停止中</Japanese>
<Russian>При остановке сердца</Russian>
</Key>
</Package>
</Project>

View File

@ -5,7 +5,7 @@ class ACE_Settings {
class EGVAR(medical,painCoefficient) {
movedToSQF = 1;
};
class GVAR(ivFlowRate) {
class EGVAR(medical,ivFlowRate) {
movedToSQF = 1;
};
};

View File

@ -29,7 +29,7 @@ if (!isNil {_unit getVariable QEGVAR(medical,ivBags)}) then {
_x params ["_bagVolumeRemaining", "_type", "_bodyPart"];
if (_tourniquets select _bodyPart == 0) then {
private _bagChange = (_deltaT * GVAR(ivFlowRate) * IV_CHANGE_PER_SECOND) min _bagVolumeRemaining; // absolute value of the change in miliLiters
private _bagChange = (_deltaT * EGVAR(medical,ivFlowRate) * IV_CHANGE_PER_SECOND) min _bagVolumeRemaining; // absolute value of the change in miliLiters
_bagVolumeRemaining = _bagVolumeRemaining - _bagChange;
_bloodVolumeChange = _bloodVolumeChange + (_bagChange / 1000);
};

View File

@ -1,33 +1,26 @@
// CBA Settings [ADDON: ace_medical_status]:
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
[
QEGVAR(medical,bleedingCoefficient), "SLIDER",
[LSTRING(bleedingCoefficient_DisplayName), LSTRING(bleedingCoefficient_Description)],
_categoryArray,
[0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QEGVAR(medical,bleedingCoefficient), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QEGVAR(medical,bleedingCoefficient),
"SLIDER",
[LSTRING(BleedingCoefficient_DisplayName), LSTRING(BleedingCoefficient_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[0, 25, 1, 1],
true
] call CBA_settings_fnc_init;
[
QEGVAR(medical,painCoefficient), "SLIDER",
[LSTRING(painCoefficient_DisplayName), LSTRING(painCoefficient_Description)],
_categoryArray,
[0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QEGVAR(medical,painCoefficient), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QEGVAR(medical,painCoefficient),
"SLIDER",
[LSTRING(PainCoefficient_DisplayName), LSTRING(PainCoefficient_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[0, 25, 1, 1],
true
] call CBA_settings_fnc_init;
[
QGVAR(ivFlowRate), "SLIDER",
[LSTRING(ivFlowRate_DisplayName), LSTRING(ivFlowRate_Description)],
_categoryArray,
[0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QGVAR(ivFlowRate), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
QEGVAR(medical,ivFlowRate),
"SLIDER",
[LSTRING(IvFlowRate_DisplayName), LSTRING(IvFlowRate_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory)],
[0, 25, 1, 1],
true
] call CBA_settings_fnc_init;

View File

@ -1,89 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Medical_Status">
<Container name="Settings">
<Key ID="STR_ACE_Medical_Status_subCategory">
<English>Status</English>
<German>Zustand</German>
<Japanese>状態</Japanese>
<Russian>Статус</Russian>
</Key>
<Key ID="STR_ACE_Medical_Status_bleedingCoefficient_DisplayName">
<English>Bleeding coefficient</English>
<Russian>Коэффициент кровопотери</Russian>
<Polish>Mnożnik krwawienia</Polish>
<Spanish>Coeficiente de sangrado</Spanish>
<German>Verblutungsmultiplikator</German>
<Czech>Koeficient krvácení</Czech>
<Portuguese>Coeficiente de sangramento</Portuguese>
<French>Coéfficient de saignement</French>
<Hungarian>Vérzési koefficiens</Hungarian>
<Italian>Coefficiente sanguinamento</Italian>
<Japanese>出血の係数</Japanese>
<Korean>출혈 계수</Korean>
<Chinesesimp>流血系数</Chinesesimp>
<Chinese>流血係數</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_bleedingCoefficient_Description">
<English>Coefficient to modify the bleeding speed</English>
<Russian>Коэффициент, изменяющий скорость потери крови</Russian>
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
<German>Multiplikator um die Verblutungsgeschwindigkeit zu verändern</German>
<Czech>Koeficient rychlosti krvácení</Czech>
<Portuguese>Coeficiente para modificar a velocidade do sangramento</Portuguese>
<French>Modifie le débit des saignements</French>
<Hungarian>Egy szorzó a vérzés sebességének szabályozására</Hungarian>
<Italian>Coefficiente che modifica la velocità di sanguinamento</Italian>
<Japanese>この係数では出血速度を変更できます</Japanese>
<Korean>출혈의 속도를 계수만큼 변경합니다</Korean>
<Chinesesimp>修改流血速度</Chinesesimp>
<Chinese>修改流血速度</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_painCoefficient_DisplayName">
<English>Pain coefficient</English>
<Russian>Коэффициент боли</Russian>
<Polish>Mnożnik bólu</Polish>
<Spanish>Coeficiente de dolor</Spanish>
<German>Schmerzmultiplikator</German>
<Czech>Koeficient bolesti</Czech>
<Portuguese>Coeficiente de dor</Portuguese>
<French>Coéfficient de douleur</French>
<Hungarian>Fájdalmi koefficiens</Hungarian>
<Italian>Coefficiente dolore</Italian>
<Japanese>痛みの係数</Japanese>
<Korean>고통 계수</Korean>
<Chinesesimp>疼痛系数</Chinesesimp>
<Chinese>疼痛係數</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_painCoefficient_Description">
<English>Coefficient to modify the pain intensity</English>
<Russian>Коэффициент, изменяющий уровень боли</Russian>
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
<German>Multiplikator um die Schmerzintensität zu verändern</German>
<Czech>Koeficient intenzity bolesti</Czech>
<Portuguese>Coeficiente para modificar a instensidade de dor</Portuguese>
<French>Modifie l'intensité de la douleur</French>
<Hungarian>Egy szorzó a fájdalom erősségének szabályozására</Hungarian>
<Italian>Coefficiente che modifica l'intensità del dolore</Italian>
<Japanese>この係数では痛みの強さを変更できます</Japanese>
<Korean>고통의 정도를 계수만큼 변경합니다</Korean>
<Chinesesimp>修改疼痛强度的系数</Chinesesimp>
<Chinese>修改疼痛強度的係數</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_ivFlowRate_DisplayName">
<English>IV Transfusion Flow Rate</English>
<German>Transfusions Fließrate</German>
<Japanese>IV 輸血の流量</Japanese>
<Russian>Скорость внутривенного переливания</Russian>
</Key>
<Key ID="STR_ACE_Medical_Status_ivFlowRate_Description">
<English>Effects how quickly IV Bags will have effect</English>
<German>Wie schnell der Effekt der Transfusion eintritt</German>
<Japanese>IV による輸血速度を変更できます</Japanese>
<Russian>Определяет, насколько быстро подействуют эффекты внутривенного переливания</Russian>
</Key>
</Container>
<Key ID="STR_ACE_Medical_Status_SubCategory">
<English>Status</English>
<German>Zustand</German>
<Japanese>状態</Japanese>
<Russian>Статус</Russian>
</Key>
<Key ID="STR_ACE_Medical_Status_BleedingCoefficient_DisplayName">
<English>Bleeding Coefficient</English>
<Russian>Коэффициент кровопотери</Russian>
<Polish>Mnożnik krwawienia</Polish>
<Spanish>Coeficiente de sangrado</Spanish>
<German>Verblutungsmultiplikator</German>
<Czech>Koeficient krvácení</Czech>
<Portuguese>Coeficiente de sangramento</Portuguese>
<French>Coéfficient de saignement</French>
<Hungarian>Vérzési koefficiens</Hungarian>
<Italian>Coefficiente sanguinamento</Italian>
<Japanese>出血の係数</Japanese>
<Korean>출혈 계수</Korean>
<Chinesesimp>流血系数</Chinesesimp>
<Chinese>流血係數</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_BleedingCoefficient_Description">
<English>Coefficient for controlling the bleeding speed.</English>
<Russian>Коэффициент, изменяющий скорость потери крови</Russian>
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
<German>Multiplikator um die Verblutungsgeschwindigkeit zu verändern</German>
<Czech>Koeficient rychlosti krvácení</Czech>
<Portuguese>Coeficiente para modificar a velocidade do sangramento</Portuguese>
<French>Modifie le débit des saignements</French>
<Hungarian>Egy szorzó a vérzés sebességének szabályozására</Hungarian>
<Italian>Coefficiente che modifica la velocità di sanguinamento</Italian>
<Japanese>この係数では出血速度を変更できます</Japanese>
<Korean>출혈의 속도를 계수만큼 변경합니다</Korean>
<Chinesesimp>修改流血速度</Chinesesimp>
<Chinese>修改流血速度</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_PainCoefficient_DisplayName">
<English>Pain Coefficient</English>
<Russian>Коэффициент боли</Russian>
<Polish>Mnożnik bólu</Polish>
<Spanish>Coeficiente de dolor</Spanish>
<German>Schmerzmultiplikator</German>
<Czech>Koeficient bolesti</Czech>
<Portuguese>Coeficiente de dor</Portuguese>
<French>Coéfficient de douleur</French>
<Hungarian>Fájdalmi koefficiens</Hungarian>
<Italian>Coefficiente dolore</Italian>
<Japanese>痛みの係数</Japanese>
<Korean>고통 계수</Korean>
<Chinesesimp>疼痛系数</Chinesesimp>
<Chinese>疼痛係數</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_PainCoefficient_Description">
<English>Coefficient for controlling the intensity of pain adjustments.</English>
<Russian>Коэффициент, изменяющий уровень боли</Russian>
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
<German>Multiplikator um die Schmerzintensität zu verändern</German>
<Czech>Koeficient intenzity bolesti</Czech>
<Portuguese>Coeficiente para modificar a instensidade de dor</Portuguese>
<French>Modifie l'intensité de la douleur</French>
<Hungarian>Egy szorzó a fájdalom erősségének szabályozására</Hungarian>
<Italian>Coefficiente che modifica l'intensità del dolore</Italian>
<Japanese>この係数では痛みの強さを変更できます</Japanese>
<Korean>고통의 정도를 계수만큼 변경합니다</Korean>
<Chinesesimp>修改疼痛强度的系数</Chinesesimp>
<Chinese>修改疼痛強度的係數</Chinese>
</Key>
<Key ID="STR_ACE_Medical_Status_IvFlowRate_DisplayName">
<English>IV Transfusion Flow Rate</English>
<German>Transfusions Fließrate</German>
<Japanese>IV 輸血の流量</Japanese>
<Russian>Скорость внутривенного переливания</Russian>
</Key>
<Key ID="STR_ACE_Medical_Status_IvFlowRate_Description">
<English>Controls how quickly fluid flows out of IV Bags. The IV Bag volume change is calculated as:\ntime interval (s) * iv change per second (4.1667 mL/s) * flow rate (this coefficient).</English>
<German>Wie schnell der Effekt der Transfusion eintritt</German>
<Japanese>IV による輸血速度を変更できます</Japanese>
<Russian>Определяет, насколько быстро подействуют эффекты внутривенного переливания</Russian>
</Key>
</Package>
</Project>

View File

@ -1,45 +0,0 @@
class ACE_Settings {
class EGVAR(medical,allowLitterCreation) {
movedToSqf = 1;
};
class EGVAR(medical,litterCleanUpDelay) {
movedToSqf = 1;
};
class EGVAR(medical,litterSimulationDetail) {
movedToSqf = 1;
_values[] = { 0, 50, 100, 1000, 5000 };
};
class EGVAR(medical,increaseTrainingInLocations) {
movedToSqf = 1;
};
class EGVAR(medical,PAKTime) {
movedToSqf = 1;
};
class EGVAR(medical,medicSetting_Epi) {
movedToSqf = 1;
};
class EGVAR(medical,medicSetting_PAK) {
movedToSqf = 1;
};
class EGVAR(medical,medicSetting_SurgicalKit) {
movedToSqf = 1;
};
class EGVAR(medical,consumeItem_PAK) {
movedToSqf = 1;
};
class EGVAR(medical,consumeItem_SurgicalKit) {
movedToSqf = 1;
};
class EGVAR(medical,useLocation_Epi) {
movedToSqf = 1;
};
class EGVAR(medical,useLocation_PAK) {
movedToSqf = 1;
};
class EGVAR(medical,useLocation_SurgicalKit) {
movedToSqf = 1;
};
class EGVAR(medical,convertItems) {
movedToSqf = 1;
};
};

View File

@ -17,7 +17,6 @@ class CfgPatches {
#include "ACE_Medical_Treatment.hpp"
#include "ACE_Medical_Treatment_Actions.hpp"
#include "ACE_Medical_Facilities.hpp"
#include "ACE_Settings.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgReplacementItems.hpp"
#include "CfgVehicles.hpp"

View File

@ -53,7 +53,7 @@
"LIST",
[LSTRING(AllowSelfIV_DisplayName), LSTRING(AllowSelfIV_Description)],
[ELSTRING(medical,Category), LSTRING(SubCategory_Treatment)],
[[0, 1], [ELSTRING(common,No), ELSTRING(common,Yes)], 0],
[[0, 1], [ELSTRING(common,No), ELSTRING(common,Yes)], 1],
true
] call CBA_settings_fnc_init;