Example #1
0
        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);
                }
            }
        }
Example #2
0
        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());
        }
Example #3
0
        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());
            }
        }
Example #4
0
        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);
        }