Example #1
0
        private string GetNextStep(DommePersonality domme, string input)
        {
            var subString = input;

            while (subString.Contains(Keyword.CheckFlag))
            {
                var checkFlag = _lineService.GetParenData(input, Keyword.CheckFlag)
                                .OnSuccess(pd =>
                {
                    foreach (var flag in pd)
                    {
                        if (_flagAccessor.IsSet(domme, flag))
                        {
                            return(Result.Ok(flag));
                        }
                    }
                    return(Result.Fail <string>("Not Found"));
                });
                if (checkFlag.IsSuccess)
                {
                    return("(" + checkFlag.Value + ")");
                }
                subString = input.Substring(input.IndexOf(Keyword.CheckFlag) + Keyword.CheckFlag.Length);
            }

            return(string.Empty);
        }
Example #2
0
        public string GetNextStep(DommePersonality domme, string input)
        {
            var subString = input;

            while (subString.Contains(Keyword.CheckFlag))
            {
                var checkFlag = _lineService.GetParenData(input, Keyword.CheckFlag)
                                .OnSuccess(pd =>
                {
                    var isSet = _flagAccessor.IsSet(domme, pd[0]);
                    if (isSet)
                    {
                        return(Result.Ok((pd.Count == 1) ? pd[0] : pd[1]));
                    }
                    return(Result.Fail <string>("Not Found"));
                });
                if (checkFlag.IsSuccess)
                {
                    return("(" + checkFlag.Value + ")");
                }
                subString = input.Substring(input.IndexOf(Keyword.CheckFlag) + Keyword.CheckFlag.Length);
            }

            return(string.Empty);
        }
Example #3
0
        public Result <List <ScriptMetaData> > GetAvailableScripts(DommePersonality domme, SubPersonality submissive, string type, SessionPhase sessionPhase)
        {
            var scripts = GetAllScripts(domme.PersonalityName)
                          .OnSuccess(smds => smds.Where(smd => smd.SessionPhase == sessionPhase &&
                                                        smd.IsChastity == submissive.InChastity &&
                                                        smd.IsRestricted == submissive.IsOrgasmRestricted &&
                                                        smd.IsEdge == submissive.IsEdging
                                                        ).ToList());

            return(scripts);
        }
Example #4
0
        /// <summary>
        /// Fire DommeSaid event, but *only* if message is not empty.
        /// The Domme only speaks when she has something to say.
        /// </summary>
        /// <param name="domme"></param>
        /// <param name="message"></param>
        private void OnDommeSaid(DommePersonality domme, string message)
        {
            if (string.IsNullOrWhiteSpace(message))
            {
                return;
            }

            DommeSaid?.Invoke(this, new SendMessageEventArgs()
            {
                ChatMessage = new ChatMessage()
                {
                    Message = message,
                    Sender  = domme.Name,
                }
            });
        }
Example #5
0
        public Result <List <string> > GetVitalSubResponses(DommePersonality domme, bool didVitalSubFail)
        {
            var vitalList     = new List <string>();
            var vitalSubState = didVitalSubFail ? "Punishments" : "Rewards";

            var rewardsFolder = _pathsAccessor.GetVitalSubDir(domme.PersonalityName) + vitalSubState;

            foreach (var foundFile in Directory.GetFiles(rewardsFolder, "*.txt"))
            {
                vitalList.Add(foundFile);
            }
            if (vitalList.Any())
            {
                return(Result.Ok(vitalList));
            }
            return(Result.Fail <List <string> >("No " + vitalSubState + " were found! Please make sure you have files in the VitaSub directory for " + domme.PersonalityName + "!"));
        }
Example #6
0
        public Result <string> GetAnswerResponse(DommePersonality domme, string answerString, List <string> scriptSection)
        {
            foreach (var currentLine in scriptSection)
            {
                var shouldLookForYes = currentLine.ToUpper().Contains("[YES]");
                var shouldLookForNo  = currentLine.ToUpper().Contains("[NO]");

                var responses   = GetParenData(currentLine, "[").GetResultOrDefault(new List <string>());
                var chatMessage = currentLine.Trim();
                if (chatMessage.Contains("]"))
                {
                    chatMessage = currentLine.Substring(currentLine.IndexOf("]") + 1).Trim();
                }

                for (var i = 0; i < responses.Count; i++)
                {
                    if (answerString.ToUpper().ToString().Contains(responses[i].ToUpper().ToString()))
                    {
                        if (shouldLookForYes || shouldLookForNo)
                        {
                            if (domme.RequiresHonorific)
                            {
                                if (!_stringService.WordExists(answerString.ToUpper(), domme.Honorific.ToUpper()))
                                {
                                    return(Result.Ok(_stringService.Capitalize(responses[i] + " what?")));
                                }

                                if (domme.RequiresHonorificCapitalized && !_stringService.WordExists(answerString, _stringService.Capitalize(domme.Honorific.ToLower())))
                                {
                                    return(Result.Ok("#CapitalizeHonorific"));
                                }
                            }
                        }

                        return(Result.Ok(chatMessage));
                    }
                }
            }

            return(Result.Fail <string>("No response found"));
        }
Example #7
0
        public Result <Script> SubmitData(DommePersonality domme)
        {
            var healthGoals      = _settingsAccessor.GetSettings().Sub.HealthGoals;
            var didMissExercises = GetAssignedExercises().Any(ae => !ae.IsComplete);
            var didOverEat       = (healthGoals.CaloriesGoal - healthGoals.CaloriesConsumed) < 0;
            var didSubFail       = didMissExercises || didOverEat;

            return(GetVitalSubResponses(domme, didSubFail)
                   .OnSuccess(sl => sl[_randomNumberService.Roll(0, sl.Count())])
                   .OnSuccess(scr => new ScriptMetaData()
            {
                Info = "VitalSub Submit Response",
                IsBeg = false,
                IsChastity = false,
                IsEdge = false,
                IsEnabled = true,
                IsRestricted = false,
                Key = scr,
                Name = "VitalSub Submit Response",
                SessionPhase = SessionPhase.End,
            })
                   .OnSuccess(smd => _scriptAccessor.GetScript(smd)));
        }
Example #8
0
 public void SetFlag(DommePersonality domme, string flagName, bool isTemp)
 {
     throw new NotImplementedException();
 }
Example #9
0
 public bool IsSet(DommePersonality domme, string flagName)
 {
     throw new NotImplementedException();
 }
Example #10
0
 public void DeleteFlag(DommePersonality domme, string flagName)
 {
     throw new NotImplementedException();
 }
Example #11
0
        public bool ShouldKeepLine(string inputString, DommePersonality domme)
        {
            var lineService = new LineService();

            if (inputString.Contains(Keyword.AllowsOrgasm) &&
                !lineService.GetParenData(inputString, Keyword.AllowsOrgasm).GetResultOrDefault(new List <string>()).Contains(domme.AllowsOrgasms.ToString()))
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@alwaysallowsorgasm") && domme.AllowsOrgasms != AllowsOrgasms.Always)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@oftenallowsorgasm") && domme.AllowsOrgasms != AllowsOrgasms.Often)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@sometimesallowsorgasm") && domme.AllowsOrgasms != AllowsOrgasms.Sometimes)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@rarelyallowsorgasm") && domme.AllowsOrgasms != AllowsOrgasms.Rarely)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@neverallowsorgasm") && domme.AllowsOrgasms != AllowsOrgasms.Never)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@notalwaysallowsorgasm") && domme.AllowsOrgasms == AllowsOrgasms.Always)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@notneverallowsorgasm") && domme.AllowsOrgasms == AllowsOrgasms.Never)
            {
                return(false);
            }


            if (inputString.Contains(Keyword.RuinsOrgasm) &&
                !lineService.GetParenData(inputString, Keyword.RuinsOrgasm).GetResultOrDefault(new List <string>()).Contains(domme.RuinsOrgasms.ToString()))
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@alwaysruinsorgasm") && domme.RuinsOrgasms != RuinsOrgasms.Always)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@oftenruinsorgasm") && domme.RuinsOrgasms != RuinsOrgasms.Often)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@sometimesruinsorgasm") && domme.RuinsOrgasms != RuinsOrgasms.Sometimes)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@rarelyruinsorgasm") && domme.RuinsOrgasms != RuinsOrgasms.Rarely)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@neverruinsorgasm") && domme.RuinsOrgasms != RuinsOrgasms.Never)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@notalwaysruinsorgasm") && domme.RuinsOrgasms == RuinsOrgasms.Always)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@notneverruinsorgasm") && domme.RuinsOrgasms == RuinsOrgasms.Never)
            {
                return(false);
            }


            // Filter based on apathy level
            if (inputString.Contains(Keyword.ApathyLevel) &&
                !lineService.GetParenData(inputString, Keyword.ApathyLevel).GetResultOrDefault(new List <string>()).Contains(domme.ApathyLevel.ToString()))
            {
                return(false);
            }
            if (inputString.Contains(Keyword.ApathyLevelNum + "1") && domme.ApathyLevel != ApathyLevel.Cautious)
            {
                return(false);
            }
            if (inputString.Contains(Keyword.ApathyLevelNum + "2") && domme.ApathyLevel != ApathyLevel.Caring)
            {
                return(false);
            }
            if (inputString.Contains(Keyword.ApathyLevelNum + "3") && domme.ApathyLevel != ApathyLevel.Moderate)
            {
                return(false);
            }
            if (inputString.Contains(Keyword.ApathyLevelNum + "4") && domme.ApathyLevel != ApathyLevel.Cruel)
            {
                return(false);
            }
            if (inputString.Contains(Keyword.ApathyLevelNum + "5") && domme.ApathyLevel != ApathyLevel.Merciless)
            {
                return(false);
            }

            // Domme Level
            if (inputString.ToLower().Contains("@DommeLevel(") &&
                !lineService.GetParenData(inputString, "@DommeLevel(").GetResultOrDefault(new List <string>()).Contains(domme.DomLevel.ToString()))
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@dommelevel1") && domme.DomLevel != DomLevel.Gentle)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@dommelevel2") && domme.DomLevel != DomLevel.Lenient)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@dommelevel3") && domme.DomLevel != DomLevel.Tease)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@dommelevel4") && domme.DomLevel != DomLevel.Rough)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@dommelevel5") && domme.DomLevel != DomLevel.Sadistic)
            {
                return(false);
            }

            // Cup size
            if (inputString.Contains("@Cup(") &&
                !lineService.GetParenData(inputString, "@Cup(").GetResultOrDefault(new List <string>()).Contains(domme.CupSize.ToString()))
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@acup") && domme.CupSize != CupSize.ACup)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@bcup") && domme.CupSize != CupSize.BCup)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@ccup") && domme.CupSize != CupSize.CCup)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@dcup") && domme.CupSize != CupSize.DCup)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@ddcup") && domme.CupSize != CupSize.DdCup)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@ddd+cup") && domme.CupSize != CupSize.DddCup)
            {
                return(false);
            }

            // Personality flags
            if (inputString.ToLower().Contains(Keyword.Crazy.ToLower()) && !domme.IsCrazy)
            {
                return(false);
            }
            if (inputString.ToLower().Contains(Keyword.Vulgar.ToLower()) && !domme.IsVulgar)
            {
                return(false);
            }
            if (inputString.ToLower().Contains(Keyword.Degrading.ToLower()) && !domme.IsDegrading)
            {
                return(false);
            }
            if (inputString.ToLower().Contains(Keyword.Supremacist.ToLower()) && !domme.IsSupremacist)
            {
                return(false);
            }
            if (inputString.ToLower().Contains(Keyword.Sadistic.ToLower()) && !domme.IsSadistic)
            {
                return(false);
            }

            // Domme Age
            if (inputString.ToLower().Contains("@selfyoung") && domme.Age > domme.AgeYoungLimit - 1)
            {
                return(false);
            }
            if (inputString.ToLower().Contains("@selfold") && domme.Age > domme.AgeOldLimit + 1)
            {
                return(false);
            }

            // Domme mood
            if (inputString.Contains("@GoodMood") && domme.MoodLevel <= domme.MoodHappy)
            {
                return(false);
            }
            if (inputString.Contains("@BadMood") && domme.MoodLevel >= domme.MoodAngry)
            {
                return(false);
            }
            if (inputString.Contains("@NeutralMood"))
            {
                if (domme.MoodLevel > domme.MoodHappy || domme.MoodLevel < domme.MoodAngry)
                {
                    return(false);
                }
            }


            if (inputString.ToLower().Contains("@dombirthday") &&
                DateTime.Now.Month != domme.BirthDay.Month &&
                DateTime.Now.Day != domme.BirthDay.Day)
            {
                return(false);
            }

            return(true);
        }
Example #12
0
 public Result SetVariable(DommePersonality domme, string variableName, string value)
 {
     throw new NotImplementedException();
 }
Example #13
0
 public bool DoesExist(DommePersonality domme, string variableName)
 {
     throw new NotImplementedException();
 }
Example #14
0
 public Result AddToVariable(DommePersonality domme, string variableName, int add)
 {
     throw new NotImplementedException();
 }
Example #15
0
 /// <summary>
 /// Create a temporary flag
 /// </summary>
 /// <param name="domme"></param>
 /// <param name="flagName"></param>
 public void SetTempFlags(DommePersonality domme, string flagName)
 {
     _flagAccessor.SetFlag(domme, flagName, true);
 }
Example #16
0
 public Result <Script> GetScript(DommePersonality domme, string fileName)
 {
     throw new NotImplementedException();
 }