--- /dev/null
+using Content.Server.Ame.Components;
+using Content.Shared.Construction;
+using JetBrains.Annotations;
+using Content.Shared.Examine;
+
+namespace Content.Server.Construction.Conditions;
+
+[UsedImplicitly]
+[DataDefinition]
+public sealed partial class AmeShieldIntegrity : IGraphCondition
+{
+ [DataField]
+ public float IntegrityThreshold = 80;
+
+ /// <summary>
+ /// If true, checks for the integrity being above the threshold.
+ /// if false, checks for it being below.
+ /// </summary>
+ [DataField]
+ public bool CheckAbove = true;
+
+ public bool Condition(EntityUid uid, IEntityManager entityManager)
+ {
+ if (!entityManager.TryGetComponent<AmeShieldComponent>(uid, out var shield))
+ return true;
+
+ if (CheckAbove)
+ {
+ return shield.CoreIntegrity >= IntegrityThreshold;
+ }
+ return shield.CoreIntegrity < IntegrityThreshold;
+ }
+
+ public bool DoExamine(ExaminedEvent args)
+ {
+ return false;
+ }
+
+ public IEnumerable<ConstructionGuideEntry> GenerateGuideEntry()
+ {
+ yield return new ConstructionGuideEntry();
+ }
+}
start: start
graph:
- node: start
+ - node: startBroken
- node: ameShielding
entity: AmeShielding
edges:
- to: start
+ conditions:
+ - !type:AmeShieldIntegrity
completed:
- !type:AdminLog # I don't like logging it like this. The log should include the user, AMEShielding EntityID, and AMEPart EntityID, and there should also be a start of attempt log.
message: "An AME shielding was deconstructed"
steps:
- tool: Welding
doAfter: 3
+
+ - to: startBroken
+ conditions:
+ - !type:AmeShieldIntegrity
+ checkAbove: false
+ completed:
+ - !type:SpawnPrototype
+ prototype: SheetSteel1
+ amount: 5
+ - !type:DeleteEntity
+ steps:
+ - tool: Welding
+ doAfter: 3