(6f6fc33e7) The bots having the follow order now also equip mask/diving suit if the follow target has one. Unequipping not yet implemented.
This commit is contained in:
@@ -218,22 +218,6 @@ namespace Barotrauma
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool RefreshJoinButtonState(GUIComponent component, object obj)
|
|
||||||
{
|
|
||||||
if (obj == null || waitingForRefresh) { return false; }
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(clientNameBox.Text) && !string.IsNullOrWhiteSpace(ipBox.Text))
|
|
||||||
{
|
|
||||||
joinButton.Enabled = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
joinButton.Enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool SelectServer(GUIComponent component, object obj)
|
private bool SelectServer(GUIComponent component, object obj)
|
||||||
{
|
{
|
||||||
if (obj == null || waitingForRefresh) { return false; }
|
if (obj == null || waitingForRefresh) { return false; }
|
||||||
|
|||||||
@@ -553,6 +553,8 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public static bool HasItem(Character character, string tag, string containedTag, float conditionPercentage = 0)
|
public static bool HasItem(Character character, string tag, string containedTag, float conditionPercentage = 0)
|
||||||
{
|
{
|
||||||
|
if (character == null) { return false; }
|
||||||
|
if (character.Inventory == null) { return false; }
|
||||||
var item = character.Inventory.FindItemByTag(tag);
|
var item = character.Inventory.FindItemByTag(tag);
|
||||||
return item != null &&
|
return item != null &&
|
||||||
item.ConditionPercentage > conditionPercentage &&
|
item.ConditionPercentage > conditionPercentage &&
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public Func<bool> customCondition;
|
public Func<bool> customCondition;
|
||||||
|
|
||||||
|
public bool followControlledCharacter;
|
||||||
|
public bool mimic;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Display units
|
/// Display units
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -24,9 +27,11 @@ namespace Barotrauma
|
|||||||
public bool AllowGoingOutside { get; set; }
|
public bool AllowGoingOutside { get; set; }
|
||||||
public bool CheckVisibility { get; set; }
|
public bool CheckVisibility { get; set; }
|
||||||
|
|
||||||
|
public ISpatialEntity Target { get; private set; }
|
||||||
|
|
||||||
public override float GetPriority()
|
public override float GetPriority()
|
||||||
{
|
{
|
||||||
if (FollowControlledCharacter && Character.Controlled == null) { return 0.0f; }
|
if (followControlledCharacter && Character.Controlled == null) { return 0.0f; }
|
||||||
if (Target is Entity e && e.Removed) { return 0.0f; }
|
if (Target is Entity e && e.Removed) { return 0.0f; }
|
||||||
if (IgnoreIfTargetDead && Target is Character character && character.IsDead) { return 0.0f; }
|
if (IgnoreIfTargetDead && Target is Character character && character.IsDead) { return 0.0f; }
|
||||||
if (objectiveManager.CurrentOrder == this)
|
if (objectiveManager.CurrentOrder == this)
|
||||||
@@ -36,10 +41,6 @@ namespace Barotrauma
|
|||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ISpatialEntity Target { get; private set; }
|
|
||||||
|
|
||||||
public bool FollowControlledCharacter;
|
|
||||||
|
|
||||||
public AIObjectiveGoTo(ISpatialEntity target, Character character, AIObjectiveManager objectiveManager, bool repeat = false, bool getDivingGearIfNeeded = true, float priorityModifier = 1)
|
public AIObjectiveGoTo(ISpatialEntity target, Character character, AIObjectiveManager objectiveManager, bool repeat = false, bool getDivingGearIfNeeded = true, float priorityModifier = 1)
|
||||||
: base (character, objectiveManager, priorityModifier)
|
: base (character, objectiveManager, priorityModifier)
|
||||||
{
|
{
|
||||||
@@ -52,7 +53,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
protected override void Act(float deltaTime)
|
protected override void Act(float deltaTime)
|
||||||
{
|
{
|
||||||
if (FollowControlledCharacter)
|
if (followControlledCharacter)
|
||||||
{
|
{
|
||||||
if (Character.Controlled == null)
|
if (Character.Controlled == null)
|
||||||
{
|
{
|
||||||
@@ -137,8 +138,9 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
if (getDivingGearIfNeeded)
|
if (getDivingGearIfNeeded)
|
||||||
{
|
{
|
||||||
bool needsDivingGear = HumanAIController.NeedsDivingGear(targetHull);
|
Character followTarget = Target as Character;
|
||||||
bool needsDivingSuit = needsDivingGear && (targetHull == null || targetIsOutside || targetHull.WaterPercentage > 90);
|
bool needsDivingGear = HumanAIController.NeedsDivingGear(targetHull) || mimic && HumanAIController.HasDivingMask(followTarget);
|
||||||
|
bool needsDivingSuit = needsDivingGear && (targetHull == null || targetIsOutside || targetHull.WaterPercentage > 90) || mimic && HumanAIController.HasDivingSuit(followTarget);
|
||||||
bool needsEquipment = false;
|
bool needsEquipment = false;
|
||||||
if (needsDivingSuit)
|
if (needsDivingSuit)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -239,7 +239,8 @@ namespace Barotrauma
|
|||||||
CloseEnough = 150,
|
CloseEnough = 150,
|
||||||
AllowGoingOutside = true,
|
AllowGoingOutside = true,
|
||||||
IgnoreIfTargetDead = true,
|
IgnoreIfTargetDead = true,
|
||||||
FollowControlledCharacter = orderGiver == character
|
followControlledCharacter = orderGiver == character,
|
||||||
|
mimic = true
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case "wait":
|
case "wait":
|
||||||
|
|||||||
Reference in New Issue
Block a user