Esempio n. 1
0
        public static void GetDamageReduction(Mobile victim, ref int damage)
        {
            if (ActiveTable == null)
            {
                return;
            }

            SpiritualityContext context = GetContext(victim);

            if (context != null)
            {
                double reduction = (double)context.Reduction / 100.0;

                damage        = (int)((double)damage - ((double)damage * reduction));
                context.Pool -= damage;

                victim.FixedEffect(0x373A, 10, 16);

                BuffInfo.RemoveBuff(victim, BuffIcon.Spirituality);

                if (context.Pool <= 0)
                {
                    victim.SendLocalizedMessage(1155840); // Your spirit is no longer embraced. You feel less powerful.

                    if (ActiveTable.ContainsKey(victim) && ActiveTable[victim] == context)
                    {
                        ActiveTable.Remove(victim);
                    }
                }
                else
                {
                    BuffInfo.AddBuff(victim, new BuffInfo(BuffIcon.Spirituality, 1155824, 1155825, String.Format("{0}\t{1}", context.Reduction.ToString(), context.Pool.ToString()))); // ~1_VAL~% Reduction to Incoming Damage<br>~2_VAL~ Shield HP Remaining
                }
            }
        }
Esempio n. 2
0
        public static void OnVirtueUsed(Mobile from)
        {
            if (!from.Alive)
            {
                return;
            }

            if (VirtueHelper.GetLevel(from, VirtueName.Spirituality) < VirtueLevel.Seeker)
            {
                from.SendLocalizedMessage(1155829); // You must be a Seeker of Spirituality to invoke this Virtue.
            }
            else
            {
                from.SendLocalizedMessage(1155827); // Target whom you wish to embrace with your Spirituality

                from.BeginTarget(
                    10,
                    false,
                    TargetFlags.None,
                    (mobile, targeted) =>
                {
                    if (targeted is Mobile)
                    {
                        var m = (Mobile)targeted;

                        if (VirtueHelper.GetLevel(from, VirtueName.Spirituality) < VirtueLevel.Seeker)
                        {
                            from.SendLocalizedMessage(1155812);     // You must be at least a Seeker of Humility to Invoke this ability.
                        }
                        else if (!m.Alive)
                        {
                            from.SendLocalizedMessage(1155828);     // Thy target must be among the living.
                        }
                        else if (m is BaseCreature && !((BaseCreature)m).Controlled && !((BaseCreature)m).Summoned)
                        {
                            from.SendLocalizedMessage(1155837);     // You can only embrace players and pets with Spirituality.
                        }
                        else if (IsEmbracee(m))
                        {
                            from.SendLocalizedMessage(1155836);     // They are already embraced by Spirituality.
                        }
                        else if (m.MeleeDamageAbsorb > 0)
                        {
                            from.SendLocalizedMessage(
                                1156039);     // You may not use the Spirituality Virtue while the Attunement spell is active.
                        }
                        else if (m is BaseCreature || m is PlayerMobile)
                        {
                            var context = new SpiritualityContext(from, m);

                            ActiveTable[from] = context;

                            m.SendLocalizedMessage(1155839);     // Your spirit has been embraced! You feel more powerful!
                            from.SendLocalizedMessage(1155835);  // You have lost some Spirituality.

                            BuffInfo.AddBuff(
                                m,
                                new BuffInfo(
                                    BuffIcon.Spirituality,
                                    1155824,
                                    1155825,
                                    string.Format(
                                        "{0}\t{1}",
                                        context.Reduction.ToString(),
                                        context.Pool.ToString())));     // ~1_VAL~% Reduction to Incoming Damage<br>~2_VAL~ Shield HP Remaining

                            VirtueHelper.Atrophy(from, VirtueName.Spirituality, 3200);

                            Timer.DelayCall(
                                TimeSpan.FromMinutes(20),
                                () =>
                            {
                                if (ActiveTable != null && ActiveTable.ContainsKey(from))
                                {
                                    ActiveTable.Remove(from);

                                    m.SendLocalizedMessage(1155840);         // Your spirit is no longer embraced. You feel less powerful.

                                    BuffInfo.RemoveBuff(m, BuffIcon.Spirituality);
                                }
                            });
                        }
                    }
                    else
                    {
                        from.SendLocalizedMessage(1155837);     // You can only embrace players and pets with Spirituality.
                    }
                });
            }
        }