Exemplo n.º 1
0
 private void OnMedicalItemUsed(UsedMedicalItemEventArgs ev)
 {
     if (ev.Player.IsInfected() && Config.HealItems.Contains(ev.Item))
     {
         ev.Player.Cure(ev.Item);
     }
 }
Exemplo n.º 2
0
 public void OnMedicalItemUsed(UsedMedicalItemEventArgs ev)
 {
     if (beenShot == null || bleeding == null)
     {
         return;
     }
     if (ev.Item == ItemType.Adrenaline && !BleedEffect.Instance.Config.AdrenalineStopsBleeding)
     {
         return;
     }
     if (ev.Item == ItemType.Painkillers && !BleedEffect.Instance.Config.PainkillersStopBleeding)
     {
         return;
     }
     if (ev.Item == ItemType.Medkit && !BleedEffect.Instance.Config.MedKitStopsBleeding)
     {
         return;
     }
     if (ev.Item == ItemType.SCP500 && !BleedEffect.Instance.Config.SCP500StopsBleeding)
     {
         return;
     }
     if (beenShot.ContainsKey(ev.Player.Id))
     {
         beenShot.Remove(ev.Player.Id);
     }
     if (bleeding.ContainsKey(ev.Player.Id))
     {
         bleeding.Remove(ev.Player.Id);
     }
 }
 public async void OnUsedMedicalItem(UsedMedicalItemEventArgs ev)
 {
     if (ev.Player != null && Instance.Config.EventsToLog.PlayerUsedMedicalItem && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
     {
         await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.UsedMedicalItem, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role, ev.Item))).ConfigureAwait(false);
     }
 }
        private void OnMedicalItemUsed(UsedMedicalItemEventArgs ev)
        {
            if (CheckItem(ev.Player.CurrentItem))
            {
                foreach (Player player in Player.List)
                {
                    if (player.Role == RoleType.Scp096)
                    {
                        if (player.CurrentScp is PlayableScps.Scp096 scp096)
                        {
                            if (scp096.HasTarget(ev.Player.ReferenceHub) &&
                                scp096.PlayerState == Scp096PlayerState.Enraged ||
                                scp096.PlayerState == Scp096PlayerState.Enraging ||
                                scp096.PlayerState == Scp096PlayerState.Attacking)
                            {
                                scp096.ResetEnrage();
                                ev.Player.Kill(DamageTypes.Poison);
                                return;
                            }
                        }
                    }
                }

                if (Plugin.Singleton.Config.ItemConfigs.LethalCfg.KillOnFail)
                {
                    ev.Player.Kill(DamageTypes.Poison);
                }
            }
        }
Exemplo n.º 5
0
 internal void OnUsedMedicalItem(UsedMedicalItemEventArgs ev)
 {
     if (!Round.IsStarted)
     {
         return;
     }
     data.TotalMedical++;
 }
Exemplo n.º 6
0
        private static void Prefix(ConsumableAndWearableItems __instance, ConsumableAndWearableItems.HealAnimation healAnimation, int mid)
        {
            if (healAnimation == ConsumableAndWearableItems.HealAnimation.DequipMedicalItem)
            {
                var ev = new UsedMedicalItemEventArgs(API.Features.Player.Get(__instance.gameObject), __instance.usableItems[mid].inventoryID);

                Player.OnMedicalItemUsed(ev);
            }
        }
Exemplo n.º 7
0
        public void OnMedical(UsedMedicalItemEventArgs e)
        {
            e.Player.Health = 500;
            Map.Broadcast(3, $"{e.Player.Nickname} Uzył {e.Item} jak mała pizda"); // wyświetla wiadomość dla całego serwera
            e.Player.Broadcast(10, "Jesteś pizdą");                                // wyswietla wiadomość dla danego gracza
            e.Player.ShowHint(XD, 17f);                                            // wyświetla wiadomość dla gracza na środku ekranu hyba

            Log.Info($"{e.Player.Nickname} użył przedmiotu medycznego o nazwie {e.Item}");
        }
Exemplo n.º 8
0
        public IEnumerator <float> SetPlayerScale(UsedMedicalItemEventArgs item)
        {
            foreach (float t in plugin.Config.Step1)
            {
                if (item.Player.Scale != null)
                {
                    item.Player.Scale = Vector3.one * t;
                }
                else
                {
                    yield break;
                }
                yield return(Timing.WaitForSeconds(plugin.Config.TimeAllSteps));
            }
            if (item.Player.Scale != null)
            {
                yield return(Timing.WaitForSeconds(plugin.Config.Duration));
            }
            foreach (float t in plugin.Config.Step2)
            {
                if (item.Player.Scale != null)
                {
                    item.Player.Scale = Vector3.one * t;
                }
                else
                {
                    yield break;
                }
                yield return(Timing.WaitForSeconds(plugin.Config.TimeAllSteps));
            }
            if (item.Player.Scale != null)
            {
                yield return(Timing.WaitForSeconds(plugin.Config.Duration));
            }
            foreach (float t in plugin.Config.Step3)
            {
                if (item.Player.Scale != null)
                {
                    item.Player.Scale = Vector3.one * t;
                }
                else
                {
                    yield break;
                }
                yield return(Timing.WaitForSeconds(plugin.Config.TimeAllSteps));
            }
            yield return(Timing.WaitForSeconds(0));

            usedItems.RemoveAt(0);
            if (usedItems.Count == 0)
            {
                foreach (CoroutineHandle handle in coroutines)
                {
                    Timing.KillCoroutines(handle);
                }
            }
        }
Exemplo n.º 9
0
        internal static void OnUse(UsedMedicalItemEventArgs 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" || PauseRound || !Helper.IsPlayerValid(ev.Player) || !RoundSummary.RoundInProgress())
            {
                return;
            }

            StatHandler.SendRequest(RequestType.Use, "{\"playerid\": \"" + Helper.HandleId(ev.Player) + "\", \"itemid\": \"" + ((int)ev.Item).ToString() + "\"}");
        }
Exemplo n.º 10
0
        //internal void CountAdrenaline(UsedMedicalItemEventArgs ev)
        //{
        //    foreach (Pickup item in Object.FindObjectsOfType<Pickup>())
        //    {
        //        if (item.ItemId.ToString() == "Adrenaline")
        //        {
        //            Log.Info("id: " + item.ItemId + "\nname: " + item.name);
        //        }

        //    }
        //}

        internal void UsedAdrenaline(UsedMedicalItemEventArgs item)
        {
            if (item.Item.ToString() == "Adrenaline")
            {
                UsedItem usedItem = new UsedItem(item);
                if (!usedFind(item))
                {
                    usedItems.Add(usedItem);
                    coroutines.Add(Timing.RunCoroutine(SetPlayerScale(item), "ScaleThread"));
                }
            }
        }
        public void RunWhenplayerDrinksSCP207(UsedMedicalItemEventArgs Used207)
        {
            if (Used207.Player != Hub || Used207.Item != ItemType.SCP207)
            {
                return;
            }

            if (Hub.IsGodModeEnabled)
            {
                Counter = 0;
                return;
            }

            if (Counter < CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit)
            {
                string MessageToReplace = RogerFKTokenReplace.ReplaceAfterToken(CreativeToolbox.ConfigRef.Config.DrinkingScp207Message, '%', new Tuple <string, object>[] { new Tuple <string, object>("counter", Counter) });
                Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{MessageToReplace}", new HintParameter[]
                {
                    new StringHintParameter("")
                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
            }

            if (Counter == CreativeToolbox.ConfigRef.Config.Scp207PryGateLimit)
            {
                string MessageToReplace = RogerFKTokenReplace.ReplaceAfterToken(CreativeToolbox.ConfigRef.Config.PryGatesWithScp207Message, '%', new Tuple <string, object>[] { new Tuple <string, object>("counter", Counter) });
                if (!CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(Hub))
                {
                    CreativeToolboxEventHandler.PlayersThatCanPryGates.Add(Hub);
                    Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{MessageToReplace}", new HintParameter[]
                    {
                        new StringHintParameter("")
                    }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
                }
            }

            if (Counter >= CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit)
            {
                string MessageToReplace = RogerFKTokenReplace.ReplaceAfterToken(CreativeToolbox.ConfigRef.Config.ExplodeAfterScp207Message, '%', new Tuple <string, object>[] { new Tuple <string, object>("counter", Counter) });
                if (CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(Hub))
                {
                    CreativeToolboxEventHandler.PlayersThatCanPryGates.Remove(Hub);
                }
                Hub.Health           = 0;
                Hub.AdrenalineHealth = 0;
                Hub.Kill();
                CreativeToolboxEventHandler.SpawnGrenadeOnPlayer(Hub, false);
                Counter = 0;
                Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{MessageToReplace}", new HintParameter[]
                {
                    new StringHintParameter("")
                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
            }
        }
Exemplo n.º 12
0
        private bool usedFind(UsedMedicalItemEventArgs item)
        {
            UsedItem temp = new UsedItem(item);
            string   name = item.Player.Nickname;

            foreach (UsedItem t in usedItems)
            {
                if (temp.Equals(t))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 13
0
        private static void Prefix(ConsumableAndWearableItems __instance, ConsumableAndWearableItems.HealAnimation healAnimation, int mid)
        {
            try
            {
                if (healAnimation == ConsumableAndWearableItems.HealAnimation.DequipMedicalItem)
                {
                    var ev = new UsedMedicalItemEventArgs(API.Features.Player.Get(__instance.gameObject), __instance.usableItems[mid].inventoryID);

                    Player.OnMedicalItemUsed(ev);
                }
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.UsedMedicalItem: {e}\n{e.StackTrace}");
            }
        }
Exemplo n.º 14
0
        internal void MedicalItemUsed(UsedMedicalItemEventArgs ev)
        {
            if (Plugin.Instance.Config.MedicalItemUsed == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.MedicalItemUsed.Replace("%player%", ev.Player.ToString());

            message = message.Replace("%item%", ev.Item.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);
        }
Exemplo n.º 15
0
        public void RunOnMedItemUsed(UsedMedicalItemEventArgs ev)
        {
            if (Instance.Config.EnableCustomHealing)
            {
                switch (ev.Item)
                {
                case ItemType.Painkillers:
                    ev.Player.AdrenalineHealth += (int)Instance.Config.PainkillerAhpHealthValue;
                    break;

                case ItemType.Medkit:
                    ev.Player.AdrenalineHealth += (int)Instance.Config.MedkitAhpHealthValue;
                    break;

                case ItemType.Adrenaline:
                    if (!(Instance.Config.AdrenalineAhpHealthValue <= 0))
                    {
                        ev.Player.AdrenalineHealth += (int)Instance.Config.AdrenalineAhpHealthValue;
                    }
                    break;

                case ItemType.SCP500:
                    ev.Player.AdrenalineHealth += (int)Instance.Config.Scp500AhpHealthValue;
                    break;

                case ItemType.SCP207:
                    ev.Player.AdrenalineHealth += (int)Instance.Config.Scp207AhpHealthValue;
                    break;
                }
            }

            if (!Instance.Config.EnableCustomEffectsAfterDrinkingScp207 || ev.Item != ItemType.SCP207)
            {
                return;
            }

            if (!ev.Player.ReferenceHub.TryGetComponent(out Scp207AbilityCounter scp207AbilityCounter))
            {
                ev.Player.ReferenceHub.gameObject.AddComponent <Scp207AbilityCounter>();
                return;
            }

            scp207AbilityCounter.counter++;
        }
Exemplo n.º 16
0
        public void RunWhenplayerDrinksSCP207(UsedMedicalItemEventArgs Used207)
        {
            if (Used207.Player != Hub || Used207.Item != ItemType.SCP207)
            {
                return;
            }

            if (Hub.IsGodModeEnabled)
            {
                Counter = 0;
                return;
            }

            if (Counter < CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit)
            {
                Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nnumber of drinks consumed: {Counter}", new HintParameter[]
                {
                    new StringHintParameter("")
                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
            }

            if (Counter == CreativeToolbox.ConfigRef.Config.Scp207PryGateLimit)
            {
                if (!CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(Hub.ReferenceHub))
                {
                    CreativeToolboxEventHandler.PlayersThatCanPryGates.Add(Hub.ReferenceHub);
                    Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nyou can now pry gates open", new HintParameter[]
                    {
                        new StringHintParameter("")
                    }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
                }
            }

            if (Counter >= CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit)
            {
                CreativeToolboxEventHandler.SpawnGrenadeOnPlayer(Hub, false);
                Counter = 0;
                Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nyou drank too much and your body could not handle it", new HintParameter[]
                {
                    new StringHintParameter("")
                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
            }
        }
Exemplo n.º 17
0
        public void OnMedicalItemUsed(UsedMedicalItemEventArgs ev)
        {
            //Debug message
            if (MedkitAntidote.Instance.Config.DebugEnabled)
            {
                Log.Debug($"{ev.Player.Nickname} used an {ev.Item}.");
            }

            //Store the appropriate list from the config file to a temporary variable
            List <EffectType> effectList = new List <EffectType> {
            };

            switch (ev.Item)
            {
            case ItemType.Medkit:
                effectList = MedkitAntidote.Instance.Config.MedkitEffectsToRemove;
                break;

            case ItemType.Adrenaline:
                effectList = MedkitAntidote.Instance.Config.AdrenalineEffectsToRemove;
                break;

            case ItemType.Painkillers:
                effectList = MedkitAntidote.Instance.Config.PillsEffectsToRemove;
                break;
            }

            //Loop through the list from the config file and remove chosen effects from a player after they've used a medical item
            if (effectList.Count > 0)
            {
                foreach (EffectType effectName in effectList)
                {
                    //Debug message
                    if (MedkitAntidote.Instance.Config.DebugEnabled)
                    {
                        Log.Debug($"Trying to remove {effectName} from {ev.Player.Nickname}.");
                    }

                    ev.Player.DisableEffect(effectName);
                }
            }
        }
Exemplo n.º 18
0
        private static void OnMedicalItemUsed(UsedMedicalItemEventArgs ev)
        {
            if (ev.Player != _player)
            {
                return;
            }

            int maxHp = ev.Player.ReferenceHub.characterClassManager.CurRole.maxHP;

            if (!_config.Scp035Modifiers.CanHealBeyondHostHp &&
                ev.Player.Health > maxHp &&
                (ev.Item.IsMedical() || ev.Item == ItemType.SCP207))
            {
                if (ev.Item == ItemType.SCP207)
                {
                    ev.Player.Health = Mathf.Max(maxHp, ev.Player.Health - 30);
                }
                else
                {
                    ev.Player.Health = maxHp;
                }
            }
        }
Exemplo n.º 19
0
 /// <summary>
 /// Invoked after a player used a medical item.
 /// </summary>
 /// <param name="ev">The <see cref="MedicalItemUsed"/> instance.</param>
 public static void OnMedicalItemUsed(UsedMedicalItemEventArgs ev) => MedicalItemUsed.InvokeSafely(ev);
Exemplo n.º 20
0
 public UsedItem(UsedMedicalItemEventArgs item)
 {
     this.item   = item;
     this.status = true;
 }
Exemplo n.º 21
0
        /// <inheritdoc cref="Handlers.Mixed.OnUsedMedicalItem(UsedMedicalItemEventArgs)"/>
        public void OnUsedMedicalItem(UsedMedicalItemEventArgs ev)
        {
            if (ev.Player == null)
            {
                return;
            }

            if (Instance.IsAdvancedSubclassing)
            {
                if (this.HasNoArmorDecayAbility(ev.Player))
                {
                    return;
                }
            }

            switch (ev.Item)
            {
            case ItemType.Medkit:
            {
                if (Instance.Config.Medkit != 0)
                {
                    if (!Instance.Config.WillDecay)
                    {
                        ev.Player.ArtificialHealth += Instance.Config.Medkit;

                        if (ev.Player.ArtificialHealthDecay != 0)
                        {
                            ev.Player.ArtificialHealthDecay = 0;
                        }
                    }
                    else
                    {
                        ev.Player.ArtificialHealth += Instance.Config.Medkit;
                    }
                }

                return;
            }

            case ItemType.SCP207:
            {
                if (Instance.Config.SCP207 != 0)
                {
                    if (!Instance.Config.WillDecay)
                    {
                        ev.Player.ArtificialHealth += Instance.Config.SCP207;

                        if (ev.Player.ArtificialHealthDecay != 0)
                        {
                            ev.Player.ArtificialHealthDecay = 0;
                        }
                    }
                    else
                    {
                        ev.Player.ArtificialHealth += Instance.Config.SCP207;
                    }
                }

                return;
            }
            }
        }
        public void RunWhenPlayerDrinksScp207(UsedMedicalItemEventArgs ev)
        {
            if (ev.Player != _ply || ev.Item != ItemType.SCP207)
            {
                return;
            }

            if (_ply.IsGodModeEnabled)
            {
                counter = 0;
                return;
            }

            if (counter < Instance.Config.Scp207DrinkLimit)
            {
                string messageToReplace =
                    Instance.Config.DrinkingScp207Message.ReplaceAfterToken('%',
                                                                            new[] { new Tuple <string, object>("counter", counter) });
                ev.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{messageToReplace}",
                                                               new HintParameter[]
                {
                    new StringHintParameter("")
                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
            }

            if (counter == Instance.Config.Scp207PryGateLimit)
            {
                string messageToReplace =
                    Instance.Config.PryGatesWithScp207Message.ReplaceAfterToken('%',
                                                                                new[] { new Tuple <string, object>("counter", counter) });
                if (!CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(_ply))
                {
                    CreativeToolboxEventHandler.PlayersThatCanPryGates.Add(_ply);
                    ev.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{messageToReplace}",
                                                                   new HintParameter[]
                    {
                        new StringHintParameter("")
                    }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
                }
            }

            if (counter >= Instance.Config.Scp207DrinkLimit)
            {
                string messageToReplace =
                    Instance.Config.ExplodeAfterScp207Message.ReplaceAfterToken('%',
                                                                                new[] { new Tuple <string, object>("counter", counter) });
                if (CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(_ply))
                {
                    CreativeToolboxEventHandler.PlayersThatCanPryGates.Remove(_ply);
                }
                _ply.Health           = 0;
                _ply.AdrenalineHealth = 0;
                _ply.Kill();
                CreativeToolboxEventHandler.SpawnGrenadeOnPlayer(_ply, false);
                counter = 0;
                ev.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{messageToReplace}",
                                                               new HintParameter[]
                {
                    new StringHintParameter("")
                }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f)));
            }
        }