#region SuperTwofoldBlade case 12080: { if (CanUseSpell(spell, attacker.Owner)) { //var dis = spell.Distance; //if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= dis) if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= spell.Distance) { 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; //suse.SpellLevelHu = client_Spell.UseSpell; Game.Attacking.InLineAlgorithm ila = new KhaledMohamed.Game.Attacking.InLineAlgorithm(attacker.X, X, attacker.Y, Y, (byte)spell.Range, InLineAlgorithm.Algorithm.DDA); bool aaAttack = false; var Array = attacker.Owner.Screen.Objects; foreach (Interfaces.IMapObject _obj in Array) { if (_obj.MapObjType == MapObjectType.Monster) { attacked = _obj as Entity; if (Kernel.GetDistance(attacker.X, attacker.Y, attacked.X, attacked.Y) <= 7) { if (attacked.UID == Target) { if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee)) { aaAttack = true; var damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack, client_Spell.LevelHu2); damage = (uint)(damage * 1.4); ReceiveAttack(attacker, attacked, attack, ref damage, spell); suse.AddTarget(attacked, damage, attack); } } else if (ila.InLine(attacked.X, attacked.Y)) { if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee)) { aaAttack = true; var damage = Game.Attacking.Calculate.Melee(attacker, attacked, spell, ref attack, client_Spell.LevelHu2); damage = (uint)(damage * 0.1); ReceiveAttack(attacker, attacked, attack, ref damage, spell); suse.AddTarget(attacked, damage, attack); } } } } else if (_obj.MapObjType == MapObjectType.Entity) { attacked = _obj as Entity; if (Kernel.GetDistance(attacker.X, attacker.Y, attacked.X, attacked.Y) <= 7) { if (attacked.UID == Target) { if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee)) { aaAttack = true; var damage = Game.Attacking.Calculate.Ranged(attacker, attacked, ref attack, client_Spell.LevelHu2); damage = (uint)(damage * 80 / 100); ReceiveAttack(attacker, attacked, attack, ref damage, spell); suse.AddTarget(attacked, damage, attack); } } } } else if (_obj.MapObjType == MapObjectType.SobNpc) { attackedsob = _obj as SobNpcSpawn; if (attackedsob.UID == Target) { if (CanAttack(attacker, attackedsob, spell)) { aaAttack = true; // if (!moveIn.InRange(attackedsob.X, attackedsob.Y, 4, ranger)) // continue; var damage = Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack); damage = (uint)(damage * 2.4); ReceiveAttack(attacker, attackedsob, attack, damage, spell); suse.AddTarget(attackedsob, damage, attack); } } } } if (aaAttack) attacker.Owner.SendScreen(suse, true); //attacker.RadiantStamp = DateTime.Now; } } break; } #endregion
#region SuperTwofoldBladecase 12080:{if (Time32.Now >= attacker.SpellStamp.AddMilliseconds(500)){if (CanUseSpell(spell, attacker.Owner)){ushort Xx, Yx;if (attacked != null){Xx = attacked.X;Yx = attacked.Y;}else{Xx = attackedsob.X;Yx = attackedsob.Y;}if (Kernel.GetDistance(attacker.X, attacker.Y, Xx, Yx) <= spell.Distance){if (attackedsob == null)if (attacked.ContainsFlag(Update.Flags.Fly))return;if (attacker.ContainsFlag(Update.Flags.Fly))return;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;bool send = false;if (attackedsob == null){if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee)){attack.Effect1 = Attack.AttackEffects1.None;uint damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack);if (attacker.NobilityRank == HemaProject.Game.ConquerStructures.NobilityRank.King){damage = (uint)(damage * 0.9);}if (attacker.NobilityRank == HemaProject.Game.ConquerStructures.NobilityRank.Prince){damage = (uint)(damage * 0.8);}if (attacker.NobilityRank == HemaProject.Game.ConquerStructures.NobilityRank.Duke){damage = (uint)(damage * 0.7);}if (attacker.NobilityRank == HemaProject.Game.ConquerStructures.NobilityRank.Earl){damage = (uint)(damage * 0.6);}suse.Effect1 = attack.Effect1;ReceiveAttack(attacker, attacked, attack, ref damage, spell);suse.AddTarget(attacked, damage, attack);send = true;if (attacker.Owner.Spells.ContainsKey(0) && !attacked.Dead){var s = attacker.Owner.Spells[0];var spellz = Database.SpellTable.SpellInformations[s.ID][s.Level];if (spellz != null){if (Kernel.Rate(spellz.Percent)){SpellUse ssuse = new SpellUse(true);ssuse.Attacker = attacker.UID;ssuse.SpellID = spellz.ID;ssuse.SpellLevel = spellz.Level;damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack);ssuse.AddTarget(attacked, new SpellUse.DamageClass().Damage = damage, attack);ReceiveAttack(attacker, attacked, attack, ref damage, spell);attacker.Owner.SendScreen(ssuse, true);}}}}}else{if (CanAttack(attacker, attackedsob, spell)){attack.Effect1 = Attack.AttackEffects1.None;uint damage = Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack);damage = (uint)(damage * 180 / 100);ReceiveAttack(attacker, attackedsob, attack, damage, spell);suse.Effect1 = attack.Effect1;suse.AddTarget(attackedsob, damage, attack);send = true;}}if (send)attacker.Owner.SendScreen(suse, true);attacker.SpellStamp = Time32.Now;}else{attacker.AttackPacket = null;}}}break;}#endregion
if (Time32.Now >= attacker.SpellStamp.AddMilliseconds(500)) {
attacker.SpellStamp = Time32.Now;