Пример #1
0
        public virtual bool CheckFizzle()
        {
            double minSkill, maxSkill;

            GetCastSkills(out minSkill, out maxSkill);

            if (Caster.Mounted)
            {
                if (!Equitation.CheckEquitation(Caster, EquitationType.Cast))
                {
                    return(false);
                }
            }

            if (EtouffementSpell.m_Table.Contains(Caster))
            {
                if (Utility.Random(100) <= (int)EtouffementSpell.m_Table[Caster])
                {
                    Caster.SendMessage("Vous vous étouffez en lancant votre sort !");
                    return(false);
                }
            }

            return(Caster.CheckSkill(m_Info.skillForCasting, minSkill, maxSkill));
        }
Пример #2
0
        public virtual bool CheckSequence()
        {
            int mana = ManaCost;

            PlayerMobile pm = Caster as PlayerMobile;

            if (Caster.AccessLevel != AccessLevel.Player)
            {
                return(true);
            }
            else
            {
                if (Caster.Deleted || !Caster.Alive || Caster.Spell != this || State != SpellState.Sequencing)
                {
                    DoFizzle();
                }
                else if (m_Scroll != null && !(m_Scroll is Runebook) && (m_Scroll.Amount <= 0 || m_Scroll.Deleted || m_Scroll.RootParent != Caster))
                {
                    DoFizzle();
                }
                else if (!ConsumeReagents() && Caster.AccessLevel < AccessLevel.Batisseur)
                {
                    Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502630); // More reagents are needed for this spell.
                }
                else if (Caster.Mana < mana)
                {
                    Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502625);                   // Insufficient mana for this spell.
                }
                else if (pm != null && !Equitation.CheckEquitation(pm, EquitationType.Attacking))
                {
                    DoFizzle();
                }
                else if (CheckFizzle())
                {
                    SpellManaCost(mana);

                    if (m_Scroll is SpellScroll)
                    {
                        m_Scroll.Consume();
                    }

                    if (ClearHandsOnCast)
                    {
                        Caster.ClearHands();
                    }

                    return(true);
                }
                else
                {
                    DoFizzle();
                }
            }

            return(false);
        }