Ejemplo n.º 1
0
        public void Populate(
            Enemy enemy,
            Tuple <Player, int> playerData,
            Random rnd,
            string lootState,
            IList <LootDef> lootDefs
            )
        {
            Lootstate = lootState;

            if (playerData == null)
            {
                return;
            }

            double rng         = rnd.NextDouble();
            double probability = .15; // 15%

            ILootDef[] pinkbag = new ILootDef[] { new Drops(new TierLoot(tier, itemType, probability)) };

            if (rng <= probability)
            {
                pinkbag[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs);
            }
        }
Ejemplo n.º 2
0
        public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs)
        {
            BagType   = BagType.Blue;
            Lootstate = lootState;

            double probability = 0;

            var candidates   = enemy.DamageCounter.GetPlayerData().ToList();
            var rng          = rnd.NextDouble();
            var playersCount = candidates.Count;
            var enemyHP      = (int)enemy.ObjectDesc.MaxHP;

            if (playersCount == 1)
            {
                probability = .0001;
            }
            else if (playersCount > 1 && playersCount <= 3)
            {
                probability = .0001 + .0001 * playersCount;
            }
            else
            {
                probability = .0002 + .000005 * playersCount;
            }

            var whitebag = new ILootDef[] { new Drops(new ItemLoot(itemName, probability * (eventChest ? .8 : 1), true)) };

            whitebag[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs);
        }
Ejemplo n.º 3
0
        public void Populate(
            Enemy enemy,
            Tuple <Player, int> playerData,
            Random rnd,
            string lootState,
            IList <LootDef> lootDefs
            )
        {
            Lootstate = lootState;

            if (playerData == null)
            {
                return;
            }

            double rng         = rnd.NextDouble();
            double probability = !alwaysDrop ? .25 : 1; // 25% (always drop: 100%)

            if (!single)
            {
                List <KeyValuePair <string, bool> > itemNamesDrops = new List <KeyValuePair <string, bool> >();

                if (itemNames.Length != alwaysDrops.Length)
                {
                    return;
                }

                for (int i = 0; i < itemNames.Length; i++)
                {
                    itemNamesDrops.Add(new KeyValuePair <string, bool>(itemNames[i], alwaysDrops[i]));
                }

                List <ILootDef> validateItems = new List <ILootDef>();

                foreach (KeyValuePair <string, bool> itemNamesDrop in itemNamesDrops)
                {
                    validateItems.Add(new MostDamagers(3, new ItemLoot(itemNamesDrop.Key, !itemNamesDrop.Value ? .25 : 1)));
                }

                ILootDef[] bluebags = validateItems.ToArray();

                if (rng <= probability)
                {
                    foreach (var i in bluebags)
                    {
                        i.Populate(enemy, playerData, rnd, Lootstate, lootDefs);
                    }
                }

                return;
            }

            ILootDef[] bluebag = new ILootDef[] { new MostDamagers(3, new ItemLoot(itemName, probability)) };

            if (rng <= probability)
            {
                bluebag[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs);
            }
        }
Ejemplo n.º 4
0
        public ILootEntity Create(ILootDef lootDef, Vector3 position)
        {
            var loot = new LootEntity(lootDef, position);

            LootModel.AddEntity(loot);

            return(loot);
        }
Ejemplo n.º 5
0
        public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs)
        {
            BagType   = BagType.Purple;
            Lootstate = lootState;

            var purpleBag = new ILootDef[] { new Drops(new TierLoot(tier, itemType, BagType)) };

            purpleBag[0].Populate(enemy, playerData, rnd, lootState, lootDefs);
        }
Ejemplo n.º 6
0
        public ILootEntity Create(ILootDef lootDef, Vector3 position)
        {
            var loot = LootCreator.Create(lootDef, position);

            var lootView = LootViewPool.Spawn(loot);

            LootViewModel.AddView(loot, lootView);

            return(loot);
        }
Ejemplo n.º 7
0
        public void Populate(
            Enemy enemy,
            Tuple <Player, int> playerData,
            Random rnd,
            string lootState,
            IList <LootDef> lootDefs
            )
        {
            Lootstate = lootState;

            if (playerData != null)
            {
                return;
            }

            Item[] candidates = GameServer.Manager.GameData.Items
                                .Where(item => item.Value.SlotType == 9000)
                                .Where(item => item.Value.MinStars <= (int)rarity)
                                .Select(item => item.Value)
                                .ToArray();

            Item onlyOne = candidates[new Random().Next(0, candidates.Length)];

            double rng         = rnd.NextDouble();
            double probability = 0;

            if (onlyOne.MinStars < 8)
            {
                probability = .15; // 15%
            }
            else if (onlyOne.MinStars >= 8 && onlyOne.MinStars < 12)
            {
                probability = .05; // 5%
            }
            else if (onlyOne.MinStars >= 12 && onlyOne.MinStars < 20)
            {
                probability = .01; // 1%
            }
            else
            {
                probability = .0025; // 0.25%
            }
            ILootDef[] eggbasket = new ILootDef[] { new Drops(new ItemLoot(onlyOne.DisplayId, probability)) };

            if (rng <= probability)
            {
                eggbasket[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs);
            }
        }
Ejemplo n.º 8
0
        public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs)
        {
            BagType   = BagType.Blue;
            Lootstate = lootState;

            if (single)
            {
                var blueBag = new ILootDef[] { new Drops(new ItemLoot(itemName, alwaysDrop ? 1 : 0.1 * Settings.WOTMG_RATE)) };
                blueBag[0].Populate(enemy, playerData, rnd, lootState, lootDefs);
            }
            else
            {
                var blueBag = new List <ILootDef>();

                for (int i = 0; i < itemNames.Length; i++)
                {
                    blueBag.Add(new Drops(new ItemLoot(itemNames[i], alwaysDrops[i] ? 1 : 0.1 * Settings.WOTMG_RATE)));
                }

                blueBag.Select(drop => { drop.Populate(enemy, playerData, rnd, lootState, lootDefs); return(drop); }).ToList();
            }
        }
Ejemplo n.º 9
0
        public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs)
        {
            Lootstate = lootState;

            Item[] candidates = GameServer.Manager.GameData.Items
                                .Where(item => item.Value.SlotType == 9000)
                                .Where(item => item.Value.MinStars <= (int)rarity)
                                .Select(item => item.Value)
                                .ToArray();

            var onlyOne = candidates[new Random().Next(0, candidates.Length)];

            double probability = 0;

            if (onlyOne.MinStars < 8)
            {
                probability = .15; // 15%
            }
            else if (onlyOne.MinStars >= 8 && onlyOne.MinStars < 12)
            {
                probability = .05; // 5%
            }
            else if (onlyOne.MinStars >= 12 && onlyOne.MinStars < 20)
            {
                probability = .01; // 1%
            }
            else
            {
                probability = .0025; // 0.25%
            }
            probability *= Settings.WOTMG_RATE;

            var eggBasket = new ILootDef[] { new Drops(new ItemLoot(onlyOne.ObjectType, probability)) };

            eggBasket[0].Populate(enemy, playerData, rnd, lootState, lootDefs);
        }
Ejemplo n.º 10
0
 public LootEntity(ILootDef lootDef, Vector3 startPosition)
 {
     Def           = lootDef.CheckNull();
     StartPosition = startPosition;
 }