using Content.Shared.EntityEffects; using Content.Shared.Mood; using JetBrains.Annotations; using Robust.Shared.Prototypes; namespace Content.Server.EntityEffects.Effects; /// /// Adds a moodlet to an entity. /// [UsedImplicitly] public sealed partial class ChemAddMoodlet : EntityEffect { protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) { var protoMan = IoCManager.Resolve(); return Loc.GetString("reagent-effect-guidebook-add-moodlet", ("amount", protoMan.Index(MoodPrototype.Id).MoodChange), ("timeout", protoMan.Index(MoodPrototype.Id).Timeout)); } /// /// The mood prototype to be applied to the using entity. /// [DataField(required: true)] public ProtoId MoodPrototype = default!; public override void Effect(EntityEffectBaseArgs args) { if (args is not EntityEffectReagentArgs _) return; var entityManager = IoCManager.Resolve(); var ev = new MoodEffectEvent(MoodPrototype); entityManager.EventBus.RaiseLocalEvent(args.TargetEntity, ev); } }