public CBTModule(Dictionary <SettingID, UserSetting> settings, List <WheelUserItem> items) : base(settings, items) { CBTLevel cbtLevel = CBTLevel.None; if (_settings.ContainsKey(SettingID.CBTLevel)) { cbtLevel = _settings[SettingID.CBTLevel].GetValue <CBTLevel>(); } BondageLevel bondageLevel = BondageLevel.None; if (_settings.ContainsKey(SettingID.BondageLevel)) { bondageLevel = _settings[SettingID.BondageLevel].GetValue <BondageLevel>(); } if (cbtLevel == CBTLevel.None || bondageLevel == BondageLevel.None) { Chance = 0; if (!_settings.ContainsKey(SettingID.CBTLevel)) { ((List <UserSettingExtension.SettingID>)RequiredSettings).Add(UserSettingExtension.SettingID.CBTLevel); } if (!_settings.ContainsKey(SettingID.BondageLevel)) { ((List <UserSettingExtension.SettingID>)RequiredSettings).Add(UserSettingExtension.SettingID.BondageLevel); } } }
private DiscordEmbed GenerateBondagePunishment(WheelItemExtension.Item gear, BondageLevel bondageLevel, CBTLevel cbtLevel, WheelExtension.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()); }
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 Generate() { CBTLevel cbtLevel = CBTLevel.None; if (_settings.ContainsKey(SettingID.CBTLevel)) { cbtLevel = _settings[SettingID.CBTLevel].GetValue <CBTLevel>(); } WheelExtension.WheelDifficultyPreference difficulty = WheelExtension.WheelDifficultyPreference.Default; if (_settings.ContainsKey(SettingID.WheelDifficulty)) { difficulty = _settings[SettingID.WheelDifficulty].GetValue <WheelExtension.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); }