Option to make AI characters flee when their health is below a specific threshold

This commit is contained in:
Joonas Rikkonen
2017-06-12 18:50:15 +03:00
parent 0ba11e1fb6
commit c7d22ecb47
3 changed files with 10 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<Character name ="crawler" humanoid="false">
<Character name ="crawler" humanoid="false" health="100">
<sound file="Content/Characters/Crawler/attack1.ogg" state="Attack" range="500"/>
<sound file="Content/Characters/Crawler/attack2.ogg" state="Attack" range="500"/>
@@ -78,6 +78,7 @@
<ai attackhumans="500" attackrooms="50.0" attackweaker="50" attackstronger="-30"
sight="0.5" hearing="1.0"
fleehealththreshold="10"
attackcooldown="3.0"/>
</Character>

View File

@@ -95,6 +95,7 @@
attackprioritystronger="-30"
attackcooldown="1.0"
sight="0.5"
hearing="1.0"/>
hearing="1.0"
fleehealththreshold="20"/>
</Character>

View File

@@ -48,6 +48,9 @@ namespace Barotrauma
//the limb selected for the current attack
private Limb attackingLimb;
//flee when the health is below this value
private float fleeHealthThreshold;
private AITarget selectedAiTarget;
private AITargetMemory selectedTargetMemory;
@@ -89,6 +92,8 @@ namespace Barotrauma
attackWhenProvoked = ToolBox.GetAttributeBool(aiElement, "attackwhenprovoked", false);
fleeHealthThreshold = ToolBox.GetAttributeFloat(aiElement, "fleehealththreshold", 0.0f);
outsideSteering = new SteeringManager(this);
insideSteering = new IndoorsSteeringManager(this, false);
@@ -146,7 +151,7 @@ namespace Barotrauma
}
else
{
state = (targetValue > 0.0f) ? AiState.Attack : AiState.Escape;
state = (targetValue < 0.0f || Character.Health < fleeHealthThreshold) ? AiState.Escape : AiState.Attack;
}
//if (coolDownTimer >= 0.0f) return;
}