//TODO: Add discounts public MissionResult(HumanPlayer player, double progression, Mission.Mission lastMission, List <Armour> loot, string closeButtonText) { InitializeComponent(); this.player = player; nextMission.Text = closeButtonText; //Enable level up levelUpButton.Enabled = player.storedLevelUps != 0; levelUpButton.Text = $"Level up x{player.storedLevelUps}"; //Generate reward Reward _reward = lastMission.Reward(); if (_reward.jewelryReward != null) { if (_reward.jewelryReward.jewelries != null) { reward.AddRange(_reward.jewelryReward.jewelries); } while (_reward.jewelryReward.number != 0) { //Determine the quality MathNet.Numerics.Distributions.Normal normal = new MathNet.Numerics.Distributions.Normal(); int offset = (int)normal.InverseCumulativeDistribution(World.random.NextDouble()); int num = E.GetQualityPos(_reward.jewelryReward.quality) + offset; num = Math.Min(Math.Max(num, 0), Enum.GetNames(typeof(Quality)).Length); //Bound the value Quality quality = E.GetQuality(num); reward.Add(Jewelry.GenerateJewelry(quality)); _reward.jewelryReward.number--; } } if (!(_reward.weaponReward is null)) { reward.Add(Campaign.CalculateWeaponReward(_reward.weaponReward, (int)(progression * 10), 10)); } if (!(_reward.spellReward is null)) { Spell spell = _reward.spellReward.spell; if (spell != null && !player.spells.Exists(s => spell.name == s.name)) { reward.Add(spell); } } if (_reward.Money != 0) { reward.Add(new Coin(_reward.Money)); } if (_reward.itemReward != null) { reward.Add(_reward.itemReward.reward); } reward.AddRange(loot); //Populate reward list foreach (var item in reward) { lootList.Items.Add(item); } playerView.Activate(player, null, false); Render(); }