diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 82bf8bd01c6f1c5c3d3f97414ea1bd72b9f1bee1..cd67c3ba8ea7ed09a6af49d0e1a6dfba5f404bb9 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -1561,27 +1561,5 @@ App.Data.ignoreGameStateVariables = [ "he", // Enunciate - "XEnunciate", - "xEnunciate", - "SchEnunciate", - "schEnunciate", - "ScEnunciate", - "scEnunciate", - "ShEnunciate", - "shEnunciate", - "PsEnunciate", - "psEnunciate", - "ChEnunciate", - "chEnunciate", - "zzEnunciate", - "ZEnunciate", - "zEnunciate", - "ccEnunciate", - "CEnunciate", - "cEnunciate", - "ssEnunciate", - "SEnunciate", - "sEnunciate", - "sayEnunciate", - "titleEnunciate" + "enunciate" ]; diff --git a/src/events/RESS/hotPC.js b/src/events/RESS/hotPC.js index f31d4645ba781d3541662151b45e82e133971573..ae3b365f08ebe5e857a6adaae31fd97e51e28cbe 100644 --- a/src/events/RESS/hotPC.js +++ b/src/events/RESS/hotPC.js @@ -28,11 +28,7 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { const { He, he, His, his, hers, him, himself, girl } = getPronouns(eventSlave); - Enunciate(eventSlave); - const s = V.sEnunciate; - const S = V.SEnunciate; - const ss = V.ssEnunciate; - const Master = V.titleEnunciate; + const {s, S, ss, title: Master} = getEnunciation(eventSlave); /** @type {App.Entity.PlayerState} */ let PC = V.PC; diff --git a/src/events/RESS/lazyEvening.js b/src/events/RESS/lazyEvening.js index 462ba5758323f8ce0932e28c8019cffa67bdd24c..4244b247d1f32070905ab9006a96dffa6542248a 100644 --- a/src/events/RESS/lazyEvening.js +++ b/src/events/RESS/lazyEvening.js @@ -20,7 +20,7 @@ App.Events.RESSLazyEvening = class RESSLazyEvening extends App.Events.BaseEvent const { He, he, His, his, hers, him, himself, girl, woman } = getPronouns(eventSlave); - Enunciate(eventSlave); + const {s, title} = getEnunciation(eventSlave); V.nextLink = "Next Week"; @@ -60,9 +60,9 @@ App.Events.RESSLazyEvening = class RESSLazyEvening extends App.Events.BaseEvent if (!canTalk(eventSlave)) { t.push(`asks with a gesture that carries just the right mixture of submission and exaggerated casualness if you'd like to 'hang out.'`); } else if (SlaveStatsChecker.checkForLisp(eventSlave)) { - t.push(`lisps with exaggerated casualness, "Let'${V.sEnunciate} hang out, ${V.titleEnunciate}?"`); + t.push(`lisps with exaggerated casualness, "Let'${s} hang out, ${title}?"`); } else { - t.push(`asks with exaggerated casualness, "Want to hang out, ${V.titleEnunciate}?"`); + t.push(`asks with exaggerated casualness, "Want to hang out, ${title}?"`); } App.Events.addParagraph(node, t); diff --git a/src/events/RESS/waistlineWoes.js b/src/events/RESS/waistlineWoes.js index 442e70bdc2c515dc28d58fe342ae5a527c239cab..9cec258f2d138bcfb90c16d9744acdb127801b65 100644 --- a/src/events/RESS/waistlineWoes.js +++ b/src/events/RESS/waistlineWoes.js @@ -22,8 +22,7 @@ App.Events.RESSWaistlineWoes = class RESSWaistlineWoes extends App.Events.BaseEv const { He, he, His, his, hers, him, himself, girl } = getPronouns(eventSlave); - Enunciate(eventSlave); - const Master = V.titleEnunciate; + const {title: Master} = getEnunciation(eventSlave); V.nextLink = "Next Week"; diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js index 5b9b90fb6f41310add2d109fdd20c82af13c908c..77b51dcf7f79ea425228d66592f8d7aa673ab88b 100644 --- a/src/facilities/nursery/nurseryWidgets.js +++ b/src/facilities/nursery/nurseryWidgets.js @@ -10298,18 +10298,7 @@ App.Facilities.Nursery.LongChildDescription = function(child) { } function master(child) { - let - r = ``; - - if (jsDef(child)) { - Enunciate(child); - } else if (!jsDef(V.titleEnunciate)) { - Enunciate(child); - } - - r += `${V.titleEnunciate}`; - - return r; + return getEnunciation(child).title; } function mouth(child) { diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 6bcff58fde64c54c83fffa025ce4bd97e834194e..3149ecdccb8edbe5b7ea41ab0da07aab9b694b91 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -410,66 +410,95 @@ globalThis.getNonlocalPronouns = function(dickRatio) { return getPronouns(slave); }; -/** +/** Get the written title for a given slave, without messing with global state. * @param {App.Entity.SlaveState} slave * @returns {string} */ +globalThis.getWrittenTitle = function(slave) { + if (slave.custom.title !== undefined && slave.custom.title !== "" && slave.rudeTitle === 0) { + return slave.custom.title; + } + if (V.PC.customTitle !== undefined) { + return V.PC.customTitle; + } else if (V.PC.title !== 0) { + return "Master"; + } else { + return "Mistress"; + } +}; + +/** Get the written title for a given slave, or for the most recently enunciated slave, write it into global state, and return it. + * @param {App.Entity.SlaveState} [slave] + * @returns {string} + */ globalThis.WrittenMaster = function(slave) { if (slave !== undefined) { - Enunciate(slave); - } else if (V.titleEnunciate === undefined) { - Enunciate(V.activeSlave); + V.writtenTitle = getWrittenTitle(slave); + } else if (V.writtenTitle === undefined) { + V.writtenTitle = getWrittenTitle(V.activeSlave); } return V.writtenTitle; }; -/** +/** Get all the enunciations used by a particular slave as a destructurable object. * @param {App.Entity.SlaveState} slave + * @returns {{title: string, say: string, + * s: string, S: string, ss: string, + * c: string, C: string, cc: string, + * z: string, Z: string, zz: string, + * ch: string, Ch: string, + * ps: string, Ps: string, + * sh: string, Sh: string, + * sc: string, Sc: string, + * sch: string, Sch: string, + * x: string, X: string}} */ -globalThis.Enunciate = function(slave) { +globalThis.getEnunciation = function(slave) { + let ret = {}; + if (SlaveStatsChecker.checkForLisp(slave)) { if (V.PC.customTitleLisp !== undefined) { - V.titleEnunciate = V.PC.customTitleLisp; + ret.title = V.PC.customTitleLisp; } else if (V.PC.title !== 0) { - V.titleEnunciate = "Mathter"; + ret.title = "Mathter"; } else { - V.titleEnunciate = "Mithtreth"; + ret.title = "Mithtreth"; } if (V.allowFamilyTitles === 1) { if (slave.father === -1) { if (slave.actualAge < 4 && slave.physicalAge < 4) { - V.titleEnunciate = "Dadda"; + ret.title = "Dadda"; } else if (slave.actualAge < 9) { - V.titleEnunciate = "Daddy"; + ret.title = "Daddy"; } else { - V.titleEnunciate = "Dad"; + ret.title = "Dad"; } } else if (slave.mother === -1) { if (slave.actualAge < 4 && slave.physicalAge < 4) { - V.titleEnunciate = "Mama"; + ret.title = "Mama"; } else if (slave.actualAge < 9) { - V.titleEnunciate = "Mommy"; + ret.title = "Mommy"; } else { - V.titleEnunciate = "Mom"; + ret.title = "Mom"; } } else if (V.PC.mother === slave.ID || V.PC.father === slave.ID) { if (V.PC.title === 1) { - V.titleEnunciate = "Thon"; + ret.title = "Thon"; } else if (V.PC.title === 0) { - V.titleEnunciate = "Daughter"; + ret.title = "Daughter"; } } else if (areSisters(slave, V.PC) > 0) { if (V.PC.title === 1) { if (slave.actualAge < 18) { - V.titleEnunciate = "Bro"; + ret.title = "Bro"; } else { - V.titleEnunciate = "Brother"; + ret.title = "Brother"; } } else if (V.PC.title === 0) { if (slave.actualAge < 18) { - V.titleEnunciate = "Thith"; + ret.title = "Thith"; } else { - V.titleEnunciate = "Thithter"; + ret.title = "Thithter"; } } } @@ -477,77 +506,77 @@ globalThis.Enunciate = function(slave) { if (slave.custom.titleLisp !== undefined && slave.custom.titleLisp !== "") { if (slave.rudeTitle === 1) { if (slave.trust > 20) { - V.titleEnunciate = slave.custom.titleLisp; + ret.title = slave.custom.titleLisp; } } else { - V.titleEnunciate = slave.custom.titleLisp; + ret.title = slave.custom.titleLisp; } } - V.sayEnunciate = "lisp"; - V.sEnunciate = "th"; - V.SEnunciate = "Th"; - V.ssEnunciate = "th"; - V.cEnunciate = "th"; - V.CEnunciate = "Th"; - V.ccEnunciate = "kth"; - V.zEnunciate = "th"; - V.ZEnunciate = "Th"; - V.zzEnunciate = "th"; - V.chEnunciate = "th"; - V.ChEnunciate = "Th"; - V.psEnunciate = "th"; - V.PsEnunciate = "Th"; - V.shEnunciate = "th"; - V.ShEnunciate = "Th"; - V.scEnunciate = "th"; - V.ScEnunciate = "Th"; - V.schEnunciate = "th"; - V.SchEnunciate = "Th"; - V.xEnunciate = "kth"; - V.XEnunciate = "Th"; + ret.say = "lisp"; + ret.s = "th"; + ret.S = "Th"; + ret.ss = "th"; + ret.c = "th"; + ret.C = "Th"; + ret.cc = "kth"; + ret.z = "th"; + ret.Z = "Th"; + ret.zz = "th"; + ret.ch = "th"; + ret.Ch = "Th"; + ret.ps = "th"; + ret.Ps = "Th"; + ret.sh = "th"; + ret.Sh = "Th"; + ret.sc = "th"; + ret.Sc = "Th"; + ret.sch = "th"; + ret.Sch = "Th"; + ret.x = "kth"; + ret.X = "Th"; } else { if (V.PC.customTitle !== undefined) { - V.titleEnunciate = V.PC.customTitle; + ret.title = V.PC.customTitle; } else if (V.PC.title !== 0) { - V.titleEnunciate = "Master"; + ret.title = "Master"; } else { - V.titleEnunciate = "Mistress"; + ret.title = "Mistress"; } if (V.allowFamilyTitles === 1) { if (slave.father === -1) { if (slave.actualAge < 4 && slave.physicalAge < 4) { - V.titleEnunciate = "Dadda"; + ret.title = "Dadda"; } else if (slave.actualAge < 9) { - V.titleEnunciate = "Daddy"; + ret.title = "Daddy"; } else { - V.titleEnunciate = "Dad"; + ret.title = "Dad"; } } else if (slave.mother === -1) { if (slave.actualAge < 4 && slave.physicalAge < 4) { - V.titleEnunciate = "Mama"; + ret.title = "Mama"; } else if (slave.actualAge < 9) { - V.titleEnunciate = "Mommy"; + ret.title = "Mommy"; } else { - V.titleEnunciate = "Mom"; + ret.title = "Mom"; } } else if (V.PC.mother === slave.ID || V.PC.father === slave.ID) { if (V.PC.title === 1) { - V.titleEnunciate = "Son"; + ret.title = "Son"; } else if (V.PC.title === 0) { - V.titleEnunciate = "Daughter"; + ret.title = "Daughter"; } } else if (areSisters(slave, V.PC) > 0) { if (V.PC.title === 1) { if (slave.actualAge < 18) { - V.titleEnunciate = "Bro"; + ret.title = "Bro"; } else { - V.titleEnunciate = "Brother"; + ret.title = "Brother"; } } else if (V.PC.title === 0) { if (slave.actualAge < 18) { - V.titleEnunciate = "Sis"; + ret.title = "Sis"; } else { - V.titleEnunciate = "Sister"; + ret.title = "Sister"; } } } @@ -555,46 +584,45 @@ globalThis.Enunciate = function(slave) { if (slave.custom.title !== undefined && slave.custom.title !== "") { if (slave.rudeTitle === 1) { if (slave.trust > 20) { - V.titleEnunciate = slave.custom.title; + ret.title = slave.custom.title; } } else { - V.titleEnunciate = slave.custom.title; + ret.title = slave.custom.title; } } - V.sayEnunciate = "say"; - V.sEnunciate = "s"; - V.SEnunciate = "S"; - V.ssEnunciate = "ss"; - V.cEnunciate = "c"; - V.CEnunciate = "C"; - V.ccEnunciate = "cc"; - V.zEnunciate = "z"; - V.ZEnunciate = "Z"; - V.zzEnunciate = "zz"; - V.chEnunciate = "ch"; - V.ChEnunciate = "Ch"; - V.psEnunciate = "ps"; - V.PsEnunciate = "Ps"; - V.shEnunciate = "sh"; - V.ShEnunciate = "Sh"; - V.scEnunciate = "sc"; - V.ScEnunciate = "Sc"; - V.schEnunciate = "sch"; - V.SchEnunciate = "Sch"; - V.xEnunciate = "x"; - V.XEnunciate = "X"; - } - // writtenTitle should be defined outside of the lispCheck. - if (V.PC.customTitle !== undefined) { - V.writtenTitle = V.PC.customTitle; - } else if (V.PC.title !== 0) { - V.writtenTitle = "Master"; - } else { - V.writtenTitle = "Mistress"; - } - if (slave.custom.title !== undefined && slave.custom.title !== "" && slave.rudeTitle === 0) { - V.writtenTitle = slave.custom.title; + ret.say = "say"; + ret.s = "s"; + ret.S = "S"; + ret.ss = "ss"; + ret.c = "c"; + ret.C = "C"; + ret.cc = "cc"; + ret.z = "z"; + ret.Z = "Z"; + ret.zz = "zz"; + ret.ch = "ch"; + ret.Ch = "Ch"; + ret.ps = "ps"; + ret.Ps = "Ps"; + ret.sh = "sh"; + ret.Sh = "Sh"; + ret.sc = "sc"; + ret.Sc = "Sc"; + ret.sch = "sch"; + ret.Sch = "Sch"; + ret.x = "x"; + ret.X = "X"; } + + return ret; +}; + +/** Write all of the enunciations used by a slave into global state data for use by sugarcube macros. + * @param {App.Entity.SlaveState} slave + */ +globalThis.Enunciate = function(slave) { + V.enunciate = getEnunciation(slave); + V.writtenTitle = getWrittenTitle(slave); }; /** @@ -671,8 +699,7 @@ globalThis.SlaveFullBirthName = function(slave) { */ globalThis.PoliteRudeTitle = function(slave) { const PC = V.PC; - const s = V.sEnunciate; - const ss = V.ssEnunciate; + const {s, ss, title} = getEnunciation(slave); let r = ""; if (slave.nationality === "Japanese") { @@ -683,7 +710,7 @@ globalThis.PoliteRudeTitle = function(slave) { } } else { if (slave.intelligence + slave.intelligenceImplant < -95) { - r += V.titleEnunciate; + r += title; } else if (slave.intelligence + slave.intelligenceImplant > 50) { r += (PC.title > 0 ? `Ma${s}ter` : `Mi${s}tre${ss}`); } else if (slave.trust > 0) { diff --git a/src/js/modification.js b/src/js/modification.js index 22ebcb1743045a38b117724e208171c3556ef5a6..25be7b72c5ac88579d891e09a2f5a05221987acc 100644 --- a/src/js/modification.js +++ b/src/js/modification.js @@ -336,13 +336,7 @@ App.Medicine.Modification.setTattoo = function(slave, location, design) { // reaction const {He, he, His, his, him} = getPronouns(slave); - Enunciate(slave); // TODO: it'd be nice to return a deconstructable object from Enunciate like we do from getPronouns... - const s = V.sEnunciate; - const ss = V.sEnunciate; - const x = V.xEnunciate; - const c = V.cEnunciate; - const Master = V.titleEnunciate; - const say = V.sayEnunciate; + const {s, ss, x, c, say, title: Master} = getEnunciation(slave); let r = ` `; if (location === "anus" && design !== 0) { if (canSee(slave) && canTalk(slave)) { diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 088fb0d0d02dbe128b022a2c03e73f4b0dea4718..fa3e61a47de0a40fc137528f92b171909eb9dd64 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -1539,7 +1539,7 @@ There is a horrible crash from the shower. You rush in to see <<= App.UI.slaveDe <<if !canTalk($activeSlave)>> $He points to $his pussy and comically pantomimes having sex, and then uses gestures to ask if $he can serve you with $his pussy. <<else>> - $He <<say>>s, "<<= capFirstChar($titleEnunciate)>>, I want to know what it'<<s>> like to have a cock in my virgin pu<<ss>>y. <<if canSee($activeSlave)>><<S>>eeing<<elseif canHear($activeSlave)>>Hearing<<else>>Learning about<</if>> <<s>>o many of the other <<s>>lave<<s>> getting fucked make<<s>> it <<if canSee($activeSlave)>>look<<elseif canHear($activeSlave)>><<s>>ound<<else>><<s>>eem<</if>> like <<s>>o much fun. I'm <<s>>o turned on by it. I can't be a proper <<s>>e<<x>> <<s>>lave without u<<s>>ing my pu<<ss>>y. Plea<<s>>e take my virginity, <<Master>>." + $He <<say>>s, "<<= capFirstChar($enunciate.title)>>, I want to know what it'<<s>> like to have a cock in my virgin pu<<ss>>y. <<if canSee($activeSlave)>><<S>>eeing<<elseif canHear($activeSlave)>>Hearing<<else>>Learning about<</if>> <<s>>o many of the other <<s>>lave<<s>> getting fucked make<<s>> it <<if canSee($activeSlave)>>look<<elseif canHear($activeSlave)>><<s>>ound<<else>><<s>>eem<</if>> like <<s>>o much fun. I'm <<s>>o turned on by it. I can't be a proper <<s>>e<<x>> <<s>>lave without u<<s>>ing my pu<<ss>>y. Plea<<s>>e take my virginity, <<Master>>." <</if>> $He spreads $his legs <<if $activeSlave.belly >= 10000>>carefully and cocks $his hips<<else>>and cocks $his hips suggestively<</if>> at you. @@ -1549,7 +1549,7 @@ $He spreads $his legs <<if $activeSlave.belly >= 10000>>carefully and cocks $his <<if !canTalk($activeSlave)>> $He comically pantomimes anal sex, and then uses gestures to ask if $he can serve you anally. <<else>> - $He <<say>>s, "<<= capFirstChar($titleEnunciate)>>, I <<if canSee($activeSlave)>><<s>>ee<<elseif canHear($activeSlave)>>hear<<else>>am <<s>>urrounded by<</if>> <<s>>o many of the other <<s>>lave<<s>> getting buttfucked. I think it'<<s>> hot <<if canSee($activeSlave)>><<s>>eeing<<elseif canHear($activeSlave)>>hearing<<else>>that you have<</if>> them take it up the a<<ss>>, and I feel almo<<s>>t incomplete <<s>>in<<c>>e I don't take cock in every hole. Plea<<s>>e take my butt virginity, <<Master>>." + $He <<say>>s, "<<= capFirstChar($enunciate.title)>>, I <<if canSee($activeSlave)>><<s>>ee<<elseif canHear($activeSlave)>>hear<<else>>am <<s>>urrounded by<</if>> <<s>>o many of the other <<s>>lave<<s>> getting buttfucked. I think it'<<s>> hot <<if canSee($activeSlave)>><<s>>eeing<<elseif canHear($activeSlave)>>hearing<<else>>that you have<</if>> them take it up the a<<ss>>, and I feel almo<<s>>t incomplete <<s>>in<<c>>e I don't take cock in every hole. Plea<<s>>e take my butt virginity, <<Master>>." <</if>> $He<<if $activeSlave.belly >= 10000>> carefully turns and spreads $his legs, allowing $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnant <</if>> belly space as $he bends over, to wiggle<<else>> turns around and wiggles<</if>> $his posterior indicatively. @@ -1910,7 +1910,7 @@ During a routine inspection of <<= App.UI.slaveDescriptionDialog($activeSlave)>> <<case "restricted profession">> -<<set _shoutitoutloud = $titleEnunciate.toUpperCase()>> +<<set _shoutitoutloud = $enunciate.title.toUpperCase()>> <<= App.UI.slaveDescriptionDialog($activeSlave)>> is <<if (!hasAnyLegs($activeSlave))>>sitting <<if (hasAnyArms($activeSlave))>>helplessly<<else>>limblessly<</if>><<elseif !canWalk($activeSlave)>>kneeling<<else>>standing<</if>> before your desk for $his regular inspection. $He is studiously observing the letter of the rule against speaking, and is doing $his best to make your inspection as efficient as possible. $His desire to please radiates off $him in almost palpable waves. $He obviously wants to communicate something to you, but can't do it without breaking the rules. diff --git a/src/utility/descriptionWidgetsPiercings.tw b/src/utility/descriptionWidgetsPiercings.tw index 75f27373d8a8be60c4f47dc7ee7da7b0efcbdd57..94505d260dd9c34c36a01be76f67da8299abdad9 100644 --- a/src/utility/descriptionWidgetsPiercings.tw +++ b/src/utility/descriptionWidgetsPiercings.tw @@ -143,15 +143,15 @@ with $his fat lips; <</if>> <<run Enunciate($activeSlave)>> - <<if $writtenTitle === $titleEnunciate>> + <<if $writtenTitle === $enunciate.title>> <<if (setup.badNames.includes(capFirstChar($writtenTitle)))>> unfortunately <<else>> fortunately <</if>> - '$titleEnunciate' is easy to pronounce. + '$enunciate.title' is easy to pronounce. <<else>> - '$writtenTitle' comes out as '$titleEnunciate.' + '$writtenTitle' comes out as '$enunciate.title.' <</if>> <</if>> <</if>> diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index 3c0641866c21d875c955a97265782d0db4596738..81bd824e362548099728bb121f91e56bffb02f28 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -10,29 +10,29 @@ Allows for dynamic updating of the next button in the storyCaption (left side-ba <<replace "#nextButton">> <<userButton>> <</replace>> <</widget>> -<<widget "Master">><<if def $args[0]>><<run Enunciate($args[0])>><<elseif ndef $titleEnunciate>><<run Enunciate($activeSlave)>><</if>>$titleEnunciate<</widget>> -<<widget "say">><<if (def $args[0]) && $sayEnunciate != "lisp">>$args[0]<<else>>$sayEnunciate<</if>><</widget>> -<<widget "s">>$sEnunciate<</widget>> -<<widget "S">>$SEnunciate<</widget>> -<<widget "ss">>$ssEnunciate<</widget>> -<<widget "c">>$cEnunciate<</widget>> -<<widget "C">>$CEnunciate<</widget>> -<<widget "cc">>$ccEnunciate<</widget>> -<<widget "z">>$zEnunciate<</widget>> -<<widget "Z">>$ZEnunciate<</widget>> -<<widget "zz">>$zzEnunciate<</widget>> -<<widget "ch">>$chEnunciate<</widget>> -<<widget "Ch">>$ChEnunciate<</widget>> -<<widget "ps">>$psEnunciate<</widget>> -<<widget "Ps">>$PsEnunciate<</widget>> -<<widget "sh">>$shEnunciate<</widget>> -<<widget "Sh">>$ShEnunciate<</widget>> -<<widget "sc">>$scEnunciate<</widget>> -<<widget "Sc">>$ScEnunciate<</widget>> -<<widget "sch">>$schEnunciate<</widget>> -<<widget "Sch">>$SchEnunciate<</widget>> -<<widget "x">>$xEnunciate<</widget>> -<<widget "X">>$XEnunciate<</widget>> +<<widget "Master">><<if def $args[0]>><<run Enunciate($args[0])>><<elseif ndef $enunciate>><<run Enunciate($activeSlave)>><</if>>$enunciate.title<</widget>> +<<widget "say">><<if (def $args[0]) && $enunciate.say != "lisp">>$args[0]<<else>>$enunciate.say<</if>><</widget>> +<<widget "s">>$enunciate.s<</widget>> +<<widget "S">>$enunciate.S<</widget>> +<<widget "ss">>$enunciate.ss<</widget>> +<<widget "c">>$enunciate.c<</widget>> +<<widget "C">>$enunciate.C<</widget>> +<<widget "cc">>$enunciate.cc<</widget>> +<<widget "z">>$enunciate.z<</widget>> +<<widget "Z">>$enunciate.Z<</widget>> +<<widget "zz">>$enunciate.zz<</widget>> +<<widget "ch">>$enunciate.ch<</widget>> +<<widget "Ch">>$enunciate.Ch<</widget>> +<<widget "ps">>$enunciate.ps<</widget>> +<<widget "Ps">>$enunciate.Ps<</widget>> +<<widget "sh">>$enunciate.sh<</widget>> +<<widget "Sh">>$enunciate.Sh<</widget>> +<<widget "sc">>$enunciate.sc<</widget>> +<<widget "Sc">>$enunciate.Sc<</widget>> +<<widget "sch">>$enunciate.sch<</widget>> +<<widget "Sch">>$enunciate.Sch<</widget>> +<<widget "x">>$enunciate.x<</widget>> +<<widget "X">>$enunciate.X<</widget>> /* If $args[0] is defined, it is assumed the primary slave is speaking about secondary slave. Else, the secondary slave is speaking about primary slave.