internal void OnPlayerSpawn(SpawningEventArgs ev)
 {
     if (ev.Player.Team == Team.SCP || (pluginInstance.Config.AreTutorialsSCP && ev.Player.Team == Team.TUT))
     {
         ev.Player.GetDatabasePlayer().TotalScpGamesPlayed++;
     }
 }
Exemple #2
0
 public void OnSpawning(SpawningEventArgs ev)
 {
     if (ev.Player.Role == RoleType.Scp173)
     {
         ev.Player.Broadcast(7, "You can vent by typing `.vent` in the `~` console!\nYou will have 5 seconds until you will be vent locked");
     }
 }
Exemple #3
0
 public void OnSpawningPlayers(SpawningEventArgs ev)
 {
     if (Player.List.Count() < 3)
     {
         if (ev.Player.Team == Team.SCP && scp372.Count < Plugin.Singleton.Config.Max_SCP372_Count && !scp372.Contains(ev.Player.UserId))
         {
             if (rnd.Next(0, 101) <= Plugin.Singleton.Config.SpawnChance)
             {
                 Add372(ev.Player);
             }
         }
     }
     else
     {
         if (ev.RoleType == RoleType.ClassD && scp372.Count < Plugin.Singleton.Config.Max_SCP372_Count && !scp372.Contains(ev.Player.UserId))
         {
             if (rnd.Next(0, 101) <= Plugin.Singleton.Config.SpawnChance)
             {
                 Add372(ev.Player);
             }
         }
     }
     if (scp372.Contains(ev.Player.UserId))
     {
         Remove372(ev.Player);
     }
 }
Exemple #4
0
        private static void OnSpawning(SpawningEventArgs ev)
        {
            if (!(Scp457.Get(ev.Player) is Scp457 scp457))
            {
                return;
            }

            if (ev.RoleType != RoleType.Scp0492)
            {
                scp457.Destroy();
                return;
            }

            Door door = Map.GetDoorByName(Plugin.Instance.Config.Scp457Settings.SpawnDoor);

            if (door == null)
            {
                Log.Error("Could not find the spawn door for Scp457!");
                return;
            }

            if (PlayerMovementSync.FindSafePosition(door.Base.transform.position, out Vector3 pos, true))
            {
                ev.Position = pos;
            }
        }
Exemple #5
0
 public void OnSpawn(SpawningEventArgs ev)
 {
     if (shPlayers.Contains(ev.Player.Id))
     {
         ev.Position = shSpawnPos;
     }
 }
 internal void PlayerSpawn(SpawningEventArgs ev)
 {
     if (ev.Player.Role == RoleType.Scp079)
     {
         ev.Player.ShowHint(PluginMain.Instance.Config.Scp079StartMsg, PluginMain.Instance.Config.Scp079StartMsgDur);
     }
 }
Exemple #7
0
 public void OnSpawn(SpawningEventArgs ev)
 {
     if (Blackout.active && ev.Player.Role == RoleType.Scientist)
     {
         ev.Position = SpawnpointManager.GetRandomPosition(RoleType.Scp049).transform.position;
     }
 }
 /// <inheritdoc cref="Exiled.Events.Handlers.Player.OnSpawning(SpawningEventArgs)"/>
 internal static void OnSpawning(SpawningEventArgs ev)
 {
     if (ev.Player.Role == RoleType.Scp079)
     {
         ev.Player.ShowHint(Plugin.Instance.Config.MainTranslations.SpawnMsg, 10f);
     }
 }
Exemple #9
0
 public void OnSpawning(SpawningEventArgs ev)
 {
     if (Tracking.PlayersInvisibleByCommand.Contains(ev.Player))
     {
         Tracking.PlayersInvisibleByCommand.Remove(ev.Player);
     }
     Timing.CallDelayed(Subclass.Instance.CommonUtilsEnabled ? 2f : 0.1f, () =>
     {
         Tracking.QueuedCassieMessages.Clear();
         if (Tracking.NextSpawnWave.Contains(ev.Player) && Tracking.NextSpawnWaveGetsRole.ContainsKey(ev.Player.Role))
         {
             Tracking.RemoveAndAddRoles(ev.Player, true);
             Tracking.AddClass(ev.Player, Tracking.NextSpawnWaveGetsRole[ev.Player.Role]);
         }
         else
         {
             if (!Tracking.PlayersWithSubclasses.ContainsKey(ev.Player))
             {
                 Tracking.RemoveAndAddRoles(ev.Player, false, Subclass.Instance.Scp035Enabled && scp035.API.Scp035Data.GetScp035()?.Id == ev.Player.Id);
             }
         }
         foreach (string message in Tracking.QueuedCassieMessages)
         {
             Cassie.Message(message, true, false);
             Log.Debug($"Sending message via cassie: {message}", Subclass.Instance.Config.Debug);
         }
         Tracking.CheckRoundEnd();
     });
 }
Exemple #10
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Player.OnSpawning(SpawningEventArgs)"/>
 public void OnSpawning(SpawningEventArgs ev)
 {
     if (ev.RoleType == RoleType.Scientist)
     {
         ev.Position = new Vector3(53f, 1020f, -44f);
         Timing.CallDelayed(1f, () => ev.Player.CurrentItem = Item.Create(ItemType.GunCrossvec));
         Timing.CallDelayed(1f, () => ev.Player.AddItem(ItemType.GunLogicer));
     }
 }
Exemple #11
0
 internal void PlayerSpawn(SpawningEventArgs ev)
 {
     if (ev.Player.Role == RoleType.Scp079)
     {
         ev.Player.ReferenceHub.hints.Show(new TextHint(Better079Plugin.instance.Config.b079_spawn_msg, new HintParameter[] { new StringHintParameter("") }, new HintEffect[]
         {
             HintEffectPresets.TrailingPulseAlpha(0.5f, 1f, 0.5f, 2f, 0f, 3)
         }, 10f));
     }
 }
Exemple #12
0
 public void OnPlayerSpawn(SpawningEventArgs e)
 {
     if (No_096_Frustration.Singleton.Config.ChangingRoleTriggersPlugin)
     {
         if (e.RoleType == RoleType.Scp096)
         {
             Scp096Players.Add(e.Player);
             Timing.CallDelayed(0.1f, () => { CheckStuff(true); });
         }
     }
 }
Exemple #13
0
        private IEnumerator <float> OnPlayerSpawnRoutine(SpawningEventArgs ev)
        {
            yield return(Timing.WaitForSeconds(0.3f));

            if (ev.RoleType != RoleType.Scp173)
            {
                ev.Player.SetRole(RoleType.ClassD);
                yield return(Timing.WaitForSeconds(0.3f));

                ev.Player.Position = Common.GetRoomByName(Constant.SEVEN_NINE_CHAMBER).Position + new Vector3(0, 2);
            }
        }
        public void onSpawn(SpawningEventArgs ev)
        {
            if (flag)
            {
                flag = false;
                return;
            }

            if (GulagRef.isInQueue(ev.Player))
            {
                GulagRef.remove(ev.Player);
            }
        }
Exemple #15
0
        internal void OnPlayerSpawn(SpawningEventArgs ev)
        {
            Player databasePlayer = ev.Player.GetDatabasePlayer();

            if (ev.Player.Team == Team.SCP || (pluginInstance.Config.AreTutorialsSCP && ev.Player.Team == Team.TUT))
            {
                if (databasePlayer.RoundBanLeft >= 1 && ev.Player.Role != RoleType.Scp0492)
                {
                    Timing.CallDelayed(1.5f, () => pluginInstance.Functions.ReplacePlayer(ev.Player));
                }
                else
                {
                    ev.Player.GetDatabasePlayer().TotalScpGamesPlayed++;
                }
            }
        }
Exemple #16
0
        internal void Spawning(SpawningEventArgs ev)
        {
            if (Plugin.Instance.Config.Spawning == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.Spawning.Replace("%player%", ev.Player.ToString());

            message = message.Replace("%role%", ev.Player.Role.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.player_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.player_url, message, Plugin.Instance.Config.player_name);
        }
Exemple #17
0
 public void OnSpawning(SpawningEventArgs ev)
 {
     Timing.CallDelayed(Subclass.Instance.CommonUtilsEnabled ? 2f : 0.1f, () =>
     {
         if (!Subclass.Instance.RealisticSizesEnabled)
         {
             ev.Player.Scale = new Vector3(1, 1, 1);
         }
         try
         {
             TrackingAndMethods.RemoveZombie(ev.Player);
             TrackingAndMethods.QueuedCassieMessages.Clear();
             if (TrackingAndMethods.NextSpawnWave.Contains(ev.Player) && TrackingAndMethods.NextSpawnWaveGetsRole.ContainsKey(ev.Player.Role))
             {
                 TrackingAndMethods.AddClass(ev.Player, TrackingAndMethods.NextSpawnWaveGetsRole[ev.Player.Role]);
             }
             else
             {
                 if (!TrackingAndMethods.PlayersWithSubclasses.ContainsKey(ev.Player))
                 {
                     if (Subclass.Instance.Scp035Enabled)
                     {
                         EPlayer scp035 = (EPlayer)Loader.Plugins.First(pl => pl.Name == "scp035").Assembly.GetType("scp035.API.Scp035Data").GetMethod("GetScp035", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
                         TrackingAndMethods.RemoveAndAddRoles(ev.Player, false, scp035?.Id == ev.Player.Id);
                     }
                     else
                     {
                         TrackingAndMethods.RemoveAndAddRoles(ev.Player, false, false);
                     }
                 }
             }
             foreach (string message in TrackingAndMethods.QueuedCassieMessages)
             {
                 Cassie.Message(message, true, false);
                 Log.Debug($"Sending message via cassie: {message}", Subclass.Instance.Config.Debug);
             }
             Timing.RunCoroutine(TrackingAndMethods.CheckRoundEnd());
         }
         catch (Exception e)
         {
             Log.Error(e);
         }
     });
 }
Exemple #18
0
        public void OnSpawning(SpawningEventArgs ev)
        {
            PlayerInfo pinfo = PlayerInfoDict[ev.Player.UserId];

            pinfo.lastSide = ev.Player.Side;
        }
Exemple #19
0
        internal void PlayerSpawn(SpawningEventArgs ev)
        {
            //Log.Debug("roundStarted " + roundStarted);
            if (plugin.curMod.HasFlag(ModType.NONE) && plugin.enabledTypes.Contains(ModType.NONE))
            {
                return; // cuz none means none
            }
            if (plugin.curMod.HasFlag(ModType.SINGLESCPTYPE) && plugin.enabledTypes.Contains(ModType.SINGLESCPTYPE) && !(plugin.curMod.HasFlag(ModType.SCPBOSS) && plugin.enabledTypes.Contains(ModType.SCPBOSS)))
            {
                // do not comment kek, remember last time?
                if (!roundStarted)
                {
                    if (ev.RoleType == RoleType.Scp049 || ev.RoleType == RoleType.Scp0492 || ev.RoleType == RoleType.Scp079 || ev.RoleType == RoleType.Scp096 || ev.RoleType == RoleType.Scp106 || ev.RoleType == RoleType.Scp173 || ev.RoleType == RoleType.Scp93953 || ev.RoleType == RoleType.Scp93989)
                    {
                        ev.RoleType = rngRole;
                        Timing.RunCoroutine(ChangeClassLate(ev.Player, rngRole, -1));
                    }
                }
            }
            if (plugin.curMod.HasFlag(ModType.PLAYERSIZE) && plugin.enabledTypes.Contains(ModType.PLAYERSIZE))
            {
                if (!roundStarted || respawning)
                {
                    Timing.RunCoroutine(ChangeSizeLate(ev.Player));
                }
            }
            if (plugin.curMod.HasFlag(ModType.SCPBOSS) && plugin.enabledTypes.Contains(ModType.SCPBOSS))
            {
                // do not comment kek, remember last time?
                if (!roundStarted /*|| respawning*/)
                {
                    if (ev.Player.gameObject.Equals(boss))
                    {
                    }
                    else
                    {
                        if (ev.RoleType == RoleType.Scp049 || ev.RoleType == RoleType.Scp0492 || ev.RoleType == RoleType.Scp079 || ev.RoleType == RoleType.Scp096 || ev.RoleType == RoleType.Scp106 || ev.RoleType == RoleType.Scp173 || ev.RoleType == RoleType.Scp93953 || ev.RoleType == RoleType.Scp93989)
                        {
                            if (boss == null)
                            {
                                boss    = ev.Player.gameObject;
                                ev.Role = rngRoleBoss;
                                Timing.RunCoroutine(ChangeClassLate(ev.Player, rngRoleBoss, plugin.bossHpMulti, true));
                                //Timing.RunCoroutine(ChangeSizeLate(ev.Player));
                            }
                            else
                            {
                                ev.Role = RoleType.ClassD;
                                Timing.RunCoroutine(ChangeClassLate(ev.Player, RoleType.ClassD, -1));
                            }
                        }
                    }
                }
            }

            if (plugin.curMod.HasFlag(ModType.UPSIDEDOWN) && plugin.enabledTypes.Contains(ModType.UPSIDEDOWN))
            {
                if (ev.Role == RoleType.Scp106)
                {
                    Timing.RunCoroutine(ChangeSizeLate(ev.Player, -1f, -1f, -1f, client: false));
                }
                else
                {
                    Timing.RunCoroutine(ChangeSizeLate(ev.Player, 1f, -1f, 1f, client: false));
                }
            }

            /*if (plugin.curMod.HasFlag(ModType.NOWEAPONS) && plugin.enabledTypes.Contains(ModType.NOWEAPONS))
             * {
             *  if (!roundStarted)
             *  {
             *      if (ev.Role == RoleType.ChaosInsurgency || ev.Role == RoleType.NtfCadet || ev.Role == RoleType.NtfCommander || ev.Role == RoleType.NtfLieutenant || ev.Role == RoleType.NtfScientist || ev.Role == RoleType.FacilityGuard)
             *      {
             *          ev.Role = RoleType.ClassD;
             *          Timing.RunCoroutine(ChangeClassLate(ev.Player, RoleType.ClassD, -1));
             *      }
             *  }
             * }*/
            if (plugin.curMod.HasFlag(ModType.FINDWEAPONS) && plugin.enabledTypes.Contains(ModType.FINDWEAPONS))
            {
                //delete weapons
                Timing.RunCoroutine(DeletePlayerWeaponsLate(ev.Player));
            }
            if (plugin.curMod.HasFlag(ModType.ITEMRANDOMIZER) && plugin.enabledTypes.Contains(ModType.ITEMRANDOMIZER))
            {
                //Timing.RunCoroutine(RandomItems(ev.Player));
            }
        }
Exemple #20
0
 /// <summary>
 /// Invoked before spawning a player.
 /// </summary>
 /// <param name="ev">The <see cref="SpawningEventArgs"/> instance.</param>
 public static void OnSpawning(SpawningEventArgs ev) => Spawning.InvokeSafely(ev);
Exemple #21
0
 private void OnPlayerSpawn(SpawningEventArgs ev)
 {
     Timing.RunCoroutine(OnPlayerSpawnRoutine(ev));
 }
Exemple #22
0
        private static bool Prefix(CharacterClassManager __instance, bool lite = false, bool escape = false)
        {
            Role role = __instance.Classes.SafeGet(__instance.CurClass);

            if (!__instance._wasAnytimeAlive && __instance.CurClass != RoleType.Spectator && __instance.CurClass != RoleType.None)
            {
                __instance._wasAnytimeAlive = true;
            }

            __instance.InitSCPs();
            __instance.AliveTime = 0f;
            switch (role.team)
            {
            case Team.MTF:
                AchievementManager.Achieve("arescue");
                break;

            case Team.CHI:
                AchievementManager.Achieve("chaos");
                break;

            case Team.RSC:
            case Team.CDP:
                __instance.EscapeStartTime = (int)Time.realtimeSinceStartup;
                break;
            }

            __instance.GetComponent <Inventory>();
            try
            {
                __instance.GetComponent <FootstepSync>().SetLoudness(role.team, role.roleId.Is939());
            }
            catch
            {
            }

            if (NetworkServer.active)
            {
                Handcuffs component = __instance.GetComponent <Handcuffs>();
                component.ClearTarget();
                component.NetworkCufferId = -1;
            }

            if (role.team != Team.RIP)
            {
                if (NetworkServer.active && !lite)
                {
                    Vector3 constantRespawnPoint = NonFacilityCompatibility.currentSceneSettings.constantRespawnPoint;
                    if (constantRespawnPoint != Vector3.zero)
                    {
                        __instance._pms.OnPlayerClassChange(constantRespawnPoint, 0f);
                    }
                    else
                    {
                        GameObject randomPosition = CharacterClassManager._spawnpointManager.GetRandomPosition(__instance.CurClass);
                        Vector3    spawnPoint;
                        float      rotY;

                        if (randomPosition != null)
                        {
                            spawnPoint = randomPosition.transform.position;
                            rotY       = randomPosition.transform.rotation.eulerAngles.y;
                            AmmoBox component1 = __instance.GetComponent <AmmoBox>();
                            if (escape && __instance.KeepItemsAfterEscaping)
                            {
                                Inventory component2 = PlayerManager.localPlayer.GetComponent <Inventory>();
                                for (ushort index = 0; index < 3; ++index)
                                {
                                    if (component1[index] >= 15U)
                                    {
                                        component2.SetPickup(component1.types[index].inventoryID, component1[index], randomPosition.transform.position, randomPosition.transform.rotation, 0, 0, 0);
                                    }
                                }
                            }

                            component1.ResetAmmo();
                        }
                        else
                        {
                            spawnPoint = __instance.DeathPosition;
                            rotY       = 0f;
                        }

                        var ev = new SpawningEventArgs(API.Features.Player.Get(__instance.gameObject), __instance.CurClass, spawnPoint, rotY);

                        Player.OnSpawning(ev);

                        __instance._pms.OnPlayerClassChange(ev.Position, ev.RotationY);
                    }

                    if (!__instance.SpawnProtected && __instance.EnableSP && __instance.SProtectedTeam.Contains((int)role.team))
                    {
                        __instance.GodMode        = true;
                        __instance.SpawnProtected = true;
                        __instance.ProtectedTime  = Time.time;
                    }
                }

                if (!__instance.isLocalPlayer)
                {
                    __instance.GetComponent <PlayerStats>().maxHP = role.maxHP;
                }
            }

            __instance.Scp0492.iAm049_2 = __instance.CurClass == RoleType.Scp0492;
            __instance.Scp106.iAm106    = __instance.CurClass == RoleType.Scp106;
            __instance.Scp173.iAm173    = __instance.CurClass == RoleType.Scp173;
            __instance.Scp939.iAm939    = __instance.CurClass.Is939();
            __instance.RefreshPlyModel();

            return(false);
        }
Exemple #23
0
        public void OnSpawning(SpawningEventArgs ev)
        {
            if (ev.RoleType.GetTeam() == Team.SCP)
            {
                bool wasSCP = scps.ContainsKey(ev.Player.Id);
                if (!wasSCP)
                {
                    scps.Add(ev.Player.Id, ev.Player.DisplayNickname);
                }
                string name = "";
                switch (ev.RoleType)
                {
                case RoleType.Scp173:
                    name = Plugin.Instance.Config.Scp173Name;
                    break;

                case RoleType.Scp106:
                    name = Plugin.Instance.Config.Scp106Name;
                    break;

                case RoleType.Scp049:
                    name = Plugin.Instance.Config.Scp049Name;
                    break;

                case RoleType.Scp0492:
                    name = Plugin.Instance.Config.Scp0492Name.Replace("{name}", GetRandomName());
                    break;

                case RoleType.Scp079:
                    name = Plugin.Instance.Config.Scp079Name;
                    break;

                case RoleType.Scp096:
                    name = Plugin.Instance.Config.Scp096Name;
                    break;

                case RoleType.Scp93989:
                    name = Plugin.Instance.Config.Scp939_89Name;
                    break;

                case RoleType.Scp93953:
                    name = Plugin.Instance.Config.Scp939_53Name;
                    break;
                }

                ev.Player.DisplayNickname = name;
            }
            else if (scps.ContainsKey(ev.Player.Id) && ev.RoleType != RoleType.Spectator && ev.RoleType != RoleType.Tutorial)
            {
                ev.Player.DisplayNickname = scps[ev.Player.Id];
                scps.Remove(ev.Player.Id);
                if (names == null && !Plugin.Instance.Config.CanRepeat)
                {
                    usedNames = new List <string>();
                }
                if (names == null || names.Count == 0)
                {
                    names = new List <string>(Plugin.Instance.Config.Names);
                }
                string name = names[rnd.Next(names.Count)];
                if (!Plugin.Instance.Config.CanRepeat)
                {
                    names.Remove(name);
                    usedNames.Add(name);
                }
                ev.Player.DisplayNickname = name;
            }
            else if (ev.RoleType != RoleType.Spectator && ev.RoleType != RoleType.Tutorial)
            {
                if (names == null && !Plugin.Instance.Config.CanRepeat)
                {
                    usedNames = new List <string>();
                }
                if (names == null || names.Count == 0)
                {
                    names = new List <string>(Plugin.Instance.Config.Names);
                }
                string name = names[rnd.Next(names.Count)];
                if (!Plugin.Instance.Config.CanRepeat)
                {
                    names.Remove(name);
                    usedNames.Add(name);
                }
                ev.Player.DisplayNickname = name;
            }
            else if (ev.RoleType == RoleType.Spectator || ev.RoleType == RoleType.Tutorial)
            {
                string name = ev.Player.DisplayNickname;
                if (!Plugin.Instance.Config.CanRepeat)
                {
                    usedNames.Remove(name);
                    if (!usedNames.Contains(name)) // In case the names were used more than once
                    {
                        names.Add(ev.Player.DisplayNickname);
                    }
                }
                ev.Player.DisplayNickname = null;
            }
        }