mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
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:
parent
de13ab0f47
commit
b2f4b8ea20
@ -21,6 +21,9 @@ LOG("Adding ACE_Settings to CBA_settings");
|
|||||||
GVAR(cbaSettings_forcedSettings) = [];
|
GVAR(cbaSettings_forcedSettings) = [];
|
||||||
GVAR(cbaSettings_missionSettings) = [];
|
GVAR(cbaSettings_missionSettings) = [];
|
||||||
GVAR(settings) = []; // will stay empty - for BWC?
|
GVAR(settings) = []; // will stay empty - for BWC?
|
||||||
|
#ifdef DEBUG_MODE_FULL
|
||||||
|
GVAR(settingsMovedToSQF) = [];
|
||||||
|
#endif
|
||||||
|
|
||||||
// Add Event Handlers:
|
// Add Event Handlers:
|
||||||
[QGVAR(setSetting), {
|
[QGVAR(setSetting), {
|
||||||
@ -66,6 +69,13 @@ GVAR(settings) = []; // will stay empty - for BWC?
|
|||||||
false
|
false
|
||||||
} count GVAR(runAtSettingsInitialized);
|
} count GVAR(runAtSettingsInitialized);
|
||||||
GVAR(runAtSettingsInitialized) = nil; //cleanup
|
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;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
private _start = diag_tickTime;
|
private _start = diag_tickTime;
|
||||||
@ -81,6 +91,10 @@ for "_index" from 0 to (_countOptions - 1) do {
|
|||||||
} else {
|
} else {
|
||||||
WARNING_1("Setting [%1] - Already defined from somewhere else??",_varName);
|
WARNING_1("Setting [%1] - Already defined from somewhere else??",_varName);
|
||||||
};
|
};
|
||||||
|
#ifdef DEBUG_MODE_FULL
|
||||||
|
} else {
|
||||||
|
GVAR(settingsMovedToSQF) pushBack configName _optionEntry;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,34 +1,30 @@
|
|||||||
// CBA Settings [ADDON: ace_medical]:
|
|
||||||
|
|
||||||
private _categoryArray = [LELSTRING(medical,Category), "?"];
|
|
||||||
|
|
||||||
// todo: Check the description is still accurate
|
|
||||||
[
|
[
|
||||||
QGVAR(spontaneousWakeUpChance), "SLIDER",
|
QGVAR(limping),
|
||||||
[LSTRING(MedicalSettings_spontaneousWakeUpChance_DisplayName), LSTRING(MedicalSettings_spontaneousWakeUpChance_Description)],
|
"LIST",
|
||||||
_categoryArray,
|
[LSTRING(Limping_DisplayName), LSTRING(Limping_Description)],
|
||||||
[0,1,0.05,2], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
LSTRING(Category),
|
||||||
true, // isGlobal
|
[[0, 1, 2], [ELSTRING(common,Disabled), LSTRING(Limping_LimpOnOpenWounds), LSTRING(Limping_LimpRequiresStitching)], 1],
|
||||||
{[QGVAR(spontaneousWakeUpChance), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true,
|
||||||
true // Needs mission restart
|
{[QGVAR(limping), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||||
|
true
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QEGVAR(medical,limping), "LIST",
|
QGVAR(fractures),
|
||||||
[LSTRING(setting_limping_DisplayName), LSTRING(setting_limping_Description)],
|
"LIST",
|
||||||
_categoryArray,
|
[LSTRING(Fractures_DisplayName), LSTRING(Fractures_Description)],
|
||||||
[[0,1,2],[LELSTRING(common,disabled), LLSTRING(setting_limping_limpOnOpenWounds), LLSTRING(setting_limping_limpRequiresStitching)], 1], // [values, titles, defaultIndex]
|
LSTRING(Category),
|
||||||
true, // isGlobal
|
[[0, 1, 2], [ELSTRING(common,Disabled), LSTRING(Fractures_SplintHealsFully), LSTRING(Fractures_SplintHasEffects)], 1],
|
||||||
{[QEGVAR(medical,limping), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true,
|
||||||
true // Needs mission restart
|
{[QGVAR(fractures), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||||
|
true
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QEGVAR(medical,fractures), "LIST",
|
QGVAR(spontaneousWakeUpChance),
|
||||||
[LSTRING(setting_fractures_DisplayName), LSTRING(setting_fractures_Description)],
|
"SLIDER",
|
||||||
_categoryArray,
|
[LSTRING(SpontaneousWakeUpChance_DisplayName), LSTRING(SpontaneousWakeUpChance_Description)],
|
||||||
[[0,1,2],[LELSTRING(common,disabled), LLSTRING(setting_fractures_splintHealsFully), LLSTRING(setting_fractures_splintHasEffects)], 1], // [values, titles, defaultIndex]
|
LSTRING(Category),
|
||||||
true, // isGlobal
|
[0, 1, 0.05, 2],
|
||||||
{[QEGVAR(medical,fractures), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
@ -17,117 +17,49 @@
|
|||||||
<Chinesesimp>ACE 医疗系统</Chinesesimp>
|
<Chinesesimp>ACE 医疗系统</Chinesesimp>
|
||||||
<Chinese>ACE 醫療系統</Chinese>
|
<Chinese>ACE 醫療系統</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_level_DisplayName">
|
<Key ID="STR_ACE_Medical_SpontaneousWakeUpChance_DisplayName">
|
||||||
<English>Medical Level</English>
|
<English>Unconscious Wake Up Chance</English>
|
||||||
<Russian>Сложность медицины</Russian>
|
<German>Wahrscheinlichkeit aufzuwachen</German>
|
||||||
<Polish>Poziom medyczny</Polish>
|
<Japanese>気絶から覚醒する可能性</Japanese>
|
||||||
<Spanish>Nivel médico</Spanish>
|
<Russian>Шанс очнуться при потере сознания</Russian>
|
||||||
<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>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_level_Description">
|
<Key ID="STR_ACE_Medical_SpontaneousWakeUpChance_Description">
|
||||||
<English>What is the medical simulation level?</English>
|
<English>The probablity that a unit with stable vitals will wake up from unconsciousness (checked every 15 seconds).</English>
|
||||||
<Russian>Каков уровень сложности медицинской системы?</Russian>
|
<German>Wahrscheinlichkeit, dass eine bewusstlose Person mit stabilen Vitalwerten wieder aufwacht ()Überprüfung alle 15 Sekunden)</German>
|
||||||
<Polish>Jaki jest poziom symulacji medycznej?</Polish>
|
<Japanese>安定状態にある人が覚醒する確率です。(15 秒毎に確認)</Japanese>
|
||||||
<Spanish>¿Cuál es el nivel de simulación médica?</Spanish>
|
<Russian>Вероятность, что стабилизированный юнит очнется от потери сознания (Проверяется каждые 15 сек)</Russian>
|
||||||
<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>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_disable">
|
<Key ID="STR_ACE_Medical_Limping_DisplayName">
|
||||||
<English>Disable medics</English>
|
<English>Limping</English>
|
||||||
<Russian>Отключить медиков</Russian>
|
<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>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_DisplayName">
|
<Key ID="STR_ACE_Medical_Limping_Description">
|
||||||
<English>Enable Litter</English>
|
<English>Limp when unit has leg wounds...(todo)</English>
|
||||||
<Russian>Включить мусор</Russian>
|
<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>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_Description">
|
<Key ID="STR_ACE_Medical_Limping_LimpOnOpenWounds">
|
||||||
<English>Enable litter being created upon treatment</English>
|
<English>Limp on open wounds</English>
|
||||||
<Russian>Включить появление мусора после лечения</Russian>
|
<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>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_DisplayName">
|
<Key ID="STR_ACE_Medical_Limping_LimpRequiresStitching">
|
||||||
<English>Life time of litter objects</English>
|
<English>Limp on open or bandaged wounds</English>
|
||||||
<Russian>Время удаления мусора</Russian>
|
<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>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_Description">
|
<Key ID="STR_ACE_Medical_Fractures_DisplayName">
|
||||||
<English>How long should litter objects stay? In seconds. -1 is forever.</English>
|
<English>Fractures</English>
|
||||||
<Russian>Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время.</Russian>
|
<Russian>Переломы</Russian>
|
||||||
<Polish>Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.</Polish>
|
</Key>
|
||||||
<Spanish>¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre.</Spanish>
|
<Key ID="STR_ACE_Medical_Fractures_Description">
|
||||||
<German>Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.</German>
|
<English>Limp fractures... (todo)</English>
|
||||||
<Czech>Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy.</Czech>
|
<Russian>Хромота при переломах...</Russian>
|
||||||
<Portuguese>Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre.</Portuguese>
|
</Key>
|
||||||
<French>Combien de temps doivent rester affiché les détritus? En secondes. -1 pour tout le temps</French>
|
<Key ID="STR_ACE_Medical_Fractures_SplintHealsFully">
|
||||||
<Hungarian>Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent.</Hungarian>
|
<English>Splints fully heal fractures</English>
|
||||||
<Italian>Per quanto devono restare le barelle? In secondi. -1 è permanente</Italian>
|
<Russian>Шины полностью лечат перелом</Russian>
|
||||||
<Japanese>医療廃棄物オブジェクトが表示されつづける時間を設定しますか? -1 は永遠です。</Japanese>
|
</Key>
|
||||||
<Korean>얼마동안 폐기물이 존재합니까? 초 단위. -1 은 영구적.</Korean>
|
<Key ID="STR_ACE_Medical_Fractures_SplintHasEffects">
|
||||||
<Chinesesimp>定义医疗废弃物存在时间,以秒为单位,-1为永远存在。</Chinesesimp>
|
<English>Splints heal (but cannot sprint)</English>
|
||||||
<Chinese>定義醫療廢棄物存在時間,以秒為單位,-1為永遠存在。</Chinese>
|
<Russian>Шины вылечивают, но не дают бегать</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_remoteControlledAI_DisplayName">
|
<Key ID="STR_ACE_Medical_MedicalSettings_remoteControlledAI_DisplayName">
|
||||||
<English>Remote Controlled AI</English>
|
<English>Remote Controlled AI</English>
|
||||||
@ -209,21 +141,6 @@
|
|||||||
<Chinesesimp>医疗系统将同时对玩家与AI发生作用</Chinesesimp>
|
<Chinesesimp>医疗系统将同时对玩家与AI发生作用</Chinesesimp>
|
||||||
<Chinese>醫療系統將同時對玩家與AI發生作用</Chinese>
|
<Chinese>醫療系統將同時對玩家與AI發生作用</Chinese>
|
||||||
</Key>
|
</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">
|
<Key ID="STR_ACE_Medical_MedicalSettings_enableFor_DisplayName">
|
||||||
<English>Enabled for</English>
|
<English>Enabled for</English>
|
||||||
<Russian>Включено для</Russian>
|
<Russian>Включено для</Russian>
|
||||||
@ -320,21 +237,6 @@
|
|||||||
<Chinesesimp>设定人员是否会因为载具冲撞别的物件而产生伤害?</Chinesesimp>
|
<Chinesesimp>设定人员是否会因为载具冲撞别的物件而产生伤害?</Chinesesimp>
|
||||||
<Chinese>設定人員是否會因為載具衝撞別的物件而產生傷害?</Chinese>
|
<Chinese>設定人員是否會因為載具衝撞別的物件而產生傷害?</Chinese>
|
||||||
</Key>
|
</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">
|
<Key ID="STR_ACE_Medical_MedicalSettings_healHitPointAfterAdvBandage_DisplayName">
|
||||||
<English>Heal hitpoints</English>
|
<English>Heal hitpoints</English>
|
||||||
<German>Heile Trefferpunkte</German>
|
<German>Heile Trefferpunkte</German>
|
||||||
@ -440,18 +342,6 @@
|
|||||||
<Chinesesimp>设定当距离超过%1将不能使用治疗动作</Chinesesimp>
|
<Chinesesimp>设定当距离超过%1将不能使用治疗动作</Chinesesimp>
|
||||||
<Chinese>設定當距離超過%1將不能使用治療動作</Chinese>
|
<Chinese>設定當距離超過%1將不能使用治療動作</Chinese>
|
||||||
</Key>
|
</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">
|
<Key ID="STR_ACE_Medical_openLid">
|
||||||
<English>Open lid</English>
|
<English>Open lid</English>
|
||||||
<German>Deckel aufklappen</German>
|
<German>Deckel aufklappen</German>
|
||||||
@ -474,37 +364,5 @@
|
|||||||
<Polish>Zamknij pokrywę</Polish>
|
<Polish>Zamknij pokrywę</Polish>
|
||||||
<Russian>Закрыть крышку</Russian>
|
<Russian>Закрыть крышку</Russian>
|
||||||
</Key>
|
</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>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
class Extended_PreStart_EventHandlers {
|
class Extended_PreStart_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
ace_medical_blood
|
ace_medical_blood
|
||||||
===============
|
=================
|
||||||
|
|
||||||
Adds blood visual effect on the ground near a bleeding player.
|
Creates blood drops on the ground near bleeding units.
|
||||||
|
|
||||||
## Maintainers
|
## Maintainers
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
PREP(cleanupLoop);
|
||||||
|
PREP(createBlood);
|
||||||
PREP(handleWoundReceived);
|
PREP(handleWoundReceived);
|
||||||
|
PREP(init);
|
||||||
PREP(isBleeding);
|
PREP(isBleeding);
|
||||||
PREP(onBleeding);
|
PREP(onBleeding);
|
||||||
PREP(createBlood);
|
|
||||||
PREP(serverCleanupBlood);
|
|
||||||
PREP(spurt);
|
PREP(spurt);
|
||||||
|
@ -10,33 +10,18 @@ if (isServer) then {
|
|||||||
|
|
||||||
[QGVAR(bloodDropCreated), {
|
[QGVAR(bloodDropCreated), {
|
||||||
params ["_bloodDrop"];
|
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"];
|
(GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"];
|
||||||
deleteVehicle _deletedBloodDrop;
|
deleteVehicle _deletedBloodDrop;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_index == 1) then { // Start the waitAndExecute loop
|
// Start the cleanup loop
|
||||||
[FUNC(serverCleanupBlood), [], BLOOD_OBJECT_LIFETIME] call CBA_fnc_waitAndExecute;
|
if (_index == 0) then {
|
||||||
|
[FUNC(cleanupLoop), [], GVAR(bloodLifetime)] call CBA_fnc_waitAndExecute;
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] 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;
|
|
||||||
|
@ -14,5 +14,5 @@ class CfgPatches {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "ACE_Settings.hpp"
|
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
|
#include "ACE_Settings.hpp"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Loop that cleans up blood
|
* Handles cleaning up blood objects that have reached the end of their lifetime.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* None
|
* None
|
||||||
@ -9,15 +9,18 @@
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
|
* Example:
|
||||||
|
* [] call ace_medical_blood_fnc_cleanupLoop
|
||||||
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"];
|
(GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"];
|
||||||
deleteVehicle _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 {};
|
if (GVAR(bloodDrops) isEqualTo []) exitWith {};
|
||||||
|
|
||||||
// Wait until the next blood drop in the queue will expire
|
// Wait until the next blood drop in the queue will expire
|
||||||
(GVAR(bloodDrops) select 0) params ["_expireTime"];
|
(GVAR(bloodDrops) select 0) params ["_expireTime"];
|
||||||
[FUNC(serverCleanupBlood), [], (_expireTime - CBA_missionTime)] call CBA_fnc_waitAndExecute;
|
[FUNC(cleanupLoop), [], _expireTime - CBA_missionTime] call CBA_fnc_waitAndExecute;
|
@ -1,15 +1,15 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Glowbal
|
* Author: Glowbal
|
||||||
* Spawn a blood drop.
|
* Creates a blood object and handles its cleanup.
|
||||||
* Available blood drop classes are blooddrop_1 through blooddrop_4.
|
* Available blood drop classes are blooddrop_1 through blooddrop_4.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: classname of blood drop <OBJECT>
|
* 0: Blood Drop Type <STRING>
|
||||||
* 1: Position <ARRAY>
|
* 1: Position <ARRAY>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Created blood drop <OBJECT>
|
* Blood Drop <OBJECT>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* ["blooddrop_2", getPos player] call ace_medical_blood_fnc_createBlood
|
* ["blooddrop_2", getPos player] call ace_medical_blood_fnc_createBlood
|
||||||
@ -17,15 +17,15 @@
|
|||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_type", "_pos"];
|
params ["_type", "_position"];
|
||||||
TRACE_2("creating blood",_type,_pos);
|
TRACE_2("Creating blood",_type,_position);
|
||||||
|
|
||||||
private _model = GVAR(models) getVariable _type;
|
private _model = GVAR(models) getVariable _type;
|
||||||
|
|
||||||
private _object = createSimpleObject [_model, [0,0,0]];
|
private _bloodDrop = createSimpleObject [_model, [0, 0, 0]];
|
||||||
_object setDir random 360;
|
_bloodDrop setDir random 360;
|
||||||
_object setPos _pos;
|
_bloodDrop setPos _position;
|
||||||
|
|
||||||
[QGVAR(bloodDropCreated), [_object]] call CBA_fnc_serverEvent;
|
[QGVAR(bloodDropCreated), _bloodDrop] call CBA_fnc_serverEvent;
|
||||||
|
|
||||||
_object
|
_bloodDrop
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Glowbal, commy2
|
* Author: Glowbal, commy2
|
||||||
* Handle wounds received event.
|
* Handles the wounds received event by triggering any needed blood creation.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: bodyPart <String>
|
* 1: Body Part (not used) <STRING>
|
||||||
* 2: damage <NUMBER>
|
* 2: Damage <NUMBER>
|
||||||
* 3: shooter <OBJECT>
|
* 3: Shooter <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
@ -20,16 +20,16 @@
|
|||||||
|
|
||||||
params ["_unit", "", "_damage", "_shooter"];
|
params ["_unit", "", "_damage", "_shooter"];
|
||||||
|
|
||||||
if (GVAR(enabledFor) == 1 && {!isPlayer _unit && {_unit != ACE_player}}) exitWith {};
|
// Don't bleed when players only and a non-player unit is wounded
|
||||||
if (vehicle _unit != _unit && {!((vehicle _unit) isKindOf "StaticWeapon")}) exitWith {}; // Don't bleed on ground if mounted
|
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
|
private _bulletDir = if (isNull _shooter) then {
|
||||||
[QGVAR(spurt), [_unit, random 360, _damage]] call CBA_fnc_serverEvent;
|
random 360 // Cannot calculate the direction properly, pick a random direction
|
||||||
|
} else {
|
||||||
|
_shooter getDir _unit // Calculate the bullet direction
|
||||||
};
|
};
|
||||||
|
|
||||||
// Calculate bulletDirection
|
[QGVAR(spurt), [_unit, _bulletDir, _damage min 1]] call CBA_fnc_serverEvent;
|
||||||
private _bulletDir = _shooter getDir _unit;
|
|
||||||
|
|
||||||
[QGVAR(spurt), [_unit, _bulletDir, _damage]] call CBA_fnc_serverEvent;
|
|
||||||
|
65
addons/medical_blood/functions/fnc_init.sqf
Normal file
65
addons/medical_blood/functions/fnc_init.sqf
Normal 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));
|
@ -1,13 +1,13 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Glowbal
|
* Author: Glowbal
|
||||||
* Check if is bleeding
|
* Checks if the given unit is bleeding. Handles both ACE Medical and Vanilla.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: unit <TYPE>
|
* 0: Unit <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* is Bleeding <BOOL>
|
* Is Bleeding <BOOL>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player] call ace_medical_blood_fnc_isBleeding
|
* [player] call ace_medical_blood_fnc_isBleeding
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Glowbal
|
* Author: Glowbal
|
||||||
* handle bleeding state (state machine)
|
* Handles periodically creating blood for a bleeding unit.
|
||||||
|
* Called from the medical_blood state machine.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: unit <TYPE>
|
* 0: Unit <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* is Bleeding <BOOL>
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player] call ace_medical_blood_fnc_onBleeding
|
* [player] call ace_medical_blood_fnc_onBleeding
|
||||||
@ -17,20 +18,20 @@
|
|||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
if (!([_unit] call FUNC(isBleeding))) exitWith {};
|
// Nothing to do if unit is not bleeding
|
||||||
if (((vehicle _unit) != _unit) && {!((vehicle _unit) isKindOf "StaticWeapon")}) exitWith {}; // Don't bleed on ground if mounted
|
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 {
|
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;
|
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];
|
_unit setVariable [QGVAR(nextTime), CBA_missionTime + 8 + random 2 - _bloodLoss];
|
||||||
|
|
||||||
|
TRACE_2("Creating blood drop for bleeding unit",_unit,_bloodLoss);
|
||||||
|
|
||||||
private _position = getPosASL _unit;
|
private _position = getPosASL _unit;
|
||||||
_position = _position vectorAdd [
|
_position = _position vectorAdd [random 0.4 - 0.2, random 0.4 - 0.2, 0];
|
||||||
random 0.4 - 0.2,
|
|
||||||
random 0.4 - 0.2,
|
|
||||||
0
|
|
||||||
];
|
|
||||||
_position set [2, 0];
|
_position set [2, 0];
|
||||||
|
|
||||||
private _bloodDrop = ["blooddrop_1", "blooddrop_2", "blooddrop_3", "blooddrop_4"] select floor (_bloodLoss min 3);
|
private _bloodDrop = ["blooddrop_1", "blooddrop_2", "blooddrop_3", "blooddrop_4"] select floor (_bloodLoss min 3);
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Sickboy
|
* Author: Sickboy
|
||||||
* Spurt blood on the ground
|
* Spurts blood on the ground based on the direction and damage.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: direction <NUMBER>
|
* 1: Direction <NUMBER>
|
||||||
* 2: damage <NUMBER>
|
* 2: Damage <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [UNIT, random 360, 1] call ace_medical_blood_fnc_spurt
|
* [player, random 360, 1] call ace_medical_blood_fnc_spurt
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -21,20 +21,20 @@
|
|||||||
#define DISTANCE_BETWEEN_DROPS 0.20
|
#define DISTANCE_BETWEEN_DROPS 0.20
|
||||||
#define OFFSET 0.25
|
#define OFFSET 0.25
|
||||||
|
|
||||||
params ["_unit", "_dir", "_damage"];
|
params ["_unit", "_direction", "_damage"];
|
||||||
|
|
||||||
private _distanceBetweenDrops = DISTANCE_BETWEEN_DROPS * _damage;
|
private _distanceBetweenDrops = DISTANCE_BETWEEN_DROPS * _damage;
|
||||||
private _offset = OFFSET + _distanceBetweenDrops;
|
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);
|
private _dropAmount = ceil (MAXIMUM_DROPS * _damage);
|
||||||
TRACE_2("spurt blood",_dropAmount,_damage);
|
TRACE_2("Spurting blood",_dropAmount,_damage);
|
||||||
|
|
||||||
if (_dropAmount > 1) then {
|
if (_dropAmount > 1) then {
|
||||||
for "_i" from 2 to _dropAmount do {
|
for "_i" from 2 to _dropAmount do {
|
||||||
_pos = _pos getPos [_distanceBetweenDrops, _dir];
|
_position = _position getPos [_distanceBetweenDrops, _direction];
|
||||||
["blooddrop_1", _pos, _dir] call FUNC(createBlood);
|
["blooddrop_1", _position, _direction] call FUNC(createBlood);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,13 +1,27 @@
|
|||||||
// CBA Settings [ADDON: ace_medical_blood]:
|
[
|
||||||
|
QGVAR(enabledFor),
|
||||||
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
|
"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",
|
QGVAR(maxBloodObjects),
|
||||||
[LSTRING(MedicalBloodSettings_enabledFor_DisplayName), LSTRING(MedicalBloodSettings_enabledFor_Description)],
|
"LIST",
|
||||||
_categoryArray,
|
[LSTRING(MaxBloodObjects_DisplayName), LSTRING(MaxBloodObjects_Description)],
|
||||||
[[0,1,2],[LELSTRING(Common,Disabled),LLSTRING(enabledFor_OnlyPlayers),LELSTRING(Common,Enabled)],2], // [values, titles, defaultIndex]
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
[[50, 100, 200, 300, 400, 500, 1000, 2000, 3000, 4000, 5000], [/* settings function will auto create names */], 5],
|
||||||
{[QGVAR(enabledFor), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
] 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;
|
] call CBA_settings_fnc_init;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define COMPONENT_BEAUTIFIED Medical Blood
|
#define COMPONENT_BEAUTIFIED Medical Blood
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
// #define DEBUG_ENABLED_MEDICAL_BLOOD
|
// #define DEBUG_MODE_FULL
|
||||||
// #define DISABLE_COMPILE_CACHE
|
// #define DISABLE_COMPILE_CACHE
|
||||||
// #define ENABLE_PERFORMANCE_COUNTERS
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
@ -17,5 +17,6 @@
|
|||||||
#include "\z\ace\addons\medical_engine\script_macros_medical.hpp"
|
#include "\z\ace\addons\medical_engine\script_macros_medical.hpp"
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
#define MAX_BLOOD_OBJECTS 500
|
#define BLOOD_DISABLED 0
|
||||||
#define BLOOD_OBJECT_LIFETIME 900
|
#define BLOOD_ONLY_PLAYERS 1
|
||||||
|
#define BLOOD_ENABLED 2
|
||||||
|
@ -1,25 +1,20 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="medical_blood">
|
<Package name="Medical_Blood">
|
||||||
<Key ID="STR_ACE_medical_blood_subCategory">
|
<Key ID="STR_ACE_Medical_Blood_SubCategory">
|
||||||
<English>Bleeding Effect</English>
|
<English>Blood</English>
|
||||||
<German>Blutungseffekt</German>
|
<French>Sang</French>
|
||||||
<Japanese>出血中の効果</Japanese>
|
<Spanish>Sangre</Spanish>
|
||||||
<Russian>Эффекты кровотечения</Russian>
|
<Italian>Sangue</Italian>
|
||||||
|
<Polish>Krew</Polish>
|
||||||
|
<Russian>Кровь</Russian>
|
||||||
|
<German>Blut</German>
|
||||||
|
<Czech>Krev</Czech>
|
||||||
|
<Portuguese>Sangue</Portuguese>
|
||||||
|
<Korean>혈흔</Korean>
|
||||||
|
<Japanese>血</Japanese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_medical_blood_enabledFor_OnlyPlayers">
|
<Key ID="STR_ACE_Medical_Blood_EnabledFor_DisplayName">
|
||||||
<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">
|
|
||||||
<English>Enable Blood Drops</English>
|
<English>Enable Blood Drops</English>
|
||||||
<Japanese>血痕を有効化</Japanese>
|
<Japanese>血痕を有効化</Japanese>
|
||||||
<German>Aktiviere Blutspritzer</German>
|
<German>Aktiviere Blutspritzer</German>
|
||||||
@ -31,17 +26,32 @@
|
|||||||
<Chinese>開啟血液滴落效果</Chinese>
|
<Chinese>開啟血液滴落效果</Chinese>
|
||||||
<Russian>Разрешить капли крови</Russian>
|
<Russian>Разрешить капли крови</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_Description">
|
<Key ID="STR_ACE_Medical_Blood_EnabledFor_Description">
|
||||||
<English>Enable or disable Blood Drops created on bleeding and taking damage</English>
|
<English>Enables the creation of blood drops when units are bleeding or take damage.</English>
|
||||||
<Japanese>ダメージを受けたり、出血していると出る血痕の有効か無効化</Japanese>
|
</Key>
|
||||||
<German>Aktiviere oder deaktiviere Blutspritzer, die durch Blutungen oder bei Schadensnahme entstehen.</German>
|
<Key ID="STR_ACE_Medical_Blood_MaxBloodObjects_DisplayName">
|
||||||
<Polish>Włącz lub wyłącz pozostawianie śladów krwi na ziemi kiedy postać odnosi obrażenia bądź krwawi</Polish>
|
<English>Max Blood Objects</English>
|
||||||
<French>(Dés)active les gouttes de sang lors d'un saignement ou de blessure</French>
|
</Key>
|
||||||
<Italian>Abilita o disabilita la Perdite di Sangue create sanguinando e prendendo danno</Italian>
|
<Key ID="STR_ACE_Medical_Blood_MaxBloodObjects_Description">
|
||||||
<Chinesesimp>开启后, 会让受伤时伤口有血液滴落的效果</Chinesesimp>
|
<English>Sets the maximum number of blood drop objects which can be spawned, excessive amounts can cause FPS lag.</English>
|
||||||
<Chinese>開啟後, 會讓受傷時傷口有血液滴落的效果</Chinese>
|
</Key>
|
||||||
<Korean>출혈이나 부상을 입었을 때, 떨어지는 혈액을 활성화 하거나 비활성화 합니다.</Korean>
|
<Key ID="STR_ACE_Medical_Blood_BloodLifetime_DisplayName">
|
||||||
<Russian>Включает или отключает капли крови при кровотечении и получении урона</Russian>
|
<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>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,23 +1,17 @@
|
|||||||
// CBA Settings [ADDON: ace_medical_damage]:
|
|
||||||
|
|
||||||
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
|
|
||||||
|
|
||||||
[
|
[
|
||||||
QEGVAR(medical,playerDamageThreshold), "SLIDER",
|
QEGVAR(medical,playerDamageThreshold),
|
||||||
[LSTRING(playerDamageThreshold_DisplayName), LSTRING(playerDamageThreshold_Description)],
|
"SLIDER",
|
||||||
_categoryArray,
|
[LSTRING(PlayerDamageThreshold_DisplayName), LSTRING(PlayerDamageThreshold_Description)],
|
||||||
[0,25,1,2], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
ELSTRING(medical,Category),
|
||||||
true, // isGlobal
|
[0, 25, 1, 2],
|
||||||
{[QEGVAR(medical,playerDamageThreshold), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QEGVAR(medical,AIDamageThreshold), "SLIDER",
|
QEGVAR(medical,AIDamageThreshold),
|
||||||
|
"SLIDER",
|
||||||
[LSTRING(AIDamageThreshold_DisplayName), LSTRING(AIDamageThreshold_Description)],
|
[LSTRING(AIDamageThreshold_DisplayName), LSTRING(AIDamageThreshold_Description)],
|
||||||
_categoryArray,
|
ELSTRING(medical,Category),
|
||||||
[0,25,1,2], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
[0, 25, 1, 2],
|
||||||
true, // isGlobal
|
true
|
||||||
{[QEGVAR(medical,AIDamageThreshold), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
@ -1,78 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Medical_Damage">
|
<Package name="Medical_Damage">
|
||||||
<Container name="Settings">
|
<Key ID="STR_ACE_Medical_Damage_PlayerDamageThreshold_DisplayName">
|
||||||
<Key ID="STR_ACE_Medical_damage_subCategory">
|
<English>Player Critical Damage Threshold</English>
|
||||||
<English>Damage Threshold</English>
|
|
||||||
<German>Schaden</German>
|
|
||||||
<Japanese>損傷のしきい値</Japanese>
|
|
||||||
<Russian>Порог повреждения</Russian>
|
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_damage_playerDamageThreshold_DisplayName">
|
<Key ID="STR_ACE_Medical_Damage_PlayerDamageThreshold_Description">
|
||||||
<English>Player Damage</English>
|
<English>Sets the amount of damage a player can receive before going unconscious.</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>
|
||||||
<Key ID="STR_ACE_Medical_damage_playerDamageThreshold_Description">
|
<Key ID="STR_ACE_Medical_Damage_AIDamageThreshold_DisplayName">
|
||||||
<English>What is the damage a player can take before being killed?</English>
|
<English>AI Critical Damage Threshold</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>
|
||||||
<Key ID="STR_ACE_Medical_damage_AIDamageThreshold_DisplayName">
|
<Key ID="STR_ACE_Medical_Damage_AIDamageThreshold_Description">
|
||||||
<English>AI Damage</English>
|
<English>Sets the amount of damage an AI unit can receive before going unconscious.</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>
|
||||||
<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_Abrasion">
|
<Key ID="STR_ACE_Medical_Damage_Abrasion">
|
||||||
<English>Scrape</English>
|
<English>Scrape</English>
|
||||||
<German>Kratzer</German>
|
<German>Kratzer</German>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
|
/*
|
||||||
// Not currently used anywhere
|
// Not currently used anywhere
|
||||||
class GVAR(enableScreams) {
|
class GVAR(enableScreams) {
|
||||||
category = ECSTRING(medical,Category_Medical);
|
category = ECSTRING(medical,Category_Medical);
|
||||||
@ -7,4 +8,5 @@ class ACE_Settings {
|
|||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
@ -1,21 +1,16 @@
|
|||||||
// CBA Settings [ADDON: ace_medical_feedback]:
|
|
||||||
|
|
||||||
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
|
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(painEffectType),
|
QGVAR(painEffectType),
|
||||||
"LIST",
|
"LIST",
|
||||||
[localize LSTRING(painEffectType), "Selects the used pain effect type"], //@todo
|
[LSTRING(PainEffectType_DisplayName), LSTRING(PainEffectType_Description)],
|
||||||
_categoryArray,
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
[
|
[[0, 1], [LSTRING(PainEffectType_WhiteFlashing), LSTRING(PainEffectType_PulsingBlur)], 0],
|
||||||
[0, 1],
|
|
||||||
[LLSTRING(painEffectType_whiteFlashing), LLSTRING(painEffectType_pulsingBlur)],
|
|
||||||
0
|
|
||||||
],
|
|
||||||
false,
|
false,
|
||||||
{
|
{
|
||||||
if (isNil QGVAR(ppPain)) exitWith {TRACE_1("Before Post-Init",_this)};
|
if (isNil QGVAR(ppPain)) exitWith {
|
||||||
TRACE_1("reseting ppEffect type",_this);
|
TRACE_1("painEffectType setting - before postInit",_this);
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_1("painEffectType setting - resetting effect",_this);
|
||||||
[true] call FUNC(initEffects);
|
[true] call FUNC(initEffects);
|
||||||
}
|
}
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_Settings_fnc_init;
|
||||||
|
@ -1,13 +1,42 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Medical_Feedback">
|
<Package name="Medical_Feedback">
|
||||||
<Container name="Settings">
|
<Key ID="STR_ACE_Medical_Feedback_SubCategory">
|
||||||
<Key ID="STR_ACE_Medical_feedback_subCategory">
|
|
||||||
<English>Feedback</English>
|
<English>Feedback</English>
|
||||||
<German>Feedback</German>
|
<German>Feedback</German>
|
||||||
<Japanese>フィードバック</Japanese>
|
<Japanese>フィードバック</Japanese>
|
||||||
<Russian>Реакция на ранения</Russian>
|
<Russian>Реакция на ранения</Russian>
|
||||||
</Key>
|
</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_enableScreams_DisplayName">
|
<Key ID="STR_ACE_Medical_feedback_enableScreams_DisplayName">
|
||||||
<English>Enable Screams</English>
|
<English>Enable Screams</English>
|
||||||
<Russian>Включить крики</Russian>
|
<Russian>Включить крики</Russian>
|
||||||
@ -41,31 +70,5 @@
|
|||||||
<Chinese>啟用傷者的尖叫聲</Chinese>
|
<Chinese>啟用傷者的尖叫聲</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
</Container>
|
</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>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Medical GUI">
|
<Package name="Medical GUI">
|
||||||
<Key ID="STR_ACE_Medical_GUI_Category">
|
<Key ID="STR_ACE_Medical_GUI_SubCategory">
|
||||||
<English>ACE Medical GUI</English>
|
<English>GUI</English>
|
||||||
<German>Sanitätsmenü</German>
|
<Japanese>GUI</Japanese>
|
||||||
<Japanese>ACE 医療 GUI</Japanese>
|
|
||||||
<Russian>ACE Медицина - Интерфейс</Russian>
|
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_GUI_EnableActions_DisplayName">
|
<Key ID="STR_ACE_Medical_GUI_EnableActions_DisplayName">
|
||||||
<English>Enable Medical Actions</English>
|
<English>Enable Medical Actions</English>
|
||||||
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
@ -47,7 +47,7 @@ class ACE_Medical_StateMachine {
|
|||||||
onStateEntered = QUOTE([ARR_2(_this,(true))] call EFUNC(medical_status,setUnconscious));
|
onStateEntered = QUOTE([ARR_2(_this,(true))] call EFUNC(medical_status,setUnconscious));
|
||||||
class DeathAI {
|
class DeathAI {
|
||||||
targetState = "Dead";
|
targetState = "Dead";
|
||||||
condition = QUOTE(!isPlayer _this && {GVAR(unconsciousConditionAI)});
|
condition = QUOTE(!GVAR(AIUnconsciousness) && {!isPlayer _this});
|
||||||
};
|
};
|
||||||
class WakeUp {
|
class WakeUp {
|
||||||
targetState = "Injured";
|
targetState = "Injured";
|
||||||
|
@ -14,6 +14,5 @@ class CfgPatches {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "ACE_Settings.hpp"
|
|
||||||
#include "Statemachine.hpp"
|
#include "Statemachine.hpp"
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
|
@ -18,8 +18,7 @@
|
|||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
// If the unit died the loop is finished
|
// If the unit died the loop is finished
|
||||||
if (!alive _unit) exitWith {};
|
if (!alive _unit || {!local _unit}) exitWith {};
|
||||||
if (!local _unit) exitWith {};
|
|
||||||
|
|
||||||
[_unit] call EFUNC(medical_vitals,handleUnitVitals);
|
[_unit] call EFUNC(medical_vitals,handleUnitVitals);
|
||||||
|
|
||||||
@ -31,11 +30,19 @@ if (_painLevel > 0) then {
|
|||||||
// Handle spontaneous wake up from unconsciousness
|
// Handle spontaneous wake up from unconsciousness
|
||||||
if (EGVAR(medical,spontaneousWakeUpChance) > 0) then {
|
if (EGVAR(medical,spontaneousWakeUpChance) > 0) then {
|
||||||
if (_unit call EFUNC(medical_status,hasStableVitals)) 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 {
|
if (CBA_missionTime - _lastWakeUpCheck > SPONTANEOUS_WAKE_UP_INTERVAL) then {
|
||||||
TRACE_2("Checking for wake up",_unit,EGVAR(medical,spontaneousWakeUpChance));
|
TRACE_2("Checking for wake up",_unit,EGVAR(medical,spontaneousWakeUpChance));
|
||||||
_unit setVariable [QEGVAR(medical,lastWakeUpCheck), CBA_missionTime];
|
_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);
|
TRACE_1("Spontaneous wake up!",_unit);
|
||||||
[QEGVAR(medical,WakeUp), _unit] call CBA_fnc_localEvent;
|
[QEGVAR(medical,WakeUp), _unit] call CBA_fnc_localEvent;
|
||||||
};
|
};
|
||||||
|
@ -1,43 +1,35 @@
|
|||||||
// CBA Settings [ADDON: ace_medical_statemachine]:
|
|
||||||
|
|
||||||
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
|
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(fatalInjuryCondition), "LIST",
|
QGVAR(fatalInjuryCondition),
|
||||||
[LSTRING(fatalInjuryCondition_DisplayName), LSTRING(fatalInjuryCondition_Description)],
|
"LIST",
|
||||||
_categoryArray,
|
[LSTRING(FatalInjuryCondition_DisplayName), LSTRING(FatalInjuryCondition_Description)],
|
||||||
[[0,1,2],["Always","In Cardiac Arrest","Never"],0], // [values, titles, defaultIndex] //ToDo: Localize
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
[[0, 1, 2], [ELSTRING(common,Always), LSTRING(InCardiacArrest), ELSTRING(common,Never)], 0],
|
||||||
{[QGVAR(fatalInjuryCondition), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(fatalInjuryConditionAI), "CHECKBOX",
|
QGVAR(fatalInjuryConditionAI),
|
||||||
[LSTRING(fatalInjuryConditionAI_DisplayName), LSTRING(fatalInjuryConditionAI_Description)],
|
"CHECKBOX",
|
||||||
_categoryArray,
|
[LSTRING(FatalInjuryConditionAI_DisplayName), LSTRING(FatalInjuryConditionAI_Description)],
|
||||||
true, // default value
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
true,
|
||||||
{[QGVAR(fatalInjuryConditionAI), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(unconsciousConditionAI), "CHECKBOX",
|
QGVAR(AIUnconsciousness),
|
||||||
[LSTRING(unconsciousConditionAI_DisplayName), LSTRING(unconsciousConditionAI_Description)],
|
"CHECKBOX",
|
||||||
_categoryArray,
|
[LSTRING(AIUnconsciousness_DisplayName), LSTRING(AIUnconsciousness_Description)],
|
||||||
true, // default value
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
true,
|
||||||
{[QGVAR(unconsciousConditionAI), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(cardiacArrestTime), "SLIDER",
|
QGVAR(cardiacArrestTime),
|
||||||
[LSTRING(cardiacArrestTime_DisplayName), LSTRING(cardiacArrestTime_Description)],
|
"TIME",
|
||||||
_categoryArray,
|
[LSTRING(CardiacArrestTime_DisplayName), LSTRING(CardiacArrestTime_Description)],
|
||||||
[1,3600,30,0], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
[1, 3600, 30],
|
||||||
{[QGVAR(cardiacArrestTime), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
@ -1,68 +1,37 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Medical_Statemachine">
|
<Package name="Medical_Statemachine">
|
||||||
<Container name="Settings">
|
<Key ID="STR_ACE_Medical_Statemachine_SubCategory">
|
||||||
<Key ID="STR_ACE_Medical_statemachine_subCategory">
|
|
||||||
<English>States</English>
|
<English>States</English>
|
||||||
<German>Zustände</German>
|
<German>Zustände</German>
|
||||||
<Japanese>状態</Japanese>
|
<Japanese>状態</Japanese>
|
||||||
<Russian>Состояния</Russian>
|
<Russian>Состояния</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryCondition_DisplayName">
|
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryCondition_DisplayName">
|
||||||
<English>Fatal Injury Player</English>
|
<English>Fatal Injury Player</English>
|
||||||
<German>Tödliche Spielerverletzungen</German>
|
<German>Tödliche Spielerverletzungen</German>
|
||||||
<Japanese>致命傷プレイヤー</Japanese>
|
<Japanese>致命傷プレイヤー</Japanese>
|
||||||
<Russian>Смертельные ранения игрока</Russian>
|
<Russian>Смертельные ранения игрока</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryCondition_Description">
|
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryCondition_Description">
|
||||||
<English>Defines when Player can receive a fatal injury</English>
|
<English>Controls when a player can receive a fatal injury.</English>
|
||||||
<German>Definiert wann ein Spieler tödliche Verletzungen bekommen kann</German>
|
<German>Definiert wann ein Spieler tödliche Verletzungen bekommen kann</German>
|
||||||
<Japanese>プレイヤーが致命傷から蘇生できるかどうか決定します</Japanese>
|
<Japanese>プレイヤーが致命傷から蘇生できるかどうか決定します</Japanese>
|
||||||
<Russian>Определяет, когда игрок может получить смертельное ранение</Russian>
|
<Russian>Определяет, когда игрок может получить смертельное ранение</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryConditionAI_DisplayName">
|
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryConditionAI_DisplayName">
|
||||||
<English>Instant death AI</English>
|
<English>AI Instant Death</English>
|
||||||
<German>Direkter Tod KI</German>
|
<German>Direkter Tod KI</German>
|
||||||
<Japanese>AI の即死</Japanese>
|
<Japanese>AI の即死</Japanese>
|
||||||
<Russian>Мгновенная смерть ИИ</Russian>
|
<Russian>Мгновенная смерть ИИ</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_statemachine_fatalInjuryConditionAI_Description">
|
<Key ID="STR_ACE_Medical_Statemachine_FatalInjuryConditionAI_Description">
|
||||||
<English>Defines if AI will be able to die instantly</English>
|
<English>Controls if AI units are able to die instantly.</English>
|
||||||
<German>Legt fest, ob eine KI direkt sterben kann</German>
|
<German>Legt fest, ob eine KI direkt sterben kann</German>
|
||||||
<Japanese>AI が即死できるかどうか決定します</Japanese>
|
<Japanese>AI が即死できるかどうか決定します</Japanese>
|
||||||
<Russian>Определяет, сможет ли ИИ мгновенно умереть</Russian>
|
<Russian>Определяет, сможет ли ИИ мгновенно умереть</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_statemachine_unconsciousConditionAI_DisplayName">
|
<Key ID="STR_ACE_Medical_Statemachine_AIUnconsciousness_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>
|
<English>AI Unconsciousness</English>
|
||||||
<Russian>Потеря сознания ботами</Russian>
|
<Russian>Потеря сознания ботами</Russian>
|
||||||
<Polish>Nieprzytomność AI</Polish>
|
<Polish>Nieprzytomność AI</Polish>
|
||||||
@ -78,22 +47,23 @@
|
|||||||
<Chinesesimp>AI无意识</Chinesesimp>
|
<Chinesesimp>AI无意识</Chinesesimp>
|
||||||
<Chinese>AI無意識</Chinese>
|
<Chinese>AI無意識</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_statemachine_enableUnconsciousnessAI_Description">
|
<Key ID="STR_ACE_Medical_Statemachine_AIUnconsciousness_Description">
|
||||||
<English>Allow AI to go unconscious</English>
|
<English>Allows AI to go unconscious instead of dying.</English>
|
||||||
<Russian>Позволить ботам терять сознание</Russian>
|
</Key>
|
||||||
<Polish>Czy AI może być nieprzytomne od odniesionych obrażeń?</Polish>
|
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestTime_DisplayName">
|
||||||
<Spanish>Permita a la IA caer inconsciente</Spanish>
|
<English>Cardiac Arrest Time</English>
|
||||||
<German>KI kann bewusstlos werden</German>
|
<German>Zeit bis zum Herzstillstand</German>
|
||||||
<Czech>Umožňuje AI upadnout do bezvědomí</Czech>
|
<Japanese>心停止時間</Japanese>
|
||||||
<Portuguese>Permite IA ficar inconsciente</Portuguese>
|
<Russian>Длительность остановки сердца</Russian>
|
||||||
<French>Autoriser les IA à tomber inconscients</French>
|
</Key>
|
||||||
<Hungarian>Engedélyezi az AI eszméletének elvesztését</Hungarian>
|
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestTime_Description">
|
||||||
<Italian>Permetti alle IA di diventare incoscienti</Italian>
|
<English>Controls how long it takes to die from cardiac arrest.</English>
|
||||||
<Japanese>AI が気絶をするようになります</Japanese>
|
</Key>
|
||||||
<Korean>인공지능도 기절에 빠지게 합니다</Korean>
|
<Key ID="STR_ACE_Medical_Statemachine_InCardiacArrest">
|
||||||
<Chinesesimp>允许AI进入无意识状态</Chinesesimp>
|
<English>In Cardiac Arrest</English>
|
||||||
<Chinese>允許AI進入無意識狀態</Chinese>
|
<German>Herzstillstand</German>
|
||||||
|
<Japanese>心停止中</Japanese>
|
||||||
|
<Russian>При остановке сердца</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Container>
|
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -5,7 +5,7 @@ class ACE_Settings {
|
|||||||
class EGVAR(medical,painCoefficient) {
|
class EGVAR(medical,painCoefficient) {
|
||||||
movedToSQF = 1;
|
movedToSQF = 1;
|
||||||
};
|
};
|
||||||
class GVAR(ivFlowRate) {
|
class EGVAR(medical,ivFlowRate) {
|
||||||
movedToSQF = 1;
|
movedToSQF = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -29,7 +29,7 @@ if (!isNil {_unit getVariable QEGVAR(medical,ivBags)}) then {
|
|||||||
_x params ["_bagVolumeRemaining", "_type", "_bodyPart"];
|
_x params ["_bagVolumeRemaining", "_type", "_bodyPart"];
|
||||||
|
|
||||||
if (_tourniquets select _bodyPart == 0) then {
|
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;
|
_bagVolumeRemaining = _bagVolumeRemaining - _bagChange;
|
||||||
_bloodVolumeChange = _bloodVolumeChange + (_bagChange / 1000);
|
_bloodVolumeChange = _bloodVolumeChange + (_bagChange / 1000);
|
||||||
};
|
};
|
||||||
|
@ -1,33 +1,26 @@
|
|||||||
// CBA Settings [ADDON: ace_medical_status]:
|
|
||||||
|
|
||||||
private _categoryArray = [LELSTRING(medical,Category), LLSTRING(subCategory)];
|
|
||||||
|
|
||||||
[
|
[
|
||||||
QEGVAR(medical,bleedingCoefficient), "SLIDER",
|
QEGVAR(medical,bleedingCoefficient),
|
||||||
[LSTRING(bleedingCoefficient_DisplayName), LSTRING(bleedingCoefficient_Description)],
|
"SLIDER",
|
||||||
_categoryArray,
|
[LSTRING(BleedingCoefficient_DisplayName), LSTRING(BleedingCoefficient_Description)],
|
||||||
[0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
[0, 25, 1, 1],
|
||||||
{[QEGVAR(medical,bleedingCoefficient), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QEGVAR(medical,painCoefficient), "SLIDER",
|
QEGVAR(medical,painCoefficient),
|
||||||
[LSTRING(painCoefficient_DisplayName), LSTRING(painCoefficient_Description)],
|
"SLIDER",
|
||||||
_categoryArray,
|
[LSTRING(PainCoefficient_DisplayName), LSTRING(PainCoefficient_Description)],
|
||||||
[0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
[0, 25, 1, 1],
|
||||||
{[QEGVAR(medical,painCoefficient), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(ivFlowRate), "SLIDER",
|
QEGVAR(medical,ivFlowRate),
|
||||||
[LSTRING(ivFlowRate_DisplayName), LSTRING(ivFlowRate_Description)],
|
"SLIDER",
|
||||||
_categoryArray,
|
[LSTRING(IvFlowRate_DisplayName), LSTRING(IvFlowRate_Description)],
|
||||||
[0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
|
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||||
true, // isGlobal
|
[0, 25, 1, 1],
|
||||||
{[QGVAR(ivFlowRate), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
true
|
||||||
true // Needs mission restart
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Medical_Status">
|
<Package name="Medical_Status">
|
||||||
<Container name="Settings">
|
<Key ID="STR_ACE_Medical_Status_SubCategory">
|
||||||
<Key ID="STR_ACE_Medical_Status_subCategory">
|
|
||||||
<English>Status</English>
|
<English>Status</English>
|
||||||
<German>Zustand</German>
|
<German>Zustand</German>
|
||||||
<Japanese>状態</Japanese>
|
<Japanese>状態</Japanese>
|
||||||
<Russian>Статус</Russian>
|
<Russian>Статус</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_Status_bleedingCoefficient_DisplayName">
|
<Key ID="STR_ACE_Medical_Status_BleedingCoefficient_DisplayName">
|
||||||
<English>Bleeding coefficient</English>
|
<English>Bleeding Coefficient</English>
|
||||||
<Russian>Коэффициент кровопотери</Russian>
|
<Russian>Коэффициент кровопотери</Russian>
|
||||||
<Polish>Mnożnik krwawienia</Polish>
|
<Polish>Mnożnik krwawienia</Polish>
|
||||||
<Spanish>Coeficiente de sangrado</Spanish>
|
<Spanish>Coeficiente de sangrado</Spanish>
|
||||||
@ -24,8 +23,8 @@
|
|||||||
<Chinesesimp>流血系数</Chinesesimp>
|
<Chinesesimp>流血系数</Chinesesimp>
|
||||||
<Chinese>流血係數</Chinese>
|
<Chinese>流血係數</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_Status_bleedingCoefficient_Description">
|
<Key ID="STR_ACE_Medical_Status_BleedingCoefficient_Description">
|
||||||
<English>Coefficient to modify the bleeding speed</English>
|
<English>Coefficient for controlling the bleeding speed.</English>
|
||||||
<Russian>Коэффициент, изменяющий скорость потери крови</Russian>
|
<Russian>Коэффициент, изменяющий скорость потери крови</Russian>
|
||||||
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
|
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
|
||||||
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
|
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
|
||||||
@ -40,8 +39,8 @@
|
|||||||
<Chinesesimp>修改流血速度</Chinesesimp>
|
<Chinesesimp>修改流血速度</Chinesesimp>
|
||||||
<Chinese>修改流血速度</Chinese>
|
<Chinese>修改流血速度</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_Status_painCoefficient_DisplayName">
|
<Key ID="STR_ACE_Medical_Status_PainCoefficient_DisplayName">
|
||||||
<English>Pain coefficient</English>
|
<English>Pain Coefficient</English>
|
||||||
<Russian>Коэффициент боли</Russian>
|
<Russian>Коэффициент боли</Russian>
|
||||||
<Polish>Mnożnik bólu</Polish>
|
<Polish>Mnożnik bólu</Polish>
|
||||||
<Spanish>Coeficiente de dolor</Spanish>
|
<Spanish>Coeficiente de dolor</Spanish>
|
||||||
@ -56,8 +55,8 @@
|
|||||||
<Chinesesimp>疼痛系数</Chinesesimp>
|
<Chinesesimp>疼痛系数</Chinesesimp>
|
||||||
<Chinese>疼痛係數</Chinese>
|
<Chinese>疼痛係數</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_Status_painCoefficient_Description">
|
<Key ID="STR_ACE_Medical_Status_PainCoefficient_Description">
|
||||||
<English>Coefficient to modify the pain intensity</English>
|
<English>Coefficient for controlling the intensity of pain adjustments.</English>
|
||||||
<Russian>Коэффициент, изменяющий уровень боли</Russian>
|
<Russian>Коэффициент, изменяющий уровень боли</Russian>
|
||||||
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
|
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
|
||||||
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
|
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
|
||||||
@ -72,18 +71,17 @@
|
|||||||
<Chinesesimp>修改疼痛强度的系数</Chinesesimp>
|
<Chinesesimp>修改疼痛强度的系数</Chinesesimp>
|
||||||
<Chinese>修改疼痛強度的係數</Chinese>
|
<Chinese>修改疼痛強度的係數</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_Status_ivFlowRate_DisplayName">
|
<Key ID="STR_ACE_Medical_Status_IvFlowRate_DisplayName">
|
||||||
<English>IV Transfusion Flow Rate</English>
|
<English>IV Transfusion Flow Rate</English>
|
||||||
<German>Transfusions Fließrate</German>
|
<German>Transfusions Fließrate</German>
|
||||||
<Japanese>IV 輸血の流量</Japanese>
|
<Japanese>IV 輸血の流量</Japanese>
|
||||||
<Russian>Скорость внутривенного переливания</Russian>
|
<Russian>Скорость внутривенного переливания</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_Status_ivFlowRate_Description">
|
<Key ID="STR_ACE_Medical_Status_IvFlowRate_Description">
|
||||||
<English>Effects how quickly IV Bags will have effect</English>
|
<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>
|
<German>Wie schnell der Effekt der Transfusion eintritt</German>
|
||||||
<Japanese>IV による輸血速度を変更できます</Japanese>
|
<Japanese>IV による輸血速度を変更できます</Japanese>
|
||||||
<Russian>Определяет, насколько быстро подействуют эффекты внутривенного переливания</Russian>
|
<Russian>Определяет, насколько быстро подействуют эффекты внутривенного переливания</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Container>
|
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
@ -17,7 +17,6 @@ class CfgPatches {
|
|||||||
#include "ACE_Medical_Treatment.hpp"
|
#include "ACE_Medical_Treatment.hpp"
|
||||||
#include "ACE_Medical_Treatment_Actions.hpp"
|
#include "ACE_Medical_Treatment_Actions.hpp"
|
||||||
#include "ACE_Medical_Facilities.hpp"
|
#include "ACE_Medical_Facilities.hpp"
|
||||||
#include "ACE_Settings.hpp"
|
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
#include "CfgReplacementItems.hpp"
|
#include "CfgReplacementItems.hpp"
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
"LIST",
|
"LIST",
|
||||||
[LSTRING(AllowSelfIV_DisplayName), LSTRING(AllowSelfIV_Description)],
|
[LSTRING(AllowSelfIV_DisplayName), LSTRING(AllowSelfIV_Description)],
|
||||||
[ELSTRING(medical,Category), LSTRING(SubCategory_Treatment)],
|
[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
|
true
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user