diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml index 662ac1232..6e2348da9 100644 --- a/.hemtt/launch.toml +++ b/.hemtt/launch.toml @@ -2,5 +2,5 @@ workshop = [ "450814997", # CBA_A3's Workshop ID "463939057", # ACE3's Workshop ID - "2369477168", # Advanced Developer Tools's Workshop ID -] \ No newline at end of file + "2369477168" # Advanced Developer Tools's Workshop ID +] diff --git a/addons/airway/stringtable.xml b/addons/airway/stringtable.xml index ccb088d61..311355398 100644 --- a/addons/airway/stringtable.xml +++ b/addons/airway/stringtable.xml @@ -117,6 +117,7 @@ Okkluusiojäähdytyssykli Период восстановления окклюзии Verstoppings afkoelingsperiode + Periodo di Recupero dell'Occlusione Activate the puking sound? @@ -335,6 +336,7 @@ 气道未被阻塞 Vias aéreas não obstruídas Luchtweg is niet geblokkeerd + Le vie aeree non sono ostruite Airway is not occluded @@ -348,6 +350,7 @@ 气道未闭塞 Vias aéreas não ocluídas Luchtweg is niet verstopt + Le vie aeree non sono occluse Airway is obstructed, airway management needed @@ -361,6 +364,7 @@ 气道阻塞,需要气道管理 Vias aéreas obstruídas, gerenciamento de vias aéreas necessário Luchtweg is geblokkeerd, luchtwegmanagement is vereist + Le vie aeree sono ostruite, è necessario un intervento sulle vie aeree Airway is occluded, medical suction needed @@ -374,6 +378,7 @@ 气道堵塞,需要吸痰 Vias aéreas ocluídas, sucção médica necessária Luchtweg is verstopt, medische suctie is vereist + Le vie aeree sono occluse, è necessaria l'aspirazione medica Airway is clear @@ -463,6 +468,7 @@ 病人的头部已经过度伸展 A cabeça do paciente já está hiperestendida Patiënts hoofd is al overstrekt + La testa del paziente è già iperestesa Hyperextending head @@ -514,6 +520,7 @@ 头部拉伸成功 Cabeça hiperestendida com sucesso Hoofd succesvol overstrekt + Testa iperestesa con successo %1 hyperextended %2s head @@ -524,6 +531,7 @@ %1 a placé la tête de %2 en hyperextension %1 hiperestendeu a cabeça de %2 %1 overstrekte %2s hoofd + %1 ha posto la testa di %2 in iperestensione Head turn performed, airways are still not clear @@ -575,6 +583,7 @@ Aloita potilaan pään kääntäminen Начать поворачивать голову Begin hoofddraaiing + Iniziata la rotazione della testa Head turning cancelled @@ -589,6 +598,7 @@ Поворот головы отменен 异物清除停止了 Hoofddraaiing gestopt + Rotazione della testa annullata Head Turning Started @@ -602,6 +612,7 @@ 开始清除异物 Rotação de cabeça iniciada Hoofddraaiing gestart + Rotazione della testa avviata Stop head turning @@ -616,6 +627,7 @@ Перестаньте поворачивать голову 停止清除异物 Stop de hoofddraaiing + Fermare la rotazione della testa Medical suction not needed @@ -646,6 +658,7 @@ Aspiration médicale effectuée. Occlusion retirée Sucção médica completa. Oclusão removida. Medische suctie voltooid, Verstopping verwijderd + Aspirazione medica completata, occlusione rimossa Checking Airway @@ -770,6 +783,7 @@ ACCUVAC ACCUVAC ACCUVAC + ACCUVAC ACCUVAC is a medical suction device for airway suction with battery drive for mobile use in emergency medicine. @@ -801,6 +815,7 @@ Aspiration des voies respiratoires Sucção de vias aéreas Luchtweg suctie + Aspirazione delle vie aeree Manual Suction Pump @@ -812,6 +827,7 @@ Pompe d'aspiration manuelle Bomba de Sucção Manual Handmatige suctiepomp + Pompa di aspirazione manuale %1 did a medical suction using a %2 @@ -822,6 +838,7 @@ %1 a effectué une aspiration médicale en utilisant un(e) %2 %1 executou uma sucção médica usando %2 %1 voerde een medische suctie uit met een %2 + %1 ha eseguito un'aspirazione medica utilizzando un/a %2 Manual Suction Pump is a medical suction device for airway suction manually. This is an alternative to electrical devices. @@ -833,6 +850,7 @@ La pompe d’aspiration manuelle est un dispositif d’aspiration médical pour l’aspiration manuelle des voies respiratoires. C’est une alternative aux appareils électriques. A Bomba de Sucção Manual é um dispositivo médico que possibilita a sucção manual das vias aéras, sendo uma alternativa aos dispositivos elétricos. De handmatige suctiepomp is een apparaat om handmatig de luchtwegen af te zuigen. Dit is een alternatief voor electrische apparaten + La pompa di aspirazione manuale è un dispositivo medico per l'aspirazione delle vie aeree manualmente. Questa è un'alternativa ai dispositivi elettrici. Airway Suction (Manual) @@ -844,6 +862,7 @@ Aspiration des voies respiratoires (Manuel) Sucção de vias aéreas (manual) Handmatige luchtweg suctie + Aspirazione delle vie aeree (manuale) Reusable Manual Suction Pump @@ -855,6 +874,7 @@ Pompre d'aspiration manuelle réutilisable Bomba de Sucção Manual Reutilizável Herbruikbare handmatige suctiepomp + Pompa di aspirazione manuale riutilizzabile Regain the Manual Suction Pump after use @@ -866,6 +886,7 @@ Récupère la pompe d'asipiration manuelle après utilisation Recupere a Bomba de Sucção Manual após o uso Krijg de handmatige suctiepomp terug na gebruik + Recuperare la pompa di aspirazione manuale dopo l'uso Vomit (Small) @@ -1048,6 +1069,7 @@ Autoriser la pompe d'aspiration manuelle Permitir Bomba de Sucção Manual Sta handmatige suctiepomp toe + Permettere l'uso della pompa di aspirazione manuale Training level required to use an Manual Suction Pump @@ -1059,6 +1081,7 @@ Niveau d'entrainement requis pour utiliser une pompe d'aspiration manuelle Nível de formação necessário para utilizar uma Bomba de Sucção Manual Trainingsniveau benodigd om een handmatige suctiepomp te gebruiken + Livello di formazione richiesto per utilizzare una pompa di aspirazione manuale Time to check Airway @@ -1148,6 +1171,7 @@ pään käännösväli Интервал поворота головы Hoofddraaiing interval + Intervallo di rotazione della testa Time between head turning attempts @@ -1161,6 +1185,7 @@ pään käännösyritysten välinen aika Время между попытками поворота головы Tijd tussen hoofddraaiing pogingen + Tempo tra i tentativi di rotazione della testa %1 finished head turning (x%2) @@ -1174,6 +1199,7 @@ %1 lopetti pään kääntämisen (x%2) %1 закончил поворот головы (x%2) %1 heeft het hoofd gedraaid (x%2) + %1 ha completato la rotazione della testa (x%2) Time for ACCUVAC @@ -1223,6 +1249,7 @@ Durée d'aspiration avec la pompe d'aspiration manuelle Tempo de uso da Bomba de Sucção Manual Behandelstijd van een handmatige suctiepomp + Tempo per la pompa di aspirazione manuale How long it will take to use Manual Suction Pump @@ -1234,6 +1261,7 @@ Temps nécessaire pour utiliser la pompe d'aspiration manuelle Quanto tempo leva o uso da Bomba de Sucção Manual Hoe lang het gaat duren om een handmatige suctiepomp te gebruiken + Quanto tempo ci vorrà per utilizzare la pompa di aspirazione manuale Time for Larynxtubus @@ -1430,6 +1458,7 @@ %1 cancelada posición lateral de seguridad %1 cancelou a posição de recuperação %1 stopte de stabiele zijligging + %1 ha annullato la posizione laterale di sicurezza Time for recovery position @@ -1532,6 +1561,7 @@ Benötigte Zeit, um eine stabile Seitenlage rückganging zu machen. Quanto tempo leva para cancelar manualmente a posição de recuperação Hoe lang het gaat duren om de stabiele zijligging te stoppen + Quanto tempo ci vorrà per annullare manualmente la posizione laterale di sicurezza Recovery Position time to drain occlusion @@ -1544,6 +1574,7 @@ Stabile Seitenlage: Benötigte Zeit zum Entgegenwirken einer Verstopfung Tempo para remover a oclusão durante a posição de recuperação Stabiele zijligging: Benodigde tijd om zich te ontdoen van een verstopping + Tempo in posizione laterale di sicurezza per drenare l'occlusione Maximum time required for patient in recovery position to be drained of occlusion. @@ -1556,6 +1587,7 @@ Beschreibt die maximal benötigte Dauer, bei welcher eine Stabile Seitenlage zur zur Freilegung der verstopften Atemwege führt. O tempo máximo necessário para o paciente em posição de recuperação ter sua oclusão removida. Maximale tijd die nodig is om een patiënt in de stabiele zijligging te ontdoen van een verstopping. + Tempo massimo richiesto per drenare l'occlusione nel paziente in posizione laterale di sicurezza Recovery Position + Head Hyperextend Settings @@ -1568,6 +1600,7 @@ Einstellungen für Stabile Seitenlage und Kopfüberstreckung Configurações de posição de recuperação + hiperestensão Stabiele zijliggings- en hoofd overstrekkings opties + Impostazioni della posizione laterale di sicurezza + iperestensione della testa Suction devices Settings @@ -1579,6 +1612,7 @@ Paramètres des appareils d'aspiration Configurações de dispositivos de sucção Suctie apparaten instellingen + Impostazioni dei dispositivi di aspirazione Airway items Settings diff --git a/addons/breathing/functions/fnc_gui_updateInjuryListPart.sqf b/addons/breathing/functions/fnc_gui_updateInjuryListPart.sqf index 4b13dc4e6..f17cf75a2 100644 --- a/addons/breathing/functions/fnc_gui_updateInjuryListPart.sqf +++ b/addons/breathing/functions/fnc_gui_updateInjuryListPart.sqf @@ -24,7 +24,7 @@ if (GVAR(showCyanosis) && _selectionN in [0,2,3]) then { private _spO2 = 0; if (alive _target) then { - _spO2 = GET_SPO2(_target); + _spO2 = GET_KAT_SPO2(_target); }; if (_spO2 <= GVAR(slightValue) || HAS_TOURNIQUET_APPLIED_ON(_target,_selectionN)) then { diff --git a/addons/breathing/functions/fnc_treatmentAdvanced_pulseoximeterLocal.sqf b/addons/breathing/functions/fnc_treatmentAdvanced_pulseoximeterLocal.sqf index 203156c3a..c58a88396 100644 --- a/addons/breathing/functions/fnc_treatmentAdvanced_pulseoximeterLocal.sqf +++ b/addons/breathing/functions/fnc_treatmentAdvanced_pulseoximeterLocal.sqf @@ -40,7 +40,7 @@ _patient setVariable [QGVAR(PulseOximeter_Attached), _attachedPulseOximeter, tru }; private _HR = GET_HEART_RATE(_patient); - private _SpO2 = GET_SPO2(_patient); + private _SpO2 = GET_KAT_SPO2(_patient); if (([_patient,_bodyPart] call ACEFUNC(medical_treatment,hasTourniquetAppliedTo))) then { _HR = 0; @@ -58,7 +58,7 @@ _patient setVariable [QGVAR(PulseOximeter_Attached), _attachedPulseOximeter, tru [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private _SpO2 = GET_SPO2(_patient); + private _SpO2 = GET_KAT_SPO2(_patient); if (([_patient,_bodyPart] call ACEFUNC(medical_treatment,hasTourniquetAppliedTo))) then { _SpO2 = 0; diff --git a/addons/breathing/stringtable.xml b/addons/breathing/stringtable.xml index e277844c1..1d288a07e 100644 --- a/addons/breathing/stringtable.xml +++ b/addons/breathing/stringtable.xml @@ -10,6 +10,7 @@ Activer le module de respiration Ativar o Módulo de Respiração Activeer ademhalingsmodule + Attivare il modulo di respirazione Sets if SPO2 simulation and according functionality like Pneumothorax and \nAirway: occlusion & obstruction (SPO2 reduction will be deactivated) should be activated @@ -20,6 +21,7 @@ Définit si la simulation SpO2 et les fonctionnalités correspondantes telles que les pneumothorax et \nvoies respiratoires : occlusion & obstruction (la réduction de la SPO2 sera désactivée) doivent être activées Define se a simulação de SpO2 e suas funcionalidades como Pneumotórax e \nOclusão/Obstrução de Vias Aéreas (redução de SpO2 será desabilitada) deve ser habilitada. Activeert SpO2 simulatie omtrend pneumothorax en luchtwegen: verstopping en obstructie (SpO2 reductie wordt gedeactiveerd) + Imposta se la simulazione SPO2 e le relative funzionalità, come Pneumotorace e Vie aeree: occlusione e ostruzione (la riduzione SPO2 sarà disattivata), devono essere attivate Lethal SpO2 value @@ -65,6 +67,7 @@ Valeur d'arrêt cardiaque de la SpO2 Valor de SpO2 para parada cardíaca Hartstilstand SpO2 waarde + Valore SpO2 arresto cardiaco Activate cardiac arrest SpO2 value @@ -74,6 +77,7 @@ Activer la valeur d'arrêt cardique de la SpO2 Ativar parada cardíaca por valor de SpO2 Activeer hartstilstand SpO2 waarde + Attivare il valore SpO2 arresto cardiaco SpO2 positive multiplier @@ -141,10 +145,12 @@ Enable PaCO2 PaCO2を有効化 + Abilitare PaCO2 Enables PaCO2 movement and effects on ph and breathing rate phや呼吸速度へ影響を与えるPaCO2(動脈血二酸化炭素分圧)の変動を有効にします + Abilita il movimento di PaCO2 e gli effetti su pH e frequenza respiratoria Probability for a pneumothorax @@ -172,6 +178,7 @@ Habilitar monitoramento de ETCo2 Permitir monitoreo de ETCo2 Activeer ETCo2 monitor + Abilitare il monitoraggio ETCo2 Sets if medics can view a patient's ETCo2 and Respiratory Rate in the Vitals Monitor when a device capable of monitoring ETCo2 is connected @@ -181,6 +188,7 @@ Define se um médico pode ver o ETCo2 e a Frequência Respiratória no Monitor de Sinais Vitais quando um dispositivo capaz de monitorar ETCo2 estiver conectado Establece si los médicos puede ver el ETCo2 y la Frecuencia Respiratoria de una paciente en el monitor de Signos Vitales cuando se conecta un dispositivo capaz de monitorear ETCo2 Activeert het zien van ETCo2 en ademhalingstempo op de vitale waarden monitor wanneer een apparaat die ETCo2 kan monitoren is aangesloten + Imposta se i medici possono visualizzare l'ETCo2 e la frequenza respiratoria del paziente nel monitor dei parametri vitali quando è connesso un dispositivo in grado di monitorare l'ETCo2 Desired units for ETCo2 Monitoring @@ -190,6 +198,7 @@ Unidades desejadas para monitoramento de ETCo2 Unidades deseadas para el monitoreo de ETCo2 Geprefereerde eenheden voor ETCo2 monitoren + Unità desiderate per il monitoraggio ETCo2 Allow Nasal Cannula @@ -199,6 +208,7 @@ Permitir Cânula Nasal Permitir cánula nasal Sta nasale canule toe + Consentire l'uso della cannula nasale Training level required to insert a Nasal Cannula @@ -208,6 +218,7 @@ Nível de treinamento necessário para inserir uma Cânula Nasal Nivel de formación requerido para insertar una cánula nasal Trainingsniveau benodigd voor het inbrengen van een nasale canule + Livello di formazione richiesto per inserire una cannula nasal Time for Nasal Cannula @@ -217,6 +228,7 @@ Tempo para Cânula Nasal Tiempo de la cánula nasal Tijd voor het inbrengen van een nasale canule + Tempo per la cannula nasale How long it will take to insert a Nasal Cannula @@ -226,6 +238,7 @@ Quanto tempo levará para inserir uma Cânula Nasal Tiempo necesario para insertar una cánula nasal Hoelang het gaat duren om een nasale canule in te brengen + Quanto tempo ci vorrà per inserire una cannula nasale Attach Pulse Oximeter @@ -287,6 +300,7 @@ Wordt gebruikt om polsslag en SpO2 te meten Utilisé pour vérifier le rythme cardiaque et la SpO2 Utilizado para analizar el pulso sanguíneo y el SpO2 + Utilizzato per leggere la frequenza del polso e il valore SpO2 Placing @@ -529,6 +543,7 @@ Poista rintatiiviste hoidon jälkeen Устранить уплотнение в грудной клетке после лечения Verwijder chest seal na behandeling + Rimuovere il Chest Seal dopo il trattamento Stable SpO2 value to gain consciousness @@ -804,6 +819,7 @@ Die Wahrscheinlichkeit in Prozent, welche bestimmt, ob sich ein vollständig verschlechterter Pneumothorax in einen fortgeschrittenen Pneumothorax entwickelt.\nDies wird fortlaufend, auf Basis des Pneumothorax Verschlechterungs Intervals, ermittelt. A porcentagem de chance que determina se um pneumotórax completamente deteriorado irá se deteriorar em um pneumotórax avançado, isso é calculado continuamente conforme o intervalo de deterioração de pneumotórax De kans in procenten, dat bepaalt of een pneumothorax zich doorontwikkeld naar een geadvanceerde pneumothorax. Dit wordt doorlopend gerold op basis van de pneumothorax verslechterings interval + La percentuale di probabilità che determina se un pneumotorace completamente deteriorato degenererà in un pneumotorace avanzato, questo viene calcolato continuamente come impostato nell'intervallo di deterioramento del pneumotorace. Hemothorax / Tension Pnuemothorax Treament Minimum Level @@ -888,6 +904,7 @@ Lisää pneumotoraksin mahdollisuutta vaurion perusteella Увеличивает вероятность пневмоторакса в зависимости от повреждения Verhoogt pneumothorax kans op basis van schade + Aumentare la probabilità di pneumotorace in base al danno subito Increase chance of a pneumothorax and advanced pneumothorax occurring based on damage taken if over the pneumothorax damage threshold @@ -900,6 +917,7 @@ Lisää ilmarintakehän ja pitkälle edenneen ilmarinnan esiintymisen todennäköisyyttä tehdyn vaurion perusteella, jos vaurio on suurempi kuin ilmarintakehän kehittymiseen vaadittava vähimmäisvaurio. Увеличивает вероятность возникновения пневмоторакса и прогрессирующего пневмоторакса в зависимости от полученного повреждения, если оно превышает порог повреждения от пневмоторакса Verhoogt de kans op een (geadvanceerde) pneumothorax wanneer de schade hoger is dan de drempelwaarde + Aumentare la probabilità che si verifichi un pneumotorace e un pneumotorace avanzato in base al danno subito, se oltre la soglia di danno del pneumotorace Deep Penetrating Injury Chance @@ -912,6 +930,7 @@ Mahdollisuus syvään tunkeutuvaan vammaan Вероятность глубокого проникающего ранения Kans op diep penetrerende wond. + Probabilità di lesione penetrante profonda Chance for deep penetrating injury to appear when pneumothorax damage threshold is passed but no pneumothorax is inflicted @@ -924,6 +943,7 @@ Mahdollisuus syvään tunkeutuvaan vammaan syntyy, kun ilmarintakehän vaurioituminen on minimaalista, mutta ilmarintaa ei ole kehittynyt. Вероятность получения глубокого проникающего ранения возникает, когда порог повреждения пневмотораксом превышен, но пневмоторакс не причинен Kans voor het verschijnen van een diep penetrerende wond wanneer de drempelwaarde voor een pneumothorax overschreden wordt maar er geen pneumothorax gerold wordt. + Probabilità che si verifichi una lesione penetrante profonda quando la soglia di danno del pneumotorace è superata, ma non si verifica pneumotorace Deep Penetrating Injury @@ -936,6 +956,7 @@ Syvä tunkeutuva vamma Глубокое проникающее ранение Diep penetrerende wond + Lesione penetrante profonda Chest Seal Applied @@ -948,6 +969,7 @@ Rintatiiviste on kiinnitetty Наложен оклюзивный пластырь на грудную клетку Chest seal aangebracht + Sigillo toracico applicato Hemopneumothorax internal bleeding amount @@ -990,6 +1012,7 @@ Pneumothorax on aina näkyvissä Пневмоторакс всегда виден Pneumothorax altijd zichtbaar + Pneumotorace sempre visibile Sets if pneumothorax should always be visible in the medical menu as an injury instead of requiring diagnosis (1x pneumothorax) @@ -1002,6 +1025,7 @@ Määrittää, näkyykö ilmarinta aina lääkärille vammana diagnoosin vaatimisen sijaan (1x ilmarinta) Устанавливает, должен ли пневмоторакс всегда отображаться в медицинском меню как травма, а не требовать постановки диагноза (1x пневмоторакс) Defineert of een pneumothorax altijd zichbaar is in het medische menu als een wond, zonder dat deze een diagnose vereist (1x pneumothorax) + Imposta se il pneumotorace deve essere sempre visibile nel menu medico come lesione, invece di richiedere una diagnosi (1x pneumotorace) Tension pneumothorax and hemothorax always visible @@ -1014,6 +1038,7 @@ Jännitysilmarinta ja hemothorax ovat aina näkyvissä Напряженный пневмоторакс и гемоторакс всегда видны Spannings- en hemopneumothorax altijd zichtbaar + Pneumotorace da tensione e emotorace sempre visibili Sets if tension pneumothorax and hemopneumothorax should always be visible in the medical menu as an injury instead of requiring diagnosis (1x tensionpneumothorax/1x hemopneumothorax) @@ -1026,6 +1051,7 @@ Määrittää, pitäisikö jännityspneumotoraksin ja hemopneumotoraksin aina näkyä lääkärille vammana diagnoosin vaatimisen sijaan (1x jännitysilmarinta tai hemopneumotoraksi) Устанавливает, должны ли напряженный пневмоторакс и гемопневмоторакс всегда отображаться в медицинском меню как травма, а не требовать постановки диагноза (1x напряженный пневмоторакс/1x гемопневмоторакс). Defineert of spannings- en hemopneumothoraxen altijd zichtbaar zijn in het medische menu als een wond, zonder dat deze een diagnose vereist (1x spanningspneumothorax / 1x hemopneumothorax) + Imposta se il pneumotorace da tensione e l'emopneumotorace devono essere sempre visibili nel menu medico come lesioni, invece di richiedere una diagnosi (1x pneumotorace da tensione/1x emopneumotorace) Stethoscope @@ -1296,6 +1322,7 @@ Näytä syanoosi Показать цианоз Toon cyanose + Mostra cianosi Shows cyanosis of patient in overview tab @@ -1308,6 +1335,7 @@ Näyttää potilaan syanoosin lääketieteellisen yleiskuvan näytössä Показывает цианоз пациента на вкладке обзор Toont de cyanose van de patiënt op de overzichtspagina + Mostra la cianosi del paziente nella scheda panoramica Slight cyanosis SpO2 value @@ -1438,6 +1466,7 @@ Pneumotoraksin mahdollisuus pahentua Вероятность обострения пневмоторакса Kans voor een pneumothorax om te verslechteren + Probabilità che il pneumotorace peggiori Deteriorating pneumothorax interval @@ -1450,6 +1479,7 @@ Aika pneumotoraksin pahenemismahdollisuuksien välillä Интервал ухудшения состояния при пневмотораксе Pneumothorax verslechteringsinterval + Intervallo di deterioramento del pneumotorace After each interval a chance will be rolled whether or not the pneumothorax will deteriorate @@ -1462,6 +1492,7 @@ Jokaisen ajanjakson jälkeen lasketaan mahdollisuus, paheneeko ilmarinta vai ei После каждого интервала будет проверяться, ухудшится пневмоторакс или нет Na elke interval wordt een nieuwe kansrol uitgevoerd die bepaald of de pneumothorax verslechterd + Dopo ogni intervallo, verrà calcolata una probabilità che il pneumotorace peggiori Enable Pneumothorax Arrest @@ -1471,6 +1502,7 @@ Activer l'arrêt dû au pneumothorax Habilitar Parada por Pneumotórax Sta pneumothorax hartstilstand toe + Abilitare l'arresto del pneumotorace Enables a chance for cardiac arrest following pneumothorax @@ -1480,6 +1512,7 @@ Active la chance qu'un arrêt cardiaque se produise en cas de pneumothorax Habilita uma chance de parada cardíaca após o pneumotórax Staat de kans op een hartstilstand na een pneumothorax toe + Abilita una probabilità di arresto cardiaco a seguito di pneumotorace Deteriorating pneumothorax arrest interval @@ -1489,6 +1522,7 @@ Intervalle de détérioration du pneumothorax en arrêt Intervalo de parada por pneumotórax deteriorado Pneumothorax verslechterings hartstilstand interval + Intervallo di arresto del pneumotorace in deterioramento After each interval a chance will be rolled whether or not a pneumothorax will result in cardiac arrest @@ -1498,6 +1532,7 @@ Après chaque intervalle de temps, un pourcentage de chance sera lancé pour savoir si oui ou non le pneumothorax va résulter en un arrêt cardiaque Após cada intervalo, será calculado se o pneumotórax vai resultar em uma parada cardíaca na elke interval wordt er een kansrol uitgevoerd die bepaald of een pneumothorax leidt tot een hartstilstand + Dopo ogni intervallo, verrà calcolata una probabilità che un pneumotorace porti a un arresto cardiaco Breathing items Settings @@ -1659,6 +1694,7 @@ Iniciada asistencia respiratoria Ventilação com BVM iniciada Beademing gestart + Respirazione di salvataggio avviata Put away BVM @@ -1671,6 +1707,7 @@ Varastoi BVM Убрать BVM BVM wegleggen + Riporre il BVM Rescue Breaths Cancelled @@ -1683,6 +1720,7 @@ Pelastushengitykset peruttu Отмена спасения с помощью BVM Beademing is gestopt + Respirazione di salvataggio annullata Use Pocket BVM @@ -1740,6 +1778,7 @@ Käytä BVM:ää ajoneuvon happisäiliön kanssa Использовать BVM с кислородным баллоном (автомобиль) Gebruik BVM met zuurstoftank (voertuig) + Usare il BVM con bombola di ossigeno (veicolo) Using BVM with Oxygen Tank (Vehicle) @@ -2250,6 +2289,7 @@ Tarkista potilaan hengitys Проверить дыхание Check ademhaling + Controllare la respirazione Checking Breathing @@ -2262,6 +2302,7 @@ Potilaan hengityksen tarkistaminen Проверка дыхания Ademhaling controleren + Controllando la respirazione , harsh and metallic @@ -2274,6 +2315,7 @@ , kova ja metallinen , резкий и металлический , hard en metaalachtig + , aspra e metallica , slightly fruity @@ -2286,6 +2328,7 @@ , hieman hedelmäinen , слегка фруктовый , lichtelijk fruitig + , leggermente fruttata Patient is breathing normally @@ -2298,6 +2341,7 @@ Potilas hengittää normaalisti Пациент дышит нормально Patiënt ademt normaal + Il paziente respira normalmente Patient's breathing is shallow @@ -2310,6 +2354,7 @@ Potilaan hengitys on pinnallista Дыхание пациента поверхностное Patiënts ademhaling is oppervlakkig + La respirazione del paziente è superficiale Shallow @@ -2322,6 +2367,7 @@ Matala Дыхание поверхностное Oppervlakkig + Superficiale Patient is not breathing @@ -2349,6 +2395,7 @@ %1 tarkistettu hengitys: %2 %1 проверил дыхание: %2 %1 controleerde ademhaling: %2 + %1 ha controllato la respirazione: %2 Enable Inspect Chest @@ -2361,6 +2408,7 @@ Ota rinnan tarkastus käyttöön Активировать осмотр грудной клетки Sta Thoraxinspectie toe + Abilitare l'ispezione del torace Simple @@ -2373,6 +2421,7 @@ Yksinkertainen Простой Simpel + Semplice Default @@ -2385,6 +2434,7 @@ Default Значение по умолчанию Standaard + Predefinito Inspect Chest Time @@ -2397,6 +2447,7 @@ Kuinka kauan rintakehän tarkastus kestää Время осмотра грудной клетки Thorax inspectie tijd + Tempo di ispezione del torace Allow Inspecting Chest @@ -2409,6 +2460,7 @@ Salli rintatutkimus Разрешить осмотр грудной клетки Sta thorax inspectie toe + Consentire l'ispezione del torace Inspect Chest @@ -2421,6 +2473,7 @@ Tutki rintakehä Осмотреть грудную клетку Thoraxinspectie + Ispezionare il torace Inspecting Chest @@ -2433,6 +2486,7 @@ Rintakehän tutkiminen Осмотр грудной клетки Thoraxinspectie + Ispezionando il torace %1 inspected chest: %2 @@ -2445,6 +2499,7 @@ %1 tarkastettu rintakehä: %2 %1 проверил грудную клетку: %2 %1 inspecteerde thorax:%2 + %1 ha ispezionato il torace: %2 Chest rise and fall observed @@ -2457,6 +2512,7 @@ Rintakehän nousu ja lasku havaittu Наблюдается подъем и опускание грудной клетки Stijging en daling van thorax worden geobserveerd + Sollevamento e abbassamento del torace osservati No chest movement observed @@ -2469,6 +2525,7 @@ Rintakehän liikettä ei havaittu Движений грудной клетки не наблюдается Geen thorax beweging wordt geobserveerd + Nessun movimento del torace osservato No chest movement @@ -2481,6 +2538,7 @@ Ei liikettä rinnassa Отсутствие движения грудной клетки Geen thorax beweging + Nessun movimento del torace Chest sides are uneven @@ -2493,6 +2551,7 @@ Rintakehän sivut ovat epätasaiset Бока грудной клетки неровные Thoraxzijden zijn oneven + I lati del torace sono irregolari , chest sides uneven @@ -2505,6 +2564,7 @@ , rintakehän sivut epätasaiset , бока грудной клетки неровные , thoraxzijden oneven + , lati del torace irregolari Uneven chest rise and fall @@ -2517,6 +2577,7 @@ Epätasainen rintakehän nousu ja lasku Неравномерный подъем и опускание грудной клетки Ongelijkmatige stijging en daling van thorax + Sollevamento e abbassamento del torace irregolari Skin is rigid, looks bruised @@ -2529,6 +2590,7 @@ Iho on jäykkä ja näyttää mustelmalta Кожа жесткая, выглядит ушибленной Huid is stijf, ziet er gekneusd uit + La pelle è rigida, appare lividi Symptoms indicate %1 @@ -2541,6 +2603,7 @@ Oireet osoittavat %1 Симптомы указывают на %1 Symptomen indiceren %1 + I sintomi indicano %1 Pneumothorax @@ -2553,6 +2616,7 @@ Pneumotoraksi Пневмоторакс (PTX) Pneumothorax + Pneumotorace Tension Pneumothorax @@ -2565,6 +2629,7 @@ jännitysilmarinta Напряженный пневмотораксе Spanningspneumothorax + Pneumotorace da tensione Hemopneumothorax @@ -2577,6 +2642,7 @@ hemopneumotoraksi Гемоторакс Hemopneumothorax + Emopneumotorace PTX @@ -2589,6 +2655,7 @@ PTK PTX PTX + PTX TPTX @@ -2601,6 +2668,7 @@ JSA TPTX SPTX + TPTX HPTX @@ -2613,6 +2681,7 @@ HPT HPTX HPTX + HPTX Nasal Cannula @@ -2622,6 +2691,7 @@ Cânula Nasal Cánula Nasal Nasale canule + Cannula nasale The Nasal Cannula can be inserted into a patient's nostrils and connected to a vitals monitor to record a patient's ETCo2 level and respiratory rate. @@ -2631,6 +2701,7 @@ A Cânula Nasal pode ser inserida nas narinas de um paciente e conectada ao monitor de sinais vitais para mensurar o nível de ETCo2 e a frequência respiratória. La cánula nasal se puede insertar en las fosas nasales de un paciente y conectarse a un monitor de signos vitales para registrar el nivel de ETCo2 y la frecuencia respiratoria del paciente. De nasale canule kan in de neusgaten van de patiënt aangebracht worden en verbonden aan een vitale waarden monitor om de ETCo2 waarden en het ademhalingstempo van de patiënt te monitoren + La cannula nasale può essere inserita nelle narici di un paziente e collegata a un monitor dei parametri vitali per registrare il livello di ETCo2 e la frequenza respiratoria del paziente. Remove Nasal Cannula @@ -2640,6 +2711,7 @@ Remover Cânula Nasal Quitar la cánula nasal Verwijder nasale canule + Rimuovere la cannula nasale %1 removed Nasal Cannula @@ -2649,13 +2721,16 @@ %1 removeu a Cânula Nasal %1 retiró la cánula nasal %1 verwijderde nasale canule + %1 ha rimosso la cannula nasale Enable Check Breathing Activer le contrôle de la respiration + Abilitare il controllo della respirazione Whether or not Check Breathing medical action is enabled + Se l'azione medica di controllo della respirazione è abilitata o meno Si "Contrôle de la respiration" est activée ou non diff --git a/addons/chemical/CfgAmmo.hpp b/addons/chemical/CfgAmmo.hpp index 3d40ed641..cec60e938 100644 --- a/addons/chemical/CfgAmmo.hpp +++ b/addons/chemical/CfgAmmo.hpp @@ -1,17 +1,16 @@ -class CfgAmmo -{ +class CfgAmmo { + class SmokeShellArty; - class KAT_SmokeShellArty: SmokeShellArty{ + class KAT_SmokeShellArty: SmokeShellArty { smokeColor[] = {0,0,0,0}; }; class Smoke_82mm_AMOS_White; - class Sh_82mm_AMOS_Type0: Smoke_82mm_AMOS_White - { + class Sh_82mm_AMOS_Type0: Smoke_82mm_AMOS_White { KAT_projectile = 1; KAT_lifetime = 90; KAT_radius = 10; - KAT_toxicLvL = 0; + KAT_toxicLvL = 1; soundFakeFall[] = {"soundFakeFall0",0.25,"soundFakeFall1",0.25,"soundFakeFall2",0.25,"soundFakeFall3",0.25}; soundFakeFall0[] = {"a3\Sounds_F\weapons\falling_bomb\fall_01",3.16228,1,1000}; soundFakeFall1[] = {"a3\Sounds_F\weapons\falling_bomb\fall_02",3.16228,1,1000}; @@ -21,17 +20,16 @@ class CfgAmmo whistleOnFire = 2; submunitionAmmo = "KAT_SmokeShellArty"; }; - class Sh_82mm_AMOS_TypeCS: Sh_82mm_AMOS_Type0 - { + + class Sh_82mm_AMOS_TypeCS: Sh_82mm_AMOS_Type0 { KAT_projectile = 1; KAT_lifetime = 60; KAT_radius = 10; - KAT_toxicLvL = 1; //cs + KAT_toxicLvL = 0; //cs }; class SmokeShell; - class KAT_G_M7A3: SmokeShell - { + class KAT_G_M7A3: SmokeShell { KAT_csGas = 1; model = QPATHTOF(ui\m7a3_throw.p3d); dangerRadiusHit = -1; @@ -58,7 +56,7 @@ class CfgAmmo indirectHit = 0; indirectHitRange = 0; soundHit[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - explosionEffects = "KAT_GASTripEffect"; + explosionEffects = "KAT_TripWireGasEffect"; CraterEffects = ""; soundTrigger[] = {"",1,1}; class CamShakeExplode { @@ -115,9 +113,8 @@ class CfgAmmo frequency = 5; distance = 250; }; - - }; + class Mo_cluster_Bomb_01_F; class KAT_CAS_M43_Ammo_sub: Mo_cluster_Bomb_01_F { hit = 0; diff --git a/addons/chemical/CfgCloudlets.hpp b/addons/chemical/CfgCloudlets.hpp index b7ad16364..1fac4e64c 100644 --- a/addons/chemical/CfgCloudlets.hpp +++ b/addons/chemical/CfgCloudlets.hpp @@ -1,16 +1,16 @@ class CfgCloudlets { class Default; - class ACE_GasTrip: Default { + class KAT_TripWireGas: Default { lifeTime = 0; beforeDestroyScript = QPATHTOF(functions\fnc_GasTripEffect.sqf); }; - class CAS_GAS_Explosion_FX_Script: Default { + class KAT_CAS_GAS_Explosion_FX_Script: Default { lifeTime = 0; beforeDestroyScript = QPATHTOF(functions\fnc_CASCreateGas.sqf); }; - class CAS_GAS_Explosion_FX: Default { + class KAT_CAS_GAS_Explosion_FX: Default { interval = 0.03; circleRadius = 0; circleVelocity[] = {0,0,0}; @@ -63,7 +63,7 @@ class CfgCloudlets { position[] = {0,0,0}; }; - class CAS_GAS_FX: Default { + class KAT_CAS_GAS_FX: Default { interval = 0.03; circleRadius = 0; circleVelocity[] = {0,0,0}; @@ -113,10 +113,10 @@ class CfgCloudlets { }; }; -class KAT_GASTripEffect { +class KAT_TripWireGasEffect { class spawnGAS { simulation = "particles"; - type = "ACE_GasTrip"; + type = "KAT_TripWireGas"; position = "explosionPos"; }; }; @@ -124,21 +124,21 @@ class KAT_GASTripEffect { class KAT_GAS_ClusterExplosion { class ExplosionEffect { simulation = "particles"; - type = "CAS_GAS_Explosion_FX"; + type = "KAT_CAS_GAS_Explosion_FX"; position = "explosionPos"; lifeTime = 2; particleFSLoop = 1; }; class CAS_GAS_Effect { simulation = "particles"; - type = "CAS_GAS_FX"; + type = "KAT_CAS_GAS_FX"; position = "explosionPos"; lifeTime = 240; particleFSLoop = 1; }; class GAS_Script { simulation = "particles"; - type = "CAS_GAS_Explosion_FX_Script"; + type = "KAT_CAS_GAS_Explosion_FX_Script"; position = "explosionPos"; }; }; @@ -146,14 +146,14 @@ class KAT_GAS_ClusterExplosion { class KAT_CAS_R_HYDRA_Explosion { class CAS_R_GAS_Effect { simulation = "particles"; - type = "CAS_GAS_FX"; + type = "KAT_CAS_GAS_FX"; position = "explosionPos"; lifeTime = 240; particleFSLoop = 1; }; class R_GAS_Script { simulation = "particles"; - type = "CAS_GAS_Explosion_FX_Script"; + type = "KAT_CAS_GAS_Explosion_FX_Script"; position = "explosionPos"; }; }; diff --git a/addons/chemical/CfgGlasses.hpp b/addons/chemical/CfgGlasses.hpp index 24b7626a2..17e002c4b 100644 --- a/addons/chemical/CfgGlasses.hpp +++ b/addons/chemical/CfgGlasses.hpp @@ -1,4 +1,4 @@ -class cfgGlasses +class CfgGlasses { class G_RegulatorMask_F; class kat_mask_M50: G_RegulatorMask_F @@ -11,7 +11,7 @@ class cfgGlasses mass = 4; }; - + class kat_mask_M04: kat_mask_M50 { author = "Assaultboy"; @@ -19,4 +19,4 @@ class cfgGlasses model = QPATHTOF(models\kat_mask_m04.p3d); picture = QPATHTOF(ui\maskM04.paa); }; -}; \ No newline at end of file +}; diff --git a/addons/chemical/CfgMagazines.hpp b/addons/chemical/CfgMagazines.hpp index 4355d6b66..498ca3691 100644 --- a/addons/chemical/CfgMagazines.hpp +++ b/addons/chemical/CfgMagazines.hpp @@ -1,4 +1,4 @@ -class cfgMagazines +class CfgMagazines { class ACE_1Rnd_82mm_Mo_HE; class KAT_1Rnd_82mm_Mo_Type0: ACE_1Rnd_82mm_Mo_HE @@ -14,7 +14,7 @@ class cfgMagazines scope = 1; count = 5; }; - class KAT_1Rnd_82mm_Mo_TypeCS: ACE_1Rnd_82mm_Mo_HE + class KAT_1Rnd_82mm_Mo_TypeCS: ACE_1Rnd_82mm_Mo_HE { author="DiGii"; ammo="Sh_82mm_AMOS_TypeCS"; @@ -22,7 +22,7 @@ class cfgMagazines displayNameShort= CSTRING(CSGas_MFDNAME); displayName= CSTRING(CSGas_DisplayName); }; - class KAT_3Rnd_82mm_Mo_TypeCS_AI: KAT_1Rnd_82mm_Mo_TypeCS + class KAT_3Rnd_82mm_Mo_TypeCS_AI: KAT_1Rnd_82mm_Mo_TypeCS { scope = 1; count = 3; @@ -36,7 +36,7 @@ class cfgMagazines descriptionShort = CSTRING(M7A3_DcsShort); displayNameShort = CSTRING(M7A3_CSGrenade_ShortName); model = QPATHTOF(ui\m7a3.p3d); - picture = QPATHTOF(ui\KAT_m7a3_ca.paa); + picture = QPATHTOF(ui\KAT_m7a3_ca.paa); ammo = "KAT_G_M7A3"; mass = 4; }; @@ -69,7 +69,7 @@ class cfgMagazines pylonWeapon = "KAT_CAS_M43_Bomb"; }; - class KAT_CAS_M43_Mag_x2 : PylonRack_Bomb_GBU12_x2 + class KAT_CAS_M43_Mag_x2 : PylonRack_Bomb_GBU12_x2 { ammo = "KAT_CAS_M43_Ammo"; author = "DiGii"; @@ -82,7 +82,7 @@ class cfgMagazines mass = 200; pylonWeapon = "KAT_CAS_M43_Bomb"; }; - + class PylonRack_19Rnd_Rocket_Skyfire; class KAT_CAS_R_80mm_GAS_MAG: PylonRack_19Rnd_Rocket_Skyfire { ammo = "KAT_CAS_R_80mm_GAS_AMMO"; @@ -93,4 +93,4 @@ class cfgMagazines pylonWeapon = "KAT_CAS_R_80mm_GAS_POD"; hardpoints[] = {"RHS_HP_UPK23_KA52","RHS_HP_9m120_Mi28","RHS_HP_KH55SM_INT","RHS_HP_TU95MS6_INT","RHS_HP_FFAR_ARMY","RHS_HP_MELB","O_MISSILE_PYLON","O_SKYFIRE","B_MISSILE_PYLON","DAGR","DAR","B_SHIEKER","CUP_PylonPod_19Rnd_Rocket_FFAR_plane_M","CUP_NATO_HELO_ROCKETS","CUP_19Rnd_FFAR","B_AH_99_PYLON","CUP_SUPER_PYLON","CUP_32Rnd_S5","pook_RPOD","RHS_HP_FFAR_USMC", "RHS_HP_INGWE", "RHS_HP_MELB_R", "RHS_HP_MELB","RHS_HP_UB32","pook_HELI_BMB","pook_HELI_MISSILERACK"}; }; -}; \ No newline at end of file +}; diff --git a/addons/chemical/CfgVehicles.hpp b/addons/chemical/CfgVehicles.hpp index 7773ee2f3..f75b2e9cb 100644 --- a/addons/chemical/CfgVehicles.hpp +++ b/addons/chemical/CfgVehicles.hpp @@ -19,19 +19,21 @@ class CfgVehicles { showDisabled = 0; icon = QPATHTOF(ui\gasmaskfilter_ca.paa); }; - class KAT_MuteChemDetector { - displayName = CSTRING(ChemDetector_Mute); - condition = QUOTE([ARR_2(_player,true)] call FUNC(getChemDetectorState)); - statement = QUOTE(_player setVariable [ARR_3(QQGVAR(chemDetectorState),false,true)]); + class KAT_PutOnGasMask { + displayName = CSTRING(PutOnGasMask); + condition = QUOTE([_player] call FUNC(canPutOnGasMask)); + exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; + statement = QUOTE([_player] call FUNC(putOnGasMask)); showDisabled = 0; - icon = QPATHTOF(ui\ChemDetectorIcon.paa); + icon = QPATHTOF(ui\Gasmask_icon.paa); }; - class KAT_UnmuteChemDetector { - displayName = CSTRING(ChemDetector_Unmute); - condition = QUOTE([ARR_2(_player,false)] call FUNC(getChemDetectorState)); - statement = QUOTE(_player setVariable [ARR_3(QQGVAR(chemDetectorState),true,true)]); + class KAT_TakeOffGasMask { + displayName = CSTRING(TakeOffGasMask); + condition = QUOTE([_player] call FUNC(canTakeOffGasMask)); + exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; + statement = QUOTE([_player] call FUNC(takeOffGasMask)); showDisabled = 0; - icon = QPATHTOF(ui\ChemDetectorIcon.paa); + icon = QPATHTOF(ui\Gasmask_icon.paa); }; }; }; @@ -96,32 +98,25 @@ class CfgVehicles { function = QFUNC(gasmodule); isTriggerActivated = 0; functionPriority = 1; - isGlobal = 1; + isGlobal = 0; class Arguments: AttributesBase { - class Radius_Max + class Radius { displayName = CSTRING(UI_max_range); tooltip = CSTRING(GasModule_min_radius_dcs); typeName = "NUMBER"; defaultValue = 20; }; - class Radius_Min - { - displayName = CSTRING(UI_min_range); - tooltip = CSTRING(GasModule_max_radius_dcs); - typeName = "NUMBER"; - defaultValue = 10; - }; class GAS_Type { displayName = CSTRING(UI_gasType); typeName = "NUMBER"; class values { - class toxicgas { + class ToxicGas { name = CSTRING(LvL1_Gas); - value = 0; + value = 1; default = 1; }; /* class csgas { @@ -160,10 +155,11 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(GasModule_Displayname); category = QEGVAR(zeus,KAM); + function = QACEFUNC(common,dummy); curatorInfoType = QGVAR(kat_RscGasModul); isTriggerActivated = 0; functionPriority = 1; - isGlobal = 1; + isGlobal = 0; }; @@ -190,7 +186,6 @@ class CfgVehicles { }; }; - class Box_NATO_AmmoOrd_F; class ACE_Box_82mm_Mo_HE: Box_NATO_AmmoOrd_F { class TransportMagazines; @@ -215,4 +210,11 @@ class CfgVehicles { ammo = "KAT_Gas_TripWireMine_Ammo"; displayName = CSTRING(TriWire_Gas_Name); }; + + + class Static; + class GVAR(logic): Static { + scope = 1; + displayName = ""; + }; }; diff --git a/addons/chemical/CfgWeapons.hpp b/addons/chemical/CfgWeapons.hpp index 81fc65409..f018c9070 100644 --- a/addons/chemical/CfgWeapons.hpp +++ b/addons/chemical/CfgWeapons.hpp @@ -28,6 +28,15 @@ class CfgWeapons { }; }; + class ItemWatch; + class KAT_ChemicalDetector: ItemWatch { + ACE_hideItemType = "Watch"; + author = "Mazinski"; + descriptionShort = CSTRING(ChemicalDetectorDescription); + displayName = CSTRING(ChemicalDetectorDisplayName); + picture = QPATHTOF(UI\kat_chemicalDet_icon.paa); + }; + class CannonCore; class mortar_82mm: CannonCore { magazines[] += { diff --git a/addons/chemical/RscTitles.hpp b/addons/chemical/RscTitles.hpp new file mode 100644 index 000000000..0415928cf --- /dev/null +++ b/addons/chemical/RscTitles.hpp @@ -0,0 +1,83 @@ +#define KAT_CHEM_GRID_WAbs (((safezoneW / safezoneH) min 0.7)) +#define KAT_CHEM_GRID_HAbs ((((safezoneW / safezoneH) min 1.2) / 1.6)) +#define KAT_CHEM_GRID_W ((((safeZoneW / safeZoneH) min 0.7) / 40)) +#define KAT_CHEM_GRID_H (((((safeZoneW / safeZoneH) min 1.2) / 1.2) / 25)) +#define KAT_CHEM_GRID_X ((safeZoneX + (safeZoneW - ((safeZoneW / safeZoneH) min 1.2)) / 11)) +#define KAT_CHEM_GRID_Y ((safeZoneY + (safeZoneH - (((safeZoneW / safeZoneH) min 1.2) / 1.2)) / 0.8)) + +#define KAT_CHEM_POS_H(N) ((N) * KAT_CHEM_GRID_H) + +#define ST_LEFT 0 +#define ST_CENTER 2 +#define ST_RIGHT 1 + +#define pixelW (1 / (getResolution select 2)) +#define pixelH (1 / (getResolution select 3)) +#define pixelScale 0.50 + +// pixel grids macros +#define UI_GRID_W (pixelW * pixelGridBase) +#define UI_GRID_H (pixelH * pixelGridBase) + +#define SAFEZONE_X_RIGHTEDGE ((safeZoneX - 1) * -1) +#define SAFEZONE_Y_LOWEDGE ((safeZoneY - 1) * -1) + +#define FRAME_W(N) ((UI_GRID_W * (N)) * (1.7777 / (getResolution select 4))) +#define FRAME_H(N) ((UI_GRID_H * (N))) + +class RscTitles +{ + class KAT_ChemicalDetector + { + idd = 18835; + enableSimulation = 1; + movingEnable = 0; + fadeIn=0; + fadeOut=1; + duration = 10e10; + onLoad = "uiNamespace setVariable ['KAT_ChemicalDetector', _this select 0];"; + class controls + { + class KatChemIcon: RscPicture + { + idc = 18801; + text = "\x\kat\addons\chemical\UI\kat_chemicalDet.paa"; + x = QUOTE(SAFEZONE_X_RIGHTEDGE - FRAME_W(25) - FRAME_W(15)); + y = QUOTE(SAFEZONE_Y_LOWEDGE - FRAME_H(25)); + w = QUOTE(FRAME_W(25)); + h = QUOTE(FRAME_H(25)); + }; + class KatChemTime: RscText + { + idc = 18804; + style = ST_CENTER; + shadow = 0; + font = "PuristaBold"; + text = "12:00"; //--- ToDo: Localize; + x = QUOTE(SAFEZONE_X_RIGHTEDGE - FRAME_W(25) - FRAME_W(7.2)); + y = QUOTE(SAFEZONE_Y_LOWEDGE - FRAME_H(6)); + w = QUOTE(FRAME_W(7.5)); + h = QUOTE(FRAME_H(4)); + colorBackground[] = {0,0,0,0}; + colorText[] = {0.3,0.3,0.3,0.8}; + sizeEx = QUOTE(FRAME_H(2)); + }; + class KatChemStrength: RscText + { + idc = 18805; + style = ST_RIGHT; + valign = "middle"; + shadow = 0; + font = "PuristaBold"; + text = "0"; //--- ToDo: Localize; + x = QUOTE(SAFEZONE_X_RIGHTEDGE - FRAME_W(25) - FRAME_W(2.1)); + y = QUOTE(SAFEZONE_Y_LOWEDGE - FRAME_H(7.5)); + w = QUOTE(FRAME_W(5)); + h = QUOTE(FRAME_H(3)); + colorBackground[] = {0,0,0,0}; + colorText[] = {0.3,0.3,0.3,0.8}; + sizeEx = QUOTE(FRAME_H(2.2)); + }; + }; + }; +}; diff --git a/addons/chemical/XEH_PREP.hpp b/addons/chemical/XEH_PREP.hpp index 7052ebf94..0decbf75b 100644 --- a/addons/chemical/XEH_PREP.hpp +++ b/addons/chemical/XEH_PREP.hpp @@ -1,37 +1,36 @@ -PREP(afterWait); PREP(AttributeRadius); PREP(breathing); PREP(canPutGasMask); +PREP(canPutOnGasMask); PREP(canReplaceFilter); +PREP(canTakeOffGasMask); PREP(CASCreateGas); PREP(changeGasMaskFilter); PREP(checkGasMaskDur); -PREP(chemDetector); -PREP(coughing); PREP(createSealAction); -PREP(createZone); PREP(csGrenade); PREP(displayGasMaskDur); PREP(fullHealLocal); -PREP(gasAI); -PREP(gasCheck); -PREP(gasCheckLocal); +PREP(gasManagerPFH); PREP(gasmodule); PREP(GasTripEffect); -PREP(getChemDetectorState); PREP(getList); PREP(giveUnitGasMask); PREP(gui_updateBodyImage); PREP(gui_updateInjuryListGeneral); -PREP(handleCSGas); PREP(handleFired); PREP(handleGasMaskDur); PREP(handleRespawn); PREP(hasGasmask); PREP(hasGasMaskON); +PREP(hideChemDetector); PREP(init); PREP(initModule); +PREP(poison); +PREP(putOnGasMask); +PREP(showChemDetector); PREP(spawnSmoke); +PREP(takeOffGasMask); PREP(throwGrenade); PREP(treatmentAdvanced_AtropineLocal); PREP(ui_gasModule); diff --git a/addons/chemical/XEH_postInit.sqf b/addons/chemical/XEH_postInit.sqf index 4d65f1f2c..fe535ba4e 100644 --- a/addons/chemical/XEH_postInit.sqf +++ b/addons/chemical/XEH_postInit.sqf @@ -1,13 +1,10 @@ #include "script_component.hpp" //Events -[QGVAR(gasCheck), LINKFUNC(gasCheck)] call CBA_fnc_addEventHandler; -[QGVAR(gasPlayer), LINKFUNC(gasCheckLocal)] call CBA_fnc_addEventHandler; -[QGVAR(gasAI), LINKFUNC(gasAI)] call CBA_fnc_addEventHandler; -[QGVAR(afterWait), LINKFUNC(afterWait)] call CBA_fnc_addEventHandler; -[QGVAR(enteredZone), LINKFUNC(chemDetector)] call CBA_fnc_addEventHandler; -[QGVAR(createZoneGlobal), LINKFUNC(createZone)] call CBA_fnc_addEventHandler; -[QGVAR(createSealActionGlobal), LINKFUNC(createSealAction)] call CBA_fnc_addEventHandler; +["ace_glassesChanged", LINKFUNC(breathing)] call CBA_fnc_addEventHandler; +[QGVAR(poison), LINKFUNC(poison)] call CBA_fnc_addEventHandler; +[QGVAR(handleGasMaskDur), LINKFUNC(handleGasMaskDur)] call CBA_fnc_addEventHandler; +[QGVAR(addSealAction), LINKFUNC(createSealAction)] call CBA_fnc_addEventHandler; // ACE Events [QACEGVAR(medical_gui,updateInjuryListGeneral), LINKFUNC(gui_updateInjuryListGeneral)] call CBA_fnc_addEventHandler; @@ -27,19 +24,95 @@ KAT_ProjectileCache = ("([_x, 'KAT_projectile', 0] call BIS_fnc_returnConfigEntr ["ace_firedPlayerNonLocal", LINKFUNC(throwGrenade)] call CBA_fnc_addEventHandler; ["ace_firedNonPlayer", LINKFUNC(throwGrenade)] call CBA_fnc_addEventHandler; -if (hasInterface) then { - ppBlur_priority = 399; - [{ - ppBlur_priority = ppBlur_priority + 1; - ppBlur = ppEffectCreate ["DynamicBlur", ppBlur_priority]; - ppBlur != -1 - }, { - ppBlur ppEffectEnable false; - ppBlurAmount = 0; - ppBluring = false; - }] call CBA_fnc_waitUntilAndExecute; -}; - private _items = missionNamespace getVariable [QGVAR(availGasmask), "'G_AirPurifyingRespirator_01_F'"]; private _array = [_items, "CfgGlasses"] call FUNC(getList); missionNamespace setVariable [QGVAR(availGasmaskList), _array, true]; + +["KAT_ChemicalDetector", QGVAR(showChemDetector), "Show Chemical Detector", { + // Conditions: canInteract + if (!([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call ACEFUNC(common,canInteractWith)) || {!('KAT_ChemicalDetector' in assignedItems ACE_player)}) exitWith { false }; + + if !(GETMVAR(GVAR(ChemDetectorActive),false)) then { + [ACE_player] call FUNC(showChemDetector); + } else { + call FUNC(hideChemDetector); + }; + + true +}, { false }, [24, [false, false, false]], false] call CBA_fnc_addKeybind; + +if (!isServer) exitWith {}; + +GVAR(gasSources) = createHashMap; + +[QGVAR(addGasSource), { + params [ + ["_source", objNull, [objNull, []]], + ["_radius", 0, [0]], + ["_gasLevel", 0, [0]], + ["_key", ""], + ["_condition", {true}, [{}]], + ["_conditionArgs", []], + ["_isSealable", false] + ]; + + private _isObject = _source isEqualType objNull; + + // Check if the source is valid + if !(_isObject || {_source isEqualTypeParams [0, 0, 0]}) exitWith {}; + + if (_isObject && {isNull _source}) exitWith {}; + if (_radius == 0) exitWith {}; + if (_key isEqualTo "") exitWith {}; // key can be many types + + // hashValue supports more types than hashmaps do by default, but not all (e.g. locations) + private _hashedKey = hashValue _key; + + if (isNil "_hashedKey") exitWith { + ERROR_2("Unsupported key type used: %1 - %2",_key,typeName _key); + }; + + // If a position is passed, create a static object at said position + private _sourcePos = if (_isObject) then { + getPosATL _source + } else { + ASLToATL _source + }; + + private _gasLogic = createVehicle [QGVAR(logic), _sourcePos, [], 0, "CAN_COLLIDE"]; + + // If an object was passed, attach logic to the object + if (_isObject) then { + _gasLogic attachTo [_source]; + }; + + // To avoid issues, remove existing entries first before overwriting + if (_hashedKey in GVAR(gasSources)) then { + [QGVAR(removeGasSource), _key] call CBA_fnc_localEvent; + }; + + if (_isSealable) then { + private _jipID = [QGVAR(addSealAction), [_source, _gasLogic, _key]] call CBA_fnc_globalEventJIP; + [_jipID, _source] call CBA_fnc_removeGlobalEventJIP; + _source setVariable [QGVAR(sealable), true, true]; + }; + + GVAR(gasSources) set [_hashedKey, [_gasLogic, _radius, _gasLevel, _condition, _conditionArgs]]; +}] call CBA_fnc_addEventHandler; + +[QGVAR(removeGasSource), { + params ["_key"]; + private _hashedKey = hashValue _key; + + if (isNil "_hashedKey") exitWith { + ERROR_2("Unsupported key type used: %1 - %2",_key,typeName _key); + }; + + (GVAR(gasSources) deleteAt _hashedKey) params [["_gasLogic", objNull]]; + + detach _gasLogic; + deleteVehicle _gasLogic; +}] call CBA_fnc_addEventHandler; + +[LINKFUNC(gasManagerPFH), GAS_MANAGER_PFH_DELAY, []] call CBA_fnc_addPerFrameHandler; + diff --git a/addons/chemical/XEH_preInit.sqf b/addons/chemical/XEH_preInit.sqf index 065630bd0..c786cc786 100644 --- a/addons/chemical/XEH_preInit.sqf +++ b/addons/chemical/XEH_preInit.sqf @@ -22,7 +22,6 @@ PREP_RECOMPILE_END; true ] call CBA_Settings_fnc_init; - [ QGVAR(gasmask_durability), "TIME", @@ -32,24 +31,27 @@ PREP_RECOMPILE_END; true ] call CBA_Settings_fnc_init; +// Sets sound volume of gas mask breathing [ - QGVAR(infectionTime), - "TIME", - [LLSTRING(SETTING_infection_time),LLSTRING(SETTING_infection_time_disc)], + QGVAR(gasMaskSoundVolume), + "SLIDER", + [LLSTRING(SETTING_stethoscopeSoundVolume), LLSTRING(SETTING_stethoscopeSoundVolume_DESC)], CBA_SETTINGS_CHEM, - [1, 600, 60], - true + [0, 2, 1, 1], + 2, + { + player setVariable [QGVAR(gasMaskSoundVolume), _this, true]; + }, + false ] call CBA_Settings_fnc_init; +// Chance of weapon drop by tear gas [ - QGVAR(affectAI), - "CHECKBOX", - [LLSTRING(SETTING_affectAI),LLSTRING(SETTING_affectAI_disc)], + QGVAR(tearGasDropChance), + "SLIDER", + [LLSTRING(SETTING_dropWeaponChance), LLSTRING(SETTING_dropWeaponChance_DESC)], CBA_SETTINGS_CHEM, - false, - true, - {}, + [0, 1, 0, 2, true], true ] call CBA_Settings_fnc_init; - ADDON = true; diff --git a/addons/chemical/config.cpp b/addons/chemical/config.cpp index 24987709c..aac13d177 100644 --- a/addons/chemical/config.cpp +++ b/addons/chemical/config.cpp @@ -15,11 +15,12 @@ class CfgPatches { "kat_gasmaskFilter", "KAT_M7A3", "KAT_CAS_M43_Bomb", - "KAT_CAS_R_80mm_GAS_POD" + "KAT_CAS_R_80mm_GAS_POD", + "KAT_ChemicalDetector" }; ammo[] = { "KAT_Gas_TripWireMine_Ammo", - "KAT_GASTripEffect", + "KAT_TripWireGasEffect", "KAT_GASTrip_SmokeEffect", "KAT_CAS_M43_Ammo", "KAT_CAS_M43_Ammo_sub", @@ -60,5 +61,6 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgSounds.hpp" #include "ui\RscAttributes.hpp" +#include "RscTitles.hpp" #include "ACE_Medical_Treatment_Actions.hpp" #include "CfgGlasses.hpp" diff --git a/addons/chemical/functions/fnc_AttributeRadius.sqf b/addons/chemical/functions/fnc_AttributeRadius.sqf index b7d2f8f3e..9accdfccc 100644 --- a/addons/chemical/functions/fnc_AttributeRadius.sqf +++ b/addons/chemical/functions/fnc_AttributeRadius.sqf @@ -27,7 +27,6 @@ private _placeText = _display displayCtrl 1616; if !(isNull attachedTo _logic) then { _sealCheckBox ctrlShow true; _sealText ctrlShow true; - _placeText ctrlSetText LLSTRING(GasModule_createContaminatedObject); } else { _sealCheckBox ctrlShow false; @@ -37,18 +36,14 @@ if !(isNull attachedTo _logic) then { private _gasTypeCombo = _display displayCtrl 1615; private _maxEdit = _control controlsGroupCtrl 1611; -private _minEdit = _control controlsGroupCtrl 1612; _maxEdit ctrlSetText "100"; -_minEdit ctrlSetText "50"; private _fnc_onKeyUp = { params ["_display"]; private _maxEdit = _display displayCtrl 1611; - private _minEdit = _display displayCtrl 1612; private _maxradius = parseNumber (ctrlText _maxEdit); - private _minradius = parseNumber (ctrlText _minEdit); // Handle invalid radius (non-numerical input) if (_maxradius == 0) then { @@ -57,21 +52,7 @@ private _fnc_onKeyUp = { } else { _maxEdit ctrlSetTooltip ""; _maxEdit ctrlSetTextColor [1,1,1,1]; - _display setVariable [QGVAR(ui_radiusMax),_maxradius]; - }; - - if (_minradius == 0) then { - _minEdit ctrlSetTooltip (ACELSTRING(Zeus,AttributeRadiusInvalid)); - _minEdit ctrlSetTextColor [1,0,0,1]; - } else { - if(_minradius > _maxradius) then { - _minEdit ctrlSetTooltip (ACELSTRING(Zeus,AttributeRadiusInvalid)); - _minEdit ctrlSetTextColor [1,0,0,1]; - } else { - _minEdit ctrlSetTooltip ""; - _minEdit ctrlSetTextColor [1,1,1,1]; - _display setVariable [QGVAR(ui_radiusMin),_minradius]; - }; + _display setVariable [QGVAR(ui_radius),_maxradius]; }; }; @@ -86,7 +67,7 @@ private _fnc_onLBSelChange = { params ["_gasTypeCombo"]; _display = ctrlParent _gasTypeCombo; private _gastype = lbCurSel _gasTypeCombo; - _display setVariable [QGVAR(ui_gastype),_gastype]; + _display setVariable [QGVAR(ui_gastype), _gastype]; }; [_display] call _fnc_onKeyUp; diff --git a/addons/chemical/functions/fnc_CASCreateGas.sqf b/addons/chemical/functions/fnc_CASCreateGas.sqf index e9ac1fca8..903c5845b 100644 --- a/addons/chemical/functions/fnc_CASCreateGas.sqf +++ b/addons/chemical/functions/fnc_CASCreateGas.sqf @@ -18,4 +18,21 @@ params ["_posX", "_posY", "_posZ"]; -[QGVAR(createZoneGlobal), [[_posX, _posY, _posZ], 240, 15, 0]] call CBA_fnc_globalEventJIP; +private _projectile = QGVAR(logic) createVehicle [_posX,_posY,_posZ]; + +if (isServer) then { + private _radius = 15; + private _timeToLive = 240; + private _gasLevel = 1; + + [QGVAR(addGasSource), [_projectile, _radius, _gasLevel, _projectile, { + params ["_endTime", "_projectile"]; + + // If projectile no longer exists, exit + if (isNull _projectile) exitWith { + false // return + }; + + CBA_missionTime < _endTime // return + }, [CBA_missionTime + _timeToLive, _projectile]]] call CBA_fnc_serverEvent; +}; diff --git a/addons/chemical/functions/fnc_GasTripEffect.sqf b/addons/chemical/functions/fnc_GasTripEffect.sqf index 0a3a4ea80..0afe374f9 100644 --- a/addons/chemical/functions/fnc_GasTripEffect.sqf +++ b/addons/chemical/functions/fnc_GasTripEffect.sqf @@ -17,4 +17,4 @@ * Cant be called manualy! */ -[FUNC(spawnSmoke), _this] call CBA_fnc_directcall; +[FUNC(spawnSmoke), _this] call CBA_fnc_directCall; diff --git a/addons/chemical/functions/fnc_afterWait.sqf b/addons/chemical/functions/fnc_afterWait.sqf deleted file mode 100644 index a3fe41732..000000000 --- a/addons/chemical/functions/fnc_afterWait.sqf +++ /dev/null @@ -1,95 +0,0 @@ -#include "..\script_component.hpp" -/* -* Author: DiGii -* This cant be called manualy! -* Handles the Gas effect for the player -* -* Arguments: -* 0: Unit -* 1: Module -* 2: Gastype -* 3: Max_radius -* -* Return Value: -* NONE -* -* Example: -* [player, logic, 0, 50] call kat_chemical_fnc_afterWait; -* -* Public: No -*/ - -params ["_unit", "_logic", "_gastype", "_radius_max"]; - -if (!isDamageAllowed _unit) exitWith { - [_unit] call FUNC(fullHealLocal); -}; - -if ((goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) then { - private _isinGas = true; - [ - { - params ["_args", "_pfhHandler"]; - _args params["_unit", "_logic", "_gastype", "_radius_max", "_isinGas"]; - - if !(_isinGas) exitWith { - [_pfhHandler] call CBA_fnc_removePerFrameHandler; - }; - - private _timeleft = _unit getVariable [QGVAR(gasmask_durability), 10]; - _pos = _logic getVariable [QGVAR(gas_position), [0, 0, 0]]; - if (_unit distance _pos > _radius_max || !(_logic getVariable[QGVAR(gas_active), false]) || isNull _logic) exitWith { - _unit setVariable [QGVAR(enteredPoison), false, true]; - _isinGas = false; - }; - - if !((goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []]) && _timeleft > 0) then { - _unit setVariable [QGVAR(poisonType), _gastype, true]; - switch (_gastype) do { - case 1: { - _unit setVariable [QGVAR(CS), true, true]; - [_unit, _logic, _radius_max] call FUNC(handleCSGas); - }; - case 0: { - _unit setVariable [QGVAR(airPoisoning), true, true]; - }; - }; - _isinGas = false; - }; - - if (_timeleft <= 0 && _unit getVariable [QGVAR(enteredPoison), false]) then { - _unit setVariable [QGVAR(poisonType), _gastype, true]; - switch (_gastype) do { - case 1: { - _unit setVariable [QGVAR(CS), true, true]; - [_unit, _logic, _radius_max] call FUNC(handleCSGas); - }; - case 0: { - _unit setVariable [QGVAR(airPoisoning), true, true]; - }; - }; - _isinGas = false; - }; - - if (!(_unit getVariable [QGVAR(enteredPoison), false]) || !(_logic getVariable [QGVAR(gas_active), false])) then { - _isinGas = false; - _unit setVariable [QGVAR(enteredPoison), false]; - }; - }, - 1, - [_unit, _logic, _gastype, _radius_max, _isinGas] - ] call CBA_fnc_addPerFrameHandler; -} else { - if (_unit getVariable [QGVAR(enteredPoison), false]) then { - _unit setVariable [QGVAR(poisonType), _gastype, true]; - switch (_gastype) do { - case 1: { - _unit setVariable [QGVAR(CS), true, true]; - [_unit, _logic, _radius_max] call FUNC(handleCSGas); - }; - case 0: { - _unit setVariable [QGVAR(airPoisoning), true, true]; - }; - }; - }; -}; diff --git a/addons/chemical/functions/fnc_breathing.sqf b/addons/chemical/functions/fnc_breathing.sqf index f4ab4b46d..60c7150c8 100644 --- a/addons/chemical/functions/fnc_breathing.sqf +++ b/addons/chemical/functions/fnc_breathing.sqf @@ -2,47 +2,53 @@ /* * Author: DiGii * +* Handles the breathing sound for gasMasks +* * Arguments: * 0: Unit +* 1: Glasses Class * * Return Value: * NONE * * Example: -* [player] call kat_chemical_fnc_breathing; +* [player, "kat_mask_M50"] call kat_chemical_fnc_breathing; * * Public: No * -* Handles the breathing sound for gasMasks */ -params ["_unit"]; +params ["_unit", "_glassesClass"]; + +if !(_glassesClass in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) exitWith {}; +GVAR(soundPlaying) = false; [ { - params ["_unit"]; - (goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []]) - }, - { - params ["_unit"]; - [ - { - params["_args", "_handler"]; - _args params ["_unit"]; - if (!(goggles _unit in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) || !(alive _unit) || _unit getVariable [QACEGVAR(medical,heartrate), 80] <= 0) then { - [_handler] call CBA_fnc_removePerFrameHandler; - [_unit] call FUNC(breathing); + params["_args", "_handler"]; + _args params ["_unit", "_volume"]; + if (!(goggles _unit in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) || !(alive _unit) || (_unit getVariable [QACEGVAR(medical,inCardiacArrest), false])) then { + [_handler] call CBA_fnc_removePerFrameHandler; + } else { + if (!GVAR(soundPlaying)) then { + if ((GET_PAIN_PERCEIVED(_unit) >= 0.4) || (_unit getVariable [QACEGVAR(medical,heartrate), 80] >= 105)) then { + playSoundUI [QPATHTOF(audio\heavyBreath.ogg), GVAR(gasMaskSoundVolume), 1]; + GVAR(soundPlaying) = true; } else { - if (GET_PAIN_PERCEIVED(_unit) >= 0.4) || (_unit getVariable[QACEGVAR(medical,heartrate), 80] >= 105) then { - _unit say3D QGVAR(mask_breath_heavy); + if (round random 1 >= 0.5) then { + playSoundUI [QPATHTOF(audio\breath1.ogg), GVAR(gasMaskSoundVolume), 1]; + GVAR(soundPlaying) = true; } else { - private _random = selectRandom[QGVAR(mask_breath_1), QGVAR(mask_breath_2)]; - _unit say3D _random; + playSoundUI [QPATHTOF(audio\breath2.ogg), GVAR(gasMaskSoundVolume), 1]; + GVAR(soundPlaying) = true; }; }; - }, - 5, - [_unit] - ] call CBA_fnc_addPerFrameHandler; + [{ + GVAR(soundPlaying) = false; + }, [], 4] call CBA_fnc_waitAndExecute; + }; + }; }, + 0, [_unit] -] call CBA_fnc_waitUntilAndExecute; +] call CBA_fnc_addPerFrameHandler; + diff --git a/addons/chemical/functions/fnc_canPutOnGasMask.sqf b/addons/chemical/functions/fnc_canPutOnGasMask.sqf new file mode 100644 index 000000000..5688a31de --- /dev/null +++ b/addons/chemical/functions/fnc_canPutOnGasMask.sqf @@ -0,0 +1,6 @@ +#include "..\script_component.hpp" + +params ["_player"]; + +(((_player call ACEFUNC(common,uniqueItems)) findAny GVAR(availGasmaskList)) != -1) && +(!((goggles _player) in GVAR(availGasmaskList))) diff --git a/addons/chemical/functions/fnc_canTakeOffGasMask.sqf b/addons/chemical/functions/fnc_canTakeOffGasMask.sqf new file mode 100644 index 000000000..67e9e48b4 --- /dev/null +++ b/addons/chemical/functions/fnc_canTakeOffGasMask.sqf @@ -0,0 +1,5 @@ +#include "..\script_component.hpp" + +params ["_player"]; + +((goggles _player) in GVAR(availGasmaskList)) diff --git a/addons/chemical/functions/fnc_changeGasMaskFilter.sqf b/addons/chemical/functions/fnc_changeGasMaskFilter.sqf index 40e73a42c..7ea103422 100644 --- a/addons/chemical/functions/fnc_changeGasMaskFilter.sqf +++ b/addons/chemical/functions/fnc_changeGasMaskFilter.sqf @@ -19,6 +19,4 @@ params ["_target"]; [_target, "AinvPknlMstpSlayWlnrDnon_medicOther"] call ACEFUNC(common,doAnimation); _target removeItem "kat_gasmaskFilter"; -_target setVariable [QGVAR(gasmask_durability),10,true]; - -_target setVariable [QGVAR(gasmask_durability_reset), true, true]; +_target setVariable [QGVAR(gasmask_durability), 10, true]; diff --git a/addons/chemical/functions/fnc_chemDetector.sqf b/addons/chemical/functions/fnc_chemDetector.sqf deleted file mode 100644 index 64d37996d..000000000 --- a/addons/chemical/functions/fnc_chemDetector.sqf +++ /dev/null @@ -1,60 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * - * Arguments: - * 0: Unit - * - * Return Value: - * NONE - * - * Example: - * [player] call kat_chemical_fnc_chemDetector; - * - * Public: No -*/ -params ["_unit"]; - - -[ -{ - params["_args", "_pfhHandler"]; - _args params ["_unit"]; - - "KAT_CHEM_DETECTOR" cutRsc ["RscWeaponChemicalDetector", "PLAIN", 1, false]; - private _ui = GETUVAR(RscWeaponChemicalDetector,displayNull); - private _obj = _ui displayCtrl 101; - - if ("ChemicalDetector_01_watch_F" in (assignedItems _unit)) then - { - private _percent = _unit getVariable [QGVAR(gasPercentage),0]; - private _thread = parseNumber (_percent toFixed 1); - if (_thread < 0) then { _thread = 0}; - if (_thread > 1) then { _thread = 1}; - _obj ctrlAnimateModel ["Threat_Level_Source", _thread, true]; - }; - - if (!(_unit getVariable[QGVAR(enteredPoison),false])) exitWith { - - _obj ctrlAnimateModel ["Threat_Level_Source", 0, true]; - - [_pfhHandler] call CBA_fnc_removePerFrameHandler; - }; -}, -1, [_unit]] call CBA_fnc_addPerFramehandler; - -[ -{ - params["_args", "_pfhHandler"]; - _args params ["_unit"]; - - if (_unit getVariable [QGVAR(chemDetectorState), false] && _unit getVariable [QGVAR(gasPercentage), 0] >= 0.1 && "ChemicalDetector_01_watch_F" in (assignedItems _unit)) then { - playSound3D [QPATHTOF(audio\chemDetector.ogg), _unit, false, getPosASL _unit, 4, 1, 10]; - }; - - if (!(_unit getVariable[QGVAR(enteredPoison),false])) exitWith { - [_pfhHandler] call CBA_fnc_removePerFrameHandler; - }; - -}, -6, [_unit]] call CBA_fnc_addPerFramehandler; diff --git a/addons/chemical/functions/fnc_coughing.sqf b/addons/chemical/functions/fnc_coughing.sqf deleted file mode 100644 index a841b8a36..000000000 --- a/addons/chemical/functions/fnc_coughing.sqf +++ /dev/null @@ -1,69 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * - * Arguments: - * 0: Unit - * - * Return Value: - * NONE - * - * Example: - * [player] call kat_chemical_fnc_coughing; - * - * Public: No -*/ -params ["_unit"]; - -[ - { - params["_unit"]; - _unit getVariable [QGVAR(airPoisoning), false] - }, - { - params["_unit"]; - private _lastcought = CBA_missionTime; - [ - { - params ["_args", "_pfhID"]; - _args params ["_unit", "_lastcought"]; - if (_unit getVariable ["ACE_isUnconscious", false] || !(alive _unit) || !(_unit getVariable [QGVAR(airPoisoning), false])) exitWith { - [_pfhID] call CBA_fnc_removePerFrameHandler; - [_unit] call FUNC(coughing); - }; - private _nextcought = random [20,50,80]; - [ - { - params["_unit","_lastcought","_nextcought"]; - (CBA_missionTime - (_unit getVariable [QGVAR(lastCought), 0])) > _nextcought - }, - { - params["_unit"]; - if (_unit getVariable [QGVAR(airPoisoning),false]) then { - _unit say3D QGVAR(cough_1); - addCamShake [3, 4, 0]; - - _unit setVariable [QGVAR(lastCought), CBA_missionTime, true]; - - private _effect = ppEffectCreate ["ChromAberration",2005]; - KAT_PAIN_EFFECT = _effect; - _unit setVariable [QGVAR(painEffect), KAT_PAIN_EFFECT, true]; - KAT_PAIN_EFFECT ppEffectAdjust [0, 0, false]; - KAT_PAIN_EFFECT ppEffectCommit 0; - KAT_PAIN_EFFECT ppEffectEnable true; - private _intensity = linearConversion [0, 1, 0.5, 0, 0.06, true]; - private _initialAdjust = [_intensity, _intensity, true]; - private _delayedAdjust = [_intensity * 0.15, _intensity * 0.15, true]; - KAT_PAIN_EFFECT ppEffectAdjust _initialAdjust; - KAT_PAIN_EFFECT ppEffectCommit 0.3; - - [{ - params ["_adjust"]; - KAT_PAIN_EFFECT ppEffectAdjust _adjust; - KAT_PAIN_EFFECT ppEffectCommit 0.7; - }, [_delayedAdjust], 3] call CBA_fnc_waitAndExecute; - }; - }, - [_unit,_lastcought,_nextcought]] call CBA_fnc_waitUntilAndExecute; - }, 1, [_unit, _lastcought]] call CBA_fnc_addPerFrameHandler; - }, [_unit]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/chemical/functions/fnc_createSealAction.sqf b/addons/chemical/functions/fnc_createSealAction.sqf index f7df5adb5..a7451dfed 100644 --- a/addons/chemical/functions/fnc_createSealAction.sqf +++ b/addons/chemical/functions/fnc_createSealAction.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: DiGii + * Author: DiGii, MiszczuZPolski * * Arguments: * 0: Target @@ -13,7 +13,9 @@ * * Public: No */ -params ["_target", "_logic"]; +params ["_target", "_logic", "_key"]; + +[_target, 0, ["ACE_MainActions", QGVAR(sealLeak)]] call ACEFUNC(interact_menu,removeActionFromObject); private _action = [ QGVAR(sealLeak), @@ -21,20 +23,21 @@ private _action = [ "", { params ["_target", "_player", "_params"]; - _params params ["_logic"]; + _params params ["_key"]; [_player, "Acts_carFixingWheel"] call ACEFUNC(common,doAnimation); //add time to addon options [ - 20, - [_target,_player, _logic], + 5, + [_target, _player, _key], { - params["_args"]; - _args params ["_target","_player", "_logic"]; - _logic setVariable [QGVAR(gas_active), false, true]; - [_target, 0, ["ACE_MainActions", QGVAR(sealLeak)]] call ACEFUNC(interact_menu,removeActionFromObject); + params ["_args"]; + _args params ["_target","_player", "_key"]; [_player, "kat_sealant"] call ACEFUNC(common,useItem); + [QGVAR(removeGasSource), _key] call CBA_fnc_serverEvent; + _target setVariable [QGVAR(sealable), false, true]; + [_target, 0, ["ACE_MainActions", QGVAR(sealLeak)]] call ACEFUNC(interact_menu,removeActionFromObject); }, { params["_args"]; @@ -47,13 +50,18 @@ private _action = [ ] call ace_common_fnc_progressBar; }, { - params["_target","_player"]; + params ["_target","_player"]; - [_player, _target] call ACEFUNC(common,canInteractWith); - [_player, _player, ["kat_sealant"]] call ACEFUNC(medical_treatment,hasItem); + ([_player, _target] call ACEFUNC(common,canInteractWith)) && + ([_player, _player, ["kat_sealant"]] call ACEFUNC(medical_treatment,hasItem)) && + (_target getVariable [QGVAR(sealable), false]) }, {}, - [_logic] + [_key] ] call ACEFUNC(interact_menu,createAction); + [_target, 0, ["ACE_MainActions"], _action] call ACEFUNC(interact_menu,addActionToObject); + + + diff --git a/addons/chemical/functions/fnc_createZone.sqf b/addons/chemical/functions/fnc_createZone.sqf deleted file mode 100644 index bb62c4bbd..000000000 --- a/addons/chemical/functions/fnc_createZone.sqf +++ /dev/null @@ -1,36 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * - * Arguments: - * 0: Position (position) - * 1: Lifetime (number) - * 2: Radius (number) - * 3: GasLevel (int of gas) - * - * Return Value: - * NONE - * - * Example: - * [pos player, 60, 100, 0] call kat_chemical_fnc_createZone; - * - * Public: No - * -*/ -params ["_position", "_lifetime", "_radius", "_gasType"]; - -private _logic = "ACE_LogicDummy" createVehicle _position; - -[_logic, _position, _radius, 0, _gasType] call FUNC(gasCheck); -private _currentTime = CBA_missionTime; - -[{ - params ["_logic","_lifetime","_currentTime"]; - - (CBA_missionTime - (_currentTime)) > _lifetime -}, -{ - params ["_logic"]; - _logic setVariable [QGVAR(gas_active), false, true]; - deleteVehicle _logic; -}, [_logic, _lifetime, _currentTime]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/chemical/functions/fnc_csGrenade.sqf b/addons/chemical/functions/fnc_csGrenade.sqf index 88478a636..55657d0cb 100644 --- a/addons/chemical/functions/fnc_csGrenade.sqf +++ b/addons/chemical/functions/fnc_csGrenade.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: DiGii + * Author: DiGii, MiszczuPolski * Spawns Patricles for the Gas zone * * Arguments: @@ -39,25 +39,12 @@ params ["_projectile", "_timeToLive", "_center"]; private _position = position _projectile; -[QGVAR(createZoneGlobal), [_position, _timeToLive, 6, 1]] call CBA_fnc_globalEventJIP; - -// --- AI -private _nearLocalEnemies = []; - -{ - { - if (local _x && {[_center, side _x] call BIS_fnc_sideIsEnemy}) then { // WE WANT THE OBJECTS SIDE HERE! - _nearLocalEnemies pushBackUnique _x; - }; - } forEach crew _x; -} forEach (_position nearObjects ALERT_NEAR_ENEMY_RANGE); - +// Alert nearby hostile AI { - if (behaviour _x in ["SAFE", "AWARE"]) then { + if (local _x && {[_center, side group _x] call BIS_fnc_sideIsEnemy} && {behaviour _x in ["SAFE", "AWARE"]}) then { // WE WANT THE OBJECT'S SIDE HERE! _x setBehaviour "COMBAT"; }; -} forEach _nearLocalEnemies; - +} forEach ([_position, ALERT_NEAR_ENEMY_RANGE, ALERT_NEAR_ENEMY_RANGE, 0, false] nearEntities [["CAManBase"], false, true, true]); private _particleSource = "#particlesource" createVehicleLocal _position; @@ -87,4 +74,23 @@ _particleSource setParticleParams [ _particleSource setParticleRandom [PARTICLE_SMOKE_LIFE_TIME / 2, [0.5 * EFFECT_SIZE, 0.5 * EFFECT_SIZE, 0.2 * EFFECT_SIZE], [0.3,0.3,0.5], 1, 0, [0,0,0,0.06], 0, 0]; _particleSource setDropInterval (1 / PARTICLE_SMOKE_DENSITY); +if (isServer) then { + private _radius = 6; + private _gasLevel = 0; + + [QGVAR(addGasSource), [_projectile, _radius, _gasLevel, _projectile, { + params ["_endTime", "_projectile"]; + + // If incendiary no longer exists, exit + if (isNull _projectile) exitWith { + false // return + }; + + // Need to get the position every time, as grenade might have been moved + private _position = position _projectile; + + CBA_missionTime < _endTime // return + }, [CBA_missionTime + _timeToLive, _projectile]]] call CBA_fnc_serverEvent; +}; + [{deleteVehicle _this}, _particleSource, _timeToLive] call CBA_fnc_waitAndExecute; diff --git a/addons/chemical/functions/fnc_fullHealLocal.sqf b/addons/chemical/functions/fnc_fullHealLocal.sqf index e0cd29a97..e749952a0 100644 --- a/addons/chemical/functions/fnc_fullHealLocal.sqf +++ b/addons/chemical/functions/fnc_fullHealLocal.sqf @@ -18,12 +18,6 @@ params ["_patient"]; TRACE_1("fullHealLocal kat chemical",_patient); -_patient setVariable [QGVAR(enteredPoison), false, true]; -_patient setVariable [QGVAR(timeleft), missionNamespace getVariable [QGVAR(infectionTime),60], true]; -_patient setVariable [QGVAR(poisonType), "", true]; -_patient setVariable [QGVAR(airPoisoning), false, true]; -_patient setVariable [QGVAR(CS), false, true]; _patient setVariable [QGVAR(gasmask_durability), 10, true]; -if (_patient getVariable [QGVAR(painEffect),0] != 0) then { - KAT_PAIN_EFFECT ppEffectEnable false; -}; +_patient setVariable [QGVAR(CSGas), 0, true]; +_patient setVariable [QGVAR(airPoisoning), false, true]; diff --git a/addons/chemical/functions/fnc_gasAI.sqf b/addons/chemical/functions/fnc_gasAI.sqf deleted file mode 100644 index 499890608..000000000 --- a/addons/chemical/functions/fnc_gasAI.sqf +++ /dev/null @@ -1,113 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * This cant be called manualy! - * Handles the Gas effect for the AI - * - * Arguments: - * 0: Target - * 1: Module - * 2: Position - * 3: Radius - * 4: GasType - * - * Return Value: - * NONE - * - * Example: - * [player, logic, getPos player, 50, 0] call kat_chemical_fnc_gasAI; - * - * Public: No -*/ - -params ["_unit", "_logic", "_pos", "_radius_max", "_gastype"]; - -if (!isDamageAllowed _unit) exitWith { - [_unit] call FUNC(fullHealLocal); -}; - -[ - { - params["_args","_handler"]; - _args params ["_logic","_unit"]; - if (!(_logic getVariable [QGVAR(gas_active),false]) || !(alive _unit) || isNull _unit) then { - _unit setVariable [QGVAR(enteredPoison), false, true]; - [_handler] call CBA_fnc_removePerFrameHandler; - }; - }, - 3, - [_logic,_unit] -] call CBA_fnc_addPerFrameHandler; - -[ - { - params["_args","_handler"]; - _args params ["_unit", "_logic", "_pos", "_radius_max", "_gastype"]; - - if (!(_logic getVariable [QGVAR(gas_active), false]) || isNull _logic || !(alive _unit) || _unit getVariable ["ACE_isUnconscious", false]) exitWith { - [_handler] call CBA_fnc_removePerFrameHandler; - }; - - if ((_unit distance _pos) <= _radius_max && !(_unit getVariable [QGVAR(enteredPoison), false])) then { - _unit setVariable [QGVAR(enteredPoison), true, true]; - private _skill = _unit skill "aimingAccuracy"; - private _fnc_afterwait = { - params ["_unit", "_gastype", "_pos", "_skill"]; - - if !((goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) exitWith { - if (_gastype isEqualTo 1) then { - if (_unit distance _pos < 10 && _unit getVariable [QGVAR(enteredPoison), false]) then { - _unit say3D QGVAR(cough_1); - _unit setSkill ["aimingAccuracy", 0.001]; - [ - { - params["_unit", "_skill"]; - _unit setSkill ["aimingAccuracy", _skill]; - }, - [_unit, _skill], - 30 - ] call CBA_fnc_waitAndExecute; - }; - } else { - if (ACEGVAR(medical_statemachine,AIUnconsciousness)) then { - for "_i" from 0 to 10 step 1 do { - [ - { - params["_unit"]; - [_unit, "PoisenBP", 300, 30, -10, 0, -10] call ACEFUNC(medical_status,addMedicationAdjustment); - }, - [_unit], - 5 - ] call CBA_fnc_waitAndExecute; - }; - } else { - [{ - private _unit = _this select 0; - _unit setDamage 1; - }, [_unit], 20]call CBA_fnc_waitAndExecute; - }; - }; - }; - }; - private _timeleft = 30; - for "_i" from 0 to 1 step 0 do { - _timeleft = _timeleft - 1; - if (_timeleft <= 0) exitWith { - [_unit, _gastype, _pos, _skill] call _fnc_afterwait; - _i = 2; - }; - if (_gastype isEqualTo 1) exitWith { - [_unit, _gastype, _pos, _skill] call _fnc_afterwait; - _i = 2; - }; - _pos = _logic getVariable [QGVAR(gas_position), [0, 0, 0]]; - if (_unit distance _pos > _radius_max || !(_logic getVariable [QGVAR(gas_active), false]) || isNull _logic) exitWith { - _unit setVariable [QGVAR(enteredPoison), false, true]; - _i = 2; - }; - }; - }; - }, - 5, - [_unit,_logic,_pos,_radius_max,_gastype] -] call CBA_fnc_addPerFrameHandler; diff --git a/addons/chemical/functions/fnc_gasCheck.sqf b/addons/chemical/functions/fnc_gasCheck.sqf deleted file mode 100644 index bf2cbc5d0..000000000 --- a/addons/chemical/functions/fnc_gasCheck.sqf +++ /dev/null @@ -1,95 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * This cannot be called manually! - * - * Arguments: - * 0: Module - * 1: Position - * 2: Max_Radius - * 3: Min_Radius - * 4: GasType - * - * Return Value: - * NONE - * - * Example: - * [logic, getPos player, 50, 20, 1] call kat_chemical_fnc_gasCheck; - * - * Public: No - */ - -params ["_logic", "_position", "_radius_max", "_radius_min", "_gasType"]; - -// Set default values if needed -_radius_min = if (_radius_min isEqualTo 0) then {_radius_max / 2} else {_radius_min}; - -_logic setVariable [QGVAR(gas_active), true, true]; -_logic setVariable [QGVAR(gas_playerArr), [], true]; -_logic setVariable [QGVAR(gas_position), _position, true]; - -// Function to check players within the gas zone -private _checkPlayers = { - params ["_args"]; - _args params ["_logic", "_position", "_radius_max", "_radius_min", "_gasType"]; - private _playerArr = _logic getVariable [QGVAR(gas_playerArr), []]; - private _allUnits = if (missionNamespace getVariable [QGVAR(affectAI), false]) then {allUnits} else {allPlayers}; - - - { - if (!isDamageAllowed _x) then { - [_x] call FUNC(fullHealLocal); - continue; - }; - - _position = if ((toString (_position) != toString (getPos _logic))) then {getPos _logic} else {_position}; - _logic setVariable [QGVAR(gas_position), _position, true]; - - private _distance = _x distance _position; - - if (isPlayer _x) then { - if (_x getVariable [QGVAR(isTreated), false]) then { - _x setVariable [QGVAR(isTreated), false, true]; - - _playerArr deleteAt (_playerArr find _x); - _logic setVariable [QGVAR(gas_playerArr), _playerArr, true]; - }; - - if (!(_x in _playerArr) && _distance < _radius_max) then { - _playerArr pushBack _x; - - _logic setVariable [QGVAR(gas_playerArr), _playerArr, true]; - [QGVAR(gasPlayer), [_x, _logic, _position, _radius_max, _radius_min, _gasType], _x] call CBA_fnc_targetEvent; - } else { - if (_x in _playerArr && _distance > _radius_max) then { - - _playerArr deleteAt (_playerArr find _x); - _logic setVariable [QGVAR(gas_playerArr), _playerArr, true]; - }; - }; - } else { - if (_distance < _radius_max && alive _x && !(_x getVariable [QGVAR(enteredPoison), false])) then { - [QGVAR(gasAI), [_x, _logic, _position, _radius_max, _gasType], _x] call CBA_fnc_targetEvent; - }; - }; - } forEach _allUnits; -}; - -// Add per frame handler to check players -private _handle = [_checkPlayers, 3, [_logic, _position, _radius_max, _radius_min, _gasType]] call CBA_fnc_addPerFrameHandler; - -// Remove handler when logic is no longer valid -[ - { - params ["_args", "_pfhHandle"]; - _args params ["_logic", "_handle"]; - - if (isNull _logic || !alive _logic || !(_logic getVariable [QGVAR(gas_active), false])) exitWith { - _logic setVariable [QGVAR(gas_active), false, true]; - [_handle] call CBA_fnc_removePerFrameHandler; - [_pfhHandle] call CBA_fnc_removePerFrameHandler; - }; - }, - 0, - [_logic, _handle] -] call CBA_fnc_addPerFrameHandler; diff --git a/addons/chemical/functions/fnc_gasCheckLocal.sqf b/addons/chemical/functions/fnc_gasCheckLocal.sqf deleted file mode 100644 index 769499f66..000000000 --- a/addons/chemical/functions/fnc_gasCheckLocal.sqf +++ /dev/null @@ -1,92 +0,0 @@ -#include "..\script_component.hpp" -/* -* Author: DiGii -* This cannot be called manually! -* Handles the Gas effect for the player -* -* Arguments: -* 0: Target -* 1: Module -* 2: Position -* 3: Max_radius -* 4: Min_radius -* 5: Gastype -* -* Return Value: -* NONE -* -* Example: -* [player, logic, getPos player, 50, 20, 0] call kat_chemical_fnc_gasChecklocal; -* -* Public: No -*/ - -params ["_unit", "_logic", "_position", "_radius_max", "_radius_min", "_gasType"]; - -if (!isDamageAllowed _unit) exitWith { - [_unit] call FUNC(fullHealLocal); -}; - -private _timeEntered = CBA_MissionTime; - -// Function to handle the per-frame logic for gas effects - -[{ - params ["_args", "_handler"]; - _args params ["_logic", "_unit", "_position"]; - - if (_unit getVariable [QGVAR(isTreated), false] || !(_logic getVariable [QGVAR(gas_active), false])) exitWith { - _unit setVariable [QGVAR(enteredPoison), false, true]; - [_handler] call CBA_fnc_removePerFrameHandler; - }; - -}, 3, [_logic, _unit, _position]] call CBA_fnc_addPerFrameHandler; - -[{ - params ["_args", "_handler"]; - _args params ["_unit", "_logic", "_position", "_radius_max", "_radius_min", "_gasType", "_timeEntered"]; - - if (!(_logic getVariable [QGVAR(gas_active), false]) || isNull _logic || _unit getVariable [QGVAR(isTreated), false]) exitWith { - [_handler] call CBA_fnc_removePerFrameHandler; - }; - - _position = _logic getVariable [QGVAR(gas_position), [0, 0, 0]]; - private _distance = _unit distance _position; - private _min_to_max = _radius_max - _radius_min; - private _dis_to_min = _distance - _radius_min; - private _percent = 0; - - if (_distance > _radius_min) then { - _percent = _dis_to_min / _min_to_max; - }; - - private _timeLeft = _unit getVariable [QGVAR(timeleft), 0]; - if (_timeLeft <= 0) exitWith - { - [_handler] call CBA_fnc_removePerFrameHandler; - [QGVAR(afterWait), [_unit, _logic, _gastype, _radius_max], _unit] call CBA_fnc_targetEvent; - _unit setVariable [QGVAR(timeleft), 0]; - }; - - if (_distance < _radius_max) then { - if !(_unit getVariable [QGVAR(enteredPoison), false]) then { - _unit setVariable [QGVAR(enteredPoison), true, true]; - [QGVAR(enteredZone), [_unit], _unit] call CBA_fnc_targetEvent; - _unit setVariable [QGVAR(Poisen_logic), _logic, true]; - }; - - _timeLeft = (missionNamespace getVariable [QGVAR(infectionTime),60]) - (CBA_MissionTime - _timeEntered); - _unit setVariable [QGVAR(timeleft), _timeLeft]; - }; - - if (_distance > _radius_max || !(_logic getVariable [QGVAR(gas_active), false]) || isNull _logic) then { - _unit setVariable [QGVAR(enteredPoison), false, true]; - [_handler] call CBA_fnc_removePerFrameHandler; - }; - - if (_gasType isEqualTo 1) then { - [_handler] call CBA_fnc_removePerFrameHandler; - [QGVAR(afterWait), [_unit, _logic, _gasType, _radius_max], _unit] call CBA_fnc_targetEvent; - }; - -}, 2, [_unit, _logic, _position, _radius_max, _radius_min, _gasType, _timeEntered]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/chemical/functions/fnc_gasManagerPFH.sqf b/addons/chemical/functions/fnc_gasManagerPFH.sqf new file mode 100644 index 000000000..f4fb22083 --- /dev/null +++ b/addons/chemical/functions/fnc_gasManagerPFH.sqf @@ -0,0 +1,52 @@ +#include "..\script_component.hpp" +/* + * Author: tcvm, johnb43 + * Modified by: MiszczuZPolski + * Handles various objects on gas and determines if units close to objects deserve to get poisoned + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * kat_chemical_fnc_gasManagerPFH call CBA_fnc_addPerFrameHandler + * + * Public: No + */ + +{ + _y params ["_gasLogic", "_radius", "_gasLevel", "_condition", "_conditionArgs", "_isSealable"]; + TRACE_2("gasManagerPFH loop",_x,_y); + + // Remove when condition is no longer valid + if !(_conditionArgs call _condition) then { + TRACE_2("condition no longer valid, deleting",_x,_y); + + detach _gasLogic; + deleteVehicle _gasLogic; + + GVAR(gasSources) deleteAt _x; + + continue; + }; + + // Poison units (alive or dead) close to the gas source + { + + // Get the distance of the unit from the center of the sphere (_gasLogic) + private _distance = _x distance _gasLogic; + + // Ensure the distance does not exceed the radius (prevents going beyond the sphere) + _distance = _distance min _radius; + + // Calculate the intensity as a normalized value (1 at center, 0 at the edge) + private _intensity = 1 - (_distance / _radius); + + _x setVariable [QGVAR(areaIntensity), _intensity, true]; + + [QGVAR(poison), [_x, _gasLevel], _x] call CBA_fnc_targetEvent; + + } forEach nearestObjects [_gasLogic, ["CAManBase"], _radius]; +} forEach GVAR(gasSources); diff --git a/addons/chemical/functions/fnc_gasmodule.sqf b/addons/chemical/functions/fnc_gasmodule.sqf index ad0f34dd4..f80c2fe21 100644 --- a/addons/chemical/functions/fnc_gasmodule.sqf +++ b/addons/chemical/functions/fnc_gasmodule.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* -* Author: DiGii +* Author: DiGii, MiszczuZPolski * This cant be called manualy! * * Arguments: @@ -16,23 +16,32 @@ * * Public: No */ +params ["_logic", "_units", "_activated"]; -private _logic = param [0, objNull, [objNull]]; -private _activated = param [2, true, [true]]; -private _radius_max = _logic getVariable ["Radius_Max", 20]; -private _radius_min = _logic getVariable ["Radius_Min", 10]; -private _gastype = _logic getVariable ["GAS_type", 0]; +private _radius = _logic getVariable ["Radius", 20]; +private _gasLevel = _logic getVariable ["GAS_type", 0]; private _isSealable = _logic getVariable ["IsSealable", false]; -if (_activated) then { - if (count synchronizedObjects _logic > 0) then { - private _object = (synchronizedObjects _logic) select 0; - if (_isSealable) then { - [QGVAR(createSealActionGlobal), [_object, _logic]] call CBA_fnc_globalEventJIP; - }; - - [_object, getPos _object, _radius_max, _radius_min, _gastype] call FUNC(gasCheck); - } else { - [_logic, getPos _logic, _radius_max, _radius_min, _gastype] call FUNC(gasCheck); - }; +if (!_activated) exitWith {}; +if (isServer) then { + + [{ + params ["_logic", "_radius", "_gasLevel", "_isSealable", "_units"]; + + { + [QGVAR(addGasSource), [_x, _radius, _gasLevel, _x, { + params ["_endTime", "_logic"]; + + // If logic no longer exists, exit + if (isNull _logic) exitWith { + false // returns + }; + + CBA_missionTime < _endTime // return + }, [CBA_missionTime + 1e10, _logic], _isSealable]] call CBA_fnc_serverEvent; + + } forEach _units; + + }, [_logic, _radius, _gasLevel, _isSealable, _units], 1] call CBA_fnc_waitAndExecute; + }; diff --git a/addons/chemical/functions/fnc_getChemDetectorState.sqf b/addons/chemical/functions/fnc_getChemDetectorState.sqf deleted file mode 100644 index 528657971..000000000 --- a/addons/chemical/functions/fnc_getChemDetectorState.sqf +++ /dev/null @@ -1,21 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * - * Arguments: - * 0: Unit - * 1: Is On/Off - * - * Return Value: - * NONE - * - * Example: - * [] call kat_chemical_fnc_getChemDetectorState; - * - * Public: No -*/ -params ["_unit", "_isOnOff"]; - -private _currentState = _unit getVariable [QGVAR(chemDetectorState), false]; - -[false, true] select ("ChemicalDetector_01_watch_F" in (assignedItems _unit) && _currentState == _isOnOff); \ No newline at end of file diff --git a/addons/chemical/functions/fnc_handleCSGas.sqf b/addons/chemical/functions/fnc_handleCSGas.sqf deleted file mode 100644 index 3a4e01174..000000000 --- a/addons/chemical/functions/fnc_handleCSGas.sqf +++ /dev/null @@ -1,64 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: DiGii - * - * Arguments: - * 0: Logic - * 1: Radius - * - * Return Value: - * NONE - * - * Example: - * [player, logic, 10] call kat_chemical_fnc_handleCSGas; - * - * Public: No -*/ -params ["_unit", "_logic", "_radius"]; - -[{ - params["_args","_handler"]; - _args params ["_unit"]; - - if (!isDamageAllowed _unit) exitWith { - [_unit] call FUNC(fullHealLocal); - }; - - if (_unit getVariable [QGVAR(enteredPoison), false]) then { - if (_unit getVariable [QACEGVAR(medical,pain), 0] < 0.25) then {_unit setVariable [QACEGVAR(medical,pain), 0.41]}; - if ((goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) then {_unit setVariable[QGVAR(enteredPoison), false, true]}; - _unit setVariable [QGVAR(CS), true, true]; - _unit say3D QGVAR(cough_1); - if (hasInterface) then { - private _rndBlur = selectRandom [5, 6, 7, 8]; - ppBlur ppEffectAdjust [_rndBlur]; - ppBlur ppEffectEnable true; - ppBlur ppEffectCommit 5; - }; - } else { - if (hasInterface) then { - ppBlur ppEffectAdjust [0]; - ppBlur ppEffectEnable true; - ppBlur ppEffectCommit 20; - }; - _unit setVariable [QGVAR(CS), false, true]; - [_handler] call CBA_fnc_removePerFrameHandler; - - }; -}, 5, [_unit]] call CBA_fnc_addPerFrameHandler; - -//Position Check -[{ - params ["_param","_handler"]; - _param params ["_logic", "_radius", "_unit"]; - - if (!isDamageAllowed _unit) exitWith { - [_unit] call FUNC(fullHealLocal); - }; - - private _position = _logic getVariable [QGVAR(gas_position), [0,0,0]]; - if ( _unit distance _position > _radius || !(_logic getVariable[QGVAR(gas_active),false]) || isNull _logic ) exitWith { - _unit setVariable [QGVAR(enteredPoison), false, true]; - [_handler] call CBA_fnc_removePerFrameHandler; - }; -}, 2, [_logic, _radius, _unit]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/chemical/functions/fnc_handleFired.sqf b/addons/chemical/functions/fnc_handleFired.sqf index a531b1cb5..03b934ec0 100644 --- a/addons/chemical/functions/fnc_handleFired.sqf +++ b/addons/chemical/functions/fnc_handleFired.sqf @@ -33,18 +33,21 @@ private _configClass = (configFile >> "CfgAmmo" >> _ammo); private _lifetime = [_configClass, "KAT_lifetime", 60] call BIS_fnc_returnConfigEntry; private _radius = [_configClass, "KAT_radius", 10] call BIS_fnc_returnConfigEntry; -private _gasLvL = [_configClass, "KAT_toxicLvL", 1] call BIS_fnc_returnConfigEntry; +private _gasLevel = [_configClass, "KAT_toxicLvL", 1] call BIS_fnc_returnConfigEntry; [{ params ["_args", "_handler"]; - _args params ["_projectile", "_posArr", "_gasInfo"]; - _gasInfo params ["_lifetime", "_radius", "_gasLvL"]; + _args params ["_projectile", "_gasInfo"]; + _gasInfo params ["_lifetime", "_radius", "_gasLeveL"]; - if (!isNull _projectile) exitWith { - _args set [1, getPos _projectile]; + if (isNull _projectile || {!alive _projectile}) exitWith { + [_handler] call CBA_fnc_removePerFrameHandler; }; - [QGVAR(createZoneGlobal), [_posArr, _lifetime, _radius, _gasLvL]] call CBA_fnc_globalEventJIP; + [QGVAR(addGasSource), [_projectile, _radius, _gasLevel, _projectile, { + params ["_endTime"]; - [_handler] call CBA_fnc_removePerFrameHandler; -}, 0, [_projectile, [0, 0, 0], [_lifetime, _radius, _gasLvL]]] call CBA_fnc_addPerFrameHandler; + CBA_missionTime < _endTime // return + }, [CBA_missionTime + _lifetime]]] call CBA_fnc_serverEvent; + +}, 0, [_projectile, [_lifetime, _radius, _gasLevel]]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/chemical/functions/fnc_handleGasMaskDur.sqf b/addons/chemical/functions/fnc_handleGasMaskDur.sqf index 133fbfd2e..1b0d62ca6 100644 --- a/addons/chemical/functions/fnc_handleGasMaskDur.sqf +++ b/addons/chemical/functions/fnc_handleGasMaskDur.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: DiGii + * Author: MiszczuZPolski * * Arguments: * 0: Unit @@ -9,66 +9,42 @@ * NONE * * Example: - * [player] call kat_chemical_fnc_handleGasMAskDur; + * [player] call kat_chemical_fnc_handleGasMaskDur; * * Public: No */ params ["_unit"]; -[ - { - params["_unit"]; - !(missionNamespace getVariable [QGVAR(availGasmaskList), []] isEqualTo []) && _unit getVariable [QGVAR(enteredPoison), false] - }, - { - params["_unit"]; - if (_unit getVariable [QGVAR(enteredPoison), false] && (goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) then { - private _timeEntered = CBA_missionTime; - private _maxTime = missionNamespace getVariable [QGVAR(gasmask_durability), 900]; - private _currentDurability = _unit getVariable [QGVAR(gasmask_durability), 10]; - [{ - params ["_args","_handler"]; - _args params ["_unit","_timeEntered","_maxTime","_currentDurability"]; - private _currentDurability = _unit getVariable [QGVAR(gasmask_durability), 10]; +if !(goggles _unit in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) exitWith {}; - if (_unit getVariable [QGVAR(gasmask_durability_reset), false]) then { - _unit setVariable [QGVAR(gasmask_durability_reset), false, true]; - [_handler] call CBA_fnc_removePerFrameHandler; - [_unit] call FUNC(handleGasMaskDur); - }; +// Get the maximum time the gas mask filter can last (from settings) +private _maxTime = missionNamespace getVariable [QGVAR(gasmask_durability), 60]; // Max durability in seconds - private _timeLeft = _maxTime - (CBA_missionTime - _timeEntered); - private _percent = round ((10/_maxTime) * _timeLeft); +// Get the current health (0-10) of the gas mask filter for this unit +private _currentHealth = _unit getVariable [QGVAR(gasmask_durability), 10]; // Default to full health (10) if not set - if (_currentDurability != _percent) then { - _unit setVariable [QGVAR(gasmask_durability), _percent, true]; - }; +// Scale the current health (0-10) to the actual time left based on maxTime +private _timeLeft = (_currentHealth / 10) * _maxTime; // Convert 0-10 health scale to time left - if (_currentDurability <= 0 || _percent <= 0 || !(alive _unit)) exitWith { - [_handler] call CBA_fnc_removePerFrameHandler; - _unit setVariable [QGVAR(gasmask_durability), 0, true]; - [_unit] call FUNC(handleGasMaskDur); - }; +// Reduce the time left by 1 seconds (each tick reduces by 1 seconds) +_timeLeft = _timeLeft - 1; - if !(_unit getVariable [QGVAR(enteredPoison), false]) exitWith{ - [_handler] call CBA_fnc_removePerFrameHandler; - [_unit] call FUNC(handleGasMaskDur); - }; +// Prevent negative durability +_timeLeft = _timeLeft max 0; - },1,[_unit,_timeEntered,_maxTime,_currentDurability]] call CBA_fnc_addPerFrameHandler; - } else { - [ - { - params ["_unit"]; - _unit getVariable [QGVAR(enteredPoison), false] || (goggles _unit) in (missionNamespace getVariable [QGVAR(availGasmaskList), []]) - }, - { - [_unit] call FUNC(handleGasMaskDur); - }, - [_unit] - ] call CBA_fnc_waitUntilAndExecute; - }; - }, - [_unit] -] call CBA_fnc_waitUntilAndExecute; +// Convert the remaining time back to the 0-10 health scale +private _newHealth = (_timeLeft / _maxTime) * 10; + +// Calculate percentage of health remaining +private _percent = (_newHealth / 10) * 100; + +// Exit if the gas mask health reaches 0 or the unit is dead +if (_newHealth <= 0) exitWith { + _unit setVariable [QGVAR(gasmask_durability), 0, true]; +}; + +// Update the gas mask health if it has changed +if (_currentHealth != _newHealth) then { + _unit setVariable [QGVAR(gasmask_durability), _newHealth, true]; +}; diff --git a/addons/chemical/functions/fnc_handleRespawn.sqf b/addons/chemical/functions/fnc_handleRespawn.sqf index c52862d13..5eb95a8a5 100644 --- a/addons/chemical/functions/fnc_handleRespawn.sqf +++ b/addons/chemical/functions/fnc_handleRespawn.sqf @@ -11,7 +11,7 @@ * None * * Example: - * [alive, body] call kat_misc_fnc_handleRespawn; + * [alive, body] call kat_chemical_fnc_handleRespawn; * * Public: No */ @@ -29,3 +29,5 @@ params ["_unit"]; private _ui = uiNamespace getVariable "RscWeaponChemicalDetector"; private _obj = _ui displayCtrl 101; _obj ctrlAnimateModel ["Threat_Level_Source", 0, true]; + +_unit setVariable [QGVAR(lastSoundTime), CBA_missionTime, true]; diff --git a/addons/chemical/functions/fnc_hideChemDetector.sqf b/addons/chemical/functions/fnc_hideChemDetector.sqf new file mode 100644 index 000000000..078732747 --- /dev/null +++ b/addons/chemical/functions/fnc_hideChemDetector.sqf @@ -0,0 +1,19 @@ +#include "..\script_component.hpp" +/* + * Author: Garth 'L-H' de Wet + * Modified: Mazinski + * Removes the KWatch from the screen. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call kat_watch_fnc_hideKWatch + * + * Public: No + */ +GVAR(ChemDetectorActive) = false; +"KAT_ChemicalDetector" cutText ["","PLAIN",0,true]; \ No newline at end of file diff --git a/addons/chemical/functions/fnc_init.sqf b/addons/chemical/functions/fnc_init.sqf index f5905b8df..d38a0f3d7 100644 --- a/addons/chemical/functions/fnc_init.sqf +++ b/addons/chemical/functions/fnc_init.sqf @@ -19,22 +19,4 @@ if (!local _unit) exitWith {}; [_unit] call FUNC(fullHealLocal); -[_unit] call FUNC(coughing); -[_unit] call FUNC(handleGasMaskDur); -[_unit] call FUNC(breathing); - -[{ - params ["_args", "_pfhID"]; - _args params ["_unit"]; - private _playertime = _unit getVariable [QGVAR(timeleft), 60]; - private _maxtime = missionNamespace getVariable [QGVAR(infectionTime), 60]; - if (!(_unit getVariable [QGVAR(enteredPoison), false])) then { - if (_playertime < missionNamespace getVariable [QGVAR(infectionTime), 60]) then { - _playertime = _playertime + 1; - if (_playertime >= _maxtime) then { - _playertime = _maxtime; - }; - _unit setVariable[QGVAR(timeleft), _playertime, true]; - }; - }; -}, 2, _unit]call CBA_fnc_addPerFrameHandler; +_unit setVariable [QGVAR(lastSoundTime), CBA_missionTime, true]; diff --git a/addons/chemical/functions/fnc_poison.sqf b/addons/chemical/functions/fnc_poison.sqf new file mode 100644 index 000000000..e5719029c --- /dev/null +++ b/addons/chemical/functions/fnc_poison.sqf @@ -0,0 +1,51 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Handles various objects on fire and determines if units close to objects deserve to get burned. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * ace_fire_fnc_fireManagerPFH call CBA_fnc_addPerFrameHandler + * + * Public: No + */ + +params ["_unit", "_gasLevel"]; + +// Check if unit is remote (objNull is remote) +if (!local _unit) exitWith { + TRACE_1("unit is null or not local",_unit); +}; + +// Check if the unit can poison (takes care of spectators and curators) +if (getNumber (configOf _unit >> "isPlayableLogic") == 1 || {!(_unit isKindOf "CAManBase")}) exitWith { + TRACE_1("unit is virtual or not a man",_unit); +}; + +// If unit is invulnerable, don't poison the unit +if !(isDamageAllowed _unit && {_unit getVariable [QACEGVAR(medical,allowDamage), true]}) exitWith { + TRACE_1("unit is invulnerable",_unit); +}; + +if ((goggles _unit in (missionNamespace getVariable [QGVAR(availGasmaskList), []])) && {_unit getVariable [QGVAR(gasmask_durability), 10] > 0}) exitWith { + TRACE_1("unit has gas mask",_unit); + [QGVAR(handleGasMaskDur), _unit, _unit] call CBA_fnc_targetEvent; +}; + +switch (_gasLevel) do { + case 0: { + _unit setVariable [QGVAR(CSGas), 30, true]; + if (random 1 <= GVAR(tearGasDropChance)) then { + [QACEGVAR(hitreactions,dropWeapon), _unit, _unit] call CBA_fnc_targetEvent; + }; + }; + case 1: { + _unit setVariable [QGVAR(airPoisoning), true, true]; + }; + default {}; +}; diff --git a/addons/chemical/functions/fnc_putOnGasMask.sqf b/addons/chemical/functions/fnc_putOnGasMask.sqf new file mode 100644 index 000000000..878ba9f62 --- /dev/null +++ b/addons/chemical/functions/fnc_putOnGasMask.sqf @@ -0,0 +1,13 @@ +#include "..\script_component.hpp" + +params ["_player"]; + +private _itemList = _player call ACEFUNC(common,uniqueItems); + +{ + if (_x in GVAR(availGasmaskList)) then { + _player assignItem _x; + break; + }; + +} forEach _itemList; diff --git a/addons/chemical/functions/fnc_showChemDetector.sqf b/addons/chemical/functions/fnc_showChemDetector.sqf new file mode 100644 index 000000000..7ca6cda6d --- /dev/null +++ b/addons/chemical/functions/fnc_showChemDetector.sqf @@ -0,0 +1,80 @@ +#include "..\script_component.hpp" +/* + * Author: Garth 'L-H' de Wet + * Modified: Mazinski + * Displays the KWatch on screen. + * + * Arguments: + * 0: unit + * + * Return Value: + * None + * + * Example: + * [player] call kat_watch_fnc_showKWatch + * + * Public: Yes + */ + +params ["_unit"]; + +"KAT_ChemicalDetector" cutRsc ["KAT_ChemicalDetector", "PLAIN", 0, true]; + +if (isNull (uiNamespace getVariable ["KAT_ChemicalDetector", displayNull])) exitWith {}; + +GVAR(ChemDetectorActive) = true; + +private _display = uiNamespace getVariable ["KAT_ChemicalDetector", displayNull]; +private _background = _display displayCtrl 18801; +private _time = _display displayCtrl 18804; +private _exposure = _display displayCtrl 18805; + +[{ + _this params ["_args", "_pfhID"]; + _args params ["_unit", "_time", "_exposure"]; + + if !(GVAR(ChemDetectorActive)) exitWith { + _pfhID call CBA_fnc_removePerFrameHandler; + }; + + if !(alive _unit) exitWith { + call FUNC(hideChemDetector); + _pfhID call CBA_fnc_removePerFrameHandler; + }; + + if !("KAT_ChemicalDetector" in assignedItems _unit) exitWith { + call FUNC(hideChemDetector); + _pfhID call CBA_fnc_removePerFrameHandler; + }; + + private _hour = floor dayTime; + private _minute = floor ((dayTime - _hour) * 60); + + _time ctrlSetText (format ["%1:%2", [_hour, 2] call CBA_fnc_formatNumber, [_minute, 2] call CBA_fnc_formatNumber]); + + private _intensity = _unit getVariable [QGVAR(areaIntensity), 0]; + + _exposure ctrlSetText (_intensity toFixed 2); + + if (_intensity > 0) then { + private _lastSoundTime = _unit getVariable QGVAR(lastSoundTime); + _unit setVariable [QGVAR(areaIntensity), 0, true]; + + if (isNil "_lastSoundTime") then { + TRACE_1("undefined lastSoundTime: setting to current time",_lastSoundTime); + _unit setVariable [QGVAR(lastSoundTime), CBA_missionTime]; + }; + + if (CBA_missionTime - _lastSoundTime > 6) exitWith { + playSound3D [QPATHTOF(audio\chemDetector.ogg), _unit, false, getPosASL _unit, 4, 1, 10]; + _unit setVariable [QGVAR(lastSoundTime), CBA_missionTime]; + }; + } else { + _unit setVariable [QGVAR(areaIntensity), 0, true]; + }; + +}, 1, [ + _unit, + _time, + _exposure +]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/chemical/functions/fnc_spawnSmoke.sqf b/addons/chemical/functions/fnc_spawnSmoke.sqf index de25e2343..67cb83127 100644 --- a/addons/chemical/functions/fnc_spawnSmoke.sqf +++ b/addons/chemical/functions/fnc_spawnSmoke.sqf @@ -23,6 +23,20 @@ private _smoke = "KAT_GASTrip_SmokeEffect" createVehicle [_posX,_posY,_posZ]; hideObjectGlobal _smoke; [_smoke, 0, ["ACE_MainActions", "ACTION"]] call ACEFUNC(interact_menu,removeActionFromObject); -private _pos = [_posX,_posY,_posZ]; +if (isServer) then { + private _timeToLive = 10; + private _radius = 10; + private _gasLevel = 1; + + [QGVAR(addGasSource), [_smoke, _radius, _gasLevel, _smoke, { + params ["_endTime", "_smoke"]; + + // If smoke no longer exists, exit + if (isNull _smoke) exitWith { + false // return + }; + + CBA_missionTime < _endTime // return + }, [CBA_missionTime + _timeToLive, _smoke]]] call CBA_fnc_serverEvent; +}; -[QGVAR(createZoneGlobal), [_pos, 240, 5, 0]] call CBA_fnc_globalEventJIP; diff --git a/addons/chemical/functions/fnc_takeOffGasMask.sqf b/addons/chemical/functions/fnc_takeOffGasMask.sqf new file mode 100644 index 000000000..0d64c4bce --- /dev/null +++ b/addons/chemical/functions/fnc_takeOffGasMask.sqf @@ -0,0 +1,5 @@ +#include "..\script_component.hpp" + +params ["_player"]; + +_player unassignItem (goggles _player); diff --git a/addons/chemical/functions/fnc_treatmentAdvanced_AtropineLocal.sqf b/addons/chemical/functions/fnc_treatmentAdvanced_AtropineLocal.sqf index ede9e02ae..fd15874e9 100644 --- a/addons/chemical/functions/fnc_treatmentAdvanced_AtropineLocal.sqf +++ b/addons/chemical/functions/fnc_treatmentAdvanced_AtropineLocal.sqf @@ -18,9 +18,3 @@ params ["_patient"]; _patient setVariable [QGVAR(airPoisoning), false, true]; -_patient setVariable [QGVAR(isTreated), true, true]; -_patient setVariable [QGVAR(enteredPoison), false, true]; -_patient setVariable [QGVAR(timeleft), missionNamespace getVariable [QGVAR(infectionTime), 60], true]; -if (_patient getVariable [QGVAR(painEffect),0] != 0) then { - KAT_PAIN_EFFECT ppEffectEnable false; -}; diff --git a/addons/chemical/functions/fnc_ui_gasModule.sqf b/addons/chemical/functions/fnc_ui_gasModule.sqf index 167f12e33..c359f333a 100644 --- a/addons/chemical/functions/fnc_ui_gasModule.sqf +++ b/addons/chemical/functions/fnc_ui_gasModule.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: DiGii + * Author: DiGii, MiszczuZPolski * Creates the UI for the Zeus Module * * Arguments: @@ -48,6 +48,8 @@ if !(isNull attachedTo _logic) then { default {}; }; +} else { + [LLSTRING(OnlyObject)] call _fnc_errorAndClose; }; private _fnc_onUnload = { @@ -55,11 +57,9 @@ private _fnc_onUnload = { if (isNull _logic) exitWith {}; if !(_display getVariable [QGVAR(Confirmed), false]) then { - if !(isNull attachedTo _logic) then - { + if !(isNull attachedTo _logic) then { deleteVehicle _logic; - } else - { + } else { detach (attachedTo _logic); deleteVehicle _logic; }; @@ -75,31 +75,23 @@ private _fnc_onConfirm = { private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull); if (isNull _logic) exitWith {}; - private _gasType = _display getVariable [QGVAR(ui_gastype),0]; + private _gasLevel = _display getVariable [QGVAR(ui_gastype), 0]; + private _radius = _display getVariable [QGVAR(ui_radius), 20]; + private _isSealable = _display getVariable [QGVAR(ui_sealable), false]; - private _radius_max = _display getVariable [QGVAR(ui_radiusMax), 20]; - private _radius_min = _display getVariable [QGVAR(ui_radiusMin), 10]; - if (_radius_min > _radius_max) then { - [CSTRING(GasModule_Needbigger)] call ACEFUNC(zeus,showMessage); - } else { - private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull); - if (isNull _logic) exitWith {}; - - if !(isNull attachedTo _logic) then { - private _object = attachedTo _logic; + [QGVAR(addGasSource), [attachedTo _logic, _radius, _gasLevel, _logic, { + params ["_endTime", "_logic"]; - [_logic, getPos _object, _radius_max, _radius_min, _gasType] call FUNC(gasCheck); + // If logic no longer exists, exit + if (isNull _logic) exitWith { + false // return + }; - if (_display getVariable [QGVAR(ui_sealable), false]) then { - [QGVAR(createSealActionGlobal), [_object, _logic]] call CBA_fnc_globalEventJIP; - }; + CBA_missionTime < _endTime // return + }, [CBA_missionTime + 1e10, _logic], _isSealable]] call CBA_fnc_serverEvent; - } else { - [_logic, getPos _logic, _radius_max, _radius_min, _gasType] call FUNC(gasCheck); - }; + _display setVariable [QGVAR(Confirmed), true]; - _display setVariable [QGVAR(Confirmed), true]; - }; }; _display displayAddEventHandler ["Unload", _fnc_onUnload]; diff --git a/addons/chemical/script_component.hpp b/addons/chemical/script_component.hpp index 0a66b8add..c36096d72 100644 --- a/addons/chemical/script_component.hpp +++ b/addons/chemical/script_component.hpp @@ -25,3 +25,4 @@ #define X_PART(num) (W_PART(num) + (safeZoneX + (safeZoneW - SIZEX) / 2)) #define Y_PART(num) (H_PART(num) + (safeZoneY + (safeZoneH - SIZEY) / 2)) +#define GAS_MANAGER_PFH_DELAY 0.25 diff --git a/addons/chemical/stringtable.xml b/addons/chemical/stringtable.xml index 27b3712f1..95b01ef4e 100644 --- a/addons/chemical/stringtable.xml +++ b/addons/chemical/stringtable.xml @@ -181,6 +181,14 @@ Герметик, который используется для герметизации предметов, например, при утечке токсичного вещества Afdichtmiddel dat gebruikt wordt om een object te dichten wanneer er bijvoorbeeld een giftige stof lekt + + JCAD Chemical Detector + Rilevatore chimico JCAD + + + Used to detect KAT toxic chemicals + Utilizzato per rilevare sostanze chimiche tossiche KAT + Put on gas mask Poner mascara de gas @@ -301,21 +309,6 @@ Радиус вокруг модуля, заполненного газом. Radius om de module dat gevuld is met gas. - - The Minimal Range describes the area around the module where the gas is most lethal - El rango minimo describe el area alrededor del modulo en el cual el gas sera mas letal - Die minimale Reichweite beschreibt den Bereich im Umkreis des Moduls, in dem das Gas am tödlichsten wirkt. - Le rayon minimal décrit la zone autour du module ou le gaz est le plus létal - 最小範囲は、ガスが最も致死的であるモジュールの周辺を表します。 - 최소 범위는 가스가 가장 치명적으로 작동하는 모듈 주변 영역을 나타냅니다. - Il raggio minimo descrive l'area attorno al modulo dove il gas è più letale - O Alcance Mínimo descreve a área ao redor do módulo onde o gás é mais letal - Minimalny zasięg określa obszar wokół modułu, gdzie gaz jest bardziej śmiertelny - Minimální vzdálenost vyjadřuje oblast kolem modulu kde je plyn nejvíce smrtící - Minimialue kuvaa moduulia ympäröivän alueen, jossa kaasu on tappavin - Минимальный радиус, описывающий область вокруг модели, в которой газ является наиболее смертоносным - Het minimale bereik beschrijft het gebied om de module waar het gas het dodelijkst is - The Maximum Range is a range around the Minimal Range where the gas is less lethal and you have a longer chance of survival.(distance from module to outer ring) El rango maximo es el rango alrededor del rango minimo en el cual el gas es menos letal y tienes mas posibilidades de sobrevivir (distancia desde el modulo al anillo exterior) @@ -406,21 +399,6 @@ Герметизация утечки Dicht lek - - Minimal Range need to be less than Maximum Range! - ¡El rango minimo tiene que ser menor al rango maximo! - Minimale Reichweite muss kleiner als maximale Reichweite sein! - Le rayon minimal a besoin d'être plus petit que le rayon maximal ! - 最小範囲は最大範囲よりも小さくする必要があります! - 최소 범위는 반드시 최대 범위보다 작아야 합니다! - Il raggio minimo deve essere minore del raggio massimo! - O Alcance Mínimo precisa ser menor que o Alcance Máximo! - Minimalny zasięg musi być mniejszy niż maksymalny zasięg - Minimální vzdálenost musí být menší než Maximální vzdálenost! - Vähimmäisalueen on oltava pienempi kuin enimmäisetäisyys - Минимальный радиус должен быть меньше максимального радиуса ! - Het minimale bereik moet kleiner zijn dan het maximale bereik! - Intoxication Intoxicación @@ -735,21 +713,6 @@ Максимальная дальность действия. Maximaal bereik. - - Minimal Range. - Rango minimo - Minimale Reichweite. - Portée minimale - 最小範囲 - 최소 범위. - Raggio minimo. - Alcance Mínimo - Minimalny zasięg - Minimální vzdálenost. - Vähimmäisalue - Минимальный радиус действия. - Minimaal bereik. - Is sealable? ¿Es sellable? @@ -810,5 +773,20 @@ Тип газа: Gas type: + + Gas Mask Sound Volume + + + Determines how loud the breathing sounds are when using the gas mask + + + Must be placed on object + + + Put on gas mask + + + Take off gas mask + diff --git a/addons/chemical/ui/RscAttributes.hpp b/addons/chemical/ui/RscAttributes.hpp index 969ac852f..3ad810ea9 100644 --- a/addons/chemical/ui/RscAttributes.hpp +++ b/addons/chemical/ui/RscAttributes.hpp @@ -12,8 +12,6 @@ class RscPicture; class ctrlToolbox; class RscButton; - - class RscDisplayAttributes { class Controls { class Background; @@ -51,16 +49,6 @@ class GVAR(kat_RscAtributeRadius): RscControlsGroupNoScrollbars { w = QUOTE(W_PART(15.9)); h = QUOTE(H_PART(1)); }; - class Title2: Title1 { - idc = 16108; - text = CSTRING(UI_min_range); - toolTip = CSTRING(GasModule_min_radius_dcs); - y = QUOTE(H_PART(1.1)); - }; - class radius_min: radius_max { - idc = 1612; - y = QUOTE(H_PART(1.1)); - }; class Title3: Title1 { idc = 1614; text = CSTRING(UI_sealable); diff --git a/addons/chemical/ui/kat_chemicalDet.paa b/addons/chemical/ui/kat_chemicalDet.paa new file mode 100644 index 000000000..5cd5c910d Binary files /dev/null and b/addons/chemical/ui/kat_chemicalDet.paa differ diff --git a/addons/chemical/ui/kat_chemicalDet_icon.paa b/addons/chemical/ui/kat_chemicalDet_icon.paa new file mode 100644 index 000000000..a8080a317 Binary files /dev/null and b/addons/chemical/ui/kat_chemicalDet_icon.paa differ diff --git a/addons/circulation/ACE_Medical_Treatment_Actions.hpp b/addons/circulation/ACE_Medical_Treatment_Actions.hpp index 5c88d80e1..7ada5aa1c 100644 --- a/addons/circulation/ACE_Medical_Treatment_Actions.hpp +++ b/addons/circulation/ACE_Medical_Treatment_Actions.hpp @@ -67,8 +67,8 @@ class ACE_Medical_Treatment_Actions { displayName = CSTRING(DrawArterial_Action_Use); displayNameProgress = CSTRING(DrawBlood_Action_Progress); treatmentTime = 10; + condition = QUOTE(GVAR(abgEnable)); callbackSuccess = QFUNC(drawArterial); - condition = "true"; items[] = {"kat_IV_16"}; }; diff --git a/addons/circulation/XEH_preInit.sqf b/addons/circulation/XEH_preInit.sqf index e4971657e..577b7236b 100644 --- a/addons/circulation/XEH_preInit.sqf +++ b/addons/circulation/XEH_preInit.sqf @@ -73,6 +73,16 @@ if (isServer) then { true ] call CBA_Settings_fnc_init; +// Enables ABG Menu and Testing +[ + QGVAR(abgEnable), + "CHECKBOX", + [LLSTRING(SETTING_abg_enable), LLSTRING(SETTING_abg_enable_DESC)], + [CBA_SETTINGS_CAT, ELSTRING(GUI,SubCategory_Basic)], + [false], + true +] call CBA_Settings_fnc_init; + //location for AED - Defi: [ QGVAR(useLocation_AED), diff --git a/addons/circulation/functions/fnc_AEDX_ViewMonitor.sqf b/addons/circulation/functions/fnc_AEDX_ViewMonitor.sqf index 620cf416c..a770d89b3 100644 --- a/addons/circulation/functions/fnc_AEDX_ViewMonitor.sqf +++ b/addons/circulation/functions/fnc_AEDX_ViewMonitor.sqf @@ -277,7 +277,7 @@ GVAR(PulseRateReady) = true; if (HAS_TOURNIQUET_APPLIED_ON(GVAR(AEDX_MonitorTarget),_partIndex)) then { _bp = [0,0]; } else { - _spO2 = GET_SPO2(GVAR(AEDX_MonitorTarget)); + _spO2 = GET_KAT_SPO2(GVAR(AEDX_MonitorTarget)); _pr = GVAR(AEDX_MonitorTarget) getVariable [QACEGVAR(medical,heartRate), 0]; }; diff --git a/addons/circulation/functions/fnc_AEDX_VitalsMonitor.sqf b/addons/circulation/functions/fnc_AEDX_VitalsMonitor.sqf index 363ae599d..5eddffa25 100644 --- a/addons/circulation/functions/fnc_AEDX_VitalsMonitor.sqf +++ b/addons/circulation/functions/fnc_AEDX_VitalsMonitor.sqf @@ -92,7 +92,7 @@ if (_patient getVariable ["kat_AEDXPatient_PFH", -1] isEqualTo -1) then { _bp = [0,0]; _pr = 0; } else { - _spO2 = GET_SPO2(_patient); + _spO2 = GET_KAT_SPO2(_patient); _etco2 = GET_ETCO2(_patient); _breathrate = GET_BREATHING_RATE(_patient); @@ -291,7 +291,7 @@ if (_patient getVariable [QGVAR(AED_X_VitalsMonitor_Connected), false] && {(_pat if (_patient getVariable [QGVAR(DefibrillatorInUse), false] || !(_patient getVariable [QGVAR(AED_X_VitalsMonitor_VolumePatient), false])) then { } else { private _hr = _patient getVariable [QACEGVAR(medical,heartRate), 80]; - private _spO2 = GET_SPO2(_patient); + private _spO2 = GET_KAT_SPO2(_patient); if (_spO2 < GVAR(AED_X_Monitor_SpO2Warning) || _tourniquetApplied) then { playSound3D [QPATHTOF_SOUND(sounds\spo2warning.wav), _soundSource, false, getPosASL _soundSource, 5, 1, 15]; }; diff --git a/addons/circulation/stringtable.xml b/addons/circulation/stringtable.xml index a6015dbf1..0940f7b91 100644 --- a/addons/circulation/stringtable.xml +++ b/addons/circulation/stringtable.xml @@ -24,6 +24,7 @@ AI/KI simpel medische simulatie geactiveerd? ¿Activar Médico Simple para IA? AI用単純化医療を有効化しますか? + AI Simple Medical attivato? Médecine simplifiée pour l'IA ? @@ -938,6 +939,7 @@ Analysoi rytmiä Анализировать частоту сердечных сокращений Analyseer hartritme + Analizzare il ritmo Check Dogtags @@ -1041,6 +1043,7 @@ Aseta AUD-tyynyt Установить электроды AED Plaats AED pads + Posizionare i pad AED Station: Place AED Pads @@ -1053,6 +1056,7 @@ Asema: aseta AUD-tyynyt Станция: установить электродов AED Station: Plaats AED pads + Postazione: Posizionare i pad AED Vehicle: Place AED Pads @@ -1065,6 +1069,7 @@ Ajoneuvo: aseta AUD-tyynyt Транспорт: установить электроды AED Voertuig: Plaats AED pads + Veicolo: Posizionare i pad AED Place AED-X Pads @@ -1078,6 +1083,7 @@ Aseta AUD-X-tyynyt Установить электроды AED-X Plaats AED-X pads + Posizionare i pad AED-X Station: Place AED-X Pads @@ -1090,6 +1096,7 @@ Asema: aseta AUD-X-tyynyt Станция: установить электроды AED-X Station: Plaats AED-X pads + Postazione: Posizionare i pad AED-X Vehicle: Place AED-X Pads @@ -1102,6 +1109,7 @@ Ajonuevo: aseta AUD-X-tyynyt Транспорт: установить электроды AED-X Voertuig: Plaats AED-X pads + Veicolo: Posizionare i pad AED-X Remove Defibrillator Pads @@ -1115,6 +1123,7 @@ Poista defibrillaattorityynyt Снять электроды дефибриллятора Verwijder defibrillatiepads + Rimuovere i pad del defibrillatore Placing Defibrillator Pads @@ -1128,6 +1137,7 @@ Defibrillaattorityynyjen asettaminen Установка электродов дефибриллятора Defibrillatiepads worden geplaatst + Posizionamento dei pad del defibrillatore Removing Defibrillator Pads @@ -1141,6 +1151,7 @@ Defibrillaattorityynyjen poistaminen Снять электроды дефибриллятора Defibrillatiepads worden verwijderd + Rimozione dei pad del defibrillatore Administer Shock @@ -1154,6 +1165,7 @@ Anna sokki potilaalle Применить разряд Dien schok toe + Somministrare la scarica Charge Defibrillator @@ -1167,6 +1179,7 @@ Lataa defibrillaattori Зарядить дифибриллятор Laad defribrillator op + Caricare il defibrillatore Cancel Charge @@ -1180,6 +1193,7 @@ Peruuta sähkölataus Отменить заряд Annuleer lading + Annullare la carica View Monitor @@ -1193,6 +1207,7 @@ Näytä monitori Просмотр монитора Kijk op monitor + Visualizzare il monitor Connect Vitals Monitor @@ -1206,6 +1221,7 @@ Liitä terveysmonitori Подключить монитор жизненно важных показателей Verbind de vitale waarden monitor + Collegare il monitor dei parametri vitali Station: Connect Vitals Monitor @@ -1219,6 +1235,7 @@ Asema: Liitä kuntomonitori Станция: Подключить монитор жизненно важных показателей Station: Verbind de vitale waarden monitor + Postazione: Collegare il monitor dei parametri vitali Vehicle: Connect Vitals Monitor @@ -1268,6 +1285,7 @@ Terveysmonitorin ääni päällä Звук монитора жизненно важных органов ВКЛЮЧЕН Vitale waarden monitor audio AAN + Audio monitor dei parametri vitali ATTIVO Vitals Monitor Audio OFF @@ -1281,6 +1299,7 @@ Tärkeän näytön ääni pois päältä Звук монитора жизненно важных функций ВЫКЛЮЧЕН Vitale waarden monitor UIT + Audio monitor dei parametri vitali SPENTO Connecting @@ -1419,6 +1438,7 @@ Aseta AUD-X Разместить AED-X Plaats AED-X + Posizionare AED-X Pick Up AED @@ -1449,6 +1469,7 @@ Hae AUD-X Подобрать AED-X Pak AED-X op + Prendere AED-X Toggle Volume @@ -1461,6 +1482,7 @@ Vaihda äänenvoimakkuutta Переключить громкость Geluid omwisselen + Commutare volume Measure Blood Pressure @@ -1473,6 +1495,7 @@ Mittaa verenpaine Измерить артериальное давление Meet bloeddruk + Misurare la pressione sanguigna Check Pads @@ -1485,6 +1508,7 @@ Tarkista tyynyt Проверить электроды Controleer pads + Controllare i pad SHOCK ADVISED @@ -1497,6 +1521,7 @@ SOKI SUOSITELLAAN Подсказка о разряде SCHOK GEADVISEERD + SCARICA CONSIGLIATA NO SHOCK ADVISED @@ -1509,6 +1534,7 @@ EI SUOSITTELUA SHOCKIA Никаких подсказок о разряде SCHOK NIET GEADVISEERD + NESSUNA SCARICA CONSIGLIATA ANALYZING ECG @@ -1521,6 +1547,7 @@ EKG:N ANALYSOINTI Анализ ЭКГ ECG-ANALYSE + ANALIZZANDO ECG CHARGED @@ -1533,6 +1560,7 @@ LAADUT Заряженный OPGELADEN + CARICATO CHARGING @@ -1545,6 +1573,7 @@ LATAUS Зарядка WORDT GELADEN + CARICAMENTO IN CORSO AED DISARMED @@ -1557,6 +1586,7 @@ AED POIS KÄYTÖSTÄ AED разобран AED GEDEACTIVEERD + AED DISARMATO DISARMED @@ -1569,6 +1599,7 @@ POIS KÄYTÖSTÄ Разобран GEDEACTIVEERD + DISARMATO Delivered Energy @@ -1581,6 +1612,7 @@ Toimitettu shokki Передаваемая энергия Geleverde energie + Energia erogata Defibrillator @@ -1592,6 +1624,7 @@ Defibrillator Desfibrilador Defibrillator + Defibrillatore Selected Energy @@ -1603,6 +1636,7 @@ Ausgewählte Leistung Energia selecionada Geselecteerde energie + Energia selezionata ENERGY DELIVERED @@ -1615,6 +1649,7 @@ ISKU TOIMITETTU Передаваемая энергия GELEVERDE ENERGIE + ENERGIA EROGATA Stand Clear @@ -1627,6 +1662,7 @@ Väistyä Не прикасайтесь к пациенту Afstand houden + Allontanarsi Perform CPR @@ -1639,6 +1675,7 @@ Suorita elvytys Выполнить СЛР Voer CPR uit + Eseguire RCP PUSH SHOCK @@ -1651,6 +1688,7 @@ PAINA SHOKKI РАЗРЯД DRUK SCHOK + PREMERE SCARICA Push Analyze @@ -1663,6 +1701,7 @@ Paina analysoida Анализировать Druk analyse + Premere Analizza HR @@ -1675,6 +1714,7 @@ HR ЧСС HR + HR PR @@ -1687,12 +1727,14 @@ PR Ритм (PR) PR + PR %1 Blood Sample %1 bloedstaal %1 Muestra de sangre %1 血液サンプル + %1 Campione di sangue %1 échantillon de sang @@ -1700,6 +1742,7 @@ Voer ABG test uit Realizar prueba ABG ABGテストを行う + Eseguire test ABG Exécuter le test ABG @@ -1707,13 +1750,15 @@ ABG test Prueba ABG ABGテスト - ABG test + Test ABG + Test ABG Apply %1 Test Voer %1 test uit Realizar prueba %1 %1 テストを実施 + Applicare il %1 Test Appliquer le test %1 @@ -1950,6 +1995,12 @@ Устанавливает группы крови, которые будут присвоены игрокам на основе их Steam ID \nГруппы крови разделены запятой (","), список должен содержать в общей сложности 10 групп крови Bepaald de bloedgroepen die aan spelers worden gegeven op basis van hun SteamID. \nBloedgroepen zijn gescheiden met een comma(","). De lijst moet 10 verschillende bloedgroepen bevatten + + Enable ABG Testing + + + Enables ABG Testing and ACE Menu Visibility + %1 checked dogtags blood group: %2 %1 hat die Blutgruppe der Erkennungsmarke überprüft: %2 @@ -1959,6 +2010,7 @@ %1 a vérifié le groupe sanguin sur la plaque d'identité : %2 %1 checou %1 heeft de bloedgroep van het herkeningsplaatje gecontroleerd: %2 + %1 ha controllato il gruppo sanguigno delle targhette identificative: %2 Locations AED @@ -2007,6 +2059,7 @@ AUD AED AED + AED AED-X @@ -2019,6 +2072,7 @@ AUD-X AED-X AED-X + AED-X Automated External Defibrillator @@ -2067,6 +2121,7 @@ %1 annettu sokki (%2) % 1 использовал разряд (% 2) %1 heeft een schok toegediend (%2) + %1 ha somministrato la scarica (%2) %1 attached defibrillator pads (%2) @@ -2079,6 +2134,7 @@ %1 kiinnitetyt defibrillaattorityynyt (%2) %1 прикрепил электроды (%2) %1 heeft defibrillator pad geplaatst (%2) + %1 ha attaccato i pad del defibrillatore (%2) %1 removed defibrillator pads @@ -2091,6 +2147,7 @@ %1 poistettu defibrillaattorityynyt %1 снял электроды %1 heeft defibrillator pads verwijderd + %1 ha rimosso i pad del defibrillatore %1 connected vitals monitor @@ -2103,6 +2160,7 @@ %1 kytketty terveysmonitori %1 подключил монитор жизненно важных показателей %1 heeft een vitale waarden monitor verbonden + %1 ha collegato il monitor dei parametri vitali %1 disconnected vitals monitor @@ -2115,6 +2173,7 @@ %1 irrotettu terveysmonitori %1 отсоединил монитор жизненно важных показателей %1 heeft een vitale waarden monitor losgekoppeld + %1 ha scollegato il monitor dei parametri vitali Patient Disconnected @@ -2127,6 +2186,7 @@ Potilas on katkaistu Пациент отключен Patiënt losgekoppeld + Paziente scollegato Max Success chance for AED-X @@ -2251,6 +2311,7 @@ Autoriser l'application des électrodes de l'AED pendant la RCP Permitir aplicação de pás do desfibrilador durante RCP Sta het plaatsen van AED pads tijdens CPR toe + Consentire l'applicazione dei pad AED durante la RCP Training level required to use an AED-X @@ -2281,6 +2342,7 @@ Salli AUD-X-vuorovaikutus aseman kanssa Разрешить взаимодействие станции AED/X Sta AED/X stations interactie toe + Consentire l'interazione con la stazione AED/X Medical level required to pick up placed AED/X station @@ -2291,6 +2353,7 @@ Niveau médical requis pour ramasser un AED-X posé au sol Nível médico necessário para pegar uma estação DEA/X colocada Benodigd medisch niveau om geplaatste AED/X stations op te pakken + Livello medico richiesto per raccogliere la stazione AED/X posizionata Attach AED-X Vitals Monitor Time @@ -2303,6 +2366,7 @@ Kuinka kauan AUD-X-terveysmonitorin kiinnittäminen kestää Время подключения мониторинга жизненно важных показателей AED-X Benodigde tijd om AED-X vitale waarden monitor aan te sluiten + Tempo di collegamento del monitor dei parametri vitali AED-X Detach AED-X Vitals Monitor Time @@ -2315,6 +2379,7 @@ Kuinka kauan AUD-X-terveysmonitorin irrottaminen kestää Время отключения мониторинга жизненно важных показателей AED-X Benodigde tijd om AED-X vitale waarden monitor los te koppelen + Tempo di scollegamento del monitor dei parametri vitali AED-X Attach Defibrillator Pads Time @@ -2327,6 +2392,7 @@ Kuinka kauan defibrillaattorityynyjen kiinnittäminen kestää Время подключения электродов Benodigde tijd op defibrillator pads aan te brengen + Tempo di collegamento dei pad del defibrillatore Detach Defibrillator Pads Time @@ -2339,6 +2405,7 @@ Kuinka kauan defibrillaattorityynyjen irrottaminen kestää Время отсоединеия электродов Benodigde tijd om defibrillator pads te verwijderen + Tempo di scollegamento dei pad del defibrillatore Distance limit for defibrillators in meters @@ -2351,6 +2418,7 @@ Defibrillaattorien etäisyysraja metreinä Предельное расстояние для дефибрилляторов в метрах Afstandslimiet voor defibrillators in meters + Limite di distanza per i defibrillatori in metri Enable different CPR chances per medical level @@ -2477,6 +2545,7 @@ Elvytyksen onnistumislaskelmien välinen aika Интервал шанса СЛР CPR kans interval + Intervallo di probabilità RCP Oxygenation Period @@ -2489,6 +2558,7 @@ Happisaturaatiojakso Период насыщения кислородом Oxygenatie periode + Periodo di ossigenazione %1 performed CPR (%2) @@ -2501,6 +2571,7 @@ %1 suoritettu elyytys (%2) %1 выполнил СЛР (%2) %1 heeft CPR uitgevoerd (%2) + %1 ha eseguito la RCP (%2) Stop CPR @@ -2513,6 +2584,7 @@ Lopeta elvytys Прекратить СЛР Stop CPR + Interrompere la RCP CPR Started @@ -2524,6 +2596,7 @@ RCP iniciada RCP iniciada CPR gestart + RCP iniziata CPR Cancelled @@ -2536,6 +2609,7 @@ Elvytys peruttu СЛР отменена CPR afgebroken + RCP annullata Field Blood Transfusion Kit (500ml) @@ -2633,6 +2707,7 @@ Neem Arterieel bloedstaal Extraer muestra arterial 動脈サンプルを採る + Prelevare campione arterioso Prélèvement d'un échantillon artériel @@ -2640,6 +2715,7 @@ Bloedstaal Muestra de sangre 血液サンプル + Campione di sangue Echantillon de sang @@ -2647,6 +2723,7 @@ ABG resultaat Resultado ABG ABG結果 + Risultato del test ABG Résultat de l'ABG @@ -2834,6 +2911,7 @@ Edistyneet sydämen rytmit Продвинутые ритмы Geadvanceerde hartritmen + Ritmi avanzati Can Deteriorate @@ -2847,6 +2925,7 @@ voivatko ne pahentua? Может ухудшиться Kan verslechteren + Può deteriorarsi Random Deteriorate Time Maximum @@ -2859,6 +2938,7 @@ Satunnainen huononemisajan maksimiarvo Максимальное значение времени случайного ухудшения функции сердца Maximale willekeurige tijd voor een verslechtering + Tempo massimo di deterioramento casuale Random Deteriorate Time Weight @@ -2871,6 +2951,7 @@ Satunnainen huononemisajan paino Взвешивание времени случайного ухудшения функции сердца Tijdsgewicht willekeurige verslechtering + Peso del tempo di deterioramento casuale Deteriorate After Treatment @@ -2883,6 +2964,7 @@ Voiko se pahentua hoidon jälkeen? Ухудшается после лечения Verslechterd na behandeling + Deterioramento dopo il trattamento PEA Chance @@ -2895,6 +2977,7 @@ Pulssittoman sähköisen toiminnan mahdollisuus Показатель точности безимпульсной электрической активности (PEA) PEA kans + Probabilità di attività elettrica senza polso (PEA) VT Chance @@ -2907,6 +2990,7 @@ Kammiotakykardian mahdollisuus Вероятность желудочковой тахикардии (VT) VT kans + Probabilità di tachicardia ventricolare (TV) Asystole blood loss threshold @@ -2919,6 +3003,7 @@ Asystolan vuoksi menetettävä veren määrä Порог кровопотери при асистолии Asystole bloedverlies drempelwaarde + Soglia di perdita di sangue per asistolia ROSC After CPR Chance @@ -2931,6 +3016,7 @@ ROSC elvytysmahdollisuuden jälkeen Шанс вернуться в спонтанное кровообращение после СЛР Kans voor ROSC na CPR (Terugkeer naar spontane circulatie) + Probabilità di ritorno alla circolazione spontanea dopo RCP ROSC After AED Chance @@ -2943,6 +3029,7 @@ ROSC AUD-mahdollisuuden jälkeen Шанс вернуться в спонтанное кровообращение после AED Kans voor ROSC na CPR (Terugkeer naar spontane circulatie) + Probabilità di ritorno alla circolazione spontanea dopo AED Hardcore Rhythms @@ -2955,6 +3042,7 @@ Vaikeat sydämen rytmit Интенсивность сердечного ритма Hardcore hartritmen + Ritmi cardiaci intensi Hardcore Deterioration Chance @@ -2967,6 +3055,7 @@ Vaikean sydämen rytmin heikkenemismahdollisuus Вероятность сильного ухудшения Hardcore verslechteringskans + Probabilità di deterioramento intenso Blood draw Settings @@ -3009,6 +3098,7 @@ AUD-X: PR: %1 BP: %2/%3 SpO2: %4 AED-X: ЧСС: %1 АД: %2/%3 SpO2: %4 AED-X: PR %1 BD: %2/%3 SpO2: %4 + AED-X: PR: %1 BP: %2/%3 SpO2: %4 AED-X: HR: %1 BP: %2/%3 SpO2: %4 @@ -3033,6 +3123,7 @@ DEA-X: RC: %1 PS: --/-- SpO2: --- ETCo2: %2 Respiraciones/min: %3 DEA-X: FC: %1 PA: --/-- SpO2: --- ETCo2: %2 Respirações/min: %3 AED-X: HR %1 BD: --/-- SpO2: --- ETCo2: %2 Ademhalingen/min: %3 + AED-X: HR: %1 BP: --/-- SpO2: --- ETCo2: %2 Respiri/min: %3 AED-X: PR: %1 BP: %2/%3 SpO2: %4 ETCo2: %5 Breaths/min: %6 @@ -3042,6 +3133,7 @@ DEA-X: RC: %1 PS: %2/%3 SpO2: %4 ETCo2: %5 Respiraciones/min: %6 DEA-X: FP: %1 PA: %2/%3 SpO2: %4 ETCo2: %5 Respirações/min: %6 AED-X: PR %1 BD: %2/%3 SpO2: %4 ETCo2: %5 Ademhalingen/min: %6 + AED-X: PR: %1 BP: %2/%3 SpO2: %4 ETCo2: %5 Respiri/min: %6 AED-X: HR: %1 BP: %2/%3 SpO2: %4 ETCo2: %5 Breaths/min: %6 @@ -3051,6 +3143,7 @@ DEA-X: RC: %1 PS: %2/%3 SpO2: %4 ETCo2: %5 Respiraciones/min: %6 DEA-X: FC: %1 PA: %2/%3 SpO2: %4 ETCo2: %5 Respirações/min: %6 AED-X: HR %1 BD: %2/%3 SpO2: %4 ETCo2: %5 Ademhalingen/min: %6 + AED-X: HR: %1 BP: %2/%3 SpO2: %4 ETCo2: %5 Respiri/min: %6 AED-X Vitals Monitor Sounds @@ -3063,6 +3156,7 @@ AUD-X terveysmonitorin ääni Звуки монитора жизненно важных функций AED-X Geluiden van de AED-X vitale waarde monitor + Suoni del monitor dei parametri vitali AED-X Original @@ -3075,6 +3169,7 @@ Alkuperäinen Оригинал Origineel + Originale Default @@ -3087,6 +3182,7 @@ Oletus По умолчанию Standaard + Predefinito AED-X alarm SpO2 threshold @@ -3113,6 +3209,7 @@ AUD-X terveysmonitorin verenpaineen mittausväli Интервал измерения артериального давления на мониторе AED-X AED-X vitale waarden monitor BD metingsinterval + Intervallo di misurazione BP del monitor dei parametri vitali AED-X Automatic Instant @@ -3125,6 +3222,7 @@ Automaattinen (välitön) Автоматический постоянный Automatisch direct + Automatico istantaneo Automatic (Interval) @@ -3137,6 +3235,7 @@ Automaattinen (väli) Автоматический (интервал) Automatisch (interval) + Automatico (Intervallo) Manual @@ -3149,6 +3248,7 @@ Manuaalinen Инструкция Handmatig + Manuale AED-X Vitals Monitor BP Measurement Interval Time @@ -3161,6 +3261,7 @@ AUD-X terveysmittarin verenpaineen mittausvälin aika Интервал измерения артериального давления на мониторе AED-X Tijd van de AED-X vitale waarde monitor BD metingsinterval + Tempo di intervallo di misurazione BP del monitor dei parametri vitali AED-X Cardiac Arrest Bleed Rate @@ -3173,6 +3274,7 @@ Verenvuoto sydämenpysähdyksen aikana Частота кровотечений после остановки сердца Bloedingsnelheid bij hartstilstand + Tasso di sanguinamento durante l'arresto cardiaco Chance for tamponade in penetrating wounds @@ -3182,6 +3284,7 @@ Chance de tamponnade au cours d'une blessure pénétrante Probabilidade de tamponamento em ferimentos penetrantes Kans voor tamponade door penetrerende wonden + Probabilità di tamponade in ferite penetranti Tamponade progression timer @@ -3191,6 +3294,7 @@ Timer de progression de la tamponnade Temporizador de progresso de tamponamento Tamponade progressie timer + Timer di progressione della tamponade Tamponade progression chance @@ -3200,6 +3304,7 @@ Chance de progression de la tamponnade Probabilidade de progressão de tamponamento Tamponade progressie kans + Probabilità di progressione della tamponade diff --git a/addons/feedback/XEH_PREP.hpp b/addons/feedback/XEH_PREP.hpp index 42df1399d..9af508f92 100644 --- a/addons/feedback/XEH_PREP.hpp +++ b/addons/feedback/XEH_PREP.hpp @@ -1,4 +1,6 @@ +PREP(effectCoughing); PREP(effectLowSpO2); PREP(effectOpioid); +PREP(effectTearHaze); PREP(handleEffects); -PREP(initEffects); \ No newline at end of file +PREP(initEffects); diff --git a/addons/feedback/functions/fnc_effectCoughing.sqf b/addons/feedback/functions/fnc_effectCoughing.sqf new file mode 100644 index 000000000..2a19cbf38 --- /dev/null +++ b/addons/feedback/functions/fnc_effectCoughing.sqf @@ -0,0 +1,47 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski & Digii + * Triggers the coughing effect. + * + * Arguments: + * 0: Enable + * 1: Intensity + * + * Return Value: + * None + * + * Example: + * [true, 0.5] call kat_feedback_fnc_effectCoughing; + * + * Public: No + */ + +params ["_enable", "_poisoned"]; +if (!_enable || !_poisoned) exitWith { + if (GVAR(airPoisoning) != -1) then { GVAR(airPoisoning) ppEffectEnable false; }; +}; +if (GVAR(airPoisoning) != -1) then { GVAR(airPoisoning) ppEffectEnable true; }; + +// Trigger effect every 2s +private _showNextTick = missionNamespace getVariable [QGVAR(showCoughNextTick), true]; +GVAR(showCoughNextTick) = !_showNextTick; +if (_showNextTick) exitWith {}; + +_unit say3D QEGVAR(chemical,cough_1); +addCamShake [3, 4, 0]; + +private _initialAdjust = []; +private _delayedAdjust = []; + +private _intensity = linearConversion [0, 1, 0.5, 0, 0.06, true]; +_initialAdjust = [_intensity, _intensity, true]; +_delayedAdjust = [_intensity * 0.15, _intensity * 0.15, true]; + +GVAR(airPoisoning) ppEffectAdjust _initialAdjust; +GVAR(airPoisoning) ppEffectCommit FX_COUGH_FADE_IN; + +[{ + params ["_adjust"]; + GVAR(airPoisoning) ppEffectAdjust _adjust; + GVAR(airPoisoning) ppEffectCommit FX_COUGH_FADE_OUT; +}, [_delayedAdjust], 3] call CBA_fnc_waitAndExecute; diff --git a/addons/feedback/functions/fnc_effectTearHaze.sqf b/addons/feedback/functions/fnc_effectTearHaze.sqf new file mode 100644 index 000000000..b58d3e165 --- /dev/null +++ b/addons/feedback/functions/fnc_effectTearHaze.sqf @@ -0,0 +1,26 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski & Digii + * Triggers the coughing effect. + * + * Arguments: + * 0: Enable + * 1: Intensity + * + * Return Value: + * None + * + * Example: + * [true, 0.5] call kat_feedback_fnc_effectCoughing; + * + * Public: No + */ + +params ["_enable", "_tear"]; +if (!_enable || _tear == 0) exitWith { + if (GVAR(tearHaze) != -1) then { GVAR(tearHaze) ppEffectEnable false; }; +}; +if (GVAR(tearHaze) != -1) then { GVAR(tearHaze) ppEffectEnable true; }; + +GVAR(tearHaze) ppEffectAdjust [1.5,0.3,0.3,1.02,1.02,1.02,1.02,0.05,0.01,0.05,0.01,0.1,0.1,0.2,0.2]; +GVAR(tearHaze) ppEffectCommit 0; diff --git a/addons/feedback/functions/fnc_handleEffects.sqf b/addons/feedback/functions/fnc_handleEffects.sqf index a178e9c77..53feac724 100644 --- a/addons/feedback/functions/fnc_handleEffects.sqf +++ b/addons/feedback/functions/fnc_handleEffects.sqf @@ -25,8 +25,10 @@ BEGIN_COUNTER(handleEffects); // - Current state info ------------------------------------------------------- private _opioid = GET_PP(ACE_player); -private _spO2 = GET_SPO2(ACE_player); +private _spO2 = GET_KAT_SPO2(ACE_player); private _unconscious = IS_UNCONSCIOUS(ACE_player); +private _poisoned = IS_AIRPOISONED(ACE_player); +private _tear = IN_TEARGAS(ACE_player); // - Visual effects ----------------------------------------------------------- @@ -37,5 +39,8 @@ private _unconscious = IS_UNCONSCIOUS(ACE_player); linearConversion [GVAR(effectLowSpO2), EGVAR(breathing,SpO2_dieValue), _spO2, 0, 1, true] ] call FUNC(effectLowSpO2); +[!_unconscious, _poisoned] call FUNC(effectCoughing); +[!_unconscious, _tear] call FUNC(effectTearHaze); + END_COUNTER(handleEffects); diff --git a/addons/feedback/functions/fnc_initEffects.sqf b/addons/feedback/functions/fnc_initEffects.sqf index ff0cbe28b..906106192 100644 --- a/addons/feedback/functions/fnc_initEffects.sqf +++ b/addons/feedback/functions/fnc_initEffects.sqf @@ -42,6 +42,22 @@ GVAR(opioidEffect) = [ // - Low SpO2 ----------------------------------------------------------- GVAR(lowSpO2) = [ "ColorCorrections", - 21370, + 213702, [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [0.33, 0.33, 0.33, 0], [0.55, 0.5, 0, 0, 0, 0, 4]] ] call _fnc_createEffect; + +GVAR(airPoisoning) = [ + "ChromAberration", + 213703, + [0, 0, true] +] call _fnc_createEffect; + +GVAR(tearHaze) = [ + "WetDistortion", + 213704, + [1, + 1, 1, + 4.10, 3.70, 2.50, 1.85, + 0.0054, 0.0041, 0.0090, 0.0070, + 0.5, 0.3, 10.0, 6.0] +] call _fnc_createEffect; diff --git a/addons/feedback/script_component.hpp b/addons/feedback/script_component.hpp index 334ceebe7..8f1e3109f 100644 --- a/addons/feedback/script_component.hpp +++ b/addons/feedback/script_component.hpp @@ -20,4 +20,7 @@ #define FX_OPIOD_FADE_OUT 0.7 #define FX_SPO2_FADE_IN 0.7 -#define FX_SPO2_FADE_OUT 1.6 \ No newline at end of file +#define FX_SPO2_FADE_OUT 1.6 + +#define FX_COUGH_FADE_IN 0.3 +#define FX_COUGH_FADE_OUT 0.7 diff --git a/addons/feedback/stringtable.xml b/addons/feedback/stringtable.xml index d7e3d2da9..4e7286b1f 100644 --- a/addons/feedback/stringtable.xml +++ b/addons/feedback/stringtable.xml @@ -32,11 +32,13 @@ Enable opioid effect オピオイド効果を有効化 + Abilita l'effetto degli oppioidi Activer l'effet opioïde Enables opioid effect on ketamine, fentanyl and pervitin ケタミン、フェンタニル、ペルビチンなどでオピオイドの効果を有効にします + Abilita l'effetto degli oppioidi su ketamina, fentanil e pervitina Permet un effet opioïde sur la kétamine, le fentanyl et la pervitine diff --git a/addons/gui/functions/fnc_onMenuOpen.sqf b/addons/gui/functions/fnc_onMenuOpen.sqf index 59742a629..18398cc1f 100644 --- a/addons/gui/functions/fnc_onMenuOpen.sqf +++ b/addons/gui/functions/fnc_onMenuOpen.sqf @@ -98,6 +98,10 @@ if (EGVAR(pharma,RequireInsIV) && EGVAR(pharma,IVflowControl)) then { (_display displayCtrl IDC_IV_FLOW_SHOWBUTTON) ctrlShow true; }; +if (EGVAR(circulation,abgEnable)) then { + (_display displayCtrl IDC_TEST_SHOWBUTTON) ctrlShow true; +}; + // Set toggle button icon and tooltip private _ctrl = _display displayCtrl IDC_TOGGLE; if (ACEGVAR(medical_gui,target) == ACE_player) then { diff --git a/addons/gui/functions/fnc_updateABGStatus.sqf b/addons/gui/functions/fnc_updateABGStatus.sqf index eea6d0861..b26b63e81 100644 --- a/addons/gui/functions/fnc_updateABGStatus.sqf +++ b/addons/gui/functions/fnc_updateABGStatus.sqf @@ -48,4 +48,4 @@ if (_ABGmenuShow) then { }; }; -} forEach [IDC_TEST_PACO2, IDC_TEST_PAO2, IDC_TEST_SPO2, IDC_TEST_HCO3, IDC_TEST_PH]; \ No newline at end of file +} forEach [IDC_TEST_PACO2, IDC_TEST_PAO2, IDC_TEST_SPO2, IDC_TEST_HCO3, IDC_TEST_PH]; diff --git a/addons/gui/gui.hpp b/addons/gui/gui.hpp index 5c94d09f8..4a10981b0 100644 --- a/addons/gui/gui.hpp +++ b/addons/gui/gui.hpp @@ -136,6 +136,7 @@ class ACE_Medical_Menu { y = QUOTE(POS_Y(1.1)); w = QUOTE(POS_W(9)); h = QUOTE(POS_H(3.3)); + show = 0; }; class ABGTitle: IVFlowTitle { idc = IDC_ABG_TITLE; // LOOK HERE @@ -144,7 +145,7 @@ class ACE_Medical_Menu { y = QUOTE(POS_Y(0)); w = QUOTE(POS_W(9)); h = QUOTE(POS_H(1)); - show = 1; + show = 0; class Attributes { color = "#E5E5E5"; font = "RobotoCondensed"; @@ -535,7 +536,7 @@ class ACE_Medical_Menu { y = QUOTE(POS_Y(0)); w = QUOTE(POS_W(4.2)); h = QUOTE(POS_H(1)); - show = 1; + show = 0; colorBackground[] = {0, 0, 0, 0}; colorBackgroundActive[] = {1, 1, 1, 0.4}; colorBackgroundDisabled[] = {0, 0, 0, 0}; diff --git a/addons/gui/gui_defines.hpp b/addons/gui/gui_defines.hpp index 6192eb7b2..470885a1d 100644 --- a/addons/gui/gui_defines.hpp +++ b/addons/gui/gui_defines.hpp @@ -143,4 +143,4 @@ #define IDC_TEST_SHOWBUTTON 71208 -#define IDC_ABG_BACKGROUND 71299 +#define IDC_ABG_BACKGROUND 71299 diff --git a/addons/gui/stringtable.xml b/addons/gui/stringtable.xml index 5ace01cf2..29bbca6e9 100644 --- a/addons/gui/stringtable.xml +++ b/addons/gui/stringtable.xml @@ -66,6 +66,7 @@ Ei lisätty nesteitä Никаких переливаний Geen toegediende vloeistoffen + Nessun fluido somministrato Overlay Selected Body Part @@ -79,6 +80,7 @@ Korosta valittu kehon osa Показать выбранную часть тела Omtrekking geselecteerd lichaamsdeel + Visualizza la parte del corpo selezionata Label Patient Sides @@ -92,12 +94,14 @@ Merkitse potilaan sivut Маркировка сторон пациента Label zijden van patiënt + Etichettare i lati del paziente HEAD - NO LINE HOOFD - GEEN LIJN CABEZA - SIN LINEA 頭部 - ライン無し + TESTA - SENZA LINEA Tête - pas de lignes @@ -105,6 +109,7 @@ TORSO - GEEN LIJN TORSO - SIN LINEA 胸部 - ライン無し + TORACE - SENZA LINEA Poitrine - pas de lignes @@ -112,6 +117,7 @@ RECHTERARM - GEEN LIJN BRAZO DERECHO - SIN LINEA 右腕 - ライン無し + BRACCIO DESTRO - SENZA LINEA Bras droit - pas de ligne @@ -119,6 +125,7 @@ LINKERARM - GEEN LIJN BRAZO IZQUIERDO - SIN LINEA 左腕 - ライン無し + BRACCIO SINISTRO - SENZA LINEA Bras gauche - pas de ligne @@ -126,6 +133,7 @@ RECHTERBEEN - GEEN LIJN PIERNA DERECHA - SIN LINEA 右脚 - ライン無し + GAMBA DESTRA - SENZA LINEA Jambe droite - pas de ligne @@ -133,6 +141,7 @@ LINKERBEEN - GEEN LIJN PIERNA IZQUIERDA - SIN LINEA 左脚 - ライン無し + GAMBA SINISTRA - SENZA LINEA Jambe gauche - pas de ligne @@ -140,6 +149,7 @@ IV-Stroomregeling Control de Flujo IV IV流量操作 + Controllo del flusso IV Fonctionnement du flux IV @@ -147,6 +157,7 @@ ABG resultaten Resultados ABG ABG 結果 + Risultati ABG Résultats de l'ABG. @@ -154,6 +165,7 @@ 0.0 0.0 0.0 + 0.0 0.0 @@ -161,6 +173,7 @@ Hoofd Cabeza 頭部 + Testa Tête @@ -168,6 +181,7 @@ IV IV IV + IV IV @@ -175,6 +189,7 @@ Torso Torso 胸部 + Torace Torse @@ -182,6 +197,7 @@ IV IV IV + IV IV @@ -189,6 +205,7 @@ LA BI 左腕 + BS LA @@ -196,6 +213,7 @@ IV IV IV + IV IV @@ -203,6 +221,7 @@ RA BD 右腕 + BD RA @@ -210,6 +229,7 @@ IV IV IV + IV IV @@ -217,6 +237,7 @@ LB PI 左脚 + GS LL @@ -224,6 +245,7 @@ IV IV IV + IV IV @@ -231,6 +253,7 @@ RB PD 右脚 + GB RL @@ -238,6 +261,7 @@ IV IV IV + IV IV @@ -245,6 +269,7 @@ --.- --.- --.- + --.- --.- @@ -252,6 +277,7 @@ Reset Restaurar リセット + Ripristina Réinitialiser diff --git a/addons/hypothermia/stringtable.xml b/addons/hypothermia/stringtable.xml index a1b361116..6ee487f91 100644 --- a/addons/hypothermia/stringtable.xml +++ b/addons/hypothermia/stringtable.xml @@ -24,6 +24,7 @@ Schakel hypothermie in Habilitar hipotermia 低体温症を有効化 + Abilita l'ipotermia Permettre l'hypothermie @@ -31,6 +32,7 @@ Handwarmer impact Impacto de Calentador de Manos ハンドウォーマーの影響 + Impatto dei riscaldatori per le mani Impact de la chaleur des mains @@ -38,6 +40,7 @@ Vermenigvuldiger voor de impact die handwarmers hebben op de stijging van temperatuur Multiplicador del impacto del calentador de manos en la ganancia de calor ハンドウォーマーが熱獲得に与える影響の乗数 + Moltiplicatore per l'impatto dei riscaldatori per le mani sull'aumento del calore Multipler pour l'impact des chauffe-mains sur le gain de chaleur @@ -45,6 +48,7 @@ Vloeistofverwarmer impact Impacto del Calentador de Fluidos 輸液ウォーマーの影響 + Impatto del riscaldatore per liquidi Réchauffeur de fluide Impact @@ -52,6 +56,7 @@ Vermenigvuldiger voor de impact die vloeistofverwarmers hebben op de stijging van temperatuur Multiplicador del impacto del calentador de fluidos en la ganancia de calor 輸液ウォーマーが熱獲得に与える影響の乗数 + Moltiplicatore per l'impatto del riscaldatore per liquidi sull'aumento del calore Multipler pour l'impact du réchauffement des fluides sur le gain de chaleur @@ -59,6 +64,7 @@ Warme uniformen Uniformes Calientes 暖かいユニフォーム + Uniformi riscaldate Uniformes chauds @@ -66,6 +72,7 @@ Lijst van kleding die temperatuurdalingen verminderen Listado de ropa marcada como reductora de la pérdida de calor 熱損失を減らすことが出来るとマークされた衣類のリスト + Elenco degli indumenti segnati che riducono la perdita di calore Liste des vêtements qui réduisent les chutes de température @@ -73,6 +80,7 @@ Check handwarmers Comprobar Calentadores de Manos ハンドウォーマーを確認する + Controlla i riscaldatori per le mani Vérifier les chauffe-mains @@ -80,6 +88,7 @@ Handwarmers Calentador de Manos ハンドウォーマー + Riscaldatore per le mani Chauffe-mains @@ -87,6 +96,7 @@ Kleine handwarmers die warmte bieden in koude klimaten Pequeños calentadores de manos para dar calor en climas fríos 寒冷地でも体を温めることが出来る小さなハンドウォーマー (懐炉) + Piccoli riscaldatori per le mani per fornire calore in climi freddi Petits chauffe-mains pour réchauffer les mains dans les climats plus froids @@ -94,6 +104,7 @@ Gebruik handwarmer Usar Calentador de Manos ハンドウォーマーを使用する + Usa il riscaldatore per le mani Utilisez des chauffe-mains. @@ -101,6 +112,7 @@ Dit is waar je handwarmers hebt en hoelang je denkt dat ze nog werken in minuten: %1, %2, %3, %4, %5 Aquí es donde tienes calentadores de manos y cuanto piensas que les queda de duración en minutos: %1, %2, %3, %4, %5 あなたが使用中の ハンドウォーマーの 位置と残り持続時間は 次の通りです (分単位): %1, %2, %3, %4, %5 + Ecco dove hai i riscaldatori per le mani e quanto tempo pensi che rimangano in minuti: %1, %2, %3, %4, %5 La position et la durée restante du chauffe-mains que vous utilisez sont les suivantes (en minutes) : %1, %2, %3, %4, %5 @@ -108,6 +120,7 @@ Deze patient heeft handwarmers op deze locaties en dit is hoelang ze ongeveer nog werken: %1, %2, %3, %4, %5 Este paciente tiene calentadores de manos y probablemente le duren muchos mas minutos en esos sitios: %1, %2, %3, %4, %5 この患者が使用中の ハンドウォーマーの 位置と残り持続時間は 次の通りです (分単位): %1, %2, %3, %4, %5 + Questo paziente ha riscaldatori per le mani e probabilmente dureranno ancora questi minuti in queste posizioni: %1, %2, %3, %4, %5 La position et la durée restante du chauffe-main utilisé par ce patient sont les suivantes (en minutes) : %1, %2, %3, %4, %5 @@ -115,6 +128,7 @@ IV-lijn verwarmers Calentador de Línea de Fluidos 輸液ラインウォーマー + Riscaldatore per linea endovenosa Chauffe-ligne fluide @@ -122,13 +136,15 @@ Verwarmt IV-vloeistoffen. Moet geplaatst worden op een al aangelegde lijn. Provee calor a los fluidos IV. Deben ser colocados en una línea ya existentes IVの輸液を温めます。既存のライン上に配置する必要があります - Permet de chauffer les fluides IV. Doit être placé sur une ligne déjà existante + Fornisce riscaldamento ai liquidi IV. Deve essere posizionato su una linea già esistente + Permet de chauffer les fluides IV. Doit être placé sur une ligne déjà existante Attach Fluid Warmer Maak vloeistofverwarmer vast Poner Calentador de Fluidos 輸液ウォーマーを取り付ける + Attacca il riscaldatore per liquidi Attacher le réchauffeur de fluide @@ -136,6 +152,7 @@ Maak vloeistofverwarmer los Quitar Calentador de Fluidos 輸液ウォーマーを取り外す + Rimuovi il riscaldatore per liquidi Enlever le réchauffeur de fluide @@ -143,6 +160,7 @@ Patiënt voelt ijskoud aan El paciente se siente frígido 患者は凍ったように冷たく感じます + Il paziente sente gelato Le patient se sent frigorifié @@ -150,6 +168,7 @@ Patiënt voel opmerkelijk koud aan El paciente se siente realmente frío 患者は著しく冷たく感じます + Il paziente sente notevolmente freddo Le patient a une sensation de froid intense @@ -157,6 +176,7 @@ Patiënt voelt redelijk koud aan El paciente se siente moderadamente frío 患者は少し冷たく感じます + Il paziente sente moderatamente freddo Le patient a modérément froid @@ -164,6 +184,7 @@ Patiënt voelt een klein beetje koud aan El paciente se siente algo frío 患者は少しひんやりと感じます + Il paziente sente lievemente fresco Le patient ressent une légère fraîcheur @@ -171,6 +192,7 @@ Patiënt voelt warm aan El paciente se siente cálido 患者は暖かく感じます + Il paziente sente caldo Le patient ressent de la chaleur @@ -178,6 +200,7 @@ Check temperatuur Comprobar Temperatura 体温を確認 + Controlla la temperatura Vérifier la température @@ -185,6 +208,7 @@ Temperatuur wordt gecheckt ComprobandoTemperatura 体温をチェックしています + Controllo della temperatura in corso La température est vérifiée @@ -192,6 +216,7 @@ Check handwarmers Comprobar Calentadores de Mano ハンドウォーマーをチェックします + Controlla i riscaldatori per le mani Vérifier les chauffe-mains. @@ -199,6 +224,7 @@ Wordt uitgevoerd Realizando 適用中 + Esecuzione in corso En cours de mise en place @@ -206,6 +232,7 @@ Lijnwarmer actief Calentador de Línea Activo ラインウォーマーを利用中 + Riscaldatore per linea attivo Chauffe-lignes en service. @@ -213,6 +240,7 @@ Momenteel zijn er geen handwarmers actief No hay calentadores de mano activos actualmente 現在ハンドウォーマーは使っていません + Nessun riscaldatore per le mani è attivo in questo momento Les chauffe-mains ne sont pas utilisés actuellement. @@ -220,6 +248,7 @@ Torso: %1 Cuerpo: %1 胴体: %1 + Corpo: %1 Corps : %1 @@ -227,6 +256,7 @@ Torso: Geen Cuerpo: Ninguno 胴体: なし + Corpo: Nessuno Corps : Aucun @@ -234,6 +264,7 @@ Linkerarm: %1 Brazo Izquierdo: %1 左腕: %1 + Braccio Sinistro: %1 Bras gauche : %1 @@ -241,6 +272,7 @@ Linkerarm: Geen Brazo Izquierdo: Ninguno 左腕: なし + Braccio Sinistro: Nessuno Bras gauche : aucun @@ -248,6 +280,7 @@ Rechterarm: %1 Brazo Derecho: %1 右腕: %1 + Braccio Destro: %1 Bras droit : %1 @@ -255,6 +288,7 @@ Rechterarm: Geen Brazo Derecho: Ninguno 右腕: なし + Braccio Destro: Nessuno Bras droit : aucun @@ -262,6 +296,7 @@ Linkerbeen: %1 Pierna Izquierda: %1 左脚: %1 + Gamba Sinistra: %1 Jambe gauche : %1 @@ -269,6 +304,7 @@ Linkerbeen: Geen Pierna Izquierda: Ninguno 左脚: なし + Gamba Sinistra: Nessuna Jambe gauche : aucune @@ -276,6 +312,7 @@ Rechterbeen: %1 Pierna Derecha: %1 右脚: %1 + Gamba Destra: %1 Jambe droite : %1 @@ -283,6 +320,7 @@ Rechterbeen: Geen Pierna Derecha: Ninguno 右脚: なし + Gamba Destra: Nessuna Jambe droite : non diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index d18adf1f7..a0396d871 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -186,7 +186,7 @@ #undef GET_SM_STATE #define GET_SM_STATE(_unit) ([_unit, ACEGVAR(medical,STATE_MACHINE)] call CBA_statemachine_fnc_getCurrentState) -#undef GET_BLOOD_VOLUME +#undef GET_BLOOD_VOLUME #define GET_OPIOID_FACTOR(unit) (unit getVariable [QEGVAR(pharma,opioidFactor), 0]) #define GET_PAIN_PERCEIVED(unit) (0 max ((GET_PAIN(unit) - GET_PAIN_SUPPRESS(unit)) min 1)) @@ -307,7 +307,7 @@ #define GET_BLOOD_GAS(unit) (unit getVariable [VAR_BLOOD_GAS, DEFAULT_BLOOD_GAS]) #define GET_PAO2(unit) ((unit getVariable [VAR_BLOOD_GAS, DEFAULT_BLOOD_GAS]) select 1) -#define GET_SPO2(unit) (((unit getVariable [VAR_BLOOD_GAS, DEFAULT_BLOOD_GAS]) select 2) * 100) +#define GET_KAT_SPO2(unit) (((unit getVariable [VAR_BLOOD_GAS, DEFAULT_BLOOD_GAS]) select 2) * 100) #define GET_PH(unit) ((unit getVariable [VAR_BLOOD_GAS, DEFAULT_BLOOD_GAS]) select 4) #define GET_ETCO2(unit) ((unit getVariable [VAR_BLOOD_GAS, DEFAULT_BLOOD_GAS]) select 5) #define GET_BREATHING_RATE(unit) (unit getVariable [VAR_BREATHING_RATE, 15]) @@ -340,3 +340,6 @@ //Feedback #define VAR_PP QEGVAR(feedback,ppEffect) #define GET_PP(unit) (unit getVariable [VAR_PP, 0]) + +#define IS_AIRPOISONED(unit) (unit getVariable [QEGVAR(chemical,airPoisoning), false]) +#define IN_TEARGAS(unit) (unit getVariable [QEGVAR(chemical,CSGas), 0]) diff --git a/addons/misc/stringtable.xml b/addons/misc/stringtable.xml index dcdc9bfaf..b532cc640 100644 --- a/addons/misc/stringtable.xml +++ b/addons/misc/stringtable.xml @@ -10,6 +10,7 @@ Equipement KAT Equipamento KAT KAT apparatuur + Equipaggiamento KAT ACE-Misc activated? @@ -864,6 +865,7 @@ (IFAK) Индивидуальная аптечка первой помощи (KPSI) Kit de Primeiros Socorros Individual (IFAK) Individuele Eerste hulpkit + (IFAK) Kit di Pronto Soccorso Individuale (MFAK) Multiple First Aid Kit @@ -875,6 +877,7 @@ (MFAK) Многофункциональная аптечка первой помощи (KPSM) Kit de Primeiros Socorros Múltiplo (MFAK) Meervoudige Eerste hulpkit + (MFAK) Kit di Pronto Soccorso Multiplo (AFAK) Advanced First Aid Kit @@ -886,6 +889,7 @@ (AFAK) Усовершенствованная аптечка первой помощи (KPSA) Kit de Primeiros Socorros Avançado (AFAK) Geadvanceerde Eerste hulpkit + (AFAK) Kit di Pronto Soccorso Avanzato Items unload Container @@ -896,6 +900,7 @@ Säiliö tavaroiden purkamiseen Предметы выгружаются с контейнера Items ontlaad container + Contenitore per scaricare gli articoli Defines where the items from the First Aid Kit are added into. If there is no space left they will be dropped on the ground. \n Default: Items are added where space is left. @@ -906,6 +911,7 @@ Määrittää, mihin ensiapulaukun tuotteet lisätään. jos tilaa ei ole jäljellä, ne pudotetaan maahan. \n Oletus: kohteet lisätään sinne, missä on vielä tilaa. Определяет, куда складываются предметы из аптечки первой помощи. Если не останется свободного места, они будут брошены на землю. \n По умолчанию: Предметы добавляются туда, где осталось свободное место. Bepaald waar de items van een Eerste hulpkit worden geplaatst. Als er geen plek is, worden ze op de grond geplaatst. \n Standaard: Items worden geplaatst waar plek is. + Definisce dove gli articoli del Kit di Pronto Soccorso vengono aggiunti. Se non c'è spazio disponibile, verranno lasciati a terra. \n Predefinito: Gli articoli vengono aggiunti dove c'è spazio. Default @@ -916,6 +922,7 @@ Oletus По умолчанию Standaard + Predefinito Uniform @@ -926,6 +933,7 @@ Univormu Униформа Uniform + Uniforme Vest @@ -936,6 +944,7 @@ Liivi Жилет Vest + Gibernaggio Backpack @@ -946,6 +955,7 @@ Reppu Рюкзак Rugzak + Zaino The items & quantity that is given to the player.\n If you want to add/change items remove existing entry & insert item name-tag & quantity you want. \n Example: [['ACE_packingBandage', 10], ['ACE_quikclot', 15]] TO [['ACE_packingBandage', 10], ['ACE_quikclot', 15], ['ACE_Banana', 10]] @@ -956,6 +966,7 @@ Pelaajalle annetut tuotteet ja määrä. \n Jos haluat lisätä/muuttaa kohteita, poista olemassa oleva merkintä ja lisää haluamasi nimikkeen nimilappu ja nimikemäärä. \n Esimerkki: [[`ACE_packingBandage`, 10]. Предметы и количество, которые выдаются игроку.\n Если вы хотите добавить / изменить предметы, удалите существующую запись и вставьте название предмета-тег и количество, которое вы хотите. \n Пример: [['ACE_packingBandage', 10], ['ACE_quikclot', 15]] В [['ACE_packingBandage', 10], ['ACE_quikclot', 15], ['ACE_Banana', 10]] De items en de hoeveelheid dat gegeven wordt aan de speler. \n Als je items wilt toevoegen of veranderen, verwijder dan de bestaande entree en voeg item naam en de hoeveelheid die je wilt in. \n Voorbeeld: [['ACE_packingBandage', 10], ['ACE_quikclot', 15]] NAAR [['ACE_packingBandage', 10], ['ACE_quikclot', 15], ['ACE_Banana', 10]] + Gli articoli e la quantità che vengono dati al giocatore. \n Se desideri aggiungere/cambiare articoli, rimuovi la voce esistente e inserisci il nome dell'articolo con il tag e la quantità che desideri. \n Esempio: [['ACE_packingBandage', 10], ['ACE_quikclot', 15]] A [['ACE_packingBandage', 10], ['ACE_quikclot', 15], ['ACE_Banana', 10]] Trauma Section Items & Quantity @@ -965,6 +976,7 @@ Предметы и количество травматологического раздела Objets et quantité de la section de traumatologie Trauma sectie items & hoeveelheden + Articoli e quantità della sezione trauma Bandage Section Items & Quantity @@ -974,6 +986,7 @@ Предметы и количество в разделе бинтов Objets et quantité de la section de bandages Verbandssectie items & hoeveelheden + Articoli e quantità della sezione bende Pain Management Section Items & Quantity @@ -983,6 +996,7 @@ Предметы и количество раздела обезболивающих Objets et quantité de la section de régulation de la douleur Pijnbestrijdingssectie items & hoeveelheden + Articoli e quantità della sezione gestione del dolore Breathing Section Items & Quantity @@ -992,6 +1006,7 @@ Предметы и количество раздела дыхательной системы Objets et quantité de la section d'articles respiratoires Ademhalingssectie items & hoeveelheden + Articoli e quantità della sezione respirazione Airway Section Items & Quantity @@ -1001,6 +1016,7 @@ Предметы и количество раздела дыхательных путей Objets et quantité de la section des voies aériennes Luchtweg sectie items & hoeveelheden + Articoli e quantità della sezione vie aeree Pharmaceutical Section Items & Quantity @@ -1010,6 +1026,7 @@ Предметы и количество раздела фармацевтики Objets et quantités de la section pharmaceutique Pharmaceutische sectie items & hoeveelheden + Articoli e quantità della sezione farmaceutica Fluid Section Items & Quantity @@ -1019,6 +1036,7 @@ Предметы и количество раздела жидкостей Objets et quantités de la section des fluides Vloeistofsectie items & hoeveelheden + Articoli e quantità della sezione fluidi Miscellaneous Section Items & Quantity @@ -1028,6 +1046,7 @@ Предметы и количества прочего раздела Objets et quantités de la section autres Overige sectie items & hoeveelheden + Articoli e quantità della sezione miscellanea Individual First Aid Kit @@ -1039,6 +1058,7 @@ Индивидуальная аптечка первой помощи Kit de Primeiros Socorros Individual Individuele Eerste hulpskit + Kit di Primo Soccorso Individuale (IFAK) The IFAK can be unpacked to provide useful medical items @@ -1050,6 +1070,7 @@ IFAK можно распаковать, чтобы получить полезные медицинские принадлежности O KPSI pode ser desembalado para prover itens médicos úteis De IFAK kan uitgepakt worden om nuttige producten te verschaffen + Il IFAK può essere disimballato per fornire articoli medici utili Multiple First Aid Kit @@ -1061,6 +1082,7 @@ Многофункциональная аптечка первой помощи Kit de Primeiros Socorros Múltiplo Meervoudige Eerste hulpskit + Kit di Primo Soccorso Multiplo (MFAK) The MFAK can be unpacked to provide useful medical items @@ -1072,6 +1094,7 @@ MFAK можно распаковать, чтобы получить полезные медицинские принадлежности O KPSM pode ser desembalado para prover itens médicos úteis De MFAK kan uitgepakt worden om nuttige producten te verschaffen + Il MFAK può essere disimballato per fornire articoli medici utili Advanced First Aid Kit @@ -1083,6 +1106,7 @@ Усовершенствованная аптечка первой помощи Kit de Primeiros Socorros Avançado Geadvanceerde Eerste hulpskit + Kit di Primo Soccorso Avanzato (AFAK) The AFAK can be unpacked to provide useful medical items @@ -1094,6 +1118,7 @@ AFAK можно распаковать, чтобы получить полезные медицинские принадлежности O KPSA pode ser desembalado para prover itens médicos úteis de AFAK kan uitgepakt worden om nuttige producten te verschaffen + Il AFAK può essere disimballato per fornire articoli medici utili IFAK @@ -1105,6 +1130,7 @@ IFAK KPSI IFAK + IFAK MFAK @@ -1116,6 +1142,7 @@ MFAK KPSM MFAK + MFAK AFAK @@ -1127,6 +1154,7 @@ AFAK KPSA AFAK + AFAK View Packing List @@ -1138,6 +1166,7 @@ Voir la liste de remplissage Ver lista Zie paklijst + Visualizza la lista di imballaggio Trauma Section: @@ -1149,6 +1178,7 @@ Section de traumatologie : Seção de trauma: Trauma sectie: + Sezione Trauma: Bandage Section: @@ -1160,6 +1190,7 @@ Section de bandages : Seção de bandagens: Verbandssectie: + Sezione Bende: Pain Management Section: @@ -1171,6 +1202,7 @@ Section de régulation de la douleur : Seção de gerenciamento de dor: Pijnbestrijdingssectie: + Sezione Gestione del Dolore: Breathing Section: @@ -1182,6 +1214,7 @@ Section d'articles respiratoires : Seção de respiração: Ademhalingssectie: + Sezione Respirazione: Airway Section: @@ -1193,6 +1226,7 @@ Section des voies aériennes : Seção de vias aéreas: Luchtweg sectie: + Sezione Vie Aeree: Pharmaceutical Section: @@ -1204,6 +1238,7 @@ Section pharmaceutique : Seção farmacêutica: Pharmaceutische sectie: + Sezione Farmaceutica: Fluid Section: @@ -1215,6 +1250,7 @@ Section des fluides : Seção de flúidos: Vloeistofsectie: + Sezione Fluidi: Miscellaneous Section: @@ -1226,6 +1262,7 @@ Sections autres : Seção miscelânea: Overige sectie: + Sezione Miscellanea: Unpack Trauma Section @@ -1237,6 +1274,7 @@ Déballer la section de traumatologie Descompactar seção de trauma Pak trauma sectie uit + Sblocca la Sezione Trauma Unpack Bandage Section @@ -1248,6 +1286,7 @@ Déballer la section de bandages Descompactar seção de bandagem Pak verbandssectie uit + Sblocca la Sezione Bende Unpack Pain Management Section @@ -1259,6 +1298,7 @@ Déballer la section de régulation de la douleur Descompactar seção de gerenciamento de dor Pak pijnbestrijdingssectie uit + Sblocca la Sezione Gestione del Dolore Unpack Breathing Section @@ -1270,6 +1310,7 @@ Déballer la section d'articles respiratoires Descompactar seção de respiração Pak ademhalingssectie uit + Sblocca la Sezione Respirazione Unpack Airway Section @@ -1281,6 +1322,7 @@ Déballer la section des voies aériennes Descompactar seção de vias aéreas Pak luchtweg sectie uit + Sblocca la Sezione Vie Aeree Unpack Pharmaceutical Section @@ -1292,6 +1334,7 @@ Déballer la section pharmaceutique Descompactar seção farmacêutica Pak pharmaceutische sectie uit + Sblocca la Sezione Farmaceutica Unpack Fluid Section @@ -1303,6 +1346,7 @@ Déballer la section des fluides Descompactar seção de fluidos Pak vloeistoffen sectie uit + Sblocca la Sezione Fluidi Unpack Miscellaneous Section @@ -1314,6 +1358,7 @@ Déballer la section autres Descompactar seção miscelânea Pak overige sectie uit + Sblocca la Sezione Miscellanea Repack Trauma Section @@ -1325,6 +1370,7 @@ Remballer la section de traumatologie Compactar seção de trauma Herpak trauma sectie + Rimballa la Sezione Trauma Repack Bandage Section @@ -1336,6 +1382,7 @@ Remballer la section de bandages Compactar seção de bandagem Herpak verbandssectie + Rimballa la Sezione Bende Repack Pain Management Section @@ -1347,6 +1394,7 @@ Remballer la section de régulation de la douleur Compactar seção de gerenciamento de dor Herpack pijnbestrijdingssectie + Rimballa la Sezione Gestione del Dolore Repack Breathing Section @@ -1358,6 +1406,7 @@ Remballer la section d'articles respiratoires Compactar seção de respiração Herpack ademhalingssectie + Rimballa la Sezione Respirazione Repack Airway Section @@ -1369,6 +1418,7 @@ Remballer la section des voies aériennes Compactar seção de vias aéreas Herpack luchtweg sectie + Rimballa la Sezione Vie Aeree Repack Pharmaceutical Section @@ -1380,6 +1430,7 @@ Remballer la section pharmaceutique Compactar seção farmacêutica Herpak pharmaceutische sectie + Rimballa la Sezione Farmaceutica Repack Fluid Section @@ -1391,6 +1442,7 @@ Remballer la section des fluides Compactar seção de fluidos Herpak vloeistoffen sectie + Rimballa la Sezione Fluidi Repack Miscellaneous Section @@ -1402,6 +1454,7 @@ Remballer la section autres Compactar seção miscelânea Herpak overige sectie + Rimballa la Sezione Miscellanea Hint Item Color @@ -1412,6 +1465,7 @@ Подсказка по цвету элемента Couleur d'indice de l'objet kleur van itemhint + Colore dell'Articolo Suggerito The item color of the text that is displayed via a hint @@ -1422,6 +1476,7 @@ Цвет элемента текста, отображаемого с помощью подсказки La couleur de l'objet du texte affiché via un indice De kleur van de tekstitem die weergeven wordt via een hint + Il colore dell'articolo del testo che viene mostrato tramite un suggerimento Hint Section Color @@ -1431,6 +1486,7 @@ Цвет раздела подсказок Couleur d'indice de la section Hint sectie kleur + Colore della Sezione Suggerita The Section color of the text that is displayed via a hint @@ -1440,6 +1496,7 @@ Цвет раздела текста, отображаемого с помощью подсказки La couleur de la section du texte affiché via un indice De kleur van de sectie die weergeven wordt met een hint + Il colore della sezione del testo che viene mostrato tramite un suggerimento Remove when empty @@ -1450,6 +1507,7 @@ Poista tyhjänä Удалить, когда опустеет Verwijder wanneer leeg + Rimuovi quando vuoto Carry Patient @@ -1462,6 +1520,7 @@ Kanna potilasta Нести пациента Draag patiënt + Trasporta il paziente Cancel Carrying @@ -1474,6 +1533,7 @@ Peruuta potilaan kuljettaminen Прекратить нести Dragen annuleren + Annulla il Trasporto Stopped carrying %1 @@ -1486,6 +1546,7 @@ Lakkasi kantamisen %1 Прекратил нести %1 Gestopt met het dragen van %1 + Trasporto interrotto di %1 Use Surgical Kit (Full Body) @@ -1496,6 +1557,7 @@ Utiliser la trousse chirurgicale (Corps complet) Utilizar kit cirúrgico (corpo inteiro) Gebruik chirurgische kit (volledig lichaam) + Usa il Kit Chirurgico (Corpo Intero) Enable Full Body Stitching @@ -1504,6 +1566,7 @@ 全身縫合を有効化 Activer la suture complète du corps Schakel hechten van het volledige lichaam in + Abilita la Cucitura del Corpo Intero Adds a full-body stitching option alongside the individual body part stitching, using ACE's established settings and values for consistency @@ -1512,6 +1575,7 @@ 身体部位毎に縫合するアクションに加え、ACEの設定値と同様の動きを保ったままの、全身を一括で縫合するオプションを追加します。 Ajoute une option de suture complète du corps à côté de la suture de chaque partie du corps, en utilisant les paramètres et les valeurs établis par ACE pour plus de cohérence Voegt een hechtingsactie toe voor het gehele lichaam, naast de standaard individuele hechtingsopties, die de waarden en instellingen van ACE gebruikt voor consistentie + Aggiunge un'opzione di cucitura del corpo intero insieme alla cucitura dei singoli arti, utilizzando le impostazioni e i valori stabiliti di ACE per coerenza diff --git a/addons/pharma/stringtable.xml b/addons/pharma/stringtable.xml index 85ab71647..b3ee8427d 100644 --- a/addons/pharma/stringtable.xml +++ b/addons/pharma/stringtable.xml @@ -178,6 +178,7 @@ Paquete de medicación para heridas de combate. Se utiliza para suprimir el dolor leve y aliviar los síntomas de incompatibilidad sanguínea Gevechts wond medicatie pil pak<br/>Wordt gebruikt om milde pijn en bloed incompatibiliteit op te lossen Pack de Pilules Médicales pour Blessures de Combat </br> Utilisé pour supprimer les douleurs mineures et soulager les symptômes d'incompatibilité sanguine. + Pacchetto di Pillole per Medicazioni da Combattimento<br/>Usato per sopprimere il dolore lieve e alleviare i sintomi di incompatibilità del sangue Combat Pill Pack @@ -186,6 +187,7 @@ Comprimidos de Combate Gevechtspillendoosje Pack de Pilules de combat + Pacchetto di Pillole da Combattimento Use CWMP @@ -195,6 +197,7 @@ Utilizar Comprimidos de Combate Gebruik Gevechtspillendoosje Utiliser le PMBC + Usa il Pacchetto di Pillole da Combattimento (CWMP) Used to restore consciousness @@ -261,6 +264,7 @@ Penthrox inhalaattori Ингалятор Пентрокс Penthrox inhalator + Inalatore Penthrox Use Penthrox Inhaler @@ -274,6 +278,7 @@ Käytä penthrox-inhalaattoria Использовать ингалятор Пентрокс Gebruik Penthrox inhalator + Usa l'Inalatore Penthrox Volatile anesthetic, used to suppress moderate pain @@ -281,6 +286,7 @@ Anestésico inhalable, utilizado para suprimir el dolor moderado volatiel anestheticum, wordt gebruik om stevige pijn te onderdrukken Anesthésique volatil, utilisé pour supprimer les douleurs modérées + Anestetico volatile, usato per sopprimere il dolore moderato Used to reverse opioid overdoses @@ -668,10 +674,12 @@ Autoinjecteur de Phényléphrine Autoinjetor de Fenilefrina Fenylefrine autoinjector + Autoiniettore di Fenilefrina Used to raise blood pressure 血圧を上げるために使用される + Usato per aumentare la pressione sanguigna Utilisé pour augmenter la pression artérielle @@ -1113,6 +1121,7 @@ Les fluides nécessitent une IV/IO insérée Fluido necessita de inserção IV/IO Vloeistoffen vereisen een aangelegde IV/IO + Fluido richiede IV/IO inserito Default false. If true, you will need to insert IV/IO first before being able to give someone saline/blood/plasma. \nIf false, it retains standard ACE behaviour for using saline/blood/plasma. @@ -1173,6 +1182,7 @@ La prise de sang nécessite une IV/IO Extração de sangue necessita de IV/IO Bloedoptrekken vereist IV/IO + Prelievo di sangue richiede IV/IO Default false. If true, you will need to insert IV/IO first before being able to draw blood from someone. \nIf false, you can draw without it. @@ -1183,15 +1193,18 @@ Désactivé par défaut. Si activé, vous devrez d’abord insérer une IV/IO avant de pouvoir prélever du sang sur quelqu’un. \nSi désactivé, vous pouvez effectuer une prise de sang sans IV/IO. Desativado, por padrão. Quando ativado, você precisará inserir IV/IO primeiro antes de poder retirar sangue de alguém. \nSe desativado, você pode retirar sem ele. Standaard vals. Wanneer waar moet er eerst een IV/IO toegediend worden voordat je bloed kan optrekken. \nWanneer vals is dit niet vereist. + Impostazione predefinita falsa. Se vera, dovrai inserire prima IV/IO prima di poter prelevare sangue da qualcuno. \nSe falsa, puoi prelevare senza di esso. Enable IV/IO Flow Control IV/IO流量操作を有効化 + Abilita il controllo del flusso IV/IO Activer les opérations de flux IV/IO Enables the IV/IO flow control menu which gives the medic fine control over the volume running through the active line IV/IO流量操作メニューを有効にし、輸液がラインを流れる液量を衛生兵が細かく制御できるようにします。 + Abilita il menu di controllo del flusso IV/IO che consente al medico di controllare con precisione il volume che scorre attraverso la linea attiva. Active le menu de contrôle du débit IV/IO qui permet à l'infirmier de contrôler finement le volume circulant dans la ligne active. @@ -1608,6 +1621,7 @@ Anestésico disociativo, utilizado para suprimir el dolor severo Dissociatieve anestheticum, wordt gebruikt om ernstige pijn te onderdrukken Anesthésiques dissociatifs, utilisés pour supprimer les douleurs sévères + Anestetici dissociativi, usati per sopprimere il dolore severo Push Fentanyl @@ -1648,6 +1662,7 @@ Analgésico opioide, utilizado para suprimir el dolor severo Opïode analgeticum, wordt gebruikt om ernstige pijn te onderdrukken Analgésique opioïde, utilisé pour supprimer les douleurs sévères + Analgesico oppioide, usato per sopprimere il dolore severo Push Nalbuphine @@ -1688,6 +1703,7 @@ Analgésico opioide, utilizado para suprimir el dolor moderador Opïode analgeticum, wordt gebruikt om matige pijn te onderdrukken Analgésique opioïde, utilisé pour supprimer les douleurs modérées + Analgesico oppioide, usato per sopprimere il dolore moderato Maximum Reorientation Success Chance @@ -2274,6 +2290,7 @@ Lääketieteellinen koulutustaso vaatii penthrox-inhalaattorin Медицинский уровень, необходимый для использования ингалятора Пентрокс Medisch niveau benodigd voor het gebruik van Penthrox inhalators + Livello medico richiesto per l'inalatore Penthrox Treatment time for Penthrox Inhaler @@ -2286,6 +2303,7 @@ Penthrox-inhalaattorin hoitoaika Время обработки ингалятором Пентрокс Behandeltijd van Penthrox inhalators + Tempo di trattamento per l'inalatore Penthrox Basic Settings @@ -2648,6 +2666,7 @@ Penthrox-inhalaattorin asetukset Настройки ингалятора Пентрокс Penthrox inhalator instellingen + Impostazioni dell'inalatore Penthrox %1 performed a saline flush @@ -2660,6 +2679,7 @@ %1 suoritti suolaliuoksen huuhtelun %1 провел промывание физиологическим раствором %1 voerde een salinespoeling uit + %1 ha eseguito un lavaggio salino Patient's IV is blocked @@ -2873,6 +2893,7 @@ Fármaco para mejorar el rendimiento, utilizado para suprimir el dolor moderado Prestatieverhogend medicijn, wordt gebruikt om matige pijn te onderdrukken Drogue améliorant les performances, utilisée pour supprimer les douleurs modérées + Farmaco migliorante le prestazioni, utilizzato per sopprimere il dolore moderato Take Pervitin @@ -3047,6 +3068,7 @@ Estimula el sistema nervioso central y aporta energía. Stimuleert het centraal zenuwstelsel en geeft energie Stimule le système nerveux central et revitalise + Stimola il sistema nervoso centrale e aumenta l'energia Take Caffeine @@ -3216,6 +3238,7 @@ Lääkitys muuttaa kestävyyttä Лекарства изменяют выносливость Medicatie heeft invloed op uithoudingsvermogen + Il farmaco modifica la resistenza Allow certain medications to modify (vanilla/advanced fatigue) stamina as a side effect @@ -3228,6 +3251,7 @@ Salli tiettyjen lääkkeiden muuttaa kestävyyttä (vanilja/edistynyt väsymys) sivuvaikutuksena Позволяют определенным лекарствам изменять выносливость (ваниль/повышенная утомляемость) в качестве побочного эффекта Bepaald of sommige medicijnen het uithoudingsvermogen (vanilla/geadvanceerde uitputting) beïnvloeden als een bijwerking + Consenti a determinati farmaci di modificare la resistenza (fatica normale/avanzata) come effetto collaterale EACA Clears Trauma @@ -3237,6 +3261,7 @@ L'EACA soigne les traumatismes EACA Remove Traumas EACA verwijderd trauma + EACA elimina il trauma Allows Trauma to be cleared by EACA in addition to stitching @@ -3246,6 +3271,7 @@ Autorise le soin complet des traumatismes par l'EACA en plus de la suture Permite que o EACA remova traumas além de suturar Staat toe dat EACA trauma verwijderd, als additie van hechten + Consente al trauma di essere rimosso da EACA oltre alla sutura. Allow Stacking @@ -3253,6 +3279,7 @@ Permitir acumulación Sta stapelen toe Autoriser l'empilage + Permetti l'impilamento If enabled TXA will be stackable and double it's efficiency @@ -3260,6 +3287,7 @@ Si el ATX esta permitido, se podrá acumular y duplicará su eficiencia Wanneer ingeschakeld: sta het stapelen van TXA toe, wat de effectiviteit verdubbeld) Si activé, le TXA sera empilable et doublera son efficacité + Se abilitato, il TXA sarà impilabile e raddoppierà la sua efficienza Keep Bandaging Until Out Of System @@ -3267,6 +3295,7 @@ Mantiene el Vendaje hasta que desaparezca del organismo Blijf verbinden tot uit het systeem Continuer à bander jusqu'à ce que le produit soit éliminé du système + Continua a fasciarti finché non esce dal sistema If enabled TXA will keep bandaging until it's out of your system\nIf disabled TXA will stop working after bandaging the last wound it can find @@ -3274,6 +3303,7 @@ Si el ATX esta permitido, seguirá vendando hasta que desaparezca del organismo\nSi el ATX no esta permitido, dejará de funcionar después de vendar la última herida que pueda encontrar Wanneer ingeschakeld: TXA blijft verbinden tot het uit jouw systeem is.\nWanneer uitgeschakeld: TXA Stopt met werken wanneer alle wonden gedicht zijn. Si activé, le TXA continuera à bander jusqu'à ce qu'il soit éliminé du système.\nSi désactivé, le TXA cessera de fonctionner après avoir bandé la dernière plaie qu'il peut trouver. + Se abilitato, TXA continuerà a fasciarsi finché non sarà eliminato dal sistema.\nSe disabilitato, TXA smetterà di funzionare dopo aver fasciato l'ultima ferita che trova. TXA Cycle Time @@ -3281,6 +3311,7 @@ Ciclo de tiempo del ATX TXA cyclustijd Temps de cycle du TXA + Tempo del ciclo TXA The time it takes for TXA to close a wound @@ -3288,6 +3319,7 @@ El tiempo que tarda el ATX en cerrar una herida Hoe lang het duurt voordat TXA een wond dicht Temps requis pour permettre au TXA de refermer une blessure + Il tempo necessario affinché TXA chiuda una ferita Coagulation Settings @@ -3296,6 +3328,7 @@ Configurações de coagulação Coagulatie instellingen Paramètres de coagulation + Impostazioni di coagulazione Require Heart Rate @@ -3303,6 +3336,7 @@ Requiere Ritmo Cardiaco Vereist hartslag Fréquence cardiaque requise + Richiede la Frequenza Cardiaca Should coagulation require a heart rate above 20BPM? (Doing CPR will keep HR above 20BPM) @@ -3310,6 +3344,7 @@ La coagulación requerirá de un ritmo cardiaco superior a 20 PPM (Hacer RCP mantendrá el RC por encima de 20 PPM) Is een hartslag van meer dan 20SPM benodigt voor coagulatie? (Het uitvoeren van CPR houdt de hartslag boven 20SPM) La coagulation nécessite-elle un fréquence cardiaque supérieure à 20 BPM ? (Effectuer la RCP gardera le FC au dessus de 20 BPM) + La coagulazione dovrebbe richiedere una frequenza cardiaca superiore a 20 BPM? (Fare RCP manterrà la frequenza cardiaca sopra i 20 BPM) Required Blood Volume @@ -3317,6 +3352,7 @@ Volumen de sangre requerido Benodigd bloedvolume Volume sanguin requis + Volume di sangue richiesto Minimum volume of blood required for coagulation to work @@ -3324,6 +3360,7 @@ Volumen de sangre necesario para que la coagulación funcione Het minimale bloedvolume dat vereist is voor coagulatie om te werken Volume de sang minimal requis pour permettre à la coagulation de fonctionner + Volume minimo di sangue richiesto affinché la coagulazione funzioni Coagulation Factors @@ -3331,6 +3368,7 @@ Factores de Coagulación Stollingsfactoren Facteurs de coagulation + Fattori di coagulazione The amount of coagulation factors that get set on unit spawn & be kept as limit for factor regeneration @@ -3338,6 +3376,7 @@ La cantidad de factores de coagulación que se establecen al spawnear y se mantienen como límite para la regeneración de factores De hoeveelheid stollingsfactoren dat een eenheid krijgt op spawn en als limiet wordt gebruik voor hergeneratie La quantité de facteurs de coagulation définie lors de l’apparition de l'unité et conservée comme limite pour la régénération des facteurs. + La quantità di fattori di coagulazione che vengono impostati al momento della creazione dell'unità e mantenuti come limite per la rigenerazione dei fattori. Clotting Cycle Time @@ -3345,6 +3384,7 @@ Duración del ciclo de coagulación Stollingscyclustijd Temps de cycle de coagulation + Tempo del ciclo di coagulazione The time between each wound clotting cycle that start wound clotting. (low number may cause lag) @@ -3352,6 +3392,7 @@ El tiempo entre cada ciclo de coagulación de la herida que inicia la coagulación. (Un número bajo puede causar lag) De hoeveelheid tijd tussen elke wondstollingscyclus. (een laag nummer kan leiden tot lag) Le temps entre chaque cycle de coagulation des plaies qui déclenche la coagulation. (Un nombre bas peut entraîner du lag) + Il tempo tra ogni ciclo di coagulazione delle ferite che avvia la coagulazione. (un valore basso potrebbe causare lag Minor Wounds Clotting Time @@ -3359,6 +3400,7 @@ Tiempo de coagulación de Heridas Leves Kleine wonden stollingstijd Temps de coagulation des blessures mineures + Tempo di coagulazione per ferite minori Medium Wounds Clotting Time @@ -3366,6 +3408,7 @@ Tiempo de coagulación de Heridas Medias Middelgrote wonden stollingstijd Temps de coagulation des blessures moyennes + Tempo di coagulazione per ferite medie Large Wounds Clotting Time @@ -3373,6 +3416,7 @@ Tiempo de coagulación de Heridas Severas Grote wonden stollingstijd Temps de coagulation des blessures larges + Tempo di coagulazione per ferite gravi This time gets divided by 2, randomized & added with the same value devided by 2.\nFor example, if the value was set to 10s this would be one possible varriation: (random (10 / 2)) + (10 / 2) = 8s @@ -3380,6 +3424,7 @@ Este tiempo se divide entre 2, se aleatoriza y se suma con el mismo valor dividido por 2.\n Por ejemplo, si el valor se establece en 10 esto sería un posible resultado: ("al azar del 0 al" (10/2)) + (10/2) = 8s Deze tijd wordt door 2 gedeeld, gerandomiseerd en dan met dezelfde waarde gedeeld door 2 opgeteld. \nBijvoorbeeld: als deze waarde op 10 seconden ingesteld staat dan is één mogelijke variatie:(random(10/2))+(10/2) = 8s Ce temps est divisé par 2, randomisé et additionné à la même valeur divisée par 2. \nPar exemple, si une valeur est fixée à 10 secondes, une variation possible serait : (aléatoire (10 / 2)) + (10 / 2) = 8s + Questo tempo viene diviso per 2, randomizzato e aggiunto al stesso valore diviso per 2.\nAd esempio, se il valore fosse impostato su 10 secondi, una possibile variazione sarebbe: (random (10 / 2)) + (10 / 2) = 8 secondi. Coagulation Factor Regeneration Cycle @@ -3387,6 +3432,7 @@ Ciclo de Regeneración del Factor de Coagulación Stollingsfactor hergeneratiecyclus Cycle de régénération des facteurs de coagulation + Ciclo di rigenerazione dei fattori di coagulazione The time between coagulation factor regeneration checks. Will add +1 factor on successful check. Uses Setting: "Coagulation Factors" as limit.\n Note: If the limit is exceeded, this time will be used and then remove -1 factor until Setting: "Coagulation Factors" is reached. Tipp: TXA or EACA stop losing factors\nRequirements for regeneration to work:\n- No wound being clotted in the last cycle check from this setting\n- Setting: "Require Heart Rate"\n- Setting: "Required Blood Volume" @@ -3394,6 +3440,7 @@ Tiempo que transcurre entre cada revisión de la regeneración del factor de coagulación. Añade +1 factor si la revisión ha tenido éxito. Utiliza el ajuste "Factores de Coagulación" como límite.\n Nota: Si el limite es excedido, el tiempo será usado para retirar -1 factor hasta que el ajuste "Factor de Coagulación" se alcance. Consejo: ATX o EACA dejan de perder factores.\n Requisitos para que la regeneración funcione:\n- Ninguna herida coagulada en la última revisión del ciclo de este ajuste.\n- Ajuste: "Requiere Ritmo Cardíaco"\n- Ajuste: "Volumen de Sangre requerido" De tijd tussen stollingsfactor hergeneratie checks. Geeft +1 factor op een succesvolle check. Gebruikt instelling: "Stollingsfactoren" als limiet. \n Wees alert: als het limiet overschreden is, dan zal na deze check 1 factor verwijderd worden (-1 factoren) tot het limiet weer bereikt is. Tip: TXA en EACA stoppen het verlies van factoren.\nVereisten voor hergeneratie:\n- Geen wond gestold in de laaste cyclus van deze instelling,\n- Instelling: "Vereist hartslag"\n- "Benodigd bloedvolume" Le temps entre les vériofications de régénération des facteurs de coagulation. Ajoute +1 facteur en cas de vérification réussie. Utilise le paramètres : "Facteurs de coagulation" comme limite. \nRemarque : si la limite est dépassée, ce temps sera utilisé, puis -1 facteur sera retiré jusqu'à ce que le paramètre : "Facteurs de coagulation" soit atteint. Conseil :TXA ou EACA arrêtent la perte de facteurs.\nConditions nécessaires pour que la régénération fonctionne :\n- Aucune plaie en cours de coagulation au cours du dernier cycle de vérification de ce paramètres.\n- Paramètre : "Fréquence cardiaque requise"\n- Paramètre : "Volume sanguin requis" + Il tempo tra i controlli di rigenerazione dei fattori di coagulazione. Aggiunge +1 fattore in caso di controllo riuscito. Utilizza l'impostazione: "Fattori di coagulazione" come limite.\nNota: se il limite viene superato, questo tempo verrà utilizzato e poi verrà rimosso -1 fattore fino a quando non si raggiunge l'impostazione: "Fattori di coagulazione". Suggerimento: TXA o EACA fermano la perdita di fattori.\nRequisiti affinché la rigenerazione funzioni:\n- Nessuna ferita in corso di coagulazione nell'ultimo ciclo di verifica di questa impostazione.\n- Impostazione: "Frequenza cardiaca richiesta"\n- Impostazione: "Volume sanguigno richiesto" Affect AI @@ -3401,6 +3448,7 @@ Afecta a la IA Beïnvloed AI/KI Affecte l'IA + Influenza IA Allow coagulation to affect AI units.\nEvery other value will still be required if turned on. (May cause lag if many AI is present) @@ -3408,6 +3456,7 @@ Permitir que la coaguación afecte a las unidades de IA. Todos los demás valores seguirán siendo necesarios si se activan. (Puede causar lag si hay muchas IA presentes) Laat coagulatie AI/KI beïnvloeden.\nElke andere waarde wordt ook voor AI/KI gecheckt wanneer dit aanstaat. (Kan prestatieproblemen opleveren als er veel AI's/KI's aanwezig zijn.) Autoriser la coagulation à affecter les unités IA.\nTous les autres paramètres seront toujours nécessaires si cette option est activée. (Peut entraîner un lag si de nombreuses IA sont présentes.) + Permettere alla coagulazione di influenzare le unità IA.\nOgni altro valore sarà comunque richiesto se attivato. (Può causare lag se sono presenti molte IA) Tournique Blocks Blood Clotting @@ -3415,6 +3464,7 @@ Torniquete Bloquea la Coagulación de la Sangre Tourniquets blokkeren wondstolling Le garrot bloque la coagulation + Il tourniquet blocca la coagulazione del sangue If enabled a applied tourniquet will stop wounds from being closed from coagulation on that bodypart @@ -3422,6 +3472,7 @@ Si se activa, el torniquete aplicado impedirá que las heridas se cierren por coagulación en esa parte del cuerpo Tourniquets voorkomen dat wonden op hetzelfde ledemaat dichtgemaakt worden door coagulatie wanneer deze instelling actief is Si activé, un garrot appliqué empêchera les plaies de se fermer par coagulation sur cette partie du corps. + Se abilitato, un tourniquet applicato impedirà la chiusura delle ferite tramite coagulazione su quella parte del corpo. Affect Minor Wounds @@ -3429,6 +3480,7 @@ Afecta a Heridas Menores Beïnvloed kleine wonden Affecter les blessures mineures + Influenza le ferite minori Allow coagulation to affect minor wounds when clotting @@ -3436,6 +3488,7 @@ Permitir que la coagulación afecte a heridas leves al coagularse Staat toe dat coagulatie kleine wonden beïnvloed tijdens het stollen Permettre à la coagulation d'affecter les blessures mineures lors de la coagulation + Consenti alla coagulazione di influenzare le ferite minori durante la coagulazione Affect Medium Wounds @@ -3443,6 +3496,7 @@ Afecta a Heridas Medias Beïnvloed middelgrote wonden Affecter les blessures moyennes + Consenti alla coagulazione di influenzare le ferite medie Allow coagulation to affect medium wounds when clotting @@ -3450,6 +3504,7 @@ Permitir que la coagulación afecte a heridas medias al coagularse Staat toe dat coagulatie middelgrote wonden beïnvloed tijdens het stollen Permettre à la coagulation d'affecter les blessures moyennes lors de la coagulation + Consenti alla coagulazione di influenzare le ferite medie durante la coagulazione Affect Large Wounds @@ -3457,6 +3512,7 @@ Afecta a Heridas Severas Beïnvloed grote wonden Affecter les blessures larges + Influenzare le ferite gravi Allow coagulation to affect large wounds when clotting @@ -3464,6 +3520,7 @@ Permite que la coagulación afecte a heridas severas al coagularse Staat toe dat coagulatie grote wonden beïnvloed tijdens het stollen Permettre à la coagulation d'affecter les blessures larges lors de la coagulation + Permettere alla coagulazione di influenzare le ferite gravi durante la coagulazione Allow Additional TXA Bandaging @@ -3471,6 +3528,7 @@ Permitir el Vendaje ATX Adicional Sta additionele TXA dichtingen toe Permettre l'apport de bandages par le TXA + Consenti la medicazione aggiuntiva con TXA If enabled TXA will keep all functionality and start bandaging wounds itself @@ -3478,6 +3536,7 @@ Si el ATX esta permitido, mantendrá toda la funcionalidad y empezará a vendar las heridas por si mismo TXA houdt zijn functionaliteit en zal wonden dichten wanneer deze instelling actief is. Si activé, le TXA gardera toutes ses fonctionnalités et bandera les plaies par lui-même + Se abilitato, TXA manterrà tutte le funzionalità e inizierà a medicare le ferite da solo Allow Additional EACA Stiching @@ -3485,6 +3544,7 @@ Permitir la Sutura EACA Adicional Sta additionele EACA hechtingen toe Permettre la suture par l'EACA + Consenti la sutura aggiuntiva con EACA If enabled EACA will keep all functionality and start stitching bandaged wounds @@ -3492,6 +3552,7 @@ Si el EACA esta permitido, mantendrá la funcionalidad y empezará a suturar las heridas vendadas EACA houdt zijn functionaliteit en zal wonden hechten wanneer deze instelling actief is. Si activé, l'EACA gardera toutes ses fonctionnalités et suturera les plaies par lui-même + Se abilitato, EACA manterrà tutte le funzionalità e inizierà a suturare le ferite già medicati. Simultaneous Bodypart Coagulation @@ -3499,6 +3560,7 @@ Coagulación Simultanea de las Partes del Cuerpo Gelijktijdige coagulatie Coagulation simultanée de plusieurs membres + Coagulazione simultanea delle parti del corpo If enabled each bodypart will be treated simultaneously by coagulation.\nMeaning if you have a wound on the head and body they will both be treated in the same coagulation cycle. @@ -3506,6 +3568,7 @@ Si se permite, cada parte del cuerpo se tratará simultáneamente mediante coagulación. \nEs decir, si tiene una herida en la cabeza y otra en el torso, ambas se tratarán en el mismo ciclo de coagulación. Als dit ingeschakeld is, zal elk lichaamsdeel tegelijkertijd behandeld worden door coagulatie. \nWat betekent dat als je een wond aan je arm en been hebt, dat deze in dezelfde coagulatiecyclus behandeld worden Si activé, chaque membre sera affecté simultanément par la coagulation.\nCela signifie que si une plaie est présente sur la tête et le torse, elles seront toutes deux traitées lors du même cycle de coagulation. + Se abilitato, ogni parte del corpo sarà trattata simultaneamente dalla coagulazione.\nCiò significa che se hai una ferita sulla testa e sul corpo, entrambe verranno trattate nello stesso ciclo di coagulazione. Coagulation Factor Limit @@ -3513,6 +3576,7 @@ Limite del Factor de Coagulación Stollingsfactor limiet Limite de facteurs de coagulation + Limite dei fattori di coagulazione The limit for how many coagulation factors can be present inside a units body at once. Meaning if you administer plasma this is the maximum attainable value. @@ -3520,6 +3584,7 @@ Limite del número de factores de coagulación que pueden estar presentes a la vez en el organismo de una unidad. Es decir, si administras plasma, éste es el valor máximo alcanzable. Het limiet voor hoeveel stollingsfactoren er in een eenheids lichaam tegelijkertijd aanwezig kan zijn. Wat betekent dat dit de waarde is waar zelfs plasma geen extra factoren meer toevoegd La limite du nombre de facteurs de coagulation pouvant être présents dans le corps d'une unité. Cela signifie que si du plasma est administré, il s'agira de la valeur maximale atteignable. + Il limite di quanti fattori di coagulazione possono essere presenti nel corpo di un'unità contemporaneamente. Ciò significa che se somministri plasma, questo è il valore massimo raggiungibile. Allow Clots To Be Shown in Menu @@ -3527,6 +3592,7 @@ Permitir que los Coágulos se muestren en el Menú Sta toe dat stollingen worden weergeven in het menu Autoriser l'affichage des caillots dans le menu + Consenti la visualizzazione dei coaguli nel menu If enabled, when coagulation is bandaging a wound it will add a interaction log to the medical menu. @@ -3534,6 +3600,7 @@ Si se activa, cuando la coagulación esté vendando una herida añadirá un registro de interacción al menú médico. Wanneer dit is ingeschakeld is worden gestolde wonden toegevoegd aan de interactie log van het medisch menu. Si activé, lorsque la coagulation bandera une plaie, une ligne sera ajoutée dans le journal des interactions du menu médical. + Se abilitato, quando la coagulazione sta medicando una ferita, aggiungerà un registro di interazione nel menu medico. Blood clotting temporarily closed a wound on %1 @@ -3542,6 +3609,7 @@ Coagulação estancou temporariamente um ferimento em %1 Wondstolling heeft een wond op %1 tijdelijk gedicht La coagulation a temporairement fermé une plaie sur %1 + Il coagulo di sangue ha temporaneamente chiuso una ferita su %1 Blood clotting permanently closed a wound on %1 @@ -3550,6 +3618,7 @@ Coagulação estancou permanentemente um ferimento em %1 Wondstolling heeft een wond op %1 permanent gedicht La coagulation a définitivement fermé une plaie sur %1 + Il coagulo di sangue ha chiuso permanentemente una ferita su %1 Head @@ -3660,6 +3729,7 @@ Medidor de Coagulação Coag-Sense Coag-Sense + Coag-Sense The Coag-Sense is a PT/INR monitoring system that can measure the efficiency of your blood clotting @@ -3668,6 +3738,7 @@ O Medidor de Coagulação é um sistema de monitoramento PT/INR que pode mensurar a eficiência da sua coagulação sanguínea De Coag-Sense is een PT-INR monitoringssysteem dat de effectiviteit van jouw wondstolling kan bepalen Le Coag-Sense est un système de surveillance PT/INR qui permet de mesurer l'efficacité de la coagulation sanguine + Il Coag-Sense è un sistema di monitoraggio PT/INR che può misurare l'efficienza della coagulazione del sangue. Coag-Sense concludes: %1 @@ -3676,6 +3747,7 @@ Medidor de Coagulação conlui: %1 Coag-Sense concludeerd: %1 Le Coag-Sense a conclu : %1 + Coag-Sense conclude: %1 Measure PT/INR @@ -3684,6 +3756,7 @@ Medir PT/INR Meet PT-INR Mesurer le PT/INR + Misura PT/INR Taking Blood Sample, @@ -3692,6 +3765,7 @@ Coletando amostra sanguínea, Bloedstaal wordt genomen Prélè¨vement de sang, + Prelievo campione di sangue, Slightly Below Normal INR @@ -3700,6 +3774,7 @@ INR ligeiramente abaixo do normal Lichtelijk onder normaal INR légèrement inférieur à l'INR normal + INR leggermente sotto la norma Sligtly Above normal INR @@ -3708,6 +3783,7 @@ INR ligeiramente acima do normal Lichtelijk boven normaal INR légèrement supérieur à l'INR normal + INR leggermente sopra la norma Very Low INR @@ -3716,6 +3792,7 @@ INR bem abaixo do normal Zeer laag INR INR très bas + INR molto basso Very high INR @@ -3724,6 +3801,7 @@ INR bem acima do normal Zeer hoog INR INR très élevé + INR molto alto Normal INR @@ -3732,6 +3810,7 @@ INR normal Normaal INR INR normal + INR normale Coag-Sense Settings @@ -3740,6 +3819,7 @@ Configuração do Medidor de Coagulação Coag-Sense instellingen Paramètres du Coag-Sense + Impostazioni Coag-Sense Medical level required for Coag-Sense @@ -3748,6 +3828,7 @@ Nível médico necessário para uso do Medidor de Coagulação Vereist medisch niveau voor gebruik Coag-Sense Niveau médical requis du Coag-Sense + Livello medico richiesto per Coag-Sense Locations Coag-Sense @@ -3756,6 +3837,7 @@ Localizações de uso do Medidor de Coagulação Locaties voor gebruik Coag-Sense Emplacements du Coag-Sense + Posizioni Coag-Sense Treatment time for measuring PT/INR @@ -3764,6 +3846,7 @@ Tempo para mensurar PT/INR Onderzoekstijd voor bepalen PT-INR Temps pour mesurer le PT/INR + Tempo di trattamento per misurare PT/INR Allow Stacking @@ -3772,6 +3855,7 @@ Permitir somatória de efeito Sta stapelen toe Autoriser l'empilage + Consenti la sovrapposizione If enabled EACA will be stackable and double its efficiency @@ -3780,6 +3864,7 @@ Se habilitado, o efeito do EACA será somável e sua eficiência será dobrada Staat het stapelen van EACA toe wanneer ingeschakeld, wat leidt tot een verdubbeling van de effectiviteit Si activé, l'EACA sera empilable et doublera son efficacité + Se abilitato, EACA sarà sovrapponibile e raddoppierà la sua efficienza. Keep Stiching Until Out Of System @@ -3788,6 +3873,7 @@ Sutura contínua enquanto presente no sistema Blijf hechten tot uit systeem Continuer de suturer jusqu'à ce que le produit soit éliminé du système + Continua a suturare fino all'eliminazione dal sistema If enabled EACA will keep stichinng until it's out of your system\nIf disabled EACA will stop working after stiching the last bandaged wound it can find @@ -3796,6 +3882,7 @@ Se habilitado, o EACA continuará suturando até que esteja fora do seu sistema\nSe desabilitado, o funcionamento do EACA será interrompido assim que suturar o último ferimento Als dit ingeschakeld is, EACA blijft hechten tot het uit je systeem is.\nEACA zal stoppen na de laatste hechtbare wond die hij kan vinden wanneer uitgeschakeld Si activé, l'EACA continuera de suturer jusqu'à ce qu'il soit éliminé du système.\nSi désactivé, l'EACA cessera de fonctionner après avoir suturé le dernier bandage qu'il peut trouver. + Se abilitato, EACA continuerà a suturare finché non verrà eliminato dal sistema.\nSe disabilitato, EACA smetterà di funzionare dopo aver suturato l'ultima ferita medicata che può trovare. EACA Cycle Time @@ -3804,6 +3891,7 @@ Tempo de Ciclo do EACA EACA cyclustimer Temps de cycle de l'EACA + Tempo di ciclo EACA The time it takes for EACA to close a stich a wound @@ -3812,6 +3900,7 @@ O intervalo entre suturas do EACA Hoe lang het duurt voor EACA om een wond te hechten Temps requis à l'EACA pour suturer une plaie + Il tempo che impiega EACA per suturare una ferita. IV Epinephrine Settings @@ -3819,6 +3908,7 @@ Ajustes de Epinefrina IV IV Adrenaline Instellingen Paramètres de l'épinéphrine IV + Impostazioni Epinefrina IV Medical level required for IV Epinephrine @@ -3826,6 +3916,7 @@ Nivel médico requerido para Epinefrina IV Vereist medisch niveau voor gebruik van IV Adrenaline Niveau médical requis pour l'épinéphrine IV + Livello medico richiesto per Epinefrina IV Treatment time for IV Epinephrine @@ -3833,6 +3924,7 @@ Tiempo de tratamiento para Epinefrina IV Toedieningstijd voor IV Adrenaline Temps de traitement pour l'épinéphrine IV + Tempo di trattamento per Epinefrina IV IV Epinephrine @@ -3840,6 +3932,7 @@ Epinefrina IV IV Adrenaline Epinéphrine IV + Epinefrina IV IV Epinephrine @@ -3847,6 +3940,7 @@ Epinefrina IV IV Adrenaline Epinéphrine IV + Epinefrina IV Push Epinephrine @@ -3854,6 +3948,7 @@ Administrar Epinefrina Injecteer IV Adrenaline Administrer l'épinéphrine + Somministra Epinefrina diff --git a/addons/stretcher/stringtable.xml b/addons/stretcher/stringtable.xml index 407b1b8f0..1db561773 100644 --- a/addons/stretcher/stringtable.xml +++ b/addons/stretcher/stringtable.xml @@ -97,6 +97,7 @@ Ontplooi brancard Desplegar Camilla 担架を展開する + Dispiegare la barella Déployer le brancard @@ -105,6 +106,7 @@ Trek brancard terug Recoger Camilla 担架を収容する + Ritirare la barella Rétracter le brancard @@ -113,6 +115,7 @@ Maak brancard los Desanclar Camilla 担架を取り外す + Staccare la barella Détacher le brancard @@ -193,6 +196,7 @@ Verpak naar een tas Empaquetar en bolsa ランチャーとして畳む + Mettere nella borsa Emballer dans un sac @@ -201,6 +205,7 @@ Verpak naar een rugzak Empaquetar en mochila バックパックとして畳む + Mettere nello zaino Emballer dans un sac à dos @@ -209,6 +214,7 @@ Ontplooi brancard Desplegar Camilla 担架を展開する + Dispiegare la barella Déployer le brancard @@ -217,6 +223,7 @@ Brancard wordt geplaatst Colocando Camilla... 担架を設置しています・・・ + Posizionamento della barella... Mise en place du brancard... @@ -225,6 +232,7 @@ Brancard wordt verpakt Empaquetando Camilla... 担架を折り畳んでいます・・・ + Imballaggio della barella... Le brancard est emballé @@ -232,6 +240,7 @@ KAT helibrancard KAT Camilla de Helicóptero KAT ヘリコプター用担架 + KAT Barella per elicotteri Brancard d'hélicoptère KAT diff --git a/addons/surgery/stringtable.xml b/addons/surgery/stringtable.xml index 6f19de98c..8d4db3ad5 100644 --- a/addons/surgery/stringtable.xml +++ b/addons/surgery/stringtable.xml @@ -528,6 +528,7 @@ Sluit incisie Cerrar Incisión 切開口を閉じる + Chiudere incisione Fermer l'incision @@ -634,6 +635,7 @@ Échographie portable Ultrassom Portátil Mobiele echograaf + Ecografo portatile Used to assess internal injuries @@ -643,6 +645,7 @@ Utilisé pour contrôlé les blessures internes Utilizado para verificar lesões internas Wordt gebruikt om interne verwondingen te evalueren + Utilizzato per valutare le lesioni interne Conduct Ultrasound Assessment @@ -652,6 +655,7 @@ Effectuer une évaluation échographique Realizar verificação com ultrassom Voer echo evaluatie uit + Esegui valutazione ecografica Assessing @@ -661,6 +665,7 @@ Evaluation Verificando Aan het evalueren + In corso di valutazione Airway Status: %1 @@ -670,6 +675,7 @@ Statut des voies aériennes : %1 Estado das vias aéreas: %1 Luchtwegstatus: %1 + Stato delle vie aeree: %1 Lung Status: %1 @@ -679,6 +685,7 @@ Statut des poumons :%1 Estado do pulmão: %1 Longstatus: %1 + Stato dei polmoni: %1 Cardiac Status: %1 @@ -688,6 +695,7 @@ Statut cardiaque :%1 Estado cardíaco: %1 Cardiale status: %1 + Stato cardiaco: %1 Normal @@ -697,6 +705,7 @@ Normal Normal Normaal + Normale Pneumothorax @@ -706,6 +715,7 @@ Pneumothorax Pneumotórax Pneumothorax + Pneumotorace Hemopneumothorax @@ -715,6 +725,7 @@ Hémopneumothorax Hemotórax Hemopneumothorax + Emopneumotorace Tension Pneumothorax @@ -724,6 +735,7 @@ Pneumothorax sous tension Pneumotórax Hipertensivo Tensiepneumothorax + Pneumotorace Iperteso Arrest - Shockable @@ -733,6 +745,7 @@ Arrêt cardiaque - Choquable Parada - Chocável Hartstilstand - Schokbaar + Arresto - Defibrillabile Arrest - Not Shockable @@ -742,6 +755,7 @@ Arrêt cardiaque - Non choquable Parada - Não Chocável Hartstilstand - Niet schokbaar + Arresto - Non defibrillabile Tamponade @@ -751,6 +765,7 @@ Tamponnade cardiaque Tamponado Harttamponade + Tamponamento REBOA Unit @@ -760,6 +775,7 @@ Unité REBOA Unidade REBOA ROBOA eenheid + Unità REBOA Used to block the aorta and prevent bleeding below the heart @@ -769,6 +785,7 @@ Utilisé pour bloquer l'aorte et empêcher le saignement en dessous du coeur Utilizada para bloquear a aorta e prevenir sangramento abaixo do coração Wordt gebruikt om de aorta te blokkeren, en bloedingen onder het hart te stelpen + Utilizzato per bloccare l'aorta e prevenire il sanguinamento sotto il cuore Place REBOA Unit @@ -778,6 +795,7 @@ Placé l'unité REBOA Colocar Unidade REBOA Plaats REBOA eenheid + Posiziona l'unità REBOA Placing @@ -787,6 +805,7 @@ Placement Colocando Wordt geplaatst + Posizionamento in corso Advance REBOA Unit @@ -796,6 +815,7 @@ Avancer l'unité REBOA Avançar Unidade REBOA Voer REBOA eenheid op + Avanza l'unità REBOA Advancing @@ -805,6 +825,7 @@ Déplacement Avançando Wordt opgevoerd + Avanzamento in corso Remove REBOA Unit @@ -814,6 +835,7 @@ Retirer l'unité REBOA Remover Unidade REBOA Verwijder REBOA eenheid + Rimuovi l'unità REBOA Removing @@ -823,6 +845,7 @@ Retrait Removendo Wordt verwijderd + Rimozione in corso REBOA @@ -832,6 +855,7 @@ REBOA REBOA REBOA + REBOA Pericardial Tap @@ -841,6 +865,7 @@ Péricardiocentèse Pericardiocentese Pericard drainage + Puntura pericardica Performing @@ -850,6 +875,7 @@ Opération Realizando Wordt uitgevoerd + Esecuzione in corso %1 performed a pericardial tap @@ -859,6 +885,7 @@ %1 a effectué une péricardiocentèse %1 realizou uma pericardiocentese %1 heeft een pericard drainage uitgevoerd + %1 ha eseguito una puntura pericardica Kidney damage/failure @@ -1232,6 +1259,7 @@ Benodigde Training om een REBOA toe te dienen Niveau médical requis pour le REBOA Permitir REBOA + Consenti REBOA Locations for REBOA @@ -1239,6 +1267,7 @@ Locaties waar een REBOA toegediend kan worden Emplacements du REBOA Zonas para REBOA + Posizioni per REBOA Time to perform REBOA actions @@ -1246,6 +1275,7 @@ Benodigde tijd om REBOA acties uit te voeren Temps nécessaire pour effectuer les actions du REBOA Tiempo para realizar acciones de REBOA + Tempo per eseguire le azioni REBOA Sets how long it takes to perform REBOA actions (Placing, Advancing, Removing) @@ -1253,6 +1283,7 @@ Bepaald hoe lang het duurt om REBOA acties uit te voeren (Plaatsen, doorvoeren en verwijderen) Défini le temps nécessaire pour effectuer les actions du REBOA (placement, avancée, retrait) Establece cuanto tiempo lleva realizar las acciones de REBOA (Colocar, Avanzar, Quitar) + Imposta quanto tempo ci vuole per eseguire le azioni REBOA (Posizionamento, Avanzamento, Rimozione) Allow Ultrasound @@ -1260,6 +1291,7 @@ Benodigde training voor gebruik mobiele echograaf Niveau médical requis pour effectuer un ultrason Permitir Ultrasonido + Consenti Ecografia Locations for Ultrasound @@ -1267,6 +1299,7 @@ Locaties waar een mobiele echograaf gebruikt kan worden Emplacements de l'ultrason Zonas para Ultrasonido + Posizioni per Ecografia Time to perform Ultrasound actions @@ -1274,6 +1307,7 @@ Benodigde tijd voor het gebruik van een mobiele echograaf Temps nécessaire pour effectuer les actions de l'ultrason Tiempo para realizar acciones de Ultrasonidos + Tempo per eseguire le azioni Ecografia Sets how long it takes to perform an ultrasound exam @@ -1281,6 +1315,7 @@ Bepaald hoe lang het gebruik van een mobiele echograaf duurt Défini le temps nécessaire pour effectuer une examination à l'ultrason Establece cuánto tiempo lleva realizar un examen de Ultrasonidos + Imposta quanto tempo ci vuole per eseguire un esame ecografico Allow Pericardial Tap @@ -1288,6 +1323,7 @@ Benodigde training voor pericardiale drainage Niveau médical requis pour le prélèvement péricardique Permitir realizar Pericardiocentesis + Consenti Puntura Pericardica Locations for Pericardial Tap @@ -1295,6 +1331,7 @@ Locaties waar een pericardiale drainage uitgevoerd kan worden Emplacements du prélèvement péricardique Zonas para Pericardiocentesis + Posizioni per Puntura Pericardica Time to perform Pericardial Tap @@ -1302,6 +1339,7 @@ Benodigde tijd om een pericard drainage uit te voeren Temps nécessaire pour effectuer le prélèvement péricardique Tiempo para realizar Pericardiocentesis + Tempo per eseguire la Puntura Pericardica Sets how long it takes to perform a Pericardial Tap @@ -1309,6 +1347,7 @@ Bepaald hoe lang het uitvoeren van een pericard drainage duurt Défini le temps nécessaire pour effectuer le prélèvement péricardique Establece cuanto tiempo lleva realizar una Pericardiocentesis + Imposta quanto tempo ci vuole per eseguire una Puntura Pericardica Allow Breath Check @@ -1335,6 +1374,7 @@ Autoriser le NPWT Permitir curativo a vácuo Benodigde training voor het gebruik van een vacuümverband + Consenti NPWT Locations NPWT @@ -1345,6 +1385,7 @@ Lieux du NPWT Locais para curativo a vácuo Locaties waar een vacuümverband aangelegd kan worden + Posizioni NPWT Locations Closed Reduction @@ -1563,6 +1604,7 @@ Paramètres du pansement sous vide (NPWT) Configurações do curativo a vácuo Vacuümverband instellingen + Impostazioni del sistema di aspirazione per medicazioni (NPWT) [KAM] Surgery Box @@ -1590,6 +1632,7 @@ Kirurginen tajunta Контроль сознания во время операции Operatie bewustzijninstellingen + Controlli della coscienza durante la chirurgia Surgery Causes Unconsciousness: Surgery without anesthesia and sedation results in unconsciousness from CA. \nUnconsciousness Required for Surgery: Surgery requires patient to be unconscious. \nNo Unconsciousness from Surgery: Surgery doesn't induce unconsciousness, causes pain. \nSurgery Anesthesia: Patient stays awake during surgery if given Etomidate, if not they will go into CA. @@ -1602,6 +1645,7 @@ Leikkaus aiheuttaa tajuttomuuden: leikkaus ilman anestesiaa ja sedaatiota johtaa tajuttomuuteen sydämenpysähdyksestä. \nLeikkaukseen tarvitaan tajuttomuus: leikkaus ei aiheuta tajuttomuutta, aiheuttaa kipua. \nLeikkauksen anestesia: Potilas pysyy hereillä leikkauksen aikana, jos hänelle annetaan etomidaattia, jos ei, hän menettää sydämenpysähdyksen. Операция вызывает потерю сознания: операция без анестезии или седативного средства приводит к потере сознания из-за остановки сердца. \nбессознательное состояние, необходимое для операции: операция требует, чтобы пациент был без сознания. \nнет бессознательного состояния из-за операции: операция не вызывает бессознательного состояния, она вызывает боль. \nхирургическая анестезия: пациент не спит во время операции, если ему вводят этомидат. Operatie veroorzaakt bewustzijnsverlies: Operaties zonder anesthesie en sedatie lijdt tot bewustzijnsverlies door hartstilstand. \n Bewusteloosheid benodigd voor operatie: Operaties vereisen dat de patiënt bewusteloos is. \n Geen bewustzijnsverlies door operaties: Operaties lijden niet tot bewustzijnsverlies, maar veroorzaken pijn. \n Operatie met anesthesie: Patiënt blijft wakker tijdens de operatie als etomidaat gegeven is, anders lijdt de operatie tot een hartstilstand. + Una chirurgia causa incoscienza: Una chirurgia senza anestesia e sedazione porta all'incoscienza a causa di CA. \n Incoscienza richiesta per la chirurgia: Per la chirurgia, è necessario che il paziente sia incosciente. \n Nessuna incoscienza dalla chirurgia: La chirurgia non causa incoscienza, ma dolore. \n Anestesia chirurgica: Il paziente rimane sveglio durante l'intervento se gli viene somministrato Etomidato. Surgery Causes Unconsciousness @@ -1614,6 +1658,7 @@ Leikkaus aiheuttaa tajuttomuuden Хирургическое вмешательство приводит к потере сознания Operatie veroorzaakt bewustijnsverlies + Chirurgia causa incoscienza Unconsciousness Required for Surgery @@ -1626,6 +1671,7 @@ Leikkaukseen tarvitaan tajuttomuus Потеря сознания, необходимая для хирургического вмешательства Bewusteloosheid + Incoscienza richiesta per la chirurgia No Unconsciousness from Surgery @@ -1638,6 +1684,7 @@ Ei tajuttomuutta leikkauksesta После операции никто не теряет сознание Geen Bewustzijnsverlies door operaties + Nessuna incoscienza dalla chirurgia Surgery Anesthesia @@ -1651,6 +1698,7 @@ Leikkauksen anestesia Хирургическая анестезия Operatie met anesthesie + Anestesia chirurgica diff --git a/addons/vitals/XEH_PREP.hpp b/addons/vitals/XEH_PREP.hpp index 9295e7f53..f05f9c7b0 100644 --- a/addons/vitals/XEH_PREP.hpp +++ b/addons/vitals/XEH_PREP.hpp @@ -6,7 +6,8 @@ PREP(handleCardiacFunction); PREP(handleTemperatureFunction); PREP(handleRespawn); PREP(handleOxygenFunction); +PREP(handlePoisoning); PREP(hasStableVitals); PREP(init); PREP(updateOpioidEffect); -PREP(updateOpioidRelief); \ No newline at end of file +PREP(updateOpioidRelief); diff --git a/addons/vitals/functions/fnc_handleOxygenFunction.sqf b/addons/vitals/functions/fnc_handleOxygenFunction.sqf index 23d8c5bdc..d50598d1b 100644 --- a/addons/vitals/functions/fnc_handleOxygenFunction.sqf +++ b/addons/vitals/functions/fnc_handleOxygenFunction.sqf @@ -41,7 +41,7 @@ private _previousCyclePao2 = (_bloodGas select 1); if (IN_CRDC_ARRST(_unit)) then { // When in arrest, there should be no effecive breaths but still a minimum O2 demand. Zero O2 demand would mean a dead patient. Actual ventilation is 1 to prevent issues in the gas tension functions _demandVentilation = MINIMUM_VENTILATION; - _respiratoryRate = 0; + _respiratoryRate = [0, 20] select (_unit getVariable [QEGVAR(breathing,BVMInUse), false]); _actualVentilation = 1; } else { // Ventilatory Demand comes from Heart Rate with increase demand from PaCO2 levels @@ -83,6 +83,7 @@ private _fio2 = switch (true) do { case ((_unit getVariable [QEGVAR(airway,occluded), false]) || (_unit getVariable [QEGVAR(airway,obstruction), false])): { [0, DEFAULT_FIO2] select ((_unit getVariable [QEGVAR(airway,recovery), false]) || (_unit getVariable [QEGVAR(airway,overstretch), false])) }; + case ((_respiratoryRate == 0) && (EGVAR(breathing,SpO2_perfusion))): { 0 }; case ((_unit getVariable [QEGVAR(chemical,airPoisoning), false]) || (_unit getVariable [QEGVAR(breathing,tensionpneumothorax), false]) || (_unit getVariable [QEGVAR(breathing,hemopneumothorax), false])): { 0 }; case (_unit getVariable [QEGVAR(breathing,oxygenTankConnected), false]): { 1 }; default { DEFAULT_FIO2 }; @@ -94,8 +95,9 @@ private _pALVo2 = ((_fio2 * (_baroPressure - 47)) - (_paco2 / _anerobicPressure) // PaO2 cannot be higher than PALVO2 and comes from ventilation shortage multipled by RBC volume private _pao2 = (DEFAULT_PAO2 - ((DEFAULT_ECB / ((GET_BODY_FLUID(_unit) select 0) max 500)) * ((_demandVentilation - _actualVentilation) / 120))) min _pALVo2; +private _arrestPerfusion = [1, (1 * EGVAR(breathing,SpO2_PerfusionMultiplier))] select ((IN_CRDC_ARRST(_unit)) && (EGVAR(breathing,SpO2_perfusion))); // PaO2 moves in controlled steps to prevent hard movements when Ventilation Demand spikes -_pao2 = if (_previousCyclePao2 != _pao2) then { ([ (_previousCyclePao2 - ((PAO2_MAX_CHANGE * EGVAR(breathing,SpO2_MultiplyNegative)) * _deltaT)) , (_previousCyclePao2 + ((PAO2_MAX_CHANGE * EGVAR(breathing,SpO2_MultiplyPositive)) * _deltaT))] select ((_previousCyclePao2 - _pao2) < 0)) } else { _pao2 }; +_pao2 = if (_previousCyclePao2 != _pao2) then { ([ (_previousCyclePao2 - ((PAO2_MAX_CHANGE * EGVAR(breathing,SpO2_MultiplyNegative) * _arrestPerfusion) * _deltaT)) , (_previousCyclePao2 + ((PAO2_MAX_CHANGE * EGVAR(breathing,SpO2_MultiplyPositive)) * _deltaT))] select ((_previousCyclePao2 - _pao2) < 0)) } else { _pao2 }; // Oxy-Hemo Dissociation Curve, driven by PaO2 with shaping done by pH private _o2Sat = ((_pao2 max 1)^2.7 / ((25 - (((_pH / DEFAULT_PH) - 1) * 150))^2.7 + _pao2^2.7)) min 0.999; diff --git a/addons/vitals/functions/fnc_handlePoisoning.sqf b/addons/vitals/functions/fnc_handlePoisoning.sqf new file mode 100644 index 000000000..25607fd3f --- /dev/null +++ b/addons/vitals/functions/fnc_handlePoisoning.sqf @@ -0,0 +1,25 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Update poisoning + + * Arguments: + * 0: The Unit + * 1: Poison Adjustments + * 2: Time since last update + * 3: Sync value? + * + * ReturnValue: + * None + * + * Example: + * [player, 1, 1, false] call kat_vitals_handlePoisoning; + * + * Public: No + */ + +params ["_unit", "_poisonAdjustment", "_deltaT", "_syncValue"]; + +private _currentCS = _unit getVariable [QEGVAR(chemical,CSGas), 0]; + +_unit setVariable [QEGVAR(chemical,CSGas), (_currentCS - (_poisonAdjustment * _deltaT)) max 0, _syncValue]; diff --git a/addons/vitals/functions/fnc_handleUnitVitals.sqf b/addons/vitals/functions/fnc_handleUnitVitals.sqf index fe3295591..133a24314 100644 --- a/addons/vitals/functions/fnc_handleUnitVitals.sqf +++ b/addons/vitals/functions/fnc_handleUnitVitals.sqf @@ -122,6 +122,7 @@ if !(_adjustments isEqualTo []) then { [_unit, _peripheralResistanceAdjustment, _deltaT, _syncValues] call ACEFUNC(medical_vitals,updatePeripheralResistance); [_unit, _opioidAdjustment, _deltaT, _syncValues] call FUNC(updateOpioidRelief); [_unit, _opioidEffectAdjustment, _deltaT, _syncValues] call FUNC(updateOpioidEffect); +[_unit, POISON_DECREASE, _deltaT, _syncValues] call FUNC(handlePoisoning); private _heartRate = [_unit, _hrTargetAdjustment, 0, _bloodVolume, _deltaT, _syncValues] call FUNC(handleCardiacFunction); diff --git a/addons/vitals/functions/fnc_hasStableVitals.sqf b/addons/vitals/functions/fnc_hasStableVitals.sqf index 2705db788..58ed2f125 100644 --- a/addons/vitals/functions/fnc_hasStableVitals.sqf +++ b/addons/vitals/functions/fnc_hasStableVitals.sqf @@ -35,7 +35,7 @@ if (_bloodPressureL < 50 || {_bloodPressureH < 60}) exitWith { false }; private _heartRate = GET_HEART_RATE(_unit); if (_heartRate < 40) exitWith { false }; -private _o2 = GET_SPO2(_unit); +private _o2 = GET_KAT_SPO2(_unit); if (_o2 < EGVAR(breathing,Stable_spo2)) exitWith { false }; true diff --git a/addons/vitals/script_component.hpp b/addons/vitals/script_component.hpp index 2fbccf669..162080431 100644 --- a/addons/vitals/script_component.hpp +++ b/addons/vitals/script_component.hpp @@ -15,3 +15,5 @@ #endif #include "\x\kat\addons\main\script_macros.hpp" + +#define POISON_DECREASE 1 diff --git a/addons/vitals/stringtable.xml b/addons/vitals/stringtable.xml index 86e6adb62..edee7e1ce 100644 --- a/addons/vitals/stringtable.xml +++ b/addons/vitals/stringtable.xml @@ -6,16 +6,19 @@ Activeer AI/KI versimpeld medisch Activar Médico Simple para IA AI用単純化医療を有効化 + Attiva AI Simple Medical Simplifier la médecine pour l'IA. Apply simplified vital calculations to the AI unit. Which can be useful for saving FPS. 単純化されたバイタル計算をAIユニットに適用します。 これは負荷の軽減に役立つ可能性があります。 + Applica calcoli vitali semplificati all'unità AI. Che può essere utile per salvare FPS. Appliquer des calculs vitaux simplifiés à l'unité AI. Ce qui peut être utile pour économiser des FPS. Enable Patient Fluid Shift 患者の体液移動を有効化 + Abilita lo spostamento del fluido del paziente Permettre le transfert de fluide du patient diff --git a/addons/watch/functions/fnc_showKWatch.sqf b/addons/watch/functions/fnc_showKWatch.sqf index 5e45ff6f9..dbf4e3020 100644 --- a/addons/watch/functions/fnc_showKWatch.sqf +++ b/addons/watch/functions/fnc_showKWatch.sqf @@ -103,7 +103,7 @@ private _altitude = _display displayCtrl 22007; }; _hr ctrlSetText ([GET_HEART_RATE(_unit), 1, 0] call CBA_fnc_formatNumber); - _o2 ctrlSetText ([GET_SPO2(_unit), 1, 0] call CBA_fnc_formatNumber); + _o2 ctrlSetText ([GET_KAT_SPO2(_unit), 1, 0] call CBA_fnc_formatNumber); switch (true) do { case(rain != 0): { _rain ctrlShow true; _overcast ctrlShow false; _sun ctrlShow false; }; diff --git a/addons/watch/functions/fnc_showSWatch.sqf b/addons/watch/functions/fnc_showSWatch.sqf index 073d06136..356eff061 100644 --- a/addons/watch/functions/fnc_showSWatch.sqf +++ b/addons/watch/functions/fnc_showSWatch.sqf @@ -92,7 +92,7 @@ private _altitudeUnit = GVAR(altitudeUnit); _time ctrlSetText (format ["%1:%2", [_hour, 2] call CBA_fnc_formatNumber, [_minute, 2] call CBA_fnc_formatNumber]); _hr ctrlSetText ([GET_HEART_RATE(_unit), 1, 0] call CBA_fnc_formatNumber); - _o2 ctrlSetText ([GET_SPO2(_unit), 1, 0] call CBA_fnc_formatNumber); + _o2 ctrlSetText ([GET_KAT_SPO2(_unit), 1, 0] call CBA_fnc_formatNumber); private _curTime = CBA_missionTime; private _timeDiff = _curTime - _prevTime; diff --git a/addons/watch/stringtable.xml b/addons/watch/stringtable.xml index 14573051d..cffe80016 100644 --- a/addons/watch/stringtable.xml +++ b/addons/watch/stringtable.xml @@ -6,6 +6,7 @@ Selecteer temperatuur vorm Seleccionar temperatura de 温度単位を選択 + Seleziona formato temperatura Sélectionner l'unité de température @@ -13,6 +14,7 @@ Selecteert welke temperatuur eenheid gebruikt wordt voor de KATMIN horloge Seleccionar qué unidad de temperatura es usada para la pantalla del reloj KATMIN Katmin腕時計で表示される温度の単位を選択します + Seleziona quale unità di temperatura viene utilizzata per il display del KATMIN Sélectionne l'unité de température utilisée pour l'affichage de la montre KATMIN @@ -20,6 +22,7 @@ Celcius Celsius 摂氏 (C) + Celcius Celcius @@ -27,6 +30,7 @@ Fahrenheit Fahrenheit 華氏 (F) + Fahrenheit Fahrenheit @@ -34,6 +38,7 @@ Selecteer drukvorm Seleccionar presión de 圧力単位を選択 + Seleziona formato pressione Sélectionner la forme de pression @@ -41,6 +46,7 @@ Selecteerd welke drukeenheden gebruikt worden voor de KATMIN horloge Selecciona qué unidad de presión es usada para la pantalla del reloj KATMIN Katmin腕時計で表示される圧力の単位を選択します + Seleziona quale unità di pressione viene utilizzata per il display del KATMIN Sélectionne l'unité de pression utilisée pour l'affichage de la montre KATMIN @@ -48,6 +54,7 @@ mmHg mmHg mmHg + mmHg mmHg @@ -55,6 +62,7 @@ hPa hPa hPa + hPa hPa @@ -62,6 +70,7 @@ Selecteer hoogte vorm Seleccionar altitud de 高度単位を選択 + Seleziona formato altitudine Sélectionner l'unité d'altitude @@ -69,6 +78,7 @@ Selecteerd welk hoogte eenheid gebruikt wordt voor de KATMIN horloge Selecciona qué unidad de altitud es usada para la pantalla del reloj KATMIN Katmin腕時計で表示される高度の単位を選択します + Seleziona quale unità di altitudine viene utilizzata per il display del KATMIN Sélectionne l'unité d'altitude utilisée pour la montre KATMIN @@ -76,6 +86,7 @@ Meters Metros メートル + Metri Mètres @@ -83,6 +94,7 @@ Voet Pies フィート + Piedi Pieds @@ -90,6 +102,7 @@ Horloge met ingebouwde vitale waarden monitor Reloj con Capacidad de Monitorización de Constantes Vitales カーミン K500。 バイタル監視機能を持った腕時計 + Orologio con capacità di monitoraggio vitale Montre avec moniteur de signes vitaux intégré @@ -97,36 +110,43 @@ Katmin k500 Katmin K500 Katmin K500 + Katmin K500 Katmin K500 Watch with Vital Monitoring Capabilities. Garry Owen! カーミン キャバルリー・リミテッド。 バイタル監視機能を持った腕時計。 ギャリー・オーウェン!(Garry Owen!) + Orologio con capacità di monitoraggio vitale. Garry Owen! Montre avec fonctions de surveillance vitale. Garry Owen ! Katmin Cavalry Limited Katmin Cavalry Limited + Katmin Cavalry Limited Katmin Cavalry Limited Watch with Vital Monitoring Capabilities. So Others May Live. カーミン ジャンプ・スタンダード。 バイタル監視機能を持った腕時計。 他人の命の為に。(So Others May Live) + Orologio con capacità di monitoraggio vitale. Perché altri possano vivere. Montre avec fonctions de surveillance vitale. Pour que d'autres puissent vivre. Katmin Jump Standard Katmin Jump Standard + Katmin Jump Standard Katmin Jump Standard %1ft/s %1ft/s + %1ft/s %1ft/s %1m/s %1m/s + %1m/s %1m/s diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 79a9a49c0..24f32d8bc 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -65,6 +65,7 @@ Détérioration du pneumothorax : Deterioração do pneumotórax Verslechterende pneumothorax: + Il pneumotorace peggiora: Hemopneumothorax: @@ -204,6 +205,7 @@ Muuta sydämen tilaa Изменить состояние сердца Verander cardiale staat + Cambia stato cardiaco Open unit medical menu @@ -253,6 +255,7 @@ Ventrikulaarinen takykardia: Желудочковая тахикардия Ventriculaire tachycardie + Tachicardia ventricolare Ventricular Fibrillation @@ -266,6 +269,7 @@ Kammiovärinä: Фибрилляция желудочков Ventriculaire fibrillatie + Fibrillazione ventricolare Pulseless Electrical Activity @@ -279,6 +283,7 @@ Pulssiton sähköinen toiminta: Безимпульсная электрическая активность Polsloze electrische activiteit (PEA) + Attività elettrica senza polso Asystole @@ -310,6 +315,7 @@ Yksikön on oltava AI Юнит должен быть ИИ Eenheid moet een KI / AI zijn + L'unità deve essere un'IA %1%3 (was %2%3) @@ -341,6 +347,7 @@ Valitse välitön AI-kuolema Переключить мгновенную смерть ИИ Schakel onmiddelijke KI / AI dood om + Attiva/disattiva la morte istantanea dell'IA Instant AI Death %1 for unit @@ -354,6 +361,7 @@ Välitön AI-kuolema %1 yksikölle Мгновенная смерть ИИ %1 для юнита Onmiddelijke dood voor KI / AI %1 voor eenheid + Morte istantanea dell'IA %1 per l'unità