private static double ReactPercent = 0.5;         //How much damage gets through

        public override int AbsorbDamage(Mobile attacker, Mobile defender, int damage)
        {
            damage = base.AbsorbDamage(attacker, defender, damage);

            AttuneWeaponSpell.TryAbsorb(defender, ref damage);

            if (Core.AOS)
            {
                return(damage);
            }

            int absorb = defender.MeleeDamageAbsorb;

            if (absorb > 0)
            {
                int absorbed = Math.Min(damage, absorb);

                defender.MeleeDamageAbsorb -= absorbed;
                if (defender.MeleeDamageAbsorb <= 0)
                {
                    defender.MeleeDamageAbsorb = 0;
                    defender.SendLocalizedMessage(1005556);                       // Your reactive armor spell has been nullified.
                }

                damage -= (int)(absorbed * ReactPercent);
                attacker.Damage((int)(absorbed * (1 - ReactPercent)), defender);

                attacker.PlaySound(0x1F1);
                attacker.FixedEffect(0x374A, 10, 16);
            }

            return(damage);
        }
Beispiel #2
0
        public override int AbsorbDamage(Mobile attacker, Mobile defender, int damage)
        {
            damage = base.AbsorbDamage(attacker, defender, damage);

            AttuneWeaponSpell.TryAbsorb(defender, ref damage);

            if (Core.AOS)
            {
                return(damage);
            }

            int absorb = defender.MeleeDamageAbsorb;

            if (absorb > 0)
            {
                if (absorb > damage)
                {
                    int react = damage / 5;

                    if (react <= 0)
                    {
                        react = 1;
                    }

                    defender.MeleeDamageAbsorb -= damage;
                    damage = 0;

                    attacker.Damage(react, defender);

                    attacker.PlaySound(0x1F1);
                    attacker.FixedEffect(0x374A, 10, 16);
                }
                else
                {
                    defender.MeleeDamageAbsorb = 0;
                    defender.SendLocalizedMessage(1005556); // Your reactive armor spell has been nullified.
                    DefensiveSpell.Nullify(defender);
                }
            }

            return(damage);
        }