Пример #1
0
        public void CreateDrop(Npc npc, Player player)
        {
            if (Funcs.IsLuck(75))
            {
                var money = (int)(10 * Data.Data.NpcExperience[npc.GetLevel()] / Funcs.Random().Next(20, 60));

                player.Instance.AddDrop(
                    new Item
                    {
                        Owner = player,
                        Npc = npc,

                        ItemId = 20000000,
                        Count = money,
                        Position = Geom.RandomCirclePosition(npc.Position, Funcs.Random().Next(60, 100)),
                        Instance = player.Instance,
                    });
            }

            if (!Data.Data.Drop.ContainsKey(npc.NpcTemplate.FullId))
                return;

            List<int> items = Data.Data.Drop[npc.NpcTemplate.FullId];

            if (items == null)
                return;

            int count = 0;
            int rate = Funcs.Random().Next(0, 2500);

            if (rate < 10)
                count = 6;
            else if (rate < 30)
                count = 5;
            else if (rate < 90)
                count = 4;
            else if (rate < 270)
                count = 3;
            else if (rate < 600)
                count = 2;
            else if (rate < 1800)
                count = 1;

            if (items.Count < count)
                count = items.Count;

            for (int i = 0; i < count; i++)
            {
                int itemId = items[Funcs.Random().Next(0, items.Count)];

                if (!Data.Data.ItemTemplates.ContainsKey(itemId))
                    continue;

                player.Instance.AddDrop(
                    new Item
                    {
                        Owner = player,
                        Npc = npc,

                        ItemId = itemId,
                        Count = 1,
                        Position = Geom.RandomCirclePosition(npc.Position, Funcs.Random().Next(60, 100)),
                        Instance = player.Instance,
                    });
            }
        }