* JobRequirement refactor (#30347) * refactor JobRequirements * add profile support * fix * Update quartermaster.yml * sloth fixes * inport 30208 * Update DepartmentPrototype.cs * species restriction * left tweak stick * stringbuilder is cool! * Add JobRequirementOverride prototypes (#28607) * Add JobRequirementOverride prototypes * a * invert if * Add override that takes in prototypes directly * - fix: Errors. * - add: Add stuff. * - fix: Formatted message fix. * - add: Another requirement. --------- Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com> Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
42 lines
1.1 KiB
C#
42 lines
1.1 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
|
using Robust.Shared.Player;
|
|
using Robust.Shared.Prototypes;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Content.Shared.Preferences.Loadouts.Effects;
|
|
|
|
public sealed partial class PointsCostLoadoutEffect : LoadoutEffect
|
|
{
|
|
[DataField(required: true)]
|
|
public int Cost = 1;
|
|
|
|
public override bool Validate(
|
|
HumanoidCharacterProfile profile,
|
|
RoleLoadout loadout,
|
|
ICommonSession session,
|
|
IDependencyCollection collection,
|
|
[NotNullWhen(false)] out FormattedMessage? reason)
|
|
{
|
|
reason = null;
|
|
var protoManager = collection.Resolve<IPrototypeManager>();
|
|
|
|
if (!protoManager.TryIndex(loadout.Role, out var roleProto) || roleProto.Points == null)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (loadout.Points <= Cost)
|
|
{
|
|
reason = FormattedMessage.FromUnformatted("loadout-group-points-insufficient");
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public override void Apply(RoleLoadout loadout)
|
|
{
|
|
loadout.Points -= Cost;
|
|
}
|
|
}
|