using Content.Server.Polymorph.Components; using Content.Server.Polymorph.Systems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Polymorph; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Chemistry.ReagentEffects; public sealed partial class Polymorph : ReagentEffect { /// /// What polymorph prototype is used on effect /// [DataField("prototype", customTypeSerializer:typeof(PrototypeIdSerializer))] public string PolymorphPrototype { get; set; } protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => Loc.GetString("reagent-effect-guidebook-make-polymorph", ("chance", Probability), ("entityname", prototype.Index(prototype.Index(PolymorphPrototype).Entity).Name)); public override void Effect(ReagentEffectArgs args) { var entityManager = args.EntityManager; var uid = args.SolutionEntity; var polySystem = entityManager.System(); // Make it into a prototype entityManager.EnsureComponent(uid); polySystem.PolymorphEntity(uid, PolymorphPrototype); } }