Exemple #1
0
 public static void InvokePlayerDamaged(PlayerDamagedEventArgs args)
 {
     if (PlayerDamaged != null)
     {
         PlayerDamaged(args);
     }
 }
Exemple #2
0
    private void UpdateHealth(object sender, PlayerDamagedEventArgs args)
    {
        if (healthBar == null)
        {
            return;
        }

        healthBar.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, maxSize * args.Health / maxHealth);
    }
Exemple #3
0
 public void UpdatePlayerScoreFromPlayerDamage(object sender, PlayerDamagedEventArgs e)
 {
     if (ReferenceEquals(e.DamagedPlayer, ParentHUD.Player))
     {
         if (e.Damager is AbstractEnemy)
         {
             playerScore = clamp(playerScore - 250);
         }
     }
     else if (e.DamagedPlayer != null)
     {
         playerScore += 850;
     }
 }
Exemple #4
0
        /// <summary>
        /// Grants EoC for:
        /// <para>getting damaged by a player or NPC</para>
        /// <para>getting knocked out</para>
        /// <para>knocking out another player</para>
        /// <para> </para>
        /// <para>Also starts the <code>HitsTable</code> to trigger &lt;5% HP EoC generation</para>
        /// </summary>
        private static void OnDamaged(PlayerDamagedEventArgs args)
        {
            Mobile aggr = args.Aggressor;
            Player p    = args.Player;

            if (aggr != null)
            {
                if (p.Guild != null && !p.Guild.Disbanded && p.Guild == aggr.Guild)
                {
                    return;
                }

                if (p.Party != null && p.Party == aggr.Party)
                {
                    return;
                }

                p.EssenceOfCharacter += Math.Max(1, (args.DamageAmount / 10));

                if (args.WillKill)
                {
                    if (aggr is Player)
                    {
                        int change = (int)(p.SkillsTotal / aggr.SkillsTotal) * 10;

                        ((Player)aggr).EssenceOfCharacter += change;
                        p.EssenceOfCharacter += change;
                    }
                    else
                    {
                        int count = 0;

                        for (int i = 0; i < p.Aggressed.Count; i++)
                        {
                            if (AttackMessage.CheckAggressions(p, p.Aggressed[i].Defender))
                            {
                                count++;
                            }
                        }

                        for (int i = 0; i < p.Aggressors.Count; i++)
                        {
                            if (AttackMessage.CheckAggressions(p, p.Aggressors[i].Attacker))
                            {
                                count++;
                            }
                        }

                        p.EssenceOfCharacter += Math.Max(50, (50 * count));
                    }
                }
            }

            if (p.Hits < (int)(p.HitsMax * 0.05))
            {
                if (!HitsTable.ContainsKey(p))
                {
                    HitsTable[p] = new HitsTimer(p);
                    HitsTable[p].Start();
                }
                else if (!HitsTable[p].Running)
                {
                    HitsTable[p].Start();
                }
            }
            else if (HitsTable.ContainsKey(p))
            {
                HitsTable[p].Stop();
                HitsTable.Remove(p);
            }
        }
 public static void InvokePlayerDamaged( PlayerDamagedEventArgs args )
 {
     if( PlayerDamaged != null )
         PlayerDamaged(args);
 }
Exemple #6
0
 public void OnPlayerDamaged(PlayerDamagedEventArgs args)
 {
     PlayerDamaged?.Invoke(this, args);
 }
Exemple #7
0
        public static bool PlayerDamaged(Player player, ref uint amount, ref Vector3 ragdoll, ref EDeathCause deathCause, ref ELimb limb, CSteamID killer, object attacker, bool fromUFM)
        {
            TemplateObject attackerTag = null;

            if (killer != null && killer != CSteamID.Nil && killer != Provider.server)
            {
                SteamPlayer steamkiller = PlayerTool.getSteamPlayer(killer);
                if (steamkiller != null)
                {
                    attackerTag = new PlayerTag(steamkiller);
                }
            }
            else if (attacker != null)
            {
                if (attacker is Animal)
                {
                    attackerTag = new AnimalTag((Animal)attacker);
                }
                else if (attacker is Zombie)
                {
                    attackerTag = new ZombieTag((Zombie)attacker);
                }
            }
            PlayerTag           playerTag        = new PlayerTag(player.channel.owner);
            UFMHealthController healthController = player.gameObject.GetComponent <UFMHealthController>();
            uint health = healthController != null ? healthController.health : player.life.health;

            if (amount >= health)
            {
                PlayerDeathEventArgs deathevt = new PlayerDeathEventArgs();
                deathevt.Player = playerTag;
                deathevt.Amount = new NumberTag(amount);
                deathevt.Cause  = new TextTag(deathCause.ToString());
                deathevt.Limb   = new TextTag(limb.ToString());
                deathevt.Killer = attackerTag;
                UnturnedFreneticEvents.OnPlayerDeath.Fire(deathevt);
                amount = (uint)deathevt.Amount.Internal;
                if (!deathevt.Cancelled && !EntityDeath(playerTag, ref amount) && healthController != null)
                {
                    healthController.Damage(amount);
                    player.life.ragdoll = ragdoll;
                    amount = (uint)(((double)amount / healthController.maxHealth) * 100.0);
                    return(false);
                }
                return(deathevt.Cancelled);
            }
            PlayerDamagedEventArgs evt = new PlayerDamagedEventArgs();

            evt.Player   = playerTag;
            evt.Amount   = new NumberTag(amount);
            evt.Attacker = attackerTag;
            UnturnedFreneticEvents.OnPlayerDamaged.Fire(evt);
            amount = (uint)evt.Amount.Internal;
            if (!evt.Cancelled && !EntityDamaged(playerTag, ref amount) && healthController != null)
            {
                healthController.Damage(amount);
                player.life.ragdoll = ragdoll;
                amount = (uint)(((double)amount / healthController.maxHealth) * 100.0);
                return(false);
            }
            return(evt.Cancelled);
        }