CheckReflect() публичный статический Метод

public static CheckReflect ( int circle, Mobile caster, Mobile &target ) : void
circle int
caster Mobile
target Mobile
Результат void
Пример #1
0
        public void Target(Mobile m)
        {
            if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                /* Temporarily chokes off the air suply of the target with poisonous fumes.
                 * The target is inflicted with poison damage over time.
                 * The amount of damage dealt each "hit" is based off of the caster's Spirit Speak skill and the Target's current Stamina.
                 * The less Stamina the target has, the more damage is done by Strangle.
                 * Duration of the effect is Spirit Speak skill level / 10 rounds, with a minimum number of 4 rounds.
                 * The first round of damage is dealt after 5 seconds, and every next round after that comes 1 second sooner than the one before, until there is only 1 second between rounds.
                 * The base damage of the effect lies between (Spirit Speak skill level / 10) - 2 and (Spirit Speak skill level / 10) + 1.
                 * Base damage is multiplied by the following formula: (3 - (target's current Stamina / target's maximum Stamina) * 2).
                 * Example:
                 * For a target at full Stamina the damage multiplier is 1,
                 * for a target at 50% Stamina the damage multiplier is 2 and
                 * for a target at 20% Stamina the damage multiplier is 2.6
                 */

                m.PlaySound(0x22F);
                Effects.SendTargetParticles(m, 0x36CB, 1, 9, 9911, 67, 5, EffectLayer.Head);
                Effects.SendTargetParticles(m, 0x374A, 1, 17, 9502, 1108, 4, (EffectLayer)255);

                if (m is PlayerMobile)
                {
                    PlayerMobile pm       = Caster as PlayerMobile;
                    double       duration = 10.0;

                    //((PlayerMobile)m).Aphonier(TimeSpan.FromSeconds(duration));
                }

                m.Stam = (int)(m.Stam * 0.15);
            }

            FinishSequence();
        }
Пример #2
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                Mobile source = Caster;

                SpellHelper.Turn(source, m);

                SpellHelper.CheckReflect((int)this.Circle, ref source, ref m);

                Effects.SendMovingParticles(source, m, 0x36E4, 5, 0, false, true, 3006, 4006, 0);
                source.PlaySound(0x1E5);

                Damage.instance.AppliquerDegatsMagiques(m, Damage.instance.RandDegatsMagiques(Caster, Info.skillForCasting, Info.Circle, Info.castTime));
            }

            FinishSequence();
        }
Пример #3
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                //double damage = GetNewAosDamage(8, 1, 3, true); ;

                Effects.SendTargetParticles(m, 0x374A, 10, 15, 5013, EffectLayer.Waist);
                m.PlaySound(0x1F1);

                //SpellHelper.Damage(this, m, damage, 0, 0, 100, 0, 0);
            }

            FinishSequence();
        }
Пример #4
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Disturb(m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                //int damage = GetNewAosDamage(12, 1, 5, true);

                if (m == null || m.Deleted || !m.Alive)
                {
                    return;
                }

                if (Caster == null || Caster.Deleted || !Caster.Alive)
                {
                    return;
                }

                if (m.Spell != null)
                {
                    m.Spell.OnCasterHurt();
                }

                Effects.SendMovingEffect(Caster, m, 0x1BFE, 7, 1, false, false, 1043, 0);
                Caster.PlaySound(903);

                //SpellHelper.Damage(TimeSpan.Zero, m, Caster, damage, 0, 0, 0, 0, 100);
            }

            FinishSequence();
        }
Пример #5
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                Container ourPack = Caster.Backpack;

                if (ourPack != null)
                {
                    if (ourPack.GetAmount(typeof(Bone)) > 0)
                    {
                        ourPack.ConsumeTotal(typeof(Bone), 1);

                        SpellHelper.Turn(Caster, m);

                        Disturb(m);

                        SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                        //double damage = GetNewAosDamage(15, 1, 6, true);

                        //SpellHelper.Damage(TimeSpan.Zero, m, Caster, damage, 0, 0, 0, 0, 100);

                        Effects.SendMovingParticles(Caster, m, 0x36D4, 7, 0, false, false, 2056, 0, 3006, 4006, 0, 0);
                        Caster.PlaySound(903);
                    }
                    else
                    {
                        Caster.SendMessage(0, "Vous avez besoin d'os pour lancer ce sort.");
                    }
                }
            }

            FinishSequence();
        }
Пример #6
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                Effects.SendTargetParticles(m, 0x36BD, 20, 10, 5044, EffectLayer.Head);
                m.PlaySound(0x307);

                Damage.instance.AppliquerDegatsMagiques(m, Damage.instance.RandDegatsMagiques(Caster, Info.skillForCasting, Info.Circle, Info.castTime));

                Effects.SendMovingParticles(m, m, 0x379F, 7, 0, false, true, 3043, 4043, 0x211);
                m.PlaySound(0x20A);
            }

            FinishSequence();
        }
Пример #7
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (Caster.AccessLevel < m.AccessLevel)
            {
                Caster.SendMessage("Vous ne pouvez pas cibler cette personne !");
            }
            else if (CheckSequence())
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

//                Caster.SendMessage(334, "Fatigue de " + m.Name);
//
//                if (m is PlayerMobile)
//                    Caster.SendMessage(334, ((PlayerMobile)m).Fatigue.ToString());
//                else
//                    Caster.SendMessage(m.Stam.ToString() + " / " + m.StamMax.ToString());

                //Caster.SendMessage("Points de vie : " + m.Hits + " / " + m.HitsMax);
                //Caster.SendMessage("Mana : " + m.Mana + " / " + m.ManaMax);
                //Caster.SendMessage("Stamina : " + m.Stam + " / " + m.StamMax);

                //Caster.SendMessage("Force : " + m.Str);
                //Caster.SendMessage("Intelligence : " + m.Int);
                //Caster.SendMessage("Dextérité : " + m.Dex);

                Effects.SendTargetParticles(m, 14265, 10, 15, 5013, 2042, 0, EffectLayer.CenterFeet); //ID, speed, dura, effect, hue, render, layer
                m.PlaySound(509);
            }

            FinishSequence();
        }
Пример #8
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (m.Blessed)
            {
                Caster.SendMessage("Vous ne pouvez pas copier des créatures invulnérables !");
            }
            else if (CheckSequence())
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                ToogleFetichisme(this, Caster, m);

                Effects.SendTargetParticles(m, 0x374A, 10, 15, 5013, EffectLayer.Waist);
                m.PlaySound(0x1F1);
            }

            FinishSequence();
        }
Пример #9
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                Mobile source = Caster;

                SpellHelper.Turn(source, m);

                SpellHelper.CheckReflect((int)this.Circle, ref source, ref m);

                //double damage = GetNewAosDamage(2, 1, 2, true); ;

                Effects.SendMovingParticles(source, m, 0x36E4, 5, 0, false, true, 3006, 4006, 0);
                source.PlaySound(0x1E5);

                //SpellHelper.Damage(this, m, damage, 0, 100, 0, 0, 0);
            }

            FinishSequence();
        }
Пример #10
0
        public static void ToogleCurse(Spell spell, Mobile Caster, Mobile m)
        {
            SpellHelper.Turn(Caster, m);

            SpellHelper.CheckReflect((int)spell.Circle, Caster, ref m);

            SpellHelper.AddStatCurse(Caster, m, StatType.Str, TimeSpan.FromSeconds(0)); SpellHelper.DisableSkillCheck = true;
            SpellHelper.AddStatCurse(Caster, m, StatType.Dex, TimeSpan.FromSeconds(0));
            SpellHelper.AddStatCurse(Caster, m, StatType.Int, TimeSpan.FromSeconds(0)); SpellHelper.DisableSkillCheck = false;

            TimeSpan duration = TimeSpan.FromSeconds(0);

            new MaledictionSpell.InternalTimer(m, duration).Start();

            if (m.Spell != null)
            {
                m.Spell.OnCasterHurt();
            }

            m.Paralyzed = false;

            Effects.SendTargetParticles(m, 0x374A, 10, 15, 5028, EffectLayer.Waist);
            m.PlaySound(0x1EA);
        }
Пример #11
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                if (m.Spell != null)
                {
                    m.Spell.OnCasterHurt();
                }

                m.Paralyzed = false;

                /*if (CheckResisted(m))
                 * {
                 *  m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy.
                 * }
                 * else
                 * {*/
                int level;

                double total = Caster.Skills[SkillName.Animisme].Value; // +Caster.Skills[SkillName.Empoisonner].Value;

                //double dist = Caster.GetDistanceToSqrt(m);

                //if (dist >= 3.0)
                //    total -= (dist - 3.0) * 10.0;

                if (total >= 90.0)
                {
                    level = 3;
                }
                else if (total > 70.0)
                {
                    level = 2;
                }
                else if (total > 45.0)
                {
                    level = 1;
                }
                else
                {
                    level = 0;
                }

                if (level > 0 && CheckResisted(m))
                {
                    level = 0;
                    m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy.
                }

                m.ApplyPoison(Caster, Poison.GetPoison(level));
                //}

                Effects.SendTargetParticles(m, 0x374A, 10, 15, 5021, EffectLayer.Waist);
                m.PlaySound(0x474);
            }

            FinishSequence();
        }
Пример #12
0
        public void Target(Mobile m)
        {
            if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Disturb(m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 63, 7, 9915, 0);
                Effects.PlaySound(m.Location, m.Map, 0x229);

                //double damage = GetNewAosDamage(7, 1, 3, false);

                int level;

                double total = (Caster.Skills[SkillName.ArtMagique].Value + Caster.Skills[SkillName.Empoisonnement].Value);

                if (total >= 200.0 && 3 > Utility.Random(10))
                {
                    level = 2;
                }
                else if (total > 140.0)
                {
                    level = 1;
                }
                else
                {
                    level = 0;
                }

                m.ApplyPoison(Caster, Poison.GetPoison(level));

                //SpellHelper.Damage(this, m, damage, 0, 0, 0, 0, 100);

                Map map = m.Map;

                if (map != null)
                {
                    ArrayList targets = new ArrayList();

                    foreach (Mobile targ in m.GetMobilesInRange(2))
                    {
                        if ((Caster != targ && m != targ && SpellHelper.ValidIndirectTarget(Caster, targ)) && Caster.CanBeHarmful(targ, false) && !(Caster.Party == targ.Party))
                        {
                            targets.Add(targ);
                        }
                    }

                    for (int i = 0; i < targets.Count; ++i)
                    {
                        Mobile targ = (Mobile)targets[i];

                        //SpellHelper.Damage(this, targ, damage * 0.33, 0, 0, 0, 0, 100);

                        Effects.SendTargetParticles(m, 0x374A, 10, 15, 5021, EffectLayer.Waist);
                        m.PlaySound(0x474);
                    }
                }
            }

            FinishSequence();
        }