(0fde6c604) Ignore dangerous targets.

This commit is contained in:
Joonas Rikkonen
2019-05-16 05:18:37 +03:00
parent fea0c31e85
commit 65e284bf7c
16 changed files with 200 additions and 238 deletions
@@ -30,6 +30,7 @@ namespace Barotrauma
if (Item.Repairables.None()) { return 0; }
// Ignore items that are being repaired by someone else.
if (Item.Repairables.Any(r => r.CurrentFixer != null && r.CurrentFixer != character)) { return 0; }
if (Item.CurrentHull != null && (Item.CurrentHull.FireSources.Count > 0 || Character.CharacterList.Any(c => c.CurrentHull == Item.CurrentHull && !HumanAIController.IsFriendly(c)))) { return 0; }
// Vertical distance matters more than horizontal (climbing up/down is harder than moving horizontally)
float dist = Math.Abs(character.WorldPosition.X - Item.WorldPosition.X) + Math.Abs(character.WorldPosition.Y - Item.WorldPosition.Y) * 2.0f;
float distanceFactor = MathHelper.Lerp(1, 0.5f, MathUtils.InverseLerp(0, 10000, dist));
@@ -70,6 +71,11 @@ namespace Barotrauma
}
goToObjective = null;
}
if (!abandon)
{
// Don't allow to repair items in rooms that have a fire or an enemy inside
abandon = Item.CurrentHull != null && (Item.CurrentHull.FireSources.Count > 0 || Character.CharacterList.Any(c => c.CurrentHull == Item.CurrentHull && !HumanAIController.IsFriendly(c)));
}
foreach (Repairable repairable in Item.Repairables)
{
if (!repairable.HasRequiredItems(character, false))