Unstable v0.1300.0.0 (February 19th 2021)

This commit is contained in:
Joonas Rikkonen
2021-02-25 13:44:23 +02:00
parent b772654326
commit 24cbef485a
441 changed files with 21343 additions and 8562 deletions
@@ -67,6 +67,12 @@ namespace Barotrauma
_abandon = value;
if (_abandon)
{
#if DEBUG
if (HumanAIController.debugai && objectiveManager.IsOrder(this) && !objectiveManager.IsCurrentOrder<AIObjectiveGoTo>())
{
throw new Exception("Order abandoned!");
}
#endif
OnAbandon();
}
}
@@ -96,9 +102,21 @@ namespace Barotrauma
return all;
}
/// <summary>
/// A single shot event. Automatically cleared after launching. Use OnCompleted method for implementing (internal) persistent behavior.
/// </summary>
public event Action Completed;
/// <summary>
/// A single shot event. Automatically cleared after launching. Use OnAbandoned method for implementing (internal) persistent behavior.
/// </summary>
public event Action Abandoned;
/// <summary>
/// A single shot event. Automatically cleared after launching. Use OnSelected method for implementing (internal) persistent behavior.
/// </summary>
public event Action Selected;
/// <summary>
/// A single shot event. Automatically cleared after launching. Use OnDeselected method for implementing (internal) persistent behavior.
/// </summary>
public event Action Deselected;
protected HumanAIController HumanAIController => character.AIController as HumanAIController;
@@ -202,7 +220,7 @@ namespace Barotrauma
{
if (!AllowOutsideSubmarine && character.Submarine == null) { return false; }
if (AllowInAnySub) { return true; }
if (AllowInFriendlySubs && character.Submarine.TeamID == Character.TeamType.FriendlyNPC) { return true; }
if (AllowInFriendlySubs && character.Submarine.TeamID == CharacterTeamType.FriendlyNPC) { return true; }
return character.Submarine.TeamID == character.TeamID || character.Submarine.DockedTo.Any(sub => sub.TeamID == character.TeamID);
}
}
@@ -212,7 +230,7 @@ namespace Barotrauma
/// </summary>
public virtual float GetPriority()
{
bool isOrder = objectiveManager.CurrentOrder == this;
bool isOrder = objectiveManager.IsOrder(this);
if (!IsAllowed)
{
Priority = 0;
@@ -221,7 +239,7 @@ namespace Barotrauma
}
if (isOrder)
{
Priority = AIObjectiveManager.OrderPriority;
Priority = objectiveManager.GetOrderPriority(this);
}
else
{
@@ -243,7 +261,7 @@ namespace Barotrauma
public virtual void Update(float deltaTime)
{
if (objectiveManager.CurrentOrder != this && objectiveManager.WaitTimer <= 0)
if (!objectiveManager.IsOrder(this) && objectiveManager.WaitTimer <= 0)
{
UpdateDevotion(deltaTime);
}
@@ -318,22 +336,26 @@ namespace Barotrauma
{
Reset();
Selected?.Invoke();
Selected = null;
}
public virtual void OnDeselected()
{
CumulatedDevotion = 0;
Deselected?.Invoke();
Deselected = null;
}
protected virtual void OnCompleted()
{
Completed?.Invoke();
Completed = null;
}
protected virtual void OnAbandon()
{
Abandoned?.Invoke();
Abandoned = null;
}
public virtual void Reset()
@@ -408,7 +430,14 @@ namespace Barotrauma
subObjectives.Remove(subObjective);
if (AbandonWhenCannotCompleteSubjectives)
{
Abandon = true;
if (objectiveManager.IsOrder(this))
{
Reset();
}
else
{
Abandon = true;
}
}
}
}