public override Task Generate() { BanType previousBan = BanType.None; if (Settings.ContainsKey(SettingID.BanType)) { previousBan = Settings[SettingID.BanType].GetValue <BanType>(); } DateTime previousBanEnd = DateTime.Now; if (Settings.ContainsKey(SettingID.BanEnd)) { previousBanEnd = Settings[SettingID.BanEnd].GetValue <DateTime>(); } UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (Settings.ContainsKey(SettingID.WheelDifficulty)) { difficulty = Settings[SettingID.WheelDifficulty].GetValue <UserSetting.WheelDifficultyPreference>(); } List <BanType> possibleBans = new List <BanType>() { BanType.NoHentai, BanType.OnlyHentai, BanType.NoRegularPorn, BanType.NoRegularPorn }; if (Settings.TryGetValue(SettingID.TrapLevel, out UserSetting sissySetting)) { if (sissySetting.GetValue <SissyLevel>() >= SissyLevel.Normal) { possibleBans.Add(BanType.OnlyTrapPorn); } } var index = Helpers.RandomGenerator.RandomInt(0, possibleBans.Count); var chosenBan = possibleBans[index]; int days = (int)difficulty + 1; var builder = new DiscordEmbedBuilder() { Title = "Ban!", Description = $"You are allowed to watch {chosenBan.ToFormattedText().ToLower()} for the next {days} days." }; if (previousBan != BanType.None && previousBanEnd > DateTime.Now) { builder.Description += $" Your previous ban of {previousBan.ToFormattedText().ToLower()} has been lifted."; } Embed = builder.Build(); return(Task.CompletedTask); }
public override Task BuildAsync() { if (!Outcome.HasFlag(UserSetting.Outcome.Denial)) { Outcome = UserSetting.Outcome.NotSet; return(Task.CompletedTask); } int minNum = 1; int maxNum = 4; UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (_settings.ContainsKey(UserSetting.SettingID.WheelDifficulty)) { difficulty = _settings.First(setting => setting.Key == UserSetting.SettingID.WheelDifficulty).Value.GetValue <UserSetting.WheelDifficultyPreference>(); } maxNum *= (int)difficulty; int rndNumber = Helpers.RandomGenerator.RandomInt(minNum, maxNum); this.DenialTime = new TimeSpan(rndNumber, 0, 0); DiscordEmbedBuilder builder = new DiscordEmbedBuilder() { Title = "No O****m for you!", Description = "Try again in a few hours :P" }; this.Embed = builder.Build(); this.Text = "No o****m for you! Try again in a few hours :P"; this.Outcome = UserSetting.Outcome.Denial; return(Task.CompletedTask); }
public override Task Generate() { UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (Settings.ContainsKey(SettingID.WheelDifficulty)) { difficulty = Settings[SettingID.WheelDifficulty].GetValue <UserSetting.WheelDifficultyPreference>(); } AnalLevel analLevel = AnalLevel.None; if (Settings.ContainsKey(SettingID.AnalLevel)) { analLevel = Settings[SettingID.AnalLevel].GetValue <AnalLevel>(); } List <WheelUserItem> toys = Items.Where(item => WheelItemExtension.GetItemCategory((WheelItemExtension.Item)item.ItemId) == WheelItemExtension.Item.Toy).ToList(); var toy = (WheelItemExtension.Item)toys[Helpers.RandomGenerator.RandomInt(0, toys.Count)].ItemId; var builder = new DiscordEmbedBuilder() { Title = "Backside fun" }; int time = (int)difficulty * (int)analLevel; time = Helpers.RandomGenerator.RandomInt(time / 3 * 2, time / 3 * 4); switch (Helpers.RandomGenerator.RandomInt(0, 3)) { case 0: string vibeText = ""; if (toy == WheelItemExtension.Item.Vibrator) { string vibeSpeed = ""; switch (analLevel) { case AnalLevel.Light: vibeSpeed = "lowest"; break; case AnalLevel.Normal: vibeSpeed = "normal"; break; case AnalLevel.Hardcore: vibeSpeed = "highest"; break; } vibeText = $"Turn it on to the {vibeSpeed} setting."; } builder.Description = $"Put your {toy.ToFormattedText()} in your Ass. {vibeText}" + Environment.NewLine + $"Leave it there for the next {time * 2} minutes."; break; case 1: builder.Description = $"Take your {toy.ToFormattedText()}, lube it up, then shove it up your butt as fast as you can. Then take it out and give it a kiss." + Environment.NewLine + $"Do this {time} times."; break; case 2: builder.Description = $"Take your {toy.ToFormattedText()}, lube it up, and smack your ass with it." + Environment.NewLine + $"Do this {time} times. No cleaning up after that."; break; } Embed = builder.Build(); return(Task.CompletedTask); }
public async Task OverviewAsync(CommandContext ctx) { using var context = new DiscordContext(); DiscordEmbedBuilder builder = new DiscordEmbedBuilder() { Title = "These are all of your settings" }; var settings = UserSetting.GetAllSettings(ctx.Message.Author.Id, context).ToDictionary(setting => (UserSetting.SettingID)setting.SettingId); var items = await WheelItemExtension.GetUserItemsAsync(ctx.Message.Author.Id, context); AnalLevel analLevel = AnalLevel.None; if (settings.ContainsKey(SettingID.AnalLevel)) { analLevel = settings[SettingID.AnalLevel].GetValue <AnalLevel>(); } UserSetting.WheelDifficultyPreference wheelDifficulty = UserSetting.WheelDifficultyPreference.Default; if (settings.ContainsKey(SettingID.WheelDifficulty)) { wheelDifficulty = settings[SettingID.WheelDifficulty].GetValue <UserSetting.WheelDifficultyPreference>(); } UserSetting.WheelTaskPreferenceSetting wheelTaskPreference = UserSetting.WheelTaskPreferenceSetting.Default; if (settings.ContainsKey(SettingID.WheelTaskPreference)) { wheelTaskPreference = settings[SettingID.WheelTaskPreference].GetValue <UserSetting.WheelTaskPreferenceSetting>(); } BondageLevel bondageLevel = BondageLevel.None; if (settings.ContainsKey(SettingID.BondageLevel)) { bondageLevel = settings[SettingID.BondageLevel].GetValue <BondageLevel>(); } CBTLevel cbtLevel = CBTLevel.None; if (settings.ContainsKey(SettingID.CBTLevel)) { cbtLevel = settings[SettingID.CBTLevel].GetValue <CBTLevel>(); } DungeonDifficulty dungeonDifficulty = DungeonDifficulty.Normal; if (settings.ContainsKey(SettingID.DungeonDifficulty)) { dungeonDifficulty = settings[SettingID.DungeonDifficulty].GetValue <DungeonDifficulty>(); } //PeeLevel peeLevel = PeeLevel.None; //if (settings.ContainsKey(SettingID.PeeLevel)) //{ // peeLevel = settings[SettingID.PeeLevel].GetValue<PeeLevel>(); //} SissyLevel sissyLevel = SissyLevel.None; if (settings.ContainsKey(SettingID.SissyLevel)) { sissyLevel = settings[SettingID.SissyLevel].GetValue <SissyLevel>(); } //DegrationLevel degrationLevel = DegrationLevel.None; //if (settings.ContainsKey(SettingID.DegrationLevel)) //{ // degrationLevel = settings[SettingID.DegrationLevel].GetValue<DegrationLevel>(); //} PublicLevel publicLevel = PublicLevel.None; if (settings.ContainsKey(SettingID.PublicLevel)) { publicLevel = settings[SettingID.PublicLevel].GetValue <PublicLevel>(); } Gender gender = Gender.None; if (settings.ContainsKey(SettingID.Gender)) { gender = settings[SettingID.Gender].GetValue <Gender>(); } foreach (SettingID possibleSetting in Enum.GetValues(typeof(SettingID))) { Enum setting = null; switch (possibleSetting) { case SettingID.AnalLevel: setting = analLevel; break; case SettingID.BanType: break; case SettingID.WheelDifficulty: setting = wheelDifficulty; break; case SettingID.WheelTaskPreference: setting = wheelTaskPreference; break; case SettingID.BondageLevel: setting = bondageLevel; break; case SettingID.Toys: break; case SettingID.CBTLevel: setting = cbtLevel; break; case SettingID.DungeonDifficulty: break; case SettingID.PeeLevel: break; case SettingID.SissyLevel: setting = sissyLevel; break; case SettingID.DegrationLevel: break; case SettingID.PublicLevel: setting = publicLevel; break; case SettingID.BanEnd: break; case SettingID.Gender: setting = gender; break; } if (setting == null) { continue; } var name = possibleSetting.ToFormattedText(); var value = $"{setting.ToFormattedText()} ({Convert.ToInt32(setting)})"; builder.AddField(name, value, true); } await ctx.RespondAsync(embed : builder.Build()); if (items.Any()) { builder = new DiscordEmbedBuilder() { Title = "Your Items" }; foreach (var item in items.OrderBy(it => it.ItemId)) { var cItem = (WheelItemExtension.Item)item.ItemId; builder.AddField(cItem.ToFormattedText(), item.ItemId.ToString()); } await ctx.RespondAsync(embed : builder.Build()); } }
public override Task BuildAsync() { if (!Outcome.HasFlag(UserSetting.Outcome.Edge)) { Outcome = UserSetting.Outcome.NotSet; return(Task.CompletedTask); } int edgeMinutes = Helpers.RandomGenerator.RandomInt(5, 31); UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (_settings.ContainsKey(UserSetting.SettingID.WheelDifficulty)) { difficulty = _settings.First(setting => setting.Key == UserSetting.SettingID.WheelDifficulty).Value.GetValue <UserSetting.WheelDifficultyPreference>(); } switch (difficulty) { case UserSetting.WheelDifficultyPreference.Baby: edgeMinutes = Convert.ToInt32((double)edgeMinutes / 2); break; case UserSetting.WheelDifficultyPreference.Easy: edgeMinutes = Convert.ToInt32((double)edgeMinutes / 1.5); break; case UserSetting.WheelDifficultyPreference.Hard: edgeMinutes = Convert.ToInt32((double)edgeMinutes * 1.5); break; case UserSetting.WheelDifficultyPreference.Masterbater: edgeMinutes = Convert.ToInt32((double)edgeMinutes * 2); break; } string flavorText = "Boring..."; if (edgeMinutes > 10) { flavorText = "Too easy..."; } else if (edgeMinutes > 15) { flavorText = "Not too bad!"; } else if (edgeMinutes > 20) { flavorText = "Kind of difficult!"; } else if (edgeMinutes > 25) { flavorText = "Ouch!"; } DiscordEmbedBuilder builder = new DiscordEmbedBuilder() { Title = flavorText, Footer = new DiscordEmbedBuilder.EmbedFooter() { Text = "And spin again afterwards. If you cum/ruin, use ``//came`` or ``//ruined``" } }; UserSetting.WheelTaskPreferenceSetting?preference = null; if (_settings.ContainsKey(UserSetting.SettingID.WheelTaskPreference)) { preference = _settings.First(setting => setting.Key == UserSetting.SettingID.WheelTaskPreference).Value.GetValue <UserSetting.WheelTaskPreferenceSetting>(); } if (Helpers.RandomGenerator.RandomInt(0, 2) == 0) { if (preference != null && preference.Value.HasFlag(UserSetting.WheelTaskPreferenceSetting.Time)) { this.Chance *= 3; } this.Text = $"{flavorText} Edge over and over (at least 30s Cooldown) for {edgeMinutes} minutes, then spin again~"; builder.Description = $"Edge over and over (at least 30s Cooldown) for {edgeMinutes} minutes"; this.WheelLockedTime = new TimeSpan(0, edgeMinutes, 0); } else { if (preference != null && preference.Value.HasFlag(UserSetting.WheelTaskPreferenceSetting.Amount)) { this.Chance *= 3; } this.Text = $"{flavorText} Edge {edgeMinutes / 2} times, with 30 seconds of Cooldown in between. Then spin again~"; builder.Description = $"Edge {edgeMinutes / 2} times, with 30 seconds of Cooldown in between."; this.WheelLockedTime = new TimeSpan(0, 0, (edgeMinutes / 2 * 28) + (edgeMinutes / 2 * 5)); } this.Embed = builder.Build(); this.Outcome = UserSetting.Outcome.Edge; return(Task.CompletedTask); }
public override Task Generate() { CBTLevel cbtLevel = CBTLevel.None; if (Settings.ContainsKey(SettingID.CBTLevel)) { cbtLevel = Settings[SettingID.CBTLevel].GetValue <CBTLevel>(); } UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (Settings.ContainsKey(SettingID.WheelDifficulty)) { difficulty = Settings[SettingID.WheelDifficulty].GetValue <UserSetting.WheelDifficultyPreference>(); } BondageLevel bondageLevel = BondageLevel.None; if (Settings.ContainsKey(SettingID.BondageLevel)) { bondageLevel = Settings[SettingID.BondageLevel].GetValue <BondageLevel>(); } List <WheelUserItem> gear = Items.Where(item => WheelItemExtension.GetItemCategory((WheelItemExtension.Item)item.ItemId) == WheelItemExtension.Item.Bondage).ToList(); const int bondageGearChance = 10; var bondageChancesSum = gear.Count * bondageGearChance; const int vanillaCbtChance = 30; var chanceSum = bondageChancesSum + vanillaCbtChance; var chanceValue = Helpers.RandomGenerator.RandomInt(0, chanceSum + 1); if (chanceValue < bondageChancesSum) { int gearIndex = -1; int cChance = 0; int i = 0; while (gearIndex == -1) { cChance += bondageGearChance; if (cChance > chanceValue) { gearIndex = i; } if (gearIndex == -1) { i++; } } var calcGear = gear[i]; Embed = GenerateBondagePunishment((WheelItemExtension.Item)calcGear.ItemId, bondageLevel, cbtLevel, difficulty); } else if (chanceValue < bondageChancesSum + vanillaCbtChance) { var vanillaChanceValue = Helpers.RandomGenerator.RandomInt(0, 4); string bodypart = vanillaChanceValue < 2 ? "dick" : "balls"; string cbtType = vanillaChanceValue % 2 == 0 ? "flick" : "slap"; int cbtAmount = GetPunishmentValue(cbtLevel, difficulty); var builder = new DiscordEmbedBuilder { Title = "Hit it! (literally)", Description = $"I want you, to {cbtType} your {bodypart} {cbtAmount} times" }; Embed = builder.Build(); WheelLockTime = TimeSpan.FromSeconds(cbtAmount); } return(Task.CompletedTask); }
private DiscordEmbed GenerateBondagePunishment(WheelItemExtension.Item gear, BondageLevel bondageLevel, CBTLevel cbtLevel, UserSetting.WheelDifficultyPreference difficulty) { var builder = new DiscordEmbedBuilder { Title = "Get your toys ready!" }; var punishValue = GetPunishmentValue(cbtLevel, difficulty) * (int)bondageLevel; WheelLockTime = TimeSpan.FromSeconds(punishValue); switch (WheelItemExtension.GetItemSubCategory(gear)) { case WheelItemExtension.Item.ChastityDevice: var chastityTime = TimeSpan.FromMinutes(punishValue); builder.Description = $"You're going into the smallest chastity device you've got for the next {TimeResolver.TimeToString(chastityTime)}. Watch some p**n and hump your pillow while doing so.."; DenialTime = chastityTime; WheelLockTime = chastityTime; break; case WheelItemExtension.Item.Rope: builder.Description = $"Tie a knot with your {gear.ToFormattedText()} and hit your balls {punishValue} times with it.."; break; case WheelItemExtension.Item.Gag: var gagTieTime = TimeSpan.FromMinutes(punishValue); builder.Description = $"Tie your {gear.ToFormattedText()} to your c**k for {TimeResolver.TimeToString(gagTieTime)}. Make the connection as short as you can.."; DenialTime = gagTieTime; WheelLockTime = gagTieTime; break; case WheelItemExtension.Item.Cuffs: builder.Description = $"Cuff your hands behind your back with your {gear.ToFormattedText()} and tie them to your c**k/balls. Then bow down {punishValue} times for me."; break; case WheelItemExtension.Item.Clamps: builder.Description = $"Take a shoe of yours and tie it to your Nipples with your {gear.ToFormattedText()}. Then jump {punishValue} times for me."; break; case WheelItemExtension.Item.String: builder.Description = $"Use your {gear.ToFormattedText()}, to tie your balls together. It should be sting a bit. Leave it for at least {punishValue} minutes like that."; break; default: builder.Description = $"You get a freebie, because I don't have any CBT options for your {gear.ToFormattedText()}. Enjoy it."; break; } return(builder.Build()); }
private static int GetPunishmentValue(CBTLevel level, UserSetting.WheelDifficultyPreference difficulty) { int third = ((int)level * (int)difficulty * 3) / 3; return(Helpers.RandomGenerator.RandomInt(third * 2, third * 4)); }
public override Task Generate() { SissyLevel sissyLevel = SissyLevel.None; if (Settings.ContainsKey(SettingID.SissyLevel)) { sissyLevel = Settings[SettingID.SissyLevel].GetValue <SissyLevel>(); } PublicLevel publicLevel = PublicLevel.None; if (Settings.ContainsKey(SettingID.PublicLevel)) { publicLevel = Settings[SettingID.PublicLevel].GetValue <PublicLevel>(); } UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (Settings.ContainsKey(SettingID.WheelDifficulty)) { difficulty = Settings[SettingID.WheelDifficulty].GetValue <UserSetting.WheelDifficultyPreference>(); } List <WheelUserItem> clothing = Items.Where(item => WheelItemExtension.GetItemCategory((WheelItemExtension.Item)item.ItemId) == WheelItemExtension.Item.Clothing).ToList(); int maxItemCount = Convert.ToInt32((float)difficulty / 2 * (float)sissyLevel); maxItemCount = maxItemCount < 1 ? 1 : maxItemCount; int itemCount = Helpers.RandomGenerator.RandomInt(1, maxItemCount); DiscordEmbedBuilder builder = new DiscordEmbedBuilder() { Title = "Hmm, i bet you'd look cute in something else...", Description = "I want you, to put some of your clothes on. In fact, you'll dress up with your " }; for (int i = itemCount; i > 0; i--) { if (clothing.Count == 0) { break; } var item = clothing[Helpers.RandomGenerator.RandomInt(0, clothing.Count)]; string postfix = ""; postfix = i switch { 2 => " and ", 1 => ". ", _ => ", ", }; builder.Description += ((WheelItemExtension.Item)item.ItemId).ToFormattedText() + postfix; clothing.Remove(item); } if (sissyLevel >= SissyLevel.Normal) { switch (publicLevel) { case PublicLevel.None: case PublicLevel.Light: builder.Description += "When you're done, leave on everything you're comfortable with for at least 2 hours."; break; case PublicLevel.Normal: builder.Description += "When you're done, leave on everything you're comfortable with for at least 4 hours."; break; case PublicLevel.Hardcore: builder.Description += "When you're done, leave on everything for at least 6 hours."; break; } } else { builder.Description += "You can take everything off when you're done with your tasks."; } Embed = builder.Build(); return(Task.CompletedTask); }
public override Task BuildAsync() { if (!Outcome.HasFlag(UserSetting.Outcome.Task)) { Outcome = UserSetting.Outcome.NotSet; return(Task.CompletedTask); } if (_settings.Any(setting => setting.Key == UserSetting.SettingID.WheelTaskPreference)) { var preference = (UserSetting.WheelTaskPreferenceSetting) int.Parse(_settings.First(setting => setting.Key == UserSetting.SettingID.WheelTaskPreference).Value.Value); if (preference.HasFlag(UserSetting.WheelTaskPreferenceSetting.Task)) { this.Chance *= 6; } } DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); int time = Helpers.RandomGenerator.RandomInt(this.minBanTime, this.maxBanTime); if (Helpers.RandomGenerator.RandomInt(0, 2) == 0) { builder.Title = "Content ban!"; builder.Description = $"You are banned from {bans[Helpers.RandomGenerator.RandomInt(0, bans.Length)]} for {time} days! If you already had the same ban, consider it reset."; builder.Footer = new DiscordEmbedBuilder.EmbedFooter() { Text = "Now reroll!" }; } else { int edgeAmount = Helpers.RandomGenerator.RandomInt(this.minEdgeAmount, this.maxEdgeAmount) * 2; UserSetting.WheelDifficultyPreference difficulty = UserSetting.WheelDifficultyPreference.Default; if (_settings.ContainsKey(UserSetting.SettingID.WheelDifficulty)) { difficulty = _settings.First(setting => setting.Key == UserSetting.SettingID.WheelDifficulty).Value.GetValue <UserSetting.WheelDifficultyPreference>(); } switch (difficulty) { case UserSetting.WheelDifficultyPreference.Baby: edgeAmount /= 4; break; case UserSetting.WheelDifficultyPreference.Easy: edgeAmount /= 2; break; case UserSetting.WheelDifficultyPreference.Hard: edgeAmount *= 2; break; case UserSetting.WheelDifficultyPreference.Masterbater: edgeAmount *= 4; break; } builder.Title = "Edging Task!"; builder.Description = $"You'll have to Edge {edgeAmount} times a Day, for {time} days! If you already had the same task, consider it reset."; builder.Footer = new DiscordEmbedBuilder.EmbedFooter() { Text = "Now reroll!" }; } this.Embed = builder.Build(); this.Outcome = UserSetting.Outcome.Task; return(Task.CompletedTask); }