CatStation/Content.Shared/Preferences/Loadouts/Effects/PointsCostLoadoutEffect.cs
Morb0 da4af61aee Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Content.Shared/Preferences/Loadouts/Effects/GroupLoadoutEffect.cs
#	Content.Shared/Preferences/Loadouts/Effects/JobRequirementLoadoutEffect.cs
#	Content.Shared/Preferences/Loadouts/Effects/LoadoutEffect.cs
#	Content.Shared/Preferences/Loadouts/Effects/PointsCostLoadoutEffect.cs
#	Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs
#	Resources/Prototypes/GameRules/events.yml
#	Resources/Textures/Objects/Devices/nuke.rsi/meta.json
2024-06-15 10:39:49 +03:00

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,
LoadoutPrototype proto, // Corvax-Sponsors
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;
}
}