public override bool CheckCast() { /*if ( Caster.Mounted ) * { * Caster.SendLocalizedMessage( 1042561 ); //Please dismount first. * return false; * } * else */ if (TransformationSpellHelper.UnderTransformation(Caster)) { Caster.SendLocalizedMessage(1061633); // You cannot polymorph while in that form. return(false); } else if (DisguiseTimers.IsDisguised(Caster)) { Caster.SendLocalizedMessage(502167); // You cannot polymorph while disguised. return(false); } else if (Caster.BodyMod == 183 || Caster.BodyMod == 184) { Caster.SendLocalizedMessage(1042512); // You cannot polymorph while wearing body paint return(false); } else if (!Caster.CanBeginAction(typeof(PolymorphSpell))) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. return(false); } else if (m_NewBody == 0) { Gump gump = new PolymorphGump(Caster, Scroll); Caster.SendGump(gump); return(false); } return(true); }
/// <summary> /// Apply effect on target or do spell action if non duration spell /// </summary> /// <param name="target">target that gets the effect</param> /// <param name="effectiveness">factor from 0..1 (0%-100%)</param> public override void ApplyEffectOnTarget(GameLiving target, double effectiveness) { int specLevel = Caster.GetModifiedSpecLevel(m_spellLine.Spec); if (Caster is GamePlayer && ((GamePlayer)Caster).CharacterClass.ClassType != eClassType.ListCaster && Spell.Level > 0 && ((GamePlayer)Caster).CharacterClass.ID != (int)eCharacterClass.Savage) { effectiveness = 0.75; // This section is for self bulfs, cleric buffs etc. if (Spell.Level > 0) { effectiveness += (specLevel - 1.0) * 0.5 / Spell.Level; effectiveness = Math.Max(0.75, effectiveness); effectiveness = Math.Min(1.25, effectiveness); effectiveness *= (1.0 + m_caster.GetModified(eProperty.BuffEffectiveness) * 0.01); } } else if (Caster is GamePlayer && Spell.Level > 0 && Spell.Target == "Enemy") { effectiveness = 0.75; // This section is for list casters stat debuffs. if (((GamePlayer)Caster).CharacterClass.ClassType == eClassType.ListCaster) { effectiveness += (specLevel - 1.0) * 0.5 / Spell.Level; effectiveness = Math.Max(0.75, effectiveness); effectiveness = Math.Min(1.25, effectiveness); effectiveness *= (1.0 + m_caster.GetModified(eProperty.DebuffEffectivness) * 0.01); } else { effectiveness = 1.0; // Non list casters debuffs. Reaver curses, Champ debuffs etc. effectiveness *= (1.0 + m_caster.GetModified(eProperty.DebuffEffectivness) * 0.01); } } else { effectiveness = 1.0; } base.ApplyEffectOnTarget(target, effectiveness); }
public override bool CheckFizzle() { int requiredTithing = this.RequiredTithing; if ( AosAttributes.GetValue( Caster, AosAttribute.LowerRegCost ) > Utility.Random( 100 ) ) { requiredTithing = 0; } int mana = ScaleMana( RequiredMana ); if ( Caster.Skills[ SkillName.Chivalry ].Value < RequiredSkill ) { Caster.SendLocalizedMessage( 1060172, RequiredSkill.ToString( "F1" ) ); // You must have at least ~1_SKILL_REQUIREMENT~ Chivalry to use this ability, return false; } else if ( Caster.TithingPoints < requiredTithing ) { Caster.SendLocalizedMessage( 1060173, RequiredTithing.ToString() ); // You must have at least ~1_TITHE_REQUIREMENT~ Tithing Points to use this ability, return false; } else if ( Caster.Mana < mana ) { Caster.SendLocalizedMessage( 1060174, RequiredMana.ToString() ); // You must have at least ~1_MANA_REQUIREMENT~ Mana to use this ability. return false; } Caster.TithingPoints -= requiredTithing; if ( !base.CheckFizzle() ) { return false; } Caster.Mana -= mana; return true; }
public void Target(Gold weapon) { if (!Caster.CanSee(weapon)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { if (Caster.BeginAction(typeof(AncientFalseCoinSpell))) { if (this.Scroll != null) { Scroll.Consume(); } FakeGold fake = new FakeGold(); fake.m_Amount = weapon.Amount * 5; fake.Name = "" + (weapon.Amount * 5) + " Gold Coins"; m_Fake = fake; Caster.AddToBackpack(fake); Caster.PlaySound(0x2E6); IEntity from = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z + 50), Caster.Map); IEntity to = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z), Caster.Map); Effects.SendMovingParticles(from, to, 0x1EC6, 1, 0, false, false, 33, 3, 9501, 1, 0, EffectLayer.Head, 0x100); StopTimer(Caster); Timer t = new InternalTimer(Caster, m_Fake); m_Timers[Caster] = t; t.Start(); } } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendAsciiMessage("Target can not be seen."); // Target can not be seen. } else if (CheckHSequence(m)) { SpellHelper.Turn(Caster, m); SpellHelper.CheckReflect((int)this.Circle, Caster, ref m); SpellHelper.AddStatCurse(Caster, m, StatType.Str, (int)((Caster.Skills[SkillName.Magery].Value / 10) + 1), TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1)); //SpellHelper.DisableSkillCheck = true; SpellHelper.AddStatCurse(Caster, m, StatType.Dex, (int)((Caster.Skills[SkillName.Magery].Value / 10) + 1), TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1)); SpellHelper.AddStatCurse(Caster, m, StatType.Int, (int)((Caster.Skills[SkillName.Magery].Value / 10) + 1), TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1)); //SpellHelper.DisableSkillCheck = false; Timer t = (Timer)m_UnderEffect[m]; if (Caster.Player && m.Player /*&& Caster != m */ && t == null) //On OSI you CAN curse yourself and get this effect. { TimeSpan duration = TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1); //SpellHelper.GetDuration( Caster, m ); m_UnderEffect[m] = t = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), m); m.UpdateResistances(); } if (m.Spell != null) { m.Spell.OnCasterHurt(); } m.Paralyzed = false; m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist); m.PlaySound(0x1EA); } FinishSequence(); }
public void Target(Mobile m) { if (m == null) { Caster.SendLocalizedMessage(1060508); // You can't curse that. } else if (HasMindRotScalar(m)) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (CheckHSequence(m)) { SpellHelper.Turn(Caster, m); /* Attempts to place a curse on the Target that increases the mana cost of any spells they cast, * for a duration based off a comparison between the Caster's Spirit Speak skill and the Target's Resisting Spells skill. * The effect lasts for ((Spirit Speak skill level - target's Resist Magic skill level) / 50 ) + 20 seconds. */ m.Spell?.OnCasterHurt(); m.PlaySound(0x1FB); m.PlaySound(0x258); m.FixedParticles(0x373A, 1, 17, 9903, 15, 4, EffectLayer.Head); var duration = TimeSpan.FromSeconds( ((GetDamageSkill(Caster) - GetResistSkill(m)) / 5.0 + 20.0) * (m.Player ? 1.0 : 2.0) ); m.CheckSkill(SkillName.MagicResist, 0.0, 120.0); // Skill check for gain SetMindRotScalar(Caster, m, m.Player ? 1.25 : 2.00, duration); HarmfulSpell(m); } FinishSequence(); }
public override void OnTarget(Mobile target) { Point3D from = Caster.Location; Point3D to = target.Location; if (Factions.Sigil.ExistsOn(Caster)) { Caster.SendLocalizedMessage(1061632); // You can't do that while carrying the sigil. } else if (!SpellHelper.CheckTravel(Caster, TravelCheckType.TeleportFrom)) { } else if (!SpellHelper.CheckTravel(Caster, Caster.Map, new Point3D(target), TravelCheckType.TeleportTo)) { } else if (target is BaseVendor) { Caster.SendMessage("You cannot switch with that."); } else if (CheckSequence()) { SpellHelper.Turn(Caster, target); Caster.Location = to; target.Location = from; SpellHelper.Turn(Caster, target); Caster.ProcessDelta(); Effects.SendLocationParticles(EffectItem.Create(from, Caster.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023); Effects.SendLocationParticles(EffectItem.Create(to, Caster.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023); //m.FixedParticles( 0x376A, 9, 32, 0x13AF, EffectLayer.Waist ); Caster.PlaySound(0x1FE); BlueMageControl.CheckKnown(target, this, CanTeach(target)); } FinishSequence(); }
public void OnTarget(IDamageable d) { if (d == null) { return; } else if (CheckHSequence(d)) { IDamageable target = d; IDamageable source = Caster; SpellHelper.Turn(Caster, target); if (HasDelayContext(target)) { DoHurtFizzle(); return; } if (SpellHelper.CheckReflect((int)Circle, ref source, ref target)) { Timer.DelayCall(TimeSpan.FromSeconds(.5), () => { source.MovingParticles(target, 0x36D4, 7, 0, false, true, 0x49A, 0, 0, 9502, 4019, 0x160); source.PlaySound(0x211); }); } double damage = GetNewAosDamage(10, 1, 4, target); SpellHelper.Damage(this, target, damage, 0, 0, 0, 0, 0, 100, 0); Caster.MovingParticles(d, 0x36D4, 7, 0, false, true, 0x49A, 0, 0, 9502, 4019, 0x160); Caster.PlaySound(0x211); } FinishSequence(); }
private bool DoDamage(Mobile m, InternalItem item) { if (item.Visible && Caster != null && m != Caster && SpellHelper.ValidIndirectTarget(Caster, m) && Caster.CanBeHarmful(m, false)) { if (SpellHelper.CanRevealCaster(m)) { Caster.RevealingAction(); } SkillName damageSkill = Caster.Skills[SkillName.Focus].Value > Caster.Skills[SkillName.Imbuing].Value ? SkillName.Focus : SkillName.Imbuing; double skill = ((Caster.Skills[SkillName.Mysticism].Value) + Caster.Skills[damageSkill].Value * 2) / 3; skill /= m.Player ? 3.5 : 2; int damage = (int)skill + Utility.RandomMinMax(-3, 3); damage *= (int)GetDamageScalar(m); int sdiBonus = SpellHelper.GetSpellDamageBonus(Caster, m, CastSkill, Caster.Player && m.Player); damage *= (100 + sdiBonus); damage /= 100; Caster.DoHarmful(m); m.FixedParticles(0x374A, 1, 15, 9502, 97, 3, (EffectLayer)255); AOS.Damage(m, Caster, damage, 0, 0, 0, 0, 0, 100, 0, DamageType.SpellAOE); int manaRip = Math.Min(m.Mana, damage / 4); if (manaRip > 0) { m.Mana -= manaRip; Caster.Mana += manaRip; } } return(true); }
protected override int CalculateEffectDuration(GameLiving target, double effectiveness) { double duration = base.CalculateEffectDuration(target, effectiveness); double mocFactor = 1.0; MasteryofConcentrationEffect moc = Caster.EffectList.GetOfType <MasteryofConcentrationEffect>(); if (moc != null) { MasteryofConcentrationAbility ra = Caster.GetAbility <MasteryofConcentrationAbility>(); if (ra != null) { mocFactor = System.Math.Round((double)ra.GetAmountForLevel(ra.Level) * 25 / 100, 2); } duration = (double)Math.Round(duration * mocFactor); } if (Spell.SpellType.ToLower() != "stylestun") { // capping duration adjustment to 100%, live cap unknown - Tolakram int hitChance = Math.Min(200, CalculateToHitChance(target)); if (hitChance <= 0) { duration = 0; } else if (hitChance < 55) { duration -= (int)(duration * (55 - hitChance) * 0.01); } else if (hitChance > 100) { duration += (int)(duration * (hitChance - 100) * 0.01); } } return((int)duration); }
public override void OnCast() { if (CheckSequence()) { Caster.PlaySound(0x20F); Caster.PlaySound(Caster.Female ? 0x338 : 0x44A); Caster.FixedParticles(0x376A, 1, 31, 9961, 1160, 0, EffectLayer.Waist); Caster.FixedParticles(0x37C4, 1, 31, 9502, 43, 2, EffectLayer.Waist); Caster.Stam = Caster.StamMax; Timer t = (Timer)m_Table[Caster]; if (t != null) { t.Stop(); } int delay = ComputePowerValue(10); // TODO: Should caps be applied? if (delay < 7) { delay = 7; } else if (delay > 24) { delay = 24; } m_Table[Caster] = t = Timer.DelayCall(TimeSpan.FromSeconds(delay), new TimerStateCallback(Expire_Callback), Caster); Caster.Delta(MobileDelta.WeaponDamage); BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.DivineFury, 1060589, 1075634, TimeSpan.FromSeconds(delay), Caster)); } FinishSequence(); }
public void Effect(Point3D loc, Map map, bool checkMulti) { if (map == null || (!Core.AOS && Caster.Map != map)) { Caster.SendLocalizedMessage(1005569); // You can not recall to another facet. } else if (Caster.Kills >= 5 && map != Map.Felucca) { Caster.SendLocalizedMessage(1019004); // You are not allowed to travel there. } else if (Server.Misc.WeightOverloading.IsOverloaded(Caster)) { Caster.SendLocalizedMessage(502359, "", 0x22); // Thou art too encumbered to move. } else if (!map.CanFit(loc.X, loc.Y, loc.Z, 16)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (checkMulti && SpellHelper.CheckMulti(loc, map)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (!SpellHelper.CheckTravel(Caster, loc, map, TravelType.Recall) && Caster.AccessLevel == AccessLevel.Player) { Caster.PlaySound(0x5C); } else if (CheckSequence()) { BaseCreature.TeleportPets(Caster, loc, map, true); Caster.PlaySound(0x1FC); Caster.Map = map; Caster.Location = loc; Caster.PlaySound(0x1FC); } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (m.Frozen || m.Paralyzed) { Caster.SendLocalizedMessage(1061923); // The target is already frozen. } else if (CheckHSequence(m)) { SpellHelper.Turn(Caster, m); SpellHelper.CheckReflect((int)this.Circle, Caster, ref m); int secs = (int)((GetDamageSkill(Caster) / 10) - (GetResistSkill(m) / 10)); if (!m.Player) { secs *= 3; } if (secs < 0) { secs = 0; } double duration = secs; m.Paralyze(TimeSpan.FromSeconds(duration)); m.PlaySound(0x204); m.FixedEffect(0x376A, 6, 1); } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(m) && CheckFizzle()) { SpellHelper.Turn(Caster, m); Timer t = new InternalTimer(m); m_Table[m] = t; t.Start(); m.FixedParticles(0x374A, 10, 15, 5032, EffectLayer.Head); m.PlaySound(0x1F8); m.SendMessage("You feel your soul weakening."); } FinishSequence(); }
public override void OnCast() { if (Caster.Backpack != null && CheckSequence()) { Item[] stones = Caster.Backpack.FindItemsByType(typeof(HealingStone)); for (int i = 0; i < stones.Length; i++) { stones[i].Delete(); } int amount = (int)((Caster.Skills[CastSkill].Value + Caster.Skills[DamageSkill].Value) * 1.5); int maxHeal = (int)((Caster.Skills[CastSkill].Value + Caster.Skills[DamageSkill].Value) / 5); Caster.PlaySound(0x650); Caster.FixedParticles(0x3779, 1, 15, 0x251E, 0, 0, EffectLayer.Waist); Caster.Backpack.DropItem(new HealingStone(Caster, amount, maxHeal)); Caster.SendLocalizedMessage(1080115); // A Healing Stone appears in your backpack. } FinishSequence(); }
public override void OnCast() { if (Caster.HasGump(typeof(SpellTriggerGump))) { Caster.CloseGump(typeof(SpellTriggerGump)); } SpellTriggerGump gump = new SpellTriggerGump(this, Caster); int serial = gump.Serial; Caster.SendGump(gump); Timer.DelayCall(TimeSpan.FromSeconds(30), () => { Gump current = Caster.FindGump(typeof(SpellTriggerGump)); if (current != null && current.Serial == serial) { Caster.CloseGump(typeof(EnchantSpellGump)); FinishSequence(); } }); }
public override void OnCast() { if (CheckSequence()) { Caster.FixedParticles(0x3779, 10, 20, 0x0, EffectLayer.Waist); Caster.PlaySound(0x5C0); List <Mobile> arcanists = GetArcanists(); TimeSpan duration = TimeSpan.FromHours(Math.Max(1, (int)(Caster.Skills.Spellweaving.Value / 24))); int strengthBonus = GetStrengthBonus(arcanists.Count); duration += TimeSpan.FromHours(strengthBonus - 1); for (int i = 0; i < arcanists.Count; i++) { Mobile m = arcanists[i]; GiveArcaneFocus(m, duration, strengthBonus); } } FinishSequence(); }
public override void OnCast() { if (CheckSequence()) { Caster.FixedParticles(0x3779, 10, 20, 0x0, EffectLayer.Waist); Caster.PlaySound(0x5C0); List <Mobile> Arcanists = GetArcanists(); TimeSpan duration = TimeSpan.FromHours(Math.Max(1, (int)(Caster.Skills.Spellweaving.Value / 24))); duration += TimeSpan.FromHours(Math.Min(6, Arcanists.Count)); int strengthBonus = Math.Min(IsBonus(Caster.Location, Caster.Map) ? 6 : 5, Arcanists.Sum(m => GetStrength(m))); // Math.Min(Arcanists.Count, IsBonus(Caster.Location, Caster.Map) ? 6 : 5); //The Sanctuary is a special, single location place for (int i = 0; i < Arcanists.Count; i++) { GiveArcaneFocus(Arcanists[i], duration, strengthBonus); } } FinishSequence(); }
private void ConsumePowers() { if (SpellInfo.HasAttribute(SpellAttributes.RequiresComboPoints)) { ConsumedComboPoints = Caster.ComboPoints; Caster.Attributes.SetComboPoints(0); } foreach ((SpellPowerType, int)powerCost in powerCosts) { if (powerCost.Item1 == SpellPowerType.Health) { if (Caster.IsAlive) { Caster.ModifyHealth(-Mathf.Min(Caster.Health - 1, powerCost.Item2)); } continue; } Caster.Attributes.ModifyPower(powerCost.Item1, -powerCost.Item2); } }
public override bool CheckCast() { int mana = ScaleMana(RequiredMana); if (!base.CheckCast()) { return(false); } if (Caster.Skills[CastSkill].Value < RequiredSkill) { string args = String.Format("{0}\t{1}\t ", RequiredSkill.ToString("F1"), CastSkill.ToString()); Caster.SendLocalizedMessage(1063013, args); // You need at least ~1_SKILL_REQUIREMENT~ ~2_SKILL_NAME~ skill to use that ability. return(false); } else if (Caster.Mana < mana) { Caster.SendLocalizedMessage(1060174, mana.ToString()); // You must have at least ~1_MANA_REQUIREMENT~ Mana to use this ability. return(false); } return(true); }
private void DoEffect() { IPooledEnumerable eable = Caster.GetMobilesInRange(4); foreach (Mobile m in eable) { if (m != null && m is PlayerMobile && m.Alive && m.AccessLevel == AccessLevel.Player) { PlayerMobile pm = (PlayerMobile)m; if (/*pm.IOBEquipped &&*/ pm.IOBAlignment == IOBAlignment.Council) { continue; } if (m.Hidden && Utility.RandomDouble() <= 0.80) { m.RevealingAction(); DoVisualForPlayer(m); } } } eable.Free(); }
public override bool CheckCast() { if (!base.CheckCast()) { return(false); } if (Caster.Mounted) { Caster.SendLocalizedMessage(1010097); // You cannot use this while mounted. return(false); } if ((Caster.Followers + 1) > Caster.FollowersMax) { Caster.SendLocalizedMessage(1063133); // You cannot summon a mirror image because you have too many followers. return(false); } Caster.SendLocalizedMessage(1063134); // You begin to summon a mirror image of yourself. return(true); }
public override bool CheckCast() { if (IsInCooldown(Caster, GetType())) { return(false); } if (!CheckWeapon()) { Caster.SendLocalizedMessage(1156016); // You must have a throwing weapon equipped to use this ability. return(false); } ElementalFurySpell spell = GetSpell(Caster, GetType()) as ElementalFurySpell; if (spell != null) { spell.Expire(); return(false); } return(base.CheckCast()); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckBSequence(m)) { SpellHelper.Turn(Caster, m); SpellHelper.AddStatBonus(Caster, m, StatType.Dex); m.FixedParticles(0x375A, 10, 15, 5010, EffectLayer.Waist); m.PlaySound(0x1e7); int percentage = (int)(SpellHelper.GetOffsetScalar(Caster, m, false) * 100); TimeSpan length = SpellHelper.GetDuration(Caster, m); BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Agility, 1075841, length, m, percentage.ToString())); } FinishSequence(); }
public async Task CastAsync() { if (!Caster.CanBuff(Caster, false, BuffIcon.MagicReflection)) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. return; } var value = Caster.Skills[SkillName.Magery].Value / 12.0 + 1.0; Caster.FireHook(h => h.OnModifyWithMagicEfficiency(Caster, ref value)); Caster.TryAddBuff(new MagicReflectionBuff { Value = value >= (int)SpellCircle.Highest ? SpellCircle.Highest - 1 : (SpellCircle)value, Charges = 1 }); Caster.FixedParticles(0x374B, 10, 10, 5037, EffectLayer.Waist); Caster.PlaySound(0x1E7); }
public override bool CasterIsAttacked(GameLiving attacker) { if (Spell.Uninterruptible) return false; if (IsCasting && Stage < 2) { double mod = Caster.GetConLevel(attacker); double chance = 65; chance += mod * 10; chance = Math.Max(1, chance); chance = Math.Min(99, chance); if (attacker is GamePlayer) chance = 100; if (Util.Chance((int)chance)) { Caster.TempProperties.setProperty(INTERRUPT_TIMEOUT_PROPERTY, Caster.CurrentRegion.Time + Caster.SpellInterruptDuration); MessageToLiving(Caster, attacker.GetName(0, true) + " attacks you and your shot is interrupted!", eChatType.CT_SpellResisted); InterruptCasting(); return true; } } return true; }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (m is Mobiles.BaseVendor || m is Mobiles.PlayerVendor || m.AccessLevel > Caster.AccessLevel) { Caster.SendLocalizedMessage(501857); // This spell won't work on that! } else if (CheckBSequence(m)) { SpellHelper.Turn(Caster, m); Effects.SendLocationParticles(EffectItem.Create(new Point3D(m.X, m.Y, m.Z + 16), Caster.Map, EffectItem.DefaultDuration), 0x376A, 10, 15, 5045); m.PlaySound(0x3C4); m.Hidden = true; m.Combatant = null; m.Warmode = false; RemoveTimer(m); TimeSpan duration = TimeSpan.FromSeconds(((1.2 * Caster.Skills.Magery.Fixed) / 10)); Timer t = new InternalTimer(m, duration); BuffInfo.RemoveBuff(m, BuffIcon.HidingAndOrStealth); BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Invisibility, 1075825, duration, m)); //Invisibility/Invisible m_Table[m] = t; t.Start(); } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (!CheckLineOfSight(m)) { this.DoFizzle(); Caster.SendAsciiMessage("Target is not in line of sight"); } else if (CheckHSequence(m)) { SpellHelper.Turn(Caster, m); SpellHelper.CheckReflect((int)this.Circle, Caster, ref m); SpellHelper.AddStatCurse(Caster, m, StatType.Str); if (m.Spell != null) { m.Spell.OnCasterHurt(); } m.Paralyzed = false; m.FixedParticles(0x3779, 10, 15, 5009, EffectLayer.Waist); m.PlaySound(0x1E6); int percentage = (int)(SpellHelper.GetOffsetScalar(Caster, m, true) * 100); TimeSpan length = SpellHelper.GetDuration(Caster, m); BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Weaken, 1075837, length, m, percentage.ToString())); } FinishSequence(); }
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); int intel = Caster.Int; if (intel > 150) { intel = 150; } double damage = (intel - m.Int) / 2.5; damage = SpellHelper.AdjustValue(Caster, damage); if (CheckResisted(m)) { damage *= 0.75; m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy. } Effects.SendTargetParticles(Caster, 0x374A, 10, 15, 2038, EffectLayer.Head); Effects.SendTargetParticles(m, 0x374A, 10, 15, 5038, EffectLayer.Head); m.PlaySound(0x213); SpellHelper.Damage(this, m, damage, 0, 0, 0, 0, 100); } FinishSequence(); }
public void Target(IDamageable m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(m)) { IDamageable source = Caster; IDamageable target = m; SpellHelper.Turn(Caster, m); if (SpellHelper.CheckReflect((int)Circle, ref source, ref target)) { Timer.DelayCall(TimeSpan.FromSeconds(.5), () => { source.MovingParticles(target, 0x379F, 7, 0, false, true, 3043, 4043, 0x211); source.PlaySound(0x20A); }); } double damage = GetNewAosDamage(40, 1, 5, m); // Do the effects Caster.MovingParticles(m, 0x379F, 7, 0, false, true, 3043, 4043, 0x211); Caster.PlaySound(0x20A); if (damage > 0) { // Deal the damage SpellHelper.Damage(this, target, damage, 0, 0, 0, 0, 100); } } FinishSequence(); }