(5e16139ed) Added "OrderGiver" field to AI orders, always show reports from the currently controlled character (even if the report is not targeted for the character's class)

This commit is contained in:
Joonas Rikkonen
2019-05-18 17:26:34 +03:00
parent 4dfd5f6fa2
commit e63ffe652e
8 changed files with 76 additions and 15 deletions
@@ -295,7 +295,7 @@ namespace Barotrauma
if (newOrder == null)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportintruders");
newOrder = new Order(orderPrefab, c.CurrentHull, null);
newOrder = new Order(orderPrefab, c.CurrentHull, null, orderGiver: Character);
}
}
}
@@ -305,7 +305,7 @@ namespace Barotrauma
if (newOrder == null)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportfire");
newOrder = new Order(orderPrefab, hull, null);
newOrder = new Order(orderPrefab, hull, null, orderGiver: Character);
}
}
foreach (Character c in Character.CharacterList)
@@ -317,7 +317,7 @@ namespace Barotrauma
if (newOrder == null)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "requestfirstaid");
newOrder = new Order(orderPrefab, c.CurrentHull, null);
newOrder = new Order(orderPrefab, c.CurrentHull, null, orderGiver: Character);
}
}
}
@@ -329,7 +329,7 @@ namespace Barotrauma
if (newOrder == null)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportbreach");
newOrder = new Order(orderPrefab, hull, null);
newOrder = new Order(orderPrefab, hull, null, orderGiver: Character);
}
}
}
@@ -343,7 +343,7 @@ namespace Barotrauma
if (newOrder == null)
{
var orderPrefab = Order.PrefabList.Find(o => o.AITag == "reportbrokendevices");
newOrder = new Order(orderPrefab, item.CurrentHull, item.Repairables?.FirstOrDefault());
newOrder = new Order(orderPrefab, item.CurrentHull, item.Repairables?.FirstOrDefault(), orderGiver: Character);
}
}
}
@@ -81,7 +81,11 @@ namespace Barotrauma
Item.ItemList.FindAll(it => it.Components.Any(ic => ic.GetType() == orderPrefab.ItemComponentType));
matchingItems.RemoveAll(it => it.Submarine != character.Submarine);
var item = matchingItems.GetRandom();
var order = new Order(orderPrefab, item ?? character.CurrentHull as Entity, item?.Components.FirstOrDefault(ic => ic.GetType() == orderPrefab.ItemComponentType));
var order = new Order(
orderPrefab,
item ?? character.CurrentHull as Entity,
item?.Components.FirstOrDefault(ic => ic.GetType() == orderPrefab.ItemComponentType),
orderGiver: character);
if (order == null) { continue; }
var objective = CreateObjective(order, automaticOrder.option, character, automaticOrder.priorityModifier);
if (objective != null)
@@ -39,7 +39,9 @@ namespace Barotrauma
public Entity TargetEntity;
public ItemComponent TargetItemComponent;
public readonly bool UseController;
public Controller ConnectedController;
public Controller ConnectedController;
public Character OrderGiver;
public readonly string[] AppropriateJobs;
public readonly string[] Options;
@@ -120,7 +122,7 @@ namespace Barotrauma
}
}
public Order(Order prefab, Entity targetEntity, ItemComponent targetItem)
public Order(Order prefab, Entity targetEntity, ItemComponent targetItem, Character orderGiver = null)
{
Prefab = prefab;
@@ -134,6 +136,7 @@ namespace Barotrauma
TargetAllCharacters = prefab.TargetAllCharacters;
AppropriateJobs = prefab.AppropriateJobs;
FadeOutTime = prefab.FadeOutTime;
OrderGiver = orderGiver;
TargetEntity = targetEntity;
if (targetItem != null)