internal static async Task SkillUpgradePage(Player player, ISocketMessageChannel chan) { EmbedBuilder em = new EmbedBuilder(); em.WithTitle(player.name); em.WithFooter($"Skill Points: {player.skillPoints}{Environment.NewLine}"); em.WithDescription($"Use the reactions to select on which stat to spend your skill point." + $"{Environment.NewLine}{EUI.GetLetter(4)} {ReferenceData.EnduranceInfo()}" + $"{Environment.NewLine}{EUI.GetLetter(8)} {ReferenceData.IntelligenceInfo()}" + $"{Environment.NewLine}{EUI.GetLetter(18)} {ReferenceData.StrengthInfo()}" + $"{Environment.NewLine}{EUI.GetLetter(2)} {ReferenceData.CharismaInfo()}" + $"{Environment.NewLine}{EUI.GetLetter(3)} {ReferenceData.DexterityInfo()}" + $"{Environment.NewLine}{EUI.GetLetter(15)} {ReferenceData.PerceptionInfo()}" + ""); await player.NewUI(await chan.SendMessageAsync(embed: em.Build()), MsgType.Skills); }
internal static async Task SetSkills(Player player, IMessageChannel channel, int e, int[] rolls, bool[] rused, bool edit = false) { rolls ??= GetRolls(); if (e > 0) { SetASkill(player, e - 1, rolls, rused); } EmbedBuilder em = DUtils.BuildEmbed(player.name, "Select a number from the rolls list using reactions to set that roll as the following stat", null, player.userSettings.Color); MsgType type = MsgType.SetSkill; EmbedFieldBuilder statField = new EmbedFieldBuilder() { Name = "**Stat To Set**", IsInline = true }; if (player.stats.endurance == 0) { statField.Value = ReferenceData.EnduranceInfo(); } else if (player.stats.intelligence == 0) { statField.Value = ReferenceData.IntelligenceInfo(); } else if (player.stats.strength == 0) { statField.Value = ReferenceData.StrengthInfo(); } else if (player.stats.charisma == 0) { statField.Value = ReferenceData.CharismaInfo(); } else if (player.stats.dexterity == 0) { statField.Value = ReferenceData.DexterityInfo(); } else if (player.stats.perception == 0) { statField.Value = ReferenceData.PerceptionInfo(); } else { em.WithDescription("Please confirm your stats," + " these may not be re rolled later." + $" Click {EUI.cancel} to reassign your rolls." + $" Click {EUI.ok} to proceed with these stats."); em.AddField("Stats", "" + $"Endurance: {player.stats.endurance}{Environment.NewLine}" + $"Intelligence: {player.stats.intelligence}{Environment.NewLine}" + $"Strength: {player.stats.strength}{Environment.NewLine}" + $"Charisma: {player.stats.charisma}{Environment.NewLine}" + $"Dexterity: {player.stats.dexterity}{Environment.NewLine}" + $"Perception: {player.stats.perception}{Environment.NewLine}" ); type = MsgType.ConfirmSkills; edit = false; } if (type == MsgType.SetSkill) { string[] scEmote = { EUI.GetLetter(0), EUI.GetLetter(1), EUI.GetLetter(2), EUI.GetLetter(3), EUI.GetLetter(4), EUI.GetLetter(5) }; string rollsLeft = null; for (int r = 0; r < 6; r++) { rollsLeft += scEmote[r]; if (rused[r]) { rollsLeft += $"~~[{rolls[r]}]~~"; } else { rollsLeft += $" = [{rolls[r]}]"; } rollsLeft += Environment.NewLine; } em.AddField("**Rolls**", rollsLeft, true); em.AddField(statField); int[] stats = { player.stats.endurance, player.stats.intelligence, player.stats.strength, player.stats.charisma, player.stats.dexterity, player.stats.perception }; string[] titles = { "Endurance", "Intelligence", "Strength", "Charisma", "Dexterity", "Perception" }; string currStats = null; for (int i = 0; i < stats.Length; i++) { if (stats[i] > 0) { currStats += $" {titles[i]}: {stats[i]}"; } else if (i == 0 || stats[i - 1] > 0) { currStats += $" {titles[i]}:__"; } else { currStats += $" {titles[i]}: ??"; } currStats += Environment.NewLine; } em.AddField("**Current Stats**", currStats, true); } IUserMessage msgEdit = null; if (edit && (msgEdit = await player.ui.GetUiMessage()) != null) { await msgEdit.ModifyAsync(x => { x.Embed = em.Build(); }); await msgEdit.RemoveReactionAsync(new Emoji(EUI.GetLetter(e - 1)), Program.clientCopy.CurrentUser); player.ui.data = $"{Utils.JSON(rolls)};{Utils.JSON(rused)}"; player.SaveFileMongo(); } else { if (player.ui != null) { await player.ui.TryDeleteMessage(); } await player.NewUI($"For help on how to use interfaces, click the {EUI.help} emote", em.Build(), channel, type, $"{Utils.JSON(rolls)};{Utils.JSON(rused)}"); } }