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); }
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); }
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); }
/// <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, } }); }
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 + "!")); }
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")); }
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))); }
public void SetFlag(DommePersonality domme, string flagName, bool isTemp) { throw new NotImplementedException(); }
public bool IsSet(DommePersonality domme, string flagName) { throw new NotImplementedException(); }
public void DeleteFlag(DommePersonality domme, string flagName) { throw new NotImplementedException(); }
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); }
public Result SetVariable(DommePersonality domme, string variableName, string value) { throw new NotImplementedException(); }
public bool DoesExist(DommePersonality domme, string variableName) { throw new NotImplementedException(); }
public Result AddToVariable(DommePersonality domme, string variableName, int add) { throw new NotImplementedException(); }
/// <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); }
public Result <Script> GetScript(DommePersonality domme, string fileName) { throw new NotImplementedException(); }