Пример #1
0
        private static bool CheckHit(Mobile to, Mobile from)
        {
            if (!Core.TOL)
            {
                return(true);
            }

            double toChance   = Math.Min(45 + BaseArmor.GetRefinedDefenseChance(to), AosAttributes.GetValue(to, AosAttribute.DefendChance)) + 1;
            double fromChance = AosAttributes.GetValue(from, AosAttribute.AttackChance) + 1;

            double hitChance = toChance / (fromChance * 2);

            if (Utility.RandomDouble() < hitChance)
            {
                if (BaseWeapon.CheckParry(to))
                {
                    to.FixedEffect(0x37B9, 10, 16);
                    to.Animate(AnimationType.Parry, 0);
                    return(false);
                }

                return(true);
            }

            to.NonlocalOverheadMessage(MessageType.Emote, 0x3B2, false, "*miss*");
            return(false);
        }
Пример #2
0
        public static bool ApplyDefense(Mobile m)
        {
            if (m_DefenseTable.ContainsKey(m))
            {
                DefenseTimer timer = m_DefenseTable[m];

                if (timer != null)
                {
                    timer.Stop();
                    timer.DefenseMalus = 0;
                }
            }

            int malus;

            if (m is PlayerMobile)
            {
                malus = 45 + BaseArmor.GetRefinedDefenseChance(m);
                malus = malus - (int)(malus * .35);
            }
            else
            {
                malus = 25;
            }

            m_DefenseTable[m] = new DefenseTimer(m, malus);
            BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.HitLowerDefense, 1151313, 1151286, DefenseEffectDuration, m, malus.ToString()));
            m.SendLocalizedMessage(1062318); // Your defense chance has been reduced!

            m.Delta(MobileDelta.WeaponDamage);

            return(true);
        }