Пример #1
0
        /// <inheritdoc cref="ChangingRoleEventArgs"/>
        public void OnChangingRole(ChangingRoleEventArgs ev)
        {
            if (ev.NewRole == RoleType.Spectator)
            {
                foreach (Player player in Player.List)
                {
                    if (player == ev.Player)
                    {
                        continue;
                    }

                    if (CustomItem.TryGet(player, out CustomItem item))
                    {
                        if (item.ShouldMessageOnGban)
                        {
                            ev.Player.SendFakeSyncVar(player.ReferenceHub.networkIdentity, typeof(NicknameSync), nameof(NicknameSync.Network_displayName), $"{player.Nickname} (CustomItem: {item.Name})");
                        }
                    }
                }
            }
            else
            {
                foreach (Player player in Player.List)
                {
                    if (player == ev.Player || player.ReferenceHub.nicknameSync.Network_displayName is null)
                    {
                        continue;
                    }

                    ev.Player.SendFakeSyncVar(player.ReferenceHub.networkIdentity, typeof(NicknameSync), nameof(NicknameSync.Network_displayName), player.DisplayNickname);
                }
            }
        }
Пример #2
0
 public void OnSetRole(ChangingRoleEventArgs ev)
 {
     if (Blackout.active && ev.Player.Role == RoleType.Scientist)
     {
         SpawnScientist(ev.Player, true, true);
     }
 }
Пример #3
0
 public void PlayerRoleChange(ChangingRoleEventArgs ev)
 {
     if (roundStarted)
     {
         ev.NewRole = RoleType.Spectator;
     }
 }
Пример #4
0
 /// <inheritdoc cref="Handlers.Mixed.OnChangingRole(ChangingRoleEventArgs)"/>
 public void OnChangingRole(ChangingRoleEventArgs ev)
 {
     if (ev.Player.ArtificialHealthDecay == 0)
     {
         ev.Player.ArtificialHealthDecay = 0.75f;
     }
 }
Пример #5
0
        // This check was moved here, because player's rank's are set AFTER OnPlayerJoin()
        public void OnSetClass(ChangingRoleEventArgs ev)
        {
            try
            {
                if (ev.Player == null)
                {
                    return;
                }
                AFKComponent afkComponent = ev.Player.GameObject.gameObject.GetComponent <AFKComponent>();

                if (afkComponent != null)
                {
                    if (!plugin.Config.IgnorePermissionsAndIP)
                    {
                        if (ev.Player.CheckPermission("uafk.ignore") || ev.Player.IPAddress == "127.0.0.1")                         //127.0.0.1 is sometimes used for "Pets" which causes issues
                        {
                            afkComponent.disabled = true;
                        }
                    }
                    if (IsGhost(ev.Player))
                    {
                        afkComponent.disabled = true;
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error($"ERROR In OnSetClass(): {e}");
            }
        }
Пример #6
0
 public void OnSetClass(ChangingRoleEventArgs ev)
 {
     if (spies.ContainsKey(ev.Player))
     {
         Timing.CallDelayed(0.1f, () => spies.Remove(ev.Player));
     }
 }
Пример #7
0
 private static void OnChangingRole(ChangingRoleEventArgs ev)
 {
     if (BurningHandler.Get(ev.Player) is BurningHandler burningHandler)
     {
         burningHandler.BurnTime = 0f;
     }
 }
Пример #8
0
 public void onRoleChange(ChangingRoleEventArgs ev)
 {
     #region Escaping Broadcasts
     bool ebenabled = DupecToolbox.Instance.Config.EscapeBroadcasts;
     if (ebenabled == true)
     {
         RoleType ClassD        = RoleType.ClassD;
         RoleType CHI           = RoleType.ChaosInsurgency;
         RoleType SCI           = RoleType.Scientist;
         RoleType NTFSCI        = RoleType.NtfScientist;
         RoleType NTF           = RoleType.NtfCadet;
         string   SMessageChaos = DupecToolbox.Instance.Config.Scientist_Broadcast_Escape_Chaos;
         string   SMessageNTF   = DupecToolbox.Instance.Config.Scientist_Broadcast_Escape_NTF;
         string   DMessageChaos = DupecToolbox.Instance.Config.ClassD_Broadcast_Escape_Chaos;
         string   DMessageNTF   = DupecToolbox.Instance.Config.ClassD_Broadcast_Escape_NTF;
         ushort   duration      = DupecToolbox.Instance.Config.EscapeBroadcastsDuration;
         if (ev.Player.Role == ClassD && ev.NewRole == CHI)
         {
             ev.Player.Broadcast(duration, DMessageChaos);
         }
         if (ev.Player.Role == ClassD && ev.NewRole == NTF)
         {
             ev.Player.Broadcast(duration, DMessageNTF);
         }
         if (ev.Player.Role == SCI && ev.NewRole == NTFSCI)
         {
             ev.Player.Broadcast(duration, SMessageNTF);
         }
         if (ev.Player.Role == SCI && ev.NewRole == CHI)
         {
             ev.Player.Broadcast(duration, SMessageChaos);
         }
     }
     #endregion
 }
 public async void OnChangingRole(ChangingRoleEventArgs ev)
 {
     if (ev.Player != null && Instance.Config.EventsToLog.ChangingPlayerRole && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
     {
         await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.ChangedRole, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role, ev.NewRole))).ConfigureAwait(false);
     }
 }
Пример #10
0
 public void OnRoleChanged(ChangingRoleEventArgs ev)
 {
     if (ev.Player.HasExtraClass() && ev.Player.GetExtraClass().Initialized)
     {
         ev.Player.RemoveExtraClass();
     }
 }
Пример #11
0
 private static void HandleSetClass(ChangingRoleEventArgs ev)
 {
     if (Plugin.Config.MaxHealth.TryGetValue(ev.NewRole, out int maxHp))
     {
         HandlerHelper.RunRestoreMaxHp(ev.Player, maxHp);
     }
 }
Пример #12
0
 public void OnChangingRole(ChangingRoleEventArgs ev)
 {
     if (scp372.Contains(ev.Player.UserId) && ev.NewRole != RoleType.ClassD)
     {
         Remove372(ev.Player);
     }
 }
Пример #13
0
 internal void ChangeRole(ChangingRoleEventArgs ev)
 {
     if (ev.Player.GameObject.TryGetComponent(out PlayerHardcoreComponent comp))
     {
         comp.Bleeding = false; // Stop bleeding if they change role via RA, escape, etc. (includes death)
     }
 }
Пример #14
0
 private void OnPlayerChangingRole(ChangingRoleEventArgs ev)
 {
     if (Scp999Manager.IsScp999(ev.Player))
     {
         Scp999Manager.UnMakeScp999(ev.Player);
     }
 }
Пример #15
0
 private void OnInternalChangingRole(ChangingRoleEventArgs ev)
 {
     if (Check(ev.Player) && ((ev.NewRole == RoleType.Spectator && !KeepRoleOnDeath) || (ev.NewRole != RoleType.Spectator && ev.NewRole != Role)))
     {
         RemoveRole(ev.Player);
     }
 }
Пример #16
0
 internal void OnChangeRole(ChangingRoleEventArgs ev)
 {
     if (ev.NewRole == RoleType.ClassD)
     {
         ev.Items.Add(ItemType.Coin);
     }
 }
Пример #17
0
 public void OnChangingRole(ChangingRoleEventArgs ev)
 {
     if (API.IsSerpent(ev.Player) && ev.NewRole != RoleType.Tutorial)
     {
         Extensions.DestroySH(ev.Player);
     }
 }
Пример #18
0
 internal void OnSetRole(ChangingRoleEventArgs ev)
 {
     if (subclassPlayers.Contains(ev.Player))
     {
         KillSubclassPlayer(ev.Player);
     }
 }
Пример #19
0
 public void OnChangingRole(ChangingRoleEventArgs ev)
 {
     Log.Debug("Player changed role", BloodLust049.Instance.Config.Debug);
     if (ev.Player.Role == RoleType.Scp049)
     {
         BloodLust049.Instance.Scp049InGame = false;
         BloodLust049.Instance.Scp049       = null;
     }
     if (ev.NewRole == RoleType.Scp049 && !BloodLust049.Instance.Scp049InGame)
     {
         Log.Debug("New role 049", BloodLust049.Instance.Config.Debug);
         BloodLust049.Instance.Scp049       = ev.Player;
         BloodLust049.Instance.Scp049InGame = true;
         if (!BloodLust049.Instance.mainCoroEnabled)
         {
             Log.Debug("Coro enabled", BloodLust049.Instance.Config.Debug);
             BloodLust049.Instance.mainCoroEnabled = true;
             BloodLust049.Instance.Coro            = Timing.RunCoroutine(BloodLust049.Instance.BloodLust());
             BloodLust049.Instance.Coroutines.Add(BloodLust049.Instance.Coro);
         }
     }
     else
     {
         Log.Debug($"Role not 049 or there is already an 049, new role: {ev.NewRole} 049 in game: {BloodLust049.Instance.Scp049InGame}", BloodLust049.Instance.Config.Debug);
     }
 }
Пример #20
0
        internal static void OnRoleChanged(ChangingRoleEventArgs ev)
        {
            if (ev.Player?.UserId == null || ev.Player.IsHost || !ev.Player.IsVerified || ev.Player.IPAddress == "127.0.0.WAN" || ev.Player.IPAddress == "127.0.0.1")
            {
                return;
            }

            if (ev.NewRole != RoleType.None && ev.NewRole != RoleType.Spectator)
            {
                Timing.CallDelayed(.5f, () => ev.Player.SpawnCurrentHat());
            }

            if (PauseRound || Round.ElapsedTime.Seconds < 5 || !RoundSummary.RoundInProgress() || !Helper.IsPlayerValid(ev.Player, true, false))
            {
                return;
            }

            if (ev.IsEscaped)
            {
                StatHandler.SendRequest(RequestType.Escape, "{\"playerid\": \"" + Helper.HandleId(ev.Player) + "\", \"role\": \"" + ((int)ev.Player.Role).ToString() + "\"}");
            }

            if (ev.NewRole == RoleType.None || ev.NewRole == RoleType.Spectator)
            {
                return;
            }

            StatHandler.SendRequest(RequestType.Spawn, "{\"playerid\": \"" + Helper.HandleId(ev.Player) + "\", \"spawnrole\": \"" + ((int)ev.NewRole).ToString() + "\"}");
        }
Пример #21
0
        /// <inheritdoc cref="Player.OnChangingRole(ChangingRoleEventArgs)"/>
        public void OnChangingRole(ChangingRoleEventArgs ev)
        {
            if (ev.Player?.IsHost != false || string.IsNullOrEmpty(ev.Player.UserId))
                return;

            if (ev.NewRole == RoleType.Spectator && Events.Instance.Config.ShouldDropInventory)
                ev.Player.Inventory.ServerDropAll();
        }
 public void OnSetClass(ChangingRoleEventArgs ev)
 {
     if (!(ev.Player.Id == playerReferenceHub.playerId))
     {
         return;
     }
     Destroy();
 }
Пример #23
0
 public void OnChangingRole(ChangingRoleEventArgs ev)
 {
     if (ev.Player.SessionVariables.ContainsKey("STP"))
     {
         ev.Items.Clear();
         ev.Items.AddRange((List <ItemType>)ev.Player.SessionVariables["STP"]);
         ev.Player.SessionVariables.Remove("STP");
     }
 }
        public void RunWhenPlayerSwitchesClasses(ChangingRoleEventArgs RoleChanged)
        {
            if (RoleChanged.Player != Hub)
            {
                return;
            }

            Counter = 0;
        }
        public void RunWhenPlayerSwitchesClasses(ChangingRoleEventArgs ev)
        {
            if (ev.Player != _ply)
            {
                return;
            }

            counter = 0;
        }
Пример #26
0
        public void WhenRoleChange(ChangingRoleEventArgs ev)
        {
            if (ev.Player != ply)
            {
                return;
            }

            switch (ev.Player.Team)
            {
            case Team.SCP:
                switch (ev.NewRole)
                {
                case RoleType.Scp0492:
                    Timing.RunCoroutine(RetainAHP());
                    Log.Debug($"Started coroutine for {ply.Nickname}: RetainAHP.", SCP008X.Instance.Config.DebugMode);
                    break;

                case RoleType.Scp096:
                    Timing.KillCoroutines(ahp);
                    Log.Debug($"Killed coroutine for {ply.Nickname}: RetainAHP.", SCP008X.Instance.Config.DebugMode);
                    ply.ArtificialHealth = 500;
                    break;
                }
                break;

            case Team.TUT:
                break;

            case Team.RIP:
                break;

            case Team.MTF:
                Timing.RunCoroutine(Infection());
                Timing.KillCoroutines(ahp);
                Log.Debug($"Traded coroutines for {ply.Nickname}: RetainAHP -> Infection.", SCP008X.Instance.Config.DebugMode);
                break;

            case Team.CDP:
                Timing.RunCoroutine(Infection());
                Timing.KillCoroutines(ahp);
                Log.Debug($"Traded coroutines for {ply.Nickname}: RetainAHP -> Infection.", SCP008X.Instance.Config.DebugMode);
                break;

            case Team.CHI:
                Timing.RunCoroutine(Infection());
                Timing.KillCoroutines(ahp);
                Log.Debug($"Traded coroutines for {ply.Nickname}: RetainAHP -> Infection.", SCP008X.Instance.Config.DebugMode);
                break;

            case Team.RSC:
                Timing.RunCoroutine(Infection());
                Timing.KillCoroutines(ahp);
                Log.Debug($"Traded coroutines for {ply.Nickname}: RetainAHP -> Infection.", SCP008X.Instance.Config.DebugMode);
                break;
            }
        }
Пример #27
0
 public void OnSetRole(ChangingRoleEventArgs ev)
 {
     if (shPlayers.Contains(ev.Player.Id))
     {
         if (GetTeam(ev.NewRole) != Team.TUT)
         {
             shPlayers.Remove(ev.Player.Id);
         }
     }
 }
Пример #28
0
        public void OnRoleChanging(ChangingRoleEventArgs ev)
        {
            if (!ev.Player.IsNormalAdvancedTeam())
            {
                ev.Player.CustomInfo = string.Empty;
                ev.Player.InfoArea  |= PlayerInfoArea.Role;
            }

            ev.Player.SetAdvancedTeam(ev.NewRole.GetTeam().GetNormalAdvancedTeam());
        }
Пример #29
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Player.OnChangingRole(ChangingRoleEventArgs)"/>
 public void OnChangingRole(ChangingRoleEventArgs ev)
 {
     Log.Info($"{ev.Player.Nickname} ({ev.Player.Role}) is changing his role! The new role will be {ev.NewRole}!");
     if (ev.NewRole == RoleType.Tutorial)
     {
         ev.Items.Clear();
         ev.Items.Add(ItemType.Flashlight);
         ev.Items.Add(ItemType.Medkit);
         Timing.CallDelayed(0.5f, () => ev.Player.AddItem(ItemType.Radio));
     }
 }
Пример #30
0
 public void ChangingRole(ChangingRoleEventArgs ev)
 {
     if (ev.NewRole == RoleType.Scp173 && DateTime.Now.Month == 11)
     {
         if (ev.Reason == SpawnReason.ForceClass && NoNutNovember.Singleton.Config.AllowForce173)
         {
             return;
         }
         ev.NewRole = GetAvailableScp();
     }
 }