(9cb944db7) Increase the priority modifier of extinguish fires for captain

This commit is contained in:
Joonas Rikkonen
2019-05-16 06:51:18 +03:00
parent 0ba5793b46
commit a2f97bf303
12 changed files with 368 additions and 221 deletions
@@ -367,6 +367,88 @@ namespace Barotrauma
}
}
protected void ReportProblems()
{
Order newOrder = null;
if (Character.CurrentHull != null)
{
foreach (var hull in VisibleHulls)
{
if (AIObjectiveExtinguishFires.IsValidTarget(hull, Character))
{
if (AddTargets<AIObjectiveExtinguishFires, Hull>(Character, hull))
{
if (hull == Character.CurrentHull)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportfire");
newOrder = new Order(orderPrefab, Character.CurrentHull, null);
}
}
}
foreach (var gap in hull.ConnectedGaps)
{
if (AIObjectiveFixLeaks.IsValidTarget(gap, Character))
{
if (AddTargets<AIObjectiveFixLeaks, Gap>(Character, gap))
{
if (hull == Character.CurrentHull)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportbreach");
newOrder = new Order(orderPrefab, Character.CurrentHull, null);
}
}
}
}
foreach (Item item in Item.ItemList)
{
if (item.CurrentHull != hull) { continue; }
if (AIObjectiveRepairItems.IsValidTarget(item, Character))
{
if (item.Repairables.All(r => item.Condition > r.ShowRepairUIThreshold)) { continue; }
if (AddTargets<AIObjectiveRepairItems, Item>(Character, item))
{
if (hull == Character.CurrentHull)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportbrokendevices");
newOrder = new Order(orderPrefab, Character.CurrentHull, item.Repairables?.FirstOrDefault());
}
}
}
}
foreach (Character c in Character.CharacterList)
{
if (c.CurrentHull != hull) { continue; }
if (AIObjectiveFightIntruders.IsValidTarget(c, Character))
{
if (AddTargets<AIObjectiveFightIntruders, Character>(Character, c))
{
if (hull == Character.CurrentHull)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportintruders");
newOrder = new Order(orderPrefab, Character.CurrentHull, null);
}
}
}
}
}
if (Character.Bleeding > 1.0f || Character.Vitality < Character.MaxVitality * 0.1f)
{
if (AddTargets<AIObjectiveRescueAll, Character>(Character, Character))
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "requestfirstaid");
newOrder = new Order(orderPrefab, Character.CurrentHull, null);
}
}
}
if (newOrder != null)
{
if (GameMain.GameSession?.CrewManager != null && GameMain.GameSession.CrewManager.AddOrder(newOrder, newOrder.FadeOutTime))
{
Character.Speak(newOrder.GetChatMessage("", Character.CurrentHull?.DisplayName, givingOrderToSelf: false), ChatMessageType.Order);
}
}
}
private void UpdateSpeaking()
{
if (Character.Oxygen < 20.0f)