Exemple #1
0
        public List <int> GetBaseAttack()
        {
            var totalBab = CurrentClasses.Sum(x => x.GetBaseAttackBonus());
            var attacks  = new List <int>();

            for (var i = totalBab; i > 0; i -= 5)
            {
                attacks.Add(i);
            }
            if (_bonusDto != null && attacks.Any())
            {
                foreach (var bonusRef in _bonusDto.Bonuses)
                {
                    if (bonusRef.Bonues != null &&
                        bonusRef.Bonues.Type == BonusType.ExtraAttackAtFullBab)
                    {
                        if (!bonusRef.IsActive(_bonusDto))
                        {
                            continue;
                        }
                        var amount = 0;
                        if (bonusRef.Bonues != null && bonusRef.Bonues.BonusValue != null && bonusRef.Bonues.BonusValue.FixedValue.HasValue)
                        {
                            amount = bonusRef.Bonues.BonusValue.FixedValue.Value;
                        }
                        for (int i = 0; i < amount; i++)
                        {
                            attacks.Insert(0, attacks[0]);
                        }
                    }
                }
            }
            return(attacks);
        }
Exemple #2
0
        public int GetNumberOfSpellSlotsForClass(int spellLevel, Guid classId)
        {
            var casterLevel = GetCasterLevelForClass(classId);
            var classBase   = CurrentClasses.First(x => x.Class.ID == classId);

            return(classBase.Class.SpellPrDayDictonary[casterLevel][spellLevel] + GetBonusSpellsPrLevel(spellLevel, classBase.Class.AbilityUsedForCasting));
        }
Exemple #3
0
        //public int? GetBaseAttackForAttack(int getAttacksTaken)
        //{
        //    var baseAttack = GetBaseAttack();
        //    var babForAttack = baseAttack.ElementAtOrDefault(getAttacksTaken);
        //    var babBonusesList = Tools.GetBonusesApplyingTo(Configuration.BabId, BonusApplyToType.BaseAttack, _bonusDto.Bonuses);
        //    var babBonus = babBonusesList.MaxBonuesSum(_bonusDto);

        //    return babForAttack - babBonus;
        //}

        #region Description
        public string GetClassesAndLevelString()
        {
            if (CurrentClasses == null || CurrentClasses.Count == 0)
            {
                return("");
            }

            return(string.Join(" ,", CurrentClasses.Select(x => x.Class.Name + "/" + x.Level).ToArray()));
        }
Exemple #4
0
        private async void GetCurrentWeather(Geoposition position)
        {
            CurrentRootObject currentWeather = await CurrentClasses.GetWeather(position.Coordinate.Latitude, position.Coordinate.Longitude);

            string icon = string.Format("ms-appx:///Icon/{0}.png", currentWeather.weather[0].icon);

            iWeatherImage.Source = new BitmapImage(new Uri(icon, UriKind.Absolute));
            tbTemp.Text          = ((int)currentWeather.main.temp).ToString() + "°";
            tbLocation.Text      = currentWeather.name;
            tbDescription.Text   = currentWeather.weather[0].description;
            tbTime.Text          = DateTime.Now.ToString("h:mm tt");
        }
Exemple #5
0
        public List <CalculatedSkill> GetSkills()
        {
            var calcedSkills = new List <CalculatedSkill>();

            var shieldPenelty = GetShieldPenelty(_bonusDto);

            foreach (var currentSkills in SkillRanks)
            {
                var skillAbi = _bonusDto.Abilities.First(y => y.Ability.ID == currentSkills.Skill.SkillModifier.ID).Ability;
                var result   = new CalculatedSkill
                {
                    Ability = skillAbi.Name,
                    //AbilityBonues =
                    //    _bonusDto.Abilities.First(y => y.Ability.ID == currentSkills.Skill.SkillModifier.ID)
                    //        .GetCurrentModifier(_bonusDto),
                    SkillRanks   = currentSkills.Ranks,
                    IsClassSkill = CurrentClasses.Any(y => y.Class.ClassSkills.Any(z => z.ID == currentSkills.Skill.ID)),
                    Name         = currentSkills.Skill.Name,
                    UseUntrained = currentSkills.Skill.UseUntrained,
                };
                var skillBonuses = _bonusDto.Bonuses.Where(y => y.ShouldApplyTo(currentSkills, typeof(SkillRank)) && y.ShouldApplyToSubType(skillAbi.ID));

                result.Ranks = new CalculatedString();
                var abiScore = _bonusDto.Abilities.First(y => y.Ability.ID == currentSkills.Skill.SkillModifier.ID);
                result.Ranks.AddIfNotZero(abiScore.Ability.Name, null, abiScore.GetCurrentModifier(_bonusDto));
                result.Ranks.AddIfNotZero("Ranks", null, currentSkills.Ranks);
                result.Ranks.AddPartsByRef(skillBonuses.ToList(), _bonusDto);


                if (currentSkills.Skill.SynergiApplyTo != null && currentSkills.Skill.SynergiApplyTo.Count != 0)
                {
                    foreach (var skillSynergi in currentSkills.Skill.SynergiApplyTo)
                    {
                        var skillRanksForSynergi = SkillRanks.FirstOrDefault(x => x.Skill.ID == skillSynergi.SynergiFrom.ID);
                        if (skillRanksForSynergi != null && skillRanksForSynergi.Ranks >= 5)
                        {
                            result.Ranks.AddIfNotZero(string.Format("Synergi ({0})", skillRanksForSynergi.Skill.Name), skillSynergi.Condition, 2);
                        }
                    }
                }

                if (currentSkills.Skill.ArmorCheckPeneltyApply)
                {
                    foreach (var equippedItem in _bonusDto.EquippedItems)
                    {
                        var localcalcstr      = equippedItem.GetArmorCheckPenelty(_bonusDto);
                        var totalCheckPenelty = Math.Min(localcalcstr.GetValueAsInt(), 0);
                        if (currentSkills.Skill.ArmorCheckPeneltyApplyDouble)
                        {
                            totalCheckPenelty = totalCheckPenelty * 2;
                        }
                        result.Ranks.AddIfNotZero(string.Format("Armor check penelty({0})", equippedItem.Item.Name), null, totalCheckPenelty);
                    }
                }

                if (currentSkills.Skill.RequiresMovement)
                {
                    result.Ranks.AddIfNotZero("Shield proficiency penelty", null, shieldPenelty);
                }

                calcedSkills.Add(result);
            }

            return(calcedSkills.Where(x => x.SkillRanks > 0 || x.UseUntrained).ToList());
        }
Exemple #6
0
 public string GetBaseAttackCalculationString()
 {
     return(CurrentClasses.Select(x => x.GetBaseAttackBonus() + "(" + x.Class.Name + ")").ToList().Aggregate((current, next) => current + " + " + next));
 }
Exemple #7
0
 public int GetTotalLevel()
 {
     return(CurrentClasses.Sum(x => x.Level));
 }