public void PocketDeath(FailingEscapePocketDimensionEventArgs ev)
        {
            var playerInventory = ev.Player.Inventory.items;

            if (playerInventory != null)
            {
                foreach (var item in playerInventory)
                {
                    tempBeingRead = true;
                    tempDropped.Add(item.id);
                    if (Config.debug)
                    {
                        Log.Debug("Item " + item.id + " has been added to Pocket List");
                    }
                }
                if (Config.debug)
                {
                    Log.Debug("All Items Added.");
                }
                tempBeingRead = false;
            }
            else
            {
                if (Config.debug)
                {
                    Log.Debug("Inventory Empty, Skipping.");
                }
            }
        }
Esempio n. 2
0
 internal void OnFailEscapePD(FailingEscapePocketDimensionEventArgs ev)
 {
     if (config.PocketDimension.alwaysExitPocketDimensionGlobal && config.PocketDimension.alwaysExitPocketDimension[ev.Player.Role])
     {
         ev.IsAllowed = false;
     }
 }
Esempio n. 3
0
 public void OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev)
 {
     if (ev.Player.Role == RoleType.Scp106 && LockdownController.IsScp106LockedUp)
     {
         ev.Player.SendToPocketDimension();
         ev.IsAllowed = false;
     }
 }
Esempio n. 4
0
 public void OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev)
 {
     if (API.IsSerpent(ev.Player) && !config.SerpentsHandModifiers.FriendlyFire)
     {
         ev.IsAllowed = false;
         if (config.SerpentsHandModifiers.TeleportTo106)
         {
             ev.Player.Position = Extensions.Get106Position();
         }
     }
 }
Esempio n. 5
0
        internal void OnPocketDimensionDeath(FailingEscapePocketDimensionEventArgs ev)
        {
            Player Player106 = Player.List.FirstOrDefault(x => x.Role == RoleType.Scp106);

            if (Player106 != null && !SerpentsHand.API.SerpentsHand.GetSHPlayers().Contains(ev.Player))
            {
                int health = HealthOnKill.instance.Config.isHealthRegenRandom ?
                             (int)Player106.Health + Random.Range(5, 15) :
                             (int)Player106.Health + HealthOnKill.instance.Config.scp106HealthOnKillSet;
                Player106.Health = Mathf.Clamp(health, 0f, Player106.MaxHealth);
            }
        }
Esempio n. 6
0
 public void OnPocketDimensionDie(FailingEscapePocketDimensionEventArgs ev)
 {
     if (shPlayers.Contains(ev.Player.Id))
     {
         if (!SerpentsHand.instance.Config.FriendlyFire)
         {
             ev.IsAllowed = false;
         }
         if (SerpentsHand.instance.Config.TeleportTo106)
         {
             TeleportTo106(ev.Player);
         }
         shPocketPlayers.Remove(ev.Player.Id);
     }
 }
Esempio n. 7
0
 public void OnPocketDimensionDie(FailingEscapePocketDimensionEventArgs ev)
 {
     if (isToggled && Round.IsStarted && PlayerXP.instance.Config.Scp106PocketDeath > 0)
     {
         foreach (Player player in Player.List)
         {
             if (player.Role == RoleType.Scp106 && ev.Player.UserId != player.UserId && player.Team != Team.TUT && player != null && ev.Player != null && this != null)
             {
                 int xp = CalcXP(player, PlayerXP.instance.Config.Scp106PocketDeath);
                 SendHint(ev.Player, PlayerXP.instance.Config.PlayerDeathMessage.Replace("{xp}", GetXP(player.UserId).ToString()).Replace("{level}", GetLevel(player.UserId).ToString()));
                 AddXP(player.UserId, xp, PlayerXP.instance.Config.Scp106PocketDimensionDeathMessage.Replace("{xp}", xp.ToString()).Replace("{target}", ev.Player.Nickname));
             }
         }
     }
 }
Esempio n. 8
0
        internal void FailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev)
        {
            if (Plugin.Instance.Config.FailingEscapePocketDimension == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.FailingEscapePocketDimension.Replace("%player%", ev.Player.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);
        }
Esempio n. 9
0
        public void OnPocketDimensionDeath(FailingEscapePocketDimensionEventArgs ev)
        {
            Exiled.API.Features.Player Player106 = Exiled.API.Features.Player.List.FirstOrDefault(x => x.Role == RoleType.Scp106);

            if (Player106 != null && !SerpentsHand.API.SerpentsHand.GetSHPlayers().Contains(ev.Player))
            {
                if (HealthOnKill.instance.Config.isHealthRegenRandom)
                {
                    int rand   = r.Next(5, 15);
                    int health = (int)Player106.Health + rand;
                    Player106.Health = health < Player106.MaxHealth ? health : Player106.MaxHealth;
                }
                else
                {
                    int health = (int)Player106.Health + HealthOnKill.instance.Config.scp106HealthOnKillSet;
                    Player106.Health = health < Player106.MaxHealth ? health : Player106.MaxHealth;
                }
            }
        }
Esempio n. 10
0
 public void OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev)
 {
     if (EPlayer.List.Any(p => p.Role == RoleType.Scp106))
     {
         EPlayer scp106 = EPlayer.List.First(p => p.Role == RoleType.Scp106);
         if (Tracking.PlayersWithSubclasses.ContainsKey(scp106) && Tracking.PlayersWithSubclasses[scp106].Abilities.Contains(AbilityType.Zombie106))
         {
             ev.IsAllowed = false;
             ev.Player.SetRole(RoleType.Scp0492, true);
             if (Tracking.PlayersWithSubclasses[scp106].IntOptions.ContainsKey("Zombie106Health"))
             {
                 ev.Player.Health    = Tracking.PlayersWithSubclasses[scp106].IntOptions["Zombie106Health"];
                 ev.Player.MaxHealth = Tracking.PlayersWithSubclasses[scp106].IntOptions["Zombie106Health"];
             }
             List <Room> rooms = EMap.Rooms.Where(r => r.Zone == Exiled.API.Enums.ZoneType.HeavyContainment).ToList();
             ev.Player.Position = rooms[rnd.Next(rooms.Count)].Position + new Vector3(0, 1, 0);
         }
     }
 }
Esempio n. 11
0
        public async void OnPocketDimensionEscapeFailed(FailingEscapePocketDimensionEventArgs ev)
        {
            var player       = ev.Player;
            var currentTime  = DateTime.UtcNow;
            var initialTime  = _pocketDimensionTime[player.Id];
            var relativeTime = TimeUtils.ToRelativeTimeFuture(initialTime, currentTime);

            StringBuilder builder = new StringBuilder();

            builder.AppendLine("**Player failed to escape the pocket dimension**");
            builder.AppendLine($"Name: {player.Nickname} ({player.UserId})");
            builder.AppendLine($"Failed escape {relativeTime}");

            _pocketDimensionTime.Remove(player.Id);

            await _privateWebhook.ExecuteWebhook(
                builder.ToString(),
                "SCP-Bot",
                false
                );
        }
Esempio n. 12
0
 /// <summary>
 /// Invoked before choosing the incorrect pocket dimension exit.
 /// </summary>
 /// <param name="ev">The <see cref="FailingEscapePocketDimensionEventArgs"/> instance.</param>
 public static void OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev) => FailingEscapePocketDimension.InvokeSafely(ev);
Esempio n. 13
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Player.OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs)"/>
 public void OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev)
 {
     Log.Info($"{ev.Player.Nickname} is failing to escape from the pocket dimension!");
 }
Esempio n. 14
0
        private static bool Prefix(PocketDimensionTeleport __instance, Collider other)
        {
            try
            {
                NetworkIdentity component1 = other.GetComponent <NetworkIdentity>();
                if (!(component1 != null))
                {
                    return(false);
                }
                if (__instance.type == PocketDimensionTeleport.PDTeleportType.Killer || BlastDoor.OneDoor.isClosed)
                {
                    if (__instance.type == PocketDimensionTeleport.PDTeleportType.Killer)
                    {
                        var ev = new FailingEscapePocketDimensionEventArgs(API.Features.Player.Get(other.gameObject), __instance);

                        Player.OnFailingEscapePocketDimension(ev);

                        if (!ev.IsAllowed)
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        // warhead larry event goes here
                    }

                    component1.GetComponent <PlayerStats>()
                    .HurtPlayer(new PlayerStats.HitInfo(999990f, "WORLD", DamageTypes.Pocket, 0), other.gameObject);
                }
                else if (__instance.type == PocketDimensionTeleport.PDTeleportType.Exit)
                {
                    __instance.tpPositions.Clear();
                    bool flag = false;
                    DecontaminationController.DecontaminationPhase[] decontaminationPhases =
                        DecontaminationController.Singleton.DecontaminationPhases;
                    if (DecontaminationController.GetServerTime >
                        decontaminationPhases[decontaminationPhases.Length - 2].TimeTrigger)
                    {
                        flag = true;
                    }
                    List <string> stringList =
                        ConfigFile.ServerConfig.GetStringList(flag
                            ? "pd_random_exit_rids_after_decontamination"
                            : "pd_random_exit_rids");
                    if (stringList.Count > 0)
                    {
                        foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("RoomID"))
                        {
                            if (gameObject.GetComponent <Rid>() != null &&
                                stringList.Contains(gameObject.GetComponent <Rid>().id))
                            {
                                __instance.tpPositions.Add(gameObject.transform.position);
                            }
                        }

                        if (stringList.Contains("PORTAL"))
                        {
                            foreach (Scp106PlayerScript scp106PlayerScript in Object
                                     .FindObjectsOfType <Scp106PlayerScript>())
                            {
                                if (scp106PlayerScript.portalPosition != Vector3.zero)
                                {
                                    __instance.tpPositions.Add(scp106PlayerScript.portalPosition);
                                }
                            }
                        }
                    }

                    if (__instance.tpPositions == null || __instance.tpPositions.Count == 0)
                    {
                        foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("PD_EXIT"))
                        {
                            __instance.tpPositions.Add(gameObject.transform.position);
                        }
                    }

                    Vector3 tpPosition = __instance.tpPositions[Random.Range(0, __instance.tpPositions.Count)];
                    tpPosition.y += 2f;
                    PlayerMovementSync component2 = other.GetComponent <PlayerMovementSync>();
                    component2.SetSafeTime(2f);

                    var ev = new EscapingPocketDimensionEventArgs(API.Features.Player.Get(component2.gameObject), tpPosition);

                    Player.OnEscapingPocketDimension(ev);

                    if (ev.IsAllowed)
                    {
                        component2.OverridePosition(tpPosition, 0.0f, false);
                        __instance.RemoveCorrosionEffect(other.gameObject);
                        PlayerManager.localPlayer.GetComponent <PlayerStats>()
                        .TargetAchieve(component1.connectionToClient, "larryisyourfriend");
                    }

                    component2.OverridePosition(tpPosition, 0.0f, false);
                    __instance.RemoveCorrosionEffect(other.gameObject);
                    PlayerManager.localPlayer.GetComponent <PlayerStats>()
                    .TargetAchieve(component1.connectionToClient, "larryisyourfriend");
                }

                if (!__instance.RefreshExit)
                {
                    return(false);
                }
                ImageGenerator.pocketDimensionGenerator.GenerateRandom();
                return(false);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.EscapingAndFailingEscapePocketDimension: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Esempio n. 15
0
 public void OnFailingEscapePocketDimension(FailingEscapePocketDimensionEventArgs ev)
 {
     CheckForEvent("OnFailingEscapePocketDimension", true, false, ev.Player);
 }