Add utility AI (#806)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com> Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com> Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
This commit is contained in:
22
Content.Server/AI/Utility/BehaviorSets/BehaviorSet.cs
Normal file
22
Content.Server/AI/Utility/BehaviorSets/BehaviorSet.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
/// <summary>
|
||||
/// AKA DecisionMaker in IAUS. Just a group of actions that can be dynamically added or taken away from an AI.
|
||||
/// </summary>
|
||||
public abstract class BehaviorSet
|
||||
{
|
||||
protected IEntity Owner;
|
||||
|
||||
public BehaviorSet(IEntity owner)
|
||||
{
|
||||
Owner = owner;
|
||||
}
|
||||
|
||||
public IEnumerable<IAiUtility> Actions { get; protected set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Clothing.Gloves;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Clothing.Head;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Clothing.OuterClothing;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Clothing.Shoes;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
public sealed class ClothingBehaviorSet : BehaviorSet
|
||||
{
|
||||
public ClothingBehaviorSet(IEntity owner) : base(owner)
|
||||
{
|
||||
Actions = new IAiUtility[]
|
||||
{
|
||||
new EquipAnyHeadExp(),
|
||||
new EquipAnyOuterClothingExp(),
|
||||
new EquipAnyGlovesExp(),
|
||||
new EquipAnyShoesExp(),
|
||||
new PickUpAnyNearbyHeadExp(),
|
||||
new PickUpAnyNearbyOuterClothingExp(),
|
||||
new PickUpAnyNearbyGlovesExp(),
|
||||
new PickUpAnyNearbyShoesExp(),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
20
Content.Server/AI/Utility/BehaviorSets/HungerBehaviorSet.cs
Normal file
20
Content.Server/AI/Utility/BehaviorSets/HungerBehaviorSet.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System.Collections.Generic;
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Content.Server.AI.Utility.Actions.Nutrition;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Nutrition;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
public sealed class HungerBehaviorSet : BehaviorSet
|
||||
{
|
||||
public HungerBehaviorSet(IEntity owner) : base(owner)
|
||||
{
|
||||
Actions = new IAiUtility[]
|
||||
{
|
||||
new PickUpNearbyFoodExp(),
|
||||
new UseFoodInInventoryExp(),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Content.Server/AI/Utility/BehaviorSets/IdleBehaviorSet.cs
Normal file
18
Content.Server/AI/Utility/BehaviorSets/IdleBehaviorSet.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Content.Server.AI.Utility.Actions.Idle;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
public class IdleBehaviorSet : BehaviorSet
|
||||
{
|
||||
public IdleBehaviorSet(IEntity owner) : base(owner)
|
||||
{
|
||||
Actions = new IAiUtility[]
|
||||
{
|
||||
new CloseLastEntityStorage(Owner),
|
||||
new WanderAndWait(Owner),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Content.Server.AI.Utility.Actions.Test;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
public sealed class PathingDummyBehaviorSet : BehaviorSet
|
||||
{
|
||||
public PathingDummyBehaviorSet(IEntity owner) : base(owner)
|
||||
{
|
||||
Actions = new IAiUtility[]
|
||||
{
|
||||
new MoveRightAndLeftTen(owner),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
37
Content.Server/AI/Utility/BehaviorSets/SpirateBehaviorSet.cs
Normal file
37
Content.Server/AI/Utility/BehaviorSets/SpirateBehaviorSet.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System.Collections.Generic;
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Content.Server.AI.Utility.Actions.Combat.Ranged;
|
||||
using Content.Server.AI.Utility.Actions.Combat.Ranged.Ballistic;
|
||||
using Content.Server.AI.Utility.Actions.Combat.Ranged.Hitscan;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Combat;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Combat.Melee;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Combat.Ranged;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Combat.Ranged.Ballistic;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Combat.Ranged.Hitscan;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
public sealed class SpirateBehaviorSet : BehaviorSet
|
||||
{
|
||||
public SpirateBehaviorSet(IEntity owner) : base(owner)
|
||||
{
|
||||
Actions = new IAiUtility[]
|
||||
{
|
||||
new PickUpRangedExp(),
|
||||
// TODO: Reload Ballistic
|
||||
new DropEmptyBallisticExp(),
|
||||
// TODO: Ideally long-term we should just store the weapons in backpack
|
||||
new DropEmptyHitscanExp(),
|
||||
new EquipMeleeExp(),
|
||||
new EquipBallisticExp(),
|
||||
new EquipHitscanExp(),
|
||||
new PickUpHitscanFromChargersExp(),
|
||||
new ChargeEquippedHitscanExp(),
|
||||
new RangedAttackNearbySpeciesExp(),
|
||||
new PickUpMeleeWeaponExp(),
|
||||
new MeleeAttackNearbySpeciesExp(),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Content.Server/AI/Utility/BehaviorSets/ThirstBehaviorSet.cs
Normal file
18
Content.Server/AI/Utility/BehaviorSets/ThirstBehaviorSet.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Content.Server.AI.Utility.Actions;
|
||||
using Content.Server.AI.Utility.ExpandableActions.Nutrition;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
|
||||
namespace Content.Server.AI.Utility.BehaviorSets
|
||||
{
|
||||
public sealed class ThirstBehaviorSet : BehaviorSet
|
||||
{
|
||||
public ThirstBehaviorSet(IEntity owner) : base(owner)
|
||||
{
|
||||
Actions = new IAiUtility[]
|
||||
{
|
||||
new PickUpNearbyDrinkExp(),
|
||||
new UseDrinkInHandsExp(),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user