HasTagCondition.cs 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. using Content.Shared.EntityEffects;
  2. using Content.Shared.Tag;
  3. using JetBrains.Annotations;
  4. using Robust.Shared.Prototypes;
  5. using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
  6. namespace Content.Server.EntityEffects.EffectConditions;
  7. [UsedImplicitly]
  8. public sealed partial class HasTag : EntityEffectCondition
  9. {
  10. [DataField(customTypeSerializer: typeof(PrototypeIdSerializer<TagPrototype>))]
  11. public string Tag = default!;
  12. [DataField]
  13. public bool Invert = false;
  14. public override bool Condition(EntityEffectBaseArgs args)
  15. {
  16. if (args.EntityManager.TryGetComponent<TagComponent>(args.TargetEntity, out var tag))
  17. return args.EntityManager.System<TagSystem>().HasTag(tag, Tag) ^ Invert;
  18. return false;
  19. }
  20. public override string GuidebookExplanation(IPrototypeManager prototype)
  21. {
  22. // this should somehow be made (much) nicer.
  23. return Loc.GetString("reagent-effect-condition-guidebook-has-tag", ("tag", Tag), ("invert", Invert));
  24. }
  25. }