public async Task CreaturePost([Remainder] string CreatureCommand = "") { CreatureEnvironment environment = StarforgedUtilites.GetAnyEnvironment(CreatureCommand); if (environment == CreatureEnvironment.None) { EmbedBuilder builder = new EmbedBuilder() .WithTitle(CreatureResources.CreatureHelper) .WithDescription(CreatureResources.PickCreatureEnvironmentMessage); var msg = await ReplyAsync(embed : builder.Build()); _ = Task.Run(async() => { await msg.AddReactionAsync(oneEmoji); await msg.AddReactionAsync(twoEmoji); await msg.AddReactionAsync(threeEmoji); await msg.AddReactionAsync(fourEmoji); await msg.AddReactionAsync(fiveEmoji); await msg.AddReactionAsync(randomEmoji); }).ConfigureAwait(false); return; } var creature = Creature.GenerateCreature(Services, Context.Channel.Id, environment); var message = await ReplyAsync("", false, creature.GetEmbedBuilder().Build()); await message.AddReactionAsync(revealAspectEmoji); }
private async Task CreatureReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var CreatureHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(CreatureResources.CreatureHelper) ?? false); if (CreatureHelperEmbed != null) { CreatureEnvironment environment = StarforgedUtilites.CreatureEnvironmentFromEmote(reaction.Emote.Name); if (reaction.Emote.IsSameAs(randomEmoji)) { string lookupValue = Services.GetRequiredService <OracleService>().RandomRow("Creature Environment").Description; environment = StarforgedUtilites.GetAnyEnvironment(lookupValue); } if (environment == CreatureEnvironment.None) { return; } var newCreature = Creature.GenerateNewCreature(Services, channel.Id, environment); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newCreature.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await Task.Run(async() => { if (message.Reactions.Count > 0) { await Task.Delay(1500); //wait just in case we are still adding more reactions. Impatient users deserve to wait!!! await message.RemoveAllReactionsAsync(); } await message.AddReactionAsync(revealAspectEmoji).ConfigureAwait(false); }).ConfigureAwait(false); return; } var creatureEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(CreatureResources.CreatureTitle) ?? false); if (creatureEmbed == null) { return; } var creature = Creature.FromEmbed(creatureEmbed, Services, channel.Id); if (reaction.Emote.IsSameAs(revealAspectEmoji)) { creature.AddRandomAspect(); } await message.ModifyAsync(msg => msg.Embed = creature.GetEmbedBuilder().Build()).ConfigureAwait(false); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); return; }
public async Task PlanetPost([Remainder] string PlanetCommand = "") { SpaceRegion spaceRegion = StarforgedUtilites.GetAnySpaceRegion(PlanetCommand); string PlanetName = PlanetCommand.Replace(spaceRegion.ToString(), "", StringComparison.OrdinalIgnoreCase).Trim(); if (PlanetName == string.Empty) { PlanetName = $"P-{DateTime.Now.Ticks.ToString().Substring(7)}"; } if (spaceRegion == SpaceRegion.None) { var palceHolderEmbed = new EmbedBuilder() .WithTitle("__Planet Helper__") .WithDescription(PlanetName) .WithFields(new EmbedFieldBuilder() .WithName("Options:") .WithValue($"{oneEmoji}: Terminus\n{twoEmoji}: Outlands\n{threeEmoji}: Expanse") ); var msg = await ReplyAsync(embed : palceHolderEmbed.Build()); await msg.AddReactionAsync(new Emoji(oneEmoji)); await msg.AddReactionAsync(new Emoji(twoEmoji)); await msg.AddReactionAsync(new Emoji(threeEmoji)); return; } await MakePlanetPost(spaceRegion, PlanetName); }
public async Task SettlementPost([Remainder] string SettlementCommand = "") { var region = StarforgedUtilites.GetAnySpaceRegion(SettlementCommand); if (region == SpaceRegion.None) { EmbedBuilder builder = new EmbedBuilder() .WithTitle(SettlementResources.SettlementHelper) .WithDescription(SettlementResources.PickSpaceRegionMessage); if (SettlementCommand.Length > 0) { builder.WithFields(new EmbedFieldBuilder().WithName(SettlementResources.SettlementName).WithValue(SettlementCommand)); } var msg = await ReplyAsync(embed : builder.Build()); await msg.AddReactionAsync(oneEmoji); await msg.AddReactionAsync(twoEmoji); await msg.AddReactionAsync(threeEmoji); return; } string SettlementName = SettlementCommand.Replace(region.ToString(), "").Trim(); var settlement = Settlement.GenerateSettlement(Services, region, SettlementName); //embedBuilder.ThumbnailUrl = planet.Thumbnail; //TODO (maybe location hex?) var message = await ReplyAsync("", false, settlement.GetEmbedBuilder().Build()); await message.AddReactionAsync(projectEmoji); }
public Settlement FromEmbed(IEmbed embed) { if (!embed.Description.Contains(SettlementResources.Settlement)) { throw new ArgumentException(SettlementResources.SettlementNotFoundError); } this.Authority = embed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.Authority).Value; this.FirstLooks = embed.Fields.Where(fld => fld.Name == SettlementResources.FirstLook)?.Select(item => item.Value).ToList() ?? new List <string>(); this.FirstLooksToReveal = FirstLooks.Count(); this.InitialContactRevealed = embed.Fields.Any(fld => fld.Name == SettlementResources.InitialContact); if (InitialContactRevealed) { this.InitialContact = embed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.InitialContact).Value; } this.Location = embed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.Location).Value; this.Name = embed.Title.Replace("__", ""); this.Population = embed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.Population).Value; this.Projects = embed.Fields.Where(fld => fld.Name == SettlementResources.SettlementProjects)?.Select(item => item.Value).ToList() ?? new List <string>(); this.ProjectsRevealed = embed.Fields.Count(fld => fld.Name.Contains(SettlementResources.SettlementProjects)); this.Region = StarforgedUtilites.GetAnySpaceRegion(embed.Description); this.SettlementTroubleRevealed = embed.Fields.Any(fld => fld.Name == SettlementResources.SettlementTrouble); if (SettlementTroubleRevealed) { this.SettlementTrouble = embed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.SettlementTrouble).Value; } this.IconUrl = embed.Thumbnail?.Url; return(this); }
public Starship FromEmbed(IEmbed embed) { string Name = embed.Title.Replace("__", ""); SpaceRegion region = StarforgedUtilites.GetAnySpaceRegion(embed.Description); this.FirstLooksToReveal = embed.Fields.Count(fld => fld.Name == StarShipResources.FirstLook); this.FirstLooks = embed.Fields.Where(fld => fld.Name == StarShipResources.FirstLook)?.Select(item => item.Value).ToList() ?? new List <string>(); this.Fleet = embed.Fields.FirstOrDefault(fld => fld.Name == StarShipResources.Fleet).Value; this.InitialContact = embed.Fields.FirstOrDefault(fld => fld.Name == StarShipResources.InitialContact).Value; this.MissionRevealed = embed.Fields.Any(fld => fld.Name == StarShipResources.StarshipMission); if (this.MissionRevealed) { this.Mission = embed.Fields.FirstOrDefault(fld => fld.Name == StarShipResources.StarshipMission).Value; } this.Name = embed.Title.Replace("__", string.Empty); this.ShipType = embed.Fields.FirstOrDefault(fld => fld.Name == StarShipResources.StarshipType).Value; this.SpaceRegion = StarforgedUtilites.GetAnySpaceRegion(embed.Description); bool hasTypicalRole = embed.Fields.Any(fld => fld.Name == StarShipResources.TypicalRole); this.TypicalRole = (hasTypicalRole) ? embed.Fields.FirstOrDefault(fld => fld.Name == StarShipResources.TypicalRole).Value : string.Empty; this.IconUrl = embed.Thumbnail?.Url; return(this); }
private async Task SettlementReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var settlementHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(SettlementResources.SettlementHelper) ?? false); if (settlementHelperEmbed != null) { var region = StarforgedUtilites.SpaceRegionFromEmote(reaction.Emote.Name); if (region == SpaceRegion.None) { return; } string command = settlementHelperEmbed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.SettlementName).Value ?? string.Empty; string location = ExtractAnySettlementLocation(ref command); var newSettlement = Settlement.GenerateSettlement(Services, region, channel.Id, command, location); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newSettlement.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await Task.Run(async() => { await message.AddReactionAsync(projectEmoji); await message.AddReactionAsync(contactEmoji); await message.AddReactionAsync(troubleEmoji); }).ConfigureAwait(false); return; } }
public async Task StarShipPost([Remainder] string StarShipCommand = "") { var region = StarforgedUtilites.GetAnySpaceRegion(StarShipCommand); if (region == SpaceRegion.None) { EmbedBuilder builder = new EmbedBuilder() .WithTitle(StarShipResources.StarshipHelperTitle) .WithDescription(StarShipResources.PickSpaceRegionMessage); if (StarShipCommand.Length > 0) { builder.WithFields(new EmbedFieldBuilder().WithName(StarShipResources.StarshipName).WithValue(StarShipCommand)); } var msg = await ReplyAsync(embed : builder.Build()); await msg.AddReactionAsync(oneEmoji); await msg.AddReactionAsync(twoEmoji); await msg.AddReactionAsync(threeEmoji); return; } string ShipName = Regex.Replace(StarShipCommand, region.ToString(), "", RegexOptions.IgnoreCase).Trim(); var ship = Starship.GenerateShip(Services, region, ShipName); var message = await ReplyAsync("", false, ship.GetEmbedBuilder().Build()); await message.AddReactionAsync(missionEmoji); }
public static Starship FromEmbed(ServiceProvider services, IEmbed embed) { string Name = embed.Title.Replace("__", ""); SpaceRegion region = StarforgedUtilites.GetAnySpaceRegion(embed.Description); var ship = GenerateShip(services, region, Name); ship.MissionRevealed = embed.Fields.Any(fld => fld.Name.Equals(StarShipResources.StarshipMission)); return(ship); }
private async Task CreatureReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var CreatureHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(CreatureResources.CreatureHelper) ?? false); if (CreatureHelperEmbed != null) { CreatureEnvironment environment = StarforgedUtilites.CreatureEnvironmentFromEmote(reaction.Emote.Name); if (reaction.Emote.Name == randomEmoji.Name) { string lookupValue = Services.GetRequiredService <OracleService>().RandomRow("Creature Environment").Description; environment = StarforgedUtilites.GetAnyEnvironment(lookupValue); } if (environment == CreatureEnvironment.None) { return; } var newCreature = Creature.GenerateCreature(Services, channel.Id, environment); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newCreature.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await message.AddReactionAsync(revealAspectEmoji).ConfigureAwait(false); return; } var creatureEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(CreatureResources.CreatureTitle) ?? false); if (creatureEmbed == null) { return; } var creature = Creature.FromEmbed(creatureEmbed, Services, channel.Id); if (reaction.Emote.Name == revealAspectEmoji.Name) { creature.RevealedAspectsToShow++; } await message.ModifyAsync(msg => msg.Embed = creature.GetEmbedBuilder().Build()).ConfigureAwait(false); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); return; }
public static Creature FromEmbed(IEmbed embed, IServiceProvider serviceProvider, ulong ChannelId) { var creature = new Creature(serviceProvider, ChannelId); creature.Environment = StarforgedUtilites.GetAnyEnvironment(embed.Fields.FirstOrDefault(fld => fld.Name == CreatureResources.Environment).Value); creature.Scale = embed.Fields.FirstOrDefault(fld => fld.Name == CreatureResources.Scale).Value; creature.BasicForm = embed.Fields.FirstOrDefault(fld => fld.Name == CreatureResources.BasicForm).Value; creature.FirstLook = embed.Fields.Where(fld => fld.Name == CreatureResources.FirstLook).Select(fld => fld.Value).ToList(); creature.EncounteredBehavior = embed.Fields.FirstOrDefault(fld => fld.Name == CreatureResources.EncounteredBehavior).Value; creature.RevealedAspectsList = embed.Fields.Where(fld => fld.Name == CreatureResources.RevealedAspect).Select(fld => fld.Value).ToList(); creature.IconUrl = embed.Thumbnail?.Url; return(creature); }
private async Task ShipReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var starshipHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(StarShipResources.StarshipHelperTitle) ?? false); if (starshipHelperEmbed != null) { var region = StarforgedUtilites.SpaceRegionFromEmote(reaction.Emote.Name); if (region == SpaceRegion.None) { return; } string name = starshipHelperEmbed.Fields.FirstOrDefault(fld => fld.Name == StarShipResources.StarshipName).Value ?? string.Empty; Starship newShip = Starship.GenerateShip(Services, region, name); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newShip.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await message.AddReactionAsync(missionEmoji).ConfigureAwait(false); return; } var shipEmbed = message.Embeds.FirstOrDefault(embed => embed?.Description?.Contains(StarShipResources.Starship, StringComparison.OrdinalIgnoreCase) ?? false); if (shipEmbed == null) { return; } Starship ship = Starship.FromEmbed(Services, shipEmbed); if (reaction.Emote.Name == missionEmoji.Name) { ship.MissionRevealed = true; await message.RemoveReactionAsync(reaction.Emote, message.Author).ConfigureAwait(false); } await message.ModifyAsync(msg => msg.Embed = ship.GetEmbedBuilder().Build()).ConfigureAwait(false); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); return; }
public Settlement FromEmbed(IEmbed embed) { if (!embed.Description.Contains(SettlementResources.Settlement)) { throw new ArgumentException(SettlementResources.SettlementNotFoundError); } SpaceRegion region = StarforgedUtilites.GetAnySpaceRegion(embed.Description); var settlement = GenerateSettlement(Services, region, embed.Title.Replace("__", "")); settlement.FirstLooksToReveal = embed.Fields.Count(fld => fld.Name.Contains(SettlementResources.FirstLook)); settlement.ProjectsRevealed = embed.Fields.Count(fld => fld.Name.Contains(SettlementResources.SettlementProjects)); return(settlement); }
private async Task SettlementReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var settlementHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(SettlementResources.SettlementHelper) ?? false); if (settlementHelperEmbed != null) { var region = StarforgedUtilites.SpaceRegionFromEmote(reaction.Emote.Name); if (region == SpaceRegion.None) { return; } string name = settlementHelperEmbed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.SettlementName).Value ?? string.Empty; var newSettlement = Settlement.GenerateSettlement(Services, region, name); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newSettlement.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await message.AddReactionAsync(projectEmoji).ConfigureAwait(false); return; } var settlmentEmbed = message.Embeds.FirstOrDefault(embed => embed?.Description?.Contains(SettlementResources.Settlement) ?? false); if (settlmentEmbed == null) { return; } var settlement = new Settlement(Services).FromEmbed(settlmentEmbed); if (reaction.Emote.Name == projectEmoji.Name) { settlement.ProjectsRevealed++; } await message.ModifyAsync(msg => msg.Embed = settlement.GetEmbedBuilder().Build()).ConfigureAwait(false); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); return; }
public async Task SettlementPost([Remainder] string SettlementCommand = "") { var region = StarforgedUtilites.GetAnySpaceRegion(SettlementCommand); if (region == SpaceRegion.None) { EmbedBuilder builder = new EmbedBuilder() .WithTitle(SettlementResources.SettlementHelper) .WithDescription(SettlementResources.PickSpaceRegionMessage); if (SettlementCommand.Length > 0) { builder.WithFields(new EmbedFieldBuilder().WithName(SettlementResources.SettlementName).WithValue(SettlementCommand)); } var msg = await ReplyAsync(embed : builder.Build()); await msg.AddReactionAsync(GenericReactions.oneEmoji); await msg.AddReactionAsync(GenericReactions.twoEmoji); await msg.AddReactionAsync(GenericReactions.threeEmoji); return; } string SettlementLocation = ExtractAnySettlementLocation(ref SettlementCommand); string SettlementName = SettlementCommand.Replace(region.ToString(), "", StringComparison.OrdinalIgnoreCase).Trim(); var settlement = Settlement.GenerateSettlement(Services, region, Context.Channel.Id, SettlementName, SettlementLocation); //embedBuilder.ThumbnailUrl = planet.Thumbnail; //TODO (maybe location hex?) var message = await ReplyAsync("", false, settlement.GetEmbedBuilder().Build()); await Task.Run(async() => { await message.AddReactionAsync(projectEmoji); await message.AddReactionAsync(contactEmoji); await message.AddReactionAsync(troubleEmoji); }).ConfigureAwait(false); }