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); }
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)); }
//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())); }
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"); }
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()); }
public string GetBaseAttackCalculationString() { return(CurrentClasses.Select(x => x.GetBaseAttackBonus() + "(" + x.Class.Name + ")").ToList().Aggregate((current, next) => current + " + " + next)); }
public int GetTotalLevel() { return(CurrentClasses.Sum(x => x.Level)); }