コード例 #1
0
			public InternalTarget( BlindSpell owner ) : base( 12, false, TargetFlags.Harmful )
			{
				m_Owner = owner;
			}
コード例 #2
0
        public override void SpellEffect(Mobile target)
        {
            if (Caster.Backpack == null || !(Caster.Backpack is Container))
            {
                Caster.SendMessage("You need a backpack to use this spell.");
                return;
            }

            if (AosAttributes.GetValue(Caster, AosAttribute.LowerRegCost) < 100)                 // Nothing less than 100% will do
            {
                Item item = Caster.Backpack.FindItemByType(typeof(RefreshPotion));

                if (item == null)
                {
                    Caster.SendMessage("You do not have enough Refresh Potions");
                    return;
                }

                item = Caster.Backpack.FindItemByType(typeof(LesserHealPotion));

                if (item == null)
                {
                    Caster.SendMessage("You do not have enough Heal Potions");
                    return;
                }

                item = Caster.Backpack.FindItemByType(typeof(LesserCurePotion));

                if (item == null)
                {
                    Caster.SendMessage("You do not have enough Cure Potions");
                    return;
                }

                // We just checked for the items.
                Caster.Backpack.ConsumeTotal(typeof(RefreshPotion), 1);
                Caster.Backpack.ConsumeTotal(typeof(LesserHealPotion), 1);
                Caster.Backpack.ConsumeTotal(typeof(LesserCurePotion), 1);
            }

            StatMod mod;

            mod = target.GetStatMod("[Magic] Str Offset");
            if (mod != null && mod.Offset < 0)
            {
                target.RemoveStatMod("[Magic] Str Offset");
            }

            mod = target.GetStatMod("[Magic] Dex Offset");
            if (mod != null && mod.Offset < 0)
            {
                target.RemoveStatMod("[Magic] Dex Offset");
            }

            mod = target.GetStatMod("[Magic] Int Offset");
            if (mod != null && mod.Offset < 0)
            {
                target.RemoveStatMod("[Magic] Int Offset");
            }

            BuffInfo.RemoveBuff(target, BuffIcon.Clumsy);
            BuffInfo.RemoveBuff(target, BuffIcon.FeebleMind);
            BuffInfo.RemoveBuff(target, BuffIcon.Weaken);
            BuffInfo.RemoveBuff(target, BuffIcon.MassCurse);

            target.Paralyzed = false;

            // Don't cure others of Lethal Poison
            if (target.Poison != Poison.Lethal || target == Caster)
            {
                target.CurePoison(Caster);
            }

            EvilOmenSpell.TryEndEffect(target);
            StrangleSpell.RemoveCurse(target);
            CorpseSkinSpell.RemoveCurse(target);
            CurseSpell.RemoveEffect(target);

            // Cure Status aliments (is the system being used?)
            BlindSpell.EndBlind(target);
            SilenceSpell.EndSilence(target);
            SlowSpell.EndSlow(target);
            StillSpell.EndStill(target);

            Effects.SendLocationParticles(
                EffectItem.Create(new Point3D(target.X, target.Y, target.Z), target.Map, EffectItem.DefaultDuration),
                0x376A, 9, 32, 5020);

            // Play a random eating sound
            target.PlaySound(Utility.Random(0x3A, 3));

            int bonus = AosAttributes.GetValue(Caster, AosAttribute.EnhancePotions) / 2;

            if (bonus > 20)
            {
                bonus = 20;
            }

            target.Hits += bonus;
            target.Stam += bonus;

            target.SendMessage("You have been cured of all ailments");
            Caster.SendMessage("You have cured " + target.Name + " of all alignments.");

            // It is a party effect, no way to ever get hit by it.
            // BlueMageControl.CheckKnown( target, this, CanTeach( target ) );
        }
コード例 #3
0
 public InternalTarget(BlindSpell owner) : base(12, false, TargetFlags.Harmful)
 {
     m_Owner = owner;
 }