using Content.Server.Polymorph.Components; using Content.Server.Polymorph.Systems; using Content.Shared.EntityEffects; using Content.Shared.Polymorph; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.EntityEffects.Effects; public sealed partial class Polymorph : EntityEffect { /// /// 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).Configuration.Entity).Name)); public override void Effect(EntityEffectBaseArgs args) { var entityManager = args.EntityManager; var uid = args.TargetEntity; var polySystem = entityManager.System(); // Make it into a prototype entityManager.EnsureComponent(uid); polySystem.PolymorphEntity(uid, PolymorphPrototype); } }