Пример #1
0
        public override void OnCast()
        {
            BardSpell spell = SkillMasterySpell.GetSpell(Caster, this.GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else if (CheckSequence())
            {
                m_PropertyBonus = (int)((BaseSkillBonus * 12) + (CollectiveBonus * 3));
                m_DamageBonus   = (int)Math.Min(40, ((BaseSkillBonus * 30) + (CollectiveBonus * 10)));

                foreach (Mobile m in GetParty())
                {
                    m.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);
                    m.SendLocalizedMessage(1115736); // You feel inspired by the bard's spellsong.

                    string args = String.Format("{0}\t{1}\t{2}", m_PropertyBonus, m_PropertyBonus, m_DamageBonus);
                    BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Inspire, 1115683, 1115729, args.ToString()));
                }

                BeginTimer();
            }

            FinishSequence();
        }
Пример #2
0
        public override void OnCast()
        {
            BardSpell spell = SkillMasterySpell.GetSpell(Caster, this.GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else if (CheckSequence())
            {
                m_PropertyBonus  = (int)((BaseSkillBonus * 16) + (CollectiveBonus * 6));
                m_PropertyBonus2 = (int)((BaseSkillBonus * 4) + (CollectiveBonus * 2));
                m_DamageMod      = ((BaseSkillBonus * 16) + (CollectiveBonus * 6)) / 100;

                System.Collections.Generic.List <Mobile> list = GetParty();

                foreach (Mobile m in list)
                {
                    m.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);
                    m.SendLocalizedMessage(1115739); // The bard's spellsong fills you with a feeling of invincibility.

                    string args = String.Format("{0}\t{1}\t{2}", m_PropertyBonus, m_DamageMod, m_PropertyBonus2);
                    BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Perseverance, 1115615, 1115732, args.ToString()));
                }

                list.Clear();
                list.TrimExcess();

                BeginTimer();
            }

            FinishSequence();
        }
Пример #3
0
        public override void OnCast()
        {
            BardSpell spell = SkillMasterySpell.GetSpell(Caster, this.GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else if (CheckSequence())
            {
                m_HPBonus   = (int)((20 * BaseSkillBonus) + (CollectiveBonus * 6));
                m_StatBonus = (int)((BaseSkillBonus * 8) + (CollectiveBonus * 6));
                System.Collections.Generic.List <Mobile> list = GetParty();

                foreach (Mobile m in list)
                {
                    m.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);
                    m.SendLocalizedMessage(1115737); // You feel invigorated by the bard's spellsong.

                    string args = String.Format("{0}\t{1}\t{2}\t{3}", m_StatBonus, m_StatBonus, m_StatBonus, m_StatBonus);
                    BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Invigorate, 1115613, 1115730, args.ToString()));
                }

                list.Clear();
                list.TrimExcess();

                BeginTimer();
            }

            FinishSequence();
        }
Пример #4
0
        public void OnTarget(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (Caster == m)
            {
                Caster.SendMessage("You cannot target yourself!");
            }
            else if (BardSpell.HasHarmfulEffects(m, this.GetType()))
            {
                Caster.SendLocalizedMessage(1115772); //Your target is already under the effect of this spellsong.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Target = m;
                //Caster.SendLocalizedMessage(1234567); //TODO: Message?

                HarmfulSpell(m);

                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);

                m_PropertyBonus = (int)Math.Max(5, ((BaseSkillBonus * 23) + (CollectiveBonus * 8))) * -1;
                m_DamageChance  = Math.Max(20.0, (Caster.Skills[DamageSkill].Value / 2.0)) / 100;
                m_SlayerBonus   = 1;

                string args = String.Format("{0}\t{1}\t{2}", m_PropertyBonus, m_PropertyBonus, (int)(m_DamageChance * 100));
                BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.TribulationTarget, 1115740, 1115743, args.ToString()));
                BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.TribulationCaster, 1115740, 1115742, args.ToString()));

                ISlayer slayer = Instrument as ISlayer;

                if (slayer != null)
                {
                    SlayerEntry se1 = SlayerGroup.GetEntryByName(slayer.Slayer);
                    SlayerEntry se2 = SlayerGroup.GetEntryByName(slayer.Slayer2);

                    if ((se1 != null && se1.Slays(Target)) || (se2 != null && se2.Slays(Target)))
                    {
                        m_SlayerBonus = 1.5;
                    }
                }

                BeginTimer();
            }

            FinishSequence();
        }
Пример #5
0
        public override void OnCast()
        {
            BardSpell spell = SkillMasterySpell.GetSpell(Caster, this.GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else
            {
                Caster.Target = new InternalTarget(this);
            }
        }
Пример #6
0
        public void OnTarget(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (!m.Alive)
            {
                Caster.SendLocalizedMessage(1115773); // Your target is dead.
            }
            else if (Caster == m)
            {
                // TODO: Message?
            }
            else if (BardSpell.HasHarmfulEffects(m, GetType()))
            {
                Caster.SendLocalizedMessage(1115772); //Your target is already under the effect of this spellsong.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Target = m;
                //Caster.SendLocalizedMessage(1234567); //TODO: Message?

                HarmfulSpell(m);

                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);

                int rounds = 5 + (int)(BaseSkillBonus * .75);

                m_StatMod = (int)((BaseSkillBonus * 2) + CollectiveBonus);
                m_Damage  = (int)((BaseSkillBonus * 4.5) + (CollectiveBonus * 2));
                m_Rounds  = 5 + (int)((BaseSkillBonus * .75) + (CollectiveBonus / 2));

                string args = String.Format("{0}\t{1}", m_StatMod, m_Damage);
                BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.DespairTarget, 1115741, 1115743, args.ToString()));
                BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.DespairCaster, 1115741, 1115743, args.ToString()));

                BeginTimer();
            }

            FinishSequence();
        }
Пример #7
0
        public override void OnCast()
        {
            BardSpell spell = SkillMasterySpell.GetSpell(Caster, GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else if (CheckSequence())
            {
                m_PropertyBonus = (int)((BaseSkillBonus * 2) + CollectiveBonus); // 2 - 16 (22)

                UpdateParty();
                BeginTimer();
            }

            FinishSequence();
        }
Пример #8
0
        public void OnTarget(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (Caster == m)
            {
                Caster.SendMessage("You cannot target yourself!");
            }
            else if (BardSpell.HasHarmfulEffects(m, GetType()))
            {
                Caster.SendLocalizedMessage(1115772); //Your target is already under the effect of this spellsong.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Target = m;

                HarmfulSpell(m);

                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);

                double cast = Caster.Skills[CastSkill].Value;
                double dam  = Caster.Skills[DamageSkill].Value;

                m_PropertyBonus = (int)((BaseSkillBonus * 2.75) + (CollectiveBonus * 1.667));               // 5 - 22 (32)
                m_DamageChance  = (int)((BaseSkillBonus * 7.5) + (CollectiveBonus * 3));                    // 15 - 60 (84)
                m_DamageFactor  = (int)((BaseSkillBonus * 4) + (CollectiveBonus * 3));                      // 8 - 32 (50)
                m_Rounds        = 5 + (int)((BaseSkillBonus * .75) + (CollectiveBonus / 2));                // 5 - 11 (14)

                // ~1_HCI~% Hit Chance.<br>~2_SDI~% Spell Damage.<br>Damage taken has a ~3_EXP~% chance to cause additional burst of physical damage.<br>
                BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.TribulationTarget, 1115740, 1115742, String.Format("{0}\t{1}\t{2}", m_PropertyBonus, m_PropertyBonus, (int)m_DamageChance)));

                // Target: ~1_val~ <br> Damage Factor: ~2_val~% <br> Damage Chance: ~3_val~%
                BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.TribulationCaster, 1115740, 1151388, String.Format("{0}\t{1}\t{2}", m.Name, m_DamageFactor, (int)m_DamageChance)));

                BeginTimer();
            }

            FinishSequence();
        }
Пример #9
0
        public override void OnCast()
        {
            BardSpell spell = GetSpell(Caster, GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else if (CheckSequence())
            {
                m_StatBonus = (int)(BaseSkillBonus + CollectiveBonus);
                m_HPBonus   = (int)((2.5 * BaseSkillBonus) + CollectiveBonus);

                UpdateParty();
                BeginTimer();
            }

            FinishSequence();
        }
Пример #10
0
        public override void OnCast()
        {
            BardSpell spell = GetSpell(Caster, GetType()) as BardSpell;

            if (spell != null)
            {
                spell.Expire();
                Caster.SendLocalizedMessage(1115774); //You halt your spellsong.
            }
            else if (CheckSequence())
            {
                m_PropertyBonus  = (int)((BaseSkillBonus * 3) + CollectiveBonus);           // 2 - 24 (30)
                m_PropertyBonus2 = (int)((BaseSkillBonus / 2) + (CollectiveBonus / 3));     // 1 - 4 (6)
                m_DamageMod      = (int)((BaseSkillBonus * 3) + CollectiveBonus);           // 2 - 24 (30)

                UpdateParty();
                BeginTimer();
            }

            FinishSequence();
        }
Пример #11
0
        public void OnTarget(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (Caster == m)
            {
                Caster.SendMessage("!You cannot target yourself.");
            }
            else if (BardSpell.HasHarmfulEffects(m, this.GetType()))
            {
                Caster.SendLocalizedMessage(1115772); //Your target is already under the effect of this spellsong.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Target = m;
                //Caster.SendLocalizedMessage(1234567); //TODO: Message?

                HarmfulSpell(m);

                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);

                m_PropertyBonus = (int)((BaseSkillBonus * 25) + (CollectiveBonus * 8)) * -1;
                m_DamageChance  = ((Caster.Skills[DamageSkill].Value / 5) / 100);

                string args = String.Format("{0}\t{1}\t{2}", m_PropertyBonus, m_PropertyBonus, (int)(m_DamageChance * 100));
                BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.TribulationTarget, 1115740, 1115743, args.ToString()));
                BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.TribulationCaster, 1115740, 1115742, args.ToString()));

                BeginTimer();
            }

            FinishSequence();
        }
Пример #12
0
        public void OnTarget(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (Caster == m)
            {
                Caster.SendMessage("You cannot target yourself!");
            }
            else if (BardSpell.HasHarmfulEffects(m, this.GetType()))
            {
                Caster.SendLocalizedMessage(1115772); //Your target is already under the effect of this spellsong.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Target = m;

                HarmfulSpell(m);

                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);

                double cast = Caster.Skills[CastSkill].Value;
                double dam  = Caster.Skills[DamageSkill].Value;

                m_Rounds = (int)(5 + ((cast - 90) * .3667) + (14 * (int)CollectiveBonus));          // 5 - 11 (14)

                m_PropertyBonus = (int)((5 + ((cast - 90) * .567)) + (14 * (int)CollectiveBonus));  // 5 - 22 (36)
                m_DamageChance  = Math.Max(15, ((dam / 10) * 5)) + (24 * (int)CollectiveBonus);     // 15 - 60 (84)
                m_DamageFactor  = Math.Max(8, ((cast / 10) * 2.667)) + (18 * (int)CollectiveBonus); // 8 - 32 (50)
                m_SlayerBonus   = 1;

                ISlayer slayer = Instrument as ISlayer;

                if (slayer != null)
                {
                    SlayerEntry se1 = SlayerGroup.GetEntryByName(slayer.Slayer);
                    SlayerEntry se2 = SlayerGroup.GetEntryByName(slayer.Slayer2);

                    if ((se1 != null && se1.Slays(Target)) || (se2 != null && se2.Slays(Target)))
                    {
                        m_SlayerBonus = 1.5;
                    }
                }

                if (m.Player)
                {
                    // ~1_HCI~% Hit Chance.<br>~2_SDI~% Spell Damage.<br>Damage taken has a ~3_EXP~% chance to cause additional burst of physical damage.<br>
                    BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.TribulationTarget, 1115740, 1115742, String.Format("{0}\t{1}\t{2}", m_PropertyBonus, m_PropertyBonus, (int)m_DamageChance)));
                }

                // Target: ~1_val~ <br> Damage Factor: ~2_val~% <br> Damage Chance: ~3_val~%
                BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.TribulationCaster, 1115740, 1151388, String.Format("{0}\t{1}\t{2}", m.Name, (int)m_DamageFactor, (int)m_DamageChance)));

                BeginTimer();
            }

            FinishSequence();
        }