#region ScurvyBomb case 11040: { if (Time32.Now < attacker.SpellStamp.AddMilliseconds(200))//1000 { attacker.AttackPacket = null; return; } else if (CanUseSpell(spell, attacker.Owner)) { PrepareSpell(spell, attacker.Owner); SpellUse suse = new SpellUse(true); suse.Attacker = attacker.UID; suse.SpellID = spell.ID; suse.SpellLevel = spell.Level; suse.X = X; suse.Y = Y; KhaledMohamed.Network.GamePackets.SpellUse.DamageClass tar = new SpellUse.DamageClass(); foreach (var t in attacker.Owner.Screen.Objects) { if (t == null) continue; if (t.MapObjType == MapObjectType.Entity || t.MapObjType == MapObjectType.Monster) { var target = t as Entity; int rate = 20; if (attacker.BattlePower == target.BattlePower) rate = 50; if (attacker.BattlePower > target.BattlePower) rate = 80; else rate = 100 - ((target.BattlePower - attacker.BattlePower) * 2); rate = Math.Max(20, rate); if (Kernel.GetDistance(X, Y, target.X, target.Y) <= spell.Range && MyMath.Success((double)rate)) { if (CanAttack(attacker, target, spell, false)) { tar.Damage = Calculate.Ranged(attacker, target, spell, ref attack); if (t.MapObjType == MapObjectType.Monster) tar.Damage = tar.Damage * 10; if (t.MapObjType == MapObjectType.Entity) tar.Damage = tar.Damage / 100; ReceiveAttack(attacker, target, attack, ref tar.Damage, spell); target.AddFlag2(KhaledMohamed.Network.GamePackets.Update.Flags2.DefensiveStance); attacker.SpellStamp = Time32.Now; target.FatigueStamp = Time32.Now; target.FatigueSecs = spell.Time; suse.AddTarget(target, tar, attack); } } } } if (attacker.EntityFlag == EntityFlag.Entity) attacker.Owner.SendScreen(suse, true); } break; } #endregion