Files
crystall-punk-14/Content.Shared/_CP14/Workbench/Conditions/MagicInWorkbench.cs
Red 2fc34bface Workbench UI improve (#1508)
* grid workbench

* categorization

* Update CP14WorkbenchWindow.xaml.cs

* conditions

* categories
2025-07-08 00:42:34 +03:00

62 lines
2.0 KiB
C#

using Content.Shared._CP14.MagicEnergy;
using Content.Shared._CP14.MagicEnergy.Components;
using Content.Shared.FixedPoint;
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.Workbench.Conditions;
public sealed partial class MagicInWorkbench : CP14WorkbenchCraftCondition
{
[DataField]
public FixedPoint2 Energy = 10;
public override bool CheckCondition(
EntityManager entManager,
IPrototypeManager protoManager,
EntityUid workbench,
EntityUid user)
{
if (!entManager.TryGetComponent<CP14MagicEnergyContainerComponent>(workbench, out var energyContainer))
return false;
return energyContainer.Energy >= Energy;
}
public override void PostCraft(
EntityManager entManager,
IPrototypeManager protoManager,
EntityUid workbench,
EntityUid user)
{
var magicSys = entManager.System<SharedCP14MagicEnergySystem>();
magicSys.ChangeEnergy(workbench, -Energy, out _, out _);
}
public override void FailedEffect(
EntityManager entManager,
IPrototypeManager protoManager,
EntityUid workbench,
EntityUid user)
{
var magicSys = entManager.System<SharedCP14MagicEnergySystem>();
magicSys.ChangeEnergy(workbench, -Energy, out _, out _);
if (entManager.TryGetComponent<TransformComponent>(workbench, out var xform))
entManager.SpawnAtPosition("CP14SkyLightning", xform.Coordinates);
}
public override string GetConditionTitle(
EntityManager entManager,
IPrototypeManager protoManager,
EntityUid workbench,
EntityUid user)
{
if (!entManager.TryGetComponent<CP14MagicEnergyContainerComponent>(workbench, out var energyContainer))
return string.Empty;
var manaProcent = Energy / energyContainer.MaxEnergy * 100;
return Loc.GetString("cp14-workbench-condition-mana-in-w", ("count", manaProcent));
}
}