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); }
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); }