namespace Content.Shared.Cloning; /// /// Raised after a new mob got spawned when cloning a humanoid /// [ByRefEvent] public struct CloningEvent { public bool NameHandled = false; public readonly EntityUid Source; public readonly EntityUid Target; public CloningEvent(EntityUid source, EntityUid target) { Source = source; Target = target; } } /// /// Raised on a corpse being subjected to forced reincarnation(Metempsychosis). /// Allowing for innate effects from the mob to influence the reincarnation. /// [ByRefEvent] public struct ReincarnatingEvent { public bool OverrideChance; public bool NeverTrulyClone; public ForcedMetempsychosisType ForcedType = ForcedMetempsychosisType.None; public readonly EntityUid OldBody; public float ReincarnationChanceModifier = 1; public float ReincarnationChances; public ReincarnatingEvent(EntityUid oldBody, float reincarnationChances) { OldBody = oldBody; ReincarnationChances = reincarnationChances; } } /// /// Raised on a corpse that someone is attempting to clone, but before the process actually begins. /// Allows for Entities to influence whether the cloning can begin in the first place, either by canceling it, or modifying the cost. /// [ByRefEvent] public struct AttemptCloningEvent { public bool Cancelled; public bool DoMetempsychosis; public EntityUid CloningPod; public string? CloningFailMessage; public float CloningCostMultiplier = 1; public AttemptCloningEvent(EntityUid cloningPod, bool doMetempsychosis) { DoMetempsychosis = doMetempsychosis; CloningPod = cloningPod; } }