Пример #1
0
        private int GetPearlIncome(CityBuilding flowController, Laboratory laboratory)
        {
            var pearlIncomeBase = flowController.NumberOfBuildings * flowController.Building.PopulationBonus * TAX_PER_CITIZEN;
            //adding innovation bonus
            var pearlBonusPercentage = _laboratoryService.GetInnovationBonusPercentage(laboratory, InnovationTypes.Alchemy);

            var pearlIncome = (int)(pearlIncomeBase * (1f + (pearlBonusPercentage / 100f)));

            return(pearlIncome);
        }
Пример #2
0
        public async Task <float> GetSumAttackStrength(Squad squad)
        {
            int attackLevel      = FightLevelByXP(squad.Army.AttackXP);
            var sumNumberOfUnits = squad.SquadUnits.Sum(su => su.NumberOfUnits);
            var sumAttackBase    = squad.SquadUnits
                                   .Where(su => su.Unit.AttackStrength > 0)
                                   .Sum(su => su.NumberOfUnits * (su.Unit.AttackStrength + attackLevel));

            //generate moral randomly
            Random random = new Random();
            var    moral  = random.Next(2) > 0 ? true : false;
            // ADDING ATTACK BONUSES
            float attackBonusPercentage = 0;
            // Player ID
            var playerId = squad.Army.PlayerId;

            //moral Bonus
            if (moral)
            {
                attackBonusPercentage += 5;
            }
            else
            {
                attackBonusPercentage -= 5;
            }
            // Sonar gun
            attackBonusPercentage += await _laboratoryService.GetInnovationBonusPercentage(playerId, InnovationTypes.SonarGun);

            // Underwater Martial Arts
            attackBonusPercentage += await _laboratoryService.GetInnovationBonusPercentage(playerId, InnovationTypes.UnderwaterMartialArts);

            // Adding bonuses
            var attackBonus = await _incidentService.GetSoldierSatisfactionBonus(playerId) * sumNumberOfUnits;

            var sumAttackStrength = (sumAttackBase + attackBonus) * (1f + attackBonusPercentage / 100f);

            return(sumAttackStrength);
        }