diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index e47c942fe83a503bb66657ee59c1952962eeb7c9..acef3c5e7096396b0dbb83dccacc424be580277e 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -2,6 +2,13 @@ 0.10.7.1-1.1.x +12/01/2018 + + 5 + -fixes + -added ability to overwrite saves + -removed a long term, ever increasing problem related to sugarcube + 11/30/2018 4 diff --git a/devNotes/sugarcube stuff/important for updating sugarcube.txt b/devNotes/sugarcube stuff/important for updating sugarcube.txt index ad4f0a619d782d1857a9605ca7567c9bc60d2ab2..dc87ab303bead6b0a366c9618beb4bae2afebd39 100644 --- a/devNotes/sugarcube stuff/important for updating sugarcube.txt +++ b/devNotes/sugarcube stuff/important for updating sugarcube.txt @@ -11,12 +11,18 @@ Edit the sugarcube header and change: ... return Object.freeze + + {return LZString.compressToUTF16(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromUTF16(e))}}]),e}(); + + Into this [{key:"_serialize",value:function(e) + /* look here for changes */ {return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}(); /* changes end here */ + return Object.freeze @@ -42,3 +48,22 @@ into this: This uses two separate methods to detect if we are returning to the same page. Just checking sugarcube should actually be sufficient, but no harm in this approach either. + +CHANGE 3: Ignore expired array +============================== + + return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[].concat(_toConsumableArray(V))),null!==F&&(t.seed=F.seed),t}function a(e,t){ + + into + + return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[]),null!==F&&(t.seed=F.seed),t}function a(e,t){ + + +CHANGE 4: Save overwriting? +=========================== + + d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){ + + into + + d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save),e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){ \ No newline at end of file diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index bc5369d5ac03620b305070b7d0c9d477a2d33fba..ab114b1846bc725cabb58365676a179dbea4f8c7 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -1,5 +1,6 @@ config.history.maxStates = 1; /* If you remove this, I will fucking yell at you. Stop. Doing. It. */ config.saves.autosave = "autosave"; +State.expired.disable; /*:: StoryJS [script]*/ @@ -1000,6 +1001,87 @@ window.genUUID = function() { return uuid; }; +window.removeFS = function(FS) { + const V = State.variables; + const arcology = V.arcologies[0]; + let FSDecoration = FS + "Decoration"; + let FSSMR = FS + "SMR"; + let FSLaw = FS + "Law"; + if (FS === "FSSupremacist" || FS === "FSSubjugationist") { + FSLaw += "ME"; + } + switch (FS) { + case "FSGenderRadicalist": + arcology.FSGenderRadicalistLawBeauty = 0; + arcology.FSGenderRadicalistLawFuta = 0; + break; + case "FSGenderFundamentalist": + arcology.FSGenderFundamentalistLawBeauty = 0; + arcology.FSGenderFundamentalistLawBimbo = 0; + arcology.FSGenderFundamentalistSMR = 0; + break; + case "FSTransformationFetishist": + case "FSAssetExpansionist": + arcology[FSSMR] = 0; + break; + case "FSPhysicalIdealist": + arcology.FSPhysicalIdealistLaw = 0; + arcology.FSPhysicalIdealistSMR = 0; + arcology.FSPhysicalIdealistStrongFat = 0; + case "FSHedonisticDecadence": + arcology.FSHedonisticDecadenceLaw = 0; + arcology.FSHedonisticDecadenceLaw2 = 0; + arcology.FSHedonisticDecadenceSMR = 0; + arcology.FSHedonisticDecadenceStrongFat = 0; + break; + case "FSChattelReligionist": + arcology.FSChattelReligionistLaw = 0; + arcology.FSChattelReligionistSMR = 0; + arcology.FSChattelReligionistCreed = 0; + break; + case "FSNull": + break; + default: /* all others have one law and one SMR */ + arcology[FSLaw] = 0; + arcology[FSSMR] = 0; + break; + } + if (FS !== "FSNull") { + arcology[FSDecoration] = 20; + if (FS === "FSRestart") { + V.propOutcome = 0; + V.failedElite = 0; + } + } + arcology[FS] = "unset"; + resetFSCredits(); +}; + +window.resetFSCredits = function() { + const V = State.variables; + let activeFS = 0; + for (let i = 0; i < setup.FutureSocieties.length; i++) { + if (V.arcologies[0][setup.FutureSocieties[i]] > 0) { + activeFS++; + } + } + console.log(activeFS); + if (V.arcologies[0].FSNull > 0) { /* possibly recalculate for multiculturalism */ + activeFS--; + if (V.FSCreditCount === 4) { + activeFS += V.arcologies[0].FSNull/25; + } else if (V.FSCreditCount === 6) { + activeFS += V.arcologies[0].FSNull/17; + } else if (V.FSCreditCount === 7) { + activeFS += V.arcologies[0].FSNull/15; + } else { + activeFS += V.arcologies[0].FSNull/20; + } + } + console.log(activeFS); + V.FSCredits = Math.max(Math.trunc(V.FSGotRepCredits - activeFS), 0); +}; + /*:: itemAvailability [script]*/ /* intended to condense the clothing/toy/etc availability checks into something less asinine */ diff --git a/devTools/tweeGo/storyFormats/sugarcube-2/header.html b/devTools/tweeGo/storyFormats/sugarcube-2/header.html index e01579eb77c97a6ca1e2c4e0c9eb63fb46770f7f..4cc9050c99df9885cf22778aea7a1d2c21d9bf97 100644 --- a/devTools/tweeGo/storyFormats/sugarcube-2/header.html +++ b/devTools/tweeGo/storyFormats/sugarcube-2/header.html @@ -135,11 +135,11 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f {return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}(); /* changes end here */ return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.push(function(){function e(e){try{var t="_sc_"+String(Date.now());o._setCookie(t,o._serialize(t),undefined),i=o._deserialize(o._getCookie(t))===t,o._setCookie(t,undefined,n)}catch(e){i=!1}return i&&r(e),i}function t(e,t){if(!i)throw new Error("adapter not initialized");return new o(e,t)}function r(e){if(""!==document.cookie)for(var t=e+".",r=new RegExp("^"+RegExp.escape(t)),i=e+"!.",s=e+"*.",u=/\.(?:state|rcWarn)$/,l=document.cookie.split(/;\s*/),c=0;c<l.length;++c){var d=l[c].split("="),h=decodeURIComponent(d[0]);if(r.test(h)){var f=decodeURIComponent(d[1]);""!==f&&function(){var e=!u.test(h);o._setCookie(h,undefined,n),o._setCookie(h.replace(r,function(){return e?i:s}),f,e?a:undefined)}()}}}var a="Tue, 19 Jan 2038 03:14:07 GMT",n="Thu, 01 Jan 1970 00:00:00 GMT",i=!1,o=function(){function e(t,r){_classCallCheck(this,e);var a=t+(r?"!":"*")+".";Object.defineProperties(this,{_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:"cookie"},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){if(""===document.cookie)return[];for(var e=document.cookie.split(/;\s*/),t=[],r=0;r<e.length;++r){var a=e[r].split("="),n=decodeURIComponent(a[0]);if(this._prefixRe.test(n)){""!==decodeURIComponent(a[1])&&t.push(n.replace(this._prefixRe,""))}}return t}},{key:"has",value:function(t){return!("string"!=typeof t||!t)&&null!==e._getCookie(this._prefix+t)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=e._getCookie(this._prefix+t);return null===r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{if(e._setCookie(this._prefix+t,e._serialize(r),this.persistent?a:undefined),!this.has(t))throw new Error("unknown validation error during set")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"delete",value:function(t){if("string"!=typeof t||!t||!this.has(t))return!1;try{if(e._setCookie(this._prefix+t,undefined,n),this.has(t))throw new Error("unknown validation error during delete")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_getCookie",value:function(e){if(!e||""===document.cookie)return null;for(var t=document.cookie.split(/;\s*/),r=0;r<t.length;++r){var a=t[r].split("=");if(e===decodeURIComponent(a[0])){return decodeURIComponent(a[1])||null}}return null}},{key:"_setCookie",value:function(e,t,r){if(e){var a=encodeURIComponent(e)+"=";null!=t&&(a+=encodeURIComponent(t)),null!=r&&(a+="; expires="+r),a+="; path=/",document.cookie=a}}},{key:"_serialize",value:function(e){return LZString.compressToBase64(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromBase64(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}());var DebugView=function(){return function(){function e(t,r,a,n){_classCallCheck(this,e),Object.defineProperties(this,{parent:{value:t},view:{value:document.createElement("span")},break:{value:document.createElement("wbr")}}),jQuery(this.view).attr({title:n,"aria-label":n,"data-type":null!=r?r:"","data-name":null!=a?a:""}).addClass("debug"),jQuery(this.break).addClass("debug hidden"),this.parent.appendChild(this.view),this.parent.appendChild(this.break)}return _createClass(e,[{key:"append",value:function(e){return jQuery(this.view).append(e),this}},{key:"modes",value:function(e){if(null==e){var t={};return this.view.className.splitOrEmpty(/\s+/).forEach(function(e){"debug"!==e&&(t[e]=!0)}),t}if("object"===(void 0===e?"undefined":_typeof(e)))return Object.keys(e).forEach(function(t){this[e[t]?"addClass":"removeClass"](t)},jQuery(this.view)),this;throw new Error("DebugView.prototype.modes options parameter must be an object or null/undefined")}},{key:"remove",value:function(){var e=jQuery(this.view);this.view.hasChildNodes()&&e.contents().appendTo(this.parent),e.remove(),jQuery(this.break).remove()}},{key:"output",get:function(){return this.view}},{key:"type",get:function(){return this.view.getAttribute("data-type")},set:function(e){this.view.setAttribute("data-type",null!=e?e:"")}},{key:"name",get:function(){return this.view.getAttribute("data-name")},set:function(e){this.view.setAttribute("data-name",null!=e?e:"")}},{key:"title",get:function(){return this.view.title},set:function(e){this.view.title=e}}],[{key:"isEnabled",value:function(){return"enabled"===jQuery(document.documentElement).attr("data-debug-view")}},{key:"enable",value:function(){jQuery(document.documentElement).attr("data-debug-view","enabled"),jQuery.event.trigger(":debugviewupdate")}},{key:"disable",value:function(){jQuery(document.documentElement).removeAttr("data-debug-view"),jQuery.event.trigger(":debugviewupdate")}},{key:"toggle",value:function(){"enabled"===jQuery(document.documentElement).attr("data-debug-view")?e.disable():e.enable()}}]),e}()}(),PRNGWrapper=function(){return function(){function e(t,r){_classCallCheck(this,e),Object.defineProperties(this,new Math.seedrandom(t,r,function(e,t){return{_prng:{value:e},seed:{writable:!0,value:t},pull:{writable:!0,value:0},random:{value:function(){return++this.pull,this._prng()}}}}))}return _createClass(e,null,[{key:"marshal",value:function(e){if(!e||!e.hasOwnProperty("seed")||!e.hasOwnProperty("pull"))throw new Error("PRNG is missing required data");return{seed:e.seed,pull:e.pull}}},{key:"unmarshal",value:function(t){if(!t||!t.hasOwnProperty("seed")||!t.hasOwnProperty("pull"))throw new Error("PRNG object is missing required data");for(var r=new e(t.seed,!1),a=t.pull;a>0;--a)r.random();return r}}]),e}()}(),StyleWrapper=function(){var e=new RegExp(Patterns.cssImage,"g"),t=new RegExp(Patterns.cssImage);return function(){function r(e){if(_classCallCheck(this,r),null==e)throw new TypeError("StyleWrapper style parameter must be an HTMLStyleElement object");Object.defineProperties(this,{style:{value:e}})}return _createClass(r,[{key:"isEmpty",value:function(){return 0===this.style.cssRules.length}},{key:"set",value:function(e){this.clear(),this.add(e)}},{key:"add",value:function(r){var a=r;t.test(a)&&(e.lastIndex=0,a=a.replace(e,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text.trim())}return'url("'+r.replace(/"/g,"%22")+'")'})),this.style.styleSheet?this.style.styleSheet.cssText+=a:this.style.appendChild(document.createTextNode(a))}},{key:"clear",value:function(){this.style.styleSheet?this.style.styleSheet.cssText="":jQuery(this.style).empty()}}]),r}()}(),Diff=function(){function e(t,a){for(var n=Object.prototype.toString,i=t instanceof Array,o=[].concat(Object.keys(t),Object.keys(a)).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}),s={},u=void 0,l=function(e){return e===u},c=0,d=o.length;c<d;++c){var h=o[c],f=t[h],p=a[h];if(t.hasOwnProperty(h))if(a.hasOwnProperty(h)){if(f===p)continue;if((void 0===f?"undefined":_typeof(f))===(void 0===p?"undefined":_typeof(p)))if("function"==typeof f)f.toString()!==p.toString()&&(s[h]=[r.Copy,p]);else if("object"!==(void 0===f?"undefined":_typeof(f))||null===f)s[h]=[r.Copy,p];else{var g=n.call(f),m=n.call(p);if(g===m)if(f instanceof Date)Number(f)!==Number(p)&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Map)s[h]=[r.Copy,clone(p)];else if(f instanceof RegExp)f.toString()!==p.toString()&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Set)s[h]=[r.Copy,clone(p)];else if("[object Object]"!==g)s[h]=[r.Copy,clone(p)];else{var v=e(f,p);null!==v&&(s[h]=v)}else s[h]=[r.Copy,clone(p)]}else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}else if(i&&Util.isNumeric(h)){var y=Number(h);if(!u){u="";do{u+="~"}while(o.some(l));s[u]=[r.SpliceArray,y,y]}y<s[u][1]&&(s[u][1]=y),y>s[u][2]&&(s[u][2]=y)}else s[h]=r.Delete;else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}return Object.keys(s).length>0?s:null}function t(e,a){for(var n=Object.keys(a||{}),i=clone(e),o=0,s=n.length;o<s;++o){var u=n[o],l=a[u];if(l===r.Delete)delete i[u];else if(l instanceof Array)switch(l[0]){case r.SpliceArray:i.splice(l[1],l[2]-l[1]+1);break;case r.Copy:i[u]=clone(l[1]);break;case r.CopyDate:i[u]=new Date(l[1])}else i[u]=t(i[u],l)}return i}var r=Util.toEnum({Delete:0,SpliceArray:1,Copy:2,CopyDate:3});return Object.freeze(Object.defineProperties({},{Op:{value:r},diff:{value:e},patch:{value:t}}))}(),L10n=function(){function e(){r()}function t(e,t){if(!e)return"";var r=function(e){var t=void 0;return e.some(function(e){return!!l10nStrings.hasOwnProperty(e)&&(t=e,!0)}),t}(Array.isArray(e)?e:[e]);if(!r)return"";for(var i=l10nStrings[r],o=0;n.test(i);){if(++o>50)throw new Error("L10n.get exceeded maximum replacement iterations, probable infinite loop");a.lastIndex=0,i=i.replace(a,function(e){var r=e.slice(1,-1);return t&&t.hasOwnProperty(r)?t[r]:l10nStrings.hasOwnProperty(r)?l10nStrings[r]:void 0})}return i}function r(){strings&&Object.keys(strings).length>0&&Object.keys(l10nStrings).forEach(function(e){try{var t=void 0;switch(e){case"identity":t=strings.identity;break;case"aborting":t=strings.aborting;break;case"cancel":t=strings.cancel;break;case"close":t=strings.close;break;case"ok":t=strings.ok;break;case"errorTitle":t=strings.errors.title;break;case"errorNonexistentPassage":t=strings.errors.nonexistentPassage;break;case"errorSaveMissingData":t=strings.errors.saveMissingData;break;case"errorSaveIdMismatch":t=strings.errors.saveIdMismatch;break;case"warningDegraded":t=strings.warnings.degraded;break;case"debugViewTitle":t=strings.debugView.title;break;case"debugViewToggle":t=strings.debugView.toggle;break;case"uiBarToggle":t=strings.uiBar.toggle;break;case"uiBarBackward":t=strings.uiBar.backward;break;case"uiBarForward":t=strings.uiBar.forward;break;case"uiBarJumpto":t=strings.uiBar.jumpto;break;case"jumptoTitle":t=strings.jumpto.title;break;case"jumptoTurn":t=strings.jumpto.turn;break;case"jumptoUnavailable":t=strings.jumpto.unavailable;break;case"savesTitle":t=strings.saves.title;break;case"savesDisallowed":t=strings.saves.disallowed;break;case"savesIncapable":t=strings.saves.incapable;break;case"savesLabelAuto":t=strings.saves.labelAuto;break;case"savesLabelDelete":t=strings.saves.labelDelete;break;case"savesLabelExport":t=strings.saves.labelExport;break;case"savesLabelImport":t=strings.saves.labelImport;break;case"savesLabelLoad":t=strings.saves.labelLoad;break;case"savesLabelClear":t=strings.saves.labelClear;break;case"savesLabelSave":t=strings.saves.labelSave;break;case"savesLabelSlot":t=strings.saves.labelSlot;break;case"savesUnavailable":t=strings.saves.unavailable;break;case"savesUnknownDate":t=strings.saves.unknownDate;break;case"settingsTitle":t=strings.settings.title;break;case"settingsOff":t=strings.settings.off;break;case"settingsOn":t=strings.settings.on;break;case"settingsReset":t=strings.settings.reset;break;case"restartTitle":t=strings.restart.title;break;case"restartPrompt":t=strings.restart.prompt;break;case"shareTitle":t=strings.share.title;break;case"autoloadTitle":t=strings.autoload.title;break;case"autoloadCancel":t=strings.autoload.cancel;break;case"autoloadOk":t=strings.autoload.ok;break;case"autoloadPrompt":t=strings.autoload.prompt;break;case"macroBackText":t=strings.macros.back.text;break;case"macroReturnText":t=strings.macros.return.text}t&&(l10nStrings[e]=t.replace(/%\w+%/g,function(e){return"{"+e.slice(1,-1)+"}"}))}catch(e){}})}var a=/\{\w+\}/g,n=new RegExp(a.source);return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:t}}))}(),strings={errors:{},warnings:{},debugView:{},uiBar:{},jumpto:{},saves:{},settings:{},restart:{},share:{},autoload:{}, -macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarToggle:"Toggle the debug bar",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}return Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),a=0;a<t.length;++a)if(r.style[t[a]]!==undefined)return e.get(t[a]);return""}()})}(),State=function(){function e(){session.delete("state"),W=[],R=c(),B=-1,V=[],F=null===F?null:new PRNGWrapper(F.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(a(e),!0)}return!1}function r(e){var t={index:B};return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[].concat(_toConsumableArray(V))),null!==F&&(t.seed=F.seed),t}function a(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==F&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===F&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),B=e.index,V=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(F.seed=e.seed),g(B)}function n(){return r(!0)}function i(e){return a(e,!0)}function o(){return V}function s(){return V.length+v()}function u(){return V.concat(W.slice(0,v()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!V.includes(e)||!!W.slice(0,v()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function h(){return B}function f(){return R.title}function p(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch(void 0===e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=y())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(y()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+(void 0===e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==F&&(F=PRNGWrapper.unmarshal({seed:F.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function v(){return B+1}function y(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[B]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>B?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>v()?null:W[v()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=B;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(v()<y()&&W.splice(v(),y()-v()),W.push(c(e,R.variables)),F&&(k().pull=F.pull),Config.history.maxStates>0)for(;y()>Config.history.maxStates;)V.push(W.shift().title);return B=y()-1,g(B),v()}function T(e){return!(null==e||e<0||e>=y()||e===B)&&(B=e,g(B),!0)}function O(e){return null!=e&&0!==e&&T(B+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}F=new PRNGWrapper(e,t),R.pull=F.pull}function N(){return F?F.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,a=t.store,n=0,i=r.length;n<i;++n){if(void 0===a[r[n]])return;a=a[r[n]]}return a}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var a=r.names,n=a.pop(),i=r.store,o=0,s=a.length;o<s;++o){if(void 0===i[a[o]])return!1;i=i[a[o]]}return i[n]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,a=void 0;null!==(a=z.exec(r));)r=r.slice(a[0].length),a[1]?t.names.push(a[1]):a[2]?t.names.push(a[2]):a[3]?t.names.push(a[3]):a[4]?t.names.push(a[4]):a[5]?t.names.push(I(a[5])):a[6]&&t.names.push(Number(a[6]));return""===r?t:null}var W=[],R=c(),B=-1,V=[],F=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:n},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:h},passage:{get:f},variables:{get:p},history:{get:m},length:{get:v},size:{get:y},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:T},go:{value:O},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,a,n){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:a,one:!!r}):(i=r,o={namespace:n,one:!!a,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,a,n,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),a&&o.addClass(a),i&&o.attr("title",i),n&&o.text(n),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*n,a(o,Math.easeInOut(i)),(1===n&&i>=1||-1===n&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function a(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var n="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,a(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){l+=n,window.scroll(0,i+u*(s*Math.easeInOut(l))),l>=1&&window.clearInterval(c)}function a(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}var n=null!=t?Number(t):.1;Number.isNaN(n)||!Number.isFinite(n)||n<0?n=.1:n>1&&(n=1);var i=window.scrollY?window.scrollY:document.body.scrollTop,o=function(e){var t=a(e),r=t+e.offsetHeight,n=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=n+i;return t>=n&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}(e),s=Math.abs(i-o),u=i>o?-1:1,l=0,c=void 0;c=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,a=e.length;r<a;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,a=State.turns,n=0,i=e.length;n<i&&a>-1;++n){var o=t.lastIndexOf(e[n]);a=Math.min(a,-1===o?-1:r-o)}return a}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,a=e.length;r<a;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,a=0,n=e.length;a<n&&r>0;++a)r=Math.min(r,t.count(e[a]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,a=new Map,n=0,i=0,o=r.length;i<o;++i){var s=r[i];if(a.has(s))a.get(s)&&++n;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++n,a.set(s,!0)):a.set(s,!1)}}}return n}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref8=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function a(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:a}}(),importScripts=_ref8.importScripts,importStyles=_ref8.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var n=e,i=void 0;null!==(i=r.exec(n));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(a.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=n.slice(s);/^\s+not\b/.test(u)&&(n=n.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(n=n.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return n}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),a=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,a,n){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(a)},options:{writable:!0,value:Object.assign({profile:"all"},n)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,a){var n=this.output,i=void 0;this.output=e,null!=a&&"object"===(void 0===a?"undefined":_typeof(a))&&(i=this.options,this.options=Object.assign({},this.options,a));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),(u=s?s.exec(this.source):null)&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=n,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,h=l.length;d<h;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=n,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var a=r.querySelector(".error");if(null!==a)throw new Error(a.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,a){var n=jQuery(document.createElement("a"));return null!=t&&(n.attr("data-passage",t),Story.has(t)?(n.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&n.addClass("link-visited")):n.addClass("link-broken"),n.ariaClick({one:!0},function(){"function"==typeof a&&a(),Engine.play(t)})),r&&n.append(document.createTextNode(r)),e&&n.appendTo(e),n[0]}},{key:"createExternalLink",value:function(e,t,r){var a=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&a.attr({href:t,tabindex:0}),a[0]}},{key:"isExternalLink",value:function(e){return!Story.has(e)&&(new RegExp("^"+Patterns.url,"gim").test(e)||/[\/.?#]/.test(e))}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(n(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function a(){return 0===d.length}function n(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return h}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return h=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==(void 0===h?"undefined":_typeof(h))||0===Object.keys(h).length}function l(e){if("object"!==(void 0===h?"undefined":_typeof(h))||!h.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return h[e]}function c(e){return"object"===(void 0===h?"undefined":_typeof(h))&&h.hasOwnProperty(e)}var d=[],h=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:a},has:{value:n},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},a=void 0;do{t.lastIndex=e.nextMatch;var n=t.exec(e.source);a=n&&n.index===e.nextMatch,a&&(n[1]?r.styles[Util.fromCssProperty(n[1])]=n[2].trim():n[3]?r.styles[Util.fromCssProperty(n[3])]=n[4].trim():n[5]?r.classes=r.classes.concat(n[5].slice(1).split(/\./)):n[6]&&(r.id=n[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(a);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{switch(t=Scripting.evalTwineScript(e),void 0===t?"undefined":_typeof(t)){case"string":""===t.trim()&&(t=e);break;case"number":t=String(t);break;default:t=e}}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var a=e[r];switch(a.nodeType){case Node.ELEMENT_NODE:var n=a.nodeName.toUpperCase();if("BR"===n)return!0;var i=t?window.getComputedStyle(a,null):a.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(n){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!n&&!(n=t.Parser.get("macro")))throw new Error('cannot find "macro" parser');return n}function r(){for(var t=n||e(),r=new Set,a=t.context;null!==a;a=a.parent)a._shadows&&a._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function a(e){var t={};return r().forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r]}),function(){var r=Object.keys(t),a=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;n.hasOwnProperty(r)&&(a[r]=n[r]),n[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r],a.hasOwnProperty(r)?n[r]=a[r]:delete n[r]})}}}var n=null;return a}()},parseSquareBracketedMarkup:{value:function(e){function t(){return c>=e.source.length?s:e.source[c]}function r(t){return t<1||c+t>=e.source.length?s:e.source[c+t]}function a(){return{error:String.format.apply(String,arguments),pos:c}}function n(){l=c}function i(t){var r=e.source.slice(l,c).trim();if(""===r)throw new Error("malformed wiki "+(f?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(u.forceInternal=!0,u.link=r.slice(1)):u[t]=r,l=c}function o(e){++c;e:for(;;){switch(t()){case"\\":++c;var r=t();if(r!==s&&"\n"!==r)break;case s:case"\n":return s;case e:break e}++c}return c}var s=-1,u={},l=e.matchStart,c=l+1,d=void 0,h=void 0,f=void 0,p=void 0;if("["===(p=t()))f=u.isLink=!0;else{switch(f=!1,p){case"<":u.align="left",++c;break;case">":u.align="right",++c}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(c,c+3)))return a("malformed square-bracketed wiki markup");c+=3,u.isImage=!0}if("["!==function(){return c>=e.source.length?s:e.source[c++]}())return a("malformed wiki {0}",f?"link":"image");d=1,h=0,n();try{e:for(;;){switch(p=t()){case s:case"\n":return a("unterminated wiki {0}",f?"link":"image");case'"':if(o(p)===s)return a("unterminated double quoted string in wiki {0}",f?"link":"image");break;case"'":if((4===h||3===h&&f)&&o(p)===s)return a("unterminated single quoted string in wiki {0}",f?"link":"image");break;case"|":0===h&&(i(f?"text":"title"),++l,h=1);break;case"-":0===h&&">"===r(1)&&(i(f?"text":"title"),++c,l+=2,h=1);break;case"<":0===h&&"-"===r(1)&&(i(f?"link":"source"),++c,l+=2,h=2);break;case"[":if(-1===h)return a("unexpected left square bracket '['");++d,1===d&&(n(),++l);break;case"]":if(0===--d){switch(h){case 0:case 1:i(f?"link":"source"),h=3;break;case 2:i(f?"text":"title"),h=3;break;case 3:f?(i("setter"),h=-1):(i("link"),h=4);break;case 4:i("setter"),h=-1}if(++c,"]"===t()){++c;break e}--c}}++c}}catch(e){return a(e.message)}return u.pos=c,u}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,a=e.matchLength,n=void 0,i=void 0;do{if(a>r)for(i=r;i<a;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(a<r)for(i=r;i>a;--i)t.pop();r=a,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);n=o&&o.index===e.nextMatch,n&&(a=o[0].length,e.nextMatch+=o[0].length)}while(n)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,a=this.working.name,n=this.working.arguments,i=void 0;try{if(!(i=Macro.get(a))){if(Macro.tags.has(a)){var o=Macro.tags.get(a);return throwError(e.output,"child tag <<"+a+">> was found outside of a call to its parent macro"+(1===o.length?"":"s")+" <<"+o.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+a+">> does not exist",e.source.slice(t,e.nextMatch))}var s=null;if(i.hasOwnProperty("tags")&&!(s=this.parseBody(e,i)))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+a+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof i.handler)return throwError(e.output,"macro <<"+a+">> handler function "+(i.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var u=s?s[0].args:this.createArgs(n,i.hasOwnProperty("skipArgs")&&!!i.skipArgs||i.hasOwnProperty("skipArg0")&&!!i.skipArg0);if(i.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({macro:i,name:a,args:u,payload:s,source:e.source.slice(t,e.nextMatch),parent:this.context,parser:e});try{i.handler.call(this.context)}finally{this.context=this.context.parent}}else{var l=e._rawArgs;e._rawArgs=n;try{i.handler(e.output,a,u,e,s)}finally{e._rawArgs=l}}}catch(r){return throwError(e.output,"cannot execute "+(i&&i.isWidget?"widget":"macro")+" <<"+a+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,a="/"+r,n="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,h=this.working.name,f=this.working.arguments,p=e.nextMatch;-1!==(e.matchStart=e.source.indexOf(this.match,e.nextMatch));)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,v=this.working.arguments,y=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case n:case a:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),d=g,h=m,f=v,p=b)}if(0===c){o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return-1!==l?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){ +macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarToggle:"Toggle the debug bar",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}return Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),a=0;a<t.length;++a)if(r.style[t[a]]!==undefined)return e.get(t[a]);return""}()})}(),State=function(){function e(){session.delete("state"),W=[],R=c(),B=-1,V=[],F=null===F?null:new PRNGWrapper(F.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(a(e),!0)}return!1}function r(e){var t={index:B};return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[]),null!==F&&(t.seed=F.seed),t}function a(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==F&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===F&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),B=e.index,V=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(F.seed=e.seed),g(B)}function n(){return r(!0)}function i(e){return a(e,!0)}function o(){return V}function s(){return V.length+v()}function u(){return V.concat(W.slice(0,v()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!V.includes(e)||!!W.slice(0,v()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function h(){return B}function f(){return R.title}function p(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch(void 0===e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=y())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(y()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+(void 0===e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==F&&(F=PRNGWrapper.unmarshal({seed:F.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function v(){return B+1}function y(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[B]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>B?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>v()?null:W[v()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=B;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(v()<y()&&W.splice(v(),y()-v()),W.push(c(e,R.variables)),F&&(k().pull=F.pull),Config.history.maxStates>0)for(;y()>Config.history.maxStates;)V.push(W.shift().title);return B=y()-1,g(B),v()}function T(e){return!(null==e||e<0||e>=y()||e===B)&&(B=e,g(B),!0)}function O(e){return null!=e&&0!==e&&T(B+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}F=new PRNGWrapper(e,t),R.pull=F.pull}function N(){return F?F.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,a=t.store,n=0,i=r.length;n<i;++n){if(void 0===a[r[n]])return;a=a[r[n]]}return a}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var a=r.names,n=a.pop(),i=r.store,o=0,s=a.length;o<s;++o){if(void 0===i[a[o]])return!1;i=i[a[o]]}return i[n]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,a=void 0;null!==(a=z.exec(r));)r=r.slice(a[0].length),a[1]?t.names.push(a[1]):a[2]?t.names.push(a[2]):a[3]?t.names.push(a[3]):a[4]?t.names.push(a[4]):a[5]?t.names.push(I(a[5])):a[6]&&t.names.push(Number(a[6]));return""===r?t:null}var W=[],R=c(),B=-1,V=[],F=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:n},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:h},passage:{get:f},variables:{get:p},history:{get:m},length:{get:v},size:{get:y},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:T},go:{value:O},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,a,n){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:a,one:!!r}):(i=r,o={namespace:n,one:!!a,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,a,n,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),a&&o.addClass(a),i&&o.attr("title",i),n&&o.text(n),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*n,a(o,Math.easeInOut(i)),(1===n&&i>=1||-1===n&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function a(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var n="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,a(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){l+=n,window.scroll(0,i+u*(s*Math.easeInOut(l))),l>=1&&window.clearInterval(c)}function a(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}var n=null!=t?Number(t):.1;Number.isNaN(n)||!Number.isFinite(n)||n<0?n=.1:n>1&&(n=1);var i=window.scrollY?window.scrollY:document.body.scrollTop,o=function(e){var t=a(e),r=t+e.offsetHeight,n=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=n+i;return t>=n&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}(e),s=Math.abs(i-o),u=i>o?-1:1,l=0,c=void 0;c=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,a=e.length;r<a;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,a=State.turns,n=0,i=e.length;n<i&&a>-1;++n){var o=t.lastIndexOf(e[n]);a=Math.min(a,-1===o?-1:r-o)}return a}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,a=e.length;r<a;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,a=0,n=e.length;a<n&&r>0;++a)r=Math.min(r,t.count(e[a]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,a=new Map,n=0,i=0,o=r.length;i<o;++i){var s=r[i];if(a.has(s))a.get(s)&&++n;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++n,a.set(s,!0)):a.set(s,!1)}}}return n}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref8=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function a(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:a}}(),importScripts=_ref8.importScripts,importStyles=_ref8.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var n=e,i=void 0;null!==(i=r.exec(n));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(a.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=n.slice(s);/^\s+not\b/.test(u)&&(n=n.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(n=n.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return n}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),a=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,a,n){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(a)},options:{writable:!0,value:Object.assign({profile:"all"},n)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,a){var n=this.output,i=void 0;this.output=e,null!=a&&"object"===(void 0===a?"undefined":_typeof(a))&&(i=this.options,this.options=Object.assign({},this.options,a));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),(u=s?s.exec(this.source):null)&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=n,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,h=l.length;d<h;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=n,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var a=r.querySelector(".error");if(null!==a)throw new Error(a.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,a){var n=jQuery(document.createElement("a"));return null!=t&&(n.attr("data-passage",t),Story.has(t)?(n.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&n.addClass("link-visited")):n.addClass("link-broken"),n.ariaClick({one:!0},function(){"function"==typeof a&&a(),Engine.play(t)})),r&&n.append(document.createTextNode(r)),e&&n.appendTo(e),n[0]}},{key:"createExternalLink",value:function(e,t,r){var a=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&a.attr({href:t,tabindex:0}),a[0]}},{key:"isExternalLink",value:function(e){return!Story.has(e)&&(new RegExp("^"+Patterns.url,"gim").test(e)||/[\/.?#]/.test(e))}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(n(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function a(){return 0===d.length}function n(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return h}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return h=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==(void 0===h?"undefined":_typeof(h))||0===Object.keys(h).length}function l(e){if("object"!==(void 0===h?"undefined":_typeof(h))||!h.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return h[e]}function c(e){return"object"===(void 0===h?"undefined":_typeof(h))&&h.hasOwnProperty(e)}var d=[],h=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:a},has:{value:n},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},a=void 0;do{t.lastIndex=e.nextMatch;var n=t.exec(e.source);a=n&&n.index===e.nextMatch,a&&(n[1]?r.styles[Util.fromCssProperty(n[1])]=n[2].trim():n[3]?r.styles[Util.fromCssProperty(n[3])]=n[4].trim():n[5]?r.classes=r.classes.concat(n[5].slice(1).split(/\./)):n[6]&&(r.id=n[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(a);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{switch(t=Scripting.evalTwineScript(e),void 0===t?"undefined":_typeof(t)){case"string":""===t.trim()&&(t=e);break;case"number":t=String(t);break;default:t=e}}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var a=e[r];switch(a.nodeType){case Node.ELEMENT_NODE:var n=a.nodeName.toUpperCase();if("BR"===n)return!0;var i=t?window.getComputedStyle(a,null):a.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(n){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!n&&!(n=t.Parser.get("macro")))throw new Error('cannot find "macro" parser');return n}function r(){for(var t=n||e(),r=new Set,a=t.context;null!==a;a=a.parent)a._shadows&&a._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function a(e){var t={};return r().forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r]}),function(){var r=Object.keys(t),a=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;n.hasOwnProperty(r)&&(a[r]=n[r]),n[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r],a.hasOwnProperty(r)?n[r]=a[r]:delete n[r]})}}}var n=null;return a}()},parseSquareBracketedMarkup:{value:function(e){function t(){return c>=e.source.length?s:e.source[c]}function r(t){return t<1||c+t>=e.source.length?s:e.source[c+t]}function a(){return{error:String.format.apply(String,arguments),pos:c}}function n(){l=c}function i(t){var r=e.source.slice(l,c).trim();if(""===r)throw new Error("malformed wiki "+(f?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(u.forceInternal=!0,u.link=r.slice(1)):u[t]=r,l=c}function o(e){++c;e:for(;;){switch(t()){case"\\":++c;var r=t();if(r!==s&&"\n"!==r)break;case s:case"\n":return s;case e:break e}++c}return c}var s=-1,u={},l=e.matchStart,c=l+1,d=void 0,h=void 0,f=void 0,p=void 0;if("["===(p=t()))f=u.isLink=!0;else{switch(f=!1,p){case"<":u.align="left",++c;break;case">":u.align="right",++c}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(c,c+3)))return a("malformed square-bracketed wiki markup");c+=3,u.isImage=!0}if("["!==function(){return c>=e.source.length?s:e.source[c++]}())return a("malformed wiki {0}",f?"link":"image");d=1,h=0,n();try{e:for(;;){switch(p=t()){case s:case"\n":return a("unterminated wiki {0}",f?"link":"image");case'"':if(o(p)===s)return a("unterminated double quoted string in wiki {0}",f?"link":"image");break;case"'":if((4===h||3===h&&f)&&o(p)===s)return a("unterminated single quoted string in wiki {0}",f?"link":"image");break;case"|":0===h&&(i(f?"text":"title"),++l,h=1);break;case"-":0===h&&">"===r(1)&&(i(f?"text":"title"),++c,l+=2,h=1);break;case"<":0===h&&"-"===r(1)&&(i(f?"link":"source"),++c,l+=2,h=2);break;case"[":if(-1===h)return a("unexpected left square bracket '['");++d,1===d&&(n(),++l);break;case"]":if(0===--d){switch(h){case 0:case 1:i(f?"link":"source"),h=3;break;case 2:i(f?"text":"title"),h=3;break;case 3:f?(i("setter"),h=-1):(i("link"),h=4);break;case 4:i("setter"),h=-1}if(++c,"]"===t()){++c;break e}--c}}++c}}catch(e){return a(e.message)}return u.pos=c,u}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,a=e.matchLength,n=void 0,i=void 0;do{if(a>r)for(i=r;i<a;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(a<r)for(i=r;i>a;--i)t.pop();r=a,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);n=o&&o.index===e.nextMatch,n&&(a=o[0].length,e.nextMatch+=o[0].length)}while(n)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,a=this.working.name,n=this.working.arguments,i=void 0;try{if(!(i=Macro.get(a))){if(Macro.tags.has(a)){var o=Macro.tags.get(a);return throwError(e.output,"child tag <<"+a+">> was found outside of a call to its parent macro"+(1===o.length?"":"s")+" <<"+o.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+a+">> does not exist",e.source.slice(t,e.nextMatch))}var s=null;if(i.hasOwnProperty("tags")&&!(s=this.parseBody(e,i)))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+a+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof i.handler)return throwError(e.output,"macro <<"+a+">> handler function "+(i.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var u=s?s[0].args:this.createArgs(n,i.hasOwnProperty("skipArgs")&&!!i.skipArgs||i.hasOwnProperty("skipArg0")&&!!i.skipArg0);if(i.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({macro:i,name:a,args:u,payload:s,source:e.source.slice(t,e.nextMatch),parent:this.context,parser:e});try{i.handler.call(this.context)}finally{this.context=this.context.parent}}else{var l=e._rawArgs;e._rawArgs=n;try{i.handler(e.output,a,u,e,s)}finally{e._rawArgs=l}}}catch(r){return throwError(e.output,"cannot execute "+(i&&i.isWidget?"widget":"macro")+" <<"+a+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,a="/"+r,n="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,h=this.working.name,f=this.working.arguments,p=e.nextMatch;-1!==(e.matchStart=e.source.indexOf(this.match,e.nextMatch));)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,v=this.working.arguments,y=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case n:case a:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),d=g,h=m,f=v,p=b)}if(0===c){o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return-1!==l?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){ for(var t=new RegExp(this.argsPattern,"gm"),r=[],a=new RegExp("^"+Patterns.variable),n=void 0;null!==(n=t.exec(e));){var i=void 0;if(n[1])i=undefined;else if(n[2]){i=n[2];try{i=Scripting.evalTwineScript("("+i+")")}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[3])i="";else if(n[4]){i=n[4];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error("unable to parse macro argument '"+i+"': "+e.message)}}else if(n[5]){i=n[5];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[6]){i=n[6];var o=Wikifier.helpers.parseSquareBracketedMarkup({source:i,matchStart:0});if(o.hasOwnProperty("error"))throw new Error('unable to parse macro argument "'+i+'": '+o.error);if(o.pos<i.length)throw new Error('unable to parse macro argument "'+i+'": unexpected character(s) "'+i.slice(o.pos)+'" (pos: '+o.pos+")");o.isLink?(i={isLink:!0},i.count=o.hasOwnProperty("text")?2:1,i.link=Wikifier.helpers.evalPassageId(o.link),i.text=o.hasOwnProperty("text")?Wikifier.helpers.evalText(o.text):i.link,i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null):o.isImage&&(i=function(e){var t={source:e,isImage:!0};if("data:"!==e.slice(0,5)&&Story.has(e)){var r=Story.get(e);r.tags.includes("Twine.image")&&(t.source=r.text,t.passage=r.title)}return t}(Wikifier.helpers.evalPassageId(o.source)),o.hasOwnProperty("align")&&(i.align=o.align),o.hasOwnProperty("title")&&(i.title=Wikifier.helpers.evalText(o.title)),o.hasOwnProperty("link")&&(i.link=Wikifier.helpers.evalPassageId(o.link),i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link)),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null)}else if(n[7])if(i=n[7],a.test(i))i=State.getVar(i);else if(/^(?:settings|setup)[.[]/.test(i))try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}else if("null"===i)i=null;else if("undefined"===i)i=undefined;else if("true"===i)i=!0;else if("false"===i)i=!1;else{var s=Number(i);Number.isNaN(s)||(i=s)}else if(n[8]){var u=void 0;switch(n[8]){case"`":u="backquote expression";break;case'"':u="double quoted string";break;case"'":u="single quoted string"}throw new Error("unterminated "+u+" in macro argument string")}r.push(i)}return r}}),Wikifier.Parser.add({name:"link",profiles:["core"],match:"\\[\\[[^[]",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=Wikifier.helpers.evalPassageId(t.link),a=t.hasOwnProperty("text")?Wikifier.helpers.evalText(t.text):r,n=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,i=(Config.debug?new DebugView(e.output,"link-markup","[[link]]",e.source.slice(e.matchStart,e.nextMatch)):e).output;t.forceInternal||!Wikifier.isExternalLink(r)?Wikifier.createInternalLink(i,r,a,n):Wikifier.createExternalLink(i,r,a)}}),Wikifier.Parser.add({name:"urlLink",profiles:["core"],match:Patterns.url,handler:function(e){e.outputText(Wikifier.createExternalLink(e.output,e.matchText),e.matchStart,e.nextMatch)}}),Wikifier.Parser.add({name:"image",profiles:["core"],match:"\\[[<>]?[Ii][Mm][Gg]\\[",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=void 0;Config.debug&&(r=new DebugView(e.output,"image-markup",t.hasOwnProperty("link")?"[img[][link]]":"[img[]]",e.source.slice(e.matchStart,e.nextMatch)),r.modes({block:!0}));var a=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,n=(Config.debug?r:e).output,i=void 0;if(t.hasOwnProperty("link")){var o=Wikifier.helpers.evalPassageId(t.link);n=t.forceInternal||!Wikifier.isExternalLink(o)?Wikifier.createInternalLink(n,o,null,a):Wikifier.createExternalLink(n,o),n.classList.add("link-image")}if(n=jQuery(document.createElement("img")).appendTo(n).get(0),i=Wikifier.helpers.evalPassageId(t.source),"data:"!==i.slice(0,5)&&Story.has(i)){var s=Story.get(i);s.tags.includes("Twine.image")&&(n.setAttribute("data-passage",s.title),i=s.text.trim())}n.src=i,t.hasOwnProperty("title")&&(n.title=Wikifier.helpers.evalText(t.title)),t.hasOwnProperty("align")&&(n.align=t.align)}}),Wikifier.Parser.add({name:"monospacedByBlock",profiles:["block"],match:"^\\{\\{\\{\\n",lookahead:/^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){var r=jQuery(document.createElement("pre"));jQuery(document.createElement("code")).text(t[1]).appendTo(r),r.appendTo(e.output),e.nextMatch=this.lookahead.lastIndex}}}),Wikifier.Parser.add({name:"formatByChar",profiles:["core"],match:"''|//|__|\\^\\^|~~|==|\\{\\{\\{",handler:function(e){switch(e.matchText){case"''":e.subWikify(jQuery(document.createElement("strong")).appendTo(e.output).get(0),"''");break;case"//":e.subWikify(jQuery(document.createElement("em")).appendTo(e.output).get(0),"//");break;case"__":e.subWikify(jQuery(document.createElement("u")).appendTo(e.output).get(0),"__");break;case"^^":e.subWikify(jQuery(document.createElement("sup")).appendTo(e.output).get(0),"\\^\\^");break;case"~~":e.subWikify(jQuery(document.createElement("sub")).appendTo(e.output).get(0),"~~");break;case"==":e.subWikify(jQuery(document.createElement("s")).appendTo(e.output).get(0),"==");break;case"{{{":var t=/\{\{\{((?:.|\n)*?)\}\}\}/gm;t.lastIndex=e.matchStart;var r=t.exec(e.source);r&&r.index===e.matchStart&&(jQuery(document.createElement("code")).text(r[1]).appendTo(e.output),e.nextMatch=t.lastIndex)}}}),Wikifier.Parser.add({name:"customStyle",profiles:["core"],match:"@@",terminator:"@@",blockRegExp:/\s*\n/gm,handler:function(e){var t=Wikifier.helpers.inlineCss(e);this.blockRegExp.lastIndex=e.nextMatch;var r=this.blockRegExp.exec(e.source),a=r&&r.index===e.nextMatch,n=jQuery(document.createElement(a?"div":"span")).appendTo(e.output);0===t.classes.length&&""===t.id&&0===Object.keys(t.styles).length?n.addClass("marked"):(t.classes.forEach(function(e){return n.addClass(e)}),""!==t.id&&n.attr("id",t.id),n.css(t.styles)),a?(e.nextMatch+=r[0].length,e.subWikify(n[0],"\\n?"+this.terminator)):e.subWikify(n[0],this.terminator)}}),Wikifier.Parser.add({name:"verbatimText",profiles:["core"],match:'"{3}|<[Nn][Oo][Ww][Ii][Kk][Ii]>',lookahead:/(?:"{3}((?:.|\n)*?)"{3})|(?:<[Nn][Oo][Ww][Ii][Kk][Ii]>((?:.|\n)*?)<\/[Nn][Oo][Ww][Ii][Kk][Ii]>)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createElement("span")).addClass("verbatim").text(t[1]||t[2]).appendTo(e.output))}}),Wikifier.Parser.add({name:"horizontalRule",profiles:["core"],match:"^----+$\\n?|<[Hh][Rr]\\s*/?>\\n?",handler:function(e){jQuery(document.createElement("hr")).appendTo(e.output)}}),Wikifier.Parser.add({name:"emdash",profiles:["core"],match:"--",handler:function(e){jQuery(document.createTextNode("—")).appendTo(e.output)}}),Wikifier.Parser.add({name:"doubleDollarSign",profiles:["core"],match:"\\${2}",handler:function(e){jQuery(document.createTextNode("$")).appendTo(e.output)}}),Wikifier.Parser.add({name:"nakedVariable",profiles:["core"],match:Patterns.variable+"(?:(?:\\."+Patterns.identifier+")|(?:\\[\\d+\\])|(?:\\[\"(?:\\\\.|[^\"\\\\])+\"\\])|(?:\\['(?:\\\\.|[^'\\\\])+'\\])|(?:\\["+Patterns.variable+"\\]))*",handler:function(e){var t=toStringOrDefault(State.getVar(e.matchText),null);null===t?jQuery(document.createTextNode(e.matchText)).appendTo(e.output):new Wikifier((Config.debug?new DebugView(e.output,"variable",e.matchText,e.matchText):e).output,t)}}),Wikifier.Parser.add({name:"heading",profiles:["block"],match:"^!{1,6}",terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("h"+e.matchLength)).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"table",profiles:["block"],match:"^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",lookahead:/^\|([^\n]*)\|([fhck]?)$/gm,rowTerminator:"\\|(?:[cfhk]?)$\\n?",cellPattern:"(?:\\|([^\\n\\|]*)\\|)|(\\|[cfhk]?$\\n?)",cellTerminator:"(?:\\u0020*)\\|",rowTypes:{c:"caption",f:"tfoot",h:"thead","":"tbody"},handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=jQuery(document.createElement("table")).appendTo(e.output).get(0),r=[],a=null,n=null,i=0,o=void 0;e.nextMatch=e.matchStart;do{this.lookahead.lastIndex=e.nextMatch;var s=this.lookahead.exec(e.source);if(o=s&&s.index===e.nextMatch){var u=s[2];"k"===u?(t.className=s[1],e.nextMatch+=s[0].length+1):(u!==a&&(a=u,n=jQuery(document.createElement(this.rowTypes[u])).appendTo(t)),"c"===a?(n.css("caption-side",0===i?"top":"bottom"),e.nextMatch+=1,e.subWikify(n[0],this.rowTerminator)):this.rowHandler(e,jQuery(document.createElement("tr")).appendTo(n).get(0),r),++i)}}while(o)},rowHandler:function(e,t,r){var a=this,n=new RegExp(this.cellPattern,"gm"),i=0,o=1,s=void 0;do{n.lastIndex=e.nextMatch;var u=n.exec(e.source);if(s=u&&u.index===e.nextMatch){if("~"===u[1]){var l=r[i];l&&(++l.rowCount,l.$element.attr("rowspan",l.rowCount).css("vertical-align","middle")),e.nextMatch=u.index+u[0].length-1}else if(">"===u[1])++o,e.nextMatch=u.index+u[0].length-1;else{if(u[2]){e.nextMatch=u.index+u[0].length;break}!function(){++e.nextMatch;for(var n=Wikifier.helpers.inlineCss(e),s=!1,u=!1,l=void 0;" "===e.source.substr(e.nextMatch,1);)s=!0,++e.nextMatch;"!"===e.source.substr(e.nextMatch,1)?(l=jQuery(document.createElement("th")).appendTo(t),++e.nextMatch):l=jQuery(document.createElement("td")).appendTo(t),r[i]={rowCount:1,$element:l},o>1&&(l.attr("colspan",o),o=1),e.subWikify(l[0],a.cellTerminator)," "===e.matchText.substr(e.matchText.length-2,1)&&(u=!0),n.classes.forEach(function(e){return l.addClass(e)}),""!==n.id&&l.attr("id",n.id),s&&u?n.styles["text-align"]="center":s?n.styles["text-align"]="right":u&&(n.styles["text-align"]="left"),l.css(n.styles),e.nextMatch=e.nextMatch-1}()}++i}}while(s)}}),Wikifier.Parser.add({name:"list",profiles:["block"],match:"^(?:(?:\\*+)|(?:#+))",lookahead:/^(?:(\*+)|(#+))/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.nextMatch=e.matchStart;var t=[e.output],r=null,a=0,n=void 0,i=void 0;do{this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);if(n=o&&o.index===e.nextMatch){var s=o[2]?"ol":"ul",u=o[0].length;if(e.nextMatch+=o[0].length,u>a)for(i=a;i<u;++i)t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0));else if(u<a)for(i=a;i>u;--i)t.pop();else u===a&&s!==r&&(t.pop(),t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0)));a=u,r=s,e.subWikify(jQuery(document.createElement("li")).appendTo(t[t.length-1]).get(0),this.terminator)}}while(n)}}),Wikifier.Parser.add({name:"commentByBlock",profiles:["core"],match:"(?:/(?:%|\\*))|(?:\x3c!--)",lookahead:/(?:\/(%|\*)(?:(?:.|\n)*?)\1\/)|(?:<!--(?:(?:.|\n)*?)-->)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex)}}),Wikifier.Parser.add({name:"lineContinuation",profiles:["core"],match:"\\\\"+Patterns.spaceNoTerminator+"*(?:\\n|$)|(?:^|\\n)"+Patterns.spaceNoTerminator+"*\\\\",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"lineBreak",profiles:["core"],match:"\\n|<[Bb][Rr]\\s*/?>",handler:function(e){e.options.nobr||jQuery(document.createElement("br")).appendTo(e.output)}}),Wikifier.Parser.add({name:"htmlCharacterReference",profiles:["core"],match:"(?:(?:&#?[0-9A-Za-z]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9A-Fa-f]|1D[C-Fc-f][0-9A-Fa-f]|20[D-Fd-f][0-9A-Fa-f]|FE2[0-9A-Fa-f])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[0-9A-Za-z]{2,8};)",handler:function(e){jQuery(document.createDocumentFragment()).append(e.matchText).appendTo(e.output)}}),Wikifier.Parser.add({name:"xmlProlog",profiles:["core"],match:"<\\?[Xx][Mm][Ll][^>]*\\?>",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"verbatimHtml",profiles:["core"],match:"<[Hh][Tt][Mm][Ll]>",lookahead:/<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/gm,handler:e}),Wikifier.Parser.add({name:"verbatimSvgTag",profiles:["core"],match:"<[Ss][Vv][Gg][^>]*>",lookahead:/(<[Ss][Vv][Gg][^>]*>(?:.|\n)*?<\/[Ss][Vv][Gg]>)/gm,handler:e}),Wikifier.Parser.add({name:"verbatimScriptTag",profiles:["core"],match:"<[Ss][Cc][Rr][Ii][Pp][Tt][^>]*>",lookahead:/(<[Ss][Cc][Rr][Ii][Pp][Tt]*>(?:.|\n)*?<\/[Ss][Cc][Rr][Ii][Pp][Tt]>)/gm,handler:e}),Wikifier.Parser.add({name:"styleTag",profiles:["core"],match:"<[Ss][Tt][Yy][Ll][Ee][^>]*>",lookahead:/(<[Ss][Tt][Yy][Ll][Ee]*>)((?:.|\n)*?)(<\/[Ss][Tt][Yy][Ll][Ee]>)/gm,imageMarkup:new RegExp(Patterns.cssImage,"g"),hasImageMarkup:new RegExp(Patterns.cssImage),handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){e.nextMatch=this.lookahead.lastIndex;var r=t[2];this.hasImageMarkup.test(r)&&(this.imageMarkup.lastIndex=0,r=r.replace(this.imageMarkup,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),jQuery(document.createDocumentFragment()).append(t[1]+r+t[3]).appendTo(e.output)}}}),Wikifier.Parser.add({name:"htmlTag",profiles:["core"],match:"<\\w+(?:\\s+[^\\u0000-\\u001F\\u007F-\\u009F\\s\"'>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*?\"|'[^']*?'|[^\\s\"'=<>`]+))?)*\\s*\\/?>",tagRegExp:/^<(\w+)/,mediaElements:["audio","img","source","track","video"],nobrElements:["audio","colgroup","datalist","dl","figure","ol","optgroup","picture","select","table","tbody","tfoot","thead","tr","ul","video"],voidElements:["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],handler:function(e){var t=this.tagRegExp.exec(e.matchText),r=t&&t[1],a=r&&r.toLowerCase();if(a){var n=this.voidElements.includes(a)||e.matchText.endsWith("/>"),i=this.nobrElements.includes(a),o=void 0,s=void 0;if(!n){o="<\\/"+a+"\\s*>";var u=new RegExp(o,"gim");u.lastIndex=e.matchStart,s=u.exec(e.source)}if(!n&&!s)return throwError(e.output,"cannot find a closing tag for HTML <"+r+">",e.matchText+"…");var l=e.output,c=document.createElement(e.output.tagName),d=void 0;for(c.innerHTML=e.matchText;c.firstChild;)c=c.firstChild;try{this.processAttributeDirectives(c)}catch(t){return throwError(e.output,"<"+a+">: "+t.message,e.matchText+"…")}c.hasAttribute("data-passage")&&(this.processDataAttributes(c,a),Config.debug&&(d=new DebugView(e.output,"html-"+a,a,e.matchText),d.modes({block:"img"===a,nonvoid:s}),l=d.output)),s&&(e.subWikify(c,o,{ignoreTerminatorCase:!0,nobr:i}),d&&jQuery(c).find(".debug.block").length>0&&d.modes({block:!0})),l.appendChild("track"===a?c.cloneNode(!0):c)}},processAttributeDirectives:function(e){[].concat(_toConsumableArray(e.attributes)).forEach(function(t){var r=t.name,a=t.value,n="@"===r[0];if(n||r.startsWith("sc-eval:")){var i=r.slice(n?1:8),o=void 0;try{o=Scripting.evalTwineScript(a)}catch(e){throw new Error('bad evaluation from attribute directive "'+r+'": '+e.message)}try{e.setAttribute(i,o),e.removeAttribute(r)}catch(e){throw new Error('cannot transform attribute directive "'+r+'" into attribute "'+i+'"')}}})},processDataAttributes:function(e,t){var r=e.getAttribute("data-passage");if(null!=r){var a=Wikifier.helpers.evalPassageId(r);if(a!==r&&(r=a,e.setAttribute("data-passage",a)),""!==r)if(this.mediaElements.includes(t)){if("data:"!==r.slice(0,5)&&Story.has(r)){r=Story.get(r);var n=void 0,i=void 0;switch(t){case"audio":case"video":i="Twine."+t;break;case"img":i="Twine.image";break;case"track":i="Twine.vtt";break;case"source":var o=$(e).closest("audio,picture,video");o.length&&(n=o.get(0).tagName.toLowerCase(),i="Twine."+("picture"===n?"image":n))}r.tags.includes(i)&&(e["picture"===n?"srcset":"src"]=r.text.trim())}}else{var s=e.getAttribute("data-setter"),u=void 0;null!=s&&""!==(s=String(s).trim())&&(u=Wikifier.helpers.createShadowSetterCallback(Scripting.parse(s))),Story.has(r)?(e.classList.add("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&e.classList.add("link-visited")):e.classList.add("link-broken"),jQuery(e).ariaClick({one:!0},function(){"function"==typeof u&&u.call(this),Engine.play(r)})}}}})}();var Macro=function(){function e(t,r,n){if(Array.isArray(t))return void t.forEach(function(t){return e(t,r,n)});if(!h.test(t))throw new Error('invalid macro name "'+t+'"');if(a(t))throw new Error("cannot clobber existing macro <<"+t+">>");if(u(t))throw new Error("cannot clobber child tag <<"+t+">> of parent macro"+(1===d[t].length?"":"s")+" <<"+d[t].join(">>, <<")+">>");try{if("object"===(void 0===r?"undefined":_typeof(r)))c[t]=n?clone(r):r;else{if(!a(r))throw new Error("cannot create alias of nonexistent macro <<"+r+">>");c[t]=n?clone(c[r]):c[r]}Object.defineProperty(c,t,{writable:!1}),c[t]._MACRO_API=!0}catch(e){throw"TypeError"===e.name?new Error("cannot clobber protected macro <<"+t+">>"):new Error("unknown error when attempting to add macro <<"+t+">>: ["+e.name+"] "+e.message)}if(c[t].hasOwnProperty("tags"))if(null==c[t].tags)o(t);else{if(!Array.isArray(c[t].tags))throw new Error('bad value for "tags" property of macro <<'+t+">>");o(t,c[t].tags)}}function t(e){if(Array.isArray(e))return void e.forEach(function(e){return t(e)});if(a(e)){c[e].hasOwnProperty("tags")&&s(e);try{Object.defineProperty(c,e,{writable:!0}),delete c[e]}catch(t){throw new Error("unknown error removing macro <<"+e+">>: "+t.message)}}else if(u(e))throw new Error("cannot remove child tag <<"+e+">> of parent macro <<"+d[e]+">>")}function r(){return 0===Object.keys(c).length}function a(e){return c.hasOwnProperty(e)}function n(e){var t=null;return a(e)&&"function"==typeof c[e].handler?t=c[e]:macros.hasOwnProperty(e)&&"function"==typeof macros[e].handler&&(t=macros[e]),t}function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"init";Object.keys(c).forEach(function(t){"function"==typeof c[t][e]&&c[t][e](t)}),Object.keys(macros).forEach(function(t){"function"==typeof macros[t][e]&¯os[t][e](t)})}function o(e,t){if(!e)throw new Error("no parent specified");for(var r=["/"+e,"end"+e],n=[].concat(r,Array.isArray(t)?t:[]),i=0;i<n.length;++i){var o=n[i];if(a(o))throw new Error("cannot register tag for an existing macro");u(o)?d[o].includes(e)||(d[o].push(e),d[o].sort()):d[o]=[e]}}function s(e){if(!e)throw new Error("no parent specified");Object.keys(d).forEach(function(t){var r=d[t].indexOf(e);-1!==r&&(1===d[t].length?delete d[t]:d[t].splice(r,1))})}function u(e){return d.hasOwnProperty(e)}function l(e){return u(e)?d[e]:null}var c={},d={},h=new RegExp("^(?:"+Patterns.macroName+")$");return Object.freeze(Object.defineProperties({},{add:{value:e},delete:{value:t},isEmpty:{value:r},has:{value:a},get:{value:n},init:{value:i},tags:{value:Object.freeze(Object.defineProperties({},{register:{value:o},unregister:{value:s},has:{value:u},get:{value:l}}))},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),MacroContext=function(){return function(){function e(t){_classCallCheck(this,e);var r=Object.assign({parent:null,macro:null,name:"",args:null,payload:null,parser:null,source:""},t);if(null===r.macro||""===r.name||null===r.parser)throw new TypeError("context object missing required properties");Object.defineProperties(this,{self:{value:r.macro},name:{value:r.name},args:{value:r.args},payload:{value:r.payload},source:{value:r.source},parent:{value:r.parent},parser:{value:r.parser},_output:{value:r.parser.output},_shadows:{writable:!0,value:null},_debugView:{writable:!0,value:null},_debugViewEnabled:{writable:!0,value:Config.debug}})}return _createClass(e,[{key:"contextHas",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return!0;return!1}},{key:"contextSelect",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return t;return null}},{key:"contextSelectAll",value:function(e){for(var t=[],r=this;null!==(r=r.parent);)e(r)&&t.push(r);return t}},{key:"addShadow",value:function(){var e=this;this._shadows||(this._shadows=new Set);for(var t=new RegExp("^"+Patterns.variable+"$"),r=arguments.length,a=Array(r),n=0;n<r;n++)a[n]=arguments[n];a.flatten().forEach(function(r){if("string"!=typeof r)throw new TypeError("variable name must be a string; type: "+(void 0===r?"undefined":_typeof(r)));if(!t.test(r))throw new Error('invalid variable name "'+r+'"');e._shadows.add(r)})}},{key:"createShadowWrapper",value:function(e,t,r){var a=this,n=void 0;return"function"==typeof e&&(n={},this.shadowView.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t]})),function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];if("function"==typeof r&&r.apply(this,o),"function"==typeof e){var u=Object.keys(n),l=u.length>0?{}:null,c=Wikifier.Parser.get("macro"),d=void 0;try{u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;r.hasOwnProperty(t)&&(l[t]=r[t]),r[t]=n[e]}),d=c.context,c.context=a,e.apply(this,o)}finally{d!==undefined&&(c.context=d),u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t],l.hasOwnProperty(t)?r[t]=l[t]:delete r[t]})}}"function"==typeof t&&t.apply(this,o)}}},{key:"createDebugView",value:function(e,t){return this._debugView=new DebugView(this._output,"macro",e||this.name,t||this.source),null!==this.payload&&this.payload.length>0&&this._debugView.modes({nonvoid:!0}),this._debugViewEnabled=!0,this._debugView}},{key:"removeDebugView",value:function(){null!==this._debugView&&(this._debugView.remove(),this._debugView=null),this._debugViewEnabled=!1}},{key:"error",value:function(e,t){return throwError(this._output,"<<"+this.name+">>: "+e,t||this.source)}},{key:"output",get:function(){return this._debugViewEnabled?this.debugView.output:this._output}},{key:"shadows",get:function(){return[].concat(_toConsumableArray(this._shadows))}},{key:"shadowView",get:function(){var e=new Set;return this.contextSelectAll(function(e){return e._shadows}).forEach(function(t){return t._shadows.forEach(function(t){return e.add(t)})}),[].concat(_toConsumableArray(e))}},{key:"debugView",get:function(){return this._debugViewEnabled?null!==this._debugView?this._debugView:this.createDebugView():null}}]),e}()}();!function(){if(Macro.add("capture",{skipArgs:!0,tags:null,handler:function(){if(0===this.args.raw.length)return this.error("no story/temporary variable list specified");var e={};try{for(var t=new RegExp("("+Patterns.variable+")","g"),r=void 0;null!==(r=t.exec(this.args.raw));){var a=r[1],n=a.slice(1),i="$"===a[0]?State.variables:State.temporary;i.hasOwnProperty(n)&&(e[n]=i[n]),this.addShadow(a)}new Wikifier(this.output,this.payload[0].contents)}finally{this.shadows.forEach(function(t){var r=t.slice(1),a="$"===t[0]?State.variables:State.temporary;e.hasOwnProperty(r)?a[r]=e[r]:delete a[r]})}}}),Macro.add("set",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("unset",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story/temporary variable list specified");for(var e=new RegExp("State\\.(variables|temporary)\\.("+Patterns.identifier+")","g"),t=void 0;null!==(t=e.exec(this.args.full));){var r=State[t[1]],a=t[2];r.hasOwnProperty(a)&&delete r[a]}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("remember",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(var e=storage.get("remember")||{},t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0;null!==(r=t.exec(this.args.full));){var a=r[1];e[a]=State.variables[a]}if(!storage.set("remember",e))return this.error("unknown error, cannot remember: "+this.args.raw);Config.debug&&this.debugView.modes({hidden:!0})},init:function(){var e=storage.get("remember");e&&Object.keys(e).forEach(function(t){return State.variables[t]=e[t]})}}),Macro.add("forget",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story variable list specified");for(var e=storage.get("remember"),t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0,a=!1;null!==(r=t.exec(this.args.full));){var n=r[1];State.variables.hasOwnProperty(n)&&delete State.variables[n],e&&e.hasOwnProperty(n)&&(a=!0,delete e[n])}if(a&&!storage.set("remember",e))return this.error("unknown error, cannot update remember store");Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("run","set"),Macro.add("script",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();try{Scripting.evalJavaScript(this.payload[0].contents,e),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e),this.source+this.payload[0].contents+"<</"+this.name+">>")}e.hasChildNodes()&&this.output.appendChild(e)}}),Macro.add("include",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');Config.debug&&this.debugView.modes({block:!0}),e=Story.get(e);var t=void 0;t=this.args[1]?jQuery(document.createElement(this.args[1])).addClass(e.domId+" macro-"+this.name).attr("data-passage",e.title).appendTo(this.output):jQuery(this.output),t.wiki(e.processText())}}),Macro.add("nobr",{skipArgs:!0,tags:null,handler:function(){new Wikifier(this.output,this.payload[0].contents.replace(/^\n+|\n+$/g,"").replace(/\n+/g," "))}}),Macro.add(["print","=","-"],{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{var e=toStringOrDefault(Scripting.evalJavaScript(this.args.full),null);null!==e&&new Wikifier(this.output,"-"===this.name?Util.escape(e):e)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}),Macro.add("silently",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();if(new Wikifier(e,this.payload[0].contents.trim()),Config.debug)this.debugView.modes({hidden:!0}),this.output.appendChild(e);else{var t=[].concat(_toConsumableArray(e.querySelectorAll(".error"))).map(function(e){return e.textContent});if(t.length>0)return this.error("error"+(1===t.length?"":"s")+" within contents ("+t.join("; ")+")",this.source+this.payload[0].contents+"<</"+this.name+">>")}}}),Macro.add("display","include"),Macro.add("if",{skipArgs:!0,tags:["elseif","else"],handler:function(){var e=void 0;try{var t=this.payload.length;for(e=0;e<t;++e)switch(this.payload[e].name){case"else":if(this.payload[e].args.raw.length>0)return/^\s*if\b/i.test(this.payload[e].args.raw)?this.error('whitespace is not allowed between the "else" and "if" in <<elseif>> clause'+(e>0?" (#"+e+")":"")):this.error("<<else>> does not accept a conditional expression (perhaps you meant to use <<elseif>>), invalid: "+this.payload[e].args.raw);if(e+1!==t)return this.error("<<else>> must be the final clause");break;default:if(0===this.payload[e].args.full.length)return this.error("no conditional expression specified for <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":""));if(Config.macros.ifAssignmentError&&/[^!=&^|<>*\/%+-]=[^=]/.test(this.payload[e].args.full))return this.error("assignment operator found within <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":"")+" (perhaps you meant to use an equality operator: ==, ===, eq, is), invalid: "+this.payload[e].args.raw)}var r=Scripting.evalJavaScript,a=!1;for(e=0;e<t;++e){if(Config.debug&&this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1}),"else"===this.payload[e].name||r(this.payload[e].args.full)){a=!0,new Wikifier(this.output,this.payload[e].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++e;e<t;++e)this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1,hidden:!0,invalid:!0});this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!a,invalid:!a})}}catch(t){return this.error("bad conditional expression in <<"+(0===e?"if":"elseif")+">> clause"+(e>0?" (#"+e+")":"")+": "+("object"===(void 0===t?"undefined":_typeof(t))?t.message:t))}}}),Macro.add("switch",{skipArg0:!0,tags:["case","default"],handler:function(){if(0===this.args.full.length)return this.error("no expression specified");var e=this.payload.length;if(1===e)return this.error("no cases specified");var t=void 0;for(t=1;t<e;++t)switch(this.payload[t].name){case"default":if(this.payload[t].args.length>0)return this.error("<<default>> does not accept values, invalid: "+this.payload[t].args.raw);if(t+1!==e)return this.error("<<default>> must be the final case");break;default:if(0===this.payload[t].args.length)return this.error("no value(s) specified for <<"+this.payload[t].name+">> (#"+t+")")}var r=void 0;try{r=Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}var a=this.debugView,n=!1;for(Config.debug&&a.modes({nonvoid:!1,hidden:!0}),t=1;t<e;++t){if(Config.debug&&this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1}),"default"===this.payload[t].name||this.payload[t].args.some(function(e){return e===r})){n=!0,new Wikifier(this.output,this.payload[t].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++t;t<e;++t)this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1,hidden:!0,invalid:!0});a.modes({nonvoid:!1,hidden:!0,invalid:!n}),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0,invalid:!n})}}}),Macro.add("for",{skipArgs:!0,tags:null,_hasRangeRe:new RegExp("^\\S.*?\\s+range\\s+\\S.*?$"),_rangeRe:new RegExp("^(?:State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s*,\\s*)?State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s+range\\s+(\\S.*?)$"),_3PartRe:/^([^;]*?)\s*;\s*([^;]*?)\s*;\s*([^;]*?)$/,handler:function(){var e=this.args.full.trim(),t=this.payload[0].contents.replace(/\n$/,"");if(0===e.length)this.self._handleFor.call(this,t,null,!0,null);else if(this.self._hasRangeRe.test(e)){var r=e.match(this.self._rangeRe);if(null===r)return this.error("invalid range form syntax, format: [index ,] value range collection");this.self._handleForRange.call(this,t,{type:r[1],name:r[2]},{type:r[3],name:r[4]},r[5])}else{var a=void 0,n=void 0,i=void 0;if(-1===e.indexOf(";")){ if(/^\S+\s+in\s+\S+/i.test(e))return this.error("invalid syntax, for…in is not supported; see: for…range");if(/^\S+\s+of\s+\S+/i.test(e))return this.error("invalid syntax, for…of is not supported; see: for…range");n=e}else{var o=e.match(this.self._3PartRe);if(null===o)return this.error("invalid 3-part conditional form syntax, format: [init] ; [condition] ; [post]");a=o[1],n=o[2].trim(),i=o[3],0===n.length&&(n=!0)}this.self._handleFor.call(this,t,a,n,i)}},_handleFor:function(e,t,r,a){var n=Scripting.evalJavaScript,i=!0,o=Config.macros.maxLoopIterations;Config.debug&&this.debugView.modes({block:!0});try{if(TempState.break=null,t)try{n(t)}catch(e){return this.error("bad init expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(;n(r);){if(--o<0)return this.error("exceeded configured maximum loop iterations ("+Config.macros.maxLoopIterations+")");if(new Wikifier(this.output,i?e.replace(/^\n/,""):e),i&&(i=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}if(a)try{n(a)}catch(e){return this.error("bad post expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}catch(e){return this.error("bad conditional expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}finally{TempState.break=null}},_handleForRange:function(e,t,r,a){var n=!0,i=void 0;try{i=this.self._toRangeList(a)}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});try{TempState.break=null;for(var o=0;o<i.length;++o)if(t.name&&(State[t.type][t.name]=i[o][0]),State[r.type][r.name]=i[o][1],new Wikifier(this.output,n?e.replace(/^\n/,""):e),n&&(n=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}}catch(e){return this.error("object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}finally{TempState.break=null}},_toRangeList:function(e){var t=Scripting.evalJavaScript,r=void 0;try{r=t("{"===e[0]?"("+e+")":e)}catch(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("bad range expression: "+e);throw e.message="bad range expression: "+e.message,e}var a=void 0;switch(void 0===r?"undefined":_typeof(r)){case"string":a=[];for(var n=0;n<r.length;){var i=Util.charAndPosAt(r,n);a.push([n,i.char]),n=1+i.end}break;case"object":if(Array.isArray(r))a=r.map(function(e,t){return[t,e]});else if(r instanceof Set)a=[].concat(_toConsumableArray(r)).map(function(e,t){return[t,e]});else if(r instanceof Map)a=[].concat(_toConsumableArray(r.entries()));else{if("Object"!==Util.toStringTag(r))throw new Error("unsupported range expression type: "+Util.toStringTag(r));a=Object.keys(r).map(function(e){return[e,r[e]]})}break;default:throw new Error("unsupported range expression type: "+(void 0===r?"undefined":_typeof(r)))}return a}}),Macro.add(["break","continue"],{skipArgs:!0,handler:function(){if(!this.contextHas(function(e){return"for"===e.name}))return this.error("must only be used in conjunction with its parent macro <<for>>");TempState.break="continue"===this.name?1:2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add(["button","link"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no "+("button"===this.name?"button":"link")+" text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("button"===this.name?"button":"a")),r=void 0;if("object"===_typeof(this.args[0]))if(this.args[0].isImage){var a=jQuery(document.createElement("img")).attr("src",this.args[0].source).appendTo(t);this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(r=this.args[0].link),r=this.args[0].link}else t.append(document.createTextNode(this.args[0].text)),r=this.args[0].link;else t.wikiWithOptions({profile:"core"},this.args[0]),r=this.args.length>1?this.args[1]:undefined;null!=r?(t.attr("data-passage",r),Story.has(r)?(t.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&t.addClass("link-visited")):t.addClass("link-broken")):t.addClass("link-internal"),t.addClass("macro-"+this.name).ariaClick({namespace:".macros",one:null!=r},this.createShadowWrapper(""!==this.payload[0].contents?function(){return Wikifier.wikifyEval(e.payload[0].contents.trim())}:null,null!=r?function(){return Engine.play(r)}:null)).appendTo(this.output)}}),Macro.add("checkbox",{handler:function(){if(this.args.length<3){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("unchecked value"),this.args.length<3&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=this.args[2],i=document.createElement("input");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"checkbox",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.checked?n:a)}).appendTo(this.output),this.args.length>3&&"checked"===this.args[3]?(i.checked=!0,State.setVar(t,n)):State.setVar(t,a)}}),Macro.add(["linkappend","linkprepend","linkreplace"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no link text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("a")),r=jQuery(document.createElement("span")),a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]);t.wikiWithOptions({profile:"core"},this.args[0]).addClass("link-internal macro-"+this.name).ariaClick({namespace:".macros",one:!0},this.createShadowWrapper(function(){if("linkreplace"===e.name?t.remove():t.wrap('<span class="macro-'+e.name+'"></span>').replaceWith(function(){return t.html()}),""!==e.payload[0].contents){var n=document.createDocumentFragment();new Wikifier(n,e.payload[0].contents),r.append(n)}a&&setTimeout(function(){return r.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)})).appendTo(this.output),r.addClass("macro-"+this.name+"-insert"),a&&r.addClass("macro-"+this.name+"-in"),"linkprepend"===this.name?r.insertBefore(t):r.insertAfter(t)}}),Macro.add("listbox",{tags:["option"],handler:function(){if(0===this.args.length)return this.error("no variable name specified");if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var e=this.args[0].trim();if("$"!==e[0]&&"_"!==e[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var t=Util.slugify(e),r=this.payload.length;if(1===r)return this.error("no options specified");var a=this.args.length>1&&"autoselect"===this.args[1],n=-1,i=void 0;for(i=1;i<r;++i){if(this.payload[i].args.length<2){var o=[];return this.payload[i].args.length<1&&o.push("label"),this.payload[i].args.length<2&&o.push("value"),this.error("no "+o.join(" or ")+" specified for <<"+this.payload[i].name+">> (#"+i+")")}if("string"!=typeof this.payload[i].args[0])return this.error("label must be a string for <<"+this.payload[i].name+">> (#"+i+")");if(this.payload[i].args.length>2&&"selected"===this.payload[i].args[2]){if(a)return this.error("cannot specify both the autoselect and selected keywords");if(-1!==n)return this.error("multiple selected keywords specified for <<"+this.payload[i].name+">> (#"+(n+1)+" & #"+i+")");n=i-1}}if(-1===n)if(a){var s=Util.sameValueZero,u=State.getVar(e),l=this.payload.slice(1).findIndex(function(e){return s(e.args[1],u)});n=-1===l?0:l}else n=0;var c=this.payload.slice(1).map(function(e){return e.args[1]}),d=jQuery(document.createElement("select"));for(i=1;i<r;++i)jQuery(document.createElement("option")).val(i-1).text(this.payload[i].args[0]).appendTo(d);d.attr({id:this.name+"-"+t,name:this.name+"-"+t,tabindex:0}).addClass("macro-"+this.name).val(n).on("change",function(){State.setVar(e,c[Number(this.value)])}).appendTo(this.output),State.setVar(e,c[n])}}),Macro.add("radiobutton",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=document.createElement("input");TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(r)||(TempState[this.name][r]=0),jQuery(n).attr({id:this.name+"-"+r+"-"+TempState[this.name][r]++,name:this.name+"-"+r,type:"radio",tabindex:0}).addClass("macro-"+this.name).on("change",function(){this.checked&&State.setVar(t,a)}).appendTo(this.output),this.args.length>2&&"checked"===this.args[2]&&(n.checked=!0,State.setVar(t,a))}}),Macro.add("textarea",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n="autofocus"===this.args[2],i=document.createElement("textarea");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,rows:4,tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).appendTo(this.output),State.setVar(t,a),i.textContent=a,n&&(i.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+i.id]=function(e){delete postdisplay[e],setTimeout(function(){return i.focus()},Engine.minDomActionDelay)})}}),Macro.add("textbox",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n=document.createElement("input"),i=!1,o=void 0;this.args.length>3?(o=this.args[2],i="autofocus"===this.args[3]):this.args.length>2&&("autofocus"===this.args[2]?i=!0:o=this.args[2]),"object"===(void 0===o?"undefined":_typeof(o))&&(o=o.link),jQuery(n).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"text",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).on("keypress",function(e){13===e.which&&(e.preventDefault(),State.setVar(t,this.value),null!=o&&Engine.play(o))}).appendTo(this.output),State.setVar(t,a),n.value=a,i&&(n.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+n.id]=function(e){delete postdisplay[e],setTimeout(function(){return n.focus()},Engine.minDomActionDelay)})}}),Macro.add("click","link"),Macro.add("actions",{handler:function(){for(var e=jQuery(document.createElement("ul")).addClass(this.name).appendTo(this.output),t=0;t<this.args.length;++t){var r=void 0,a=void 0,n=void 0,i=void 0;"object"===_typeof(this.args[t])?this.args[t].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[t].source),this.args[t].hasOwnProperty("passage")&&n.attr("data-passage",this.args[t].passage),this.args[t].hasOwnProperty("title")&&n.attr("title",this.args[t].title),this.args[t].hasOwnProperty("align")&&n.attr("align",this.args[t].align),r=this.args[t].link,i=this.args[t].setFn):(a=this.args[t].text,r=this.args[t].link,i=this.args[t].setFn):a=r=this.args[t],State.variables.hasOwnProperty("#actions")&&State.variables["#actions"].hasOwnProperty(r)&&State.variables["#actions"][r]||jQuery(Wikifier.createInternalLink(jQuery(document.createElement("li")).appendTo(e),r,null,function(e,t){return function(){State.variables.hasOwnProperty("#actions")||(State.variables["#actions"]={}),State.variables["#actions"][e]=!0,"function"==typeof t&&t()}}(r,i))).addClass("macro-"+this.name).append(n||document.createTextNode(a))}}}),Macro.add(["back","return"],{handler:function(){if(this.args.length>1)return this.error("too many arguments specified, check the documentation for details");var e=-1,t=void 0,r=void 0,a=void 0;if(1===this.args.length&&("object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(t=this.args[0].link)):1===this.args[0].count?t=this.args[0].link:(r=this.args[0].text,t=this.args[0].link):1===this.args.length&&(r=this.args[0])),null==t){for(var n=State.length-2;n>=0;--n)if(State.history[n].title!==State.passage){e=n,t=State.history[n].title;break}if(null==t&&"return"===this.name)for(var i=State.expired.length-1;i>=0;--i)if(State.expired[i]!==State.passage){t=State.expired[i];break}}else{if(!Story.has(t))return this.error('passage "'+t+'" does not exist');if("back"===this.name){for(var o=State.length-2;o>=0;--o)if(State.history[o].title===t){e=o;break}if(-1===e)return this.error('cannot find passage "'+t+'" in the current story history')}}if(null==t)return this.error("cannot find passage");var s=void 0;s="back"!==this.name||-1!==e?jQuery(document.createElement("a")).addClass("link-internal").ariaClick({one:!0},"return"===this.name?function(){return Engine.play(t)}:function(){return Engine.goTo(e)}):jQuery(document.createElement("span")).addClass("link-disabled"),s.addClass("macro-"+this.name).append(a||document.createTextNode(r||L10n.get("macro"+this.name.toUpperFirst()+"Text"))).appendTo(this.output)}}),Macro.add("choice",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=State.passage,t=void 0,r=void 0,a=void 0,n=void 0;if(1===this.args.length?"object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),t=this.args[0].link,n=this.args[0].setFn):(r=this.args[0].text,t=this.args[0].link,n=this.args[0].setFn):r=t=this.args[0]:(t=this.args[0],r=this.args[1]),State.variables.hasOwnProperty("#choice")&&State.variables["#choice"].hasOwnProperty(e)&&State.variables["#choice"][e])return void jQuery(document.createElement("span")).addClass("link-disabled macro-"+this.name).attr("tabindex",-1).append(a||document.createTextNode(r)).appendTo(this.output);jQuery(Wikifier.createInternalLink(this.output,t,null,function(){State.variables.hasOwnProperty("#choice")||(State.variables["#choice"]={}),State.variables["#choice"][e]=!0,"function"==typeof n&&n()})).addClass("macro-"+this.name).append(a||document.createTextNode(r))}}),Macro.add(["addclass","toggleclass"],{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("selector"),this.args.length<2&&e.push("class names"),this.error("no "+e.join(" or ")+" specified")}var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');switch(this.name){case"addclass":t.addClass(this.args[1].trim());break;case"toggleclass":t.toggleClass(this.args[1].trim())}}}),Macro.add("removeclass",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');this.args.length>1?e.removeClass(this.args[1].trim()):e.removeClass()}}),Macro.add("copy",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');jQuery(this.output).append(e.html())}}),Macro.add(["append","prepend","replace"],{tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no selector specified");var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');if(""!==this.payload[0].contents){var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=void 0;switch(r?(a=jQuery(document.createElement("span")),a.addClass("macro-"+this.name+"-insert macro-"+this.name+"-in"),setTimeout(function(){return a.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)):a=jQuery(document.createDocumentFragment()),a.wiki(this.payload[0].contents),this.name){case"replace":t.empty();case"append":t.append(a);break;case"prepend":t.prepend(a)}}else"replace"===this.name&&t.empty()}}),Macro.add("remove",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');e.remove()}}),Has.audio){var e=Object.freeze([":not",":all",":looped",":muted",":paused",":playing"]);Macro.add("audio",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track or group IDs"),this.args.length<2&&e.push("actions"),this.error("no "+e.join(" or ")+" specified")}var t=Macro.get("cacheaudio").tracks,r=[];try{var a=function e(r){var a=r.id,o=void 0;switch(a){case":all":o=n;break;case":looped":o=n.filter(function(e){return t[e].isLooped()});break;case":muted":o=n.filter(function(e){return t[e].isMuted()});break;case":paused":o=n.filter(function(e){return t[e].isPaused()});break;case":playing":o=n.filter(function(e){return t[e].isPlaying()});break;default:o=":"===a[0]?i[a]:[a]}if(r.hasOwnProperty("not")){var s=r.not.map(function(t){return e(t)}).flatten();o=o.filter(function(e){return!s.includes(e)})}return o},n=Object.freeze(Object.keys(t)),i=Macro.get("cacheaudio").groups;this.self.parseIds(String(this.args[0]).trim()).forEach(function(e){r.push.apply(r,_toConsumableArray(a(e)))}),r.forEach(function(e){if(!t.hasOwnProperty(e))throw new Error('track "'+e+'" does not exist')})}catch(e){return this.error(e.message)}for(var o=this.args.slice(1),s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=void 0,f=5,p=void 0,g=void 0;o.length>0;){var m=o.shift();switch(m){case"play":case"pause":case"stop":s=m;break;case"fadein":s="fade",h=1;break;case"fadeout":s="fade",h=0;break;case"fadeto":if(0===o.length)return this.error("fadeto missing required level value");if(s="fade",g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeto: "+g);break;case"fadeoverto":if(o.length<2){var v=[];return o.length<1&&v.push("seconds"),o.length<2&&v.push("level"),this.error("fadeoverto missing required "+v.join(" and ")+" value"+(v.length>1?"s":""))}if(s="fade",g=o.shift(),f=Number.parseFloat(g),Number.isNaN(f)||!Number.isFinite(f))return this.error("cannot parse fadeoverto: "+g);if(g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+g);break;case"volume":if(0===o.length)return this.error("volume missing required level value");if(g=o.shift(),u=Number.parseFloat(g),Number.isNaN(u)||!Number.isFinite(u))return this.error("cannot parse volume: "+g);break;case"mute":case"unmute":l="mute"===m;break;case"time":if(0===o.length)return this.error("time missing required seconds value");if(g=o.shift(),c=Number.parseFloat(g),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse time: "+g);break;case"loop":case"unloop":d="loop"===m;break;case"goto":if(0===o.length)return this.error("goto missing required passage title");if(g=o.shift(),p="object"===(void 0===g?"undefined":_typeof(g))?g.link:g,!Story.has(p))return this.error('passage "'+p+'" does not exist');break;default:return this.error("unknown action: "+m)}}try{r.forEach(function(e){var r=t[e];switch(null!=u&&(r.volume=u),null!=c&&(r.time=c),null!=l&&(r.mute=l),null!=d&&(r.loop=d),null!=p&&r.one("end",function(){return Engine.play(p)}),s){case"play":r.play();break;case"pause":r.pause();break;case"stop":r.stop();break;case"fade":r.fadeWithDuration(f,h)}}),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing audio action: "+e.message)}},parseIds:function(e){for(var t=[],r=/:?[^\s:()]+/g,a=void 0;null!==(a=r.exec(e));){var n=a[0];if(":not"===n){if(0===t.length)throw new Error('invalid negation: no group ID preceded ":not()"');var i=t[t.length-1];if(":"!==i.id[0])throw new Error('invalid negation of track "'+i.id+'": only groups may be negated with ":not()"');var o=function(e,t){var r=/\S/g,a=/[()]/g,n=void 0;if(r.lastIndex=t,null===(n=r.exec(e))||"("!==n[0])throw new Error('invalid ":not()" syntax: missing parentheticals');a.lastIndex=r.lastIndex;for(var i=r.lastIndex,o={str:"",nextMatch:-1},s=1;null!==(n=a.exec(e));)if("("===n[0]?++s:--s,s<1){o.nextMatch=a.lastIndex,o.str=e.slice(i,o.nextMatch-1);break}return o}(e,r.lastIndex);if(-1===o.nextMatch)throw new Error('unknown error parsing ":not()"');r.lastIndex=o.nextMatch,i.not=this.parseIds(o.str)}else t.push({id:n})}return t}}),Macro.add("cacheaudio",{tracks:{},groups:{},handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track ID"),this.args.length<2&&e.push("sources"),this.error("no "+e.join(" or ")+" specified")}var t=String(this.args[0]).trim();if(/^:|\s/.test(t))return this.error('invalid track ID "'+t+'": track IDs may not start with a colon or contain whitespace');var r=/^format:\s*([\w-]+)\s*;\s*(\S.*)$/i,a=void 0;try{a=SimpleAudio.create(this.args.slice(1).map(function(e){if("data:"!==e.slice(0,5)&&Story.has(e)){var t=Story.get(e);if(t.tags.includes("Twine.audio"))return t.text.trim()}var a=r.exec(e);return null===a?e:{format:a[1],src:a[2]}}))}catch(e){return this.error('error during track initialization for "'+t+'": '+e.message)}if(Config.debug&&!a.hasSource())return this.error('no supported audio sources found for "'+t+'"');var n=this.self.tracks;n.hasOwnProperty(t)&&n[t].destroy(),n[t]=a,Config.debug&&this.createDebugView()}}),Macro.add("createaudiogroup",{tags:["track"],handler:function(){if(0===this.args.length)return this.error("no group ID specified");var t=String(this.args[0]).trim();if(/^[^:]|\s/.test(t))return this.error('invalid group ID "'+t+'": group IDs must start with a colon and may not contain whitespace');if(e.includes(t))return this.error('cannot clobber special group ID "'+t+'"');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var r=Macro.get("cacheaudio").tracks,a=[],n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<1)return this.error("no track ID specified");var o=String(this.payload[n].args[0]).trim();if(!r.hasOwnProperty(o))return this.error('track "'+o+'" does not exist');a.push(o),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var s=Macro.get("cacheaudio").groups;s.hasOwnProperty(t)&&delete s[t],s[t]=a,this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("createplaylist",{tags:["track"],lists:{},handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("playlist");if(null!==e.from&&"createplaylist"!==e.from)return this.error("a playlist has already been defined with <<setplaylist>>");var t=Macro.get("cacheaudio").tracks,r=String(this.args[0]).trim();if(/^:|\s/.test(r))return this.error('invalid list ID "'+r+'": list IDs may not start with a colon or contain whitespace');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var a=SimpleAudio.createList(),n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<2){var o=[];return this.payload[n].args.length<1&&o.push("track ID"),this.payload[n].args.length<2&&o.push("actions"),this.error("no "+o.join(" or ")+" specified")}var s=String(this.payload[n].args[0]).trim();if(!t.hasOwnProperty(s))return this.error('track "'+s+'" does not exist');for(var u=this.payload[n].args.slice(1),l=!1,c=void 0;u.length>0;){var d=u.shift(),h=void 0;switch(d){case"copy":l=!0;break;case"rate":u.length>0&&u.shift();break;case"volume":if(0===u.length)return this.error("volume missing required level value");if(h=u.shift(),c=Number.parseFloat(h),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse volume: "+h);break;default:return this.error("unknown action: "+d)}}var f=t[s];a.add({copy:l,track:f,volume:null!=c?c:f.volume}),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var p=this.self.lists;p.hasOwnProperty(r)&&p[r].destroy(),p[r]=a,null===e.from&&(e.from="createplaylist"),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("masteraudio",{handler:function(){if(0===this.args.length)return this.error("no actions specified");for(var e=this.args.slice(0),t=!1,r=void 0,a=void 0;e.length>0;){var n=e.shift(),i=void 0;switch(n){case"stop":t=!0;break;case"mute":case"unmute":r="mute"===n;break;case"volume":if(0===e.length)return this.error("volume missing required level value");if(i=e.shift(),a=Number.parseFloat(i),Number.isNaN(a)||!Number.isFinite(a))return this.error("cannot parse volume: "+i);break;default:return this.error("unknown action: "+n)}}try{null!=r&&(SimpleAudio.mute=r),null!=a&&(SimpleAudio.volume=a),t&&SimpleAudio.stop(),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing master audio action: "+e.message)}}}),Macro.add("playlist",{from:null,handler:function(){var e=this.self.from;if(null===e)return this.error("no playlists have been created");var t=void 0,r=void 0;if("createplaylist"===e){if(this.args.length<2){var a=[];return this.args.length<1&&a.push("list ID"),this.args.length<2&&a.push("actions"),this.error("no "+a.join(" or ")+" specified")}var n=Macro.get("createplaylist").lists,i=String(this.args[0]).trim();if(!n.hasOwnProperty(i))return this.error('playlist "'+i+'" does not exist');t=n[i],r=this.args.slice(1)}else{if(0===this.args.length)return this.error("no actions specified");t=Macro.get("setplaylist").list,r=this.args.slice(0)}for(var o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=5,f=void 0;r.length>0;){var p=r.shift();switch(p){case"play":case"pause":case"stop":case"skip":o=p;break;case"fadein":o="fade",d=1;break;case"fadeout":o="fade",d=0;break;case"fadeto":if(0===r.length)return this.error("fadeto missing required level value");if(o="fade",f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeto: "+f);break;case"fadeoverto":if(r.length<2){var g=[];return r.length<1&&g.push("seconds"),r.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(o="fade",f=r.shift(),h=Number.parseFloat(f),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+f);if(f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+f);break;case"volume":if(0===r.length)return this.error("volume missing required level value");if(f=r.shift(),s=Number.parseFloat(f),Number.isNaN(s)||!Number.isFinite(s))return this.error("cannot parse volume: "+f);break;case"mute":case"unmute":u="mute"===p;break;case"loop":case"unloop":l="loop"===p;break;case"shuffle":case"unshuffle":c="shuffle"===p;break;default:return this.error("unknown action: "+p)}}try{switch(null!=s&&(t.volume=s),null!=u&&(t.mute=u),null!=l&&(t.loop=l),null!=c&&(t.shuffle=c),o){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"skip":t.skip();break;case"fade":t.fadeWithDuration(h,d)}Config.debug&&this.createDebugView()}catch(e){return this.error("error playing audio: "+e.message)}}}),Macro.add("removeplaylist",{handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("createplaylist").lists,t=String(this.args[0]).trim();if(!e.hasOwnProperty(t))return this.error('playlist "'+t+'" does not exist');e[t].destroy(),delete e[t],Config.debug&&this.createDebugView()}}),Macro.add("waitforaudio",{skipArgs:!0,queue:[],handler:function(){function e(){if(0===t.length)return LoadScreen.unlock(r);var a=t.shift();if(a.hasData())return e();a.one("canplay.waitforaudio error.waitforaudio",function(){jQuery(this).off(".waitforaudio"),e()}).load()}var t=this.self.queue,r=void 0;t.length>0||(this.self.fillQueue(t),t.length>0&&(r=LoadScreen.lock(),e()))},fillQueue:function(e){var t=Macro.get("cacheaudio").tracks;Object.keys(t).forEach(function(r){return e.push(t[r])});var r=Macro.get("createplaylist").lists;if(Object.keys(r).map(function(e){return r[e].tracks}).flatten().filter(function(e){return e.copy}).forEach(function(t){return e.push(t.track)}),Macro.has("setplaylist")){var a=Macro.get("setplaylist").list;null!==a&&a.tracks.forEach(function(t){return e.push(t.track)})}}}),Macro.add("setplaylist",{list:null,handler:function(){if(0===this.args.length)return this.error("no track ID(s) specified");var e=Macro.get("playlist");if(null!==e.from&&"setplaylist"!==e.from)return this.error("playlists have already been defined with <<createplaylist>>");var t=this.self,r=Macro.get("cacheaudio").tracks;null!==t.list&&t.list.destroy(),t.list=SimpleAudio.createList();for(var a=0;a<this.args.length;++a){var n=this.args[a];if(!r.hasOwnProperty(n))return this.error('track "'+n+'" does not exist');t.list.add(r[n])}null===e.from&&(e.from="setplaylist"),Config.debug&&this.createDebugView()}}),Macro.add("stopallaudio",{skipArgs:!0,handler:function(){var e=Macro.get("cacheaudio").tracks;Object.keys(e).forEach(function(t){return e[t].stop()}),Config.debug&&this.createDebugView()}})}else Macro.add(["audio","cacheaudio","createaudiogroup","createplaylist","masteraudio","playlist","removeplaylist","waitforaudio","setplaylist","stopallaudio"],{skipArgs:!0,handler:function(){}});Macro.add("goto",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');setTimeout(function(){return Engine.play(e)},Engine.minDomActionDelay)}}),Macro.add("repeat",{isAsync:!0,tags:null,timers:new Set,handler:function(){var e=this;if(0===this.args.length)return this.error("no time value specified");var t=void 0;try{t=Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0]))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerInterval(this.createShadowWrapper(function(){var t=document.createDocumentFragment();new Wikifier(t,e.payload[0].contents);var n=a ;r&&(n=jQuery(document.createElement("span")).addClass("macro-repeat-insert macro-repeat-in").appendTo(n)),n.append(t),r&&setTimeout(function(){return n.removeClass("macro-repeat-in")},Engine.minDomActionDelay)}),t)},registerInterval:function(e,t){var r=this;if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var a=State.turns,n=this.timers,i=null;i=setInterval(function(){if(a!==State.turns)return clearInterval(i),void n.delete(i);var t=void 0;try{TempState.break=null,TempState.hasOwnProperty("repeatTimerId")&&(t=TempState.repeatTimerId),TempState.repeatTimerId=i,e.call(r)}finally{void 0!==t?TempState.repeatTimerId=t:delete TempState.repeatTimerId,TempState.break=null}},t),n.add(i),prehistory.hasOwnProperty("#repeat-timers-cleanup")||(prehistory["#repeat-timers-cleanup"]=function(e){delete prehistory[e],n.forEach(function(e){return clearInterval(e)}),n.clear()})}}),Macro.add("stop",{skipArgs:!0,handler:function(){if(!TempState.hasOwnProperty("repeatTimerId"))return this.error("must only be used in conjunction with its parent macro <<repeat>>");var e=Macro.get("repeat").timers,t=TempState.repeatTimerId;clearInterval(t),e.delete(t),TempState.break=2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("timed",{isAsync:!0,tags:["next"],timers:new Set,handler:function(){if(0===this.args.length)return this.error("no time value specified in <<timed>>");var e=[];try{e.push({name:this.name,source:this.source,delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0])),content:this.payload[0].contents})}catch(e){return this.error(e.message+" in <<timed>>")}if(this.payload.length>1){var t=void 0;try{var r=void 0;for(t=1,r=this.payload.length;t<r;++t)e.push({name:this.payload[t].name,source:this.payload[t].source,delay:0===this.payload[t].args.length?e[e.length-1].delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.payload[t].args[0])),content:this.payload[t].contents})}catch(e){return this.error(e.message+" in <<next>> (#"+t+")")}}Config.debug&&this.debugView.modes({block:!0});var a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),n=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerTimeout(this.createShadowWrapper(function(e){var t=document.createDocumentFragment();new Wikifier(t,e.content);var r=n;Config.debug&&"next"===e.name&&(r=jQuery(new DebugView(r[0],"macro",e.name,e.source).output)),a&&(r=jQuery(document.createElement("span")).addClass("macro-timed-insert macro-timed-in").appendTo(r)),r.append(t),a&&setTimeout(function(){return r.removeClass("macro-timed-in")},Engine.minDomActionDelay)}),e)},registerTimeout:function(e,t){if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var r=State.turns,a=this.timers,n=null,i=t.shift(),o=function o(){if(a.delete(n),r===State.turns){var s=i;null!=(i=t.shift())&&(n=setTimeout(o,i.delay),a.add(n)),e.call(this,s)}};n=setTimeout(o,i.delay),a.add(n),prehistory.hasOwnProperty("#timed-timers-cleanup")||(prehistory["#timed-timers-cleanup"]=function(e){delete prehistory[e],a.forEach(function(e){return clearTimeout(e)}),a.clear()})}}),Macro.add("widget",{tags:null,handler:function(){if(0===this.args.length)return this.error("no widget name specified");var e=this.args[0];if(Macro.has(e)){if(!Macro.get(e).isWidget)return this.error('cannot clobber existing macro "'+e+'"');Macro.delete(e)}try{Macro.add(e,{isWidget:!0,handler:function(e){return function(){var t=void 0;try{State.variables.hasOwnProperty("args")&&(t=State.variables.args),State.variables.args=[].concat(_toConsumableArray(this.args)),State.variables.args.raw=this.args.raw,State.variables.args.full=this.args.full,this.addShadow("$args");var r=document.createDocumentFragment(),a=[];if(new Wikifier(r,e),Array.from(r.querySelectorAll(".error")).forEach(function(e){a.push(e.textContent)}),0!==a.length)return this.error("error"+(a.length>1?"s":"")+" within widget contents ("+a.join("; ")+")");this.output.appendChild(r)}catch(e){return this.error("cannot execute widget: "+e.message)}finally{void 0!==t?State.variables.args=t:delete State.variables.args}}}(this.payload[0].contents)}),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(t){return this.error('cannot create widget macro "'+e+'": '+t.message)}}})}();var Dialog=function(){function e(){m=function(){var e=void 0;try{var t=document.createElement("p"),r=document.createElement("div");t.style.width="100%",t.style.height="200px",r.style.position="absolute",r.style.left="0px",r.style.top="0px",r.style.width="100px",r.style.height="100px",r.style.visibility="hidden",r.style.overflow="hidden",r.appendChild(t),document.body.appendChild(r);var a=t.offsetWidth;r.style.overflow="auto";var n=t.offsetWidth;a===n&&(n=r.clientWidth),document.body.removeChild(r),e=a-n}catch(e){}return e||17}();var e=jQuery(document.createDocumentFragment()).append('<div id="ui-overlay" class="ui-close"></div><div id="ui-dialog" tabindex="0" role="dialog" aria-labelledby="ui-dialog-title"><div id="ui-dialog-titlebar"><h1 id="ui-dialog-title"></h1><button id="ui-dialog-close" class="ui-close" tabindex="0" aria-label="'+L10n.get("close")+'">î „</button></div><div id="ui-dialog-body"></div></div>');d=jQuery(e.find("#ui-overlay").get(0)),h=jQuery(e.find("#ui-dialog").get(0)),f=jQuery(e.find("#ui-dialog-title").get(0)),p=jQuery(e.find("#ui-dialog-body").get(0)),e.insertBefore("#store-area")}function t(e){return h.hasClass("open")&&(!e||e.splitOrEmpty(/\s+/).every(function(e){return p.hasClass(e)}))}function r(e,t){return p.empty().removeClass(),null!=t&&p.addClass(t),f.empty().append((null!=e?String(e):"")||" "),p.get(0)}function a(){return p.get(0)}function n(){var e;return(e=p).append.apply(e,arguments),Dialog}function i(){var e;return(e=p).wiki.apply(e,arguments),Dialog}function o(e,t,r,a,n){return jQuery(e).ariaClick(function(e){e.preventDefault(),"function"==typeof r&&r(e),s(t,n),"function"==typeof a&&a(e)})}function s(e,r){var a=jQuery.extend({top:50},e),n=a.top;t()||(g=safeActiveElement()),jQuery(document.documentElement).attr("data-dialog","open"),d.addClass("open"),null!==p[0].querySelector("img")&&p.imagesLoaded().always(function(){return l({data:{top:n}})}),jQuery("body>:not(script,#store-area,#ui-bar,#ui-overlay,#ui-dialog)").attr("tabindex",-3).attr("aria-hidden",!0),jQuery("#ui-bar,#story").find("[tabindex]:not([tabindex^=-])").attr("tabindex",-2).attr("aria-hidden",!0);var i=c(n);return h.css(i).addClass("open").focus(),jQuery(window).on("resize.dialog-resize",null,{top:n},jQuery.throttle(40,l)),Has.mutationObserver?(v=new MutationObserver(function(e){for(var t=0;t<e.length;++t)if("childList"===e[t].type){l({data:{top:n}});break}}),v.observe(p[0],{childList:!0,subtree:!0})):p.on("DOMNodeInserted.dialog-resize DOMNodeRemoved.dialog-resize",null,{top:n},jQuery.throttle(40,l)),jQuery(document).on("click.dialog-close",".ui-close",{closeFn:r},u).on("keypress.dialog-close",".ui-close",function(e){13!==e.which&&32!==e.which||jQuery(this).trigger("click")}),setTimeout(function(){return jQuery.event.trigger(":dialogopen")},Engine.minDomActionDelay),Dialog}function u(e){return jQuery(document).off(".dialog-close"),v?(v.disconnect(),v=null):p.off(".dialog-resize"),jQuery(window).off(".dialog-resize"),h.removeClass("open").css({left:"",right:"",top:"",bottom:""}),jQuery("#ui-bar,#story").find("[tabindex=-2]").removeAttr("aria-hidden").attr("tabindex",0),jQuery("body>[tabindex=-3]").removeAttr("aria-hidden").removeAttr("tabindex"),f.empty(),p.empty().removeClass(),d.removeClass("open"),jQuery(document.documentElement).removeAttr("data-dialog"),null!==g&&(jQuery(g).focus(),g=null),e&&e.data&&"function"==typeof e.data.closeFn&&e.data.closeFn(e),setTimeout(function(){return jQuery.event.trigger(":dialogclose")},Engine.minDomActionDelay),Dialog}function l(e){var t=e&&e.data&&void 0!==e.data.top?e.data.top:50;"block"===h.css("display")&&(h.css({display:"none"}),h.css(jQuery.extend({display:""},c(t))))}function c(e){var t=null!=e?e:50,r=jQuery(window),a={left:"",right:"",top:"",bottom:""};h.css(a);var n=r.width()-h.outerWidth(!0)-1,i=r.height()-h.outerHeight(!0)-1;return n<=32+m&&(i-=m),i<=32+m&&(n-=m),a.left=a.right=n<=32?16:n/2>>0,a.top=i<=32?a.bottom=16:i/2>t?t:a.bottom=i/2>>0,Object.keys(a).forEach(function(e){""!==a[e]&&(a[e]+="px")}),a}var d=null,h=null,f=null,p=null,g=null,m=0,v=null;return Object.freeze(Object.defineProperties({},{init:{value:e},isOpen:{value:t},setup:{value:r},body:{value:a},append:{value:n},wiki:{value:i},addClickHandler:{value:o},open:{value:s},close:{value:u},resize:{value:function(e){return l("object"===(void 0===e?"undefined":_typeof(e))?{data:e}:undefined)}}}))}(),Engine=function(){function e(){jQuery("#init-no-js,#init-lacking").remove(),function(){var e=jQuery(document.createDocumentFragment()),t=Story.has("StoryInterface")&&Story.get("StoryInterface").text.trim();if(t){if(UIBar.destroy(),jQuery(document.head).find("#style-core-display").remove(),e.append(t),0===e.find("#passages").length)throw new Error('no element with ID "passages" found within "StoryInterface" special passage')}else e.append('<div id="story" role="main"><div id="passages"></div></div>');e.insertBefore("#store-area")}(),S=new StyleWrapper(function(){return jQuery(document.createElement("style")).attr({id:"style-aria-outlines",type:"text/css"}).appendTo(document.head).get(0)}()),jQuery(document).on("mousedown.aria-outlines keydown.aria-outlines",function(e){return"keydown"===e.type?m():g()})}function t(){if(Story.has("StoryInit"))try{var e=Wikifier.wikifyEval(Story.get("StoryInit").text);if(Config.debug){var t=new DebugView(document.createDocumentFragment(),"special","StoryInit","StoryInit");t.modes({hidden:!0}),t.append(e),k=t.output}}catch(e){console.error(e),Alert.error("StoryInit",e.message)}if(Config.history.maxStates=Math.max(0,Config.history.maxStates),Number.isSafeInteger(Config.history.maxStates)||(Config.history.maxStates=100),1===Config.history.maxStates&&(Config.history.controls=!1),null==Config.passages.start)throw new Error("starting passage not selected");if(!Story.has(Config.passages.start))throw new Error('starting passage ("'+Config.passages.start+'") not found');if(jQuery(document.documentElement).focus(),State.restore())h();else{var r=!0;switch(_typeof(Config.saves.autoload)){case"boolean":Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!Save.autosave.load());break;case"string":"prompt"===Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!1,UI.buildAutoload(),Dialog.open());break;case"function":Save.autosave.ok()&&Save.autosave.has()&&Config.saves.autoload()&&(r=!Save.autosave.load())}r&&f(Config.passages.start)}}function r(){LoadScreen.show(),window.scroll(0,0),State.reset(),jQuery.event.trigger(":enginerestart"),window.location.reload()}function a(){return b}function n(){return b===v.Idle}function i(){return b!==v.Idle}function o(){return b===v.Rendering}function s(){return w}function u(e){var t=State.goTo(e);return t&&h(),t}function l(e){var t=State.go(e);return t&&h(),t}function c(){return l(-1)}function d(){return l(1)}function h(){return f(State.passage,!0)}function f(e,t){var r=e;b=v.Playing,TempState={},State.clearTemporary();var a=void 0,n=void 0;if("function"==typeof Config.navigation.override)try{var i=Config.navigation.override(r);i&&(r=i)}catch(e){}var o=Story.get(r);if(jQuery.event.trigger({type:":passageinit",passage:o}),Object.keys(prehistory).forEach(function(e){"function"==typeof prehistory[e]&&prehistory[e].call(this,e)},o),t||State.create(o.title),w=Util.now(),document.body.className&&(document.body.className=""),Object.keys(predisplay).forEach(function(e){"function"==typeof predisplay[e]&&predisplay[e].call(this,e)},o),Story.has("PassageReady"))try{a=Wikifier.wikifyEval(Story.get("PassageReady").text)}catch(e){console.error(e),Alert.error("PassageReady",e.message)}b=v.Rendering;var s=jQuery(o.render()),u=document.getElementById("passages");if(u.hasChildNodes()&&("number"==typeof Config.passages.transitionOut||"string"==typeof Config.passages.transitionOut&&""!==Config.passages.transitionOut&&""!==Config.transitionEndEventName?[].concat(_toConsumableArray(u.childNodes)).forEach(function(e){var t=jQuery(e);if(e.nodeType===Node.ELEMENT_NODE&&t.hasClass("passage")){if(t.hasClass("passage-out"))return;t.attr("id","out-"+t.attr("id")).addClass("passage-out"),"string"==typeof Config.passages.transitionOut?t.on(Config.transitionEndEventName,function(e){e.originalEvent.propertyName===Config.passages.transitionOut&&t.remove()}):setTimeout(function(){return t.remove()},Math.max(y,Config.passages.transitionOut))}else t.remove()}):jQuery(u).empty()),s.addClass("passage-in").appendTo(u),setTimeout(function(){return s.removeClass("passage-in")},y),Config.passages.displayTitles&&o.title!==Config.passages.start&&(document.title=o.title+" | "+Story.title),window.scroll(0,0),b=v.Playing,Story.has("PassageDone"))try{n=Wikifier.wikifyEval(Story.get("PassageDone").text)}catch(e){console.error(e),Alert.error("PassageDone",e.message)}if(jQuery.event.trigger({type:":passagedisplay",passage:o}),Object.keys(postdisplay).forEach(function(e){"function"==typeof postdisplay[e]&&postdisplay[e].call(this,e)},o),Config.ui.updateStoryElements&&UIBar.setStoryElements(),Config.debug){var l=void 0;null!=a&&(l=new DebugView(document.createDocumentFragment(),"special","PassageReady","PassageReady"),l.modes({hidden:!0}),l.append(a),s.prepend(l.output)),null!=n&&(l=new DebugView(document.createDocumentFragment(),"special","PassageDone","PassageDone"),l.modes({hidden:!0}),l.append(n),s.append(l.output)),1===State.turns&&null!=k&&s.prepend(k)}switch(g(),jQuery("#story").find("a[href]:not(.link-external)").addClass("link-external").end().find("a,link,button,input,select,textarea").not("[tabindex]").attr("tabindex",0),_typeof(Config.saves.autosave)){case"boolean":Config.saves.autosave&&Save.autosave.save();break;case"string":o.tags.includes(Config.saves.autosave)&&Save.autosave.save();break;case"object":Array.isArray(Config.saves.autosave)&&o.tags.some(function(e){return Config.saves.autosave.includes(e)})&&Save.autosave.save()}return jQuery.event.trigger({type:":passageend",passage:o}),b=v.Idle,w=Util.now(),s[0]}function p(e,t,r){var a=!1;switch(r){case undefined:break;case"replace":case"back":a=!0;break;default:throw new Error('Engine.display option parameter called with obsolete value "'+r+'"; please notify the developer')}f(e,a)}function g(){S.set("*:focus{outline:none}")}function m(){S.clear()}var v=Util.toEnum({Idle:"idle",Playing:"playing",Rendering:"rendering"}),y=40,b=v.Idle,w=null,k=null,S=null;return Object.freeze(Object.defineProperties({},{States:{value:v},minDomActionDelay:{value:y},init:{value:e},start:{value:t},restart:{value:r},state:{get:a},isIdle:{value:n},isPlaying:{value:i},isRendering:{value:o},lastPlay:{get:s},goTo:{value:u},go:{value:l},backward:{value:c},forward:{value:d},show:{value:h},play:{value:f},display:{value:p}}))}(),Passage=function(){var e=void 0,t=void 0;e=/^(?:debug|nobr|passage|script|stylesheet|widget|twine\..*)$/i;var r=/(?:\\n|\\t|\\s|\\|\r)/g,a=new RegExp(r.source),n=Object.freeze({"\\n":"\n","\\t":"\t","\\s":"\\","\\":"\\","\r":""});return t=function(e){if(null==e)return"";var t=String(e);return t&&a.test(t)?t.replace(r,function(e){return n[e]}):t},function(){function r(t,a){var n=this;_classCallCheck(this,r),Object.defineProperties(this,{title:{value:Util.unescape(t)},element:{value:a||null},tags:{value:Object.freeze(a&&a.hasAttribute("tags")?a.getAttribute("tags").trim().splitOrEmpty(/\s+/).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}):[])},_excerpt:{writable:!0,value:null}}),Object.defineProperties(this,{domId:{value:"passage-"+Util.slugify(this.title)},classes:{value:Object.freeze(0===this.tags.length?[]:function(){return n.tags.filter(function(t){return!e.test(t)}).map(function(e){return Util.slugify(e)})}())}})}return _createClass(r,[{key:"description",value:function(){var e=Config.passages.descriptions;if(null!=e)switch(void 0===e?"undefined":_typeof(e)){case"boolean":if(e)return this.title;break;case"object":if(e instanceof Map&&e.has(this.title))return e.get(this.title);if(e.hasOwnProperty(this.title))return e[this.title];break;case"function":var t=e.call(this);if(t)return t;break;default:throw new TypeError("Config.passages.descriptions must be a boolean, object, or function")}return null===this._excerpt&&(this._excerpt=r.getExcerptFromText(this.text)),this._excerpt}},{key:"processText",value:function(){if(null==this.element)return this.text;var e=this.text;return this.tags.includes("Twine.image")?e="[img["+e+"]]":(Config.passages.nobr||this.tags.includes("nobr"))&&(e=e.replace(/^\n+|\n+$/g,"").replace(/\n+/g," ")),e}},{key:"render",value:function(){var e=this,t=this.tags.length>0?this.tags.join(" "):null,a=document.createElement("div");return jQuery(a).attr({id:this.domId,"data-passage":this.title,"data-tags":t}).addClass("passage "+this.className),jQuery(document.body).attr("data-tags",t).addClass(this.className),jQuery(document.documentElement).attr("data-tags",t),jQuery.event.trigger({type:":passagestart",content:a,passage:this}),Object.keys(prerender).forEach(function(t){"function"==typeof prerender[t]&&prerender[t].call(e,a,t)}),Story.has("PassageHeader")&&new Wikifier(a,Story.get("PassageHeader").processText()),new Wikifier(a,this.processText()),Story.has("PassageFooter")&&new Wikifier(a,Story.get("PassageFooter").processText()),jQuery.event.trigger({type:":passagerender",content:a,passage:this}),Object.keys(postrender).forEach(function(t){"function"==typeof postrender[t]&&postrender[t].call(e,a,t)}),this._excerpt=r.getExcerptFromNode(a),a}},{key:"className",get:function(){return this.classes.join(" ")}},{key:"text",get:function(){if(null==this.element){var e=Util.escape(this.title);return'<div class="error-view"><span class="error">'+(L10n.get("errorTitle")+": "+L10n.get("errorNonexistentPassage",{passage:e}))+"</span></div>"}return t(this.element.textContent)}}],[{key:"getExcerptFromNode",value:function(e,t){if(!e.hasChildNodes())return"";var r=e.textContent.trim();if(""!==r){var a=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})");r=r.replace(/\s+/g," ").match(a)}return r?r[1]+"…":"…"}},{key:"getExcerptFromText",value:function(e,t){if(""===e)return"";var r=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})"),a=e.replace(/<<.*?>>/g," ").replace(/<.*?>/g," ").trim().replace(/^\s*\|.*\|.*?$/gm,"").replace(/\[[<>]?img\[[^\]]*\]\]/g,"").replace(/\[\[([^|\]]*?)(?:(?:\||->|<-)[^\]]*)?\]\]/g,"$1").replace(/^\s*!+(.*?)$/gm,"$1").replace(/'{2}|\/{2}|_{2}|@{2}/g,"").trim().replace(/\s+/g," ").match(r);return a?a[1]+"…":"…"}}]),r}()}(),Save=function(){function e(){if("cookie"===storage.name)return a(),Config.saves.autosave=undefined,Config.saves.slots=0,!1;Config.saves.slots=Math.max(0,Config.saves.slots),Number.isSafeInteger(Config.saves.slots)||(Config.saves.slots=8);var e=r(),t=!1;Array.isArray(e)&&(e={autosave:null,slots:e},t=!0),Config.saves.slots!==e.slots.length&&(Config.saves.slots<e.slots.length?(e.slots.reverse(),e.slots=e.slots.filter(function(e){return!(null===e&&this.count>0)||(--this.count,!1)},{count:e.slots.length-Config.saves.slots}),e.slots.reverse()):Config.saves.slots>e.slots.length&&x(e.slots,Config.saves.slots-e.slots.length),t=!0),T(e.autosave)&&(t=!0);for(var n=0;n<e.slots.length;++n)T(e.slots[n])&&(t=!0);return j(e)&&(storage.delete("saves"),t=!1),t&&C(e),P=e.slots.length-1,!0}function t(){return{autosave:null,slots:x([],Config.saves.slots)}}function r(){var e=storage.get("saves");return null===e?t():e}function a(){return storage.delete("saves"),!0}function n(){return i()||d()}function i(){return"cookie"!==storage.name&&void 0!==Config.saves.autosave}function o(){return null!==r().autosave}function s(){return r().autosave}function u(){var e=r();return null!==e.autosave&&A(e.autosave)}function l(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return!1;var a=r(),n={title:e||Story.get(State.passage).description(),date:Date.now()};return null!=t&&(n.metadata=t),a.autosave=O(n),C(a)}function c(){var e=r();return e.autosave=null,C(e)}function d(){return"cookie"!==storage.name&&-1!==P}function h(){return P+1}function f(){if(!d())return 0;for(var e=r(),t=0,a=0,n=e.slots.length;a<n;++a)null!==e.slots[a]&&++t;return t}function p(){return 0===f()}function g(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])}function m(e){if(e<0||e>P)return null;var t=r();return e>=t.slots.length?null:t.slots[e]}function v(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])&&A(t.slots[e])}function y(e,t,a){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return Dialog.isOpen()?$(document).one(":dialogclose",function(){return UI.alert(L10n.get("savesDisallowed"))}):UI.alert(L10n.get("savesDisallowed")),!1;if(e<0||e>P)return!1;var n=r();if(e>=n.slots.length)return!1;var i={title:t||Story.get(State.passage).description(),date:Date.now()};return null!=a&&(i.metadata=a),n.slots[e]=O(i),C(n)}function b(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length)&&(t.slots[e]=null,C(t))}function w(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return void(Dialog.isOpen()?$(document).one(":dialogclose",function(){return UI.alert(L10n.get("savesDisallowed"))}):UI.alert(L10n.get("savesDisallowed")));var r=null==e?Story.domId:Util.slugify(e),a=r+"-"+function(){var e=new Date,t=e.getMonth()+1,r=e.getDate(),a=e.getHours(),n=e.getMinutes(),i=e.getSeconds();return t<10&&(t="0"+t),r<10&&(r="0"+r),a<10&&(a="0"+a),n<10&&(n="0"+n),i<10&&(i="0"+i),""+e.getFullYear()+t+r+"-"+a+n+i}()+".save",n=null==t?{}:{metadata:t},i=LZString.compressToBase64(JSON.stringify(O(n)));saveAs(new Blob([i],{type:"text/plain;charset=UTF-8"}),a)}function k(e){var t=e.target.files[0],r=new FileReader;jQuery(r).on("load",function(e){var r=e.currentTarget;if(r.result){var a=void 0;try{a=JSON.parse(/\.json$/i.test(t.name)||/^\{/.test(r.result)?r.result:LZString.decompressFromBase64(r.result))}catch(e){}A(a)}}),r.readAsText(t)}function S(e){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return Dialog.isOpen()?$(document).one(":dialogclose",function(){return UI.alert(L10n.get("savesDisallowed"))}):UI.alert(L10n.get("savesDisallowed")),null;var t=null==e?{}:{metadata:e};return LZString.compressToBase64(JSON.stringify(O(t)))}function E(e){var t=void 0;try{t=JSON.parse(LZString.decompressFromBase64(e))}catch(e){}return A(t)?t.metadata:null}function x(e,t){for(var r=0;r<t;++r)e.push(null);return e}function j(e){for(var t=e.slots,r=!0,a=0,n=t.length;a<n;++a)if(null!==t[a]){r=!1;break}return null===e.autosave&&r}function C(e){return j(e)?(storage.delete("saves"),!0):storage.set("saves",e)}function T(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))return!1;var t=!1;return e.hasOwnProperty("state")&&e.state.hasOwnProperty("delta")&&e.state.hasOwnProperty("index")||(e.hasOwnProperty("data")?(delete e.mode,e.state={delta:State.deltaEncode(e.data)},delete e.data):e.state.hasOwnProperty("delta")?e.state.hasOwnProperty("index")||delete e.state.mode:(delete e.state.mode,e.state.delta=State.deltaEncode(e.state.history),delete e.state.history),e.state.index=e.state.delta.length-1,t=!0),e.state.hasOwnProperty("rseed")&&(e.state.seed=e.state.rseed,delete e.state.rseed,e.state.delta.forEach(function(e,t,r){r[t].hasOwnProperty("rcount")&&(r[t].pull=r[t].rcount,delete r[t].rcount)}),t=!0),(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired||e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired&&delete e.state.expired,(e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.expired=[],e.state.hasOwnProperty("unique")&&(e.state.expired.push(e.state.unique),delete e.state.unique),e.state.hasOwnProperty("last")&&(e.state.expired.push(e.state.last),delete e.state.last)),t=!0),t}function O(e){if(null!=e&&"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("supplemental parameter must be an object");var t=Object.assign({},e,{id:Config.saves.id,state:State.marshalForSave()});return Config.saves.version&&(t.version=Config.saves.version),"function"==typeof Config.saves.onSave&&Config.saves.onSave(t),t.state.delta=State.deltaEncode(t.state.history),delete t.state.history,t}function A(e){try{if(T(e),!e||!e.hasOwnProperty("id")||!e.hasOwnProperty("state"))throw new Error(L10n.get("errorSaveMissingData"));if(e.state.history=State.deltaDecode(e.state.delta),delete e.state.delta,"function"==typeof Config.saves.onLoad&&Config.saves.onLoad(e),e.id!==Config.saves.id)throw new Error(L10n.get("errorSaveIdMismatch"));State.unmarshalForSave(e.state),Engine.show()}catch(e){return UI.alert(e.message.toUpperFirst()+".</p><p>"+L10n.get("aborting")+"."),!1}return!0}var P=-1;return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:r},clear:{value:a},ok:{value:n},autosave:{value:Object.freeze(Object.defineProperties({},{ok:{value:i},has:{value:o},get:{value:s},load:{value:u},save:{value:l},delete:{value:c}}))},slots:{value:Object.freeze(Object.defineProperties({},{ok:{value:d},length:{get:h},isEmpty:{value:p},count:{value:f},has:{value:g},get:{value:m},load:{value:v},save:{value:y},delete:{value:b}}))},export:{value:w},import:{value:k},serialize:{value:S},deserialize:{value:E}}))}(),Setting=function(){function e(){if(storage.has("options")){var e=storage.get("options");null!==e&&(window.SugarCube.settings=settings=Object.assign(t(),e)),r(),storage.delete("options")}a(),m.forEach(function(e){if(e.hasOwnProperty("onInit")){var t={name:e.name,value:settings[e.name],default:e.default};e.hasOwnProperty("list")&&(t.list=e.list),e.onInit.call(t)}})}function t(){return Object.create(null)}function r(){var e=t();return Object.keys(settings).length>0&&m.filter(function(e){return e.type!==v.Header&&settings[e.name]!==e.default}).forEach(function(t){return e[t.name]=settings[t.name]}),0===Object.keys(e).length?(storage.delete("settings"),!0):storage.set("settings",e)}function a(){var e=t(),r=storage.get("settings")||t();m.filter(function(e){return e.type!==v.Header}).forEach(function(t){return e[t.name]=t.default}),window.SugarCube.settings=settings=Object.assign(e,r)}function n(){return window.SugarCube.settings=settings=t(),storage.delete("settings"),!0}function i(e){if(0===arguments.length)n(),a();else{if(null==e||!f(e))throw new Error('nonexistent setting "'+e+'"');var t=p(e);t.type!==v.Header&&(settings[e]=t.default)}return r()}function o(e,t){m.forEach(e,t)}function s(e,t,r){if(arguments.length<3){var a=[];throw arguments.length<1&&a.push("type"),arguments.length<2&&a.push("name"),arguments.length<3&&a.push("definition"),new Error("missing parameters, no "+a.join(" or ")+" specified")}if("object"!==(void 0===r?"undefined":_typeof(r)))throw new TypeError("definition parameter must be an object");if(f(t))throw new Error('cannot clobber existing setting "'+t+'"');var n={type:e,name:t,label:"string"==typeof r.label?r.label.trim():""};if("string"==typeof r.desc){var i=r.desc.trim();""!==i&&(n.desc=i)}switch(e){case v.Header:break;case v.Toggle:n.default=!!r.default;break;case v.List:if(!r.hasOwnProperty("list"))throw new Error("no list specified");if(!Array.isArray(r.list))throw new TypeError("list must be an array");if(0===r.list.length)throw new Error("list must not be empty");if(n.list=Object.freeze(r.list),null==r.default)n.default=r.list[0];else{var o=r.list.indexOf(r.default);if(-1===o)throw new Error("list does not contain default");n.default=r.list[o]}break;case v.Range:if(!r.hasOwnProperty("min"))throw new Error("no min specified");if("number"!=typeof r.min||Number.isNaN(r.min)||!Number.isFinite(r.min))throw new TypeError("min must be a finite number");if(!r.hasOwnProperty("max"))throw new Error("no max specified");if("number"!=typeof r.max||Number.isNaN(r.max)||!Number.isFinite(r.max))throw new TypeError("max must be a finite number");if(!r.hasOwnProperty("step"))throw new Error("no step specified");if("number"!=typeof r.step||Number.isNaN(r.step)||!Number.isFinite(r.step)||r.step<=0)throw new TypeError("step must be a finite number greater than zero");var s=function(){var e=String(r.step),t=e.lastIndexOf(".");return-1===t?0:e.length-t-1}();if(function(e){if(s>0){var t=Number(r.min+"e"+s),a=Number(r.step+"e"+s),n=Number(e+"e"+s)-t;return Number(n-n%a+t+"e-"+s)}var i=e-r.min;return i-i%r.step+r.min}(r.max)!==r.max)throw new RangeError("max ("+r.max+") is not a multiple of the step ("+r.step+") plus the min ("+r.min+")");if(n.max=r.max,n.min=r.min,n.step=r.step,null==r.default)n.default=r.max;else{if("number"!=typeof r.default||Number.isNaN(r.default)||!Number.isFinite(r.default))throw new TypeError("default must be a finite number");if(r.default<r.min)throw new RangeError("default ("+r.default+") is less than min ("+r.min+")");if(r.default>r.max)throw new RangeError("default ("+r.default+") is greater than max ("+r.max+")");n.default=r.default}break;default:throw new Error("unknown Setting type: "+e)}"function"==typeof r.onInit&&(n.onInit=Object.freeze(r.onInit)),"function"==typeof r.onChange&&(n.onChange=Object.freeze(r.onChange)),m.push(Object.freeze(n))}function u(e,t){s(v.Header,e,{desc:t})}function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[v.Toggle].concat(t))}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[v.List].concat(t))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[v.Range].concat(t))}function h(){return 0===m.length}function f(e){return m.some(function(t){return t.name===e})}function p(e){return m.find(function(t){return t.name===e})}function g(e){f(e)&&delete settings[e];for(var t=0;t<m.length;++t)if(m[t].name===e){m.splice(t,1),g(e);break}}var m=[],v=Util.toEnum({Header:0,Toggle:1,List:2,Range:3});return Object.freeze(Object.defineProperties({},{Types:{value:v},init:{value:e},create:{value:t},save:{value:r},load:{value:a},clear:{value:n},reset:{value:i},forEach:{value:o},add:{value:s},addHeader:{value:u},addToggle:{value:l},addList:{value:c},addRange:{value:d},isEmpty:{value:h},has:{value:f},get:{value:p},delete:{value:g}}))}(),Story=function(){function e(){function e(e){if(e.tags.includesAny(a))throw new Error('starting passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}function t(e){if(n.includes(e.title)&&e.tags.includesAny(a))throw new Error('special passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}var a=["widget"],n=["PassageDone","PassageFooter","PassageHeader","PassageReady","StoryAuthor","StoryBanner","StoryCaption","StoryInit","StoryMenu","StoryShare","StorySubtitle"],i=function(e){var t=[].concat(a),r=[];if(e.tags.forEach(function(e){t.includes(e)&&r.push.apply(r,_toConsumableArray(t.delete(e)))}),r.length>1)throw new Error('code passage "'+e.title+'" contains multiple code tags; invalid: "'+r.sort().join('", "')+'"')};if(a.unshift("script","stylesheet"),n.push("StoryTitle"),Config.passages.start=function(){var e=String("START_AT");return""!==e?(Config.debug=!0,e):"Start"}(),jQuery("#store-area").children(':not([tags~="Twine.private"],[tags~="annotation"])').each(function(){var r=jQuery(this),a=new Passage(r.attr("tiddler"),this);a.title===Config.passages.start?(e(a),c[a.title]=a):a.tags.includes("stylesheet")?(i(a),d.push(a)):a.tags.includes("script")?(i(a),h.push(a)):a.tags.includes("widget")?(i(a),f.push(a)):(t(a),c[a.title]=a)}),!c.hasOwnProperty("StoryTitle"))throw new Error('cannot find the "StoryTitle" special passage') -;var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<h.length;++e)try{Scripting.evalJavaScript(h[e].text)}catch(t){console.error(t),Alert.error(h[e].title,"object"===(void 0===t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<f.length;++t)try{Wikifier.wikifyEval(f[t].processText())}catch(e){console.error(e),Alert.error(f[t].title,"object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=p=Util.unescape(e),m=Util.slugify(p)}function a(){return p}function n(){return m}function i(){return g}function o(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":return c.hasOwnProperty(String(e));case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",a=Object.keys(c),n=[],i=0;i<a.length;++i){var o=c[a[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":o[e]instanceof Array&&o[e].some(function(e){return e==t})&&n.push(o);break;default:o[e]==t&&n.push(o)}}return n.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),n}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),a=[],n=0;n<r.length;++n){var i=c[r[n]];e(i)&&a.push(i)}return a.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),a}var c={},d=[],h=[],f=[],p="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:h},widgets:{value:f},load:{value:e},init:{value:t},title:{get:a},domId:{get:n},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,a=Config.debug,n=Config.cleanupWikifierOutput;Config.debug=!1,Config.cleanupWikifierOutput=!1;try{null==r&&(r=document.createElement("ul"));var i=document.createDocumentFragment();new Wikifier(i,Story.get(e).processText().trim());var o=[].concat(_toConsumableArray(i.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(o.length>0)throw new Error(o.join("; "));for(;i.hasChildNodes();){var s=i.firstChild;if(s.nodeType===Node.ELEMENT_NODE&&"A"===s.nodeName.toUpperCase()){var u=document.createElement("li");r.appendChild(u),u.appendChild(s)}else i.removeChild(s)}}finally{Config.cleanupWikifierOutput=n,Config.debug=a}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons"><li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li></ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function a(){l(),Dialog.open.apply(Dialog,arguments)}function n(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){h(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons"><li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+'</button></li><li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li></ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var a=Story.get(State.history[r].title);a&&a.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+a.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons"><li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+'</button></li><li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li></ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,a){var n=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&n.addClass(t),a?n.ariaClick(a):n.ariaDisabled(!0),jQuery(document.createElement("li")).append(n)}var r=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&r.append(function(){function e(e,t,r,a,n){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+a).addClass(e).html(r);return t&&i.addClass(t),n?"auto"===a?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return n()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(a+1)},function(){return n(a)}):i.ariaDisabled(!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var a=jQuery(document.createElement("td")),n=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(a),t.autosave?(n.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?""+new Date(t.autosave.date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(n.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),i.addClass("empty").text("•  •  •"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(a).append(n).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),h=jQuery(document.createElement("td")),f=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(h),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?""+new Date(t.slots[s].date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(h),f.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),h.addClass("empty").text("•  •  •"),f.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(h).append(f).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}()),a||Has.fileAPI){var n=jQuery(document.createElement("ul")).addClass("buttons").appendTo(r);return Has.fileAPI&&(n.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),n.append(e("import",null,L10n.get("savesLabelImport"),function(){return r.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(r)),a&&n.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,a=Util.slugify(r),n=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2"));return n.attr("id","header-body-"+a).append(i).appendTo(e),i.attr("id","header-heading-"+a).wiki(r),void(t.desc&&jQuery(document.createElement("p")).attr("id","header-desc-"+a).wiki(t.desc).appendTo(n))}var o=t.name,s=Util.slugify(o),u=jQuery(document.createElement("div")),l=jQuery(document.createElement("label")),c=jQuery(document.createElement("div")),d=void 0;switch(jQuery(document.createElement("div")).append(l).append(c).appendTo(u),t.desc&&jQuery(document.createElement("p")).attr("id","setting-desc-"+s).wiki(t.desc).appendTo(u),l.attr({id:"setting-label-"+s,for:"setting-control-"+s}).wiki(t.label),null==settings[o]&&(settings[o]=t.default),t.type){case Setting.Types.Toggle:d=jQuery(document.createElement("button")),settings[o]?d.addClass("enabled").text(L10n.get("settingsOn")):d.text(L10n.get("settingsOff")),d.ariaClick(function(){settings[o]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[o]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[o]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default})});break;case Setting.Types.List:d=jQuery(document.createElement("select"));for(var h=0,f=t.list.length;h<f;++h)jQuery(document.createElement("option")).val(h).text(t.list[h]).appendTo(d);d.val(t.list.indexOf(settings[o])).attr("tabindex",0).on("change",function(){settings[o]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,list:t.list})});break;case Setting.Types.Range:d=jQuery(document.createElement("input")),d.attr({type:"range",min:t.min,max:t.max,step:t.step,value:settings[o],tabindex:0}).on("change input",function(){settings[o]=Number(this.value),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,min:t.min,max:t.max,step:t.step})}).on("keypress",function(e){13===e.which&&(e.preventDefault(),d.trigger("change"))})}d.attr("id","setting-control-"+s).appendTo(c),u.attr("id","setting-body-"+s).appendTo(e)}),e.append('<ul class="buttons"><li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+'</button></li><li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li></ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function h(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:a},saves:{value:n},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:h},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:h},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),a=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray"><button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><div id="ui-bar-history"><button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'">î ¡</button><button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'">î ¹</button><button id="history-forward" tabindex="0" title="'+a+'" aria-label="'+a+'">î ¢</button></div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core"><li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+'</a></li><li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+'</a></li><li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+'</a></li><li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li></ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.ariaDisabled(State.length<2),t.ariaDisabled(State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").ariaDisabled(State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").ariaDisabled(State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:a},unstow:{value:n},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarToggle"),t=L10n.get("debugBarAddWatch"),o=L10n.get("debugBarWatchAll"),u=L10n.get("debugBarWatchNone"),c=L10n.get("debugBarWatchToggle"),p=L10n.get("debugBarViewsToggle");jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden"><div>'+L10n.get("debugBarNoWatches")+'</div>></div><div><button id="debug-bar-watch-toggle" tabindex="0" title="'+c+'" aria-label="'+c+'">'+L10n.get("debugBarLabelWatch")+'</button><label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+'</label><input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist><button id="debug-bar-watch-add" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="debug-bar-watch-all" tabindex="0" title="'+o+'" aria-label="'+o+'"></button><button id="debug-bar-watch-none" tabindex="0" title="'+u+'" aria-label="'+u+'"></button></div><div><button id="debug-bar-views-toggle" tabindex="0" title="'+p+'" aria-label="'+p+'">'+L10n.get("debugBarLabelViews")+'</button><label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+'</label><select id="debug-bar-turn-select" tabindex="0"></select></div><button id="debug-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button></div><div id="debug-bar-hint"></div>').appendTo("body"),y=jQuery("#debug-bar"),b=jQuery(y.find("#debug-bar-watch").get(0)),w=jQuery(y.find("#debug-bar-watch-list").get(0)),k=jQuery(y.find("#debug-bar-turn-select").get(0));var g=jQuery(y.find("#debug-bar-toggle").get(0)),m=jQuery(y.find("#debug-bar-watch-toggle").get(0)),v=jQuery(y.find("#debug-bar-watch-input").get(0)),E=jQuery(y.find("#debug-bar-watch-add").get(0)),x=jQuery(y.find("#debug-bar-watch-all").get(0)),j=jQuery(y.find("#debug-bar-watch-none").get(0)),C=jQuery(y.find("#debug-bar-views-toggle").get(0));g.ariaClick(function(){S?a():r(),S=!S,l()}),m.ariaClick(function(){b.attr("hidden")?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),l()}),v.on(":addwatch",function(){n(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),v.trigger(":addwatch"))}),E.ariaClick(function(){return v.trigger(":addwatch")}),x.ariaClick(i),j.ariaClick(s),k.on("change",function(){Engine.goTo(Number(this.value))}),C.ariaClick(function(){DebugView.toggle(),l()}),jQuery(document).on(":historyupdate.debug-bar",f).on(":passageend.debug-bar",function(){d(),h()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){u(),c(),f(),d(),h()}function r(){y.css("right","-"+y.outerWidth()+"px"),l()}function a(){y.css("right",0),l()}function n(e){g.test(e)&&(v.pushUnique(e),v.sort(),d(),h(),l())}function i(){Object.keys(State.variables).map(function(e){return v.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return v.pushUnique("_"+e)}),v.sort(),d(),h(),l()}function o(e){v.delete(e),d(),h(),l()}function s(){for(var e=v.length-1;e>=0;--e)v.pop();d(),h(),l()}function u(){if(session.has("debugState")){var e=session.get("debugState");S=e.stowed,v.push.apply(v,_toConsumableArray(e.watchList)),e.watchEnabled?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function l(){session.set("debugState",{stowed:S,watchList:v,watchEnabled:!b.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function c(){S?r():a()}function d(){if(0===v.length)return void b.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),a=0,n=v.length;a<n;++a)!function(t,a){var n=v[t],i=n.slice(1),s="$"===n[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",n).ariaClick({one:!0,label:e},function(){return o(n)}),c.text(p(s[i])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(n).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)}(a);t.append(r),b.empty().append(t)}function h(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void w.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),a=document.createDocumentFragment();r.delete(v);for(var n=0,i=r.length;n<i;++n)jQuery(document.createElement("option")).val(r[n]).appendTo(a);w.empty().append(a)}function f(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),a=0;a<e;++a)jQuery(document.createElement("option")).val(a).text(t+a+1+". "+Util.escape(State.history[a].title)).appendTo(r);k.empty().ariaDisabled(e<2).append(r).val(State.activeIndex)}function p(e){if(null===e)return"null";switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var a=e instanceof Array?e:Array.from(e),n=0,i=a.length;n<i;++n)r.push(a.hasOwnProperty(n)?p(a[n]):"<empty>");return Object.keys(a).filter(function(e){return!m.test(e)}).forEach(function(e){return r.push(p(e)+": "+p(a[e]))}),t+"("+a.length+") ["+r.join(", ")+"]"}return e instanceof Map?(e.forEach(function(e,t){return r.push(p(t)+" → "+p(e))}),t+"("+e.size+") {"+r.join(", ")+"}"):(Object.keys(e).forEach(function(t){return r.push(p(t)+": "+p(e[t]))}),t+" {"+r.join(", ")+"}")}var g=new RegExp("^"+Patterns.variable+"$"),m=/^\d+$/,v=[],y=null,b=null,w=null,k=null,S=!0;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},stow:{value:r},unstow:{value:a},watch:{value:n},watchAll:{value:i},unwatch:{value:o},unwatchAll:{value:s}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):a())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function a(){jQuery(document.documentElement).attr("data-init","loading")}function n(){return++s,o.add(s),a(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:a},lock:{value:n},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:27,patch:0,prerelease:null,build:8702,date:new Date("2018-08-20T14:49:45.399Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),Config.debug&&DebugBar.init();var t=$(window),r=setInterval(function(){t.width()&&(clearInterval(r),setTimeout(function(){UIBar.start(),Config.debug&&DebugBar.start(),LoadScreen.unlock(e)},Engine.minDomActionDelay))},Engine.minDomActionDelay);window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version}}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);} +;var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<h.length;++e)try{Scripting.evalJavaScript(h[e].text)}catch(t){console.error(t),Alert.error(h[e].title,"object"===(void 0===t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<f.length;++t)try{Wikifier.wikifyEval(f[t].processText())}catch(e){console.error(e),Alert.error(f[t].title,"object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=p=Util.unescape(e),m=Util.slugify(p)}function a(){return p}function n(){return m}function i(){return g}function o(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":return c.hasOwnProperty(String(e));case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",a=Object.keys(c),n=[],i=0;i<a.length;++i){var o=c[a[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":o[e]instanceof Array&&o[e].some(function(e){return e==t})&&n.push(o);break;default:o[e]==t&&n.push(o)}}return n.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),n}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),a=[],n=0;n<r.length;++n){var i=c[r[n]];e(i)&&a.push(i)}return a.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),a}var c={},d=[],h=[],f=[],p="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:h},widgets:{value:f},load:{value:e},init:{value:t},title:{get:a},domId:{get:n},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,a=Config.debug,n=Config.cleanupWikifierOutput;Config.debug=!1,Config.cleanupWikifierOutput=!1;try{null==r&&(r=document.createElement("ul"));var i=document.createDocumentFragment();new Wikifier(i,Story.get(e).processText().trim());var o=[].concat(_toConsumableArray(i.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(o.length>0)throw new Error(o.join("; "));for(;i.hasChildNodes();){var s=i.firstChild;if(s.nodeType===Node.ELEMENT_NODE&&"A"===s.nodeName.toUpperCase()){var u=document.createElement("li");r.appendChild(u),u.appendChild(s)}else i.removeChild(s)}}finally{Config.cleanupWikifierOutput=n,Config.debug=a}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons"><li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li></ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function a(){l(),Dialog.open.apply(Dialog,arguments)}function n(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){h(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons"><li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+'</button></li><li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li></ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var a=Story.get(State.history[r].title);a&&a.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+a.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons"><li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+'</button></li><li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li></ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,a){var n=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&n.addClass(t),a?n.ariaClick(a):n.ariaDisabled(!0),jQuery(document.createElement("li")).append(n)}var r=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&r.append(function(){function e(e,t,r,a,n){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+a).addClass(e).html(r);return t&&i.addClass(t),n?"auto"===a?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return n()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(a+1)},function(){return n(a)}):i.ariaDisabled(!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var a=jQuery(document.createElement("td")),n=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(a),t.autosave?(n.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?""+new Date(t.autosave.date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(n.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),i.addClass("empty").text("•  •  •"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(a).append(n).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),h=jQuery(document.createElement("td")),f=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save),e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(h),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?""+new Date(t.slots[s].date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(h),f.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),h.addClass("empty").text("•  •  •"),f.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(h).append(f).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}()),a||Has.fileAPI){var n=jQuery(document.createElement("ul")).addClass("buttons").appendTo(r);return Has.fileAPI&&(n.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),n.append(e("import",null,L10n.get("savesLabelImport"),function(){return r.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(r)),a&&n.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,a=Util.slugify(r),n=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2"));return n.attr("id","header-body-"+a).append(i).appendTo(e),i.attr("id","header-heading-"+a).wiki(r),void(t.desc&&jQuery(document.createElement("p")).attr("id","header-desc-"+a).wiki(t.desc).appendTo(n))}var o=t.name,s=Util.slugify(o),u=jQuery(document.createElement("div")),l=jQuery(document.createElement("label")),c=jQuery(document.createElement("div")),d=void 0;switch(jQuery(document.createElement("div")).append(l).append(c).appendTo(u),t.desc&&jQuery(document.createElement("p")).attr("id","setting-desc-"+s).wiki(t.desc).appendTo(u),l.attr({id:"setting-label-"+s,for:"setting-control-"+s}).wiki(t.label),null==settings[o]&&(settings[o]=t.default),t.type){case Setting.Types.Toggle:d=jQuery(document.createElement("button")),settings[o]?d.addClass("enabled").text(L10n.get("settingsOn")):d.text(L10n.get("settingsOff")),d.ariaClick(function(){settings[o]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[o]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[o]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default})});break;case Setting.Types.List:d=jQuery(document.createElement("select"));for(var h=0,f=t.list.length;h<f;++h)jQuery(document.createElement("option")).val(h).text(t.list[h]).appendTo(d);d.val(t.list.indexOf(settings[o])).attr("tabindex",0).on("change",function(){settings[o]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,list:t.list})});break;case Setting.Types.Range:d=jQuery(document.createElement("input")),d.attr({type:"range",min:t.min,max:t.max,step:t.step,value:settings[o],tabindex:0}).on("change input",function(){settings[o]=Number(this.value),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,min:t.min,max:t.max,step:t.step})}).on("keypress",function(e){13===e.which&&(e.preventDefault(),d.trigger("change"))})}d.attr("id","setting-control-"+s).appendTo(c),u.attr("id","setting-body-"+s).appendTo(e)}),e.append('<ul class="buttons"><li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+'</button></li><li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li></ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function h(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:a},saves:{value:n},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:h},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:h},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),a=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray"><button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><div id="ui-bar-history"><button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'">î ¡</button><button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'">î ¹</button><button id="history-forward" tabindex="0" title="'+a+'" aria-label="'+a+'">î ¢</button></div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core"><li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+'</a></li><li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+'</a></li><li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+'</a></li><li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li></ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.ariaDisabled(State.length<2),t.ariaDisabled(State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").ariaDisabled(State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").ariaDisabled(State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:a},unstow:{value:n},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarToggle"),t=L10n.get("debugBarAddWatch"),o=L10n.get("debugBarWatchAll"),u=L10n.get("debugBarWatchNone"),c=L10n.get("debugBarWatchToggle"),p=L10n.get("debugBarViewsToggle");jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden"><div>'+L10n.get("debugBarNoWatches")+'</div>></div><div><button id="debug-bar-watch-toggle" tabindex="0" title="'+c+'" aria-label="'+c+'">'+L10n.get("debugBarLabelWatch")+'</button><label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+'</label><input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist><button id="debug-bar-watch-add" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="debug-bar-watch-all" tabindex="0" title="'+o+'" aria-label="'+o+'"></button><button id="debug-bar-watch-none" tabindex="0" title="'+u+'" aria-label="'+u+'"></button></div><div><button id="debug-bar-views-toggle" tabindex="0" title="'+p+'" aria-label="'+p+'">'+L10n.get("debugBarLabelViews")+'</button><label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+'</label><select id="debug-bar-turn-select" tabindex="0"></select></div><button id="debug-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button></div><div id="debug-bar-hint"></div>').appendTo("body"),y=jQuery("#debug-bar"),b=jQuery(y.find("#debug-bar-watch").get(0)),w=jQuery(y.find("#debug-bar-watch-list").get(0)),k=jQuery(y.find("#debug-bar-turn-select").get(0));var g=jQuery(y.find("#debug-bar-toggle").get(0)),m=jQuery(y.find("#debug-bar-watch-toggle").get(0)),v=jQuery(y.find("#debug-bar-watch-input").get(0)),E=jQuery(y.find("#debug-bar-watch-add").get(0)),x=jQuery(y.find("#debug-bar-watch-all").get(0)),j=jQuery(y.find("#debug-bar-watch-none").get(0)),C=jQuery(y.find("#debug-bar-views-toggle").get(0));g.ariaClick(function(){S?a():r(),S=!S,l()}),m.ariaClick(function(){b.attr("hidden")?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),l()}),v.on(":addwatch",function(){n(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),v.trigger(":addwatch"))}),E.ariaClick(function(){return v.trigger(":addwatch")}),x.ariaClick(i),j.ariaClick(s),k.on("change",function(){Engine.goTo(Number(this.value))}),C.ariaClick(function(){DebugView.toggle(),l()}),jQuery(document).on(":historyupdate.debug-bar",f).on(":passageend.debug-bar",function(){d(),h()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){u(),c(),f(),d(),h()}function r(){y.css("right","-"+y.outerWidth()+"px"),l()}function a(){y.css("right",0),l()}function n(e){g.test(e)&&(v.pushUnique(e),v.sort(),d(),h(),l())}function i(){Object.keys(State.variables).map(function(e){return v.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return v.pushUnique("_"+e)}),v.sort(),d(),h(),l()}function o(e){v.delete(e),d(),h(),l()}function s(){for(var e=v.length-1;e>=0;--e)v.pop();d(),h(),l()}function u(){if(session.has("debugState")){var e=session.get("debugState");S=e.stowed,v.push.apply(v,_toConsumableArray(e.watchList)),e.watchEnabled?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function l(){session.set("debugState",{stowed:S,watchList:v,watchEnabled:!b.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function c(){S?r():a()}function d(){if(0===v.length)return void b.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),a=0,n=v.length;a<n;++a)!function(t,a){var n=v[t],i=n.slice(1),s="$"===n[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",n).ariaClick({one:!0,label:e},function(){return o(n)}),c.text(p(s[i])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(n).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)}(a);t.append(r),b.empty().append(t)}function h(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void w.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),a=document.createDocumentFragment();r.delete(v);for(var n=0,i=r.length;n<i;++n)jQuery(document.createElement("option")).val(r[n]).appendTo(a);w.empty().append(a)}function f(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),a=0;a<e;++a)jQuery(document.createElement("option")).val(a).text(t+a+1+". "+Util.escape(State.history[a].title)).appendTo(r);k.empty().ariaDisabled(e<2).append(r).val(State.activeIndex)}function p(e){if(null===e)return"null";switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var a=e instanceof Array?e:Array.from(e),n=0,i=a.length;n<i;++n)r.push(a.hasOwnProperty(n)?p(a[n]):"<empty>");return Object.keys(a).filter(function(e){return!m.test(e)}).forEach(function(e){return r.push(p(e)+": "+p(a[e]))}),t+"("+a.length+") ["+r.join(", ")+"]"}return e instanceof Map?(e.forEach(function(e,t){return r.push(p(t)+" → "+p(e))}),t+"("+e.size+") {"+r.join(", ")+"}"):(Object.keys(e).forEach(function(t){return r.push(p(t)+": "+p(e[t]))}),t+" {"+r.join(", ")+"}")}var g=new RegExp("^"+Patterns.variable+"$"),m=/^\d+$/,v=[],y=null,b=null,w=null,k=null,S=!0;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},stow:{value:r},unstow:{value:a},watch:{value:n},watchAll:{value:i},unwatch:{value:o},unwatchAll:{value:s}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):a())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function a(){jQuery(document.documentElement).attr("data-init","loading")}function n(){return++s,o.add(s),a(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:a},lock:{value:n},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:27,patch:0,prerelease:null,build:8702,date:new Date("2018-08-20T14:49:45.399Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),Config.debug&&DebugBar.init();var t=$(window),r=setInterval(function(){t.width()&&(clearInterval(r),setTimeout(function(){UIBar.start(),Config.debug&&DebugBar.start(),LoadScreen.unlock(e)},Engine.minDomActionDelay))},Engine.minDomActionDelay);window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version}}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);} </script> </body> </html> diff --git a/src/SecExp/SecExpBackwardCompatibility.tw b/src/SecExp/SecExpBackwardCompatibility.tw index 7e471b4611ababd3632a30b55244bb0eae7da7ca..8d485753311eed8d65d808a04ba0bb031a236ffa 100644 --- a/src/SecExp/SecExpBackwardCompatibility.tw +++ b/src/SecExp/SecExpBackwardCompatibility.tw @@ -208,7 +208,7 @@ <<if ndef $pharaonTradition>> <<set $pharaonTradition = 0>> <</if>> -<<if ndef $weaponsLaw || $wasToggledBefore == 1>> +<<if ndef $weaponsLaw>> <<set $weaponsLaw = 3>> <</if>> <<if ndef $soldierWages>> diff --git a/src/cheats/mod_EditFSCheat.tw b/src/cheats/mod_EditFSCheat.tw index d37eb895bf33bf6baab40bf0692e6b4965c39355..05dbbcc75dbead54d6695ab295a71ffaf0cef1c4 100644 --- a/src/cheats/mod_EditFSCheat.tw +++ b/src/cheats/mod_EditFSCheat.tw @@ -35,7 +35,7 @@ <<radiobutton "$arcologies[0].FSSupremacistRace" "semitic">> Semitic | <<radiobutton "$arcologies[0].FSSupremacistRace" "mixed race">> Mixed Race - <br>[[Apply and reset Racial Subjugationism|MOD_Edit FS Cheat][$arcologies[0].FSSubjugationist = "unset", $arcologies[0].FSSubjugationistRace = 0, $arcologies[0].FSSubjugationistDecoration = 20, $arcologies[0].FSSubjugationistLawME = 0]] + <br>[[Apply and reset Racial Subjugationism|MOD_Edit FS Cheat][removeFS("FSSubjugationist")]] <br><br> @@ -71,7 +71,7 @@ <<radiobutton "$arcologies[0].FSSubjugationistRace" "semitic">> Semitic | <<radiobutton "$arcologies[0].FSSubjugationistRace" "mixed race">> Mixed Race - <br>[[Apply and reset Racial Supremacy|MOD_Edit FS Cheat][$arcologies[0].FSSupremacist = "unset",$arcologies[0].FSSupremacistRace = 0, $arcologies[0].FSSupremacistDecoration = 20, $arcologies[0].FSSupremacistLawME = 0]] + <br>[[Apply and reset Racial Supremacy|MOD_Edit FS Cheat][removeFS("FSSupremacist")]] <br><br> @@ -101,7 +101,7 @@ | <<radiobutton "$arcologies[0].FSGenderRadicalistLawFuta" 3>> 3 (Big butts and skilled buttholes pref.) | <<radiobutton "$arcologies[0].FSGenderRadicalistLawFuta" 4>> 4 (Trap pref.) - <br>[[Apply and reset Gender Traditionalism|MOD_Edit FS Cheat][$arcologies[0].FSGenderFundamentalist = "unset",$arcologies[0].FSGenderFundamentalistDecoration = 20,$arcologies[0].FSGenderFundamentalistLaw = 0]] + <br>[[Apply and reset Gender Traditionalism|MOD_Edit FS Cheat][removeFS("FSGenderFundamentalist")]] <br><br> @@ -124,7 +124,7 @@ <<radiobutton "$arcologies[0].FSGenderFundamentalistSMR" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSGenderFundamentalistSMR" 1>> 1 (Passed.) - <br>[[Apply and reset Gender Radicalism|MOD_Edit FS Cheat][$arcologies[0].FSGenderRadicalist = "unset",$arcologies[0].FSGenderRadicalistDecoration = 20,$arcologies[0].FSGenderRadicalistLawBeauty = 0, $arcologies[0].FSGenderRadicalistLawFuta = 0]] + <br>[[Apply and reset Gender Radicalism|MOD_Edit FS Cheat][removeFS("FSGenderRadicalist")]] <<if $seePreg != 0>> <br><br> @@ -152,7 +152,7 @@ <<radiobutton "$arcologies[0].FSRepopulationFocusLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSRepopulationFocusLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Eugenics|MOD_Edit FS Cheat][$arcologies[0].FSRestart = "unset",$arcologies[0].FSRestartDecoration = 20,$arcologies[0].FSRestartLaw = 0, $arcologies[0].FSRestartSMR = 0]] + <br>[[Apply and reset Eugenics|MOD_Edit FS Cheat][removeFS("FSRestart")]] <br><br> @@ -175,7 +175,7 @@ <<radiobutton "$arcologies[0].FSRestartSMR" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSRestartSMR" 1>> 1 (Passed.) - <br>[[Apply and reset Repopulation Efforts|MOD_Edit FS Cheat][$arcologies[0].FSRepopulationFocus = "unset",$arcologies[0].FSRepopulationFocusDecoration = 20,$arcologies[0].FSRepopulationFocusLaw = 0, $arcologies[0].FSRepopulationFocusSMR = 0]] + <br>[[Apply and reset Repopulation Efforts|MOD_Edit FS Cheat][removeFS("FSRepopulationFocus")]] <</if>> <br><br> @@ -199,7 +199,7 @@ <<radiobutton "$arcologies[0].FSPaternalistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSPaternalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Degradationism|MOD_Edit FS Cheat][$arcologies[0].FSDegradationist = "unset",$arcologies[0].FSDegradationistDecoration = 20,$arcologies[0].FSDegradationistLaw = 0]] + <br>[[Apply and reset Degradationism|MOD_Edit FS Cheat][removeFS("FSDegradationist")]] <br><br> @@ -222,7 +222,7 @@ <<radiobutton "$arcologies[0].FSDegradationistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSDegradationistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Paternalism|MOD_Edit FS Cheat][$arcologies[0].FSPaternalist = "unset",$arcologies[0].FSPaternalistDecoration = 20,$arcologies[0].FSPaternalistLaw = 0]] + <br>[[Apply and reset Paternalism|MOD_Edit FS Cheat][removeFS("FSPaternalist")]] <br><br> @@ -245,7 +245,7 @@ <<radiobutton "$arcologies[0].FSBodyPuristLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSBodyPuristLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Body Transformationism|MOD_Edit FS Cheat][$arcologies[0].FSTransformationFetishist = "unset",$arcologies[0].FSTransformationFetishistDecoration = 20,$arcologies[0].FSTransformationFetishistLaw = 0]] + <br>[[Apply and reset Body Transformationism|MOD_Edit FS Cheat][removeFS("FSTransformationFetishist")]] <br><br> @@ -268,7 +268,7 @@ <<radiobutton "$arcologies[0].FSTransformationFetishistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSTransformationFetishistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Body Purism|MOD_Edit FS Cheat][$arcologies[0].FSBodyPurist = "unset",$arcologies[0].FSBodyPuristDecoration = 20,$arcologies[0].FSBodyPuristLaw = 0]] + <br>[[Apply and reset Body Purism|MOD_Edit FS Cheat][removeFS("FSBodyPurist")]] <br><br> @@ -292,7 +292,7 @@ <<radiobutton "$arcologies[0].FSYouthPreferentialistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSYouthPreferentialistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Maturity Preferentialism|MOD_Edit FS Cheat][$arcologies[0].FSMaturityPreferentialist = "unset",$arcologies[0].FSMaturityPreferentialistDecoration = 20,$arcologies[0].FSMaturityPreferentialistLaw = 0]] + <br>[[Apply and reset Maturity Preferentialism|MOD_Edit FS Cheat][removeFS("FSMaturityPreferentialist")]] <br><br> @@ -316,7 +316,7 @@ <<radiobutton "$arcologies[0].FSMaturityPreferentialistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSMaturityPreferentialistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset Youth Preferentialism|MOD_Edit FS Cheat][$arcologies[0].FSYouthPreferentialist = "unset",$arcologies[0].FSYouthPreferentialistDecoration = 20,$arcologies[0].FSYouthPreferentialistLaw = 0]] + <br>[[Apply and reset Youth Preferentialism|MOD_Edit FS Cheat][removeFS("FSYouthPreferentialist")]] <br><br> @@ -339,7 +339,7 @@ <<radiobutton "$arcologies[0].FSSlimnessEnthusiastSMR" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSSlimnessEnthusiastSMR" 1>> 1 (Passed.) - <br>[[Apply and reset Asset Expansionism|MOD_Edit FS Cheat][$arcologies[0].FSAssetExpansionist = "unset",$arcologies[0].FSAssetExpansionistDecoration = 20,$arcologies[0].FSAssetExpansionistLaw = 0]] + <br>[[Apply and reset Asset Expansionism|MOD_Edit FS Cheat][removeFS("FSAssetExpansionist")]] <br><br> @@ -363,7 +363,7 @@ <<radiobutton "$arcologies[0].FSAssetExpansionistSMR" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSAssetExpansionistSMR" 1>> 1 (Passed.) - <br>[[Apply and reset Slimness Enthusiasm|MOD_Edit FS Cheat][$arcologies[0].FSSlimnessEnthusiast = "unset",$arcologies[0].FSSlimnessEnthusiastDecoration = 20,$arcologies[0].FSSlimnessEnthusiastLaw = 0]] + <br>[[Apply and reset Slimness Enthusiasm|MOD_Edit FS Cheat][removeFS("FSSlimnessEnthusiast")]] <br><br> @@ -409,7 +409,7 @@ <<radiobutton "$arcologies[0].FSPhysicalIdealistSMR" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSPhysicalIdealistSMR" 1>> 1 (Passed.) - <br>[[Apply and reset Hedonistic Decadence|MOD_Edit FS Cheat][$arcologies[0].FSHedonisticDecadence = "unset",$arcologies[0].FSHedonisticDecadenceDecoration = 20,$arcologies[0].FSHedonisticDecadenceLaw = 0,$arcologies[0].FSHedonisticDecadenceLaw2 = 0, $arcologies[0].FSHedonisticDecadenceSMR = 0, $arcologies[0].FSPhysicalIdealistStrongFat = 0]] + <br>[[Apply and reset Hedonistic Decadence|MOD_Edit FS Cheat][removeFS("FSHedonisticDecadence")]] <br><br> @@ -440,7 +440,7 @@ <<radiobutton "$arcologies[0].FSHedonisticDecadenceLaw2" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSHedonisticDecadenceLaw2" 1>> 1 (Passed.) - <br>[[Apply and reset Physical Idealist|MOD_Edit FS Cheat][$arcologies[0].FSPhysicalIdealist = "unset",$arcologies[0].FSPhysicalIdealistDecoration = 20,$arcologies[0].FSPhysicalIdealistLaw = 0, $arcologies[0].FSPhysicalIdealistSMR = 0, $arcologies[0].FSHedonisticDecadenceStrongFat = 0]] + <br>[[Apply and reset Physical Idealist|MOD_Edit FS Cheat][removeFS("FSPhysicalIdealist")]] <br><br> @@ -486,30 +486,30 @@ <<radiobutton "$arcologies[0].FSRomanRevivalistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSRomanRevivalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][$arcologies[0].FSAztecRevivalist = "unset",$arcologies[0].FSAztecRevivalistDecoration = 20,$arcologies[0].FSAztecRevivalistLaw = 0,$arcologies[0].FSEgyptianRevivalist = "unset",$arcologies[0].FSEgyptianRevivalistDecoration = 20,$arcologies[0].FSEgyptianRevivalistLaw = 0,$arcologies[0].FSEdoRevivalistDecoration = 20,$arcologies[0].FSEdoRevivalistLaw = 0,$arcologies[0].FSArabianRevivalist = "unset",$arcologies[0].FSArabianRevivalistDecoration = 20,$arcologies[0].FSArabianRevivalistLaw = 0,$arcologies[0].FSChineseRevivalist = "unset",$arcologies[0].FSChineseRevivalistDecoration = 20,$arcologies[0].FSChineseRevivalistLaw = 0]] + <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]] <br><br> - <<if $arcologies[0].FSAztecRevivalist != "unset">> - <br>You are ''pursuing'' Aztec Revivalism. - <<else>> - <br>You are ''not pursuing'' Aztec Revivalism. - <</if>> - - <br>Aztec Revivalism (0-100 or unset): <<textbox "$arcologies[0].FSAztecRevivalist" $arcologies[0].FSAztecRevivalist>> - <br>Decoration: $arcologies[0].FSAztecRevivalistDecoration - - <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 20>> 20 (Minimum) - <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 40>> 40 (Media support.) - <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 60>> 60 (Decorated public spaces.) - <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 80>> 80 (Slaves stationed in public spaces.) - <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 100>> 100 (Remodeled exterior; Fully customized.) + <<if $arcologies[0].FSAztecRevivalist != "unset">> + <br>You are ''pursuing'' Aztec Revivalism. + <<else>> + <br>You are ''not pursuing'' Aztec Revivalism. + <</if>> + + <br>Aztec Revivalism (0-100 or unset): <<textbox "$arcologies[0].FSAztecRevivalist" $arcologies[0].FSAztecRevivalist>> + <br>Decoration: $arcologies[0].FSAztecRevivalistDecoration + + <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 20>> 20 (Minimum) + <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 40>> 40 (Media support.) + <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 60>> 60 (Decorated public spaces.) + <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 80>> 80 (Slaves stationed in public spaces.) + <br><<radiobutton "$arcologies[0].FSAztecRevivalistDecoration" 100>> 100 (Remodeled exterior; Fully customized.) - <br>Law: $arcologies[0].FSAztecRevivalistLaw | - <<radiobutton "$arcologies[0].FSAztecRevivalistLaw" 0>> 0 (Not passed.) - | <<radiobutton "$arcologies[0].FSAztecRevivalistLaw" 1>> 1 (Passed.) + <br>Law: $arcologies[0].FSAztecRevivalistLaw | + <<radiobutton "$arcologies[0].FSAztecRevivalistLaw" 0>> 0 (Not passed.) + | <<radiobutton "$arcologies[0].FSAztecRevivalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][$arcologies[0].FSRomanRevivalist = "unset",$arcologies[0].FSRomanRevivalistDecoration = 20,$arcologies[0].FSRomanRevivalistLaw = 0,$arcologies[0].FSEgyptianRevivalist = "unset",$arcologies[0].FSEgyptianRevivalistDecoration = 20,$arcologies[0].FSEgyptianRevivalistLaw = 0,$arcologies[0].FSEdoRevivalistDecoration = 20,$arcologies[0].FSEdoRevivalistLaw = 0,$arcologies[0].FSArabianRevivalist = "unset",$arcologies[0].FSArabianRevivalistDecoration = 20,$arcologies[0].FSArabianRevivalistLaw = 0,$arcologies[0].FSChineseRevivalist = "unset",$arcologies[0].FSChineseRevivalistDecoration = 20,$arcologies[0].FSChineseRevivalistLaw = 0]] + <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]] <br><br> @@ -532,7 +532,7 @@ <<radiobutton "$arcologies[0].FSEgyptianRevivalistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSEgyptianRevivalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][$arcologies[0].FSRomanRevivalist = "unset",$arcologies[0].FSRomanRevivalistDecoration = 20,$arcologies[0].FSRomanRevivalistLaw = 0,$arcologies[0].FSAztecRevivalist = "unset",$arcologies[0].FSAztecRevivalistDecoration = 20,$arcologies[0].FSAztecRevivalistLaw = 0,$arcologies[0].FSEdoRevivalistDecoration = 20,$arcologies[0].FSEdoRevivalistLaw = 0,$arcologies[0].FSArabianRevivalist = "unset",$arcologies[0].FSArabianRevivalistDecoration = 20,$arcologies[0].FSArabianRevivalistLaw = 0,$arcologies[0].FSChineseRevivalist = "unset",$arcologies[0].FSChineseRevivalistDecoration = 20,$arcologies[0].FSChineseRevivalistLaw = 0,$arcologies[0].FSEgyptianRevivalistIncestPolicy = 0]] + <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]] <br><br> @@ -555,7 +555,7 @@ <<radiobutton "$arcologies[0].FSEdoRevivalistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSEdoRevivalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][$arcologies[0].FSRomanRevivalist = "unset",$arcologies[0].FSRomanRevivalistDecoration = 20,$arcologies[0].FSRomanRevivalistLaw = 0,$arcologies[0].FSAztecRevivalist = "unset",$arcologies[0].FSAztecRevivalistDecoration = 20,$arcologies[0].FSAztecRevivalistLaw = 0,$arcologies[0].FSEgyptianRevivalistDecoration = 20,$arcologies[0].FSEgyptianRevivalistLaw = 0,$arcologies[0].FSArabianRevivalist = "unset",$arcologies[0].FSArabianRevivalistDecoration = 20,$arcologies[0].FSArabianRevivalistLaw = 0,$arcologies[0].FSChineseRevivalist = "unset",$arcologies[0].FSChineseRevivalistDecoration = 20,$arcologies[0].FSChineseRevivalistLaw = 0]] + <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]] <br><br> @@ -578,7 +578,7 @@ <<radiobutton "$arcologies[0].FSArabianRevivalistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSArabianRevivalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][$arcologies[0].FSRomanRevivalist = "unset",$arcologies[0].FSRomanRevivalistDecoration = 20,$arcologies[0].FSRomanRevivalistLaw = 0,$arcologies[0].FSAztecRevivalist = "unset",$arcologies[0].FSAztecRevivalistDecoration = 20,$arcologies[0].FSAztecRevivalistLaw = 0,$arcologies[0].FSEgyptianRevivalistDecoration = 20,$arcologies[0].FSEgyptianRevivalistLaw = 0,$arcologies[0].FSEdoRevivalist = "unset",$arcologies[0].FSEdoRevivalistDecoration = 20,$arcologies[0].FSEdoRevivalistLaw = 0,$arcologies[0].FSChineseRevivalist = "unset",$arcologies[0].FSChineseRevivalistDecoration = 20,$arcologies[0].FSChineseRevivalistLaw = 0]] + <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSChineseRevivalist")]] <br><br> @@ -601,4 +601,4 @@ <<radiobutton "$arcologies[0].FSChineseRevivalistLaw" 0>> 0 (Not passed.) | <<radiobutton "$arcologies[0].FSChineseRevivalistLaw" 1>> 1 (Passed.) - <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][$arcologies[0].FSRomanRevivalist = "unset",$arcologies[0].FSRomanRevivalistDecoration = 20,$arcologies[0].FSRomanRevivalistLaw = 0,$arcologies[0].FSAztecRevivalist = "unset",$arcologies[0].FSAztecRevivalistDecoration = 20,$arcologies[0].FSAztecRevivalistLaw = 0,$arcologies[0].FSEgyptianRevivalistDecoration = 20,$arcologies[0].FSEgyptianRevivalistLaw = 0,$arcologies[0].FSEdoRevivalist = "unset",$arcologies[0].FSEdoRevivalistDecoration = 20,$arcologies[0].FSEdoRevivalistLaw = 0,$arcologies[0].FSArabianRevivalist = "unset",$arcologies[0].FSArabianRevivalistDecoration = 20,$arcologies[0].FSArabianRevivalistLaw = 0]] + <br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist")]] diff --git a/src/facilities/brothel/brothelAssignmentScene.tw b/src/facilities/brothel/brothelAssignmentScene.tw index 317ce5184a74362767db57085555da18c2058d99..1196ce3013cc51a991f41fbabbb945fb65af6835 100644 --- a/src/facilities/brothel/brothelAssignmentScene.tw +++ b/src/facilities/brothel/brothelAssignmentScene.tw @@ -26,7 +26,7 @@ You tell $him $he's to report to <<if $Madam != 0>>$Madam.slaveName immediately, <<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish != "none")>> $He looks excited. <<if canTalk($activeSlave)>> - "<<Master>>, I hoped you would <<s>>end me down there <<s>>ometime!<</if>> + "<<Master>>, I hoped you would <<s>>end me down there <<s>>ometime! <<switch $activeSlave.fetish>> <<case "submissive">> I mean, I'll have to do whatever the cu<<s>>tomer<<s>> pay for, right?" $His eyes go a little unfocused. "And, they'll hold me down..." $He trails off. diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw index 62fcc6137cae55674b12313152d5220dfe406ded..b77036a13c87c1d52d5b886639afefba9e2f81ac 100644 --- a/src/facilities/farmyard/farmyard.tw +++ b/src/facilities/farmyard/farmyard.tw @@ -72,7 +72,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and <<elseif $Farmer != 0>> $Farmer.slaveName is alone in $farmyardName, and has nothing to do but look after the animals and crops. <<else>> /* TODO: is there any way of cleaning up $animalsBought? I can't think of a good way */ - $farmyardNameCaps is empty and quiet. <<link "Decommission the Farmyard" "Main">><<set $farmyardName = "the Farmyard", $farmyard = 0, $farmyardSlaves = 0, $farmyardDecoration = "standard", $farmyardUpgrade = {pump: 0, fertilizer: 0, hydroponics: 0, machinery: 0, seeds: 0, lab: 0}, $farmyardLab = 0, $farmyardLabUpgrades = {animalOvaries: 0, animalTesticles: 0, animalMpreg: 0}, $farmyardCrops = 0, $farmyardKennels = 0, $farmyardStable = 0, $farmyardCages = 0, $activeCanine = -1, $activeHooved = -1, $activeFeline = -1, $animalsBought = {canines: 0, hooved: 0, felines: 0, labradorRetrievers: 0, germanShepherds: 0, goldenRetrievers: 0, frenchBulldogs: 0, bulldogs: 0, beagles: 0, poodles: 0, rottweilers: 0, yorkshireTerriers: 0, siberianHuskies: 0, horses: 0, siameses: 0, persians: 0, maineCoons: 0, ragdolls: 0, bengals: 0, abbysinians: 0, birmans: 0, orientalShorthairs: 0, sphynxes: 0, russianBlues: 0, wolves: 0, foxes: 0, jackals: 0, dingos: 0, zebras: 0, cougars: 0, jaguars: 0, pumas: 0, lynx: 0, leopards: 0, lions: 0, tigers: 0}, $pitAnimal = 0, $canines = [], $hooved = [], $felines = []>> + $farmyardNameCaps is empty and quiet. <<link "Decommission the Farmyard" "Main">><<set $farmyardName = "the Farmyard", $farmyard = 0, $farmyardSlaves = 0, $farmyardDecoration = "standard", $farmyardUpgrade = {pump: 0, fertilizer: 0, hydroponics: 0, machinery: 0, seeds: 0, lab: 0}, $farmyardLab = 0, $farmyardLabUpgrades = {animalOvaries: 0, animalTesticles: 0, animalMpreg: 0}, $farmyardCrops = 0, $farmyardKennels = 0, $farmyardStable = 0, $farmyardCages = 0, $activeCanine = 0, $activeHooved = 0, $activeFeline = 0, $animalsBought = {canines: 0, hooved: 0, felines: 0, labradorRetrievers: 0, germanShepherds: 0, goldenRetrievers: 0, frenchBulldogs: 0, bulldogs: 0, beagles: 0, poodles: 0, rottweilers: 0, yorkshireTerriers: 0, siberianHuskies: 0, horses: 0, siameses: 0, persians: 0, maineCoons: 0, ragdolls: 0, bengals: 0, abbysinians: 0, birmans: 0, orientalShorthairs: 0, sphynxes: 0, russianBlues: 0, wolves: 0, foxes: 0, jackals: 0, dingos: 0, zebras: 0, cougars: 0, jaguars: 0, pumas: 0, lynx: 0, leopards: 0, lions: 0, tigers: 0}, $pitAnimal = 0, $pitAnimalType = 0, $canines = [], $hooved = [], $felines = []>> <<set _far = $sectors.findIndex(function(s) { return s.type == "Farmyard"; })>> <<if _far != -1>> <<set $sectors[_far].type = "Manufacturing">> diff --git a/src/facilities/nursery/childInteract.tw b/src/facilities/nursery/childInteract.tw index 8968b72930adb74ebff1bd166de3044ff6825a73..fa78fa74dff31841c6be3e4f1fc27ad9d659cf02 100644 --- a/src/facilities/nursery/childInteract.tw +++ b/src/facilities/nursery/childInteract.tw @@ -1053,7 +1053,7 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1 <</if>> <</if>> <</if>> - +/* <<if $nursery > 0>> <<if $activeSlave.preg > 0 && $activeSlave.broodmother == 0 && $activeSlave.pregKnown == 1 && $activeSlave.eggType == "human">> <<if $activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0>> @@ -1292,7 +1292,7 @@ Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRule <<elseif $activeSlave.pornFeed == 0>> The media hub is not releasing highlights of $his sex life. [[Release|Child Interact][$activeSlave.pornFeed = 1]] <<else>> - The media hub is releasing highlights of $his sex life <<if $activeSlave.pornFameSpending < 500>>to those who can find it<<elseif $activeSlave.pornFameSpending < 2500>>on several websites<<elseif $activeSlave.pornFameSpending > 5000>>through your old distributor<<else>>on many websites<</if>>. + The media hub is releasing highlights of $his sex life <<if $activeSlave.pornFameSpending < 500>>to those who can find it<<elseif $activeSlave.pornFameSpending < 2500>>on several websites<<elseif $activeSlave.pornFameSpending > 5000>>through your old distributor<<else>>on many websites<</if>>. <<if $activeSlave.pornFameSpending == 0>> [[Halt|Child Interact][$activeSlave.pornFeed = 0, $activeSlave.pornFocus = "none"]] | [[Publicize|Child Interact][$activeSlave.pornFameSpending += 1000]] diff --git a/src/facilities/nursery/childrenReport.tw b/src/facilities/nursery/childrenReport.tw index 81a0926ae9911515a8279954dc2ba34781aaf400..0b9768a47eca05b5f167e554f912f99787245310 100644 --- a/src/facilities/nursery/childrenReport.tw +++ b/src/facilities/nursery/childrenReport.tw @@ -11,8 +11,8 @@ <</if>> <</if>> <<set $nurserySlaves += 1>> - <<if $cribs[_inc].growTime > 0>> - <<set $cribs[_inc].growTime -= 1>> + <<if $cribs[_nur].growTime > 0>> + <<set $cribs[_nur].growTime -= 1>> <br>@@.pink;<<print $cribs[_nur].slaveName>>@@ is growing steadily. $He <<if $cribs[_nur].growTime <= 0>>is @@.lime;ready for release.@@ $He will be ejected from $his crib upon your approach<<else>>will be ready for release in about <<print $cribs[_nur].growTime>> weeks<</if>>. <<else>> @@.pink;$cribs[_nur].slaveName@@ is @@.lime;ready for release.@@ $He will be removed from $nurseryName upon your approach. diff --git a/src/facilities/nursery/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw index 09022963b95b82107673fb7339f006688c50f05d..974b9ca290b9790ffbb7f39907268d22e7640291 100644 --- a/src/facilities/nursery/longChildDescription.tw +++ b/src/facilities/nursery/longChildDescription.tw @@ -23,20 +23,22 @@ <<if $activeSlave.customLabel>> (@@.yellow;''<<print $activeSlave.customLabel>>''@@)<</if>> +/* <<if $ui == "start">> <<elseif $saleDescription == 1>> <<if $applyLaw == 1>> has passed inspection to be sold in your arcology. - <<include "Law Compliance">> /* includes CheckForGingering */ + <<include "Law Compliance">> /* includes CheckForGingering *//* <<else>> is for sale and is available to inspect. - <<if $prisonCrime>> /* reports a slave's crime in the criminal market */ + <<if $prisonCrime>> /* reports a slave's crime in the criminal market *//* $He $prisonCrime <<set $prisonCrime = 0>> <</if>> <</if>> <br> ''$activeSlave.slaveName'' <</if>> +*/ is @@ -72,7 +74,7 @@ is <</if>> <</if>> -<<set $desc = SlaveTitle($activeSlave)>> +<<set $desc = "child">> ''@@.coral;$desc.@@'' @@ -229,6 +231,7 @@ $he's $activeSlave.actualAge years old<<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <</if>> <</if>> +/* TODO: do we need this check? bodyswapping won't be possible with children */ <<if $activeSlave.actualAge != $activeSlave.physicalAge>> However, $he has the body of a <<print $activeSlave.physicalAge>>-year old; <<if $activeSlave.physicalAge < 18 && $activeSlave.actualAge >= 18>> @@ -248,6 +251,7 @@ $he's /* ** NCS will not be enabled for children */ +/* TODO: do we need this? */ <<if $activeSlave.physicalAge != $activeSlave.visualAge>> <<if $activeSlave.visualAge <= $activeSlave.physicalAge-20 || $activeSlave.visualAge >= $activeSlave.physicalAge+20>> $He has undergone radical age therapy that makes $him look @@ -404,7 +408,7 @@ $he's $he's spent awake. <</if>> <</if>> - +/* <<if ($activeSlave.lactation > 0) && ($activeSlave.milk < 20)>> $He has given a small quantity of milk<<if ($activeSlave.cum > 0)>> and about <<print commaNum($activeSlave.cum)>> deciliters of cum<</if>>. <<elseif ($activeSlave.milk > 1)>> @@ -442,7 +446,8 @@ $he's <</if>> <</if>> <</if>> - +*/ +/* <<if $activeSlave.fuckdoll == 0>> /* NORMAL NON-FUCKDOLL MENTAL REPORT */ <<eyeDescription>> @@ -839,9 +844,9 @@ $he's <<else>> You do not understand $his sexuality very well. <</if>> - +/* <<else>> /* FUCKDOLL MENTAL REPORT */ - +/* It's impossible to tell what intelligence or inclinations a fuckdoll might have by looking at it, but the most recent records indicate that this one is <<if ($activeSlave.intelligence+$activeSlave.intelligenceImplant > 95)>> @@.deepskyblue;brilliant@@ @@ -1016,7 +1021,7 @@ $he's <</if>> <</if>> /* END MENTAL REPORT */ - +*/ <<if $saleDescription == 0>> <<if $eventDescription == 0>> <<if canSee($activeSlave)>> @@ -1106,12 +1111,12 @@ $he's <<else>> <<if $activeSlave.relation != 0>> - <<set _lsd = $slaveIndices[$activeSlave.relationTarget]>> - <<if def _lsd>> - <<if ($slaves[_lsd].ID == $activeSlave.relationshipTarget) && ($activeSlave.relationship >= 3)>> - $He is @@.lightgreen;<<= SlaveFullName($slaves[_lsd])>>'s $activeSlave.relation, making their relationship incestuous.@@ + <<set _lcd = $slaveIndices[$activeSlave.relationTarget]>> + <<if def _lcd>> + <<if ($slaves[_lcd].ID == $activeSlave.relationshipTarget) && ($activeSlave.relationship >= 3)>> + $He is @@.lightgreen;<<= SlaveFullName($slaves[_lcd])>>'s $activeSlave.relation, making their relationship incestuous.@@ <<else>> - $He is @@.lightgreen;<<= SlaveFullName($slaves[_lsd])>>'s $activeSlave.relation.@@ + $He is @@.lightgreen;<<= SlaveFullName($slaves[_lcd])>>'s $activeSlave.relation.@@ <</if>> <</if>> <</if>> @@ -1119,31 +1124,31 @@ $he's <</if>> /* closes extended family mode */ <<if $activeSlave.rivalry != 0>> - <<set _lsd = $slaveIndices[$activeSlave.rivalryTarget]>> - <<if def _lsd>> + <<set _lcd = $slaveIndices[$activeSlave.rivalryTarget]>> + <<if def _lcd>> $He <<if $activeSlave.rivalry <= 1>> - @@.lightsalmon;dislikes@@ <<= SlaveFullName($slaves[_lsd])>>. + @@.lightsalmon;dislikes@@ <<= SlaveFullName($slaves[_lcd])>>. <<elseif $activeSlave.rivalry <= 2>> - is <<= SlaveFullName($slaves[_lsd])>>'s @@.lightsalmon;rival.@@ + is <<= SlaveFullName($slaves[_lcd])>>'s @@.lightsalmon;rival.@@ <<else>> - @@.lightsalmon;bitterly hates@@ <<= SlaveFullName($slaves[_lsd])>>. + @@.lightsalmon;bitterly hates@@ <<= SlaveFullName($slaves[_lcd])>>. <</if>> <</if>> <</if>> - +/* <<if $activeSlave.bodySwap > 0>> <<if $activeSlave.origBodyOwner !== "">> $He currently possesses <<print $activeSlave.origBodyOwner>>'s body. <</if>> <<if $activeSlave.fetish != "mindbroken" && $activeSlave.fuckdoll == 0 && $activeSlave.origBodyOwnerID > 0>> - <<set _lsd = $slaveIndices[$activeSlave.origBodyOwnerID]>> - <<if def _lsd>> - $He is fully aware that <<= SlaveFullName($slaves[_lsd])>> is in $his old body. + <<set _lcd = $slaveIndices[$activeSlave.origBodyOwnerID]>> + <<if def _lcd>> + $He is fully aware that <<= SlaveFullName($slaves[_lcd])>> is in $his old body. <</if>> <</if>> <</if>> - +*/ <br> <<if $saleDescription == 0>> @@ -1153,7 +1158,7 @@ $he's <</if>> /*TODO: This will DEFINITELY need updating - children born in your arcology do not have past experience*/ - +/* <<if $activeSlave.fuckdoll == 0>> <<if $activeSlave.career != 0>> <<if $activeSlave.career == "a slave">> @@ -1223,6 +1228,7 @@ $he's <</if>> <</if>> <</if>> +*/ <<if $activeSlave.prestige > 0>> <<if $activeSlave.prestigeDesc>>$activeSlave.prestigeDesc<</if>> @@ -1618,7 +1624,7 @@ $He is <<accentDescription>> <</if>> - +/* <<if ($activeSlave.ID == $Bodyguard.ID) && ($activeSlave.scars > 1) && ($activeSlave.scars < 6)>> $His scars make $him look even more menacing than $he actually is. <<elseif ($activeSlave.ID == $Bodyguard.ID) && ($activeSlave.scars == 6)>> @@ -1626,7 +1632,7 @@ $He is <<elseif ($activeSlave.ID == $Wardeness.ID) && ($activeSlave.scars > 1)>> $His scars make $him look like $he's in the right place. <</if>> - +*/ <<if $activeSlave.fuckdoll == 0>> <<if $activeSlave.markings == "birthmark" && $activeSlave.prestige == 0 && $activeSlave.pornPrestige < 2>> $He has a large, liver-colored birthmark, detracting from $his beauty. diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw index 3dea18e6ed3a8e022c7380879fa90b8870d854d9..2dec315d8328269c0bdd8bd30119f45fc26ff960 100644 --- a/src/facilities/nursery/nursery.tw +++ b/src/facilities/nursery/nursery.tw @@ -379,7 +379,7 @@ Reserve an eligible mother-to-be's child to be placed in a room upon birth. Of $ <br><br> Target age for release: <<textbox "$targetAgeNursery" $targetAgeNursery "Nursery">> - [[Minimum Legal Age|Nursery][$targetAgeNursery = $minimumSlaveAge]] + [[Minimum Legal Age|Nursery][$targetAgeNursery = $minimumSlaveAge]] | [[Average Age of Fertility|Nursery][$targetAgeNursery = $fertilityAge]] | [[Average Age of Potency|Nursery][$targetAgeNursery = $potencyAge]] | [[Legal Adulthood|Nursery][$targetAgeNursery = 18]] diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index 180a837ec6ab8a4e31b5ed90d76312816951db09..b1ae2a9ee42676c332ee21658906836f73c53407 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -2628,6 +2628,7 @@ LORE: INTERVIEWS <br>''Editoranon and Milkanon?'' for prison markets and the nursing handjob scene. <br>''DCoded'' for creating the favicon and adding animals to the Pit, as well as nursery and bestiality content, scenes, facilities and fixes. Also a pussy licking scene. <br>''HiveBro'' for giving hyperpregnant slaves some serious loving. + <br>''Quin2k'' for overwriting save function via Degrees of Lewdity. <br>''git contributors lost to time'' for their submissions and work through pregmod's git. <br>''Bane70'' optimized huge swaths of code with notable professionalism. <br>''Circle Tritagonist'' provided several new collars and outfits. diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw index f6d782655869f508e80b4bc84c1e3c417cfcb2c9..265545a6c815d275c7e435fec68b5079af95cf2b 100644 --- a/src/init/setupVars.tw +++ b/src/init/setupVars.tw @@ -1948,6 +1948,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do "Uzbek": setup.uzbekMaleSurnames, "Roman Revivalist": setup.romanMaleSurnames }>> + +<<set setup.FutureSocieties = ["FSSupremacist", "FSSubjugationist", "FSRepopulationFocus", "FSRestart", "FSSubjugationist", "FSGenderRadicalist", "FSGenderFundamentalist", "FSPaternalist", "FSDegradationist", "FSBodyPurist", "FSTransformationFetishist", "FSYouthPreferentialist", "FSMaturityPreferentialist", "FSSlimnessEnthusiast", "FSAssetExpansionist", "FSPastoralist", "FSPhysicalIdealist", "FSHedonisticDecadence", "FSChattelReligionist", "FSRomanRevivalist", "FSAztecRevivalist", "FSEgyptianRevivalist", "FSEdoRevivalist", "FSArabianRevivalist", "FSChineseRevivalist", "FSNull"]>> <<set setup.ArcologyNamesSupremacistAmerindian = ["Akilineq", "Amerindia", "Aquadoctan", "Cahokia", "Caral", "Chicora", "Cusco", "Indigenismo", "Norumbega", "Paititi", "Porcupine", "Red Power", "Saguenay", "The Confederated Tribes"]>> <<set setup.ArcologyNamesSupremacistAsian = ["Eastern Sun", "Jade Empire", "Kalapa", "Mahoroba", "Penglai", "Shambhala", "Shangri-La", "Sinosphere", "The Celestial Temple", "Tian", "Zhonghua Minzu"]>> diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 7b1f295a1c8eba6ad8675a9712e9ce5dec6f0e1c..dde5f8948af3d0b737969e187958f2e4fd563c5a 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -578,9 +578,9 @@ DairyRestraintsSetting($dairyRestraintsSetting) <<set $farmyardStable = 0>> <<set $farmyardKennels = 0>> <<set $farmyardCages = 0>> -<<set $activeCanine = -1>> -<<set $activeHooved = -1>> -<<set $activeFeline = -1>> +<<set $activeCanine = 0>> +<<set $activeHooved = 0>> +<<set $activeFeline = 0>> <<set $farmyardLab = 0>> <<set $farmyardLabUpgrades = {animalOvaries: 0, animalTesticles: 0, animalMpreg: 0}>> <<set $animalsBought = {canines: 0, hooved: 0, felines: 0, labradorRetrievers: 0, germanShepherds: 0, goldenRetrievers: 0, frenchBulldogs: 0, bulldogs: 0, beagles: 0, poodles: 0, rottweilers: 0, yorkshireTerriers: 0, siberianHuskies: 0, horses: 0, siameses: 0, persians: 0, maineCoons: 0, ragdolls: 0, bengals: 0, abbysinians: 0, birmans: 0, orientalShorthairs: 0, sphynxes: 0, russianBlues: 0, wolves: 0, foxes: 0, jackals: 0, dingos: 0, zebras: 0, cougars: 0, jaguars: 0, pumas: 0, lynx: 0, leopards: 0, lions: 0, tigers: 0}>> diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw index 3d648ed97dd99915661208b73e186f6c767e6b37..f8bab6c0a468f7f6972fbc0a964054737fb09519 100644 --- a/src/js/storyJS.tw +++ b/src/js/storyJS.tw @@ -1,6 +1,8 @@ :: StoryJS [script] /*config.history.tracking = false;*/ +State.expired.disable; + window.variableAsNumber = function(x, defaultValue, minValue, maxValue) { x = Number(x) if (x != x) {//NaN @@ -996,3 +998,84 @@ window.genUUID = function() { }); return uuid; }; + +window.removeFS = function(FS) { + const V = State.variables; + const arcology = V.arcologies[0]; + let FSDecoration = FS + "Decoration"; + let FSSMR = FS + "SMR"; + let FSLaw = FS + "Law"; + if (FS === "FSSupremacist" || FS === "FSSubjugationist") { + FSLaw += "ME"; + } + switch (FS) { + case "FSGenderRadicalist": + arcology.FSGenderRadicalistLawBeauty = 0; + arcology.FSGenderRadicalistLawFuta = 0; + break; + case "FSGenderFundamentalist": + arcology.FSGenderFundamentalistLawBeauty = 0; + arcology.FSGenderFundamentalistLawBimbo = 0; + arcology.FSGenderFundamentalistSMR = 0; + break; + case "FSTransformationFetishist": + case "FSAssetExpansionist": + arcology[FSSMR] = 0; + break; + case "FSPhysicalIdealist": + arcology.FSPhysicalIdealistLaw = 0; + arcology.FSPhysicalIdealistSMR = 0; + arcology.FSPhysicalIdealistStrongFat = 0; + case "FSHedonisticDecadence": + arcology.FSHedonisticDecadenceLaw = 0; + arcology.FSHedonisticDecadenceLaw2 = 0; + arcology.FSHedonisticDecadenceSMR = 0; + arcology.FSHedonisticDecadenceStrongFat = 0; + break; + case "FSChattelReligionist": + arcology.FSChattelReligionistLaw = 0; + arcology.FSChattelReligionistSMR = 0; + arcology.FSChattelReligionistCreed = 0; + break; + case "FSNull": + break; + default: /* all others have one law and one SMR */ + arcology[FSLaw] = 0; + arcology[FSSMR] = 0; + break; + } + if (FS !== "FSNull") { + arcology[FSDecoration] = 20; + if (FS === "FSRestart") { + V.propOutcome = 0; + V.failedElite = 0; + } + } + arcology[FS] = "unset"; + resetFSCredits(); +}; + +window.resetFSCredits = function() { + const V = State.variables; + let activeFS = 0; + for (let i = 0; i < setup.FutureSocieties.length; i++) { + if (V.arcologies[0][setup.FutureSocieties[i]] > 0) { + activeFS++; + } + } + console.log(activeFS); + if (V.arcologies[0].FSNull > 0) { /* possibly recalculate for multiculturalism */ + activeFS--; + if (V.FSCreditCount === 4) { + activeFS += V.arcologies[0].FSNull/25; + } else if (V.FSCreditCount === 6) { + activeFS += V.arcologies[0].FSNull/17; + } else if (V.FSCreditCount === 7) { + activeFS += V.arcologies[0].FSNull/15; + } else { + activeFS += V.arcologies[0].FSNull/20; + } + } + console.log(activeFS); + V.FSCredits = Math.max(Math.trunc(V.FSGotRepCredits - activeFS), 0); +}; diff --git a/src/npc/asDump.tw b/src/npc/asDump.tw index 95994df71ea55339ca3237ac8b8c32d6c26f7499..ea6597530b66da6189cbd4679ff7a1800d52b049 100644 --- a/src/npc/asDump.tw +++ b/src/npc/asDump.tw @@ -2,7 +2,7 @@ <<if (ndef $activeSlave) || ($activeSlave == 0)>> - @@.red;ERROR:@@ AS Dump, activeSlave invalid, returnTo is '$returnTo', previous passage was '<<print previous()>>'. Please report this. + @@.red;ERROR:@@ AS Dump, activeSlave invalid, returnTo is '$returnTo', previous passage was '<<print previous()>>'. Please report this. <<link "Continue">><<goto $returnTo>><</link>> | [[Go Back|previous()]] diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw index ca6eed3a1c58b36a980854f627ae051f9630ced8..b59d72de32e9726c7dedb9a685380a2a1818d6e1 100644 --- a/src/npc/databases/dSlavesDatabase.tw +++ b/src/npc/databases/dSlavesDatabase.tw @@ -235,7 +235,7 @@ /% Corrected skin to light?, and changed markings to freckled Bane70 %/ <<set _HS = {}>> -<<set _HS.slaveName = "Alexis", _HS.birthName = "Alexis", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 20, _HS.devotion = 60, _HS.muscles = 20, _HS.height = 150, _HS.race = "mixed race", _HS.eyeColor = "hazel", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "ebony", _HS.hStyle = "long", _HS.boobs = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.clit = 1, _HS.clitPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 2, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.vaginalSkill = 15, _HS.oralSkill = 15, _HS.analSkill = 15, _HS.intelligence = -20, _HS.energy = 100, _HS.attrXY = 75, _HS.attrXX = 75, _HS.fetishKnown = 1, _HS.customDesc = "She has a feminine personality despite her high testosterone.", _HS.areolae = 2, _HS.nipples = "huge", _HS.voice = 1, _HS.navelPiercing = 1, _HS.tonguePiercing = 1>> +<<set _HS.slaveName = "Alexis", _HS.birthName = "Alexis", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 20, _HS.devotion = 60, _HS.muscles = 20, _HS.height = 150, _HS.race = "mixed race", _HS.eyeColor = "hazel", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "ebony", _HS.hStyle = "long", _HS.boobs = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.clit = 1, _HS.clitPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 2, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.vaginalSkill = 15, _HS.oralSkill = 15, _HS.analSkill = 15, _HS.intelligence = -20, _HS.energy = 100, _HS.attrXY = 75, _HS.attrXX = 75, _HS.fetishKnown = 1, _HS.customDesc = "She has a feminine personality despite her high testosterone.", _HS.areolae = 2, _HS.nipples = "huge", _HS.voice = 1, _HS.navelPiercing = 1, _HS.tonguePiercing = 1>> <<set $heroSlaves.push(_HS)>> /*big clit*/ /*Changed eyes to hazel, increased clit, added a lot of piercings, changed fetish to nympho, fixed customdesc syntax -BoneyM*/ @@ -294,7 +294,7 @@ /*Fixed typo in customdesc, increased whore and entertainskill, changed eye color -BoneyM*/ <<set _HS = {}>> -<<set _HS.slaveName = "Lucy", _HS.birthName = "Lucy", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.race = "white", _HS.skin = "white", _HS.eyeColor = "blue", _HS.override_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "brown", _HS.hColor = "pale blonde", _HS.eyebrowHColor = "brown", _HS.pubicHColor = "brown", _HS.underArmHColor = "brown", _HS.hLength = 95, _HS.hStyle = "ass length", _HS.boobs = 300, _HS.butt = 3, _HS.buttTat = "degradation", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaTat = "degradation", _HS.ovaries = 1, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.height = 165>> +<<set _HS.slaveName = "Lucy", _HS.birthName = "Lucy", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.race = "white", _HS.skin = "white", _HS.eyeColor = "blue", _HS.override_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "brown", _HS.hColor = "pale blonde", _HS.eyebrowHColor = "brown", _HS.pubicHColor = "brown", _HS.underArmHColor = "brown", _HS.hLength = 95, _HS.hStyle = "ass length", _HS.boobs = 300, _HS.butt = 3, _HS.buttTat = "degradation", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaTat = "degradation", _HS.ovaries = 1, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.height = 165>> <<set $heroSlaves.push(_HS)>> /*innuendo*/ /*Added odd, changed eye color -BoneyM*/ diff --git a/src/npc/databases/dfSlavesDatabase.tw b/src/npc/databases/dfSlavesDatabase.tw index ac0cb74b62b6ad697fbbaf23dbd5cd4820a7697b..509a45f1a6504d75b9116b449e655e0294f3f6ff 100644 --- a/src/npc/databases/dfSlavesDatabase.tw +++ b/src/npc/databases/dfSlavesDatabase.tw @@ -43,7 +43,7 @@ <<if $seeExtreme == 1>> <<set _HS = {}>> -<<set _HS.slaveName = "Plum", _HS.birthName = "Plum", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 20, _HS.devotion = 75, _HS.muscles = 30, _HS.weight = 20, _HS.eyeColor = "brown", _HS.hColor = "brown", _HS.skin = "pale", _HS.hLength = 20, _HS.hStyle = "short and wavy", _HS.pubicHStyle = "waxed", _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.lips = 35, _HS.vagina = 4, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.vaginalSkill = 15, _HS.oralSkill = 15, _HS.analSkill = 15, _HS.vaginalAccessory = "large dildo", _HS.buttplug = "large plug", _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.customTat = "Cored plums are tattooed on her buttocks and on her face.", _HS.customDesc = "She has massive C-clamp piercings in her back that allow her to act as furniture, and a truly enormous vagina.", _HS.clitPiercing = 2, _HS.corsetPiercing = 1, _HS.sexualFlaw = "self hating", _HS.clothes = "no clothing", _HS.vaginalAccessory = "long, huge dildo">> +<<set _HS.slaveName = "Plum", _HS.birthName = "Plum", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, _HS.health = 20, _HS.devotion = 75, _HS.muscles = 30, _HS.weight = 20, _HS.eyeColor = "brown", _HS.hColor = "brown", _HS.skin = "pale", _HS.hLength = 20, _HS.hStyle = "short and wavy", _HS.pubicHStyle = "waxed", _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.lips = 35, _HS.vagina = 4, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.vaginalSkill = 15, _HS.oralSkill = 15, _HS.analSkill = 15, _HS.vaginalAccessory = "large dildo", _HS.buttplug = "large plug", _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.customTat = "Cored plums are tattooed on her buttocks and on her face.", _HS.customDesc = "She has massive C-clamp piercings in her back that allow her to act as furniture, and a truly enormous vagina.", _HS.clitPiercing = 2, _HS.corsetPiercing = 1, _HS.sexualFlaw = "self hating", _HS.clothes = "no clothing", _HS.vaginalAccessory = "long, huge dildo">> /*vibe nips, can act as furniture*/ <<set $heroSlaves.push(_HS)>> <</if>> diff --git a/src/npc/newSlaveIncestSex.tw b/src/npc/newSlaveIncestSex.tw index e9c4beae5aafdaffb8d59844c365233dcb87a191..17474c036522786cf12f0c6156157bf077a70f45 100644 --- a/src/npc/newSlaveIncestSex.tw +++ b/src/npc/newSlaveIncestSex.tw @@ -5,56 +5,56 @@ /* setup pronouns (switch on vagina for sisters and herms regardless of genes) */ <<set _oneshe = "she" >> <<set _oneher = "her" >> -<<if $sissy.vagina == -1 >> +<<if $relative.vagina == -1 >> <<set _oneshe = "he" >> <<set _oneher = "his" >> <</if>> <<set _othershe = "she" >> <<set _otherher = "her" >> -<<if $activeSlave.vagina == -1 >> +<<if $relative2.vagina == -1 >> <<set _othershe = "he" >> <<set _otherher = "his" >> <</if>> /* setup identifiers */ <<if $familyTesting == 1 >> - <<set _one = relativeTerm($activeSlave, $sissy)>> /* sissy is active's blank */ - <<set _other = relativeTerm($sissy, $activeSlave)>> /* active is sissy's blank */ + <<set _one = relativeTerm($relative2, $relative)>> /* relative is active's blank */ + <<set _other = relativeTerm($relative, $relative2)>> /* active is relative's blank */ <<else>> - <<if $sissy.actualAge == $activeSlave.actualAge>> + <<if $relative.actualAge == $relative2.actualAge>> <<set _one = "twin">> <<set _other = "twin">> <<else>> - <<set _one = $sissy.relation >> - <<set _other = $activeSlave.relation >> + <<set _one = $relative.relation >> + <<set _other = $relative2.relation >> <</if>> <</if>> /* gender relation descriptions */ /* TODO: is there a function for gender-aware relationships? */ -<<if $sissy.vagina == -1 >> +<<if $relative.vagina == -1 >> <<set _one = _one.replace("mother","father").replace("sister","brother").replace("daughter","son") >> <</if>> -<<if $activeSlave.vagina == -1 >> +<<if $relative2.vagina == -1 >> <<set _other = _other.replace("mother","father").replace("sister","brother").replace("daughter","son") >> <</if>> <<if _one == _other >> /* two sisters / brothers: identify by age */ - <<if $sissy.actualAge > $activeSlave.actualAge>> + <<if $relative.actualAge > $relative2.actualAge>> <<set _onelong = "older "+_one >> <<set _otherlong = "younger "+_other >> - <<elseif $sissy.actualAge < $activeSlave.actualAge>> + <<elseif $relative.actualAge < $relative2.actualAge>> /* Note: this is never true (at least without extended family mode) */ <<set _onelong = "younger "+_one >> <<set _otherlong = "older "+_other >> <<else>> /* twins, no real differentiation */ - <<if $sissy.vagina == -1 && _one != "brother">> + <<if $relative.vagina == -1 && _one != "brother">> <<set _onelong = _one + " brother">> <<elseif _one != "sister">> <<set _onelong = _one + " sister">> <</if>> - <<if $activeSlave.vagina == -1 && _one != "brother">> + <<if $relative2.vagina == -1 && _one != "brother">> <<set _otherlong = _other + " brother" >> <<elseif _one != "sister">> <<set _otherlong = _other + " sister" >> @@ -69,13 +69,13 @@ <<set _actions = [] >> <<set _secretions = [] >> <<set _genitals = [] >> -<<if ($sissy.dick == 0) || ($activeSlave.dick == 0) >> +<<if ($relative.dick == 0) || ($relative2.dick == 0) >> /* at least one vagina is present */ <<run _actions.push("clit-flinging tongue-action") >> /* TODO: check oral skill of slaves */ <<run _secretions.push("femcum") >> <<run _genitals.push("licked wet cunt") >> <</if>> -<<if ($sissy.dick != 0) || ($activeSlave.dick != 0) >> +<<if ($relative.dick != 0) || ($relative2.dick != 0) >> /* at least one penis is present */ <<run _actions.push("nose-pressed-against-balls deep-throats") >> /* TODO: check oral skill of slaves */ <<run _secretions.push("semen") >> @@ -88,13 +88,13 @@ <</if>> <<if $debugMode >> -SISSY SLAVE (FIRST): <br/> -_one ($sissy.relation) <br/> -$sissy.physicalAge <br/> +RELATIVE SLAVE (FIRST): <br/> +_one ($relative.relation) <br/> +$relative.physicalAge <br/> _oneshe / _oneher <br/> -ACTIVE SLAVE (SECOND): <br/> -_other ($activeSlave.relation) <br/> -$activeSlave.physicalAge <br/> +RELATIVE SLAVE (SECOND): <br/> +_other ($relative2.relation) <br/> +$relative2.physicalAge <br/> _othershe / _otherher <br/> <</if>> @@ -105,27 +105,27 @@ Now that you own them, you want to see proof of their love for each other. You o Hesitantly, they assume the 69 position on your couch. They have either never done this in front of a stranger or have never had sex this way before. You remind them that they are sex slaves now. They need to follow all orders, including sexual ones, so this is a relatively gentle start. <br/><br/> <<if _one == "twin">>One _one<<else>>The _onelong<</if>> shows more boldness as _oneshe lowers _oneher head towards _oneher _otherlong's privates. -<<if $activeSlave.dick == 0 >> +<<if $relative2.dick == 0 >> Carefully, _oneshe spreads _oneher _other's labia. Then _oneshe continues to give _oneher _other's exposed pussy a few experimental licks. At first, _oneher efforts seem to be futile, but after a while the _otherlong's clit becomes engorged and _otherher juices start flowing. <<else>> Uncertain, _oneshe grabs _oneher <<if _other == "twin">>_other<<else>>_otherlong<</if>>'s penis. Then _oneshe puts _oneher _other's flaccid member into _oneher mouth and gives it an experimental suck. At first, _oneher efforts seem to be futile, but after a while the _otherlong sports a nice, hard erection. <</if>> As the _other's arousal grows, _othershe becomes more eager to please _otherher _onelong, too. Going down on _otherher's lover's genitals, _othershe starts to mimic _otherher ministrations. - <<if ($sissy.dick == 0) != ($activeSlave.dick == 0) >> - Of course, _othershe has to adapt _otherher actions <<if $sissy.dick == 0 >>from the feelings on _otherher dick to the pussy pressed against _otherher lips.<<else>>from the feelings at _otherher pussy to the dick in _otherher mouth.<</if>> + <<if ($relative.dick == 0) != ($relative2.dick == 0) >> + Of course, _othershe has to adapt _otherher actions <<if $relative.dick == 0 >>from the feelings on _otherher dick to the pussy pressed against _otherher lips.<<else>>from the feelings at _otherher pussy to the dick in _otherher mouth.<</if>> <</if>> <br/><br/> You can tell how uncomfortable they are with you watching them, but as they become increasingly worked up, they lose their inhibitions. Soon, you are watching some fairly enthralling <<print $RecETSevent.replace("incest","") >> incest action at your office<<if _actions.length >>, including some enthusiastic <<print _actions.join(" and ")>><</if>>. Eventually, they bring each other to impressive mutual orgasms. Their lusty moans are muffled only by each others' crotches. Spent, exhausted, and with their faces covered in each others <<print _secretions.join(" and ")>>, they untangle to rest comfortably on your couch. <br/><br/> You indicate them to present themselves to you. Still shaking from the aftershocks of their orgasms, they stand side by side in front of you, panting, naked and with their _genitals dripping mixed juices. You simply nod, showing your approval. They are visibly relieved, and not only sexually. They are more confident of having made the right choice in enslaving themselves to you, since you seem @@.mediumaquamarine;trustworthy@@ and @@.hotpink;sympathetic.@@ They hug again, kissing and licking the sexual fluids off each others' stained faces. <</replace>> -<<set $sissy.devotion += 4>> -<<set $sissy.trust += 4>> -<<set $sissy.oralCount += 1>> +<<set $relative.devotion += 4>> +<<set $relative.trust += 4>> +<<set $relative.oralCount += 1>> <<set $oralTotal += 1>> -<<set $activeSlave.devotion += 4>> -<<set $activeSlave.trust += 4>> -<<set $activeSlave.oralCount += 1>> +<<set $relative2.devotion += 4>> +<<set $relative2.trust += 4>> +<<set $relative2.oralCount += 1>> <<set $oralTotal += 1>> <</link>> @@ -133,13 +133,13 @@ You indicate them to present themselves to you. Still shaking from the aftershoc <<link "Show them how cruel life in your arcology can be">> TODO: this needs to be written <<replace "#result">> <</replace>> -<<set $sissy.devotion -= 4>> -<<set $sissy.trust -= 4>> -<<set $sissy.oralCount += 1>> +<<set $relative.devotion -= 4>> +<<set $relative.trust -= 4>> +<<set $relative.oralCount += 1>> <<set $oralTotal += 1>> -<<set $activeSlave.devotion -= 4>> -<<set $activeSlave.trust -= 4>> -<<set $activeSlave.oralCount += 1>> +<<set $relative2.devotion -= 4>> +<<set $relative2.trust -= 4>> +<<set $relative2.oralCount += 1>> <<set $oralTotal += 1>> <</link>> */ diff --git a/src/pregmod/beastFucked.tw b/src/pregmod/beastFucked.tw index 4edc572752652d5a746e6ee9df1cd51da9848436..fea7e56766e660c257fae2263b473a80537286bd 100644 --- a/src/pregmod/beastFucked.tw +++ b/src/pregmod/beastFucked.tw @@ -159,7 +159,7 @@ <<if ($activeSlave.devotion <= 20)>> and only the threat of worse punishment prevents $him from running out of the room. <</if>> - You have $him <<if ($activeSlave.clothing != "naked") && (_sexAct != "oral")>>take off $his clothing and <</if>><<if ($activeSlave.collar != "no collar" || $activeSlave.collar != "none")>>$his $activeSlave.collar, then <</if>><<if _sexAct == "oral">>lay <<else>>kneel <</if>>down on the floor <<if _sexAct != "oral">>with $his ass in the air<<else>>on $his back<</if>> + You have $him <<if ($activeSlave.clothing != "naked") && (_sexAct != "oral")>>take off $his clothing, then <</if>><<if _sexAct == "oral">>lay <<else>>kneel <</if>>down on the floor <<if _sexAct != "oral">>with $his ass in the air<<else>>on $his back<</if>> <<else>> and $Bodyguard.slaveName has to physically prevent $him from running out of the room<<if random(1,100) > 75>><<set $activeSlave.minorInjury = either("black eye", "split lip", "bruise")>>, resulting in a $activeSlave.minorInjury. <<else>>. <</if>>You <<if ($activeSlave.clothing != "naked")>>force $him to take off $his $activeSlave.clothing and <</if>>restrain $him on the floor <<if _sexAct != "oral">>with $his ass in the air<<else>>with a ring gag in $his mouth<</if>> -- all the while ignoring $his screams and pleas for mercy -- <</if>> diff --git a/src/pregmod/rePregInventorText.tw b/src/pregmod/rePregInventorText.tw index 1b031d5faf114786053aeb9cf13efe86f866c43d..07d70b3850ebb99f789acfcc207cc548b9924593 100644 --- a/src/pregmod/rePregInventorText.tw +++ b/src/pregmod/rePregInventorText.tw @@ -102,7 +102,7 @@ <<else>> thin lips, <</if>> - making no noise. You know $him well enough to understand that the combined pleasure and pain from the talkshow host's uncareful touch has caused $him to experience one of $his "secret little orgasms," and you savor the sight of $him squirming as $he tries not to let on. + making no noise. You know $him well enough to understand that the combined pleasure and pain from the talkshow host's uncareful touch has caused $him to experience one of $his "secret little orgasms," and you savor the sight of $him squirming as $he tries not to let on. <br><br> "So, $activeSlave.slaveName," Millie says, not taking her eyes off of the slave's incredibly fecund figure, "why don't you tell us about your inventions?" <br><br> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 0925bce5b532034a7844b4ec7953e0786f86afcb..ef73107756b641edcbe55779f36ccc285ab56885 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -843,13 +843,13 @@ <<unset $defaultFelinePlural = "cougars">> <</if>> <<if ndef $activeCanine>> - <<set $activeCanine = -1>> + <<set $activeCanine = 0>> <</if>> <<if ndef $activeHooved>> - <<set $activeHooved = -1>> + <<set $activeHooved = 0>> <</if>> <<if ndef $activeFeline>> - <<set $activeFeline = -1>> + <<set $activeFeline = 0>> <</if>> <<if def $boughtWolves>> <<unset $boughtWolves>> @@ -1543,18 +1543,21 @@ <<elseif ndef $arcologies[0].FSGenderRadicalist>> <<set $arcologies[0].FSGenderRadicalist = "unset">> <</if>> - <<if def $FSGenderRadicalistLaw>> <<unset $FSGenderRadicalistLaw>> <</if>> - <<if ndef $arcologies[0].FSGenderRadicalistLawBeauty>> <<set $arcologies[0].FSGenderRadicalistLawBeauty = 0>> <</if>> - <<if ndef $arcologies[0].FSGenderRadicalistLawFuta>> <<set $arcologies[0].FSGenderRadicalistLawFuta = 0>> <</if>> +<<if def $arcologies[0].FSGenderRadicalistLawDicks>> + <<run delete $arcologies[0].FSGenderRadicalistLawDicks>> +<</if>> +<<if def $arcologies[0].FSGenderRadicalistSMR>> + <<run delete $arcologies[0].FSGenderRadicalistSMR>> +<</if>> <<if def $FSBodyPurist && $FSBodyPurist != "unset">> <<set $arcologies[0].FSBodyPurist = $FSBodyPurist>> @@ -1591,11 +1594,14 @@ <<set $arcologies[0].FSTransformationFetishist = "unset">> <</if>> -<<if def $FSTransformationFetishistLaw && $FSTransformationFetishistLaw != 0>> - <<set $arcologies[0].FSTransformationFetishistLaw = $FSTransformationFetishistLaw>> - <<unset $FSTransformationFetishistLaw>> -<<elseif ndef $arcologies[0].FSTransformationFetishistLaw>> - <<set $arcologies[0].FSTransformationFetishistLaw = 0>> +<<if def $FSTransformationFetishistSMR && $FSTransformationFetishistSMR != 0>> + <<set $arcologies[0].FSTransformationFetishistSMR = $FSTransformationFetishistSMR>> + <<unset $FSTransformationFetishistSMR>> +<<elseif ndef $arcologies[0].FSTransformationFetishistSMR>> + <<set $arcologies[0].FSTransformationFetishistSMR = 0>> +<</if>> +<<if def $arcologies[0].FSTransformationFetishistLaw>> + <<run delete $arcologies[0].FSTransformationFetishistLaw>> <</if>> <<if def $FSAssetExpansionist && $FSAssetExpansionist != "unset">> @@ -1611,6 +1617,9 @@ <<elseif ndef $arcologies[0].FSAssetExpansionistSMR>> <<set $arcologies[0].FSAssetExpansionistSMR = 0>> <</if>> +<<if def $arcologies[0].FSAssetExpansionistLaw>> + <<run delete $arcologies[0].FSAssetExpansionistLaw>> +<</if>> <<if def $FSSlimnessEnthusiast && $FSSlimnessEnthusiast != "unset">> <<set $arcologies[0].FSSlimnessEnthusiast = $FSSlimnessEnthusiast>> @@ -1759,6 +1768,10 @@ <<set $arcologies[0].FSChineseRevivalistLaw = 0>> <</if>> +<<if def $arcologies[0].FSNullLaw>> + <<run delete $arcologies[0].FSNullLaw>> +<</if>> + <<silently>> <<include "MOD_Edit FS Cheat Datatype Cleanup">> <<include "MOD_Edit Neighbor Arcology Cheat Datatype Cleanup">> diff --git a/src/uncategorized/RECI.tw b/src/uncategorized/RECI.tw index 696959f80950bbab09ad32f9b719aa2333fbf135..e46f4035f8abab158374620863afd362cc30864f 100644 --- a/src/uncategorized/RECI.tw +++ b/src/uncategorized/RECI.tw @@ -318,9 +318,9 @@ $He looks pensive, and goes through two false starts before $he clears $his thro <<setLocalPronouns $Concubine 2>> <<EventNameDelink $activeSlave>> <<replace "#result">> - You tell $him $he's got a nice asspussy, and grope her thoroughly, cupping $his buttocks with one hand and squeezing a breast with the other. $He looks <<if ($activeSlave.fetish == "buttslut") && ($activeSlave.fetishKnown == 1)>>desperately eager<<else>>ready and willing<</if>>, and angles $himself just right, but you administer a light slap to $his $activeSlave.skin ass and continue, telling her that it's so nice you feel like sharing it. $He's <<if ($activeSlave.fetish == "buttslut") && ($activeSlave.fetishKnown == 1)>>so ready to fuck $he can't quite think of what to say<<else>>not quite sure how to respond<</if>>, and before she can figure it out, $Concubine.slaveName hurries in, responding to your summons. Of course, $activeSlave.slaveName is no stranger to $Concubine.slaveName, who takes in the situation at a glance and <<if $Concubine.dick > 0>>instantly achieves a painfully hard erection<<else>>immediately flushes with arousal<</if>>. $Concubine.slaveName<<if $Concubine.dick == 0>> dons a strap-on and<</if>> clambers up onto the (strongly built) bathroom counter. Since saliva is plenty of lube for $activeSlave.slaveName's experienced ass, she points a meaningful finger at <<if $Concubine.dick == 0>>the phallus<<else>>her cock<</if>>, and $activeSlave.slaveName begins to suck it enthusiastically, trying to get it as wet as possible for the sake of $his butt. + You tell $him $he's got a nice asspussy, and grope $him thoroughly, cupping $his buttocks with one hand and squeezing a breast with the other. $He looks <<if ($activeSlave.fetish == "buttslut") && ($activeSlave.fetishKnown == 1)>>desperately eager<<else>>ready and willing<</if>>, and angles $himself just right, but you administer a light slap to $his $activeSlave.skin ass and continue, telling her that it's so nice you feel like sharing it. $He's <<if ($activeSlave.fetish == "buttslut") && ($activeSlave.fetishKnown == 1)>>so ready to fuck $he can't quite think of what to say<<else>>not quite sure how to respond<</if>>, and before she can figure it out, $Concubine.slaveName hurries in, responding to your summons. Of course, $activeSlave.slaveName is no stranger to $Concubine.slaveName, who takes in the situation at a glance and <<if $Concubine.dick > 0>>instantly achieves a painfully hard erection<<else>>immediately flushes with arousal<</if>>. $Concubine.slaveName<<if $Concubine.dick == 0>> dons a strap-on and<</if>> clambers up onto the (strongly built) bathroom counter. Since saliva is plenty of lube for $activeSlave.slaveName's experienced ass, she points a meaningful finger at <<if $Concubine.dick == 0>>the phallus<<else>>her cock<</if>>, and $activeSlave.slaveName begins to suck it enthusiastically, trying to get it as wet as possible for the sake of $his butt. <br><br> - Since $activeSlave.slaveName is being so good, you decide to help get $him ready, and push her sideways so she straddles the counter's edge. $He whimpers into the <<if $Concubine.dick == 0>>dildo<<else>>dick<</if>> in $his mouth as she feels her <<if $activeSlave.dick > 0>><<if ($activeSlave.hormoneBalance >= 100) || ($activeSlave.dickAccessory == "chastity")>>chastity cage<<elseif ($activeSlave.hormoneBalance >= 100) || ($activeSlave.balls == 0) || ($activeSlave.ballType == "sterile")>>soft dickclit<<else>>hard cock<</if>><<else>>mons<</if>> graze the hard counter, and then stiffens as you penetrate $his bottom. When you judge that your Head Girl is wet enough, you nod to her, and she takes $activeSlave.slaveName by the hand, pulling $him up onto _his2 lap. + Since $activeSlave.slaveName is being so good, you decide to help get $him ready, and push her sideways so she straddles the counter's edge. $He whimpers into the <<if $Concubine.dick == 0>>dildo<<else>>dick<</if>> in $his mouth as she feels her <<if $activeSlave.dick > 0>><<if ($activeSlave.hormoneBalance >= 100) || ($activeSlave.dickAccessory == "chastity")>>chastity cage<<elseif ($activeSlave.hormoneBalance >= 100) || ($activeSlave.balls == 0) || ($activeSlave.ballType == "sterile")>>soft dickclit<<else>>hard cock<</if>><<else>>mons<</if>> graze the hard counter, and then stiffens as you penetrate $his bottom. When you judge that your Head Girl is wet enough, you nod to _him2, and she takes $activeSlave.slaveName by the hand, pulling $him up onto _his2 lap. <<if ($Concubine.boobs > 4000) && ($activeSlave.boobs > 4000)>> Their tits are so huge that they can't reach each other to kiss, chest-to-chest like that. $Concubine.slaveName settles for blowing the other slave an exaggerated kiss, which makes $him laugh. <<else>> @@ -541,14 +541,14 @@ $He looks pensive, and goes through two false starts before $he clears $his thro <<link "$He's pretty enough to decorate your arm for a night out">> <<EventNameDelink $activeSlave>> <<replace "#result">> - You tell her to head down to the wardrobe and put on the outfit that'll be laid out for her there. $He obeys promptly, but does not return for some time, having gotten instructions from $assistantName along the way to put extra effort into $his grooming. When she finally returns, the effect is striking. <<if $activeSlave.face > 10>>$He's a gorgeous girl with or without makeup, dressed up or naked, but she's especially luscious tonight.<<else>>$His face is not flawless, but she's conscious of $his transformation, and the new confidence in $his beauty adds a special glow that cannot be faked.<</if>> $His evening dress is elegant; it's quite slutty by old world standards, but according to Free Cities fashion, it's just about the most conservative gown a slave can be expected to wear, and quite daring in that it isn't immediately obvious whether she's a slave or not. The tops of $his areolae are hardly even visible.<br><br> - You take her out to a nice lounge, with blue-toned light and soft music. $He clings to your arm, pressing $himself against you just the right amount: not enough to demand sex right now, but enough to raise the anticipation of it later. $He's a slave, so she does not eat or drink the usual fare on offer, but the establishment is used to slaves and offers flavorful variation on liquid slave food. $He drinks the translucent fluid out of a tall glass, carefully maintaining $his poise. You circulate, leaving her at the bar when acquaintances appear. $He perches on a stool, conscious of and pleased by the discreet admiration of $his body, delectably outlined by the tight dress. Once a new arrival who did not see you with her introduces himself to her. He's tall and fit and silver-haired, but he picked her out of the room to approach, and it's with polite disappointment that he reacts to $his indication of you, across the room - "I'm <<s>>orry, <<S>>ir, that'<<s>> my <<Master>> there." He offers a nonverbal apology without coming over, which you accept with a wave: it's such a common mistake in Free Cities high society that it's universally brushed off without offense. It happens again later in the night, when a slightly tipsy free woman occupies the barstool next to $activeSlave.slaveName's and keeps trying to relax against her until the flattered slave explains $himself again. When you bring her home at the end of the night, $his eyes are shining with @@.mediumaquamarine;private assurance,@@ and she presses $himself against you more closely than ever. + You tell $him to head down to the wardrobe and put on the outfit that'll be laid out for $him there. $He obeys promptly, but does not return for some time, having gotten instructions from $assistantName along the way to put extra effort into $his grooming. When she finally returns, the effect is striking. <<if $activeSlave.face > 10>>$He's a gorgeous girl with or without makeup, dressed up or naked, but she's especially luscious tonight.<<else>>$His face is not flawless, but she's conscious of $his transformation, and the new confidence in $his beauty adds a special glow that cannot be faked.<</if>> $His evening dress is elegant; it's quite slutty by old world standards, but according to Free Cities fashion, it's just about the most conservative gown a slave can be expected to wear, and quite daring in that it isn't immediately obvious whether she's a slave or not. The tops of $his areolae are hardly even visible.<br><br> + You take $him out to a nice lounge, with blue-toned light and soft music. $He clings to your arm, pressing $himself against you just the right amount: not enough to demand sex right now, but enough to raise the anticipation of it later. $He's a slave, so she does not eat or drink the usual fare on offer, but the establishment is used to slaves and offers flavorful variation on liquid slave food. $He drinks the translucent fluid out of a tall glass, carefully maintaining $his poise. You circulate, leaving $him at the bar when acquaintances appear. $He perches on a stool, conscious of and pleased by the discreet admiration of $his body, delectably outlined by the tight dress. Once a new arrival who did not see you with $him introduces himself to $him. He's tall and fit and silver-haired, but he picked $him out of the room to approach, and it's with polite disappointment that he reacts to $his indication of you, across the room - "I'm <<s>>orry, <<S>>ir, that'<<s>> my <<Master>> there." He offers a nonverbal apology without coming over, which you accept with a wave: it's such a common mistake in Free Cities high society that it's universally brushed off without offense. It happens again later in the night, when a slightly tipsy free woman occupies the barstool next to $activeSlave.slaveName's and keeps trying to relax against $him until the flattered slave explains $himself again. When you bring $him home at the end of the night, $his eyes are shining with @@.mediumaquamarine;private assurance,@@ and she presses $himself against you more closely than ever. <<set $activeSlave.analCount += 1>> <<set $analTotal += 1>> <<set $activeSlave.trust += 4>> <</replace>> <</link>> -<br><<link "Show her off online">> +<br><<link "Show $him off online">> <<EventNameDelink $activeSlave>> <<replace "#result">> You tell her that she's become a very pretty sex slave, and to prove it, you set up a live feed for her that's available for free in the old world. The Free Cities produce an utter torrent of hardcore video, so much that there's never any profit to be made off it anymore, but viewers begin to join the channel anyway and by the end of the week $he has thousands of eyes watching her as she <<if $activeSlave.assignment == "whore">>sells $his body<<else>>has sex with random citizens<</if>> in the hallways of $arcologies[0].name. <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> keeps her constantly informed of how many people are watching her get fucked, how many of them are likely masturbating to $his body, and how many inquiries about $him $assistantName is culling out of your inbox. $He slowly gets used to $his starring role in an impromptu free hardcore stream, but never quite stops stealing wondering glances at the nearest camera, as though she cannot believe that so many people would sexualize her. This lends her a naughtiness that cannot be faked, garnering $him @@.green;much attention@@ by the end of the week. diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index daf1218cce9497efbb2dee60d1724e4d4c21b663..fb892be5ea387c1b2b3214cc91faed7896d8a688 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -4286,7 +4286,7 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <<case "devoted fearful slave">> -You are working late tonight, poring over some particularly troublesome business documents, though thankfully the end appears to be in sight. The sun has all but completely slipped below the horizon, drowning your office in moody twilight. $assistantName, seeing that you are finally approaching the end of a long day, takes the liberty of having a +You are working late tonight, poring over some particularly troublesome business documents -- though, thankfully, the end appears to be in sight. The sun has all but completely slipped below the horizon, drowning your office in moody twilight. Seeing that you are finally approaching the end of a long day, $assistantName, takes the liberty of having a <<if $PC.refreshmentType == 0>> $PC.refreshment <<elseif $PC.refreshmentType == 1>> @@ -4302,7 +4302,7 @@ You are working late tonight, poring over some particularly troublesome business <<elseif $PC.refreshmentType == 6>> tab of $PC.refreshment <</if>> -brought in to you. This time <<EventNameLink $activeSlave>> has been sent to deliver it. $He loves you, but fears you simultaneously. Such relationships were not uncommon before the advent of modern slavery, but they are especially prevalent in its wake, as fear has proven a highly effective control method for those slave owners with the inclination and relative lack of conscience to utilize it as such. You hurriedly put the finishing touches on your work, eager to be done, and then reach for your $PC.refreshment. $activeSlave.slaveName flinches at your sudden movement, taking a few frightened steps back, nearly dropping the serving tray and leaving you grasping at thin air. It was a simple fear response, $he didn't realize you were ready for your treat and instinctively thought you were reaching out to strike $him. Tears swell up in $his eyes as $he apologizes profusely. +brought in to you. This time <<EventNameLink $activeSlave>> has been sent to deliver it. $He loves you, but fears you simultaneously. Such relationships were not uncommon before the advent of modern slavery, but they are especially prevalent in its wake, as fear has proven a highly effective control method for those slave owners with the inclination and relative lack of conscience to utilize it as such. You hurriedly put the finishing touches on your work, eager to be done, and then reach for your $PC.refreshment. $activeSlave.slaveName flinches at your sudden movement, taking a few frightened steps back, nearly dropping the serving tray and leaving you grasping at thin air. It was a simple fear response; $he didn't realize you were ready for your treat and instinctively thought you were reaching out to strike $him. Tears swell up in $his eyes as $he apologizes profusely. <<default>> <br>ERROR: bad RESS event $RESSevent @@ -20530,7 +20530,7 @@ You tell her kindly that you understand, and that $he'll be trained to address t <<link "Comfort $him">> <<EventNameDelink $activeSlave>> <<replace "#result">> - You set the $PC.refreshment aside on your desk for now, and take $him gently by the hand. You lead $him out onto the balcony of the Penthouse over to the railing. $He obediently assumes a position for you, bracing $his arms on the railing, arching $his back and sticking $his bottom out to present $himself for use. Much to $his surprise, your hand guides $him back into a comfortable position, and simply pulls $him close into you. You explain to $him that $he is a good $girl who tries $his best, and that you don't want $him to fear you. After a little coddling, you fall silent, and simply hold $him tight, watching the street lights of $arcologies[0].name blink to life one after the other, slowly transforming the arcology into a vibrant, elegant light show. $activeSlave.slaveName can hardly believe whats happening, but eventually is able to relax fully, melting into your arms like butter into a hot pan. $He rests $his head lovingly against your chest and silently appreciates the view with you. When $he eventually departs, $he does so with @@.hotpink;tears of joy@@, @@.mediumaquamarine;rather than fear@@, welling behind $his eyes. + You set the $PC.refreshment aside on your desk for now, and take $him gently by the hand. You lead $him out onto the balcony of the Penthouse over to the railing. $He obediently assumes a position for you, bracing $his arms on the railing, arching $his back and sticking $his bottom out to present $himself for use. Much to $his surprise, your hand guides $him back into a comfortable position, and simply pulls $him close into you. You explain to $him that $he is a good $girl who tries $his best, and that you don't want $him to fear you. After a little coddling, you fall silent, and simply hold $him tight, watching the street lights of $arcologies[0].name blink to life one after the other, slowly transforming the arcology into a vibrant, elegant light show. $activeSlave.slaveName can hardly believe what's happening, but eventually is able to relax fully, melting into your arms like butter into a hot pan. $He rests $his head lovingly against your chest and silently appreciates the view with you. When $he eventually departs, $he does so with @@.hotpink;tears of joy,@@ @@.mediumaquamarine;rather than fear,@@ welling behind $his eyes. <<set $activeSlave.devotion += 15>> <<set $activeSlave.trust += 15>> <</replace>> @@ -20546,7 +20546,7 @@ You tell her kindly that you understand, and that $he'll be trained to address t <br><<link "Vindicate $his fears">> <<EventNameDelink $activeSlave>> <<replace "#result">> - You set the $PC.refreshment aside on your desk, then spin around as the slave least expects it, delivering a fierce backhand slap to $his <<if $activeSlave.face >= -10>>pretty<<else>>homely<</if>> face that nearly sends $him to the ground. You instruct $him to be more careful in future, and that you wont tolerate slaves that shy away from you for any reason, nor ones that are clumsy enough to nearly drop a serving tray while standing still. $He all but begs upon $his hands and knees for your forgiveness. You dismiss $him without further comment, and sit down to enjoy your evening refreshments. The battered, dejected slave slinks away, @@.gold;choking down tears@@. $He will be @@.hotpink;less careless@@ in future. + You set the $PC.refreshment aside on your desk, then spin around as the slave least expects it/*TODO: this sentence needs work*/, delivering a fierce backhand slap to $his <<if $activeSlave.face >= -10>>pretty<<else>>homely<</if>> face that nearly sends $him to the ground. You instruct $him to be more careful in future, and that you won't tolerate slaves that shy away from you for any reason, nor ones that are clumsy enough to nearly drop a serving tray while standing still. $He all but begs upon $his hands and knees for your forgiveness. You dismiss $him without further comment, and sit down to enjoy your evening refreshments. The battered, dejected slave slinks away, @@.gold;choking down tears@@. $He will be @@.hotpink;less careless@@ in future. <<set $activeSlave.devotion += 10>> <<set $activeSlave.trust -= 10>> <</replace>> diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw index 96be088c33e5ae709529623e240cca3707af4743..71bd08974ed3086d977e2d063a233eba4e0f7ff5 100644 --- a/src/uncategorized/arcmgmt.tw +++ b/src/uncategorized/arcmgmt.tw @@ -222,9 +222,9 @@ _topClassP = 1>> _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSArabianRevivalist, 100) / 20) * 0.025>> <</if>> <<if $arcologies[0].FSChineseRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSDegradationist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.025>> + <<set _FSScore += Math.min($arcologies[0].FSChineseRevivalist, 100), + _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSChineseRevivalist, 100) / 20) * 0.02, + _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSChineseRevivalist, 100) / 20) * 0.025>> <</if>> <<if $arcologies[0].FSAztecRevivalist != "unset">> <<set _FSScore += Math.min($arcologies[0].FSAztecRevivalist, 100), @@ -571,7 +571,11 @@ $helots -= _expirationPC, $fuckdolls -= _expirationFD, $menialBioreactors -= _expirationBR>> <<if _expiration > 1>> - @@.red;<<print _expiration>> slaves died@@ due to the tough working conditions in your arcology. + <<if _expirationFS <= 0.5>> + @@.red;<<print _expiration>> slaves passed away@@ due to natural causes. + <<else>> + @@.red;<<print _expiration>> slaves died@@ due to the tough working conditions in your arcology. + <</if>> <<if _expirationPC > 1>> Of which @@.red;<<print _expirationPC>> were yours.@@ <<elseif _expirationPC > 0>> @@ -586,7 +590,7 @@ $lowerClass -= _enslaved>> /*Bad weather switch*/ <<if $weatherToday.severity > 3>> <<if $secExp == 1>> - <<if $docks && $railway < 4>> + <<if $docks < 4 && $railway < 4>> <<set _weatherFreeze = 1>> <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// <<else>> @@ -600,11 +604,11 @@ $lowerClass -= _enslaved>> <</if>> <<elseif $weatherToday.severity > 2>> <<if $secExp == 1>> - <<if $docks && $railway < 3>> + <<if $docks < 3 && $railway < 3>> <<set _weatherFreeze = 1>> <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// <<else>> - <<set _weatherFeeze = 0>> + <<set _weatherFreeze = 0>> <</if>> <<elseif $antiWeatherFreeze < 1>> <<set _weatherFreeze = 1>> @@ -616,6 +620,27 @@ $lowerClass -= _enslaved>> <<set _weatherFreeze = 0>> <</if>> +/*For enslavement that happens despite the weather*/ +<<if _weatherFreeze == 1>> + <<if _enslaved > 0>> + <<if _enslaved < 4>> + <<set _enslavedPC = 1, + _enslavedNPC = _enslaved - 1>> + <<else>> + <<set _enslavedPC = Math.trunc(_enslaved / 4), + _enslavedNPC = _enslaved - _enslavedPC>> + <</if>> + <<set $helots += _enslavedPC, + $NPCSlaves += _enslavedNPC>> + <</if>> + <<if _enslaved > 1>> + <br>In total @@.green;<<print _enslaved>> lower class citizens@@ were enslaved for failing to pay their debts. + <br>@@.green;You enslaved <<print _enslavedPC>>@@ of them while other debtholders in the arcology enslaved the remaining <<print _enslavedNPC>>. + <<elseif _enslaved > 0>> + <br>@@.green;As arcology owner you claimed the slave.@@ + <</if>> +<</if>> + /*Bunch of visitor stuff*/ <<if _weatherFreeze == 0>> <<set _FSScore = _FSScore / $FSCreditCount>> diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw index ac606ca3955adb754b30f772cd1d7e06f2af8fe1..d3d8a73df118b479b797881a2539ef4f9dacc7ca 100644 --- a/src/uncategorized/fsDevelopments.tw +++ b/src/uncategorized/fsDevelopments.tw @@ -685,8 +685,8 @@ $arcologies[0].name is unconvinced of $arcologies[0].FSSupremacistRace superiority. <</if>> <<if $arcologies[0].FSSupremacist < 0>> - <<set $arcologies[0].FSSupremacist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSSupremacistLawME = 0, $arcologies[0].FSSupremacistSMR = 0>> + <<run removeFS("FSSupremacist")>> + <<if $assistantFSAppearance == "supremacist">><<set $assistantFSAppearance = "default">><</if>> <<ClearFacilityDecorations>> @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ <<elseif $arcologies[0].FSSupremacist > $arcologies[0].FSSupremacistDecoration>> @@ -714,8 +714,8 @@ $arcologies[0].name is unconvinced of the inferiority of $arcologies[0].FSSubjugationistRace people. <</if>> <<if $arcologies[0].FSSubjugationist < 0>> - <<set $arcologies[0].FSSubjugationist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSSubjugationistLawME = 0, $arcologies[0].FSSubjugationistSMR = 0>> + <<run removeFS("FSSubjugationist")>> + <<if $assistantFSAppearance == "subjugationist">><<set $assistantFSAppearance = "default">><</if>> <<ClearFacilityDecorations>> @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ <<elseif $arcologies[0].FSSubjugationist > $arcologies[0].FSSubjugationistDecoration>> @@ -731,650 +731,631 @@ <</if>> <<if $arcologies[0].FSRepopulationFocus != "unset">> -<<if $arcologies[0].FSRepopulationFocus >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that all women should be pregnant. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSRepopulationFocus >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly that all women should be pregnant. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSRepopulationFocus >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the idea that all women should be pregnant. -<<else>> - $arcologies[0].name is unconvinced that all women should be pregnant. -<</if>> -<<if $arcologies[0].FSRepopulationFocus < 0>> - <<set $arcologies[0].FSRepopulationFocus = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSRepopulationFocusSMR = 0, $arcologies[0].FSRepopulationFocusLaw = 0>> - <<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSRepopulationFocus > $arcologies[0].FSRepopulationFocusDecoration>> - <<set $arcologies[0].FSRepopulationFocus = $arcologies[0].FSRepopulationFocusDecoration>> -<</if>> -<<if $arcologies[0].FSRepopulationFocusDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSRepopulationFocus == $arcologies[0].FSRepopulationFocusDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSRepopulationFocusSMR == 1>> - <<set $arcologies[0].FSRepopulationFocus += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSRepopulationFocus >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that all women should be pregnant. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSRepopulationFocus >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly that all women should be pregnant. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSRepopulationFocus >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the idea that all women should be pregnant. + <<else>> + $arcologies[0].name is unconvinced that all women should be pregnant. + <</if>> + <<if $arcologies[0].FSRepopulationFocus < 0>> + <<run removeFS("FSRepopulationFocus")>> + <<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSRepopulationFocus > $arcologies[0].FSRepopulationFocusDecoration>> + <<set $arcologies[0].FSRepopulationFocus = $arcologies[0].FSRepopulationFocusDecoration>> + <</if>> + <<if $arcologies[0].FSRepopulationFocusDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSRepopulationFocus == $arcologies[0].FSRepopulationFocusDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSRepopulationFocusSMR == 1>> + <<set $arcologies[0].FSRepopulationFocus += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSRestart != "unset">> -<<if $arcologies[0].FSRestart >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that only the elite should reproduce. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSRestart >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly that only the elite should reproduce. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSRestart >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the idea only the elite should reproduce. -<<else>> - $arcologies[0].name is unconvinced that only the elite should reproduce. -<</if>> -<<if $arcologies[0].FSRestart < 0 && $arcologies[0].FSRestartDecoration != 100>> - <<set $arcologies[0].FSRestart = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSRestartSMR = 0, $arcologies[0].FSRestartLaw = 0>> - <<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSRestart > $arcologies[0].FSRestartDecoration>> - <<set $arcologies[0].FSRestart = $arcologies[0].FSRestartDecoration>> -<</if>> -<<if $arcologies[0].FSRestartDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSRestart == $arcologies[0].FSRestartDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSRestartSMR == 1>> - <<set $arcologies[0].FSRestart += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSRestart >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that only the elite should reproduce. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSRestart >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly that only the elite should reproduce. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSRestart >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the idea only the elite should reproduce. + <<else>> + $arcologies[0].name is unconvinced that only the elite should reproduce. + <</if>> + <<if $arcologies[0].FSRestart < 0 && $arcologies[0].FSRestartDecoration != 100>> + <<run removeFS("FSRestart")>> + <<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSRestart > $arcologies[0].FSRestartDecoration>> + <<set $arcologies[0].FSRestart = $arcologies[0].FSRestartDecoration>> + <</if>> + <<if $arcologies[0].FSRestartDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSRestart == $arcologies[0].FSRestartDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSRestartSMR == 1>> + <<set $arcologies[0].FSRestart += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSGenderRadicalist != "unset">> -<<if $arcologies[0].FSGenderRadicalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly in the need to redefine gender around power. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSGenderRadicalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the need to redefine gender around power. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSGenderRadicalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the need to redefine gender around power. -<<else>> - $arcologies[0].name is unconvinced of the need to redefine gender around power. -<</if>> -<<if $arcologies[0].FSGenderRadicalist < 0>> - <<set $arcologies[0].FSGenderRadicalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSGenderRadicalistSMR = 0, $arcologies[0].FSGenderRadicalistLawDicks = 0, $arcologies[0].FSGenderRadicalistLawFuta = 0, $arcologies[0].FSGenderRadicalistLawBeauty = 0>> - <<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSGenderRadicalist > $arcologies[0].FSGenderRadicalistDecoration>> - <<set $arcologies[0].FSGenderRadicalist = $arcologies[0].FSGenderRadicalistDecoration>> -<</if>> -<<if $arcologies[0].FSGenderRadicalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSGenderRadicalist == $arcologies[0].FSGenderRadicalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSGenderRadicalistSMR == 1>> - <<set $arcologies[0].FSGenderRadicalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSGenderRadicalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly in the need to redefine gender around power. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSGenderRadicalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the need to redefine gender around power. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSGenderRadicalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the need to redefine gender around power. + <<else>> + $arcologies[0].name is unconvinced of the need to redefine gender around power. + <</if>> + <<if $arcologies[0].FSGenderRadicalist < 0>> + <<run removeFS("FSGenderRadicalist")>> + <<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSGenderRadicalist > $arcologies[0].FSGenderRadicalistDecoration>> + <<set $arcologies[0].FSGenderRadicalist = $arcologies[0].FSGenderRadicalistDecoration>> + <</if>> + <<if $arcologies[0].FSGenderRadicalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSGenderRadicalist == $arcologies[0].FSGenderRadicalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSGenderRadicalistSMR == 1>> + <<set $arcologies[0].FSGenderRadicalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSGenderFundamentalist != "unset">> -<<if $arcologies[0].FSGenderFundamentalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly in the need to preserve traditional gender roles. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSGenderFundamentalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the need to preserve traditional gender roles. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSGenderFundamentalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the need to preserve traditional gender roles. -<<else>> - $arcologies[0].name is unconvinced of the need to preserve traditional gender roles. -<</if>> -<<if $arcologies[0].FSGenderFundamentalist < 0>> - <<set $arcologies[0].FSGenderFundamentalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSGenderFundamentalistSMR = 0, $arcologies[0].FSGenderFundamentalistLawBimbo = 0>> - <<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSGenderFundamentalist > $arcologies[0].FSGenderFundamentalistDecoration>> - <<set $arcologies[0].FSGenderFundamentalist = $arcologies[0].FSGenderFundamentalistDecoration>> -<</if>> -<<if $arcologies[0].FSGenderFundamentalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSGenderFundamentalist == $arcologies[0].FSGenderFundamentalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSGenderFundamentalistSMR == 1>> - <<set $arcologies[0].FSGenderFundamentalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSGenderFundamentalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly in the need to preserve traditional gender roles. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSGenderFundamentalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the need to preserve traditional gender roles. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSGenderFundamentalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the need to preserve traditional gender roles. + <<else>> + $arcologies[0].name is unconvinced of the need to preserve traditional gender roles. + <</if>> + <<if $arcologies[0].FSGenderFundamentalist < 0>> + <<run removeFS("FSGenderFundamentalist")>> + <<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSGenderFundamentalist > $arcologies[0].FSGenderFundamentalistDecoration>> + <<set $arcologies[0].FSGenderFundamentalist = $arcologies[0].FSGenderFundamentalistDecoration>> + <</if>> + <<if $arcologies[0].FSGenderFundamentalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSGenderFundamentalist == $arcologies[0].FSGenderFundamentalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSGenderFundamentalistSMR == 1>> + <<set $arcologies[0].FSGenderFundamentalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSPaternalist != "unset">> -<<if $arcologies[0].FSPaternalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly in the vision of a well-bred race of slaves. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSPaternalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the vision of a well-bred race of slaves. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSPaternalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the vision of a well-bred race of slaves. -<<else>> - $arcologies[0].name is unconvinced of the vision of a well-bred race of slaves. -<</if>> -<<if $arcologies[0].FSPaternalist < 0>> - <<set $arcologies[0].FSPaternalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSPaternalistLaw = 0, $arcologies[0].FSPaternalistSMR = 0>> - <<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSPaternalist > $arcologies[0].FSPaternalistDecoration>> - <<set $arcologies[0].FSPaternalist = $arcologies[0].FSPaternalistDecoration>> -<</if>> -<<if $arcologies[0].FSPaternalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSPaternalist == $arcologies[0].FSPaternalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSPaternalistSMR == 1>> - <<set $arcologies[0].FSPaternalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSPaternalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly in the vision of a well-bred race of slaves. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSPaternalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the vision of a well-bred race of slaves. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSPaternalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the vision of a well-bred race of slaves. + <<else>> + $arcologies[0].name is unconvinced of the vision of a well-bred race of slaves. + <</if>> + <<if $arcologies[0].FSPaternalist < 0>> + <<run removeFS("FSPaternalist")>> + <<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSPaternalist > $arcologies[0].FSPaternalistDecoration>> + <<set $arcologies[0].FSPaternalist = $arcologies[0].FSPaternalistDecoration>> + <</if>> + <<if $arcologies[0].FSPaternalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSPaternalist == $arcologies[0].FSPaternalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSPaternalistSMR == 1>> + <<set $arcologies[0].FSPaternalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSDegradationist != "unset">> -<<if $arcologies[0].FSDegradationist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that slaves are not human and should be thoroughly degraded. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSDegradationist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the idea that slaves are not human and should be thoroughly degraded. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSDegradationist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the proposition that slaves are not human and should be thoroughly degraded. -<<else>> - $arcologies[0].name is unconvinced that slaves are not human and should be thoroughly degraded. -<</if>> -<<if $arcologies[0].FSDegradationist < 0>> - <<set $arcologies[0].FSDegradationist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSDegradationistLaw = 0, $arcologies[0].FSDegradationistSMR = 0>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSDegradationist > $arcologies[0].FSDegradationistDecoration>> - <<set $arcologies[0].FSDegradationist = $arcologies[0].FSDegradationistDecoration>> -<</if>> -<<if $arcologies[0].FSDegradationistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSDegradationist == $arcologies[0].FSDegradationistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSDegradationistSMR == 1>> - <<set $arcologies[0].FSDegradationist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSDegradationist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that slaves are not human and should be thoroughly degraded. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSDegradationist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the idea that slaves are not human and should be thoroughly degraded. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSDegradationist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the proposition that slaves are not human and should be thoroughly degraded. + <<else>> + $arcologies[0].name is unconvinced that slaves are not human and should be thoroughly degraded. + <</if>> + <<if $arcologies[0].FSDegradationist < 0>> + <<run removeFS("FSDegradationist")>> + <<if $assistantFSAppearance == "degradationist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSDegradationist > $arcologies[0].FSDegradationistDecoration>> + <<set $arcologies[0].FSDegradationist = $arcologies[0].FSDegradationistDecoration>> + <</if>> + <<if $arcologies[0].FSDegradationistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSDegradationist == $arcologies[0].FSDegradationistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSDegradationistSMR == 1>> + <<set $arcologies[0].FSDegradationist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSBodyPurist != "unset">> -<<if $arcologies[0].FSBodyPurist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly in the unattractive nature of implants. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSBodyPurist >= $FSLockinLevel*0.6>> - $arcologies[0].name strongly believes in the unattractive nature of implants. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSBodyPurist >= $FSLockinLevel*0.3>> - $arcologies[0].name is beginning to believe in the unattractive nature of implants. -<<else>> - $arcologies[0].name is unconvinced of the unattractive nature of implants. -<</if>> -<<if $arcologies[0].FSBodyPurist < 0>> - <<set $arcologies[0].FSBodyPurist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSBodyPuristLaw = 0, $arcologies[0].FSBodyPuristSMR = 0>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSBodyPurist > $arcologies[0].FSBodyPuristDecoration>> - <<set $arcologies[0].FSBodyPurist = $arcologies[0].FSBodyPuristDecoration>> -<</if>> -<<if $arcologies[0].FSBodyPuristDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSBodyPurist == $arcologies[0].FSBodyPuristDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSBodyPuristSMR == 1>> - <<set $arcologies[0].FSBodyPurist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSBodyPurist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly in the unattractive nature of implants. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSBodyPurist >= $FSLockinLevel*0.6>> + $arcologies[0].name strongly believes in the unattractive nature of implants. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSBodyPurist >= $FSLockinLevel*0.3>> + $arcologies[0].name is beginning to believe in the unattractive nature of implants. + <<else>> + $arcologies[0].name is unconvinced of the unattractive nature of implants. + <</if>> + <<if $arcologies[0].FSBodyPurist < 0>> + <<run removeFS("FSBodyPurist")>> + <<if $assistantFSAppearance == "body purist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSBodyPurist > $arcologies[0].FSBodyPuristDecoration>> + <<set $arcologies[0].FSBodyPurist = $arcologies[0].FSBodyPuristDecoration>> + <</if>> + <<if $arcologies[0].FSBodyPuristDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSBodyPurist == $arcologies[0].FSBodyPuristDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSBodyPuristSMR == 1>> + <<set $arcologies[0].FSBodyPurist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSTransformationFetishist != "unset">> -<<if $arcologies[0].FSTransformationFetishist >= $FSLockinLevel>> - $arcologies[0].name passionately fetishizes implants. -<<elseif $arcologies[0].FSTransformationFetishist >= $FSLockinLevel*0.6>> - $arcologies[0].name strongly fetishizes implants. -<<elseif $arcologies[0].FSTransformationFetishist >= $FSLockinLevel*0.3>> - $arcologies[0].name beginning to fetishize implants. -<<else>> - $arcologies[0].name is unconvinced about the attractiveness of implants. -<</if>> -<<if $arcologies[0].FSTransformationFetishist < 0>> - <<set $arcologies[0].FSTransformationFetishist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSTransformationFetishistLaw = 0, $arcologies[0].FSTransformationFetishistSMR = 0>> - <<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSTransformationFetishist > $arcologies[0].FSTransformationFetishistDecoration>> - <<set $arcologies[0].FSTransformationFetishist = $arcologies[0].FSTransformationFetishistDecoration>> -<</if>> -<<if $arcologies[0].FSTransformationFetishistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSTransformationFetishist == $arcologies[0].FSTransformationFetishistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSTransformationFetishistSMR == 1>> - <<set $arcologies[0].FSTransformationFetishist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSTransformationFetishist >= $FSLockinLevel>> + $arcologies[0].name passionately fetishizes implants. + <<elseif $arcologies[0].FSTransformationFetishist >= $FSLockinLevel*0.6>> + $arcologies[0].name strongly fetishizes implants. + <<elseif $arcologies[0].FSTransformationFetishist >= $FSLockinLevel*0.3>> + $arcologies[0].name beginning to fetishize implants. + <<else>> + $arcologies[0].name is unconvinced about the attractiveness of implants. + <</if>> + <<if $arcologies[0].FSTransformationFetishist < 0>> + <<run removeFS("FSTransformationFetishist")>> + <<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSTransformationFetishist > $arcologies[0].FSTransformationFetishistDecoration>> + <<set $arcologies[0].FSTransformationFetishist = $arcologies[0].FSTransformationFetishistDecoration>> + <</if>> + <<if $arcologies[0].FSTransformationFetishistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSTransformationFetishist == $arcologies[0].FSTransformationFetishistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSTransformationFetishistSMR == 1>> + <<set $arcologies[0].FSTransformationFetishist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSMaturityPreferentialist != "unset">> -<<if $arcologies[0].FSMaturityPreferentialist >= $FSLockinLevel>> - $arcologies[0].name is passionately enthusiastic about older ladies. -<<elseif $arcologies[0].FSMaturityPreferentialist >= $FSLockinLevel*0.6>> - $arcologies[0].name is enthusiastic about older ladies. -<<elseif $arcologies[0].FSMaturityPreferentialist >= $FSLockinLevel*0.3>> - $arcologies[0].name is beginning to be enthusiastic about older ladies. -<<else>> - $arcologies[0].name is unconvinced about your preference for older ladies. -<</if>> -<<if $arcologies[0].FSMaturityPreferentialist < 0>> - <<set $arcologies[0].FSMaturityPreferentialist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSMaturityPreferentialistLaw = 0, $arcologies[0].FSMaturityPreferentialistSMR = 0>> - <<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSMaturityPreferentialist > $arcologies[0].FSMaturityPreferentialistDecoration>> - <<set $arcologies[0].FSMaturityPreferentialist = $arcologies[0].FSMaturityPreferentialistDecoration>> -<</if>> -<<if $arcologies[0].FSMaturityPreferentialistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSMaturityPreferentialist == $arcologies[0].FSMaturityPreferentialistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSMaturityPreferentialistSMR == 1>> - <<set $arcologies[0].FSMaturityPreferentialist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSMaturityPreferentialist >= $FSLockinLevel>> + $arcologies[0].name is passionately enthusiastic about older ladies. + <<elseif $arcologies[0].FSMaturityPreferentialist >= $FSLockinLevel*0.6>> + $arcologies[0].name is enthusiastic about older ladies. + <<elseif $arcologies[0].FSMaturityPreferentialist >= $FSLockinLevel*0.3>> + $arcologies[0].name is beginning to be enthusiastic about older ladies. + <<else>> + $arcologies[0].name is unconvinced about your preference for older ladies. + <</if>> + <<if $arcologies[0].FSMaturityPreferentialist < 0>> + <<run removeFS("FSMaturityPreferentialist")>> + <<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSMaturityPreferentialist > $arcologies[0].FSMaturityPreferentialistDecoration>> + <<set $arcologies[0].FSMaturityPreferentialist = $arcologies[0].FSMaturityPreferentialistDecoration>> + <</if>> + <<if $arcologies[0].FSMaturityPreferentialistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSMaturityPreferentialist == $arcologies[0].FSMaturityPreferentialistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSMaturityPreferentialistSMR == 1>> + <<set $arcologies[0].FSMaturityPreferentialist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSYouthPreferentialist != "unset">> -<<if $arcologies[0].FSYouthPreferentialist >= $FSLockinLevel>> - $arcologies[0].name is passionately enthusiastic about young women. -<<elseif $arcologies[0].FSYouthPreferentialist >= $FSLockinLevel*0.6>> - $arcologies[0].name is enthusiastic about young women. -<<elseif $arcologies[0].FSYouthPreferentialist >= $FSLockinLevel*0.3>> - $arcologies[0].name is beginning to be enthusiastic about young women. -<<else>> - $arcologies[0].name is unconvinced about your preference for young women. -<</if>> -<<if $arcologies[0].FSYouthPreferentialist < 0>> - <<set $arcologies[0].FSYouthPreferentialist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSYouthPreferentialistLaw = 0, $arcologies[0].FSYouthPreferentialistSMR = 0>> - <<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSYouthPreferentialist > $arcologies[0].FSYouthPreferentialistDecoration>> - <<set $arcologies[0].FSYouthPreferentialist = $arcologies[0].FSYouthPreferentialistDecoration>> -<</if>> -<<if $arcologies[0].FSYouthPreferentialistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSYouthPreferentialist == $arcologies[0].FSYouthPreferentialistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSYouthPreferentialistSMR == 1>> - <<set $arcologies[0].FSYouthPreferentialist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSYouthPreferentialist >= $FSLockinLevel>> + $arcologies[0].name is passionately enthusiastic about young women. + <<elseif $arcologies[0].FSYouthPreferentialist >= $FSLockinLevel*0.6>> + $arcologies[0].name is enthusiastic about young women. + <<elseif $arcologies[0].FSYouthPreferentialist >= $FSLockinLevel*0.3>> + $arcologies[0].name is beginning to be enthusiastic about young women. + <<else>> + $arcologies[0].name is unconvinced about your preference for young women. + <</if>> + <<if $arcologies[0].FSYouthPreferentialist < 0>> + <<run removeFS("FSYouthPreferentialist")>> + <<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSYouthPreferentialist > $arcologies[0].FSYouthPreferentialistDecoration>> + <<set $arcologies[0].FSYouthPreferentialist = $arcologies[0].FSYouthPreferentialistDecoration>> + <</if>> + <<if $arcologies[0].FSYouthPreferentialistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSYouthPreferentialist == $arcologies[0].FSYouthPreferentialistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSYouthPreferentialistSMR == 1>> + <<set $arcologies[0].FSYouthPreferentialist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSSlimnessEnthusiast != "unset">> -<<if $arcologies[0].FSSlimnessEnthusiast >= $FSLockinLevel>> - $arcologies[0].name is passionately enthusiastic about slim slaves with girlish figures. -<<elseif $arcologies[0].FSSlimnessEnthusiast >= $FSLockinLevel*0.6>> - $arcologies[0].name is very enthusiastic about slim slaves with girlish figures. -<<elseif $arcologies[0].FSSlimnessEnthusiast >= $FSLockinLevel*0.3>> - $arcologies[0].name is enthusiastic about slim slaves with girlish figures. -<<else>> - $arcologies[0].name is unconvinced about your preference for slim slaves with girlish figures. -<</if>> -<<if $arcologies[0].FSSlimnessEnthusiast < 0>> - <<set $arcologies[0].FSSlimnessEnthusiast = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSSlimnessEnthusiastSMR = 0, $arcologies[0].FSSlimnessEnthusiastLaw = 0>> - <<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSSlimnessEnthusiast > $arcologies[0].FSSlimnessEnthusiastDecoration>> - <<set $arcologies[0].FSSlimnessEnthusiast = $arcologies[0].FSSlimnessEnthusiastDecoration>> -<</if>> -<<if $arcologies[0].FSSlimnessEnthusiastDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSSlimnessEnthusiast == $arcologies[0].FSSlimnessEnthusiastDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSSlimnessEnthusiastSMR == 1>> - <<set $arcologies[0].FSSlimnessEnthusiast += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSSlimnessEnthusiast >= $FSLockinLevel>> + $arcologies[0].name is passionately enthusiastic about slim slaves with girlish figures. + <<elseif $arcologies[0].FSSlimnessEnthusiast >= $FSLockinLevel*0.6>> + $arcologies[0].name is very enthusiastic about slim slaves with girlish figures. + <<elseif $arcologies[0].FSSlimnessEnthusiast >= $FSLockinLevel*0.3>> + $arcologies[0].name is enthusiastic about slim slaves with girlish figures. + <<else>> + $arcologies[0].name is unconvinced about your preference for slim slaves with girlish figures. + <</if>> + <<if $arcologies[0].FSSlimnessEnthusiast < 0>> + <<run removeFS("FSSlimnessEnthusiast")>> + <<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSSlimnessEnthusiast > $arcologies[0].FSSlimnessEnthusiastDecoration>> + <<set $arcologies[0].FSSlimnessEnthusiast = $arcologies[0].FSSlimnessEnthusiastDecoration>> + <</if>> + <<if $arcologies[0].FSSlimnessEnthusiastDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSSlimnessEnthusiast == $arcologies[0].FSSlimnessEnthusiastDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSSlimnessEnthusiastSMR == 1>> + <<set $arcologies[0].FSSlimnessEnthusiast += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSAssetExpansionist != "unset">> -<<if $arcologies[0].FSAssetExpansionist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that all tits and asses should be bigger. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSAssetExpansionist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the idea that all tits and asses should be bigger. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSAssetExpansionist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the idea that all tits and asses should be bigger. -<<else>> - $arcologies[0].name is unconvinced that all tits and asses should be bigger. -<</if>> -<<if $arcologies[0].FSAssetExpansionist < 0>> - <<set $arcologies[0].FSAssetExpansionist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSAssetExpansionistSMR = 0, $arcologies[0].FSAssetExpansionistLaw = 0>> - <<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSAssetExpansionist > $arcologies[0].FSAssetExpansionistDecoration>> - <<set $arcologies[0].FSAssetExpansionist = $arcologies[0].FSAssetExpansionistDecoration>> -<</if>> -<<if $arcologies[0].FSAssetExpansionistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSAssetExpansionist == $arcologies[0].FSAssetExpansionistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSAssetExpansionistSMR == 1>> - <<set $arcologies[0].FSAssetExpansionist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSAssetExpansionist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that all tits and asses should be bigger. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSAssetExpansionist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the idea that all tits and asses should be bigger. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSAssetExpansionist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the idea that all tits and asses should be bigger. + <<else>> + $arcologies[0].name is unconvinced that all tits and asses should be bigger. + <</if>> + <<if $arcologies[0].FSAssetExpansionist < 0>> + <<run removeFS("FSAssetExpansionist")>> + <<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSAssetExpansionist > $arcologies[0].FSAssetExpansionistDecoration>> + <<set $arcologies[0].FSAssetExpansionist = $arcologies[0].FSAssetExpansionistDecoration>> + <</if>> + <<if $arcologies[0].FSAssetExpansionistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSAssetExpansionist == $arcologies[0].FSAssetExpansionistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSAssetExpansionistSMR == 1>> + <<set $arcologies[0].FSAssetExpansionist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSPastoralist != "unset">> -<<if $arcologies[0].FSPastoralist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that slaves should be milked. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSPastoralist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the idea that slaves should be milked. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSPastoralist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the idea that slaves should be milked. -<<else>> - $arcologies[0].name is unconvinced that slaves should be milked. -<</if>> -<<if $arcologies[0].FSPastoralist < 0>> - <<set $arcologies[0].FSPastoralist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSPastoralistLaw = 0, $arcologies[0].FSPastoralistSMR = 0>> - <<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSPastoralist > $arcologies[0].FSPastoralistDecoration>> - <<set $arcologies[0].FSPastoralist = $arcologies[0].FSPastoralistDecoration>> -<</if>> -<<if $arcologies[0].FSPastoralistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSPastoralist == $arcologies[0].FSPastoralistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSPastoralistSMR == 1>> - <<set $arcologies[0].FSPastoralist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSPastoralist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that slaves should be milked. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSPastoralist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the idea that slaves should be milked. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSPastoralist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the idea that slaves should be milked. + <<else>> + $arcologies[0].name is unconvinced that slaves should be milked. + <</if>> + <<if $arcologies[0].FSPastoralist < 0>> + <<run removeFS("FSPastoralist")>> + <<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSPastoralist > $arcologies[0].FSPastoralistDecoration>> + <<set $arcologies[0].FSPastoralist = $arcologies[0].FSPastoralistDecoration>> + <</if>> + <<if $arcologies[0].FSPastoralistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSPastoralist == $arcologies[0].FSPastoralistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSPastoralistSMR == 1>> + <<set $arcologies[0].FSPastoralist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSPhysicalIdealist != "unset">> -<<if $arcologies[0].FSPhysicalIdealist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that all slaves should be tall and strong. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSPhysicalIdealist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the idea that all slaves should be tall and strong. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSPhysicalIdealist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the idea that all slaves should be tall and strong. -<<else>> - $arcologies[0].name is unconvinced that all slaves should be tall and strong. -<</if>> -<<if $arcologies[0].FSPhysicalIdealist < 0>> - <<set $arcologies[0].FSPhysicalIdealist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSPhysicalIdealistSMR = 0, $arcologies[0].FSPhysicalIdealistLaw = 0, $arcologies[0].FSPhysicalIdealistStrongFat = 0>> - <<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSPhysicalIdealist > $arcologies[0].FSPhysicalIdealistDecoration>> - <<set $arcologies[0].FSPhysicalIdealist = $arcologies[0].FSPhysicalIdealistDecoration>> -<</if>> -<<if $arcologies[0].FSPhysicalIdealistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSPhysicalIdealist == $arcologies[0].FSPhysicalIdealistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSPhysicalIdealistSMR == 1>> - <<set $arcologies[0].FSPhysicalIdealist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSPhysicalIdealist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that all slaves should be tall and strong. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSPhysicalIdealist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the idea that all slaves should be tall and strong. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSPhysicalIdealist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the idea that all slaves should be tall and strong. + <<else>> + $arcologies[0].name is unconvinced that all slaves should be tall and strong. + <</if>> + <<if $arcologies[0].FSPhysicalIdealist < 0>> + <<run removeFS("FSPhysicalIdealist")>> + <<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSPhysicalIdealist > $arcologies[0].FSPhysicalIdealistDecoration>> + <<set $arcologies[0].FSPhysicalIdealist = $arcologies[0].FSPhysicalIdealistDecoration>> + <</if>> + <<if $arcologies[0].FSPhysicalIdealistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSPhysicalIdealist == $arcologies[0].FSPhysicalIdealistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSPhysicalIdealistSMR == 1>> + <<set $arcologies[0].FSPhysicalIdealist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSHedonisticDecadence != "unset">> -<<if $arcologies[0].FSHedonisticDecadence >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that all slaves should be soft and laid-back. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSHedonisticDecadence >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with the idea that all slaves should be soft and laid-back. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSHedonisticDecadence >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to the idea that all slaves should be soft and laid-back. -<<else>> - $arcologies[0].name is unconvinced that all slaves should be soft and laid-back. -<</if>> -<<if $arcologies[0].FSHedonisticDecadence < 0>> - <<set $arcologies[0].FSHedonisticDecadence = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSHedonisticDecadenceSMR = 0, $arcologies[0].FSHedonisticDecadenceLaw = 0, $arcologies[0].FSHedonisticDecadenceLaw2 = 0, $arcologies[0].FSHedonisticDecadenceStrongFat = 0>> - <<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSHedonisticDecadence > $arcologies[0].FSHedonisticDecadenceDecoration>> - <<set $arcologies[0].FSHedonisticDecadence = $arcologies[0].FSHedonisticDecadenceDecoration>> -<</if>> -<<if $arcologies[0].FSHedonisticDecadenceDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSHedonisticDecadence == $arcologies[0].FSHedonisticDecadenceDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSHedonisticDecadenceSMR == 1>> - <<set $arcologies[0].FSHedonisticDecadence += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSHedonisticDecadence >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that all slaves should be soft and laid-back. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSHedonisticDecadence >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with the idea that all slaves should be soft and laid-back. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSHedonisticDecadence >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to the idea that all slaves should be soft and laid-back. + <<else>> + $arcologies[0].name is unconvinced that all slaves should be soft and laid-back. + <</if>> + <<if $arcologies[0].FSHedonisticDecadence < 0>> + <<run removeFS("FSHedonisticDecadence")>> + <<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSHedonisticDecadence > $arcologies[0].FSHedonisticDecadenceDecoration>> + <<set $arcologies[0].FSHedonisticDecadence = $arcologies[0].FSHedonisticDecadenceDecoration>> + <</if>> + <<if $arcologies[0].FSHedonisticDecadenceDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSHedonisticDecadence == $arcologies[0].FSHedonisticDecadenceDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSHedonisticDecadenceSMR == 1>> + <<set $arcologies[0].FSHedonisticDecadence += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSChattelReligionist != "unset">> -<<if $arcologies[0].FSChattelReligionist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly in a version of religion that emphasizes slaveholding traditions. - <<set $independenceDay = 1, $nicaeaAnnounceable = 1>> -<<elseif $arcologies[0].FSChattelReligionist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with a version of religion that emphasizes slaveholding traditions. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSChattelReligionist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to a version of religion that emphasizes slaveholding traditions. -<<else>> - $arcologies[0].name is unconvinced of a version of religion that emphasizes slaveholding traditions. -<</if>> -<<if $arcologies[0].FSChattelReligionist < 0>> - <<set $arcologies[0].FSChattelReligionist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSChattelReligionistLaw = 0, $arcologies[0].FSChattelReligionistSMR = 0, $arcologies[0].FSChattelReligionistCreed = 0>> - <<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSChattelReligionist > $arcologies[0].FSChattelReligionistDecoration>> - <<set $arcologies[0].FSChattelReligionist = $arcologies[0].FSChattelReligionistDecoration>> -<</if>> -<<if $arcologies[0].FSChattelReligionistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSChattelReligionist == $arcologies[0].FSChattelReligionistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSChattelReligionistSMR == 1>> - <<set $arcologies[0].FSChattelReligionist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSChattelReligionist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly in a version of religion that emphasizes slaveholding traditions. + <<set $independenceDay = 1, $nicaeaAnnounceable = 1>> + <<elseif $arcologies[0].FSChattelReligionist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with a version of religion that emphasizes slaveholding traditions. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSChattelReligionist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to a version of religion that emphasizes slaveholding traditions. + <<else>> + $arcologies[0].name is unconvinced of a version of religion that emphasizes slaveholding traditions. + <</if>> + <<if $arcologies[0].FSChattelReligionist < 0>> + <<run removeFS("FSChattelReligionist")>> + <<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSChattelReligionist > $arcologies[0].FSChattelReligionistDecoration>> + <<set $arcologies[0].FSChattelReligionist = $arcologies[0].FSChattelReligionistDecoration>> + <</if>> + <<if $arcologies[0].FSChattelReligionistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSChattelReligionist == $arcologies[0].FSChattelReligionistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSChattelReligionistSMR == 1>> + <<set $arcologies[0].FSChattelReligionist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSRomanRevivalist != "unset">> -<<if $arcologies[0].FSRomanRevivalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that it is the new Rome. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSRomanRevivalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with your project to build a new Rome. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSRomanRevivalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to your project to build a new Rome. -<<else>> - $arcologies[0].name is unconvinced of the wisdom of your project to build a new Rome. -<</if>> -<<if $arcologies[0].FSRomanRevivalist < 0>> - <<set $arcologies[0].FSRomanRevivalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSRomanRevivalistLaw = 0, $arcologies[0].FSRomanRevivalistSMR = 0>> - <<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSRomanRevivalist > $arcologies[0].FSRomanRevivalistDecoration>> - <<set $arcologies[0].FSRomanRevivalist = $arcologies[0].FSRomanRevivalistDecoration>> -<</if>> -<<if $arcologies[0].FSRomanRevivalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSRomanRevivalist == $arcologies[0].FSRomanRevivalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSRomanRevivalistSMR == 1>> - <<set $arcologies[0].FSRomanRevivalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSRomanRevivalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that it is the new Rome. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSRomanRevivalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with your project to build a new Rome. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSRomanRevivalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to your project to build a new Rome. + <<else>> + $arcologies[0].name is unconvinced of the wisdom of your project to build a new Rome. + <</if>> + <<if $arcologies[0].FSRomanRevivalist < 0>> + <<run removeFS("FSRomanRevivalist")>> + <<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSRomanRevivalist > $arcologies[0].FSRomanRevivalistDecoration>> + <<set $arcologies[0].FSRomanRevivalist = $arcologies[0].FSRomanRevivalistDecoration>> + <</if>> + <<if $arcologies[0].FSRomanRevivalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSRomanRevivalist == $arcologies[0].FSRomanRevivalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSRomanRevivalistSMR == 1>> + <<set $arcologies[0].FSRomanRevivalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSAztecRevivalist != "unset">> -<<if $arcologies[0].FSAztecRevivalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that it is the new Aztec Empire. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSAztecRevivalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with your project to build a new Aztec Empire. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSAztecRevivalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to your project to build a new Aztec Empire. -<<else>> - $arcologies[0].name is unconvinced of the wisdom of your project to build a new Aztec Empire. -<</if>> -<<if $arcologies[0].FSAztecRevivalist < 0>> - <<set $arcologies[0].FSAztecRevivalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSAztecRevivalistSMR = 0, $arcologies[0].FSAztecRevivalistLaw = 0>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSAztecRevivalist > $arcologies[0].FSAztecRevivalistDecoration>> - <<set $arcologies[0].FSAztecRevivalist = $arcologies[0].FSAztecRevivalistDecoration>> -<</if>> -<<if $arcologies[0].FSAztecRevivalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSAztecRevivalist == $arcologies[0].FSAztecRevivalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSAztecRevivalistSMR == 1>> - <<set $arcologies[0].FSAztecRevivalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSAztecRevivalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that it is the new Aztec Empire. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSAztecRevivalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with your project to build a new Aztec Empire. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSAztecRevivalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to your project to build a new Aztec Empire. + <<else>> + $arcologies[0].name is unconvinced of the wisdom of your project to build a new Aztec Empire. + <</if>> + <<if $arcologies[0].FSAztecRevivalist < 0>> + <<run removeFS("FSAztecRevivalist")>> + <<if $assistantFSAppearance == "aztec revivalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSAztecRevivalist > $arcologies[0].FSAztecRevivalistDecoration>> + <<set $arcologies[0].FSAztecRevivalist = $arcologies[0].FSAztecRevivalistDecoration>> + <</if>> + <<if $arcologies[0].FSAztecRevivalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSAztecRevivalist == $arcologies[0].FSAztecRevivalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSAztecRevivalistSMR == 1>> + <<set $arcologies[0].FSAztecRevivalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSEgyptianRevivalist != "unset">> -<<if $arcologies[0].FSEgyptianRevivalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that it is the land of the Pharaohs, reborn. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSEgyptianRevivalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with your project to build a new land of the Pharaohs. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSEgyptianRevivalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to your project to build a new land of the Pharaohs. -<<else>> - $arcologies[0].name is unconvinced of the wisdom of your project to build a new land of the Pharaohs. -<</if>> -<<if $arcologies[0].FSEgyptianRevivalist < 0>> - <<set $arcologies[0].FSEgyptianRevivalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSEgyptianRevivalistLaw = 0, $arcologies[0].FSEgyptianRevivalistSMR = 0>> - <<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSEgyptianRevivalist > $arcologies[0].FSEgyptianRevivalistDecoration>> - <<set $arcologies[0].FSEgyptianRevivalist = $arcologies[0].FSEgyptianRevivalistDecoration>> -<</if>> -<<if $arcologies[0].FSEgyptianRevivalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSEgyptianRevivalist == $arcologies[0].FSEgyptianRevivalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSEgyptianRevivalistSMR == 1>> - <<set $arcologies[0].FSEgyptianRevivalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSEgyptianRevivalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that it is the land of the Pharaohs, reborn. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSEgyptianRevivalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with your project to build a new land of the Pharaohs. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSEgyptianRevivalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to your project to build a new land of the Pharaohs. + <<else>> + $arcologies[0].name is unconvinced of the wisdom of your project to build a new land of the Pharaohs. + <</if>> + <<if $arcologies[0].FSEgyptianRevivalist < 0>> + <<run removeFS("FSEgyptianRevivalist")>> + <<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSEgyptianRevivalist > $arcologies[0].FSEgyptianRevivalistDecoration>> + <<set $arcologies[0].FSEgyptianRevivalist = $arcologies[0].FSEgyptianRevivalistDecoration>> + <</if>> + <<if $arcologies[0].FSEgyptianRevivalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSEgyptianRevivalist == $arcologies[0].FSEgyptianRevivalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSEgyptianRevivalistSMR == 1>> + <<set $arcologies[0].FSEgyptianRevivalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSEdoRevivalist != "unset">> -<<if $arcologies[0].FSEdoRevivalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that it is the land of the Shogun, reborn. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSEdoRevivalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with your project to build a new Edo Japan. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSEdoRevivalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to your project to build a new Edo Japan. -<<else>> - $arcologies[0].name is unconvinced of the wisdom of your project to build a new Edo Japan. -<</if>> -<<if $arcologies[0].FSEdoRevivalist < 0>> - <<set $arcologies[0].FSEdoRevivalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSEdoRevivalistLaw = 0, $arcologies[0].FSEdoRevivalistSMR = 0>> - <<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSEdoRevivalist > $arcologies[0].FSEdoRevivalistDecoration>> - <<set $arcologies[0].FSEdoRevivalist = $arcologies[0].FSEdoRevivalistDecoration>> -<</if>> -<<if $arcologies[0].FSEdoRevivalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSEdoRevivalist == $arcologies[0].FSEdoRevivalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSEdoRevivalistSMR == 1>> - <<set $arcologies[0].FSEdoRevivalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSEdoRevivalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that it is the land of the Shogun, reborn. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSEdoRevivalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with your project to build a new Edo Japan. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSEdoRevivalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to your project to build a new Edo Japan. + <<else>> + $arcologies[0].name is unconvinced of the wisdom of your project to build a new Edo Japan. + <</if>> + <<if $arcologies[0].FSEdoRevivalist < 0>> + <<run removeFS("FSEdoRevivalist")>> + <<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSEdoRevivalist > $arcologies[0].FSEdoRevivalistDecoration>> + <<set $arcologies[0].FSEdoRevivalist = $arcologies[0].FSEdoRevivalistDecoration>> + <</if>> + <<if $arcologies[0].FSEdoRevivalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSEdoRevivalist == $arcologies[0].FSEdoRevivalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSEdoRevivalistSMR == 1>> + <<set $arcologies[0].FSEdoRevivalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSArabianRevivalist != "unset">> -<<if $arcologies[0].FSArabianRevivalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that it is ancient Baghdad reborn. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSArabianRevivalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with your project to build a new Sultanate. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSArabianRevivalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to your project to build a new Sultanate. -<<else>> - $arcologies[0].name is unconvinced of the wisdom of your project to build a new Sultanate. -<</if>> -<<if $arcologies[0].FSArabianRevivalist < 0>> - <<set $arcologies[0].FSArabianRevivalist = "unset">><<set $FSCredits += 1>> - <<set $arcologies[0].FSArabianRevivalistLaw = 0, $arcologies[0].FSArabianRevivalistSMR = 0>> - <<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSArabianRevivalist > $arcologies[0].FSArabianRevivalistDecoration>> - <<set $arcologies[0].FSArabianRevivalist = $arcologies[0].FSArabianRevivalistDecoration>> -<</if>> -<<if $arcologies[0].FSArabianRevivalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSArabianRevivalist == $arcologies[0].FSArabianRevivalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSArabianRevivalistSMR == 1>> - <<set $arcologies[0].FSArabianRevivalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSArabianRevivalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that it is ancient Baghdad reborn. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSArabianRevivalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with your project to build a new Sultanate. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSArabianRevivalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to your project to build a new Sultanate. + <<else>> + $arcologies[0].name is unconvinced of the wisdom of your project to build a new Sultanate. + <</if>> + <<if $arcologies[0].FSArabianRevivalist < 0>> + <<run removeFS("FSArabianRevivalist")>> + <<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSArabianRevivalist > $arcologies[0].FSArabianRevivalistDecoration>> + <<set $arcologies[0].FSArabianRevivalist = $arcologies[0].FSArabianRevivalistDecoration>> + <</if>> + <<if $arcologies[0].FSArabianRevivalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSArabianRevivalist == $arcologies[0].FSArabianRevivalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSArabianRevivalistSMR == 1>> + <<set $arcologies[0].FSArabianRevivalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> <<if $arcologies[0].FSChineseRevivalist != "unset">> -<<if $arcologies[0].FSChineseRevivalist >= $FSLockinLevel>> - $arcologies[0].name believes implicitly that you possess the Mandate of Heaven. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSChineseRevivalist >= $FSLockinLevel*0.6>> - $arcologies[0].name agrees strongly with your pursuit of the Mandate of Heaven. - <<set $independenceDay = 1>> -<<elseif $arcologies[0].FSChineseRevivalist >= $FSLockinLevel*0.3>> - $arcologies[0].name is sympathetic to your pursuit of the Mandate of Heaven. -<<else>> - $arcologies[0].name is unconvinced of the wisdom of your pursuit of the Mandate of Heaven. -<</if>> -<<if $arcologies[0].FSChineseRevivalist < 0>> - <<set $arcologies[0].FSChineseRevivalist = "unset">><<set $FSCredits += 1>> - <<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>> - <<set $arcologies[0].FSChineseRevivalistLaw = 0, $arcologies[0].FSChineseRevivalistSMR = 0>> - <<ClearFacilityDecorations>> - @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ -<<elseif $arcologies[0].FSChineseRevivalist > $arcologies[0].FSChineseRevivalistDecoration>> - <<set $arcologies[0].FSChineseRevivalist = $arcologies[0].FSChineseRevivalistDecoration>> -<</if>> -<<if $arcologies[0].FSChineseRevivalistDecoration < $FSLockinLevel>> -<<if $arcologies[0].FSChineseRevivalist == $arcologies[0].FSChineseRevivalistDecoration>> - @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ -<<elseif $arcologies[0].FSChineseRevivalistSMR == 1>> - <<set $arcologies[0].FSChineseRevivalist += 0.1*$FSSingleSlaveRep>> -<</if>> -<</if>> + <<if $arcologies[0].FSChineseRevivalist >= $FSLockinLevel>> + $arcologies[0].name believes implicitly that you possess the Mandate of Heaven. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSChineseRevivalist >= $FSLockinLevel*0.6>> + $arcologies[0].name agrees strongly with your pursuit of the Mandate of Heaven. + <<set $independenceDay = 1>> + <<elseif $arcologies[0].FSChineseRevivalist >= $FSLockinLevel*0.3>> + $arcologies[0].name is sympathetic to your pursuit of the Mandate of Heaven. + <<else>> + $arcologies[0].name is unconvinced of the wisdom of your pursuit of the Mandate of Heaven. + <</if>> + <<if $arcologies[0].FSChineseRevivalist < 0>> + <<run removeFS("FSChineseRevivalist")>> + <<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>> + <<ClearFacilityDecorations>> + @@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@ + <<elseif $arcologies[0].FSChineseRevivalist > $arcologies[0].FSChineseRevivalistDecoration>> + <<set $arcologies[0].FSChineseRevivalist = $arcologies[0].FSChineseRevivalistDecoration>> + <</if>> + <<if $arcologies[0].FSChineseRevivalistDecoration < $FSLockinLevel>> + <<if $arcologies[0].FSChineseRevivalist == $arcologies[0].FSChineseRevivalistDecoration>> + @@.yellow;Your societal development in this direction is being limited by $arcologies[0].name's lack of customization to support it.@@ + <<elseif $arcologies[0].FSChineseRevivalistSMR == 1>> + <<set $arcologies[0].FSChineseRevivalist += 0.1*$FSSingleSlaveRep>> + <</if>> + <</if>> <</if>> diff --git a/src/uncategorized/futureSociety.tw b/src/uncategorized/futureSociety.tw index 7b0754bfa27ecd0ce8f3d1896a89edc2d8f988a2..908156a734b367de2d40fc632f2702a0d2f01a52 100644 --- a/src/uncategorized/futureSociety.tw +++ b/src/uncategorized/futureSociety.tw @@ -593,7 +593,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc </span> <<if $arcologies[0].FSSupremacist != "unset">> - <br>''You are pursuing'' $arcologies[0].FSSupremacistRace superiority. //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSSupremacist = "unset", $arcologies[0].FSSupremacistDecoration = 20, $arcologies[0].FSSupremacistLawME = 0, $arcologies[0].FSSupremacistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "supremacist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + <br>''You are pursuing'' $arcologies[0].FSSupremacistRace superiority. //<<link "Abandon" "Future Society">><<run removeFS("FSSupremacist")>><<if $assistantFSAppearance == "supremacist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSSupremacist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "amazon") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "succubus")>> @@ -622,7 +622,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <</if>> <<if $arcologies[0].FSSubjugationist != "unset">> - <br>''You are pursuing'' $arcologies[0].FSSubjugationistRace inferiority. //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSSubjugationist = "unset", $arcologies[0].FSSubjugationistDecoration = 20, $arcologies[0].FSSubjugationistLawME = 0, $arcologies[0].FSSubjugationistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "subjugationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + <br>''You are pursuing'' $arcologies[0].FSSubjugationistRace inferiority. //<<link "Abandon" "Future Society">><<run removeFS("FSSubjugationist")>><<if $assistantFSAppearance == "subjugationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSSubjugationist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "amazon") || ($assistantAppearance == "imp")>> @@ -651,24 +651,38 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <</if>> <<if $seePreg != 0>> - <<if $arcologies[0].FSRestart == "unset">> - <<if $arcologies[0].FSRepopulationFocus != "unset">> - <br>''You are pursuing'' the belief that mass breeding will save humanity. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSRepopulationFocus = "unset", $arcologies[0].FSRepopulationFocusDecoration = 20, $arcologies[0].FSRepopulationFocusSMR = 0, $arcologies[0].FSRepopulationFocusLaw = 0, $FSCredits += 1>><<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> - <<FSChangeDecoration "FSRepopulationFocus" "clothesBoughtMaternityLingerie" "clothesBoughtMaternityDress" "clothesBoughtBelly">> - <<if $PAPublic == 1>> - <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> - //With her $assistantAppearance appearance, $assistantName is a good public mascot for this goal.// - <</if>> - <</if>> - <<else>> - <<if ($FSCredits > 0)>> - <br>''''[[Repopulation Efforts|Future Society][$arcologies[0].FSRepopulationFocus = 4, $FSCredits -= 1]]: focus on mass breeding in order to repopulate the future world. - <<else>> - /*//''Repopulation Efforts'': societal fetishization of pregnancy.//*/ - <</if>> +<<if $arcologies[0].FSRestart == "unset">> +<<if $arcologies[0].FSRepopulationFocus != "unset">> + <br>''You are pursuing'' the belief that mass breeding will save humanity. + //<<link "Abandon" "Future Society">><<run removeFS("FSRepopulationFocus")>><<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + <<FSChangeDecoration "FSRepopulationFocus" "clothesBoughtMaternityLingerie" "clothesBoughtMaternityDress" "clothesBoughtBelly">> + <<if $PAPublic == 1>> + <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> + //With her $assistantAppearance appearance, $assistantName is a good public mascot for this goal.// <</if>> <</if>> +<<else>> + <<if ($FSCredits > 0)>> + <br>''''[[Repopulation Efforts|Future Society][$arcologies[0].FSRepopulationFocus = 4, $FSCredits -= 1]]: focus on mass breeding in order to repopulate the future world. + <<else>> + /*//''Repopulation Efforts'': societal fetishization of pregnancy.//*/ + <</if>> +<</if>> +<</if>> + +<<if $arcologies[0].FSRepopulationFocus == "unset">> +<<if $arcologies[0].FSRestart != "unset">> +<<if $arcologies[0].FSRestartDecoration != 100>> + <br>''You are pursuing'' Eugenics. + //<<link "Abandon" "Future Society">><<run removeFS("FSRestart")>><<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + <<FSChangeDecoration "FSRestart">> +<<else>> + <br>''You have established'' Eugenics. + <<if $eugenicsFullControl != 1>> + The Societal Elite will not permit you to abandon Eugenics. + <<else>> + //<<link "Abandon" "Future Society">><<run removeFS("FSRestart")>><<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>// + <</if>> <<if $arcologies[0].FSRepopulationFocus == "unset">> <<if $arcologies[0].FSRestart != "unset">> @@ -706,7 +720,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSGenderFundamentalist == "unset">> <<if $arcologies[0].FSGenderRadicalist != "unset">> <br>''You are pursuing'' a radical redefinition of gender that identifies powerful people as male, and everyone else as female. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSGenderRadicalist = "unset", $arcologies[0].FSGenderRadicalistDecoration = 20, $arcologies[0].FSGenderRadicalistLawDicks = 0, $arcologies[0].FSGenderRadicalistLawFuta = 0, $arcologies[0].FSGenderRadicalistLawBeauty = 0, $arcologies[0].FSGenderRadicalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSGenderRadicalist")>><<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSGenderRadicalist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "shemale") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> @@ -726,7 +740,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSGenderRadicalist == "unset">> <<if $arcologies[0].FSGenderFundamentalist != "unset">> <br>''You are pursuing'' gender traditionalism, including a societal preference for feminine slaves and support for slave pregnancy. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSGenderFundamentalist = "unset", $arcologies[0].FSGenderFundamentalistDecoration = 20, $arcologies[0].FSGenderFundamentalistSMR = 0, $arcologies[0].FSGenderFundamentalistLawBimbo = 0, $FSCredits += 1>><<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSGenderFundamentalist")>><<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSGenderFundamentalist" "clothesBoughtBunny">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "loli") || ($assistantAppearance == "fairy") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> @@ -745,7 +759,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSDegradationist == "unset">> <<if $arcologies[0].FSPaternalist != "unset">> <br>''You are pursuing'' a vision of slave improvement, including slaves' health, mental well-being, and education. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSPaternalist = "unset", $arcologies[0].FSPaternalistDecoration = 20, $arcologies[0].FSPaternalistLaw = 0, $arcologies[0].FSPaternalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSPaternalist")>><<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSPaternalist" "clothesBoughtConservative">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "loli") || ($assistantAppearance == "fairy") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub")>> @@ -764,7 +778,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSPaternalist == "unset">> <<if $arcologies[0].FSDegradationist != "unset">> <br>''You are pursuing'' slave degradation, a belief that slaves are not human and should not be treated decently. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSDegradationist = "unset", $arcologies[0].FSDegradationistDecoration = 20, $arcologies[0].FSDegradationistLaw = 0, $arcologies[0].FSDegradationistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "degradationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSDegradationist")>><<if $assistantFSAppearance == "degradationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSDegradationist" "clothesBoughtChains">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "monstergirl") || ($assistantAppearance == "businesswoman") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "imp")>> @@ -783,7 +797,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSTransformationFetishist == "unset">> <<if $arcologies[0].FSBodyPurist != "unset">> <br>''You are pursuing'' societal disapproval of implant surgery. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSBodyPurist = "unset", $arcologies[0].FSBodyPuristDecoration = 20, $arcologies[0].FSBodyPuristLaw = 0, $arcologies[0].FSBodyPuristSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "body purist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSBodyPurist")>><<if $assistantFSAppearance == "body purist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSBodyPurist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "amazon") || ($assistantAppearance == "goddess") || ($assistantAppearance == "loli") || ($assistantAppearance == "fairy") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "angel") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch")>> @@ -802,7 +816,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSBodyPurist == "unset">> <<if $arcologies[0].FSTransformationFetishist != "unset">> <br>''You are pursuing'' societal fetishization of implant surgery. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSTransformationFetishist = "unset", $arcologies[0].FSTransformationFetishistDecoration = 20, $arcologies[0].FSTransformationFetishistLaw = 0, $arcologies[0].FSTransformationFetishistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSTransformationFetishist")>><<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSTransformationFetishist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "shemale") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch") || ($assistantAppearance == "ERROR_1606_APPEARANCE_FILE_CORRUPT")>> @@ -821,7 +835,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSMaturityPreferentialist == "unset">> <<if $arcologies[0].FSYouthPreferentialist != "unset">> <br>''You are pursuing'' an accentuated societal preference for younger slaves. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSYouthPreferentialist = "unset", $arcologies[0].FSYouthPreferentialistDecoration = 20, $arcologies[0].FSYouthPreferentialistLaw = 0, $arcologies[0].FSYouthPreferentialistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSYouthPreferentialist")>><<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSYouthPreferentialist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "shemale") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "loli") || ($assistantAppearance == "succubus") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub") || ($assistantAppearance == "imp") || ($assistantAppearance == "witch")>> @@ -840,7 +854,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSYouthPreferentialist == "unset">> <<if $arcologies[0].FSMaturityPreferentialist != "unset">> <br>''You are pursuing'' a societal preference for older women. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSMaturityPreferentialist = "unset", $arcologies[0].FSMaturityPreferentialistDecoration = 20, $arcologies[0].FSMaturityPreferentialistLaw = 0, $arcologies[0].FSMaturityPreferentialistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSMaturityPreferentialist")>><<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSMaturityPreferentialist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "goddess") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch") || ($assistantAppearance == "angel")>> @@ -859,7 +873,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSAssetExpansionist == "unset">> <<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <br>''You are supporting'' enthusiasm for slaves with girlish figures. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSSlimnessEnthusiast = "unset", $arcologies[0].FSSlimnessEnthusiastDecoration = 20, $arcologies[0].FSSlimnessEnthusiastSMR = 0, $arcologies[0].FSSlimnessEnthusiastLaw = 0, $FSCredits += 1>><<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSSlimnessEnthusiast")>><<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSSlimnessEnthusiast">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "shemale") || ($assistantAppearance == "loli") || ($assistantAppearance == "cherub") || ($assistantAppearance == "imp") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> @@ -878,7 +892,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSSlimnessEnthusiast == "unset">> <<if $arcologies[0].FSAssetExpansionist != "unset">> <br>''You are pursuing'' societal hunger for huge assets. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSAssetExpansionist = "unset", $arcologies[0].FSAssetExpansionistDecoration = 20, $arcologies[0].FSAssetExpansionistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSAssetExpansionist")>><<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSAssetExpansionist">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "shemale") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch")>> @@ -896,7 +910,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSPastoralist != "unset">> <br>''You are pursuing'' societal normalization of slave milking. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSPastoralist = "unset", $arcologies[0].FSPastoralistDecoration = 20, $arcologies[0].FSPastoralistLaw = 0, $arcologies[0].FSPastoralistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSPastoralist")>><<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSPastoralist" "clothesBoughtWestern">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "shemale") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> @@ -914,7 +928,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSHedonisticDecadence == "unset">> <<if $arcologies[0].FSPhysicalIdealist != "unset">> <br>''You are pursuing'' societal reverence for the idealized human form, including height, health and muscle. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSPhysicalIdealist = "unset", $arcologies[0].FSPhysicalIdealistDecoration = 20, $arcologies[0].FSPhysicalIdealistSMR = 0, $arcologies[0].FSPhysicalIdealistLaw = 0, $FSCredits += 1>><<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSPhysicalIdealist")>><<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSPhysicalIdealist" "clothesBoughtOil">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "amazon") || ($assistantAppearance == "shemale") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> @@ -933,7 +947,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSPhysicalIdealist == "unset">> <<if $arcologies[0].FSHedonisticDecadence != "unset">> <br>''You are pursuing'' societal normalization of overindulgence and immediate gratification. Be it food, drink, sex, drugs or whatever one's desire may be. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSHedonisticDecadence = "unset", $arcologies[0].FSHedonisticDecadenceDecoration = 20, $arcologies[0].FSHedonisticDecadenceLaw = 0, $arcologies[0].FSHedonisticDecadenceLaw2 = 0, $arcologies[0].FSHedonisticDecadenceSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSHedonisticDecadence")>><<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSHedonisticDecadence">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "imp") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>> @@ -952,7 +966,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSNull == "unset">> <<if $arcologies[0].FSChattelReligionist != "unset">> <br>''You are pursuing'' a new strain of religion that emphasizes the slaveholding portions of religious history. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSChattelReligionist = "unset", $arcologies[0].FSChattelReligionistDecoration = 20, $arcologies[0].FSChattelReligionistLaw = 0, $arcologies[0].FSChattelReligionistCreed = 0, $arcologies[0].FSChattelReligionistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSChattelReligionist")>><<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSChattelReligionist" "clothesBoughtHabit">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub") || ($assistantAppearance == "imp")>> @@ -971,7 +985,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>> <<if $arcologies[0].FSRomanRevivalist != "unset">> <br>''You are pursuing'' a vision of a new Rome. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSRomanRevivalist = "unset", $arcologies[0].FSRomanRevivalistDecoration = 20, $arcologies[0].FSRomanRevivalistLaw = 0, $arcologies[0].FSRomanRevivalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSRomanRevivalist")>><<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSRomanRevivalist" "clothesBoughtToga">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "amazon") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>> @@ -990,7 +1004,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>> <<if $arcologies[0].FSAztecRevivalist != "unset">> <br>''You are pursuing'' a vision of a new Aztec Empire. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSAztecRevivalist = "unset", $arcologies[0].FSAztecRevivalistDecoration = 20, $arcologies[0].FSAztecRevivalistSMR = 0, $arcologies[0].FSAztecRevivalistLaw = 0, $FSCredits += 1>><<if $assistantFSAppearance == "aztec revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSAztecRevivalist")>><<if $assistantFSAppearance == "aztec revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSAztecRevivalist" "clothesBoughtHuipil">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "amazon") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>> @@ -1009,7 +1023,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>> <<if $arcologies[0].FSEgyptianRevivalist != "unset">> <br>''You are pursuing'' a vision of Pharaoh's Egypt. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSEgyptianRevivalist = "unset", $arcologies[0].FSEgyptianRevivalistDecoration = 20, $arcologies[0].FSEgyptianRevivalistLaw = 0, $arcologies[0].FSEgyptianRevivalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSEgyptianRevivalist")>><<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSEgyptianRevivalist" "clothesBoughtEgypt">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "goddess") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>> @@ -1028,7 +1042,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>> <<if $arcologies[0].FSEdoRevivalist != "unset">> <br>''You are pursuing'' a vision of Edo Japan. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSEdoRevivalist = "unset", $arcologies[0].FSEdoRevivalistDecoration = 20, $arcologies[0].FSEdoRevivalistLaw = 0, $arcologies[0].FSEdoRevivalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSEdoRevivalist")>><<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSEdoRevivalist" "clothesBoughtKimono">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "amazon") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "loli") || ($assistantAppearance == "kitsune") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>> @@ -1045,7 +1059,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>> <<if $arcologies[0].FSArabianRevivalist != "unset">> <br>''You are pursuing'' a vision of the Sultanate of old. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSArabianRevivalist = "unset", $arcologies[0].FSArabianRevivalistDecoration = 20, $arcologies[0].FSArabianRevivalistLaw = 0, $arcologies[0].FSArabianRevivalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSArabianRevivalist")>><<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSArabianRevivalist" "clothesBoughtHarem">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>> @@ -1062,7 +1076,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset")>> <<if $arcologies[0].FSChineseRevivalist != "unset">> <br>''You are pursuing'' a vision of ancient China. - //<<link [[Abandon|Future Society]]>><<set $arcologies[0].FSChineseRevivalist = "unset", $arcologies[0].FSChineseRevivalistDecoration = 20, $arcologies[0].FSChineseRevivalistLaw = 0, $arcologies[0].FSChineseRevivalistSMR = 0, $FSCredits += 1>><<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> + //<<link "Abandon" "Future Society">><<run removeFS("FSChineseRevivalist")>><<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br> <<FSChangeDecoration "FSChineseRevivalist" "clothesBoughtQipao">> <<if $PAPublic == 1>> <<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>> @@ -1081,7 +1095,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSNull != "unset">> <br>''You are permitting <<if $arcologies[0].FSNull <= 25>>basic<<elseif $arcologies[0].FSNull <= 50>>considerable<<elseif $arcologies[0].FSNull <= 75>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology. <<if $arcologies[0].FSNull <= 25>> - //[[Abandon|Future Society][$arcologies[0].FSNull = "unset", $arcologies[0].FSNullDecoration = 20, $arcologies[0].FSNullLaw = 0, $assistantFSAppearance = "default", $FSCredits += 1]]// + //[[Abandon|Future Society][removeFS("FSNull")]]// <<else>> //[[Withdraw|Future Society][$arcologies[0].FSNull -= 25, $FSCredits += 1]]// <</if>> @@ -1100,7 +1114,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSNull != "unset">> <br>''You are permitting <<if $arcologies[0].FSNull <= 17>>basic<<elseif $arcologies[0].FSNull <= 34>>some<<elseif $arcologies[0].FSNull <= 51>>considerable<<elseif $arcologies[0].FSNull <= 68>>great<<elseif $arcologies[0].FSNull <= 85>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology. <<if $arcologies[0].FSNull <= 20>> - //[[Abandon|Future Society][$arcologies[0].FSNull = "unset", $arcologies[0].FSNullDecoration = 20, $arcologies[0].FSNullLaw = 0, $assistantFSAppearance = "default", $FSCredits += 1]]// + //[[Abandon|Future Society][removeFS("FSNull")]]// <<else>> //[[Withdraw|Future Society][$arcologies[0].FSNull -= 17, $FSCredits += 1]]// <</if>> @@ -1119,7 +1133,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSNull != "unset">> <br>''You are permitting <<if $arcologies[0].FSNull <= 15>>basic<<elseif $arcologies[0].FSNull <= 30>>some<<elseif $arcologies[0].FSNull <= 45>>notable<<elseif $arcologies[0].FSNull <= 60>>considerable<<elseif $arcologies[0].FSNull <= 75>>great<<elseif $arcologies[0].FSNull <= 90>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology. <<if $arcologies[0].FSNull <= 20>> - //[[Abandon|Future Society][$arcologies[0].FSNull = "unset", $arcologies[0].FSNullDecoration = 20, $arcologies[0].FSNullLaw = 0, $assistantFSAppearance = "default", $FSCredits += 1]]// + //[[Abandon|Future Society][removeFS("FSNull")]]// <<else>> //[[Withdraw|Future Society][$arcologies[0].FSNull -= 15, $FSCredits += 1]]// <</if>> @@ -1138,7 +1152,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc <<if $arcologies[0].FSNull != "unset">> <br>''You are permitting <<if $arcologies[0].FSNull <= 20>>basic<<elseif $arcologies[0].FSNull <= 40>>considerable<<elseif $arcologies[0].FSNull <= 60>>great<<elseif $arcologies[0].FSNull <= 80>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology. <<if $arcologies[0].FSNull <= 20>> - //[[Abandon|Future Society][$arcologies[0].FSNull = "unset", $arcologies[0].FSNullDecoration = 20, $arcologies[0].FSNullLaw = 0, $assistantFSAppearance = "default", $FSCredits += 1]]// + //[[Abandon|Future Society][removeFS("FSNull")]]// <<else>> //[[Withdraw|Future Society][$arcologies[0].FSNull -= 20, $FSCredits += 1]]// <</if>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index 0d2e1003afb529519e8880bcca7f17234600dd23..5fc50ae4ff295158593fe10e130cf0abf802f44e 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -45,7 +45,7 @@ End of week autosaving is currently @@.cyan;ENABLED@@. [[Disable|Options][$autos <br> ''COLOR CONTROL'' <br> -<<link "flip lighting">><<run flipColors(setup.lightColorMap)>><</link>> //Currently a WIP, use at own risk.// +<<link "flip lighting">><<run flipColors(setup.lightColorMap)>><</link>> <br> ''IMAGES'' diff --git a/src/uncategorized/pRivalryVictory.tw b/src/uncategorized/pRivalryVictory.tw index 71a7954aaa3f2536c7ba98caf9175310f07b0340..06502fef1734426abb70f54205769f7876720ae0 100644 --- a/src/uncategorized/pRivalryVictory.tw +++ b/src/uncategorized/pRivalryVictory.tw @@ -19,16 +19,16 @@ For the first time, you receive a direct call from your rival. You pictured the <<if $rivalSet != 0>> <<if _num < $seeDicks>>His<<else>>Her<</if>> remaining liquid assets will go to satisfy her great debts, <<if _num < $seeDicks>>his<<else>>her<</if>> @@.yellowgreen;arcology holdings are yours.@@ <<for _prv = 0; _prv < $arcologies.length; _prv++>> - <<if $arcologies[_prv].rival == 1>> - <<set $arcologies[_prv].embargo = 0>> - <<set $arcologies[_prv].embargoTarget = -1>> - <<set $arcologies[_prv].influenceTarget = -1>> - <<set $arcologies[_prv].rival = 0>> - <<set $arcologies[_prv].government = "direct democracy">> - <<set $arcologies[_prv].PCminority += $arcologies[_prv].ownership>> - <<set $arcologies[_prv].PCminority = Math.clamp($arcologies[_prv].PCminority, 0, 49)>> - <<break>> - <</if>> + <<if $arcologies[_prv].rival == 1>> + <<set $arcologies[_prv].embargo = 0>> + <<set $arcologies[_prv].embargoTarget = -1>> + <<set $arcologies[_prv].influenceTarget = -1>> + <<set $arcologies[_prv].rival = 0>> + <<set $arcologies[_prv].government = "direct democracy">> + <<set $arcologies[_prv].PCminority += $arcologies[_prv].ownership>> + <<set $arcologies[_prv].PCminority = Math.clamp($arcologies[_prv].PCminority, 0, 49)>> + <<break>> + <</if>> <</for>> <<if $hostageAnnounced == 1>><<set $hostageRescued = 1>><</if>> <<else>> @@ -44,14 +44,14 @@ For the first time, you receive a direct call from your rival. You pictured the <<if $rivalSet != 0>> "All my remaining liquid assets have just been @@.red;carefully dispersed to deny you control of my arcology.@@ You'll get nothing from me." It's true. The financial self-destruction ensures that the fiscal wreckage goes to the arcology's citizens, not you. <<for _prv = 0; _prv < $arcologies.length; _prv++>> - <<if $arcologies[_prv].rival == 1>> - <<set $arcologies[_prv].embargo = 0>> - <<set $arcologies[_prv].embargoTarget = -1>> - <<set $arcologies[_prv].influenceTarget = -1>> - <<set $arcologies[_prv].rival = 0>> - <<set $arcologies[_prv].government = "direct democracy">> - <<break>> - <</if>> + <<if $arcologies[_prv].rival == 1>> + <<set $arcologies[_prv].embargo = 0>> + <<set $arcologies[_prv].embargoTarget = -1>> + <<set $arcologies[_prv].influenceTarget = -1>> + <<set $arcologies[_prv].rival = 0>> + <<set $arcologies[_prv].government = "direct democracy">> + <<break>> + <</if>> <</for>> <<if $hostageAnnounced == 1>> <br><br> @@ -100,15 +100,15 @@ For the first time, you receive a direct call from your rival. You pictured the <<if $rivalSet != 0>> "All my remaining liquid assets have just been @@.red;carefully dispersed to deny you control of my arcology.@@ You'll get nothing from me." It's true. The financial self-destruction ensures that the fiscal wreckage goes to the arcology's citizens, not you. <<for _prv = 0; _prv < $arcologies.length; _prv++>> - <<if $arcologies[_prv].rival == 1>> - <<set $arcologies[_prv].embargo = 0>> - <<set $arcologies[_prv].embargoTarget = -1>> - <<set $arcologies[_prv].influenceTarget = -1>> - <<set $arcologies[_prv].rival = 0>> - <<set $arcologies[_prv].government = "direct democracy">> - <<if $arcologies[_prv].FSSupremacist > 20>><<set $rivalRace = $arcologies[_prv].FSSupremacistRace>><</if>> - <<break>> - <</if>> + <<if $arcologies[_prv].rival == 1>> + <<set $arcologies[_prv].embargo = 0>> + <<set $arcologies[_prv].embargoTarget = -1>> + <<set $arcologies[_prv].influenceTarget = -1>> + <<set $arcologies[_prv].rival = 0>> + <<set $arcologies[_prv].government = "direct democracy">> + <<if $arcologies[_prv].FSSupremacist > 20>><<set $rivalRace = $arcologies[_prv].FSSupremacistRace>><</if>> + <<break>> + <</if>> <</for>> <<if $hostageAnnounced == 1>> <br><br> diff --git a/src/uncategorized/pit.tw b/src/uncategorized/pit.tw index 545cfec7a7711cdc58690b85e62c8197ad1328c5..01a0e6051c3195b68ffc71ff07c1caa603f6d245 100644 --- a/src/uncategorized/pit.tw +++ b/src/uncategorized/pit.tw @@ -38,7 +38,7 @@ $pitNameCaps is clean and ready, Admission is charged to the fights here. [[Close them|Pit][$pitAudience = "none"]] | [[Stop charging|Pit][$pitAudience = "free"]] <</if>> -<<if $Bodyguard != 0 || _CL > 0 || _HL > 0 || _FL > 0>> +<<if $Bodyguard != 0 || (_CL > 0 && $activeCanine != 0) || (_HL > 0 && $activeHooved != 0) || (_FL > 0 && $activeFeline != 0)>> <br> <<if $pitBG == 0>> <<if $pitAnimal == 0>> @@ -106,14 +106,14 @@ $pitNameCaps is clean and ready, <<if $pitAnimal == 1>> <br> <<if $pitLethal == 1>> - <<if $pitAnimalType === $activeCanine>> + <<if $pitAnimalType == $activeCanine.type>> <<if $activeCanine.species != "dog">> Your slave will fight a ''$activeCanine.species''. $activeCanine.speciesCap - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]]<</if>> <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small for your slave to fight// <</if>> @@ -122,34 +122,34 @@ $pitNameCaps is clean and ready, <<if _animalEligible == 1>> Your slave will fight a ''$activeCanine.breed''. $activeCanine.breed - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]]<</if>> <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small for your slave to fight// <</if>> <</if>> <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]]<</if>> <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small for your slave to fight// <</if>> <</if>> <</if>> <</if>> - <<elseif $pitAnimalType === $activeHooved>> + <<elseif $pitAnimalType == $activeHooved.type>> Your slave will fight a ''$activeHooved.species''. <<if _CL > 0>> <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = $activeCanine]] | + [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = "canine"]] | <<else>> <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = $activeCanine]] | + [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = "canine"]] | <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// | <</if>> @@ -158,12 +158,12 @@ $pitNameCaps is clean and ready, $activeHooved.speciesCap <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small for your slave to fight// <</if>> <</if>> - <<elseif $pitAnimalType === $activeFeline>> + <<elseif $pitAnimalType == $activeFeline.type>> <<if $activeFeline.species != "cat">> Your slave will fight a ''$activeFeline.species''. <<else>> @@ -171,16 +171,16 @@ $pitNameCaps is clean and ready, <</if>> <<if _CL > 0>> <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = "canine"]] <<else>> <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = "canine"]] <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// <</if>> <</if>> <</if>> - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]] | <</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]] | <</if>> <<if $activeFeline.species != "cat">> $activeFeline.speciesCap <<else>> @@ -190,28 +190,31 @@ $pitNameCaps is clean and ready, Select an animal for your slave to fight. <<if _CL > 0>> <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = "canine"]] <<else>> <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = "canine"]] <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// <</if>> <</if>> <</if>> - /* yes, this block is a mess. if you figure out a cleaner way to do it, let me know */ - <<if (_FL > 0 && _HL > 0) || (_FL > 0 && _CL > 0) || (_HL > 0 && _CL > 0)>> | <</if>> - <<if _HL > 0>>[["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if (_CL > 0 && _HL > 0) || (_CL > 0 && _FL > 0) || (_HL > 0 && _FL > 0)>> | <</if>> + <<if _HL > 0>> + [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]] + <</if>> <<if (_HL > 0 && _FL > 0)>> | <</if>> - <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] - <<else>> - //Housecats are too small for your slave to fight// + <<if _FL > 0>> + <<if $activeFeline.species != "cat">> + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] + <<else>> + //Housecats are too small for your slave to fight// + <</if>> <</if>> <</if>> <<elseif $pitLethal == 0>> - <<if $pitAnimalType === $activeCanine>> + <<if $pitAnimalType == $activeCanine.type>> <<if $activeCanine.species != "dog">> Your slave will try to avoid being used by a ''$activeCanine.species''. $activeCanine.speciesCap @@ -219,42 +222,42 @@ $pitNameCaps is clean and ready, <<if _animalEligible == 1>> Your slave will try to avoid being used by a ''$activeCanine.breed''. $activeCanine.breed - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]]<</if>> <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small to use your slave// <</if>> <</if>> <<else>> //<<print $activeCanine.breed>>s are too small to use your slave// - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]]<</if>> <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small to use your slave// <</if>> <</if>> <</if>> <</if>> - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]]<</if>> <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small to use your slave// <</if>> <</if>> - <<elseif $pitAnimalType === $activeHooved>> + <<elseif $pitAnimalType == $activeHooved.type>> Your slave will try to avoid being used by a ''$activeHooved.species''. <<if _CL > 0>> <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = $activeCanine]] | + [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = "canine"]] | <<else>> <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = $activeCanine]] | + [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = "canine"]] | <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// | <</if>> @@ -263,12 +266,12 @@ $pitNameCaps is clean and ready, $activeHooved.speciesCap <<if _FL > 0>> | <<if $activeFeline.species != "cat">> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small to use your slave// <</if>> <</if>> - <<elseif $pitAnimalType === $activeFeline>> + <<elseif $pitAnimalType == $activeFeline.type>> <<if $activeFeline.species != "cat">> Your slave will try to avoid being used by a ''$activeFeline.species''. <<else>> @@ -276,16 +279,16 @@ $pitNameCaps is clean and ready, <</if>> <<if _CL > 0>> <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = "canine"]] <<else>> <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = "canine"]] <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// <</if>> <</if>> <</if>> - <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]] | <</if>> + <<if _HL > 0>> | [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]] | <</if>> <<if $activeFeline.species != "cat">> $activeFeline.speciesCap <<else>> @@ -295,28 +298,30 @@ $pitNameCaps is clean and ready, Select an animal for your slave to try to avoid. <<if _CL > 0>> <<if $activeCanine.species != "dog">> - [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.speciesCap + ""|Pit][$pitAnimalType = "canine"]] <<else>> <<if _animalEligible == 1>> - [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = $activeCanine]] + [["" + $activeCanine.breed + ""|Pit][$pitAnimalType = "canine"]] <<else>> //<<print $activeCanine.breed>>s are too small for your slave to fight// <</if>> <</if>> <</if>> - <<if (_FL > 0 && _HL > 0) || (_FL > 0 && _CL > 0) || (_HL > 0 && _CL > 0)>> | <</if>> - <<if _HL > 0>>[["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = $activeHooved]]<</if>> + <<if (_CL > 0 && _HL > 0) || (_CL > 0 && _FL > 0) || (_HL > 0 && _FL > 0)>> | <</if>> + <<if _HL > 0>> + [["" + $activeHooved.speciesCap + ""|Pit][$pitAnimalType = "hooved"]] + <</if>> <<if (_HL > 0 && _FL > 0)>> | <</if>> - <<if $activeFeline.species != "cat">> - <<if _FL > 0>> - [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = $activeFeline]] + <<if _FL > 0>> + <<if $activeFeline.species != "cat">> + [["" + $activeFeline.speciesCap + ""|Pit][$pitAnimalType = "feline"]] <<else>> //Housecats are too small to use your slave// <</if>> <</if>> <</if>> <</if>> -<<else>> +<<else>> /* if animal fight is unselected */ <<set $pitAnimalType = 0>> <</if>> <</if>> diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw index da4912ff4f1d0b5b65015b8059273a921ae753de..4a8d7d7044efb1c5b9bdbe9ae24856d4ffda4b0c 100644 --- a/src/uncategorized/reRelativeRecruiter.tw +++ b/src/uncategorized/reRelativeRecruiter.tw @@ -948,7 +948,7 @@ She waits anxiously for your decision. <<case "mother">> <<set $activeSlave.origin = "She was recruited into your service by her mother.">> <<set $activeSlave.anus = 0>> - <<if $activeSlave.vagina > -1>><<set $activeSlave.vagina = 0>><</if>> + <<if $activeSlave.vagina > -1>><<set $activeSlave.vagina = 0>><</if>> <<set $activeSlave.preg = -1>> <<set $activeSlave.oralSkill = 0>> <<set $activeSlave.vaginalSkill = 0>> diff --git a/src/uncategorized/recETS.tw b/src/uncategorized/recETS.tw index d704f0d798a69e26c05878284d11953af092e855..a10e39f6d6a3db6eaabbc75adf6dfc3051033fb0 100644 --- a/src/uncategorized/recETS.tw +++ b/src/uncategorized/recETS.tw @@ -1,20 +1,20 @@ :: RecETS [nobr] <<if Array.isArray($RecETSevent)>> - <<set $activeSlave = $eventSlave>> - <<if $cheatMode == 1>> - <<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */ - ''A random two slave recruitment event would have been selected from the following:'' - <br> - <<for _i = 0; _i < $RecETSevent.length; _i++>> - <<print "[[$RecETSevent[_i]|RecETS][$RecETSevent = $RecETSevent[" + _i + "]]]">> + <<set $activeSlave = $eventSlave>> + <<if $cheatMode == 1>> + <<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */ + ''A random two slave recruitment event would have been selected from the following:'' <br> - <</for>> - <br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]] - <<else>> - <<set $RecETSevent = $RecETSevent.random()>> - <<goto "RecETS">> - <</if>> + <<for _i = 0; _i < $RecETSevent.length; _i++>> + <<print "[[$RecETSevent[_i]|RecETS][$RecETSevent = $RecETSevent[" + _i + "]]]">> + <br> + <</for>> + <br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]] + <<else>> + <<set $RecETSevent = $RecETSevent.random()>> + <<goto "RecETS">> + <</if>> <<else>> <<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check", $showEncyclopedia = 1, $encyclopedia = "Enslaving People">> @@ -78,7 +78,7 @@ <<set $activeSlave.career = "a business owner">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.vagina = 2>> <<set $activeSlave.preg = -2>> <<set $activeSlave.ovaries = 1>> @@ -115,7 +115,7 @@ <<set $activeSlave.career = "a housewife">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.vagina = 2>> <<set $activeSlave.preg = 31>> <<set $activeSlave.pregType = 1>> @@ -158,7 +158,7 @@ <<set $activeSlave.origin = "She offered to become your slave to protect her incestuous relationship.">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.dick = 4>> <<set $activeSlave.balls = 3>> <<set $activeSlave.scrotum = 3>> @@ -188,7 +188,7 @@ <<set $activeSlave.career = "a dropout">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.vagina = 1>> <<set $activeSlave.preg = 31>> <<set $activeSlave.pregType = 1>> @@ -231,7 +231,7 @@ <<set $activeSlave.career = "a dropout">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.ovaries = 1>> <<set $activeSlave.face = random(15,40)>> <<set $activeSlave.attrXX = 80>> @@ -265,7 +265,7 @@ <<set $activeSlave.career = "a dropout">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.face = random(15,40)>> <<set $activeSlave.clothes = "conservative clothing">> <<set $activeSlave.health = random(20,40)>> @@ -298,7 +298,7 @@ <<set $activeSlave.origin = "She offered to become your slave to protect her incestuous relationship.">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.face = random(15,40)>> <<set $activeSlave.attrXX = 80>> <<set $activeSlave.vaginalSkill = 15>> @@ -330,7 +330,7 @@ <<set $activeSlave.origin = "She offered to become your slave to protect her incestuous relationship.">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.face = random(15,40)>> <<set $activeSlave.clothes = "conservative clothing">> <<set $activeSlave.health = random(20,40)>> @@ -362,7 +362,7 @@ <<set $activeSlave.origin = "She offered to become your slave to protect her incestuous relationship.">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.face = random(15,40)>> <<set $activeSlave.attrXX = 80>> <<set $activeSlave.vaginalSkill = 15>> @@ -395,7 +395,7 @@ <<set $activeSlave.career = "a housewife">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.vagina = 2>> <<set $activeSlave.ovaries = 1>> <<set $activeSlave.birthsTotal += 1>> @@ -431,7 +431,7 @@ <<set $activeSlave.origin = "She offered to become your slave to protect her incestuous relationship.">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.dick = 4>> <<set $activeSlave.balls = 3>> <<set $activeSlave.scrotum = 3>> @@ -467,7 +467,7 @@ <<set $activeSlave.career = "a reluctant anal whore">> <<set $activeSlave.devotion = random(-15,15)>> <<set $activeSlave.trust = random(-15,15)>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> <<set $activeSlave.health = random(0,20)>> <<set $activeSlave.anus = 1>> <<set $activeSlave.vagina = -1>> @@ -580,7 +580,7 @@ <<set $activeSlave.face = 15>> <<set $activeSlave.faceShape = "cute">> <<if $activeSlave.physicalAge >= 12>> - <<set $activeSlave.teeth = "normal">> + <<set $activeSlave.teeth = "normal">> <</if>> <<set $activeSlave.vaginalSkill = 15>> <<set $activeSlave.oralSkill = 15>> @@ -737,25 +737,669 @@ <</switch>> -<<setLocalPronouns $activeSlave>> +<<set $relative = clone($activeSlave)>> + +<<switch $RecETSevent>> + +<<case "addict mother daughter">> + +<<set $activeSlave.origin = "You tricked her mother into selling her into slavery to clear addiction debts.">> +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.devotion += 10>> +<<set $activeSlave.trust += 10>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.boobs -= 100>> +<<set $activeSlave.butt -= 1>> +<<if $activeSlave.vagina > -1>><<set $activeSlave.vagina = 1>><</if>> +<<set $activeSlave.anus = 1>> +<<set $activeSlaveOneTimeMaxAge = Math.min(22, Math.max($minimumSlaveAge, $activeSlave.actualAge - 11))>> +<<set $activeSlaveOneTimeMinAge = Math.min(Math.max(15, $minimumSlaveAge), $activeSlaveOneTimeMaxAge)>> +<<if $pedo_mode == 1>><<set $activeSlaveOneTimeMinAge = $minimumSlaveAge>><</if>> +<<set $activeSlave.actualAge = random($activeSlaveOneTimeMinAge, $activeSlaveOneTimeMaxAge)>> +<<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> +<<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.birthsTotal = 0>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "posh mother daughter">> + +<<set $activeSlave.origin = "You acquired her along with her mother when the family business failed.">> +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.devotion -= 25>> +<<set $activeSlave.trust -= 10>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.boobs -= 400>> +<<set $activeSlave.boobsImplant = 0>> +<<set $activeSlave.butt -= 1>> +<<set $activeSlave.vagina = 1>> +<<set $activeSlave.anus = 0>> +<<set $activeSlave.vaginalSkill = 0>> +<<set $activeSlaveOneTimeMaxAge = Math.max($minimumSlaveAge,Math.min(19, ($activeSlave.actualAge - Math.min(11, $fertilityAge))))>> +<<set $activeSlaveOneTimeMinAge = Math.min(18, $activeSlaveOneTimeMaxAge)>> +<<if $pedo_mode == 1>><<set $activeSlaveOneTimeMinAge = $minimumSlaveAge>><</if>> +<<set $activeSlave.actualAge = random($activeSlaveOneTimeMinAge, $activeSlaveOneTimeMaxAge)>> +<<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> +<<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.birthsTotal = 0>> +<<set $activeSlave.preg = 0>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "incest mother son">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.career = "a student">> +<<set $activeSlave.actualAge -= 18>> +<<if $activeSlave.actualAge > 20>> + <<if $potencyAge >= $minimumSlaveAge>> + <<set $activeSlave.actualAge = random($potencyAge, 20)>> + <<else>> + <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> + <</if>> +<</if>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<set $activeSlave.genes = "XY">> +<<ResyncHeight $activeSlave>> +<<set $activeSlave.vagina = -1>> +<<set $activeSlave.pubertyXX = 0>> +<<set $activeSlave.pubertyXY = 1>> +<<set $activeSlave.preg = 0>> +<<set $activeSlave.pregKnown = 0>> +<<set $activeSlave.pregWeek = 0>> +<<set $activeSlave.pregType = 0>> +<<set $activeSlave.pregSource = 0>> +<<set WombFlush($activeSlave)>> +<<run SetBellySize($activeSlave)>> +<<set $activeSlave.dick = 2>> +<<set $activeSlave.foreskin = 3>> +<<set $activeSlave.ovaries = 0>> +<<set $activeSlave.balls = 2>> +<<set $activeSlave.scrotum = 2>> +<<set $activeSlave.prostate = 1>> +<<set $activeSlave.clit = 0>> +<<set $activeSlave.vaginalSkill = 0>> +<<set $activeSlave.faceShape = "cute">> +<<set $activeSlave.boobs = 0>> +<<set $activeSlave.birthsTotal = 0>> +<<set $activeSlave.lactation = 0>> +<<set $activeSlave.anus = 0>> +<<set $activeSlave.butt -= 2>> +<<set $activeSlave.behavioralQuirk = "none">> +<<set $activeSlave.sexualQuirk = "perverted">> +<<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> +<<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "incest father daughter">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.career = "a student">> +<<set $activeSlave.actualAge -= 18>> +<<if $activeSlave.actualAge > 20>> + <<if $potencyAge >= $minimumSlaveAge>> + <<set $activeSlave.actualAge = random($potencyAge, 20)>> + <<else>> + <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> + <</if>> +<</if>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<set $activeSlave.genes = "XX">> +<<ResyncHeight $activeSlave>> +<<set $activeSlave.pubertyXX = 1>> +<<set $activeSlave.pubertyXY = 0>> +<<set $activeSlave.vagina = 3>> +<<set $activeSlave.preg = 30>> +<<set $activeSlave.dick = 0>> +<<set $activeSlave.ovaries = 1>> +<<set $activeSlave.balls = 0>> +<<set $activeSlave.scrotum = 0>> +<<set $activeSlave.clit = 1>> +<<set $activeSlave.prostate = 0>> +<<set $activeSlave.voice = 2>> +<<set $activeSlave.vaginalSkill = 50>> +<<set $activeSlave.boobs = (random(3,6)*100)>> +<<set $activeSlave.pregType = 1>> +<<set $activeSlave.pregKnown = 1>> +<<set $activeSlave.pregWeek = $activeSlave.preg>> +<<run SetBellySize($activeSlave)>> +<<set $activeSlave.pregSource = $activeSlave.ID - 1000>> +<<set $activeSlave.faceShape = "cute">> +<<set $activeSlave.behavioralQuirk = "none">> +<<set $activeSlave.sexualQuirk = "perverted">> +<<if $familyTesting == 1>> + <<set $activeSlave.father = $activeSlave.ID - 1000>> +<<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "incest brother sister">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.actualAge -= 2>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<set $activeSlave.genes = "XY">> +<<ResyncHeight $activeSlave>> +<<set $activeSlave.vagina = -1>> +<<set $activeSlave.pubertyXX = 0>> +<<set $activeSlave.pubertyXY = 1>> +<<set $activeSlave.preg = 0>> +<<set $activeSlave.pregType = 0>> +<<set $activeSlave.pregSource = 0>> +<<set $activeSlave.pregKnown = 0>> +<<set $activeSlave.pregWeek = 0>> +<<set WombFlush($activeSlave)>> +<<run SetBellySize($activeSlave)>> +<<set $activeSlave.dick = 2>> +<<set $activeSlave.foreskin = 2>> +<<set $activeSlave.ovaries = 0>> +<<set $activeSlave.balls = 2>> +<<set $activeSlave.scrotum = 2>> +<<set $activeSlave.prostate = 1>> +<<set $activeSlave.clit = 0>> +<<set $activeSlave.vaginalSkill = 0>> +<<set $activeSlave.faceShape = "masculine">> +<<set $activeSlave.boobs = 0>> +<<set $activeSlave.lactation = 0>> +<<set $activeSlave.anus = 0>> +<<set $activeSlave.pubicHStyle = "bushy">> +<<set $activeSlave.behavioralQuirk = "none">> +<<set $activeSlave.sexualQuirk = "perverted">> +<<set $activeSlave.clothes = "conservative clothing">> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "incest sister sister">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.actualAge -= 2>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<ResyncHeight $activeSlave>> +<<set $activeSlave.pubicHStyle = "shaved">> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "incest brother brother">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.actualAge -= 2>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<set $activeSlave.height += random(-5,5)>> +<<set $activeSlave.pubicHStyle = "shaved">> +<<set $activeSlave.dick += 2>> +<<set $activeSlave.balls += 2>> +<<set $activeSlave.scrotum = $activeSlave.balls>> +<<if $activeSlave.foreskin>> + <<set $activeSlave.foreskin = $activeSlave.dick>> +<</if>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "incest twin sister">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.height += random(-5,5)>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "incest twin brother">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.height += random(-5,5)>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "incest twins mixed">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.genes = "XY">> +<<set $activeSlave.height += random(-5,5)>> +<<set $activeSlave.vagina = -1>> +<<set $activeSlave.pubertyXX = 0>> +<<set $activeSlave.pubertyXY = 1>> +<<set $activeSlave.dick = 2>> +<<set $activeSlave.foreskin = 2>> +<<set $activeSlave.ovaries = 0>> +<<set $activeSlave.balls = 2>> +<<set $activeSlave.scrotum = 2>> +<<set $activeSlave.prostate = 1>> +<<set $activeSlave.clit = 0>> +<<set $activeSlave.vaginalSkill = 0>> +<<set $activeSlave.faceShape = "masculine">> +<<set $activeSlave.boobs = 0>> +<<set $activeSlave.lactation = 0>> +<<set $activeSlave.anus = 0>> +<<set $activeSlave.pubicHStyle = "bushy">> +<<set $activeSlave.behavioralQuirk = "none">> +<<set $activeSlave.sexualQuirk = "perverted">> +<<set $activeSlave.clothes = "conservative clothing">> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "incest mother daughter">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.career = "a student">> +<<set $activeSlave.actualAge -= 18>> +<<if $activeSlave.actualAge > 20>> + <<if $potencyAge >= $minimumSlaveAge>> + <<set $activeSlave.actualAge = random($potencyAge, 20)>> + <<else>> + <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> + <</if>> +<</if>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<ResyncHeight $activeSlave>> +<<set $activeSlave.vagina = 0>> +<<if $activeSlave.actualAge < $fertilityAge>> + <<set $activeSlave.pubertyXX = 0>> +<</if>> +<<set $activeSlave.vagina = 0>> +<<set $activeSlave.birthsTotal = 0>> +<<set $activeSlave.vaginalSkill = 15>> +<<set $activeSlave.anus = 0>> +<<set $activeSlave.boobs -= 300>> +<<set $activeSlave.lactation = 0>> +<<set $activeSlave.boobsImplant = 0>> +<<set $activeSlave.butt -= 2>> +<<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> +<<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "incest father son">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.career = "a student">> +<<set $activeSlave.actualAge -= 18>> +<<if $activeSlave.actualAge > 20>> + <<if $potencyAge >= $minimumSlaveAge>> + <<set $activeSlave.actualAge = random($potencyAge, 20)>> + <<else>> + <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> + <</if>> +<</if>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<ResyncHeight $activeSlave>> +<<set $activeSlave.vagina = -1>> +<<if $activeSlave.actualAge < $potencyAge>> + <<set $activeSlave.pubertyXY = 0>> +<</if>> +<<set $activeSlave.dick -= 2>> +<<set $activeSlave.balls -= 1>> +<<set $activeSlave.scrotum -= 1>> +<<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> +<<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 3>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> +<<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> +<<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> +<</if>> + +<<case "mismatched pair">> + +<<set $activeSlave.origin = "You acquired her along with her sissy sister due to her inexperience as a madam.">> +<<set $activeSlave.career = "a pimp">> +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.devotion -= 50>> +<<set $activeSlave.trust -= 10>> +<<set $activeSlave.oldDevotion = $activeSlave.devotion>> +<<set $activeSlave.anus = 0>> +<<set $activeSlave.vagina = 1>> +<<set $activeSlave.preg = -1>> +<<set $activeSlave.dick = 0>> +<<set $activeSlave.scrotum = 0>> +<<set $activeSlave.ovaries = 1>> +<<set $activeSlave.balls = 0>> +<<set $activeSlave.vaginalSkill = 0>> +<<set $activeSlave.oralSkill = 0>> +<<set $activeSlave.analSkill = 0>> +<<set $activeSlave.behavioralFlaw = "arrogant">> +<<set $activeSlave.sexualFlaw = "hates penetration">> +<<set $activeSlave.boobs = either(400, 500)>> +<<set $activeSlave.boobsImplant = 0>> +<<set $activeSlave.butt = either(2, 3)>> +<<if $activeSlave.actualAge > 12>> +<<set $activeSlave.actualAge = 16>> +<<else>> +<<set $activeSlave.actualAge += 4>> +<</if>> +<<set $activeSlave.visualAge = $activeSlave.actualAge>> +<<set $activeSlave.physicalAge = $activeSlave.actualAge>> +<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "sister">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.rivalry = 3>> +<<set $activeSlave.rivalryTarget = $activeSlave.ID - 1000>> + +<<case "matched pair">> + +<<set $activeSlave.slaveName = $activeSlave.birthName>> +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.vagina = 1>> +<<set $activeSlave.preg = -1>> +<<set $activeSlave.dick = 0>> +<<set $activeSlave.scrotum = 0>> +<<set $activeSlave.clit = 2>> +<<set $activeSlave.ovaries = 1>> +<<set $activeSlave.balls = 0>> +<<set $activeSlave.vaginalSkill = 15>> +<<set $activeSlave.boobsImplant = 0>> +<<set $activeSlave.buttImplant = 0>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "twin">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 2>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "identical pair">> + +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "twin">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 2>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "identical herm pair">> + +<<set $activeSlave.ID = $activeSlave.ID + 1000>> +<<set $activeSlave.womb = []>> +<<set $activeSlave.pregSource = $activeSlave.ID - 1000>> +<<if $familyTesting == 1>> +<<else>> + <<set $activeSlave.relation = "twin">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> +<</if>> +<<set $activeSlave.relationship = 4>> +<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> + +<<case "desperate broodmother">> + +<<if random(1,100) < $seeDicks>> /*boy*/ + <<set $activeSlave.origin = "Her mother offered her to you as an incentive to take her in.">> + <<set $activeSlave.slaveName = $activeSlave.birthName>> + <<set $activeSlave.ID = $activeSlave.ID + 1000>> + <<set $activeSlave.health = random(10,20)>> + <<set $activeSlave.devotion -= 5>> + <<set $activeSlave.trust -= 5>> + <<set $activeSlave.oldDevotion = $activeSlave.devotion>> + <<set $activeSlave.genes = "XY">> + <<set $activeSlave.preg = 0>> + <<set $activeSlave.pregType = 0>> + <<set $activeSlave.pregKnown = 0>> + <<set $activeSlave.pregWeek = 0>> + <<set $activeSlave.pregAdaptation = 10>> + <<set WombFlush($activeSlave)>> + <<run SetBellySize($activeSlave)>> + <<set $activeSlave.labor = 0>> + <<set $activeSlave.ovaries = 0>> + <<set $activeSlave.birthsTotal = 0>> + <<set $activeSlave.anus = 0>> + <<set $activeSlave.vaginalSkill = 0>> + <<set $activeSlave.whoreSkill = 0>> + <<set $activeSlave.analSkill = 0>> + <<set $activeSlave.weight = random(-80,-50)>> + <<set $activeSlave.muscles = 0>> + <<set $activeSlave.underArmHStyle = "bushy">> + <<set $activeSlave.pubicHStyle = "bushy">> + <<set $activeSlave.boobs = 0>> + <<set $activeSlave.boobShape = "perky">> + <<set $activeSlave.nipples = "tiny">> + <<set $activeSlave.lactation = 0>> + <<set $activeSlave.lactationAdaptation = 0>> + <<set $activeSlave.hips = -2>> + <<set $activeSlave.shoulders = -2>> + <<set $activeSlave.waist = 0>> + <<set $activeSlave.vaginaLube = 0>> + <<set $activeSlave.butt = 0>> + <<set $activeSlave.tired = 1>> + <<set $activeSlave.fetish = "none">> + <<set $activeSlave.fetishStrength = 0>> + <<set $activeSlave.sexualFlaw = "none">> + <<set $activeSlave.sexualQuirk = "none">> + <<set $activeSlave.bellySag = 0>> + <<set $activeSlave.bellySagPreg = 0>> + <<set $activeSlave.pubertyXX = 0>> + <<set $activeSlave.dick = 1>> + <<set $activeSlave.foreskin = 1>> + <<set $activeSlave.balls = 2>> + <<set $activeSlave.scrotum = 3>> + <<set $activeSlave.prostate = 1>> + <<set $activeSlave.actualAge = 3>> + <<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> + <<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> + <</if>> + <<set $activeSlave.visualAge = $activeSlave.actualAge>> + <<set $activeSlave.physicalAge = $activeSlave.actualAge>> + <<set $activeSlave.ovaryAge = $activeSlave.actualAge>> + <<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> + <<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> + <</if>> +<<else>> /*girl*/ + <<set $activeSlave.origin = "Her mother offered her to you as an incentive to take her in.">> + <<set $activeSlave.slaveName = $activeSlave.birthName>> + <<set $activeSlave.ID = $activeSlave.ID + 1000>> + <<set $activeSlave.health = random(10,20)>> + <<set $activeSlave.devotion -= 5>> + <<set $activeSlave.trust -= 5>> + <<set $activeSlave.oldDevotion = $activeSlave.devotion>> + <<set $activeSlave.preg = 0>> + <<set $activeSlave.pregType = 0>> + <<set $activeSlave.labor = 0>> + <<set $activeSlave.birthsTotal = 0>> + <<set $activeSlave.anus = 0>> + <<set $activeSlave.vaginalSkill = 0>> + <<set $activeSlave.whoreSkill = 0>> + <<set $activeSlave.analSkill = 0>> + <<set $activeSlave.weight = random(-80,-50)>> + <<set $activeSlave.muscles = 0>> + <<set $activeSlave.underArmHStyle = "bushy">> + <<set $activeSlave.pubicHStyle = "bushy">> + <<set $activeSlave.boobs = 0>> + <<set $activeSlave.boobShape = "perky">> + <<set $activeSlave.nipples = "tiny">> + <<set $activeSlave.lactation = 0>> + <<set $activeSlave.lactationAdaptation = 0>> + <<set $activeSlave.hips = -2>> + <<set $activeSlave.shoulders = -2>> + <<set $activeSlave.waist = 0>> + <<set $activeSlave.vaginaLube = 0>> + <<set $activeSlave.butt = 0>> + <<set $activeSlave.tired = 1>> + <<set $activeSlave.fetish = "none">> + <<set $activeSlave.fetishStrength = 0>> + <<set $activeSlave.sexualFlaw = "none">> + <<set $activeSlave.sexualQuirk = "none">> + <<set $activeSlave.bellySag = 0>> + <<set $activeSlave.bellySagPreg = 0>> + <<set $activeSlave.pubertyXX = 0>> + <<set $activeSlave.vagina = 0>> + <<set $activeSlave.pregKnown = 0>> + <<set $activeSlave.pregAdaptation = 10>> + <<set WombFlush($activeSlave)>> + <<if $fertilityAge <= 3>> + <<set $activeSlave.pubertyXX = 1>> + <<set $activeSlave.preg = 6>> + <<set $activeSlave.pregType = 1>> + <<set $activeSlave.pregKnown = 1>> + <<set $activeSlave.vagina = 1>> + <</if>> + <<set $activeSlave.pregWeek = $activeSlave.preg>> + <<run SetBellySize($activeSlave)>> + <<set $activeSlave.actualAge = 3>> + <<if $familyTesting == 1>> + <<set $activeSlave.mother = $activeSlave.ID - 1000>> + <<else>> + <<set $activeSlave.relation = "daughter">> + <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> + <</if>> + <<set $activeSlave.visualAge = $activeSlave.actualAge>> + <<set $activeSlave.physicalAge = $activeSlave.actualAge>> + <<set $activeSlave.ovaryAge = $activeSlave.actualAge>> + <<if $activeSlave.physicalAge < 6>> + <<set $activeSlave.teeth = "baby">> + <<elseif $activeSlave.physicalAge < 12>> + <<set $activeSlave.teeth = "mixed">> + <</if>> +<</if>> + +<</switch>> + +<<set $relative2 = clone($activeSlave)>> +<<set $activeSlave = clone($relative)>> +<<setLocalPronouns $relative>> +<<setLocalPronouns $relative2 2>> <<switch $RecETSevent>> <<case "addict mother daughter">> -A matronly woman comes to your penthouse in tears. It seems $he is a tenant of yours, and has fallen deeply into debt as a result of aphrodisiac addiction. $He offers to sell $himself into slavery if you will pay off $his debts. $He is strangely eager about this, and after some probing it becomes apparent that $he is living with $his daughter and wants to avoid having $his daughter involved in this debt. +A matronly $woman comes to your penthouse in tears. It seems $he is a tenant of yours, and has fallen deeply into debt as a result of aphrodisiac addiction. $He offers to sell $himself into slavery if you will pay off $his debts. $He is strangely eager about this, and after some probing it becomes apparent that $he is living with $his daughter and wants to avoid having $his daughter involved in this debt. <br><br> -//Enslaving $him will cost <<print cashFormat($contractCost)>>. Alternatively, you could sell your rights to $him. Less costs, this will bring in <<print cashFormat($slaveCost)>>. As a third option, for <<print cashFormat(($contractCost*2))>> you could manipulate her to bind both mother and daughter, but you wouldn't be able to examine the daughter first.// +//Enslaving $him will cost <<print cashFormat($contractCost)>>. Alternatively, you could sell your rights to $him. Less costs, this will bring in <<print cashFormat($slaveCost)>>. As a third option, for <<print cashFormat(($contractCost*2))>> you could manipulate $him to bind both mother and daughter, but you wouldn't be able to examine the daughter first.// <<case "posh mother daughter">> -An older woman comes to see you representing $his family business. She's pretty enough, but extremely unpleasant to deal with. She pushes hard for a deal that strongly favors her, and is not above leaning over your desk to give you an eyeful of probably-enhanced cleavage behind $his business attire. As you argue, a discreet alert appears on your desk: $his family business is actually on the verge of bankruptcy. With a press of your thumb you could acquire enough of $his debts to be able to enslave her. And what's more, $his daughter just came of age and became a partner in the business. She's in play, too. Based on the desk report, she's likely to be a spoiled little bitch. +An older $woman comes to see you representing $his family business. $He's pretty enough, but extremely unpleasant to deal with. $He pushes hard for a deal that strongly favors $him, and is not above leaning over your desk to give you an eyeful of probably-enhanced cleavage behind $his business attire. As you argue, a discreet alert appears on your desk: $his family business is actually on the verge of bankruptcy. With a press of your thumb you could acquire enough of $his debts to be able to enslave $him. And what's more, $his daughter just came of age and became a partner in the business. _He2's in play, too. Based on the desk report, _he2's likely to be a spoiled little bitch. <br><br> -//Enslaving the mother will cost <<print cashFormat($contractCost)>>. Alternatively, you could sell your rights to her. Less costs, this will bring in <<print cashFormat($slaveCost)>>. As a third option, for <<print cashFormat(($contractCost*2))>> you could enslave both mother and daughter, but you wouldn't be able to examine the daughter first.// +//Enslaving the mother will cost <<print cashFormat($contractCost)>>. Alternatively, you could sell your rights to $him. Less costs, this will bring in <<print cashFormat($slaveCost)>>. As a third option, for <<print cashFormat(($contractCost*2))>> you could enslave both mother and daughter, but you wouldn't be able to examine the daughter first.// <<case "incest mother son">> @@ -763,7 +1407,7 @@ You receive so many messages, as a noted titan of the new Free Cities world, tha <br><br> -This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a mother and son who had to flee their home after her husband found out the child in her rounded middle was not his, but his son's. They feel that life in an arcology together, even as slaves, would be better than their new life on the streets. +This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a mother and son who had to flee their home after $his husband found out the child in $his rounded middle was not his, but his son's. They feel that life in an arcology together, even as slaves, would be better than their new life on the streets. <br><br> @@ -775,7 +1419,7 @@ You receive so many messages, as a noted titan of the new Free Cities world, tha <br><br> -This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and daughter who had to flee their home after his wife found out he was having sex with their daughter. Her gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. +This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and daughter who had to flee their home after $his wife found out $he was having sex with their daughter. _His2 gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. <br><br> @@ -785,7 +1429,7 @@ It would cost <<print cashFormat($contractCost)>> to enslave the two of them. You receive so many messages, as a noted titan of the new Free Cities world, that $assistantName has to be quite draconian in culling them. She lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were. <br><br> -This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a brother and sister who had to flee their home after their parents found out they were having sex with each other. Her gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. +This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a brother and sister who had to flee their home after their parents found out they were having sex with each other. $His gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. <br><br> It would cost <<print cashFormat($contractCost)>> to enslave the two of them. @@ -841,13 +1485,13 @@ It would cost <<print cashFormat($contractCost)>> to enslave the two of them. You receive so many messages, as a noted titan of the new Free Cities world, that $assistantName has to be quite draconian in culling them. She lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were. <br><br> -This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and son who had to flee their home after his wife found out he was having sex with their son. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. +This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual - the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and son who had to flee their home after $his wife found out $he was having sex with their son. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. <br><br> It would cost <<print cashFormat($contractCost)>> to enslave the two of them. <<case "mismatched pair">> -Your head girl comes to see you. She flags a slave posted for sale on your desk. The posting seems completely unimpressive - just a bitch barely past $his <<print $activeSlave.actualAge>>th birthday with basic implants and a pathetic little dick - until she points out that the person posting her for sale is $his sister. $His slightly older, naturally female sister. Who, to go by the pictures, the younger sibling has desperately been trying to mold $himself to look more like. +Your head girl comes to see you. She flags a slave posted for sale on your desk. The posting seems completely unimpressive - just a bitch barely past $his <<print $activeSlave.actualAge>>th birthday with basic implants and a pathetic little dick - until she points out that the person posting $him for sale is $his sister. $His slightly older, naturally female sister. Who, to go by the pictures, the younger sibling has desperately been trying to mold $himself to look more like. <br><br> @@ -855,11 +1499,11 @@ Your head girl comes to see you. She flags a slave posted for sale on your desk. <br><br> -You bring up a video feed of the one-room apartment they share. A man, clearly a client, is sitting on the bed while the sissy rides him. $He's facing away from the john, so $he isn't trying to hide the fact that she isn't happy selling $his anus for money. The older sister is naked, but she's trying to act as a pimp of sorts rather than helping fuck. She alternately poses and preens for the john and nonverbally scolds the wincing sissy when he's not paying attention. After the customer finishes, the sissy heads to the toilet to clean $himself, and $his older sister whispers to the john that the sissy's for sale. The john laughs at her and excuses himself. +You bring up a video feed of the one-room apartment they share. A man, clearly a client, is sitting on the bed while the sissy rides him. $He's facing away from the john, so $he isn't trying to hide the fact that she isn't happy selling $his anus for money. The older sister is naked, but _he2's trying to act as a pimp of sorts rather than helping fuck. _He2 alternately poses and preens for the john and nonverbally scolds the wincing sissy when he's not paying attention. After the customer finishes, the sissy heads to the toilet to clean $himself, and $his older sister whispers to the john that the sissy's for sale. The john laughs at _him2 and excuses himself. <br><br> -//Enslaving the younger, sissy sister will cost <<print cashFormat($contractCost)>>. Alternatively, you could sell your rights to her. Less costs, this will bring in <<print cashFormat($slaveCost)>>. As a third option, for <<print cashFormat(($contractCost*2))>> you could enslave both sisters, but you wouldn't be able to examine the older one first. She'll likely be very rebellious and sexually unskilled.// +//Enslaving the younger, sissy sister will cost <<print cashFormat($contractCost)>>. Alternatively, you could sell your rights to $him. Less costs, this will bring in <<print cashFormat($slaveCost)>>. As a third option, for <<print cashFormat(($contractCost*2))>> you could enslave both sisters, but you wouldn't be able to examine the older one first. She'll likely be very rebellious and sexually unskilled.// <<case "matched pair">> @@ -875,7 +1519,7 @@ One of them speaks up. "We're twins, <<= properTitle()>>. Fraternal twins. We ha <br><br> -//Her sister is identical except that she is naturally female and lacks implants, having reached that size the normal way.// +//$His sister is identical except that _he2 is naturally female and lacks implants, having reached that size the normal way.// <<case "identical pair">> @@ -941,7 +1585,7 @@ This call is coming from a public kiosk, which is usually an indication that the <<case "addict mother daughter">> -<<link "Accept her proposal and enslave $him">> +<<link "Accept $his proposal and enslave $him">> <<set $activeSlave.relation = 0>> <<set $activeSlave.relationTarget = 0>> <<set $activeSlave.oralCount += 1>> @@ -1008,34 +1652,34 @@ This call is coming from a public kiosk, which is usually an indication that the <<case "addict mother daughter">> -<<link "Manipulate her to enslave both mother and daughter">> - <<set $mother = $activeSlave, $mother.devotion -= 50, $cash -= ($contractCost*2)>> - <<run newSlave($mother)>> +<<link "Manipulate $him to enslave both mother and daughter">> + <<set $relative.devotion -= 50, $cash -= ($contractCost*2)>> + <<run newSlave($relative)>> <<goto "RecETS workaround">> <</link>> <<case "posh mother daughter">> -<<link "Manipulate her to enslave both mother and daughter">> - <<set $mother = $activeSlave, $mother.devotion -= 25, $cash -= ($contractCost*2)>> - <<run newSlave($mother)>> +<<link "Manipulate $him to enslave both mother and daughter">> + <<set $relative.devotion -= 25, $cash -= ($contractCost*2)>> + <<run newSlave($relative)>> <<goto "RecETS workaround">> <</link>> <<case "mismatched pair">> <<link "Enslave both">> - <<set $sissy = $activeSlave, $cash -= ($contractCost*2)>> - <<run newSlave($sissy)>> + <<set $cash -= ($contractCost*2)>> + <<run newSlave($relative)>> <<goto "RecETS workaround">> <</link>> <<case "desperate broodmother">> <<if $minimumSlaveAge <= 3>> - <<link "Accept her offer">> - <<set $sissy = $activeSlave, $cash -= ($contractCost*2)>> - <<run newSlave($sissy)>> + <<link "Accept $his offer">> + <<set $cash -= ($contractCost*2)>> + <<run newSlave($relative)>> <<goto "RecETS workaround">> <</link>> <</if>> @@ -1043,23 +1687,23 @@ This call is coming from a public kiosk, which is usually an indication that the <<case "incest brother brother" "incest father daughter" "incest father son" "incest mother daughter" "incest sister sister" "incest twin brother" "incest twin sister" "incest twins mixed">> <<link "Buy both">> - <<set $sissy = $activeSlave, $cash -= $contractCost>> - <<run newSlave($sissy)>> + <<set $cash -= $contractCost>> + <<run newSlave($relative)>> <<goto "RecETS workaround">> <</link>> <<case "identical pair" "matched pair">> <<link "Buy both">> - <<set $sissy = $activeSlave, $cash -= $contractCost>> - <<run newSlave($sissy)>> + <<set $cash -= $contractCost>> + <<run newSlave($relative)>> <<goto "RecETS workaround">> <</link>> <<case "identical herm pair" "incest brother sister" "incest mother son">> <<link "Buy both">> - <<set $sissy = $activeSlave, $cash -= $contractCost>> + <<set $cash -= $contractCost>> <<goto "RecETS workaround">> <</link>> diff --git a/src/uncategorized/recETSWorkaround.tw b/src/uncategorized/recETSWorkaround.tw index 2ea7ed9365c477655eced74909c316d6ae298bed..d016f544053e98179d8ce67cd2af115476155c21 100644 --- a/src/uncategorized/recETSWorkaround.tw +++ b/src/uncategorized/recETSWorkaround.tw @@ -1,86 +1,26 @@ :: RecETS workaround [nobr] +<<setLocalPronouns $relative>> +<<setLocalPronouns $activeSlave 2>> + <<switch $RecETSevent>> <<case "addict mother daughter">> -Despite herself, she sobs with relief when you agree. She offers to <<if $PC.dick == 1>>suck you off<<else>>eat you out<</if>> while you complete the necessary legalities, but instead you idly place a big dose of aphrodisiac on your desk and tell her to wait quietly. After ten minutes of careful manipulation, she's signed away both her own freedom and her daughter's without realizing it, in return for the drug. She's masturbating furiously on a chair when her daughter arrives. She immediately realizes what's happened and her eyes fill with all-consuming hatred, but she can't stop rubbing. +Despite $himself, she sobs with relief when you agree. $He offers to <<if $PC.dick == 1>>suck you off<<else>>eat you out<</if>> while you complete the necessary legalities, but instead you idly place a big dose of aphrodisiac on your desk and tell $him to wait quietly. After ten minutes of careful manipulation, she's signed away both her own freedom and her daughter's without realizing it, in return for the drug. She's masturbating furiously on a chair when her daughter arrives. She immediately realizes what's happened and her eyes fill with all-consuming hatred, but $he can't stop rubbing. <br><br> -Unsurprisingly the daughter is an addict too, and before long she's given her signature and is sitting on a different chair on a strong dose of aphrodisiacs. <<if $activeSlave.dick > 0>>Mother and daughter crank it desperately,<<else>>Mother and daughter schlick themselves desperately,<</if>> sobbing in despair as you hurry to complete the nastily complex paperwork. This is going to be fun. - -<<set $activeSlave.origin = "You tricked her mother into selling her into slavery to clear addiction debts.">> -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.devotion += 10>> -<<set $activeSlave.trust += 10>> -<<set $activeSlave.oldDevotion = $activeSlave.devotion>> -<<set $activeSlave.boobs -= 100>> -<<set $activeSlave.butt -= 1>> -<<if $activeSlave.vagina > -1>><<set $activeSlave.vagina = 1>><</if>> -<<set $activeSlave.anus = 1>> -<<set $activeSlaveOneTimeMaxAge = Math.min(22, Math.max($minimumSlaveAge, $activeSlave.actualAge - 11))>> -<<set $activeSlaveOneTimeMinAge = Math.min(Math.max(15, $minimumSlaveAge), $activeSlaveOneTimeMaxAge)>> -<<if $pedo_mode == 1>><<set $activeSlaveOneTimeMinAge = $minimumSlaveAge>><</if>> -<<set $activeSlave.actualAge = random($activeSlaveOneTimeMinAge, $activeSlaveOneTimeMaxAge)>> -<<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> -<<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.birthsTotal = 0>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> +Unsurprisingly the daughter is an addict too, and before long _he2's given _his2 signature and is sitting on a different chair on a strong dose of aphrodisiacs. <<if $activeSlave.dick > 0>>Mother and daughter crank it desperately,<<else>>Mother and daughter schlick themselves desperately,<</if>> sobbing in despair as you hurry to complete the nastily complex paperwork. This is going to be fun. <<case "posh mother daughter">> -You press your thumb down on your desk interface and then tell her to read the display, strip, and show you her body. She knits her brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on her and she stares you in the eye for a long moment - and then drops to her knees and begins to beg for her daughter's freedom. She knows the Free Cities well enough to be unsurprised when you ignore her completely. She stands and sadly strips off her blouse and slacks. Following orders, she rotates slowly for you. Then, she bends over facing away from you and spreads her buttocks to display her holes. Unsurprisingly, she's got a well-used pussy but has clearly never taken it up the ass. That will change. +You press your thumb down on your desk interface and then tell $him to read the display, strip, and show you her body. She knits her brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on her and she stares you in the eye for a long moment - and then drops to her knees and begins to beg for her daughter's freedom. She knows the Free Cities well enough to be unsurprised when you ignore her completely. She stands and sadly strips off her blouse and slacks. Following orders, she rotates slowly for you. Then, she bends over facing away from you and spreads her buttocks to display her holes. Unsurprisingly, she's got a well-used pussy but has clearly never taken it up the ass. That will change. <br><br> Her daughter walks in angrily demanding to know why you called her here. She sees her mother kneeling naked next to you, hears the hiss-click of the door closing and locking behind her, and makes the connection far too late to run. She begins to scream at both you and her mother at the top of her lungs, and manages to keep up an impressive volume until you get her gagged. Her mother does not move to interfere as you strip and bind her daughter's struggling body. -<<set $activeSlave.origin = "You acquired her along with her mother when the family business failed.">> -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.devotion -= 25>> -<<set $activeSlave.trust -= 10>> -<<set $activeSlave.oldDevotion = $activeSlave.devotion>> -<<set $activeSlave.boobs -= 400>> -<<set $activeSlave.boobsImplant = 0>> -<<set $activeSlave.butt -= 1>> -<<set $activeSlave.vagina = 1>> -<<set $activeSlave.anus = 0>> -<<set $activeSlave.vaginalSkill = 0>> -<<set $activeSlaveOneTimeMaxAge = Math.max($minimumSlaveAge,Math.min(19, ($activeSlave.actualAge - Math.min(11, $fertilityAge))))>> -<<set $activeSlaveOneTimeMinAge = Math.min(18, $activeSlaveOneTimeMaxAge)>> -<<if $pedo_mode == 1>><<set $activeSlaveOneTimeMinAge = $minimumSlaveAge>><</if>> -<<set $activeSlave.actualAge = random($activeSlaveOneTimeMinAge, $activeSlaveOneTimeMaxAge)>> -<<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> -<<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.birthsTotal = 0>> -<<set $activeSlave.preg = 0>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "mismatched pair">> The poor sissy isn't happy to become a slave, but she's clearly relieved to be away from her sister. The bitch isn't likely to have an easy time; the sale didn't clear her from debt. $activeSlave.slaveName describes her basic sexual experience, which includes a lot of sucking and anal whoring. Without more ado she moves from practical sexual slavery at the hands of her sister to actual sexual slavery. @@ -89,625 +29,87 @@ The poor sissy isn't happy to become a slave, but she's clearly relieved to be a Her sister-pimp walks in angrily demanding to know why you called her here. She sees her sissy sister kneeling naked next to you, hears the hiss-click of the door closing and locking behind her, and makes the connection far too late to run. She begins to scream at both you and her sister at the top of her lungs, and manages to keep up an impressive volume until you get her gagged. Her sister does not move to interfere as you strip and bind the struggling body. In fact, as you get the gag in place, she begins to laugh an unstable, cracking laugh that degenerates into sobbing. -<<set $activeSlave.origin = "You acquired her along with her sissy sister due to her inexperience as a madam.">> -<<set $activeSlave.career = "a pimp">> -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.devotion -= 50>> -<<set $activeSlave.trust -= 10>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> -<<set $activeSlave.anus = 0>> -<<set $activeSlave.vagina = 1>> -<<set $activeSlave.preg = -1>> -<<set $activeSlave.dick = 0>> -<<set $activeSlave.scrotum = 0>> -<<set $activeSlave.ovaries = 1>> -<<set $activeSlave.balls = 0>> -<<set $activeSlave.vaginalSkill = 0>> -<<set $activeSlave.oralSkill = 0>> -<<set $activeSlave.analSkill = 0>> -<<set $activeSlave.behavioralFlaw = "arrogant">> -<<set $activeSlave.sexualFlaw = "hates penetration">> -<<set $activeSlave.boobs = either(400, 500)>> -<<set $activeSlave.boobsImplant = 0>> -<<set $activeSlave.butt = either(2, 3)>> -<<if $activeSlave.actualAge > 12>> -<<set $activeSlave.actualAge = 16>> -<<else>> -<<set $activeSlave.actualAge += 4>> -<</if>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.rivalry = 3>> -<<set $activeSlave.rivalryTarget = $activeSlave.ID - 1000>> - <<case "incest mother son">> The son cheers happily and hugs his relieved mother. She leans in and kisses him deeply. They ought to be an interesting addition to your penthouse. - -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.career = "a student">> -<<set $activeSlave.actualAge -= 18>> -<<if $activeSlave.actualAge > 20>> - <<if $potencyAge >= $minimumSlaveAge>> - <<set $activeSlave.actualAge = random($potencyAge, 20)>> - <<else>> - <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> -<</if>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<set $activeSlave.genes = "XY">> -<<ResyncHeight $activeSlave>> -<<set $activeSlave.vagina = -1>> -<<set $activeSlave.pubertyXX = 0>> -<<set $activeSlave.pubertyXY = 1>> -<<set $activeSlave.preg = 0>> -<<set $activeSlave.pregKnown = 0>> -<<set $activeSlave.pregWeek = 0>> -<<set $activeSlave.pregType = 0>> -<<set $activeSlave.pregSource = 0>> -<<set WombFlush($activeSlave)>> -<<run SetBellySize($activeSlave)>> -<<set $activeSlave.dick = 2>> -<<set $activeSlave.foreskin = 3>> -<<set $activeSlave.ovaries = 0>> -<<set $activeSlave.balls = 2>> -<<set $activeSlave.scrotum = 2>> -<<set $activeSlave.prostate = 1>> -<<set $activeSlave.clit = 0>> -<<set $activeSlave.vaginalSkill = 0>> -<<set $activeSlave.faceShape = "cute">> -<<set $activeSlave.boobs = 0>> -<<set $activeSlave.birthsTotal = 0>> -<<set $activeSlave.lactation = 0>> -<<set $activeSlave.anus = 0>> -<<set $activeSlave.butt -= 2>> -<<set $activeSlave.behavioralQuirk = "none">> -<<set $activeSlave.sexualQuirk = "perverted">> -<<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> -<<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "incest father daughter">> The daughter cheers happily and hugs her relieved father. He leans in and kisses her deeply. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.career = "a student">> -<<set $activeSlave.actualAge -= 18>> -<<if $activeSlave.actualAge > 20>> - <<if $potencyAge >= $minimumSlaveAge>> - <<set $activeSlave.actualAge = random($potencyAge, 20)>> - <<else>> - <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> -<</if>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<set $activeSlave.genes = "XX">> -<<ResyncHeight $activeSlave>> -<<set $activeSlave.pubertyXX = 1>> -<<set $activeSlave.pubertyXY = 0>> -<<set $activeSlave.vagina = 3>> -<<set $activeSlave.preg = 30>> -<<set $activeSlave.dick = 0>> -<<set $activeSlave.ovaries = 1>> -<<set $activeSlave.balls = 0>> -<<set $activeSlave.scrotum = 0>> -<<set $activeSlave.clit = 1>> -<<set $activeSlave.prostate = 0>> -<<set $activeSlave.voice = 2>> -<<set $activeSlave.vaginalSkill = 50>> -<<set $activeSlave.boobs = (random(3,6)*100)>> -<<set $activeSlave.pregType = 1>> -<<set $activeSlave.pregKnown = 1>> -<<set $activeSlave.pregWeek = $activeSlave.preg>> -<<run SetBellySize($activeSlave)>> -<<set $activeSlave.pregSource = $activeSlave.ID - 1000>> -<<set $activeSlave.faceShape = "cute">> -<<set $activeSlave.behavioralQuirk = "none">> -<<set $activeSlave.sexualQuirk = "perverted">> -<<if $familyTesting == 1>> - <<set $activeSlave.father = $activeSlave.ID - 1000>> -<<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "incest brother sister">> They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.actualAge -= 2>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<set $activeSlave.genes = "XY">> -<<ResyncHeight $activeSlave>> -<<set $activeSlave.vagina = -1>> -<<set $activeSlave.pubertyXX = 0>> -<<set $activeSlave.pubertyXY = 1>> -<<set $activeSlave.preg = 0>> -<<set $activeSlave.pregType = 0>> -<<set $activeSlave.pregSource = 0>> -<<set $activeSlave.pregKnown = 0>> -<<set $activeSlave.pregWeek = 0>> -<<set WombFlush($activeSlave)>> -<<run SetBellySize($activeSlave)>> -<<set $activeSlave.dick = 2>> -<<set $activeSlave.foreskin = 2>> -<<set $activeSlave.ovaries = 0>> -<<set $activeSlave.balls = 2>> -<<set $activeSlave.scrotum = 2>> -<<set $activeSlave.prostate = 1>> -<<set $activeSlave.clit = 0>> -<<set $activeSlave.vaginalSkill = 0>> -<<set $activeSlave.faceShape = "masculine">> -<<set $activeSlave.boobs = 0>> -<<set $activeSlave.lactation = 0>> -<<set $activeSlave.anus = 0>> -<<set $activeSlave.pubicHStyle = "bushy">> -<<set $activeSlave.behavioralQuirk = "none">> -<<set $activeSlave.sexualQuirk = "perverted">> -<<set $activeSlave.clothes = "conservative clothing">> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "incest sister sister">> They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.actualAge -= 2>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<ResyncHeight $activeSlave>> -<<set $activeSlave.pubicHStyle = "shaved">> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "incest brother brother">> They hug each other tightly as the older brother slips a hand down his younger's pants. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.actualAge -= 2>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<set $activeSlave.height += random(-5,5)>> -<<set $activeSlave.pubicHStyle = "shaved">> -<<set $activeSlave.dick += 2>> -<<set $activeSlave.balls += 2>> -<<set $activeSlave.scrotum = $activeSlave.balls>> -<<if $activeSlave.foreskin>> - <<set $activeSlave.foreskin = $activeSlave.dick>> -<</if>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "incest twin sister">> They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.height += random(-5,5)>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "incest twin brother">> They hug each other tightly as the they slip a hand down the other's pants. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.height += random(-5,5)>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "incest twins mixed">> They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.genes = "XY">> -<<set $activeSlave.height += random(-5,5)>> -<<set $activeSlave.vagina = -1>> -<<set $activeSlave.pubertyXX = 0>> -<<set $activeSlave.pubertyXY = 1>> -<<set $activeSlave.dick = 2>> -<<set $activeSlave.foreskin = 2>> -<<set $activeSlave.ovaries = 0>> -<<set $activeSlave.balls = 2>> -<<set $activeSlave.scrotum = 2>> -<<set $activeSlave.prostate = 1>> -<<set $activeSlave.clit = 0>> -<<set $activeSlave.vaginalSkill = 0>> -<<set $activeSlave.faceShape = "masculine">> -<<set $activeSlave.boobs = 0>> -<<set $activeSlave.lactation = 0>> -<<set $activeSlave.anus = 0>> -<<set $activeSlave.pubicHStyle = "bushy">> -<<set $activeSlave.behavioralQuirk = "none">> -<<set $activeSlave.sexualQuirk = "perverted">> -<<set $activeSlave.clothes = "conservative clothing">> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "sister">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "incest mother daughter">> The daughter cheers happily and hugs her relieved mother. She leans in and kisses her deeply. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.career = "a student">> -<<set $activeSlave.actualAge -= 18>> -<<if $activeSlave.actualAge > 20>> - <<if $potencyAge >= $minimumSlaveAge>> - <<set $activeSlave.actualAge = random($potencyAge, 20)>> - <<else>> - <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> -<</if>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<ResyncHeight $activeSlave>> -<<set $activeSlave.vagina = 0>> -<<if $activeSlave.actualAge < $fertilityAge>> - <<set $activeSlave.pubertyXX = 0>> -<</if>> -<<set $activeSlave.vagina = 0>> -<<set $activeSlave.birthsTotal = 0>> -<<set $activeSlave.vaginalSkill = 15>> -<<set $activeSlave.anus = 0>> -<<set $activeSlave.boobs -= 300>> -<<set $activeSlave.lactation = 0>> -<<set $activeSlave.boobsImplant = 0>> -<<set $activeSlave.butt -= 2>> -<<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> -<<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "incest father son">> The father hugs his son tight and slips a hand down his pants. They ought to be an interesting addition to your penthouse. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.career = "a student">> -<<set $activeSlave.actualAge -= 18>> -<<if $activeSlave.actualAge > 20>> - <<if $potencyAge >= $minimumSlaveAge>> - <<set $activeSlave.actualAge = random($potencyAge, 20)>> - <<else>> - <<set $activeSlave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> -<</if>> -<<set $activeSlave.physicalAge = $activeSlave.actualAge>> -<<set $activeSlave.visualAge = $activeSlave.actualAge>> -<<set $activeSlave.ovaryAge = $activeSlave.actualAge>> -<<ResyncHeight $activeSlave>> -<<set $activeSlave.vagina = -1>> -<<if $activeSlave.actualAge < $potencyAge>> - <<set $activeSlave.pubertyXY = 0>> -<</if>> -<<set $activeSlave.dick -= 2>> -<<set $activeSlave.balls -= 1>> -<<set $activeSlave.scrotum -= 1>> -<<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> -<<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 3>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> -<<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> -<<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> -<</if>> - <<case "matched pair">> They giggle and kiss each other rather sexually, pressing their nearly identical bodies closely together so their hips and shapely buttocks hide any sign of their difference. They're clearly very well trained. -<<set $activeSlave.slaveName = $activeSlave.birthName>> -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.vagina = 1>> -<<set $activeSlave.preg = -1>> -<<set $activeSlave.dick = 0>> -<<set $activeSlave.scrotum = 0>> -<<set $activeSlave.clit = 2>> -<<set $activeSlave.ovaries = 1>> -<<set $activeSlave.balls = 0>> -<<set $activeSlave.vaginalSkill = 15>> -<<set $activeSlave.boobsImplant = 0>> -<<set $activeSlave.buttImplant = 0>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "twin">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 2>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "identical pair">> They giggle and kiss each other rather sexually, pressing their nearly identical bodies closely together. They're clearly very well trained. -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "twin">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 2>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "identical herm pair">> They giggle and kiss each other rather passionately, their miniskirts becoming pinned against their pregnancies by their stiffening pricks. They're very well trained but not very disciplined, though their pervertedness will be fun. "You know we each are carrying the other's twins right?" -<<set $activeSlave.ID = $activeSlave.ID + 1000>> -<<set $activeSlave.womb = []>> -<<set $activeSlave.pregSource = $activeSlave.ID - 1000>> -<<if $familyTesting == 1>> -<<else>> - <<set $activeSlave.relation = "twin">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> -<</if>> -<<set $activeSlave.relationship = 4>> -<<set $activeSlave.relationshipTarget = $activeSlave.ID - 1000>> - <<case "desperate broodmother">> -You have the needy girl immediately bought to your penthouse where you help her laboring body into an available bed or inspection. She asks where her other babies were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of her. She's a little depressed at the news, but understands your reasons. You take the opportunity to give her a good look over; she is really dilated! Apart from that, between all the births and dicks, her vagina is rather worn out, though she seems to understand how to use it. Her anus has also seen use, but not nearly as much. +You have the needy girl immediately bought to your penthouse where you help $his laboring body into an available bed or inspection. $He asks where $his other babies were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of $him. She's a little depressed at the news, but understands your reasons. You take the opportunity to give $him a good look over; $he is really dilated! Apart from that, between all the births and dicks, $his vagina is rather worn out, though she seems to understand how to use it. $His anus has also seen use, but not nearly as much. <br><br> -You turn to the child clutching her mother's grotesque belly. - -<<if random(1,100) < $seeDicks>> /*boy*/ - He is in better shape than his mother and tries to hide behind her belly when you look at him. He'll be broken into a good little girl for you soon enough. - <<set $activeSlave.origin = "Her mother offered her to you as an incentive to take her in.">> - <<set $activeSlave.slaveName = $activeSlave.birthName>> - <<set $activeSlave.ID = $activeSlave.ID + 1000>> - <<set $activeSlave.health = random(10,20)>> - <<set $activeSlave.devotion -= 5>> - <<set $activeSlave.trust -= 5>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> - <<set $activeSlave.genes = "XY">> - <<set $activeSlave.preg = 0>> - <<set $activeSlave.pregType = 0>> - <<set $activeSlave.pregKnown = 0>> - <<set $activeSlave.pregWeek = 0>> - <<set $activeSlave.pregAdaptation = 10>> - <<set WombFlush($activeSlave)>> - <<run SetBellySize($activeSlave)>> - <<set $activeSlave.labor = 0>> - <<set $activeSlave.ovaries = 0>> - <<set $activeSlave.birthsTotal = 0>> - <<set $activeSlave.anus = 0>> - <<set $activeSlave.vaginalSkill = 0>> - <<set $activeSlave.whoreSkill = 0>> - <<set $activeSlave.analSkill = 0>> - <<set $activeSlave.weight = random(-80,-50)>> - <<set $activeSlave.muscles = 0>> - <<set $activeSlave.underArmHStyle = "bushy">> - <<set $activeSlave.pubicHStyle = "bushy">> - <<set $activeSlave.boobs = 0>> - <<set $activeSlave.boobShape = "perky">> - <<set $activeSlave.nipples = "tiny">> - <<set $activeSlave.lactation = 0>> - <<set $activeSlave.lactationAdaptation = 0>> - <<set $activeSlave.hips = -2>> - <<set $activeSlave.shoulders = -2>> - <<set $activeSlave.waist = 0>> - <<set $activeSlave.vaginaLube = 0>> - <<set $activeSlave.butt = 0>> - <<set $activeSlave.tired = 1>> - <<set $activeSlave.fetish = "none">> - <<set $activeSlave.fetishStrength = 0>> - <<set $activeSlave.sexualFlaw = "none">> - <<set $activeSlave.sexualQuirk = "none">> - <<set $activeSlave.bellySag = 0>> - <<set $activeSlave.bellySagPreg = 0>> - <<set $activeSlave.pubertyXX = 0>> - <<set $activeSlave.dick = 1>> - <<set $activeSlave.foreskin = 1>> - <<set $activeSlave.balls = 2>> - <<set $activeSlave.scrotum = 3>> - <<set $activeSlave.prostate = 1>> - <<set $activeSlave.actualAge = 3>> - <<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> - <<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> - <</if>> - <<set $activeSlave.visualAge = $activeSlave.actualAge>> - <<set $activeSlave.physicalAge = $activeSlave.actualAge>> - <<set $activeSlave.ovaryAge = $activeSlave.actualAge>> - <<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> - <<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> - <</if>> -<<else>> /*girl*/ - She is in better shape than her mother and tries to hide behind her belly when you look at her. She'll be broken into a good little girl for you soon enough. - <<set $activeSlave.origin = "Her mother offered her to you as an incentive to take her in.">> - <<set $activeSlave.slaveName = $activeSlave.birthName>> - <<set $activeSlave.ID = $activeSlave.ID + 1000>> - <<set $activeSlave.health = random(10,20)>> - <<set $activeSlave.devotion -= 5>> - <<set $activeSlave.trust -= 5>> - <<set $activeSlave.oldDevotion = $activeSlave.devotion>> - <<set $activeSlave.preg = 0>> - <<set $activeSlave.pregType = 0>> - <<set $activeSlave.labor = 0>> - <<set $activeSlave.birthsTotal = 0>> - <<set $activeSlave.anus = 0>> - <<set $activeSlave.vaginalSkill = 0>> - <<set $activeSlave.whoreSkill = 0>> - <<set $activeSlave.analSkill = 0>> - <<set $activeSlave.weight = random(-80,-50)>> - <<set $activeSlave.muscles = 0>> - <<set $activeSlave.underArmHStyle = "bushy">> - <<set $activeSlave.pubicHStyle = "bushy">> - <<set $activeSlave.boobs = 0>> - <<set $activeSlave.boobShape = "perky">> - <<set $activeSlave.nipples = "tiny">> - <<set $activeSlave.lactation = 0>> - <<set $activeSlave.lactationAdaptation = 0>> - <<set $activeSlave.hips = -2>> - <<set $activeSlave.shoulders = -2>> - <<set $activeSlave.waist = 0>> - <<set $activeSlave.vaginaLube = 0>> - <<set $activeSlave.butt = 0>> - <<set $activeSlave.tired = 1>> - <<set $activeSlave.fetish = "none">> - <<set $activeSlave.fetishStrength = 0>> - <<set $activeSlave.sexualFlaw = "none">> - <<set $activeSlave.sexualQuirk = "none">> - <<set $activeSlave.bellySag = 0>> - <<set $activeSlave.bellySagPreg = 0>> - <<set $activeSlave.pubertyXX = 0>> - <<set $activeSlave.vagina = 0>> - <<set $activeSlave.pregKnown = 0>> - <<set $activeSlave.pregAdaptation = 10>> - <<set WombFlush($activeSlave)>> - <<if $fertilityAge <= 3>> - <<set $activeSlave.pubertyXX = 1>> - <<set $activeSlave.preg = 6>> - <<set $activeSlave.pregType = 1>> - <<set $activeSlave.pregKnown = 1>> - <<set $activeSlave.vagina = 1>> - You notice her belly is slightly distended. It could be hunger, but upon closer inspection, you realize her hymen has been torn. She's likely been servicing men alongside her mother and has a bun in the oven too. - <</if>> - <<set $activeSlave.pregWeek = $activeSlave.preg>> - <<run SetBellySize($activeSlave)>> - <<set $activeSlave.actualAge = 3>> - <<if $familyTesting == 1>> - <<set $activeSlave.mother = $activeSlave.ID - 1000>> - <<else>> - <<set $activeSlave.relation = "daughter">> - <<set $activeSlave.relationTarget = $activeSlave.ID - 1000>> - <</if>> - <<set $activeSlave.visualAge = $activeSlave.actualAge>> - <<set $activeSlave.physicalAge = $activeSlave.actualAge>> - <<set $activeSlave.ovaryAge = $activeSlave.actualAge>> - <<if $activeSlave.physicalAge < 6>> - <<set $activeSlave.teeth = "baby">> - <<elseif $activeSlave.physicalAge < 12>> - <<set $activeSlave.teeth = "mixed">> - <</if>> +You turn to the child clutching her mother's grotesque belly. He is in better shape than his mother and tries to hide behind her belly when you look at him. He'll be broken into a good little girl for you soon enough. + +<<if $relative2.preg > 0>> + You notice _his2 belly is slightly distended. It could be hunger, but upon closer inspection, you realize _his2 hymen has been torn. _He2's likely been servicing men alongside _his2 mother and has a bun in the oven too. <</if>> <<default>> ERROR: bad event <</switch>> -<<if $activeSlave.slaveSurname>><<set _familyName = $activeSlave.slaveSurname>><</if>> -<<set _familyBirthSurname = $activeSlave.birthSurname>> -<<run nationalityToName($activeSlave)>> -<<if _familyName>><<set $activeSlave.slaveSurname = _familyName>><</if>> -<<set $activeSlave.birthSurname = _familyBirthSurname>> +<<if $relative.slaveSurname>><<set _familyName = $relative.slaveSurname>><</if>> +<<set _familyBirthSurname = $relative.birthSurname>> +<<run nationalityToName($relative2)>> +<<if _familyName>><<set $relative2.slaveSurname = _familyName>><</if>> +<<set $relative2.birthSurname = _familyBirthSurname>> -<<run newSlave($activeSlave)>> +<<run newSlave($relative2)>> <<switch $RecETSevent>> <<case "identical herm pair" "incest brother sister" "incest mother son">> - <<run newSlave($sissy)>> + <<run newSlave($relative)>> <<default>> /* do nothing */ <</switch>> diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw index 82b0283056a9eeb44e433b91979df17f5f820210..a1e639a1416eecf17204bf9300ccb3bd33588cb6 100644 --- a/src/uncategorized/reputation.tw +++ b/src/uncategorized/reputation.tw @@ -765,11 +765,7 @@ On formal occasions, you are announced as $PCTitle. <<elseif $arcologies[0].FSRestart != "unset">> <<if $failedElite > 300>> The Societal Elite @@.red;have departed from your arcology in disgust@@. - <<set $arcologies[0].FSRestart = "unset">> - <<set $arcologies[0].FSRestartDecoration = 20>> - <<set $arcologies[0].FSRestartLaw = 0>> - <<set $FSCredits += 1>> - <<set $failedElite = 0>> + <<run removeFS("FSRestart")>> <<set $rep -= 10000>> <<set $ACitizens = Math.max($ACitizens - random(30,100), 0)>> <<if $arcologies[0].prosperity > 50>> diff --git a/src/uncategorized/resMove.tw b/src/uncategorized/resMove.tw index d5c47621c21bad08042856fd12e7d820297f311b..ef00aca55b4b86336acd91cb55d62b4a2788ce67 100644 --- a/src/uncategorized/resMove.tw +++ b/src/uncategorized/resMove.tw @@ -98,7 +98,7 @@ as you suspected, <<case "goddess">> all those virgin bodies to share..." her avatar murmurs, rubbing a hand over her belly. <<case "hypergoddess">> - all those virgin bodies to share... I hope we can fill them with children..." her avatar murmurs, rubbing a hand over her massive belly. + all those virgin bodies to share... I hope we can fill them with children..." her avatar murmurs, rubbing a hand over her massive belly. <<case "loli">> all those new girls!" Her avatar exclaims. <<case "preggololi">> @@ -186,7 +186,7 @@ as you suspected, <<case "goddess">> those servile little cuties!" her avatar exclaims, practically giggling. <<case "hypergoddess">> - those servile little cuties! They could really use some cute little bellies!" her avatar exclaims, practically giggling. + those servile little cuties! They could really use some cute little bellies!" her avatar exclaims, practically giggling. <<case "loli" "preggololi">> those fat butts!" her avatar exclaims cheerfully. <<case "angel">> diff --git a/src/uncategorized/resSale.tw b/src/uncategorized/resSale.tw index c4389f360f6d97b972950e37dde8a0ac3b7b6204..436e002489c0a6f576f53a74ac381768d119c1b9 100644 --- a/src/uncategorized/resSale.tw +++ b/src/uncategorized/resSale.tw @@ -101,9 +101,9 @@ You pause for a moment, and she plunges on: "<<if $PC.title == 1>>Sir<<else>>Ma' <<case "hypergoddess">> teach her all about being a real woman," the goddess exclaims, rubbing her massive belly in anticipation. <<case "loli">> - play with her!" The little girl exclaims happily while jumping up and down. + play with her!" The little girl exclaims happily while jumping up and down. <<case "preggololi">> - play with her!" The little girl exclaims happily while caressing her belly. + play with her!" The little girl exclaims happily while caressing her belly. <<case "angel">> keep her safe and craft the perfect future slavewife for someone," the angel says, crossing her arms under her chest. <<case "cherub">> @@ -141,9 +141,9 @@ You pause for a moment, and she plunges on: "<<if $PC.title == 1>>Sir<<else>>Ma' <<case "goddess" "hypergoddess">> taste those bountiful breasts," the goddess exclaims, licking her lips. <<case "loli">> - play with her tits!" The little girl exclaims happily while jumping up and down. + play with her tits!" The little girl exclaims happily while jumping up and down. <<case "preggololi">> - play with her tits!" The little girl exclaims happily while caressing her belly. + play with her tits!" The little girl exclaims happily while caressing her belly. <<case "angel">> feed all the hungry with those motherly breasts," the angel says, blushing at the thought. <<case "cherub">> @@ -263,9 +263,9 @@ You pause for a moment, and she plunges on: "<<if $PC.title == 1>>Sir<<else>>Ma' <<case "hypergoddess">> teach her all about being a real woman," the goddess exclaims, rubbing her massive belly in anticipation. <<case "loli">> - play with her!" The little girl exclaims happily while jumping up and down. + play with her!" The little girl exclaims happily while jumping up and down. <<case "preggololi">> - play with her!" The little girl exclaims happily while caressing her belly. + play with her!" The little girl exclaims happily while caressing her belly. <<case "angel">> keep her safe and craft the perfect future slavewife for someone," the angel says, crossing her arms under her chest. <<case "cherub">> diff --git a/src/uncategorized/saDevotion.tw b/src/uncategorized/saDevotion.tw index b765321c4fe748e759c68fbc88f8fc58b34394fa..45c50e6f28b06a95eaf78a8585ab2606e965a3be 100644 --- a/src/uncategorized/saDevotion.tw +++ b/src/uncategorized/saDevotion.tw @@ -183,7 +183,7 @@ <<if $slaves[$i].fetish != "mindbroken" && $slaves[$i].fuckdoll == 0>> <<if $slaves[$i].devotion > 20>> $slaves[$i].slaveName is somewhat saddened to see $his body leave forever. - <<elseif $slaves[$i].devotion >= -50>> + <<elseif $slaves[$i].devotion >= -50>> $slaves[$i].slaveName is @@.mediumorchid;disturbed@@ to find $his body is gone for good, damaging $his @@.gold;ability to trust you.@@ <<set $slaves[$i].devotion -= 30, $slaves[$i].trust -= 30>> <<else>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 02d0c1dd03c643aa93d6ad7ce16760cd18403059..b94871ddeddf60c8a68e8d8d2cec7647113f161c 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -103,7 +103,7 @@ <</if>> <<elseif $slaves[$i].fuckdoll <= 95>> This week $he @@.green;begins $his final adaptation@@ into a perfect living sex toy. $His suit starts to actively punish any detectable mental activity when $him is not obeying commands or being used. - <<if $slaves[$i].intelligence > -50>> + <<if $slaves[$i].intelligence > -50>> $He was once reasonably intelligent, but the incredible stress of this treatment @@.red;suppresses $his ability to think coherently.@@ <<set $slaves[$i].intelligence = -50>> <</if>> diff --git a/src/uncategorized/saPleaseYou.tw b/src/uncategorized/saPleaseYou.tw index 945ac15bb623888951c568e30d973ddd84f557b8..95ac91a9cb2f2b1e0258cd03de36e7356b2d1c8f 100644 --- a/src/uncategorized/saPleaseYou.tw +++ b/src/uncategorized/saPleaseYou.tw @@ -943,7 +943,7 @@ serves you this week. mouth<<if $PC.dick == 1 && $slaves[$i].nipples == "fuckable">>and nipples<</if>> <</if>> available for you at all times. - <<if canAchieveErection($slaves[$i]) && $slaves[$i].dickAccessory != "chastity" && $slaves[$i].dickAccessory != "combined chastity">> + <<if canAchieveErection($slaves[$i]) && $slaves[$i].dickAccessory != "chastity" && $slaves[$i].dickAccessory != "combined chastity">> Every time $his beloved <<= WrittenMaster($slaves[$i])>> fucks $him, $he gets a hardon. <<elseif ($slaves[$i].dick != 0) && ($slaves[$i].prostate > 0) && canDoVaginal($slaves[$i])>> $He doesn't get a hardon as you use $him, but $he comes from the prostate stimulation when $his beloved <<= WrittenMaster($slaves[$i])>> uses $his pussy. @@ -967,7 +967,7 @@ serves you this week. <<elseif ($slaves[$i].devotion > 20)>> Whenever you feel the need, you use whichever of $his available holes that appears most appealing at the moment, since $he's up for anything. - <<if ($slaves[$i].dick != 0) && canAchieveErection($slaves[$i]) && $slaves[$i].dickAccessory != "chastity" && $slaves[$i].dickAccessory != "combined chastity">> + <<if ($slaves[$i].dick != 0) && canAchieveErection($slaves[$i]) && $slaves[$i].dickAccessory != "chastity" && $slaves[$i].dickAccessory != "combined chastity">> By the end of the week $he gets a hardon when you use $him. <</if>> You have the sexual energy to fuck $him @@ -995,7 +995,7 @@ serves you this week. mouth<<if $PC.dick == 1 && $slaves[$i].nipples == "fuckable">>and nipples<</if>> <</if>> to save herself from worse treatment than mere rape. - <<if ($slaves[$i].dick != 0) && canAchieveErection($slaves[$i]) && $slaves[$i].dickAccessory != "chastity" && $slaves[$i].dickAccessory != "combined chastity">> + <<if ($slaves[$i].dick != 0) && canAchieveErection($slaves[$i]) && $slaves[$i].dickAccessory != "chastity" && $slaves[$i].dickAccessory != "combined chastity">> By the end of the week $he gets a hardon when you use $him. <</if>> You have the sexual energy to fuck $him diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw index fa8b3ad52db9b98107f06ea55befa0f01ba54a95..3511ec0871d36a82f26c48ff8ae7d85ddb6cebfe 100644 --- a/src/uncategorized/seLethalPit.tw +++ b/src/uncategorized/seLethalPit.tw @@ -22,22 +22,16 @@ <<set _animal = $activeHooved>> <<case "feline">> <<set _animal = $activeFeline>> - <<default>> - <<set _animal = "undefined">> <</switch>> <</if>> -<<if $pitAnimal > 0 && _animal == "undefined">> /* TODO: this doesn't work */ - This week, _fighterOne.slaveName was scheduled to fight an animal to the death, but was spared because no animal has been chosen. +This week's pit fight is between _fighterOne.slaveName and <<if $pitAnimal == 0>>_fighterTwo.slaveName<<else>>a _animal.species<</if>>. +<<if $pitAudience == "none">> + You are alone above the pit, left to watch them kill and die in private. +<<elseif $pitAudience == "free">> + Your guests line the rim of the pit, joking and betting, nervous and excited by the close prospect of watching a girl die. <<else>> - This week's pit fight is between _fighterOne.slaveName and <<if $pitAnimal == 0>>_fighterTwo.slaveName<<else>>a _animal.species<</if>>. - <<if $pitAudience == "none">> - You are alone above the pit, left to watch them kill and die in private. - <<elseif $pitAudience == "free">> - Your guests line the rim of the pit, joking and betting, nervous and excited by the close prospect of watching a girl die. - <<else>> - The attendees line the rim of the pit, betting and arguing, nervous and excited by the close prospect of watching a girl die. - <</if>> + The attendees line the rim of the pit, betting and arguing, nervous and excited by the close prospect of watching a girl die. <</if>> <<if $arcologies[0].FSRomanRevivalist != "unset">> diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw index b4fa75afd318a8e14680d30102f2241c7b5fe32c..1121cf41626547e05ff5a555d4bc213131ac0edd 100644 --- a/src/uncategorized/seNonlethalPit.tw +++ b/src/uncategorized/seNonlethalPit.tw @@ -22,14 +22,12 @@ <<set _animal = $activeHooved>> <<case "feline">> <<set _animal = $activeFeline>> - <<default>> - <<set _animal = "undefined">> <</switch>> <</if>> <<if $pitAnimal == 0>> This week's pit fight is between _fighterOne.slaveName and _fighterTwo.slaveName. -<<elseif $pitAnimal == 1 && _animal != "undefined">> +<<elseif $pitAnimal == 1>> This week a _animal.species is going to use _fighterOne.slaveName. <<else>> This week, _fighterOne.slaveName was scheduled to be used by an animal, but is spared because no animal has been chosen. @@ -1006,7 +1004,7 @@ <<if $pitBG == 0 || ($Bodyguard.ID != _loser.ID)>> <<set $fighterIDs.push(_loser.ID)>> <</if>> -<<elseif _animal != "undefined">> /*if an animal is using the slave*/ +<<else>> /*if an animal is using the slave*/ <<set $activeSlave = _fighterOne>> <<if canDoVaginal($activeSlave)>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 66b2ae8efcbb1ed3dd0a75e5c26b76b071da4ace..d5be528f19a1515a9dbdb5ac1360af1f537cf8c3 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -1661,7 +1661,7 @@ Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRule <<elseif $activeSlave.pornFeed == 0>> The media hub is not releasing highlights of $his sex life. [[Release|Slave Interact][$activeSlave.pornFeed = 1]] <<else>> - The media hub is releasing highlights of $his sex life <<if $activeSlave.pornFameSpending < 500>>to those who can find it<<elseif $activeSlave.pornFameSpending < 2500>>on several websites<<elseif $activeSlave.pornFameSpending > 5000>>through your old distributor<<else>>on many websites<</if>>. + The media hub is releasing highlights of $his sex life <<if $activeSlave.pornFameSpending < 500>>to those who can find it<<elseif $activeSlave.pornFameSpending < 2500>>on several websites<<elseif $activeSlave.pornFameSpending > 5000>>through your old distributor<<else>>on many websites<</if>>. <<if $activeSlave.pornFameSpending == 0>> [[Halt|Slave Interact][$activeSlave.pornFeed = 0, $activeSlave.pornFocus = "none"]] | [[Publicize|Slave Interact][$activeSlave.pornFameSpending += 1000]]