NPC refactor (#10122)

Co-authored-by: metalgearsloth <metalgearsloth@gmail.com>
This commit is contained in:
metalgearsloth
2022-09-06 00:28:23 +10:00
committed by GitHub
parent 138e328c04
commit 0286b88388
290 changed files with 13842 additions and 5939 deletions

View File

@@ -0,0 +1,36 @@
using System.Threading.Tasks;
using Robust.Shared.Random;
namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators;
public sealed class RandomOperator : HTNOperator
{
[Dependency] private readonly IRobustRandom _random = default!;
/// <summary>
/// Target blackboard key to set the value to. Doesn't need to exist beforehand.
/// </summary>
[DataField("targetKey", required: true)] public string TargetKey = string.Empty;
/// <summary>
/// Minimum idle time.
/// </summary>
[DataField("minKey", required: true)] public string MinKey = string.Empty;
/// <summary>
/// Maximum idle time.
/// </summary>
[DataField("maxKey", required: true)] public string MaxKey = string.Empty;
public override async Task<(bool Valid, Dictionary<string, object>? Effects)> Plan(NPCBlackboard blackboard)
{
return (true, new Dictionary<string, object>()
{
{
TargetKey,
_random.NextFloat(blackboard.GetValueOrDefault<float>(MinKey),
blackboard.GetValueOrDefault<float>(MaxKey))
}
});
}
}