public async Task AddAbilityMod(string ability, int mod, string source, [Remainder] string name = null) { DnDPlayerCharacter player = await GetPlayerOrCurrent(name); if (player != null) { DnDAbilityScores abilityScore = GetAbility(ability); if ((int)abilityScore == -1) { await ReplyAsync("Invalid ability score! Valid: STR, DEX, CON, INT, WIS, CHA"); return; } DnDBasicCharacterInfo basicInfo = player.BasicInfo; basicInfo.AbilityMods.Add(new DnDAbilityModDescriptor() { SourceDescription = source, AbilityMod = new DnDAbilityModifier() { Ability = abilityScore, Modifier = mod } }); player.BasicInfo = basicInfo; await ReplyAsync("Successfully added ability modifier."); } }
public async Task DeleteAbilityMod(string ability, int num, [Remainder] string name = null) { DnDPlayerCharacter player = await GetPlayerOrCurrent(name); if (player != null) { DnDAbilityScores abilityScore = GetAbility(ability); if ((int)abilityScore == -1) { await ReplyAsync("Invalid ability score! Valid: STR, DEX, CON, INT, WIS, CHA"); return; } DnDBasicCharacterInfo basicInfo = player.BasicInfo; DnDAbilityModDescriptor match = basicInfo.AbilityMods.Where((amd) => amd.AbilityMod.Ability == abilityScore).ElementAtOrDefault(num - 1); if (match.Equals(default(DnDAbilityModDescriptor))) { await ReplyAsync("No valid modifier found. Must be a number from .listamods " + ability); return; } basicInfo.AbilityMods.Remove(match); player.BasicInfo = basicInfo; await ReplyAsync("Successfully deleted ability modifier."); } }
public int GetAbilityMod(DnDAbilityScores ability) { int totalMod = ((GetAbilityScore(ability) / 2) - 5); totalMod += AbilityMods.Where((mod) => mod.AbilityMod.Ability == ability).Sum((mod) => mod.AbilityMod.Modifier); return(totalMod); }
public int GetAbilityScore(DnDAbilityScores ability) { switch (ability) { case DnDAbilityScores.Strength: return(Strength); case DnDAbilityScores.Dexterity: return(Dexterity); case DnDAbilityScores.Constitution: return(Constitution); case DnDAbilityScores.Intelligence: return(Intelligence); case DnDAbilityScores.Wisdom: return(Wisdom); case DnDAbilityScores.Charisma: return(Charisma); } return(0); }
public async Task ListAbilityMod(string ability = null, [Remainder] string name = null) { DnDPlayerCharacter player = await GetPlayerOrCurrent(name, false); if (player != null) { EmbedBuilder builder = new EmbedBuilder(); DnDAbilityScores abilityScore = GetAbility(ability); if ((int)abilityScore == -1) { builder.WithTitle("List of all active ability modifiers"); int i = 0; DnDAbilityScores lastAbility = DnDAbilityScores.Strength; foreach (DnDAbilityModDescriptor descriptor in player.BasicInfo.AbilityMods.OrderBy((amd) => amd.AbilityMod.Ability)) { if (descriptor.AbilityMod.Ability != lastAbility) { i = 0; lastAbility = descriptor.AbilityMod.Ability; } builder.Description += lastAbility.ToString().ToUpper().Substring(0, 3) + " " + (i + 1) + ": " + descriptor.SourceDescription + " (" + descriptor.AbilityMod.Modifier.ShowSign() + ")\n"; i++; } } else { builder.WithTitle("List of active " + abilityScore.ToString().ToLowerInvariant() + " modifiers"); int i = 0; foreach (DnDAbilityModDescriptor descriptor in player.BasicInfo.AbilityMods.Where((amd) => amd.AbilityMod.Ability == abilityScore)) { builder.Description += (i + 1) + ": " + descriptor.SourceDescription + " (" + descriptor.AbilityMod.Modifier.ShowSign() + ")\n"; i++; } } if (string.IsNullOrEmpty(builder.Description)) { builder.Description = "None"; } await ReplyAsync(embed : builder.Build()); } }
private string GetAbilityText(DnDAbilityScores ability) { int mod = BasicInfo.GetAbilityMod(ability); return(BasicInfo.GetAbilityScore(ability) + " (" + mod.ShowSign() + ")"); }
private static string GetModString(DnDPlayerCharacter player, DnDAbilityScores ability) { int mod = player.BasicInfo.GetAbilityMod(ability); return((mod < 0 ? " - " : " + ") + Math.Abs(mod)); }