예제 #1
0
        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.");
            }
        }
예제 #2
0
        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);
        }
예제 #5
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() + ")");
        }
예제 #7
0
        private static string GetModString(DnDPlayerCharacter player, DnDAbilityScores ability)
        {
            int mod = player.BasicInfo.GetAbilityMod(ability);

            return((mod < 0 ? " - " : " + ") + Math.Abs(mod));
        }