Option to make AI characters flee when their health is below a specific threshold
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
attackprioritystronger="-30"
|
||||
attackcooldown="1.0"
|
||||
sight="0.5"
|
||||
hearing="1.0"/>
|
||||
hearing="1.0"
|
||||
fleehealththreshold="20"/>
|
||||
</Character>
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user