Exemplo n.º 1
0
        public void FillBagNoClassMatch()
        {
            SampleRewardList = new List <RVRRewardItem>
            {
                new RVRRewardItem {
                    ItemId = 1, CanAwardDuplicate = 0, Class = 2, ItemCount = 1, RRBand = 0, Rarity = 2, RewardId = 123123
                },
                new RVRRewardItem {
                    ItemId = 2, CanAwardDuplicate = 0, Class = 2, ItemCount = 1, RRBand = 0, Rarity = 2, RewardId = 456465
                },
                new RVRRewardItem {
                    ItemId = 3, CanAwardDuplicate = 0, Class = 2, ItemCount = 1, RRBand = 0, Rarity = 1, RewardId = 789789
                },
            };

            // Dont use random - turn off shuffle
            var bagContentSelector = new BagContentSelector(SampleRewardList, new Random(1));

            var emptyBag = new LootBagTypeDefinition {
                Assignee = 1, BagRarity = LootBagRarity.Blue, LootBagNumber = 1
            };

            var playerExistingItems = new List <uint> {
                1
            };

            var filledBag = bagContentSelector.SelectBagContentForPlayer(Logger, emptyBag, 40, 6, playerExistingItems, false);

            Assert.IsFalse(filledBag.IsValid());
        }
Exemplo n.º 2
0
        public void DetermineRVRZoneReward_NMatches_ValidBag_PlayerItemsMatchDupeOk()
        {
            var lootDecider = new BagContentSelector(this.SampleZoneItemOptions, new LockedRandomNumberGenerator(10));
            var bag         = new LootBagTypeDefinition {
                BagRarity = LootBagRarity.Blue, Assignee = 1, LootBagNumber = 1
            };

            SamplePlayerItems.Add(301);
            SamplePlayerItems.Add(601);

            // SHould match 3 record
            var result = lootDecider.SelectBagContentForPlayer(Logger, bag, 20, 64, SamplePlayerItems, false);

            Assert.IsTrue(result.IsValid());
            Assert.IsTrue(result.RenownBand == 20);
            Assert.IsTrue(result.ItemId == 601);

            SamplePlayerItems.Add(602);

            // SHould match 3 record
            var result2 = lootDecider.SelectBagContentForPlayer(Logger, bag, 20, 64, SamplePlayerItems, false);

            Assert.IsTrue(result2.IsValid());
            Assert.IsTrue(result2.RenownBand == 20);
            Assert.IsTrue(result2.ItemId == 601);
        }
Exemplo n.º 3
0
        public void DetermineRVRZoneReward_NoMatches()
        {
            var lootDecider = new BagContentSelector(this.SampleZoneItemOptions, StaticRandom.Instance);
            var bag         = new LootBagTypeDefinition();

            var result = lootDecider.SelectBagContentForPlayer(Logger, bag, 70, 64, new List <uint>());

            Assert.IsFalse(result.IsValid());
        }
Exemplo n.º 4
0
        public void DetermineRVRZoneReward_ManualTest_ValidBag()
        {
            var lootDecider = new BagContentSelector(this.SampleZoneItemOptions, new LockedRandomNumberGenerator(10));
            var bag         = new LootBagTypeDefinition {
                BagRarity = LootBagRarity.Blue, Assignee = 1, LootBagNumber = 1
            };

            // SHould match 3 record
            var result = lootDecider.SelectBagContentForPlayer(Logger, bag, 10, 64, new List <uint>(), true);

            Assert.IsTrue(1 == 1);
        }
Exemplo n.º 5
0
        public void DetermineRVRZoneReward_1Match_ValidBag()
        {
            var lootDecider = new BagContentSelector(this.SampleZoneItemOptions, new LockedRandomNumberGenerator(10));
            var bag         = new LootBagTypeDefinition {
                BagRarity = LootBagRarity.Blue, Assignee = 1, LootBagNumber = 1
            };

            // SHould match 1 record
            var result = lootDecider.SelectBagContentForPlayer(Logger, bag, 20, 64, new List <uint>(), false);

            Assert.IsTrue(result.IsValid());
            Assert.IsTrue(result.RenownBand == 20);
            Assert.IsTrue(result.ItemId == 601);
        }
Exemplo n.º 6
0
        public static bool AddZoneLockBags(Player plr, ref List <string> values)
        {
            var destructionLootChest = LootChest.Create(plr.Region, plr.WorldPosition, (ushort)plr.ZoneId);

            var orderLootChest = LootChest.Create(plr.Region, plr.WorldPosition, (ushort)plr.ZoneId);

            plr = GetTargetOrMe(plr) as Player;
            if (plr == null)
            {
                return(true);
            }
            int numberBags     = GetInt(ref values);
            var _rewardManager = new RVRRewardManager();

            var rewardAssigner = new RewardAssigner(StaticRandom.Instance, null);

            var bagDefinitions = rewardAssigner.DetermineBagTypes(numberBags);

            // Assign eligible players to the bag definitions.
            foreach (var lootBagTypeDefinition in bagDefinitions)
            {
                var listPlayerContributions = new List <PlayerContribution>();
                var pc = new PlayerContribution();
                pc.ContributionId = 4;
                pc.Timestamp      = TCPManager.GetTimeStamp();
                listPlayerContributions.Add(pc);

                var cd = new ConcurrentDictionary <uint, List <PlayerContribution> >();
                cd.TryAdd(plr.CharacterId, listPlayerContributions);
                var cm = new ContributionManager(cd, BountyService._ContributionDefinitions);

                var eligPlayer = new List <KeyValuePair <uint, int> >();
                eligPlayer.Add(new KeyValuePair <uint, int>(plr.CharacterId, 10));
                var bonuses              = new List <RVRPlayerBagBonus>();
                var randomRolls          = new Dictionary <uint, int>();
                var pairingContributions = new Dictionary <uint, int>();
                var rewardAssignments    = rewardAssigner.AssignLootToPlayers(numberBags, new List <LootBagTypeDefinition> {
                    lootBagTypeDefinition
                }, eligPlayer, bonuses, randomRolls, pairingContributions, new WorldConfigs {
                    AllowBagBonusContribution = "Y", AllowPairingContribution = "Y", AllowRandomContribution = "Y"
                });

                var bagContentSelector = new BagContentSelector(RVRZoneRewardService.RVRRewardKeepItems, StaticRandom.Instance);

                foreach (var reward in rewardAssignments)
                {
                    if (reward.Assignee != 0)
                    {
                        var playerItemList   = (from item in plr.ItmInterface.Items where item != null select item.Info.Entry).ToList();
                        var playerRenown     = plr.CurrentRenown.Level;
                        var playerClass      = plr.Info.CareerLine;
                        var playerRenownBand = PlayerUtil.CalculateRenownBand(playerRenown);

                        var lootDefinition = bagContentSelector.SelectBagContentForPlayer(_logger, reward, playerRenownBand, playerClass, playerItemList.ToList(), true);
                        if (lootDefinition.IsValid())
                        {
                            plr.SendClientMessage("Lootdefinition is valid");
                            // Only distribute if loot is valid
                            var generatedLootBag = new LootBagBuilder().BuildChestLootBag(lootDefinition, plr);

                            if (plr.Realm == Realms.REALMS_REALM_DESTRUCTION)
                            {
                                destructionLootChest.Add(plr.CharacterId, generatedLootBag);
                            }
                            if (plr.Realm == Realms.REALMS_REALM_ORDER)
                            {
                                orderLootChest.Add(plr.CharacterId, generatedLootBag);
                            }
                        }
                        else
                        {
                            plr.SendClientMessage("Lootdefinition is NOT valid");
                        }
                    }
                }
            }
            return(true);
        }