Hassan Emprator
2019-07-29, 01:07 PM
عندي في في اسكله ال الي اسمها تولات دانس دي الي بتنزل تحت الارض في النينجا بطلع بطيء انا عايزها ططلع سريع زي اون لاين حلها ايه ؟
زيت سلاحين النينجا هههههه
Handle.cs
ابحث عن
private void TwilightAction(
بدله
 private void TwilightAction(Entity attacker, SpellUse suse, SpellInformation spell, ushort X, ushort Y)
        {
            byte dist = 18;
            var map = attacker.Owner.Map;
            var algo = new InLineAlgorithm(attacker.X, X, attacker.Y, Y, dist);
            var count = (double)algo.lcoords.Count / 3;
            int i = 1;
            Program.World.DelayedTask.StartDelayedTask(() =>
            {
                var selected = i * (int)count;
                selected = Math.Min(algo.lcoords.Count - 1, selected);
                X = (ushort)algo.lcoords[selected].X;
                Y = (ushort)algo.lcoords[selected].Y;
                FloorItem floorItem = new FloorItem(true);
                floorItem.ItemID = FloorItem.Twilight;
                floorItem.ItemColor = (Enums.Color)(i + 1);
                floorItem.MapID = attacker.MapID;
                floorItem.Type = FloorItem.Effect;
                floorItem.X = X;
                floorItem.Y = Y;
                floorItem.OnFloor = Time32.Now;
                floorItem.Owner = attacker.Owner;
                while (map.Npcs.ContainsKey(floorItem.UID))
                    floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
                map.AddFloorItem(floorItem);
                attacker.Owner.SendScreenSpawn(floorItem, true);
                if (i != 0)
                {
                    Data data = new Network.GamePackets.Data(true);
                    data.UID = attacker.UID;
                    data.X = X;
                    data.Y = Y;
                    data.ID = 434;
                    data.wParam1 = attacker.X;
                    data.wParam2 = attacker.Y;
                    attacker.Owner.SendScreen(data, true);
                    //double percent = 1;
                    //switch (i)
                    //{
                    //    case 1:
                    //        percent = 0.92;
                    //        break;
                    //    case 2:
                    //        percent = 1.02;
                    //        break;
                    //    case 3:
                    //        percent = 1.2;
                    //        break;
                    //}
                    foreach (Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                    {
                        bool hit = false;
                        var selected2 = Math.Max(0, i - 1) * (int)count;
                        selected2 = Math.Min(algo.lcoords.Count - 1, selected2);
                        if (Kernel.GetDistance(_obj.X, _obj.Y, (ushort)algo.lcoords[selected].X, (ushort)algo.lcoords[selected].Y) <= 3)
                            hit = true;
                        //for (int j = selected2; j < selected; j++)
                        //    if (Kernel.GetDistance(_obj.X, _obj.Y, (ushort)algo.lcoords[j].X, (ushort)algo.lcoords[j].Y) <= spell.Range)
                        //        hit = true;
                        if (hit)
                        {
                            if (_obj.MapObjType == MapObjectType.Monster)
                            {
                                attacked = _obj as Entity;
                                if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
                                {
                                    var damage = Game.Attacking.Calculate.Melee(attacker, attacked, spell, ref attack);
                                    damage = (uint)(damage * SkillsAttack.TwilightDanceMonsters);
                                    ReceiveAttack(attacker, attacked, attack, ref damage, spell);
                                    suse.AddTarget(attacked, damage, attack);
                                }
                            }
                            else if (_obj.MapObjType == MapObjectType.Entity)
                            {
                                attacked = _obj as Entity;
                                if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
                                {
                                    var damage = Game.Attacking.Calculate.Melee(attacker, attacked, spell, ref attack);
                                    damage = (uint)(damage * SkillsAttack.TwilightDancePlayers);
                                    // damage = (uint)(damage * 0.6);
                                    //damage = (uint)((double)(damage * percent));
                                    ReceiveAttack(attacker, attacked, attack, ref damage, spell);
                                    suse.AddTarget(attacked, damage, attack);
                                }
                            }
                            else if (_obj.MapObjType == MapObjectType.SobNpc)
                            {
                                var attackedsob = _obj as SobNpcSpawn;
                                if (CanAttack(attacker, attackedsob, spell))
                                {
                                    var damage = Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack);
                                    damage = (uint)(damage * SkillsAttack.TwilightDancePoles);
                                    ReceiveAttack(attacker, attackedsob, attack, damage, spell);
                                    suse.AddTarget(attackedsob, damage, attack);
                                }
                            }
                        }
                    }
                    if (suse.Targets.Count > 0)
                        attacker.Owner.SendScreen(suse, true);
                    suse.Targets.Clear();
                }
                i++;
            }, 0, 2, 500);
        }