mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge pull request #5191 from Arcanum417/medical-rewrite-kill-ai
[Medical Rewrite] Options to enable insta-death for AI
This commit is contained in:
commit
5c9d1ada84
@ -40,6 +40,7 @@ Aleksey EpMAK Yermakov <epmak777@gmail.com>
|
|||||||
Alganthe <alganthe@live.fr>
|
Alganthe <alganthe@live.fr>
|
||||||
Andrea "AtixNeon" Verano <veranoandrea88@gmail.com>
|
Andrea "AtixNeon" Verano <veranoandrea88@gmail.com>
|
||||||
Anthariel <Contact@storm-simulation.com>
|
Anthariel <Contact@storm-simulation.com>
|
||||||
|
Arcanum417 <lubos.len@gmail.com>
|
||||||
Anton
|
Anton
|
||||||
Arcanum417 <lubos.len@gmail.com>
|
Arcanum417 <lubos.len@gmail.com>
|
||||||
Arkhir <wonsz666@gmail.com >
|
Arkhir <wonsz666@gmail.com >
|
||||||
|
@ -45,6 +45,10 @@ class ACE_Medical_StateMachine {
|
|||||||
class Unconscious {
|
class Unconscious {
|
||||||
onState = QUOTE(DFUNC(handleStateUnconscious));
|
onState = QUOTE(DFUNC(handleStateUnconscious));
|
||||||
onStateEntered = QUOTE([ARR_2(_this,(true))] call FUNC(setUnconsciousStatemachine));
|
onStateEntered = QUOTE([ARR_2(_this,(true))] call FUNC(setUnconsciousStatemachine));
|
||||||
|
class DeathAI {
|
||||||
|
targetState = "Dead";
|
||||||
|
condition = QUOTE(!isPlayer _this && {GVAR(unconsciousConditionAI)});
|
||||||
|
};
|
||||||
class WakeUp {
|
class WakeUp {
|
||||||
targetState = "Injured";
|
targetState = "Injured";
|
||||||
condition = QUOTE(_this call FUNC(hasStableVitals));
|
condition = QUOTE(_this call FUNC(hasStableVitals));
|
||||||
@ -64,6 +68,11 @@ class ACE_Medical_StateMachine {
|
|||||||
// Transition state for handling instant death
|
// Transition state for handling instant death
|
||||||
// This state raises the next transition in the same frame
|
// This state raises the next transition in the same frame
|
||||||
onStateEntered = QUOTE(DFUNC(enteredStateFatalInjury));
|
onStateEntered = QUOTE(DFUNC(enteredStateFatalInjury));
|
||||||
|
class DeathAI {
|
||||||
|
events[] = {QGVAR(FatalInjuryInstantTransition)};
|
||||||
|
targetState = "Dead";
|
||||||
|
condition = QUOTE(!isPlayer _this && {GVAR(fatalInjuryConditionAI)});
|
||||||
|
};
|
||||||
class SecondChance {
|
class SecondChance {
|
||||||
events[] = {QGVAR(FatalInjuryInstantTransition)};
|
events[] = {QGVAR(FatalInjuryInstantTransition)};
|
||||||
targetState = "CardiacArrest";
|
targetState = "CardiacArrest";
|
||||||
@ -79,6 +88,10 @@ class ACE_Medical_StateMachine {
|
|||||||
class CardiacArrest {
|
class CardiacArrest {
|
||||||
onStateEntered = QUOTE(DFUNC(enteredStateCardiacArrest));
|
onStateEntered = QUOTE(DFUNC(enteredStateCardiacArrest));
|
||||||
onStateLeaving = QUOTE(DFUNC(leftStateCardiacArrest));
|
onStateLeaving = QUOTE(DFUNC(leftStateCardiacArrest));
|
||||||
|
class DeathAI {
|
||||||
|
targetState = "Dead";
|
||||||
|
condition = QUOTE(!isPlayer _this && {GVAR(fatalInjuryConditionAI)});
|
||||||
|
};
|
||||||
class Timeout {
|
class Timeout {
|
||||||
targetState = "Dead";
|
targetState = "Dead";
|
||||||
condition = QUOTE(DFUNC(conditionCardiacArrestTimer));
|
condition = QUOTE(DFUNC(conditionCardiacArrestTimer));
|
||||||
|
@ -117,6 +117,20 @@ class ACE_Settings {
|
|||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
values[] = {"Always", "In Cardiac Arrest", "Never"};
|
values[] = {"Always", "In Cardiac Arrest", "Never"};
|
||||||
};
|
};
|
||||||
|
class GVAR(fatalInjuryConditionAI) {
|
||||||
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_fatalInjuryConditionAI_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_fatalInjuryConditionAI_Description);
|
||||||
|
value = 1;
|
||||||
|
typeName = "BOOL";
|
||||||
|
};
|
||||||
|
class GVAR(unconsciousConditionAI) {
|
||||||
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_unconsciousConditionAI_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_unconsciousConditionAI_Description);
|
||||||
|
value = 1;
|
||||||
|
typeName = "BOOL";
|
||||||
|
};
|
||||||
class GVAR(cardiacArrestTime) {
|
class GVAR(cardiacArrestTime) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
displayName = CSTRING(MedicalSettings_cardiacArrestTime_DisplayName);
|
displayName = CSTRING(MedicalSettings_cardiacArrestTime_DisplayName);
|
||||||
|
@ -125,10 +125,22 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
class never {
|
class never {
|
||||||
name = ECSTRING(common,Never);
|
name = ECSTRING(common,Never);
|
||||||
value = 1;
|
value = 2;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
class fatalInjuryConditionAI {
|
||||||
|
displayName = CSTRING(MedicalSettings_fatalInjuryConditionAI_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_fatalInjuryConditionAI_Description);
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 1;
|
||||||
|
};
|
||||||
|
class unconsciousConditionAI {
|
||||||
|
displayName = CSTRING(MedicalSettings_unconsciousConditionAI_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_unconsciousConditionAI_Description);
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 1;
|
||||||
|
};
|
||||||
class cardiacArrestTime {
|
class cardiacArrestTime {
|
||||||
displayName = CSTRING(MedicalSettings_cardiacArrestTime_DisplayName);
|
displayName = CSTRING(MedicalSettings_cardiacArrestTime_DisplayName);
|
||||||
description = CSTRING(MedicalSettings_cardiacArrestTime_Description);
|
description = CSTRING(MedicalSettings_cardiacArrestTime_Description);
|
||||||
|
@ -8,7 +8,7 @@ class CfgPatches {
|
|||||||
requiredVersion = REQUIRED_VERSION;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {"ace_common"};
|
requiredAddons[] = {"ace_common"};
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
authors[] = {"Glowbal", "KoffeinFlummi"};
|
authors[] = {"Glowbal", "KoffeinFlummi","Arcanum417"};
|
||||||
url = ECSTRING(main,URL);
|
url = ECSTRING(main,URL);
|
||||||
VERSION_CONFIG;
|
VERSION_CONFIG;
|
||||||
};
|
};
|
||||||
|
@ -35,6 +35,8 @@ if !(_activated) exitWith {};
|
|||||||
[_logic, QGVAR(playerDamageThreshold), "playerDamageThreshold"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(playerDamageThreshold), "playerDamageThreshold"] call EFUNC(common,readSettingFromModule);
|
||||||
[_logic, QGVAR(AIDamageThreshold), "AIDamageThreshold"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(AIDamageThreshold), "AIDamageThreshold"] call EFUNC(common,readSettingFromModule);
|
||||||
[_logic, QGVAR(fatalInjuryCondition), "fatalInjuryCondition"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(fatalInjuryCondition), "fatalInjuryCondition"] call EFUNC(common,readSettingFromModule);
|
||||||
|
[_logic, QGVAR(fatalInjuryConditionAI), "fatalInjuryConditionAI"] call EFUNC(common,readSettingFromModule);
|
||||||
|
[_logic, QGVAR(unconsciousConditionAI), "unconsciousConditionAI"] call EFUNC(common,readSettingFromModule);
|
||||||
|
|
||||||
[_logic, QGVAR(cardiacArrestTime), "cardiacArrestTime"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(cardiacArrestTime), "cardiacArrestTime"] call EFUNC(common,readSettingFromModule);
|
||||||
[_logic, QGVAR(medicSetting_PainVisualization), "painVisualization"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(medicSetting_PainVisualization), "painVisualization"] call EFUNC(common,readSettingFromModule);
|
||||||
|
@ -3493,12 +3493,24 @@
|
|||||||
<Chinese>AI 死亡前所能承受的傷害程度</Chinese>
|
<Chinese>AI 死亡前所能承受的傷害程度</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryCondition_DisplayName">
|
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryCondition_DisplayName">
|
||||||
<English>Fatal Injury</English>
|
<English>Fatal Injury Player</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryCondition_Description">
|
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryCondition_Description">
|
||||||
<English>Defines when you can receive a fatal injury</English>
|
<English>Defines when Player can receive a fatal injury</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryCondition_InCardiacArrest">
|
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryConditionAI_DisplayName">
|
||||||
|
<English>Instant death AI</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryConditionAI_Description">
|
||||||
|
<English>Defines if AI will be able to die instantly</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Medical_MedicalSettings_unconsciousConditionAI_DisplayName">
|
||||||
|
<English>Forbid unconscious AI</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Medical_MedicalSettings_unconsciousConditionAI_Description">
|
||||||
|
<English>Defines if AI will be denied to go unconscious and will die instead</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Medical_MedicalSettings_fatalInjuryCondition_InCardiacArrest">
|
||||||
<English>In Cardiac Arrest</English>
|
<English>In Cardiac Arrest</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_MedicalSettings_cardiacArrestTime_DisplayName">
|
<Key ID="STR_ACE_Medical_MedicalSettings_cardiacArrestTime_DisplayName">
|
||||||
|
Loading…
Reference in New Issue
Block a user