Ejemplo n.º 1
0
        private List <BeneficalWard> GetCurrentWardsFor(Mobile m)
        {
            List <BeneficalWard> list = new List <BeneficalWard>();

            for (int i = 0; i < m_Entries.Length; i++)
            {
                BeneficalWard ward = m_Entries[i];

                if (ward.UnderEffect != null && ward.UnderEffect(m))
                {
                    list.Add(ward);
                }
            }

            return(list);
        }
Ejemplo n.º 2
0
        public void Target(Mobile m)
        {
            List <BeneficalWard> wards = GetCurrentWardsFor(m);

            if (wards.Count == 0)
            {
                Caster.SendLocalizedMessage(1080120);                   // Your target has no magic that can be purged.
            }
            else if (CheckHSequence(m))
            {
                /* Attempts to remove a beneficial ward from the Target,
                 * chosen randomly. The chance to successfully Purge Magic
                 * is determined by a comparison between the Caster's
                 * Focus and Mysticism skills and the
                 * Target's Resisting Spells skill.
                 */

                BeneficalWard ward = wards[Utility.Random(wards.Count)];

                //First check, Focus + Mysticism / 2 must be greater than target's Resist - 10
                //Second check, Base Focus + Base Mysticism must be greater than spell's minimum required skill
                if (((Caster.Skills.Focus.Value + Caster.Skills.Mysticism.Value) * 0.5) >= m.Skills.MagicResist.Value - 10 &&
                    Caster.Skills.Focus.Base + Caster.Skills.Mysticism.Base >= ward.RequiredSkill)
                {
                    ward.RemoveEffect(m);

                    m.PlaySound(0x655);
                    Effects.SendTargetParticles(m, 0x3728, 1, 13, 0x834, 3, 0x13B2, EffectLayer.Head, 0);

                    m.SendLocalizedMessage(1080117, ward.Name);                       // Your ~1_ABILITY_NAME~ has been purged.

                    if (Caster != m)
                    {
                        Caster.SendLocalizedMessage(1080118, ward.Name);                           // Your target's ~1_ABILITY_NAME~ has been purged.
                    }
                }
                else
                {
                    Caster.SendLocalizedMessage(1080119);                       // Your Purge Magic has been resisted!
                }
            }

            FinishSequence();
        }