90 lines
3.0 KiB
C#
90 lines
3.0 KiB
C#
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<Item>();
|
|
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;
|
|
|
|
}
|
|
} |