case (ushort)Enums.SpellID.CrackingShock:
case (ushort)Enums.SpellID.CrackingShock: { MsgSpellAnimation MsgSpell = new MsgSpellAnimation(user.Entity.UID , 0, Attack.X, Attack.Y, ClientSpell.ID , ClientSpell.Level, ClientSpell.UseSpellSoul); uint Experience = 0; foreach (Interfaces.IMapObject target in user.Screen.Objects) { if (target.MapObjType == MapObjectType.Monster) { Game.Entity attacked = target as Game.Entity; if (Calculate.Base.GetDistance(Attack.X, Attack.Y, attacked.X, attacked.Y) < DBSpell.Range / 3) { if (CheckAttack.CanAttackMonster.Verified(user, attacked, DBSpell)) { MsgSpellAnimation.SpellObj AnimationObj; Calculate.Physical.OnMonster(user.Entity, attacked, DBSpell, out AnimationObj); AnimationObj.Damage = Calculate.Base.CalculateSoul(AnimationObj.Damage, ClientSpell.UseSpellSoul); Experience += ReceiveAttack.Monster.Execute(stream, AnimationObj, user, attacked); user.MessageBox("100"); MsgSpell.Targets.Enqueue(AnimationObj); } } } } foreach (Interfaces.IMapObject targer in user.Screen.Objects) { var attacked = targer as Game.Entity; if (targer.MapObjType == MapObjectType.Entity && user.Entity.UID != targer.UID) { if (Calculate.Base.GetDistance(Attack.X, Attack.Y, attacked.X, attacked.Y) < DBSpell.Range / 3) { if (CheckAttack.CanAttackPlayer.Verified(user, attacked, DBSpell)) { MsgSpellAnimation.SpellObj AnimationObj; Calculate.Physical.OnPlayer(user.Entity, attacked, DBSpell, out AnimationObj); AnimationObj.Damage = Calculate.Base.CalculateSoul(AnimationObj.Damage, ClientSpell.UseSpellSoul); AnimationObj.Damage = AnimationObj.Damage * 20 / 100; ReceiveAttack.Player.Execute(stream, AnimationObj, user, attacked); MsgSpell.Targets.Enqueue(AnimationObj); } } } } foreach (Interfaces.IMapObject targer in user.Screen.Objects) { if (targer.MapObjType == MapObjectType.SobNpc) { var attacked = targer as Network.GamePackets.SobNpcSpawn; if (Calculate.Base.GetDistance(Attack.X, Attack.Y, attacked.X, attacked.Y) < DBSpell.Range / 3) { if (CheckAttack.CanAttackNpc.Verified(user, attacked, DBSpell)) { MsgSpellAnimation.SpellObj AnimationObj; Calculate.Physical.OnNpcs(user.Entity, attacked, DBSpell, out AnimationObj); AnimationObj.Damage = Calculate.Base.CalculateSoul(AnimationObj.Damage, ClientSpell.UseSpellSoul); Experience += ReceiveAttack.Npc.Execute(stream, AnimationObj, user, attacked); MsgSpell.Targets.Enqueue(AnimationObj); } } } } Updates.IncreaseExperience.Up(stream, user, Experience); Updates.UpdateSpell.CheckUpdate(stream, user, Attack, Experience, DBSpells); MsgSpell.SetStream(stream); MsgSpell.Send(user); break; }