Arachnid 2: Episode 2 (#19984)
* Shield * minor sprite changes and buffs * structure buff * Crafting stuff * tweaks * 88-88 * Better web pocket sprites. * yeah it's fine now.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
using Content.Shared.Construction.EntitySystems;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Construction.Conditions;
|
||||
|
||||
/// <summary>
|
||||
/// A check to see if the entity itself can be crafted.
|
||||
/// </summary>
|
||||
[DataDefinition]
|
||||
public sealed partial class EntityWhitelistCondition : IConstructionCondition
|
||||
{
|
||||
/// <summary>
|
||||
/// What is told to the player attempting to construct the recipe using this condition. This will be localised.
|
||||
/// </summary>
|
||||
[DataField("conditionString")]
|
||||
public string ConditionString = "construction-step-condition-entity-whitelist";
|
||||
|
||||
/// <summary>
|
||||
/// The icon shown to the player beside the condition string.
|
||||
/// </summary>
|
||||
[DataField("conditionIcon")]
|
||||
public SpriteSpecifier? ConditionIcon = null;
|
||||
|
||||
/// <summary>
|
||||
/// The whitelist that allows only certain entities to use this.
|
||||
/// </summary>
|
||||
[DataField("whitelist", required: true)]
|
||||
public EntityWhitelist Whitelist = new();
|
||||
|
||||
public bool Condition(EntityUid user, EntityCoordinates location, Direction direction)
|
||||
{
|
||||
return Whitelist.IsValid(user);
|
||||
}
|
||||
|
||||
public ConstructionGuideEntry GenerateGuideEntry()
|
||||
{
|
||||
return new ConstructionGuideEntry
|
||||
{
|
||||
Localization = ConditionString,
|
||||
Icon = ConditionIcon
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using Content.Shared.Construction.Conditions;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -20,7 +21,7 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
/// Friendly name displayed in the construction GUI.
|
||||
/// </summary>
|
||||
[DataField("name")]
|
||||
public string Name= string.Empty;
|
||||
public string Name = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// "Useful" description displayed in the construction GUI.
|
||||
@@ -31,7 +32,7 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
/// <summary>
|
||||
/// The <see cref="ConstructionGraphPrototype"/> this construction will be using.
|
||||
/// </summary>
|
||||
[DataField("graph", customTypeSerializer:typeof(PrototypeIdSerializer<ConstructionGraphPrototype>), required: true)]
|
||||
[DataField("graph", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionGraphPrototype>), required: true)]
|
||||
public string Graph = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
@@ -64,6 +65,13 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
[DataField("canBuildInImpassable")]
|
||||
public bool CanBuildInImpassable { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// If not null, then this is used to check if the entity trying to construct this is whitelisted.
|
||||
/// If they're not whitelisted, hide the item.
|
||||
/// </summary>
|
||||
[DataField("entityWhitelist")]
|
||||
public EntityWhitelist? EntityWhitelist = null;
|
||||
|
||||
[DataField("category")] public string Category { get; private set; } = "";
|
||||
|
||||
[DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure;
|
||||
@@ -84,11 +92,11 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
/// <summary>
|
||||
/// Construction to replace this construction with when the current one is 'flipped'
|
||||
/// </summary>
|
||||
[DataField("mirror", customTypeSerializer:typeof(PrototypeIdSerializer<ConstructionPrototype>))]
|
||||
[DataField("mirror", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionPrototype>))]
|
||||
public string? Mirror;
|
||||
|
||||
public IReadOnlyList<IConstructionCondition> Conditions => _conditions;
|
||||
public IReadOnlyList<SpriteSpecifier> Layers => _layers ?? new List<SpriteSpecifier>{Icon};
|
||||
public IReadOnlyList<SpriteSpecifier> Layers => _layers ?? new List<SpriteSpecifier> { Icon };
|
||||
}
|
||||
|
||||
public enum ConstructionType
|
||||
|
||||
Reference in New Issue
Block a user