コード例 #1
0
 /// <summary>
 /// Invoked whenever the player is damaged.
 /// If their buildmode is on, they get healed by the amount of damage they were dealt.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void OnPlayerDamage(object sender, PlayerDamageEventArgs e)
 {
     if (e.Player.IsBuildModeOn())
     {
         e.Player.Heal(e.Player.TPlayer.statLifeMax);
     }
 }
コード例 #2
0
        private void Player_PlayerDamageEvent(PlayerDamageEventArgs ev)
        {
            //If either the killer or the victim is null (Potential damage inflicted by Server)
            if (ev.Killer is null || ev.Victim is null)
            {
                return;
            }

            //If the victim inflicted dmg to themselves / SCP-008 damage tick
            if (ev.Killer == ev.Victim || ev.HitInfo.GetDamageType().name == "FALLDOWN")
            {
                return;
            }

            //If the attacker is neither one of the infecting roles nor the doctor, leave.
            if (!SCP_008.Config.Scp008Configs.InfectingRoles.Contains(ev.Killer.RoleID) && ev.Killer.RoleType != RoleType.Scp049)
            {
                return;
            }

            //If the attacker was from one of the infecting roles, add to infectedPlayers
            if (SCP_008.Config.Scp008Configs.InfectingRoles.Contains(ev.Killer.RoleID))
            {
                infectedPlayers.Add(ev.Killer);
            }

            //If doctor only one hit k.o.'s, leave
            if (SCP_008.Config.Scp049Configs.NonOHKChance == 0.0f)
            {
                return;
            }

            //Chance for non-one hit k.o.
            if (Random.Range(0f, 100f) <= SCP_008.Config.Scp049Configs.NonOHKChance)
            {
                ev.DamageAmount = (ev.Victim.MaxHealth * (SCP_008.Config.Scp049Configs.NonOHKDamage / 100));
            }

            //If victim will die from it, leave.
            if ((ev.Victim.Health - ev.DamageAmount) <= 0.0f)
            {
                return;
            }

            //If doctor cannot infect victims, leave.
            if (SCP_008.Config.Scp049Configs.InfectChanceOnNonOHK == 0.0f)
            {
                return;
            }

            //Chance for infecting
            if (Random.Range(0f, 100f) <= SCP_008.Config.Scp049Configs.InfectChanceOnNonOHK)
            {
                infectedPlayers.Add(ev.Victim);
            }
        }
コード例 #3
0
 public void OnDamage(PlayerDamageEventArgs ev)
 {
     if (ev.Killer.RoleID == 682 && SynapseExtensions.CanHarmScp(ev.Killer, false))
     {
         if (SCP682.Config.can_kill_on_oneshot)
         {
             ev.Victim.Kill();
         }
         ev.Killer.Heal(SCP682.Config.heal_hp_when_eat);
     }
 }
コード例 #4
0
ファイル: PlayerEvents.cs プロジェクト: Mika-Westphal/Synapse
        internal void InvokePlayerDamageEvent(Player victim, Player killer, ref PlayerStats.HitInfo info, out bool allow)
        {
            var ev = new PlayerDamageEventArgs
            {
                HitInfo = info,
                Killer  = killer,
                Victim  = victim
            };

            PlayerDamageEvent?.Invoke(ev);

            info  = ev.HitInfo;
            allow = ev.Allow;
        }
コード例 #5
0
        internal void InvokePlayerDamageEvent(Player victim, Player killer, ref float damage, DamageType type, out bool allow)
        {
            var ev = new PlayerDamageEventArgs
            {
                Killer     = killer,
                Victim     = victim,
                Damage     = damage,
                DamageType = type,
            };

            PlayerDamageEvent?.Invoke(ev);

            damage = ev.Damage;
            allow  = ev.Allow;
        }
コード例 #6
0
ファイル: GetDataHandlers.cs プロジェクト: CXUtk/TShock
        private static bool OnPlayerDamage(byte id, byte dir, short dmg, bool pvp, bool crit)
        {
            if (PlayerDamage == null)
                return false;

            var args = new PlayerDamageEventArgs
            {
                ID = id,
                Direction = dir,
                Damage = dmg,
                PVP = pvp,
                Critical = crit,
            };
            PlayerDamage.Invoke(null, args);
            return args.Handled;
        }