/// <summary> /// Alter the lex entirely including all of its sublex /// </summary> /// <param name="context">Contextual nature of the request.</param> /// <param name="obfuscationLevel">-100 to 100 range.</param> /// <returns>the new lex</returns> private ILexica Mutate(MessagingType sensoryType, short obfuscationLevel = 0) { IDictata dict = GetDictata(); ILexica newLex = Clone(); if (dict != null) { IDictata newDict = null; if (obfuscationLevel != 0) { newDict = Thesaurus.ObscureWord(dict, obfuscationLevel); } else if (Type != LexicalType.ProperNoun && (Context.Severity + Context.Elegance + Context.Quality > 0 || Context.Language != dict.Language || Context.Plural != dict.Plural || Context.Possessive != dict.Possessive || Context.Tense != dict.Tense || Context.Perspective != dict.Perspective || Context.Determinant != dict.Determinant || Context.GenderForm.Feminine != dict.Feminine)) { newDict = Thesaurus.GetSynonym(dict, Context); } if (newDict != null) { newLex.Phrase = newDict.Name; } } return(newLex); }