using CustomPlayerEffects; using LabApi.Events.Arguments.PlayerEvents; using LabApi.Events.Handlers; using LabApi.Features; using LabApi.Features.Console; using LabApi.Features.Wrappers; using LabApi.Loader.Features.Plugins; using Mirror; using PlayerRoles; using PlayerRoles.PlayableScps.Scp3114; using PlayerRoles.Ragdolls; namespace CuffedFrenemies; public class CuffedFrenemies : Plugin { public override string Name => "GamblingCoin"; public override string Author => "Code002Lover"; public override Version Version { get; } = new(1, 0, 0); public override string Description => "Gamble your life away"; public override Version RequiredApiVersion { get; } = new (LabApiProperties.CompiledVersion); public override void Enable() { Logger.Debug("Loading"); PlayerEvents.Cuffed += OnCuff; } public override void Disable() { PlayerEvents.Cuffed -= OnCuff; } private static void OnCuff(PlayerCuffedEventArgs ev) { if (ev.Target.Team is Team.ClassD or Team.Scientists) { return; } if (ev.Target.Team == ev.Player.Team) { Logger.Debug("Same team, not changing role"); return; } if (ev.Target.RoleBase is Scp3114Role scp3114) { var stolenRole = scp3114.CurIdentity.StolenRole; var ragdoll = scp3114.CurIdentity.Ragdoll.Info; switch (stolenRole) { case RoleTypeId.ChaosConscript or RoleTypeId.ChaosMarauder or RoleTypeId.ChaosRepressor or RoleTypeId.ChaosRifleman: scp3114.CurIdentity.Ragdoll.Info = new RagdollData(ragdoll.OwnerHub, ragdoll.Handler, RoleTypeId.NtfPrivate, ragdoll.StartPosition, ragdoll.StartRotation, ragdoll.Nickname, ragdoll.CreationTime); return; case RoleTypeId.NtfPrivate or RoleTypeId.NtfCaptain or RoleTypeId.NtfSergeant or RoleTypeId.NtfSpecialist: scp3114.CurIdentity.Ragdoll.Info = new RagdollData(ragdoll.OwnerHub, ragdoll.Handler, RoleTypeId.ChaosConscript, ragdoll.StartPosition, ragdoll.StartRotation, ragdoll.Nickname, ragdoll.CreationTime); return; } } if (ev.Target.Team is Team.SCPs or Team.Dead) { return; } var newRole = ev.Target.Team == Team.ChaosInsurgency ? RoleTypeId.NtfPrivate : RoleTypeId.ChaosConscript; Logger.Debug($"Setting role to {newRole}"); var newItems = new List(); ev.Target.Items.CopyTo(newItems); newItems.Reverse(); var newPos = ev.Target.Position; ev.Target.Inventory.UserInventory.Items.Clear(); ev.Target.SetRole(newRole); ev.Target.ClearItems(); foreach (var newItem in newItems) { ev.Target.Inventory.UserInventory.Items.Add(newItem.Serial,newItem.Base); } ev.Target.Position = newPos; } }