Esempio n. 1
0
        private static void OnPlayerDamage(IPlayer player, PlayerDamageArgs args)
        {
            if (player == null)
            {
                return;
            }

            IPlayer attacker = null;

            if (args.DamageType == PlayerDamageEventType.Melee)
            {
                attacker = Game.GetPlayer(args.SourceID);
            }
            if (args.DamageType == PlayerDamageEventType.Projectile)
            {
                var projectile = Game.GetProjectile(args.SourceID);
                attacker = Game.GetPlayer(projectile.OwnerPlayerID);
            }

            var bot = GetBot(player);

            if (bot != Bot.None)
            {
                bot.OnDamage(attacker, args);
            }
        }
Esempio n. 2
0
        public override void OnDamage(IPlayer attacker, PlayerDamageArgs args)
        {
            base.OnDamage(attacker, args);

            if (m_controller != null)
            {
                m_controller.OnDamage(attacker, args);
            }
        }
Esempio n. 3
0
 public void OnPlayerDamage(IPlayer player, PlayerDamageArgs args)
 {
     if (args.DamageType == PlayerDamageEventType.Melee && args.SourceID != 0)
     {
         IPlayer hitBy = Game.GetPlayer(args.SourceID);
         Game.WriteToConsole(string.Format("Player {0} took {1} melee damage from player {2}", player.UniqueID, args.Damage, hitBy.UniqueID));
     }
     else
     {
         Game.WriteToConsole(string.Format("Player {0} took {1} {2} damage", player.UniqueID, args.Damage, args.DamageType));
     }
 }
Esempio n. 4
0
        public override void OnDamage(IPlayer attacker, PlayerDamageArgs args)
        {
            base.OnDamage(attacker, args);

            var mod           = Player.GetModifiers();
            var currentHealth = mod.CurrentHealth;
            var maxHealth     = mod.MaxHealth;

            if (currentHealth / maxHealth <= 0.25f)
            {
                Game.PlayEffect(EffectName.Electric, Position);
                Game.PlaySound("ElectricSparks", Position);
            }
        }
        public override void OnDamage(IPlayer attacker, PlayerDamageArgs args)
        {
            base.OnDamage(attacker, args);

            if (IsBuilding)
            {
                m_damageTakenWhileBuilding += args.Damage;

                if (m_damageTakenWhileBuilding >= 20)
                {
                    StopBuilding();
                    m_damageTakenWhileBuilding = 0;
                }
            }
        }
Esempio n. 6
0
        private void UpdateInfectedStatus(IPlayer attacker, PlayerDamageArgs args)
        {
            if (CanBeInfected && attacker != null)
            {
                var directContact = args.DamageType == PlayerDamageEventType.Melee &&
                                    attacker.CurrentWeaponDrawn == WeaponItemType.NONE &&
                                    !attacker.IsKicking && !attacker.IsJumpKicking;
                var attackerBot = BotManager.GetBot(attacker);

                if (attackerBot.CanInfect && directContact)
                {
                    Infect(attackerBot.InfectTeam);
                    Game.ShowChatMessage(attacker.Name + " infected " + Player.Name);
                }
            }
        }
Esempio n. 7
0
        public override void OnPlayerDamage(Entity player, Entity inflictor, Entity attacker, int damage, int dFlags, string mod, string weapon, Vector3 point, Vector3 dir, string hitLoc)
        {
            int baseDamage        = damage;
            PlayerDamageArgs data = new PlayerDamageArgs(player, inflictor, attacker, damage, dFlags, mod, weapon, point, dir, hitLoc);

            Script.PlayerDamage.Run(attacker, data);
            data.Update(out damage);

            if (damage > player.Health + baseDamage && damage > baseDamage)
            {
                AfterDelay(1, () => player.FinishPlayerDamage(inflictor, attacker, damage, dFlags, mod, weapon, point, dir, hitLoc, 0f));
            }
            else
            {
                player.Health += baseDamage - damage;
            }
        }
Esempio n. 8
0
        private void UpdateInfectedStatus(IPlayer player, IPlayer attacker, PlayerDamageArgs args)
        {
            if (player == null)
            {
                return;
            }

            if (!CanInfectFrom(player) && !player.IsBurnedCorpse && attacker != null)
            {
                var attackerPunching = args.DamageType == PlayerDamageEventType.Melee &&
                                       attacker.CurrentWeaponDrawn == WeaponItemType.NONE &&
                                       !attacker.IsKicking && !attacker.IsJumpKicking;

                if (CanInfectFrom(attacker) && attackerPunching)
                {
                    Infect(player);
                }
            }
        }
Esempio n. 9
0
        private void OnPlayerDamage(IPlayer player, PlayerDamageArgs args)
        {
            if (args.DamageType == PlayerDamageEventType.Projectile)
            {
                if (m_customBullets.ContainsKey(args.SourceID))
                {
                    if (rnd.Next(0, 100) < 15 && !CanInfectFrom(player) && !player.IsBurnedCorpse)
                    {
                        Infect(player);
                    }
                }
            }
            if (args.DamageType == PlayerDamageEventType.Melee)
            {
                var attacker = Game.GetPlayer(args.SourceID);

                UpdateInfectedStatus(player, attacker, args);
            }
        }
Esempio n. 10
0
 public virtual void OnDamage(IPlayer attacker, PlayerDamageArgs args)
 {
     UpdateInfectedStatus(attacker, args);
 }
Esempio n. 11
0
 public override void OnDamage(IPlayer attacker, PlayerDamageArgs args)
 {
     base.OnDamage(attacker, args);
     m_offender = attacker;
 }
Esempio n. 12
0
 public virtual void OnDamage(IPlayer attacker, PlayerDamageArgs args)
 {
 }