Exemple #1
0
        public void PerkUpgrateRarity(int unitId, int perkId)
        {
            var(data, unit) = _units.GetUnit(unitId);
            var perk = _units.Static.Perks[perkId];

            if (!data.PerkStars.ContainsKey(perkId))
            {
                throw new Exception($"Perk missing. Unit id = {unitId} perk id =  {perkId}");
            }
            var rarity = perk.Rarities.Values.FirstOrDefault(x => x.Stars == data.PerkStars[perkId]);

            foreach (var price in rarity.Prices?.Values ?? new IPrice[0])
            {
                _scorers.Spend(price, _formuls);
            }
            data.PerkStars[perkId]++;
            LogicLog.UpgradePerkLevel(unitId, perkId, data.PerkStars[perkId]);
            _impact.ExecuteContextImpact(unit.ImpactUpdrade, unitId);
        }