Beispiel #1
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (ev.Player.TeamRole.Role == Role.SCP_173)
     {
         ev.Player.Kill();
     }
 }
        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            int damageAmount  = plugin.GetConfigInt(SCP939.swingDamage939);
            int ChanceToBleed = plugin.GetConfigInt(SCP939.infectChance);

            //Sets damage to config amount if above 0
            if ((ev.Attacker.TeamRole.Role == Role.SCP_939_89 || ev.Attacker.TeamRole.Role == Role.SCP_939_53) && damageAmount > 0)
            {
                ev.Damage = damageAmount;
            }

            //When SCP939 damages a player, adds them to list of bleeding players to damage
            if ((SCP939.isEnabled && ev.Attacker.TeamRole.Role == Role.SCP_939_89 || SCP939.isEnabled && ev.Attacker.TeamRole.Role == Role.SCP_939_53) &&
                !SCP939.playersToDamage.Contains(ev.Player.SteamId) &&
                ChanceToBleed > 0 &&
                new Random().Next(1, 100) <= ChanceToBleed)
            {
                if (rolesCanBleed == null || rolesCanBleed.Count == 0 || rolesCanBleed.First() == -1)
                {
                    SCP939.playersToDamage.Add(ev.Player.SteamId);
                }
                else if (rolesCanBleed.Count > 0 && rolesCanBleed.Contains((int)ev.Player.TeamRole.Role))
                {
                    SCP939.playersToDamage.Add(ev.Player.SteamId);
                }
            }
        }
Beispiel #3
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (plugin.Active && ev.DamageType == DamageType.NUKE && ev.Player.TeamRole.Team == Smod2.API.Team.SCP)
     {
         ev.Damage = 0;
     }
 }
Beispiel #4
0
 public void OnHurt(PlayerHurtEvent ev)
 {
     if (Dump.InstantKill.Contains(ev.Attacker.UserId))
     {
         ev.Player.Kill();
     }
 }
Beispiel #5
0
 public void OnPlayerHurt(ref PlayerHurtEvent ev)
 {
     if (zhunbeiyes == true)
     {
         ev.Amount = 0;
     }
 }
Beispiel #6
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (ev.DamageType == Smod2.API.DamageType.TESLA)
     {
         ev.Damage = 0;
     }
 }
Beispiel #7
0
        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            if (!RoundSummary.RoundInProgress() || ev.Attacker == null || ev.Attacker.gameObject.GetComponent <CharacterClassManager>().SpawnProtected || ev.Player.Teamclass().role == RoleType.Spectator)
            {
                return;
            }

            if (ev.Attacker.userId == ev.Player.userId)
            {
                DiscordLab.bot.NewMessage($"{ev.Player.name} self-harmed for {Math.Round(ev.Damage)} with {ev.DamageType.name}");
            }

            else if (ev.Attacker.Teamclass().cleanTeam == ev.Player.Teamclass().cleanTeam)
            {
                DiscordLab.bot.NewMessage($"**{ev.Attacker.Teamclass().role} {ev.Attacker.ToString()} attacked {ev.Player.Teamclass().role} {ev.Player.ToString()} for {Math.Round(ev.Damage)} with {ev.DamageType.name}**");
            }

            else if (ev.Player.Disarmed() > 0 && !ev.Attacker.gameObject.GetComponent <CharacterClassManager>().IsAnyScp())
            {
                DiscordLab.bot.NewMessage($"__{ev.Attacker.Teamclass().role} {ev.Attacker.ToString()} attacked {ev.Player.Teamclass().role} {ev.Player.ToString()} for {Math.Round(ev.Damage)} with {ev.DamageType.name}__");
            }

            else
            {
                DiscordLab.bot.NewMessage($"{ev.Attacker.name} -> {ev.Player.name} -> {Math.Round(ev.Damage)} ({ev.DamageType.name})");
            }
        }
Beispiel #8
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (GamemodeManager.GamemodeManager.CurrentMode == plugin)
     {
         if (ev.DamageType != DamageType.FALLDOWN && ev.DamageType != DamageType.SCP_106 && (!scp_list.Contains(ev.Player.PlayerId) || ev.Player.TeamRole.Team == Team.CLASSD))
         {
             if (allowkill)
             {
                 ev.Damage = 20000.0F;
             }
             else
             {
                 ev.Damage = 0.0F;
             }
         }
         if (scp_list.Contains(ev.Player.PlayerId) && scp_list.Contains(ev.Attacker.PlayerId) && ev.Player.PlayerId != ev.Attacker.PlayerId)
         {
             ev.Damage = 0.0F;
         }
         if ((ev.Attacker.TeamRole.Role == Role.SCP_049 && ev.Player.TeamRole.Role != Role.SCP_049) || (ev.Attacker.TeamRole.Role == Role.SCP_106 && ev.Player.TeamRole.Role != Role.SCP_106))
         {
             ev.Damage = 0.0F;
         }
     }
 }
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (!allowFemurBreaker && ev.DamageType == DamageType.LURE)
     {
         ev.Damage = 0;
     }
 }
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (ev.DamageType == DamageTypes.Flying)
     {
         ev.Damage = 0;
     }
 }
Beispiel #11
0
        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            if (!RoundSummary.RoundInProgress() || ev.Player.roleType == RoleType.Spectator)
            {
                return;
            }

            if (ev.Attacker == null || ev.Attacker.isEmpty)
            {
                return;
            }
            else if (ev.Attacker.userId == ev.Player.userId)
            {
                DiscordLab.bot.NewMessage($"{ev.Player.nameClean} self-harmed for {Math.Round(ev.Damage)} with {ev.DamageType.name}");
            }
            else if (IsTeamDamage(ev.Player.team, ev.Attacker.team))
            {
                DiscordLab.bot.NewMessage($"**{ev.Attacker.roleType} {ev.Attacker} attacked {ev.Player.roleType} {ev.Player} for {Math.Round(ev.Damage)} with {ev.DamageType.name}**");
            }
            else if (ev.Player.disarmed > -1 && !ev.Attacker.refHub.characterClassManager.IsAnyScp())
            {
                DiscordLab.bot.NewMessage($"__{ev.Attacker.roleType} {ev.Attacker} attacked {ev.Player.roleType} {ev.Player} for {Math.Round(ev.Damage)} with {ev.DamageType.name}__");
            }
            else
            {
                DiscordLab.bot.NewMessage($"{ev.Attacker.nameClean} -> {ev.Player.nameClean} -> {Math.Round(ev.Damage)} ({ev.DamageType.name})");
            }
        }
Beispiel #12
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (this.plugin.enable)
     {
         if (ev.Player.PlayerId == ev.Attacker.PlayerId && ev.DamageType == DamageType.FRAG)
         {
             if (this.plugin.bomber == 2)
             {
                 int damage = (int)ev.Damage;
                 ev.Damage = 0;
                 Timer t = new Timer
                 {
                     Interval = 1000,
                     Enabled  = true
                 };
                 t.Elapsed += delegate
                 {
                     ev.Attacker.Damage(damage, DamageType.FALLDOWN);
                     t.Dispose();
                 };
             }
             else if (this.plugin.bomber == 1)
             {
                 ev.Damage = 0;
             }
         }
         else if (this.plugin.mirror > 0f)
         {
             if (this.plugin.isTeamkill(ev.Attacker, ev.Player))
             {
                 ev.Attacker.Damage((int)(ev.Damage * this.plugin.mirror));
             }
         }
     }
 }
 internal void PlayerHurt(ref PlayerHurtEvent ev)
 {
     if (ev.Attacker == null)
     {
         return;                      // no player
     }
     if (ev.Attacker == ev.Player)
     {
         return;                           // same player
     }
     //if (ev.Player.GetHealth() - ev.Amount > 0f) return;
     if ((ev.DamageType.name == DamageTypes.Grenade.name || ev.Info.GetDamageType().name == DamageTypes.Grenade.name))
     {
         if (grenades == null)
         {
             SetAmountZero(ref ev);
             return;
         }
         var team   = grenades.team;
         var target = ev.Player.GetTeam();
         Log.Debug("Grenade Team: " + team.ToString() + " Player Team: " + target.ToString());
         CheckKill(ref ev, team, target, Player.GetPlayer(grenades.Userid), ev.Player);
     }
     else
     {
         var team   = ev.Attacker.GetTeam();
         var target = ev.Player.GetTeam();
         CheckKill(ref ev, team, target, ev.Attacker, ev.Player);
     }
 }
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (HealingPlayers.ContainsPlayer(ev.Player))
     {
         HealingPlayers[ev.Player.PlayerId].finished = true;
     }
 }
        public void OnPlayerHurt(ref PlayerHurtEvent ev)
        {
            if (!playerTable.ContainsKey(ev.Attacker) || !playerTable.ContainsKey(ev.Player))
            {
                Plugin.Error("Player hurt event failed, maybe they just joined?");
                return;
            }

            if (ev.Attacker == null || ev.Player == null)
            {
                return;
            }
            if (!ev.Player.characterClassManager.isClient || !ev.Attacker.characterClassManager.isClient)
            {
                return;
            }

            Team attackerT = Plugin.GetTeam(ev.Attacker.characterClassManager.CurClass);
            Team attackedT = Plugin.GetTeam(ev.Player.characterClassManager.CurClass);

            if (attackedT == attackerT && ev.Attacker != ev.Player)
            {
                if (playerTable[ev.Attacker] >= damageThreshold)
                {
                    GameCore.Console.singleton.TypeCommand($"/ban " + ev.Attacker.queryProcessor.PlayerId + " " + banMins, new FFABSender());
                }
                else
                {
                    playerTable[ev.Attacker] += (int)ev.Info.Amount;
                }
            }
        }
Beispiel #16
0
        private void HandlePlayerHurt(object sender, PlayerHurtEventArgs e)
        {
            Weapon weapon = new Weapon()
            {
                Equipment      = (Models.EquipmentElement)((int)e.Weapon.Weapon),
                OriginalString = e.Weapon.OriginalString,
                AmmoInMagazine = (short)e.Weapon.AmmoInMagazine,
                AmmoType       = (short)e.Weapon.AmmoType,
            };

            PlayerHurtEvent newEvent = new PlayerHurtEvent()
            {
                PlayerSteamID   = e.Player.SteamID,
                AttackerSteamID = e.Attacker?.SteamID,
                Health          = e.Health,
                Armor           = e.Armor,
                Weapon          = weapon,
                WeaponString    = e.WeaponString,
                HealthDamage    = e.HealthDamage,
                ArmorDamage     = e.ArmorDamage,
                Hitgroup        = (Models.Hitgroup)((int)e.Hitgroup)
            };

            CurrentTick.Events.Add(newEvent);
        }
        internal void SetAmountZero(ref PlayerHurtEvent ev)
        {
            ev.Amount = 0f;
            var info = ev.Info;

            info.Amount = 0f;
            ev.Info     = info;
        }
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     /// <summary>
     /// This is called before the player is going to take damage.
     /// In case the attacker can't be passed, attacker will be null (fall damage etc)
     /// This may be broken into two events in the future
     /// </summary>
     plugin.SendMessageAsync(plugin.GetConfigString("discord_channel_onplayerhurt"), ev.Player.Name + " (" + ev.Player.SteamId + plugin.MultiLanguage(24) + ev.Attacker.Name + " (" + ev.Attacker.SteamId + plugin.MultiLanguage(25) + ev.DamageType + ".");
 }
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     // por si se produce algun fall en la asignación de variables.
     if ((!Scp173.ContainsKey(ev.Player.SteamId)) && (ev.Player.TeamRole.Role == Role.SCP_173))
     {
         Scp173deads.Add(ev.Player.SteamId, true);
         Scp173.Add(ev.Player.SteamId, true);
     }
 }
Beispiel #20
0
        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            if (Zombie.ContainsKey(ev.Player.SteamId))
            {
                if (ev.Player.TeamRole.Role == Role.SCP_049_2)
                {
                    if ((Zombie[ev.Player.SteamId] == 7) || (Zombie[ev.Player.SteamId] == 3))
                    {
                        ev.Damage /= 2;
                    }
                    if ((Zombie[ev.Player.SteamId] == 7) || (Zombie[ev.Player.SteamId] == 2))
                    {
                        ev.Attacker.SetHealth(ev.Attacker.GetHealth() - 1);
                    }
                }

                if ((ev.Attacker.TeamRole.Role == Role.SPECTATOR) && (Zombie[ev.Player.SteamId] == -1))
                {
                    if (ev.DamageType == DamageType.FRAG)
                    {
                        if (ev.Player.TeamRole.Team == Smod2.API.Team.SCP)
                        {
                            ev.Damage = 0;
                        }
                        else
                        {
                            ev.Damage = 90;
                        }
                    }
                }
                if (ev.Attacker.TeamRole.Role == Role.SCP_049_2)
                {
                    if (ev.DamageType == DamageType.FRAG)
                    {
                        if (ev.Player.TeamRole.Team == Smod2.API.Team.SCP)
                        {
                            ev.Damage = 0;
                        }
                        else
                        {
                            ev.Damage = 90;
                        }
                    }
                    if (Zombie.ContainsKey(ev.Attacker.SteamId))
                    {
                        if ((Zombie[ev.Attacker.SteamId] == 5) || (Zombie[ev.Attacker.SteamId] == 7))
                        {
                            ev.Damage += ev.Player.GetHealth();
                        }
                        if ((Zombie[ev.Attacker.SteamId] == 6) || (Zombie[ev.Attacker.SteamId] == 7))
                        {
                            ev.Attacker.AddHealth(700);
                        }
                    }
                }
            }
        }
Beispiel #21
0
        void IEventHandlerPlayerHurt.OnPlayerHurt(PlayerHurtEvent ev)
        {
            // 判断有木有SCP-181
            if (GlobalVar.scp181 == null)
            {
                return;
            }

            // 判断玩家是不是SCP-181 不是则退出本次事件
            if (ev.Player.Name.Equals(GlobalVar.scp181.Name) == false)
            {
                return;
            }

            if (ev.Player.PlayerId != GlobalVar.scp181.PlayerId)
            {
                return;
            }

            // 判断如果SCP-181在口袋空间的话退出保护 | Future: 跳过这个事件 交个口袋空间事件接管
            if (ev.DamageType == DamageType.SCP_106)
            {
                return;
            }


            /*
             * 几率判断
             */

            // 随机数~  1-100 百分比
            Random random = new Random();
            int    number = random.Next(1, 100);

            // 获取设置的概率
            int luckyNumber = this.plugin.GetConfigInt("scp181_dodge_chance");

            // 如果随机数<=设置的概率 就免伤害 | 只有SCP的攻击可以免伤
            if (number <= luckyNumber && (Team)ev.Attacker.TeamRole.Team == Team.SCP)
            {
                GlobalVar.scp181.PersonalBroadcast(8, "<color=orange>[SCP-181]</color> <color=green>SCP-181免除本次伤害~</color>", false);
                ev.Damage = 0;
            }


            // 如果debug模式开启了
            if (plugin.GetConfigBool("scp181_debug") == true)
            {
                plugin.Info("======================SCP-181 HurtEvent [Debug]======================");
                plugin.Info("SCP-181: " + ev.Player.Name + "(" + ev.Player.PlayerId + ") | Hp: " + ev.Player.GetHealth());
                plugin.Info("LuckyNumber: " + luckyNumber + " | RandomNumber: " + number);
                plugin.Info("Damage: " + ev.Damage + " | Attacker: " + ev.Attacker.TeamRole.Name);
            }

            return;
        }
Beispiel #22
0
        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            /// <summary>
            /// This is called before the player is going to take damage.
            /// In case the attacker can't be passed, attacker will be null (fall damage etc)
            /// This may be broken into two events in the future
            /// </summary>

            if (ev.Player == null || ev.Player.TeamRole.Role == Smod2.API.Role.UNASSIGNED)
            {
                return;
            }

            if (ev.Attacker == null || ev.Player.PlayerId == ev.Attacker.PlayerId)
            {
                Dictionary <string, string> noAttackerVar = new Dictionary <string, string>
                {
                    { "damage", ev.Damage.ToString() },
                    { "damagetype", ev.DamageType.ToString() },
                    { "playeripaddress", ev.Player.IpAddress },
                    { "playername", ev.Player.Name },
                    { "playerplayerid", ev.Player.PlayerId.ToString() },
                    { "playersteamid", ev.Player.SteamId },
                    { "playerclass", ev.Player.TeamRole.Role.ToString() },
                    { "playerteam", ev.Player.TeamRole.Team.ToString() }
                };
                plugin.SendMessage(Config.GetArray("channels.onplayerhurt.noattacker"), "player.onplayerhurt.noattacker", noAttackerVar);
                return;
            }

            Dictionary <string, string> variables = new Dictionary <string, string>
            {
                { "damage", ev.Damage.ToString() },
                { "damagetype", ev.DamageType.ToString() },
                { "attackeripaddress", ev.Attacker.IpAddress },
                { "attackername", ev.Attacker.Name },
                { "attackerplayerid", ev.Attacker.PlayerId.ToString() },
                { "attackersteamid", ev.Attacker.SteamId },
                { "attackerclass", ev.Attacker.TeamRole.Role.ToString() },
                { "attackerteam", ev.Attacker.TeamRole.Team.ToString() },
                { "playeripaddress", ev.Player.IpAddress },
                { "playername", ev.Player.Name },
                { "playerplayerid", ev.Player.PlayerId.ToString() },
                { "playersteamid", ev.Player.SteamId },
                { "playerclass", ev.Player.TeamRole.Role.ToString() },
                { "playerteam", ev.Player.TeamRole.Team.ToString() }
            };

            if (IsTeamDamage((int)ev.Attacker.TeamRole.Team, (int)ev.Player.TeamRole.Team))
            {
                plugin.SendMessage(Config.GetArray("channels.onplayerhurt.friendlyfire"), "player.onplayerhurt.friendlyfire", variables);
                return;
            }

            plugin.SendMessage(Config.GetArray("channels.onplayerhurt.default"), "player.onplayerhurt.default", variables);
        }
Beispiel #23
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (((SerpentsHand.shPlayers.Contains(ev.Player.SteamId) && (ev.Attacker.TeamRole.Team == Team.SCP || ev.DamageType == DamageType.POCKET)) ||
          (SerpentsHand.shPlayers.Contains(ev.Attacker.SteamId) && ev.Player.TeamRole.Team == Team.SCP) ||
          (SerpentsHand.shPlayers.Contains(ev.Player.SteamId) && SerpentsHand.shPlayers.Contains(ev.Attacker.SteamId) &&
           ev.Player.SteamId != ev.Attacker.SteamId)) && !plugin.GetConfigBool("sh_friendly_fire"))
     {
         ev.Damage = 0;
     }
 }
Beispiel #24
0
 public void On_PlayerHurt(PlayerHurtEvent phe)
 {
     if (!phe.Attacker.IsPlayer())
     {
         if (phe.Attacker.baseEntity.creatorEntity.ToPlayer().userID == phe.Victim.GameID)
         {
             phe.DamageAmounts = null;
         }
     }
 }
Beispiel #25
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (ev.Attacker.TeamRole.Role == Role.TUTORIAL)
     {
         if (!allowGhostToDamage)
         {
             ev.Damage = 0f;
         }
     }
 }
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (this.plugin.enable)
     {
         if (this.plugin.mirror > 0f && ev.DamageType != DamageType.FRAG)
         {
             if (this.plugin.isTeamkill(ev.Attacker, ev.Player) && !this.plugin.isImmune(ev.Attacker) && !this.plugin.banWhitelist.Contains(ev.Attacker.UserId))
             {
                 if (this.plugin.invert > 0)
                 {
                     if (this.plugin.Teamkillers.ContainsKey(ev.Attacker.UserId) && this.plugin.Teamkillers[ev.Attacker.UserId].Teamkills.Count >= this.plugin.invert)
                     {
                         //if (this.plugin.outall)
                         //{
                         //	this.plugin.Info("Dealing damage to " + ev.Attacker.Name + ": " + (ev.Damage * this.plugin.mirror));
                         //}
                         ev.Attacker.Damage((int)(ev.Damage * this.plugin.mirror));
                     }
                     // else do nothing
                 }
                 else
                 {
                     //if (this.plugin.outall)
                     //{
                     //	this.plugin.Info("Dealing damage to " + ev.Attacker.Name + ": " + (ev.Damage * this.plugin.mirror));
                     //}
                     ev.Attacker.Damage((int)(ev.Damage * this.plugin.mirror));
                 }
             }
         }
         else if (ev.Player.PlayerId == ev.Attacker.PlayerId && ev.DamageType == DamageType.FRAG)
         {
             if (this.plugin.bomber == 2)
             {
                 int damage = (int)ev.Damage;
                 ev.Damage = 0;
                 Timer t = new Timer
                 {
                     Interval = 1000,
                     Enabled  = true
                 };
                 t.Elapsed += delegate
                 {
                     ev.Attacker.Damage(damage, DamageType.FALLDOWN);
                     t.Dispose();
                 };
             }
             else if (this.plugin.bomber == 1)
             {
                 ev.Damage = 0;
             }
         }
     }
 }
Beispiel #27
0
 void IEventHandlerPlayerHurt.OnPlayerHurt(PlayerHurtEvent ev)
 {
     send(ev, new IdMapping()
          .appendId(Lib.PLAYER_ID, ev.Player)
          .appendId(Lib.PLAYER_EVENT_SCPDATA_ID, ev.Player.Scp079Data)
          .appendId(Lib.PLAYER_EVENT_TEAM_ROLE_ID, ev.Player.TeamRole)
          .appendId(Lib.ATTACKER_ID, ev.Attacker)
          .appendId(Lib.EVENT_ATTACKE_SCPDATA_ID, ev.Attacker.Scp079Data)
          .appendId(Lib.EVENT_ATTACKER_TEAMROLE_ID, ev.Attacker.TeamRole)
          );
 }
Beispiel #28
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (GamemodeManager.GamemodeManager.GetCurrentMode().Equals(plugin) && !plugin.pluginManager.Server.Map.WarheadDetonated)
     {
         if (ev.Attacker != null && ev.Attacker.TeamRole.Role == Role.SCP_049_2)
         {
             ev.Damage = 0.0f;
             ev.Player.ChangeRole(Role.SCP_049_2);
         }
     }
 }
        // Los clases d roban munición si su rival tiene munición, ganan salud = al daño que hacen cuando estan a poca vida el cual se duplica si estan a muy poca vida
        // tienen la habilidad de hacerse invisible por 35 de salud durante 10 segundos , disparar desactiva la habilidad



        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            //Class D - [Astucia] //
            if (ev.Attacker.TeamRole.Role == Role.CHAOS_INSURGENCY)
            {
                if ((Classdh.ContainsKey(ev.Attacker.SteamId)))
                {
                    cooldownn[ev.Attacker.SteamId] += 12;
                }
            }
            if (ev.Attacker.TeamRole.Role == Role.CLASSD)
            {
                // detecta si la habilidad del clase d esta en cooldown y suma 3 segundos al diccionario restandole asi tiempo a la habilidad.

                if (Classdh[ev.Attacker.SteamId] == false)
                {
                    cooldownn[ev.Attacker.SteamId] += 3;
                }

                if (ev.Attacker.GetGhostMode() == true)
                {
                    ev.Attacker.SetGhostMode(false);
                }

                if (ev.Player.GetGhostMode() == true)
                {
                    ev.Player.SetGhostMode(false);
                }
                if (ev.Player.GetAmmo(AmmoType.DROPPED_5) >= 3)
                {
                    ev.Attacker.SetAmmo(AmmoType.DROPPED_5, ev.Attacker.GetAmmo(AmmoType.DROPPED_5) + 3);
                    ev.Player.SetAmmo(AmmoType.DROPPED_5, ev.Player.GetAmmo(AmmoType.DROPPED_5) - 3);
                }
                if (ev.Player.GetAmmo(AmmoType.DROPPED_7) >= 3)
                {
                    ev.Attacker.SetAmmo(AmmoType.DROPPED_7, ev.Attacker.GetAmmo(AmmoType.DROPPED_7) + 3);
                    ev.Player.SetAmmo(AmmoType.DROPPED_7, ev.Player.GetAmmo(AmmoType.DROPPED_7) - 3);
                }
                if (ev.Player.GetAmmo(AmmoType.DROPPED_9) >= 3)
                {
                    ev.Attacker.SetAmmo(AmmoType.DROPPED_9, ev.Attacker.GetAmmo(AmmoType.DROPPED_9) + 3);
                    ev.Player.SetAmmo(AmmoType.DROPPED_9, ev.Player.GetAmmo(AmmoType.DROPPED_9) - 3);
                }
                // [Dboys rules] //
                if ((ev.Attacker.GetHealth() <= 45) && (ev.DamageType != DamageType.FRAG) && (ev.DamageType != DamageType.TESLA) && (ev.DamageType != DamageType.FALLDOWN) && (ev.DamageType != DamageType.POCKET))
                {
                    ev.Attacker.SetHealth(ev.Attacker.GetHealth() + Convert.ToInt32(ev.Damage));
                    if (ev.Attacker.GetHealth() <= 25)
                    {
                        ev.Attacker.SetHealth(ev.Attacker.GetHealth() + Convert.ToInt32(ev.Damage));
                    }
                }
            }
        }
Beispiel #30
0
 public void OnPlayerHurt(PlayerHurtEvent ev)
 {
     if (ev.Player.TeamRole.Role == Role.SCP_096)
     {
         if (!Jugadores.ContainsKey(ev.Attacker.SteamId))
         {
             Jugadores.Add(ev.Attacker.SteamId, 0);
         }
         Jugadores[ev.Attacker.SteamId] = (Jugadores[ev.Attacker.SteamId] + ev.Damage);
     }
 }
Beispiel #31
0
        /// <summary>
        /// Called from <c>BaseCombatEntity.Hurt(HitInfo)</c> .
        /// </summary>
        public static void On_CombatEntityHurt(BaseCombatEntity combatEntity, HitInfo info)
        {
            try {
                Assert.Test(combatEntity.isServer, "This should be called serverside only");

                if (combatEntity.IsDead())
                    return;

                using (TimeWarning.New("Hurt", 50)) {
                    BaseNPC baseNPC = combatEntity.GetComponent<BaseNPC>();
                    BaseCorpse baseCorpse = combatEntity.GetComponent<BaseCorpse>();
                    BasePlayer basePlayer = combatEntity.GetComponent<BasePlayer>();

                    combatEntity.ScaleDamage(info);

                    if (basePlayer != null) {
                        Player player = Server.GetPlayer(basePlayer);

                        if (player.Teleporting) {
                            for (int i = 0; i < info.damageTypes.types.Length; i++) {
                                info.damageTypes.types[i] = 0f;
                            }
                        }

                        HurtEvent he = new PlayerHurtEvent(player, info);
                        OnNext("On_PlayerHurt", he);
                    } else if (baseNPC != null) {
                            HurtEvent he = new NPCHurtEvent(new NPC(baseNPC), info);
                            OnNext("On_NPCHurt", he);
                        } else if (baseCorpse != null) {
                                HurtEvent he = new CorpseHurtEvent(baseCorpse, info);
                                OnNext("On_CorpseHurt", he);
                            } else {
                                HurtEvent he = new CombatEntityHurtEvent(combatEntity, info);
                                OnNext("On_CombatEntityHurt", he);
                            }

                    if (info.PointStart != Vector3.zero) {
                        DirectionProperties[] directionProperties = (DirectionProperties[])combatEntity.GetFieldValue("propDirection");

                        for (int i = 0; i < directionProperties.Length; i++) {
                            if (!(directionProperties[i].extraProtection == null)) {
                                if (directionProperties[i].IsWeakspot(combatEntity.transform, info)) {
                                    directionProperties[i].extraProtection.Scale(info.damageTypes);
                                }
                            }
                        }
                    }

                    // the DebugHurt() method
                    if (ConVar.Vis.attack) {
                        if (info.PointStart != info.PointEnd) {
                            ConsoleNetwork.BroadcastToAllClients("ddraw.arrow", new object[] {
                                60, UnityEngine.Color.cyan, info.PointStart, info.PointEnd, 0.1
                            });

                            ConsoleNetwork.BroadcastToAllClients("ddraw.sphere", new object[] {
                                60, UnityEngine.Color.cyan, info.HitPositionWorld, 0.05
                            });
                        }

                        string text = String.Empty;

                        for (int i = 0; i < info.damageTypes.types.Length; i++) {
                            float num = info.damageTypes.types[i];

                            if (num != 0) {
                                string text2 = text;
                                text = String.Concat(new string[] {
                                    text2, " ", ((global::Rust.DamageType)i).ToString().PadRight(10), num.ToString("0.00"), "\r\n"
                                });
                            }
                        }

                        string text3 = String.Concat(new object[] {
                            "<color=lightblue>Damage:</color>".PadRight(10),
                            info.damageTypes.Total().ToString("0.00"),
                            "\r\n<color=lightblue>Health:</color>".PadRight(10),
                            combatEntity.health.ToString("0.00"), " / ",
                            (combatEntity.health - info.damageTypes.Total() > 0) ? "<color=green>" : "<color=red>",
                            (combatEntity.health - info.damageTypes.Total()).ToString("0.00"), "</color>",
                            "\r\n<color=lightblue>Hit Ent:</color>".PadRight(10), combatEntity,
                            "\r\n<color=lightblue>Attacker:</color>".PadRight(10), info.Initiator,
                            "\r\n<color=lightblue>Weapon:</color>".PadRight(10), info.Weapon,
                            "\r\n<color=lightblue>Damages:</color>\r\n", text
                        });

                        ConsoleNetwork.BroadcastToAllClients("ddraw.text", new object[] {
                            60, UnityEngine.Color.white, info.HitPositionWorld, text3
                        });
                    }

                    combatEntity.health -= info.damageTypes.Total();
                    combatEntity.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);

                    if (ConVar.Global.developer > 1) {
                        Debug.Log(string.Concat(new object[] {
                            "[Combat]".PadRight(10),
                            combatEntity.gameObject.name,
                            " hurt ",
                            info.damageTypes.GetMajorityDamageType(),
                            "/",
                            info.damageTypes.Total(),
                            " - ",
                            combatEntity.health.ToString("0"),
                            " health left"
                        }));
                    }

                    combatEntity.lastDamage = info.damageTypes.GetMajorityDamageType();
                    combatEntity.lastAttacker = info.Initiator;

                    BaseCombatEntity baseCombatEntity = combatEntity.lastAttacker as BaseCombatEntity;

                    if (baseCombatEntity != null)
                        baseCombatEntity.MarkHostileTime();

                    combatEntity.SetFieldValue("_lastAttackedTime", Time.time);

                    if (combatEntity.health <= 0f) {
                        combatEntity.Die(info);

                        BuildingBlock bb = combatEntity.GetComponent<BuildingBlock>();

                        if (bb != null) {
                            OnNext("On_BuildingPartDestroyed", new BuildingPartDestroyedEvent(bb, info));
                        }
                    }
                }
            } catch (Exception ex) {
                Logger.LogError("[Hooks] Error in CombatEntityHurt hook.");
                Logger.LogException(ex);
            }
        }