From 062796082565ebf1dd3492dfe592eb648b66daa1 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Wed, 13 Oct 2021 18:38:15 -0400 Subject: [PATCH] cleaning out some of the double spacing. Ya'll are boomers --- css/002-variables/colors.css | 14 +- css/003-sugarcube-overwrite/general.css | 18 +- css/003-sugarcube-overwrite/sidebar.css | 20 +- css/art/art.css | 126 ++++----- css/debugging/profileEvents.css | 6 +- css/endWeek/slavesReport.css | 4 +- css/events/events.css | 4 +- css/facilities/wardrobe.css | 8 +- css/general/formatting.css | 60 ++--- css/general/layout.css | 52 ++-- css/general/textColors.css | 104 ++++---- css/gui/favorite.css | 8 +- css/gui/hotkeySettings.css | 42 +-- css/gui/linksStrip.css | 18 +- css/gui/options.css | 8 +- css/gui/quicklinks.css | 62 ++--- css/gui/tooltips/tippy.css | 16 +- css/interaction/export.css | 8 +- css/interaction/slaveInteract.css | 6 +- css/interaction/wardrobe.css | 2 +- css/intro/customizeSlaveTrade.css | 16 +- css/manage/main.css | 4 +- css/neighbor/neighborDisplay.css | 38 +-- css/rulesAssistant/raLists.css | 30 +-- css/rulesAssistant/raSummary.css | 34 +-- devNotes/tests/diffProxyTest.js | 4 +- devNotes/usefulJSFunctionDocumentation.md | 12 +- devTools/types/FC/human.d.ts | 4 +- devTools/types/extensions.d.ts | 2 +- js/003-data/clothes/001-slaveWearData.js | 6 +- js/003-data/futureSocietyData.js | 11 +- js/003-data/gameVariableData.js | 6 +- js/003-data/slaveGeneData.js | 2 +- js/003-data/slaveProstheticsData.js | 2 +- js/utils.js | 2 +- src/002-config/fc-version.js | 2 +- src/004-base/baseEvent.js | 23 +- src/004-base/facility.js | 2 +- src/004-base/facilityFramework.js | 4 +- src/Corporation/corporate-constants.js | 14 +- .../corporate-divisionProcessing.js | 4 +- src/Corporation/manageCorporation.js | 2 +- .../events/CMREFS/refsTotallyLegitCatgirls.js | 2 +- src/Mods/Catmod/events/SoSSniper.js | 2 +- src/Mods/Catmod/events/SoSassassin.js | 14 +- .../Catmod/events/nonRandom/bodypuristriot.js | 2 +- src/Mods/Catmod/interaction/fPet.js | 2 +- src/Mods/SecExp/buildings/propagandaHub.js | 2 +- src/Mods/SecExp/buildings/securityHQ.js | 2 +- src/Mods/SecExp/events/conflictReport.js | 2 +- .../SecExp/js/reportingRelatedFunctions.js | 20 +- src/Mods/SecExp/js/secExp.js | 2 +- .../SpecialForce/events/TrickShotNight.js | 2 +- .../upgrades/SpecialForceUpgradeFunctions.js | 12 +- src/arcologyBuilding/base.js | 3 +- src/arcologyBuilding/presets.js | 3 +- .../vector_revamp/vectorRevampedArtControl.js | 66 ++--- src/art/webgl/art.js | 4 +- src/art/webgl/engine.js | 244 +++++++++--------- src/art/webgl/ui.js | 2 +- .../backwardsCompatibility/datatypeCleanup.js | 8 +- src/endWeek/events/expire.js | 2 +- src/endWeek/healthFunctions.js | 2 +- src/endWeek/saRecruitGirls.js | 7 +- src/endWeek/saRelationships.js | 10 +- src/events/PE/UnderageConcubine.js | 2 +- src/events/RE/REBusyArcade.js | 2 +- src/events/RE/reHGReplacement.js | 2 +- src/events/RE/reSiblingPlease.js | 4 +- src/events/RESS/forbiddenMasturbation.js | 2 +- src/events/RESS/milkgasm.js | 2 +- src/events/RESS/scrubbing.js | 4 +- src/events/assistant/assistantBody.js | 2 +- src/events/eventUtils.js | 10 +- .../daughters/pCollaborationChoice.js | 2 +- src/events/nonRandom/mercs/pSlaveMedic.js | 4 +- src/events/nonRandom/pAbducted.js | 2 +- src/events/nonRandom/rival/pRivalryHostage.js | 4 +- src/events/randomEvent.js | 8 +- src/events/scheduled/burst/burst.js | 2 +- src/events/scheduled/pitFightLethal.js | 4 +- src/events/scheduled/pitFightNonlethal.js | 4 +- src/events/scheduled/sePCBirthday.desc.js | 12 +- src/events/scheduled/sePCBirthday.js | 4 +- src/events/timeGatedPlotEvent.js | 2 +- .../bodyModification/bodyModification.js | 6 +- src/facilities/farmyard/farmyard.js | 6 +- .../nursery/nurseryDatatypeCleanup.js | 4 +- src/facilities/surgery/multiImplant.js | 2 +- src/gui/options/options.js | 4 +- src/gui/sideBar.js | 7 +- src/interaction/sellSlave.js | 2 +- src/interaction/siRules.js | 2 +- src/interaction/siWork.js | 6 +- src/js/DefaultRules.js | 2 +- src/js/SlaveState.js | 18 +- src/js/assignJS.js | 2 +- src/js/birth/birth.js | 2 +- src/js/extendedFamilyModeJS.js | 6 +- src/js/ibcJS.js | 30 +-- src/js/pregJS.js | 2 +- src/js/rulesAssistantOptions.js | 8 +- src/js/slaveCostJS.js | 2 +- src/js/utilsAssessSlave.js | 6 +- src/js/wombJS.js | 12 +- src/npc/children/longChildDescription.js | 2 +- src/npc/databases/ddSlavesDatabase.js | 2 +- src/npc/databases/dfSlavesDatabase.js | 2 +- src/npc/descriptions/belly/belly.js | 14 +- src/npc/descriptions/butt/butt.js | 2 +- src/npc/descriptions/upperBack.js | 2 +- src/npc/generate/newSlaveIntro.js | 2 +- src/npc/infants/InfantState.js | 5 +- src/npc/interaction/fDick.js | 2 +- src/npc/interaction/fEmbrace.js | 2 +- src/npc/interaction/fFeelings.js | 2 +- src/npc/interaction/fRelation.js | 2 +- src/npc/interaction/forceFeeding.js | 2 +- src/npc/surgery/fatGraft.js | 2 +- src/player/personalAttentionSelect.js | 2 +- 120 files changed, 740 insertions(+), 737 deletions(-) diff --git a/css/002-variables/colors.css b/css/002-variables/colors.css index 373459ca14a..a592b04a14f 100644 --- a/css/002-variables/colors.css +++ b/css/002-variables/colors.css @@ -1,10 +1,10 @@ :root { - --button-color: #252525; - --button-border-color: #333333; - --button-selected-color: #050505; - --button-hover-color: #414141; - --button-disabled-color: #1a1a1a; + --button-color: #252525; + --button-border-color: #333333; + --button-selected-color: #050505; + --button-hover-color: #414141; + --button-disabled-color: #1a1a1a; - --link-color: #68D; - --link-hover-color: #8af + --link-color: #68D; + --link-hover-color: #8af } diff --git a/css/003-sugarcube-overwrite/general.css b/css/003-sugarcube-overwrite/general.css index 341ec864ad0..1929c109f2e 100644 --- a/css/003-sugarcube-overwrite/general.css +++ b/css/003-sugarcube-overwrite/general.css @@ -1,29 +1,29 @@ body { - overflow-x: hidden; + overflow-x: hidden; } /* clears SugarCube's default transition */ .passage { - transition: none; - -webkit-transition: none; + transition: none; + -webkit-transition: none; } .passage-in { - opacity: 1 !important; + opacity: 1 !important; } #passages { - /* max-width: 54em */ - max-width: 100%; + /* max-width: 54em */ + max-width: 100%; } /* makes HR colorflip compatible */ hr { - background:#ccc; - border:0; + background:#ccc; + border:0; } /* fix dialog title centering */ #ui-dialog-title { - padding-left: 3.5em; + padding-left: 3.5em; } diff --git a/css/003-sugarcube-overwrite/sidebar.css b/css/003-sugarcube-overwrite/sidebar.css index a43d1b8df06..de24a4c4ea9 100644 --- a/css/003-sugarcube-overwrite/sidebar.css +++ b/css/003-sugarcube-overwrite/sidebar.css @@ -2,24 +2,24 @@ /* make the sidebar more compact by reducing the space between major parts */ #ui-bar-body { - /* height: calc(100% - 2.5em); */ - /* margin: 2.5em 0; */ - height: calc(100% - 1.5em); - margin: 1.5em 0; + /* height: calc(100% - 2.5em); */ + /* margin: 2.5em 0; */ + height: calc(100% - 1.5em); + margin: 1.5em 0; } #ui-bar-body > :not(:first-child) { - /* margin-top: 2em; */ - margin-top: 1.5em; + /* margin-top: 2em; */ + margin-top: 1.5em; } #story-author { - /* margin-top: 2em; */ - margin-top: 0; + /* margin-top: 2em; */ + margin-top: 0; } /* make cheat text boxes fit in sidebar */ #story-caption input { - min-width: 0; - width: calc(100% - 0.8em - 2px); + min-width: 0; + width: calc(100% - 0.8em - 2px); } diff --git a/css/art/art.css b/css/art/art.css index 8e5fb0ac5aa..823dc507123 100644 --- a/css/art/art.css +++ b/css/art/art.css @@ -1,117 +1,117 @@ /* small trick to hide broken images */ img { - text-indent: -10000px; + text-indent: -10000px; } .imageColumn { /* TODO: this is mostly a copy of imageRef to get its flex features working properly. They can probably be removed from imageRef at some point */ - display: flex; - flex-direction: column; - flex-wrap: wrap; - align-items: flex-start; - position: relative; - float: right; + display: flex; + flex-direction: column; + flex-wrap: wrap; + align-items: flex-start; + position: relative; + float: right; } .imageRef { - display: flex; - flex-direction: column; - flex-wrap: wrap; - align-items: flex-start; - position: relative; - background-color: rgba(80, 80, 80, 0.5); - margin: 2px; + display: flex; + flex-direction: column; + flex-wrap: wrap; + align-items: flex-start; + position: relative; + background-color: rgba(80, 80, 80, 0.5); + margin: 2px; } .tinyImg { - height: 120px; - width: 120px; - float: left; + height: 120px; + width: 120px; + float: left; } .smlImg { - height: 150px; - width: 150px; - float: left; + height: 150px; + width: 150px; + float: left; } .smlImg > img, .smlImg > video { - height: auto; + height: auto; } .medImg { - height: 300px; - width: 300px; - float: right; + height: 300px; + width: 300px; + float: right; } .medImg > img, .medImg > video { - height: auto; + height: auto; } .lrgRender { - height: 531px; - width: 506px; - margin-right: -50px; - margin-left: 0px; - float: right; + height: 531px; + width: 506px; + margin-right: -50px; + margin-left: 0px; + float: right; } .lrgVector { - height: 600px; - width: 600px; - margin-right: -125px; - margin-left: -125px; - float: right; - z-index: -1; + height: 600px; + width: 600px; + margin-right: -125px; + margin-left: -125px; + float: right; + z-index: -1; } .lrgRender > div.mask { - width: 180px; - height: 100%; - background: linear-gradient(90deg, rgba(17, 17, 17, 1), rgba(17, 17, 17, 0.8) 60%, rgba(17, 17, 17, 0)); - z-index: 1; - /*position: absolute;*/ + width: 180px; + height: 100%; + background: linear-gradient(90deg, rgba(17, 17, 17, 1), rgba(17, 17, 17, 0.8) 60%, rgba(17, 17, 17, 0)); + z-index: 1; + /*position: absolute;*/ } .lrgRender > img, .lrgRender > video { - margin-left: -150px; - height: 531px; - width: auto; + margin-left: -150px; + height: 531px; + width: auto; } .lrgVector > div.mask { - width: 150px; - height: 100%; - background: linear-gradient(90deg, rgba(17, 17, 17, 1), rgba(17, 17, 17, 0.8) 60%, rgba(17, 17, 17, 0)); - z-index: 1; + width: 150px; + height: 100%; + background: linear-gradient(90deg, rgba(17, 17, 17, 1), rgba(17, 17, 17, 0.8) 60%, rgba(17, 17, 17, 0)); + z-index: 1; } .lrgVector > img, .lrgVector > video { - margin-left: -150px; - height: 600px; - width: auto; + margin-left: -150px; + height: 600px; + width: auto; } .lrgVector svg { - width: 336px; + width: 336px; } object { - object-fit: scale-down; - position: absolute; - top: 0; - left: 0; + object-fit: scale-down; + position: absolute; + top: 0; + left: 0; } img.paperdoll { - position: absolute; - top: 0; - left: 0; - margin-left: 0; + position: absolute; + top: 0; + left: 0; + margin-left: 0; } img.assistant { - float: right; - border: 3px hidden; - object-fit: contain; + float: right; + border: 3px hidden; + object-fit: contain; } diff --git a/css/debugging/profileEvents.css b/css/debugging/profileEvents.css index eb3d4304269..db7074763f7 100644 --- a/css/debugging/profileEvents.css +++ b/css/debugging/profileEvents.css @@ -1,5 +1,5 @@ .profile-events { - display: grid; - grid-template-columns: max-content max-content max-content auto; - grid-column-gap: 1em; + display: grid; + grid-template-columns: max-content max-content max-content auto; + grid-column-gap: 1em; } diff --git a/css/endWeek/slavesReport.css b/css/endWeek/slavesReport.css index f07dbecbe1e..041e1f7c6ef 100644 --- a/css/endWeek/slavesReport.css +++ b/css/endWeek/slavesReport.css @@ -1,4 +1,4 @@ div.slave-report { - margin-top: 1em; - margin-bottom: 1em; + margin-top: 1em; + margin-bottom: 1em; } diff --git a/css/events/events.css b/css/events/events.css index 5069b4d2229..22ec740529a 100644 --- a/css/events/events.css +++ b/css/events/events.css @@ -1,4 +1,4 @@ div.event-section { - margin-top: 1em; - margin-bottom: 1em; + margin-top: 1em; + margin-bottom: 1em; } diff --git a/css/facilities/wardrobe.css b/css/facilities/wardrobe.css index 1132d65b924..dc49f435e6c 100644 --- a/css/facilities/wardrobe.css +++ b/css/facilities/wardrobe.css @@ -1,11 +1,11 @@ .wardrobe-shopping-block { - display: flex; - flex-wrap: wrap; + display: flex; + flex-wrap: wrap; } .wardrobe-shopping-cell { - display: inline-block; - width: 20em; + display: inline-block; + width: 20em; border: 1px solid var(--button-border-color); } diff --git a/css/general/formatting.css b/css/general/formatting.css index 15bdbc48506..0d8c5e989fb 100644 --- a/css/general/formatting.css +++ b/css/general/formatting.css @@ -2,100 +2,100 @@ /* setting at the beginning of a scene / subscene */ .scene-intro { - font-style: italic; + font-style: italic; } /* adds detail to an option: Do something. <span class="detail">Sentence that explains the effect/conditions */ .detail { - font-style: italic; + font-style: italic; } /* additional information not related to a specific option */ .note { - font-style: italic; + font-style: italic; } .icons { - font-family: 'tme-fa-icons'; + font-family: 'tme-fa-icons'; } .story-label, .regularParties, .underline { - text-decoration: underline; + text-decoration: underline; } /* Note: Do not do a linebreak after span in HTML, because it will underline the automatic space it inserts: "Matilda_is a cow" */ .slave-name { - color: pink; - font-weight: bold; - text-decoration: underline; - text-decoration-color: white; + color: pink; + font-weight: bold; + text-decoration: underline; + text-decoration-color: white; } .name { - font-weight: bold; + font-weight: bold; } .custom-label { - color: yellow; - font-weight: bold; + color: yellow; + font-weight: bold; } /* strong & bold are deprecated, use custom classes instead */ /* :not(.defiant) : quick fix to make defiant styles look correct */ .major-link, .bold:not(.defiant), .strong { - font-weight: bold; + font-weight: bold; } .monospace { - font-family: monospace; + font-family: monospace; } .strikethrough { - text-decoration: line-through + text-decoration: line-through } .clear-formatting { - color: white; - font-weight: normal; - font-style: normal; + color: white; + font-weight: normal; + font-style: normal; } .clear-formatting a { - color: var(--link-color) !important; + color: var(--link-color) !important; } .major-warning { - font-weight: bold; - color: red; + font-weight: bold; + color: red; } input:invalid { - border-color: #900; - background-color: rgba(255, 0, 0, 0.25); + border-color: #900; + background-color: rgba(255, 0, 0, 0.25); } input:focus:invalid { - outline: none; + outline: none; } input:out-of-range { - background-color: rgba(255, 0, 0, 0.25); - border: 2px solid #900; + background-color: rgba(255, 0, 0, 0.25); + border: 2px solid #900; } .uppercase { - text-transform: uppercase; + text-transform: uppercase; } dt { - font-weight: bold; + font-weight: bold; } dd { - margin-bottom: 1em; + margin-bottom: 1em; } dt::after { - content: ":"; + content: ":"; } diff --git a/css/general/layout.css b/css/general/layout.css index 55246336e9e..7afeedf7bd1 100644 --- a/css/general/layout.css +++ b/css/general/layout.css @@ -1,46 +1,46 @@ /* Styles that mainly affect where text is, but not how it looks */ h1, h2, h3, h4 { - margin-bottom: 0; - margin-top: 0.25em; + margin-bottom: 0; + margin-top: 0.25em; } h1 + p, h2 + p, h3 + p, h4 + p { - margin-top: 0; + margin-top: 0; } .center { - margin-left: auto; - margin-right: auto; - text-align: center; + margin-left: auto; + margin-right: auto; + text-align: center; } div.flex-container { - display: flex; + display: flex; } /* makes the first line indented */ div.indent, p.indent { - text-indent: 2em; + text-indent: 2em; } div.double-indent, p.double-indent { - text-indent: 4em; + text-indent: 4em; } /* makes every line indented */ .choices, .choices { - margin-left: 2em; + margin-left: 2em; } .double-choices, .double-choices { - margin-left: 4em; + margin-left: 4em; } div.grid-2columns-auto { - display: grid; - grid-template-columns: max-content auto; - grid-column-gap: 1em; + display: grid; + grid-template-columns: max-content auto; + grid-column-gap: 1em; } .margin-top { @@ -52,38 +52,38 @@ div.grid-2columns-auto { } .margin-left { - margin-left: 2em; + margin-left: 2em; } .margin-right { - margin-right: 2em; + margin-right: 2em; } .margin-x { - margin-left: 2em; - margin-right: 2em; + margin-left: 2em; + margin-right: 2em; } .margin-y { - margin-top: 1em; - margin-bottom: 1em; + margin-top: 1em; + margin-bottom: 1em; } .margin-full { - margin: 1em; + margin: 1em; } .space-evenly { - justify-content: space-evenly; + justify-content: space-evenly; } .absolute { - position: absolute; + position: absolute; } /* puts a div in the right upper corner while not influencing the layout of the rest of the page */ div.cheat-menu { - font-style: italic; - position: absolute; - right: 50px; + font-style: italic; + position: absolute; + right: 50px; } diff --git a/css/general/textColors.css b/css/general/textColors.css index 95f5cfc484f..097192bde65 100644 --- a/css/general/textColors.css +++ b/css/general/textColors.css @@ -5,148 +5,148 @@ /* link color */ .link, .link a { - color: var(--link-color) + color: var(--link-color) } .aquamarine, .aquamarine a, .skill, .skill a { - color: aquamarine + color: aquamarine } .coral, .coral a, .fetish.loss, .fetish.loss a { - color: coral + color: coral } /* used for aphrodisiac & neighbor arcs */ .cyan, .cyan a, .hotkey { - color: cyan + color: cyan } .darkgoldenrod, .darkgoldenrod a, .trust.extremely-terrified, .trust.extremely-terrified a { - color: darkgoldenrod + color: darkgoldenrod } .darkred, .darkred a, .defiant.full, .defiant.full a { - color: darkred + color: darkred } .darkviolet, .darkviolet a, .devotion.hateful, .devotion.hateful a { - color: darkviolet + color: darkviolet } /* used for devotion once & agent */ .deeppink, .deeppink a, .devotion.devoted, .devotion.devoted a { - color: deeppink + color: deeppink } .steelblue, .steelblue a { - color: steelblue + color: steelblue } .deepskyblue, .deepskyblue a, .intelligent, .intelligent a { - color: deepskyblue + color: deepskyblue } .dodgerblue, .dodgerblue a { - color: dodgerblue + color: dodgerblue } .blue, .blue a { - color: blue + color: blue } .gold, .gold a, .trust.dec, .trust.dec a, .trust.frightened, .trust.frightened a { - color: gold + color: gold } .goldenrod, .goldenrod a, .trust.terrified, .trust.terrified a { - color: goldenrod + color: goldenrod } .gray, .gray a { - color: gray + color: gray } .green, .green a, .reputation.inc, .reputation.inc a, .improvement, .improvement a, .flaw.break, .flaw.break a, .skill.inc, .skill.inc a, .fuckdoll, .fuckdoll a, .positive, .positive a, .health.inc, .health.inc a, .prestigious, .prosperity.inc { - color: green + color: green } .hotpink, .hotpink a, .devotion.inc, .devotion.inc a, .devotion.accept, .devotion.accept a { - color: hotpink + color: hotpink } .lawngreen, .lawngreen a { - color: lawngreen + color: lawngreen } .lightblue, .lightblue a { - color: lightblue + color: lightblue } /* compare pink for fetish */ .lightcoral, .lightcoral a, .fetish.gain, .fetish.gain a { - color: lightcoral + color: lightcoral } .lightgreen, .lightgreen a, .relationship, .relationship a, .rivalry.dec, .rivalry.dec a { - color: lightgreen + color: lightgreen } .lightpink, .lightpink a { - color: lightpink + color: lightpink } .lightsalmon, .lightsalmon a, .fetish.inc, .fetish.inc a, .rivalry.inc, .rivalry.inc a, .relationship.dec, .relationship.dec a { - color: lightsalmon + color: lightsalmon } /* tight orifices, breast changes, take virginity, not sure on good aliases */ .lime, .lime a, .change.positive, .change.positive a, .virginity.loss, .virginity.loss a, .puberty, .puberty a, .pregnant, .pregnant a { - color: lime + color: lime } /* multiple questionable uses */ .limegreen, .limegreen a { - color: limegreen + color: limegreen } .magenta, .magenta a, .devotion.worship, .devotion.worship a { - color: magenta + color: magenta } .mediumaquamarine, .mediumaquamarine a, .trust.inc, .trust.inc a, .trust.careful, .trust.careful a { - color: mediumaquamarine + color: mediumaquamarine } .mediumorchid, .mediumorchid a, .devotion.dec, .devotion.dec a, .devotion.resistant, .devotion.resistant a { - color: mediumorchid + color: mediumorchid } .mediumseagreen, .mediumseagreen a, .trust.trusting, .trust.trusting a { - color: mediumseagreen + color: mediumseagreen } /* generally between red and green, and a lot of other places */ .orange, .orange a, .stupid, .stupid a, .change.negative, .change.negative a, .defiant.careful, .defiant.careful a, .ncs, .ncs a, .miscarriage, .miscarriage a, .intro.question { - color: orange + color: orange } .orangered, .orangered a, .defiant.inc, .defiant.inc a, .defiant.bold, .defiant.bold a, .education.neg a, .unintelligent { - color: orangered + color: orangered } /* used once (wrong? */ .orchid, .orchid a { - color: orchid + color: orchid } /* also fetish start ??? , and a lot of other stuff */ .pink, .pink a, .slave.name.simple { - color: pink + color: pink } /* generally bad stuff */ @@ -154,62 +154,62 @@ .red, .red a, .health.dec, .health.dec a, .cash.dec, .cash.dec a, .stat.drop, .stat.drop a, .flaw, .flaw a, .flaw.gain, .flaw.gain a, .mindbreak, .mindbreak a, .error, .error a, .elites.loss, .elites.loss a, .reputation.dec, .reputation.dec a, .warning, .warning a, .prosperity.dec { - color: red + color: red } /* FIXME: not working correctly - displays at top right corner of screen instead of after content in container */ div > span.warning.notification::after { - font-family: "tme-fa-icons"; - position: absolute; - right: 5px; - top: 0; - content: "\e80c"; - color: red; - font-style: normal; + font-family: "tme-fa-icons"; + position: absolute; + right: 5px; + top: 0; + content: "\e80c"; + color: red; + font-style: normal; } .seagreen, .seagreen a, .trust.prof-trusting, .trust.prof-trusting a { - color: seagreen + color: seagreen } .springgreen, .springgreen a, .skill.player, .skill.player a { - color: springgreen + color: springgreen } /* some ethnicity */ .tan, .tan a { - color: tan + color: tan } .chocolate, .chocolate a, .food { - color: chocolate + color: chocolate } .saddlebrown, .saddlebrown a { - color: saddlebrown + color: saddlebrown } .teal, .teal a { - color: teal + color: teal } .yellow, .yellow a, .noteworthy, .noteworthy a, .paraphilia.gain, .paraphilia.gain a, .devotion.ambivalent, .devotion.ambivalent a, .trust.fearful, .trust.fearful a, .job.change { - color: yellow + color: yellow } .yellowgreen, .yellowgreen a, .cash.inc, .cash.inc a, .cash, .cash a { - color: yellowgreen + color: yellowgreen } .white a { - color: white + color: white } .violet, .libido.inc { - color: violet + color: violet } .khaki, .libido.dec { - color: khaki + color: khaki } diff --git a/css/gui/favorite.css b/css/gui/favorite.css index e6069066bcd..8977f8344af 100644 --- a/css/gui/favorite.css +++ b/css/gui/favorite.css @@ -1,9 +1,9 @@ .favorite, .favorite:hover { - color: yellow; - text-decoration: none; + color: yellow; + text-decoration: none; } .not-favorite, .not-favorite:hover { - color: grey; - text-decoration: none; + color: grey; + text-decoration: none; } diff --git a/css/gui/hotkeySettings.css b/css/gui/hotkeySettings.css index 08df500e4bc..57716805ccf 100644 --- a/css/gui/hotkeySettings.css +++ b/css/gui/hotkeySettings.css @@ -1,42 +1,42 @@ div.hotkey-settings { - display: grid; - grid-template-columns: repeat(3, max-content) auto; + display: grid; + grid-template-columns: repeat(3, max-content) auto; } @media only screen and (min-width: 1600px) { - div.hotkey-settings { - grid-template-columns: repeat(3, max-content) auto repeat(3, max-content) auto; - } + div.hotkey-settings { + grid-template-columns: repeat(3, max-content) auto repeat(3, max-content) auto; + } } div.hotkey-settings div.description { - margin-right: 10px; - /* center text vertically */ - display: flex; - justify-content: center; - flex-direction: column; + margin-right: 10px; + /* center text vertically */ + display: flex; + justify-content: center; + flex-direction: column; } div.hotkey-settings button { - margin: 5px; - border-width: 2px; - background-color: var(--button-color); - border-color: var(--button-border-color); - width: 70px; + margin: 5px; + border-width: 2px; + background-color: var(--button-color); + border-color: var(--button-border-color); + width: 70px; } div.hotkey-settings button.combination { - min-width: 150px; - border-width: 0; + min-width: 150px; + border-width: 0; } div.hotkey-settings button.inactive, div.hotkey-settings button.inactive:hover { - background-color: var(--button-selected-color); - cursor: default; + background-color: var(--button-selected-color); + cursor: default; } div.hotkey-settings button:hover { - background-color: var(--button-hover-color); - border-color: var(--button-border-color); + background-color: var(--button-hover-color); + border-color: var(--button-border-color); } diff --git a/css/gui/linksStrip.css b/css/gui/linksStrip.css index 7e11243e9b9..18f2a89ff08 100644 --- a/css/gui/linksStrip.css +++ b/css/gui/linksStrip.css @@ -1,20 +1,20 @@ ul.choices-strip { - display: inline; - list-style-type: none; - padding: 0mm; - margin-left: 0em; + display: inline; + list-style-type: none; + padding: 0mm; + margin-left: 0em; } ul.choices-strip li { - display: inline; + display: inline; } ul.choices-strip li + li:before { - content: " | "; + content: " | "; } a.disabled { - color: white; - pointer-events: none; - cursor: default; + color: white; + pointer-events: none; + cursor: default; } diff --git a/css/gui/options.css b/css/gui/options.css index 606c2979f5d..eb58e8fc6d3 100644 --- a/css/gui/options.css +++ b/css/gui/options.css @@ -135,8 +135,8 @@ div.options-group input.full-width { } table.invisible { - table-layout: fixed; - border-collapse: separate; - border-spacing: 5px; - margin:1em auto; + table-layout: fixed; + border-collapse: separate; + border-spacing: 5px; + margin:1em auto; } diff --git a/css/gui/quicklinks.css b/css/gui/quicklinks.css index 757b80238d0..2392e4dd537 100644 --- a/css/gui/quicklinks.css +++ b/css/gui/quicklinks.css @@ -1,65 +1,65 @@ div.quick-links { - /* Give quick links as much space as possible, any more and it start looking wrong. */ - margin: 0 -7px; - /* the last menu link has a bottom outline, make enough space for it */ - margin-bottom: 2px; + /* Give quick links as much space as possible, any more and it start looking wrong. */ + margin: 0 -7px; + /* the last menu link has a bottom outline, make enough space for it */ + margin-bottom: 2px; } div.quick-links div.toggle { - position: relative; /* so ::before/::after works in relation to this element */ - background-color: #444444; - cursor: pointer; + position: relative; /* so ::before/::after works in relation to this element */ + background-color: #444444; + cursor: pointer; } div.quick-links div.toggle:hover { - background-color: #5f5f5f; + background-color: #5f5f5f; } div.quick-links div.toggle::before { - font-family: "tme-fa-icons"; - position: absolute; - left: 5px; - content: "\e818"; + font-family: "tme-fa-icons"; + position: absolute; + left: 5px; + content: "\e818"; } div.quick-links div.collapsed div.toggle::before { - content: "\e81a"; + content: "\e81a"; } div.quick-links div.content { - margin: 0 5px; + margin: 0 5px; } div.quick-links div.collapsed div.content { - display: none + display: none } div.quick-links div.menu-link { - background-color: #2b2b2b; - border: solid #3c3c3c; - border-width: 0 2px; - margin: 0 2px; - /* we cannot detect if an element has something after it, so we just add a shadow to every element. Only for the - last element the shadow is not hidden behind another element. */ - box-shadow: 0 2px 0 0 #3c3c3c; - /* make sure the notification is relative to the correct element */ - position: relative; + background-color: #2b2b2b; + border: solid #3c3c3c; + border-width: 0 2px; + margin: 0 2px; + /* we cannot detect if an element has something after it, so we just add a shadow to every element. Only for the + last element the shadow is not hidden behind another element. */ + box-shadow: 0 2px 0 0 #3c3c3c; + /* make sure the notification is relative to the correct element */ + position: relative; } div.quick-links > div.menu-link:first-child, /* give the very first link an upper border */ div.quick-links div:not(.menu-link):not(.collapsed) + div.menu-link /* give the link directly after an opened toggle an upper border */ { - border-top-width: 2px; + border-top-width: 2px; } /* notification */ div.quick-links div.notification:not(.category)::after /* notification for entry */, div.quick-links div.category.notification.collapsed > div.toggle::after /* notification for category, disable when uncollapsed */ { - font-family: "tme-fa-icons"; - position: absolute; - right: 5px; - top: 0; - content: "\e80c"; - color: yellow; + font-family: "tme-fa-icons"; + position: absolute; + right: 5px; + top: 0; + content: "\e80c"; + color: yellow; } diff --git a/css/gui/tooltips/tippy.css b/css/gui/tooltips/tippy.css index b6880fe60b2..ab4273b3700 100644 --- a/css/gui/tooltips/tippy.css +++ b/css/gui/tooltips/tippy.css @@ -1,21 +1,21 @@ .has-tooltip { - text-decoration: underline dotted; + text-decoration: underline dotted; } .tippy-content { - text-indent: initial; + text-indent: initial; } .tippy-content ul { - margin: 5px; + margin: 5px; } .tippy-content ul:not(.choices-strip) { - padding-left: 10px; + padding-left: 10px; } .tippy-content .tip-details { - font-size: smaller; - /* if there isn't enough space vertically, add a scrollbar */ - overflow-y: auto; - max-height: 95vh; + font-size: smaller; + /* if there isn't enough space vertically, add a scrollbar */ + overflow-y: auto; + max-height: 95vh; } diff --git a/css/interaction/export.css b/css/interaction/export.css index 72eabfbdb7a..d5457595457 100644 --- a/css/interaction/export.css +++ b/css/interaction/export.css @@ -1,6 +1,6 @@ div.output { - width: 100vw; - max-width: 100%; - word-break: break-all; - white-space: normal; + width: 100vw; + max-width: 100%; + word-break: break-all; + white-space: normal; } diff --git a/css/interaction/slaveInteract.css b/css/interaction/slaveInteract.css index 5eeb64e09bc..8050ac2aea9 100644 --- a/css/interaction/slaveInteract.css +++ b/css/interaction/slaveInteract.css @@ -1,11 +1,11 @@ .adjacent-slave { - font-weight: bold; + font-weight: bold; } .interact-name { - margin: 0 2em; + margin: 0 2em; } .si-header { - font-size: 1.5em; + font-size: 1.5em; } diff --git a/css/interaction/wardrobe.css b/css/interaction/wardrobe.css index bd0797ce1f1..506182e31a8 100644 --- a/css/interaction/wardrobe.css +++ b/css/interaction/wardrobe.css @@ -1,3 +1,3 @@ .filter-row .button-group { - margin: 1em; + margin: 1em; } diff --git a/css/intro/customizeSlaveTrade.css b/css/intro/customizeSlaveTrade.css index 7e521dc1f36..8d666835b95 100644 --- a/css/intro/customizeSlaveTrade.css +++ b/css/intro/customizeSlaveTrade.css @@ -1,8 +1,8 @@ .customize-slave-trade-ul { - list-style-type: none; - content: ''; - width: 100%; - display: inline-block; + list-style-type: none; + content: ''; + width: 100%; + display: inline-block; } .customize-slave-trade-li-container { @@ -12,10 +12,10 @@ } .customize-slave-trade-li { - text-align: center; - display: inline-block; - padding: 2px; - width: 15em; + text-align: center; + display: inline-block; + padding: 2px; + width: 15em; } span.plusButton { diff --git a/css/manage/main.css b/css/manage/main.css index 3b1c3042dd8..6d38fbfb9a3 100644 --- a/css/manage/main.css +++ b/css/manage/main.css @@ -1,4 +1,4 @@ .main-fcnn { - text-align: center; - margin: 0 auto; + text-align: center; + margin: 0 auto; } diff --git a/css/neighbor/neighborDisplay.css b/css/neighbor/neighborDisplay.css index 87c240223bf..5ba03377514 100644 --- a/css/neighbor/neighborDisplay.css +++ b/css/neighbor/neighborDisplay.css @@ -1,48 +1,48 @@ .neighbor-container { - background-color: rgba(17,17,17,1); - padding: 5px; - max-width: fit-content; - margin: 0 auto; + background-color: rgba(17,17,17,1); + padding: 5px; + max-width: fit-content; + margin: 0 auto; } .neighbor-container-grid { - display: grid; - grid-template-columns: auto auto auto; + display: grid; + grid-template-columns: auto auto auto; } .neighbor-container-list { - display: flex; - flex-flow: row wrap; - align-items: flex-start; + display: flex; + flex-flow: row wrap; + align-items: flex-start; } .neighbor-item { - margin: 3px; - border: 5px solid; - padding: 10px; - text-align: center; + margin: 3px; + border: 5px solid; + padding: 10px; + text-align: center; } .neighbor-item-selected { - background-color: rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.2); } .neighbor-item-empty { - border-color: rgba(17,17,17,1); + border-color: rgba(17,17,17,1); } .neighbor-item-self { - border-color: white; + border-color: white; } .neighbor-item-owned { - border-color: steelblue; + border-color: steelblue; } .neighbor-item-unowned { - border-color: red; + border-color: red; } .neighbor-item-rival { - border-color: crimson; + border-color: crimson; } diff --git a/css/rulesAssistant/raLists.css b/css/rulesAssistant/raLists.css index 70cd924e242..d2869900aa1 100644 --- a/css/rulesAssistant/raLists.css +++ b/css/rulesAssistant/raLists.css @@ -1,41 +1,41 @@ .rajs-list-item { - display: inline-block; - color: var(--link-color); - margin-right: 1em; + display: inline-block; + color: var(--link-color); + margin-right: 1em; } .rajs-list-item.selected { - color: gray; - text-decoration: none; + color: gray; + text-decoration: none; } .rajs-list-item:last-of-type { - margin-right: 0; + margin-right: 0; } .rajs-list-item:hover { - cursor: pointer; - text-decoration: underline; + cursor: pointer; + text-decoration: underline; } .rajs-list-item.selected:hover { - cursor: default; - text-decoration: none; + cursor: default; + text-decoration: none; } .rajs-list strong:first-of-type, .rajs-list input { - margin-right: 2em; + margin-right: 2em; } .rajs-list-item input { - margin: 0.25em; + margin: 0.25em; } .rajs-section h1 { - border-bottom: 1px solid white; - cursor: pointer; + border-bottom: 1px solid white; + cursor: pointer; } .rajs-section h1:hover { - text-decoration: underline; + text-decoration: underline; } diff --git a/css/rulesAssistant/raSummary.css b/css/rulesAssistant/raSummary.css index ee40575e92c..2111d702d71 100644 --- a/css/rulesAssistant/raSummary.css +++ b/css/rulesAssistant/raSummary.css @@ -1,37 +1,37 @@ table.ra-sum { - text-align: left; - empty-cells: hide; + text-align: left; + empty-cells: hide; } th.ra-sum, td.ra-sum { - border: 1px solid grey; + border: 1px solid grey; } td.ra-sum { - white-space: nowrap; - overflow: hidden; + white-space: nowrap; + overflow: hidden; } tr.ra-sum:nth-child(even) { - background-color: #444444; + background-color: #444444; } tr.ra-sum.header { - position:sticky; - top:0px; - z-index:2; - background:#111; + position:sticky; + top:0px; + z-index:2; + background:#111; } th.ra-sum.first-header-cell { - empty-cells: show; - border-style: hidden + empty-cells: show; + border-style: hidden } td.ra-sum.row-title { - position:sticky; - left: 0px; - z-index:1; - background:#111; - opacity: 0.8; + position:sticky; + left: 0px; + z-index:1; + background:#111; + opacity: 0.8; } diff --git a/devNotes/tests/diffProxyTest.js b/devNotes/tests/diffProxyTest.js index 39fa429ac39..72ec17ec588 100644 --- a/devNotes/tests/diffProxyTest.js +++ b/devNotes/tests/diffProxyTest.js @@ -14,9 +14,9 @@ function tests() { const original = p.diffOriginal; const diff = p.diffChange; console.log("Original:", _.cloneDeep(original)); - console.log("Diff: ", diff); + console.log("Diff: ", diff); App.Utils.Diff.applyDiff(original, diff); - console.log("Apply: ", original); + console.log("Apply: ", original); } log("Proxy", getProxy(orig())); diff --git a/devNotes/usefulJSFunctionDocumentation.md b/devNotes/usefulJSFunctionDocumentation.md index 716e8ee6d6e..7a483acadca 100644 --- a/devNotes/usefulJSFunctionDocumentation.md +++ b/devNotes/usefulJSFunctionDocumentation.md @@ -198,7 +198,7 @@ relationshipChecks [script] All work as expected with <<if X.rivalryTarget == $s contextualIntro(context, actor, insertComma=false) // Introduces an actor by using any meaningful relationship(s) with an already on-screen actor, and their name. //Returns strings like: "your husband John", "his growing rival and mother Alice", or "her best friend and twin sister Carla". - //If there is no known relationship between them, retuns the name alone. If insertComma is true, it will generate "her father, Dave" instead of "her father Dave". + //If there is no known relationship between them, retuns the name alone. If insertComma is true, it will generate "her father, Dave" instead of "her father Dave". //Use this function instead of just printing the slave's name when you'd like to let the player to know if two actors are related, even though it's not going to have any mechanical impact on the scene. bellyAdjective(slave) // Returns a string describing her belly size. @@ -383,15 +383,15 @@ findFather(ID) // searches for the ID given and returns an object or undefined ``` ## Release Functions ## ```js -sexAllowed // returns true if both slaves are allowed to have sex with each other. All non-assignment sex should check here first; use disobedience() to determine if the slave or slaves involved will ignore the rules. +sexAllowed // returns true if both slaves are allowed to have sex with each other. All non-assignment sex should check here first; use disobedience() to determine if the slave or slaves involved will ignore the rules. -hasPartnerSex // returns true if the slave has a romantic partner, the relationship is sexual, and they are allowed to sex. Unless you are specifically checking the theoretical rule, check this instead of rules.release.partner. +hasPartnerSex // returns true if the slave has a romantic partner, the relationship is sexual, and they are allowed to sex. Unless you are specifically checking the theoretical rule, check this instead of rules.release.partner. -hasFamilySex // returns true if the slave has a close family member, they are allowed to have sex, and the player is OK with seeing the result. Unless you are specifically checking the theoretical rule, check this instead of rules.release.family. +hasFamilySex // returns true if the slave has a close family member, they are allowed to have sex, and the player is OK with seeing the result. Unless you are specifically checking the theoretical rule, check this instead of rules.release.family. -hasNonassignmentSex // returns true if the slave is having some kind of sex while off-duty with a partner other than the PC. This function provides the answer to "can I mention this slave having an off-duty sexual encounter of some kind." +hasNonassignmentSex // returns true if the slave is having some kind of sex while off-duty with a partner other than the PC. This function provides the answer to "can I mention this slave having an off-duty sexual encounter of some kind." -releaseRestricted // returns true if the slave has some kind of rule limiting the off-duty sex they have. If it returns false, the slave is completely free to fuck whomever they want. +releaseRestricted // returns true if the slave has some kind of rule limiting the off-duty sex they have. If it returns false, the slave is completely free to fuck whomever they want. ``` ## Other Functions ## ```js diff --git a/devTools/types/FC/human.d.ts b/devTools/types/FC/human.d.ts index d683f534a7e..e87e00cad4a 100644 --- a/devTools/types/FC/human.d.ts +++ b/devTools/types/FC/human.d.ts @@ -163,7 +163,7 @@ declare global { | "advocate">; type SexualFlaw = WithNone< - /** hates oral sex */ + /** hates oral sex */ | "hates oral" /** hates anal sex */ | "hates anal" @@ -393,7 +393,7 @@ declare global { /** slave can only ever birth girls */ girlsOnly: GeneticQuirk; /** abnormal production of amniotic fluid - * only affects fetuses */ + * only affects fetuses */ polyhydramnios: GeneticQuirk; /** inappropriate lactation*/ galactorrhea: GeneticQuirk | 3; diff --git a/devTools/types/extensions.d.ts b/devTools/types/extensions.d.ts index e0d7fb808ba..73b867fe4f9 100644 --- a/devTools/types/extensions.d.ts +++ b/devTools/types/extensions.d.ts @@ -62,7 +62,7 @@ declare namespace d3dTree { hideMarriageNodes: boolean; marriageNodeSize: number; /** - * Callbacks should only be overwritten on a need to basis. + * Callbacks should only be overwritten on a need to basis. * See the section about callbacks below. */ callbacks: { diff --git a/js/003-data/clothes/001-slaveWearData.js b/js/003-data/clothes/001-slaveWearData.js index a5a64627b61..8258a864959 100644 --- a/js/003-data/clothes/001-slaveWearData.js +++ b/js/003-data/clothes/001-slaveWearData.js @@ -37,7 +37,7 @@ * @property {clothingDescription} [desc] */ -/** @type {Map.<FC.Clothes, clothes>} The string here will be what is applied to the relevant slave property. Slave.clothes = "a bunny outfit", not "Bunny outfit".*/ +/** @type {Map.<FC.Clothes, clothes>} The string here will be what is applied to the relevant slave property. Slave.clothes = "a bunny outfit", not "Bunny outfit".*/ App.Data.clothes = (new Map()) .set("a Fuckdoll suit", { @@ -1259,8 +1259,8 @@ App.Data.mouthAccessory = new Map([ * @property {itemFS} [fs] * @property {boolean} [requirements] * @property {boolean} [harsh] - * @property {number} heelHeight height in cm. Over 4cm they may totter. 21cm and over (8 inch heels) will be painful/extreme - * @property {number} platformHeight height in cm. Adds to heel height. + * @property {number} heelHeight height in cm. Over 4cm they may totter. 21cm and over (8 inch heels) will be painful/extreme + * @property {number} platformHeight height in cm. Adds to heel height. */ /** diff --git a/js/003-data/futureSocietyData.js b/js/003-data/futureSocietyData.js index d3771e1873f..aab034f6f7a 100644 --- a/js/003-data/futureSocietyData.js +++ b/js/003-data/futureSocietyData.js @@ -1,7 +1,8 @@ App.Data.FutureSociety = { - /** Each future society contains a record here, along with a noun and adjective form for use in printed text, and the decoration string (normally also an adjective form). - * Most of the automatic mechanics for FS adoption, influence, facility decoration, etc, are handled directly from this data; flavor text is not. - * @type {Record<FC.FutureSociety, {noun: FC.FutureSocietyNoun, adj: FC.FutureSocietyAdj, deco: FC.FutureSocietyDeco, NPCOnly?: boolean, language?: string, nationality?: string}>} */ + /** + * Each future society contains a record here, along with a noun and adjective form for use in printed text, and the decoration string (normally also an adjective form). + * Most of the automatic mechanics for FS adoption, influence, facility decoration, etc, are handled directly from this data; flavor text is not. + * @type {Record<FC.FutureSociety, {noun: FC.FutureSocietyNoun, adj: FC.FutureSocietyAdj, deco: FC.FutureSocietyDeco, NPCOnly?: boolean, language?: string, nationality?: string}>} */ records: ({ FSSupremacist: {noun: "Racial Supremacism", adj: "Supremacist", deco: "Supremacist"}, FSSubjugationist: {noun: "Racial Subjugationism", adj: "Subjugationist", deco: "Subjugationist"}, @@ -78,8 +79,8 @@ App.Data.FutureSociety = { }), /** Each subarray in this array contains a set of Future Societies which are to be considered mutually exclusive. - * They cannot be adopted at the same time by the same arcology, and if adopted by different arcologies, - * will automatically conflict and reduce diplomatic relations. */ + * They cannot be adopted at the same time by the same arcology, and if adopted by different arcologies, + * will automatically conflict and reduce diplomatic relations. */ mutexGroups: (/** @returns {FC.FutureSociety[][]} */ function() { /* this tiny-but-hideous IIFE is the only way I can get typechecking to work properly here, without a JSDoc equivalent to TS "as const" to prevent literal type widening */ return [ diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 375aec5af02..e8d2ddd80ab 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -1,4 +1,4 @@ -// A whitelist for ingame variables. Used to init the game or fill in gaps. Also used as a whitelist. Anything not on this list will be removed on BC. +// A whitelist for ingame variables. Used to init the game or fill in gaps. Also used as a whitelist. Anything not on this list will be removed on BC. App.Data.defaultGameStateVariables = { // Page nextButton: "Continue", @@ -284,7 +284,7 @@ App.Data.illegalWares = [ ]; -// The other half of the above whitelist. However, entries in this array will be forced to the values set here upon starting NG+. +// The other half of the above whitelist. However, entries in this array will be forced to the values set here upon starting NG+. App.Data.resetOnNGPlus = { policies: { retirement: { @@ -1298,7 +1298,7 @@ App.Data.resetOnNGPlus = { }, tempEventToggle: 0, /** - * Assignments texts for slaves who choose their own assignment, set at during the first pass in App.SlaveAssignment.choosesOwnJob() + * Assignments texts for slaves who choose their own assignment, set at during the first pass in App.SlaveAssignment.choosesOwnJob() * @type {Object.<number, string>} */ choosesOwnAssignmentText: {}, diff --git a/js/003-data/slaveGeneData.js b/js/003-data/slaveGeneData.js index 60714aaacbd..fb6a3ee3c9c 100644 --- a/js/003-data/slaveGeneData.js +++ b/js/003-data/slaveGeneData.js @@ -216,7 +216,7 @@ App.Data.geneticMods = new Map([ title: "immortal", abbreviation: "imrtl", goodTrait: true, - description: "slave stops aging. Can still die of other causes." + description: "slave stops aging. Can still die of other causes." }, ], ]); diff --git a/js/003-data/slaveProstheticsData.js b/js/003-data/slaveProstheticsData.js index e9e3c6fb4ea..2da990f1fce 100644 --- a/js/003-data/slaveProstheticsData.js +++ b/js/003-data/slaveProstheticsData.js @@ -10,7 +10,7 @@ App.Data.prostheticIDs = * @typedef {object} prosthetics * @property {string} name expected to singular and lowercase * @property {number} adjust time required to adjust an existing prosthetic to a slave - * @property {number} craft time required to create a new, not to a specific slave fitted prosthetic + * @property {number} craft time required to create a new, not to a specific slave fitted prosthetic * @property {number} research time required to research the prosthetic * @property {number} level minimum level the prosthetics lab needs to research/craft the prosthetic * @property {number} costs cash required to buy the prosthetic diff --git a/js/utils.js b/js/utils.js index 29aaf545acd..cba532a786e 100644 --- a/js/utils.js +++ b/js/utils.js @@ -185,7 +185,7 @@ function ordinalSuffix(i) { * @param {number} i * @returns {string} * Takes a number and returns the appropriate ordinal. - * Example: `ordinalSuffix(1)` gives `first`. + * Example: `ordinalSuffix(1)` gives `first`. * For number greater than 19 identical to `ordinalSuffix(i)` */ function ordinalSuffixWords(i) { diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index a792717a4d3..ece1f97e2e1 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -2,5 +2,5 @@ App.Version = { base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed. pmod: "4.0.0-alpha.10", commitHash: null, - release: 1145 // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. + release: 1145 // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. }; diff --git a/src/004-base/baseEvent.js b/src/004-base/baseEvent.js index 19ca30806f7..0479b8f8b00 100644 --- a/src/004-base/baseEvent.js +++ b/src/004-base/baseEvent.js @@ -1,8 +1,9 @@ /** base class for class-based events */ App.Events.BaseEvent = class BaseEvent { - /** build a new event - * parameters are necessary for serialization (so that saving with the event active will work correctly) and should not normally be used directly - * child classes will inherit this implementation automatically, and should not normally need their own constructor implementation + /** + * build a new event + * parameters are necessary for serialization (so that saving with the event active will work correctly) and should not normally be used directly + * child classes will inherit this implementation automatically, and should not normally need their own constructor implementation * @param {Array<number>} [actors] * @param {object} [params] */ @@ -18,8 +19,8 @@ App.Events.BaseEvent = class BaseEvent { * @returns {boolean} */ /** generate an array of zero or more predicates which must all return true in order for the event to be valid. - * lambda predicates may add properties to {@link App.Events.BaseEvent#params the params member} in order to pass information on to the event. - * child classes should implement this. + * lambda predicates may add properties to {@link App.Events.BaseEvent#params the params member} in order to pass information on to the event. + * child classes should implement this. * @returns {Array<eventPredicate>} */ eventPrerequisites() { @@ -32,7 +33,7 @@ App.Events.BaseEvent = class BaseEvent { * @returns {boolean} */ /** generate an array of zero or more arrays, each corresponding to an actor in the event, which contain zero or more predicates which must be satisfied by the actor. - * child classes should implement this, unless they don't need any actors, or are overriding castActors. + * child classes should implement this, unless they don't need any actors, or are overriding castActors. * @returns {Array<Array<actorPredicate>>} */ actorPrerequisites() { @@ -47,27 +48,27 @@ App.Events.BaseEvent = class BaseEvent { } /** run the event and attach DOM output to the event passage. - * child classes must implement this. + * child classes must implement this. * @param {ParentNode} node - Document fragment which event output should be attached to */ execute(node) { } /** clone the event (needed for serialization). - * default implementation should suffice for child classes */ + * default implementation should suffice for child classes */ clone() { return _.cloneDeep(this); } /** serialize the event instance so it persists through saves. - * default implementation should suffice for child classes assigned to App.Events */ + * default implementation should suffice for child classes assigned to App.Events */ toJSON() { const reviveData = {actors: this.actors, params: this.params}; return JSON.reviveWrapper(`new App.Events.${this.constructor.name}($ReviveData$.actors, $ReviveData$.params)`, reviveData); } /** get the event's (human-readable) name. must not include ":". - * default implementation should generally suffice (though we might want to de-camelcase here or something). + * default implementation should generally suffice (though we might want to de-camelcase here or something). * @returns {string} */ get eventName() { @@ -75,7 +76,7 @@ App.Events.BaseEvent = class BaseEvent { } /** build the actual list of actors that will be involved in this event. - * default implementation should suffice for child classes with a fixed number of actors; may be overridden for events with variable actor count. + * default implementation should suffice for child classes with a fixed number of actors; may be overridden for events with variable actor count. * @param {App.Entity.SlaveState} [firstActor] - if supplied, the first actor should be this slave (fail if she is not qualified) * @returns {boolean} - return false if sufficient qualified actors could not be found (cancel the event) */ diff --git a/src/004-base/facility.js b/src/004-base/facility.js index 4ebe890f1bb..1063d5cd6f8 100644 --- a/src/004-base/facility.js +++ b/src/004-base/facility.js @@ -598,5 +598,5 @@ App.Entity.Facilities.SingleJobFacility = class extends App.Entity.Facilities.Fa } }; -/** Instances of all facility objects */ +/** Instances of all facility objects */ App.Entity.facilities = {}; diff --git a/src/004-base/facilityFramework.js b/src/004-base/facilityFramework.js index afc53d284b0..475e96ac7d3 100644 --- a/src/004-base/facilityFramework.js +++ b/src/004-base/facilityFramework.js @@ -74,7 +74,7 @@ App.Facilities.Facility = class { /** * Adds new sections to the facility passage. * - * @param {...function():HTMLDivElement} args + * @param {...function():HTMLDivElement} args * * @private * @returns {void} @@ -96,7 +96,7 @@ App.Facilities.Facility = class { /** * Adds new rules able to be set by the player. - * @param {...FC.Facilities.Rule} rules + * @param {...FC.Facilities.Rule} rules * * @private * @returns {void} diff --git a/src/Corporation/corporate-constants.js b/src/Corporation/corporate-constants.js index 3cacb89f4cc..61e5f46e13f 100644 --- a/src/Corporation/corporate-constants.js +++ b/src/Corporation/corporate-constants.js @@ -497,14 +497,14 @@ App.Corporate.InitConstants = function() { }) ]; // divisionCategoriesList: Division maintenance categories are used to calculate the overhead that occurs from having multiple divisions within the same category. - // id: The identifier that will be used in division.maintenance.category - // freeDivisions: How many divisions must appear in this category before the overhead cost comes into play. For example, if this is 1, then the second division will cost divisionCost, and the third will bring the overhead up to four times divisionCost. - // divisionCost: How much to multiply the overhead by in cash. The first division past the free divisions will cost this much, but the value will increase exponentially. - // freeDevelopment: How many developments, totaled across all divisions in the category, are ignored by this category before overhead comes into play. Note: freeDivisions does *not* affect this; if freeDevelopment is 100 and freeDivisions is 1, if you only have a single division with 110 developments, you will be charged for the 10 developments over. - // developmentCost: How much to multiply the squared developments by, in cash. The first development past the ignored value will cost this much, but the cost increases exponentially. + // id: The identifier that will be used in division.maintenance.category + // freeDivisions: How many divisions must appear in this category before the overhead cost comes into play. For example, if this is 1, then the second division will cost divisionCost, and the third will bring the overhead up to four times divisionCost. + // divisionCost: How much to multiply the overhead by in cash. The first division past the free divisions will cost this much, but the value will increase exponentially. + // freeDevelopment: How many developments, totaled across all divisions in the category, are ignored by this category before overhead comes into play. Note: freeDivisions does *not* affect this; if freeDevelopment is 100 and freeDivisions is 1, if you only have a single division with 110 developments, you will be charged for the 10 developments over. + // developmentCost: How much to multiply the squared developments by, in cash. The first development past the ignored value will cost this much, but the cost increases exponentially. // corporate: The corporate-wide overhead for divisions, beyond the individual categories. - // freeDivisions: How many total divisions, across all categories, are ignored before charging corporate level overhead. - // divisionCost: How much to multiply the square of counted divisions in cash. The first counted division will cost this much, but the value increases exponentially. + // freeDivisions: How many total divisions, across all categories, are ignored before charging corporate level overhead. + // divisionCost: How much to multiply the square of counted divisions in cash. The first counted division will cost this much, but the value increases exponentially. // Equations: // divisionBaseOverhead = (divisions - freeDivisions) ^ 2 * divisionCost // divisionOperationOverhead = (sum(development) - freeDevelopment) ^ 2 * developmentCost diff --git a/src/Corporation/corporate-divisionProcessing.js b/src/Corporation/corporate-divisionProcessing.js index 8a94086ad13..c062900d3ef 100644 --- a/src/Corporation/corporate-divisionProcessing.js +++ b/src/Corporation/corporate-divisionProcessing.js @@ -18,8 +18,8 @@ App.Corporate.Init_DivisionProcessing = function(shared) { set activeSlaves(value) { this.setStored("Slaves", Math.trunc(value)); } get processRate() { return this._const.processing.center; } get soldSlaveValue() { - // TODO: find a way to cache this. - return this.purchasedSlaveValue + this._const.addedValue; + // TODO: find a way to cache this. + return this.purchasedSlaveValue + this._const.addedValue; } get slaveAction() { return this._const.slaveProcessDescription; diff --git a/src/Corporation/manageCorporation.js b/src/Corporation/manageCorporation.js index 6a2a92683ea..4f244d382b0 100644 --- a/src/Corporation/manageCorporation.js +++ b/src/Corporation/manageCorporation.js @@ -198,7 +198,7 @@ App.Corporate.manage = function() { ]; if (division.heldSlaves >= nextDiv.availableRoom) { sendSlaveArray.push({ - 'name': `Fill ${nextDiv.name} Division`, + 'name': `Fill ${nextDiv.name} Division`, 'count': nextDiv.availableRoom }); } else { diff --git a/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js b/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js index 1c78ad4bfbe..83ee5bd7d39 100644 --- a/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js +++ b/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js @@ -45,7 +45,7 @@ App.Events.refsTotallyLegitCatgirls = class refsTotallyLegitCatgirls extends App } function refuse() { - return `You ask the salesman if he thinks you're an idiot and tell him that these are clearly not legitimate catgirls. He smiles bashfully and shrugs his shoulder like a child being scolded. "Sure, sure, but they're still pretty good girls. And besides, it's something for all the people who can't afford a real one, right? Haha. So, anyway, you wanna buy one, or..?" You roll your eyes at the persistent salesman. He's still making pitches at you as you leave.`; + return `You ask the salesman if he thinks you're an idiot and tell him that these are clearly not legitimate catgirls. He smiles bashfully and shrugs his shoulder like a child being scolded. "Sure, sure, but they're still pretty good girls. And besides, it's something for all the people who can't afford a real one, right? Haha. So, anyway, you wanna buy one, or..?" You roll your eyes at the persistent salesman. He's still making pitches at you as you leave.`; } } }; diff --git a/src/Mods/Catmod/events/SoSSniper.js b/src/Mods/Catmod/events/SoSSniper.js index 858fc7a2031..26e9ec40270 100644 --- a/src/Mods/Catmod/events/SoSSniper.js +++ b/src/Mods/Catmod/events/SoSSniper.js @@ -49,7 +49,7 @@ App.Events.RESosSniper = class RESosSniper extends App.Events.BaseEvent { r.push(`Two more shots slam into the wood around you as you all but leap into the citizen's apartment, one more bullet splintering the wood of the door as you close it shut behind you.`); } else if (!S.Bodyguard || S.Bodyguard.intelligence + S.Bodyguard.intelligenceImplant <= 60) { V.gameover = "snipedbysons"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } else { r.push(`You blink once at the message in confusion before ${S.Bodyguard.slaveName} tackles you, ${his} shoulder bursting out with an explosion of red as ${he} catches a bullet clearly meant for you. ${He} cries out in pain, but it doesn't look like the hit was lethal; even injured and bleeding, ${he} shields you as you hustle into the open apartment along with the spooked citizen, more shots impacting around you as you wildly scramble into cover. A final bullet splinters the wood of the door as you close it shut behind you.`); cashX(-1000, "event", S.Bodyguard); diff --git a/src/Mods/Catmod/events/SoSassassin.js b/src/Mods/Catmod/events/SoSassassin.js index 0d8ba3cd3cf..aefeb4e6dee 100644 --- a/src/Mods/Catmod/events/SoSassassin.js +++ b/src/Mods/Catmod/events/SoSassassin.js @@ -43,7 +43,7 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent { r.push(`You shoot two rounds into the first assassin's chest, then snap around and blast the second before either man can fire.`); } else { V.gameover = "shotbysons"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } App.Events.addParagraph(node, r); r = []; @@ -77,7 +77,7 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent { r.push(`The two killers clash, but it's immediately apparent who's better trained. The assassin blocks every strike coming from ${S.Bodyguard.slaveName} and hits back twice as hard, forcing ${him} on the defensive. When ${S.Bodyguard.slaveName} stumbles, the assassin furiously kicks the blade out from ${his} hand and leaps atop ${him}, readying her own knife to slash the bodyguard's throat. You raise your handgun at the same time, one bullet left in the trigger, and fire a single round through the assassin's skull just before she can. Her head explodes backwards in a burst of gore, and she slumps off ${S.Bodyguard.slaveName}, her knife clattering to the ground. The citizens in the marketplace watch the <span class="red">minorly damaged</span> scene with a mixture of <span class="green">shock and admiration,</span> both you and ${S.Bodyguard.slaveName} panting in the wake of the attack and surrounded by bodies.`); } else { V.gameover = "sons assassinated with bodyguard"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } } else { if (V.PC.skill.warfare >= 100 && V.personalArms > 0) { @@ -97,7 +97,7 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent { repX(2500, "event"); } else { V.gameover = "sons assassinated"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } } } else if (S.Bodyguard && S.Bodyguard.intelligence + S.Bodyguard.intelligenceImplant > 80) { @@ -140,7 +140,7 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent { r.push(`The two killers clash, but it's immediately apparent who's better trained. The assassin blocks every strike coming from ${S.Bodyguard.slaveName} and hits back twice as hard, forcing ${him} on the defensive. When ${S.Bodyguard.slaveName} stumbles, the assassin furiously kicks the blade out from ${his} hand and leaps atop ${him}, readying her own knife to slash the bodyguard's throat. You raise your handgun at the same time, one bullet left in the trigger, and fire a single round through the assassin's skull just before she can. Her head explodes backwards in a burst of gore, and she slumps off ${S.Bodyguard.slaveName}, her knife clattering to the ground. The citizens in the marketplace watch the <span class="red">minorly damaged</span> scene with a mixture of <span class="green">shock and admiration,</span> both you and ${S.Bodyguard.slaveName} panting in the wake of the attack and surrounded by bodies.`); } else { V.gameover = "sons assassinated with bodyguard"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } r.push(``); } else { @@ -151,7 +151,7 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent { r.push(`${S.Bodyguard.slaveName} quickly snaps to attention, pulling ${his} machine pistol from its holster and firing back at the two attackers. A bullet hits you in the arm and sends you sprawling back against the ground in agony, but ${S.Bodyguard.slaveName} drops both of the attackers before they can finish the job.`); } else { V.gameover = "shotbysons"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } r.push(`As the two would-be assassins collapse, the pretty woman draws a vicious-looking curved knife from her sleeve, swears in a foreign language, and lunges towards you.`); App.Events.addParagraph(node, r); @@ -175,11 +175,11 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent { removeSlave(S.Bodyguard); } else { V.gameover = "sons assassinated with bodyguard"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } } else { V.gameover = "sons assassinated"; - setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. + setTimeout(() => Engine.play("Gameover"), Engine.minDomActionDelay); // TODO: uhh, do we not want to delay here? If so, need to suspend the rest of the content. } } diff --git a/src/Mods/Catmod/events/nonRandom/bodypuristriot.js b/src/Mods/Catmod/events/nonRandom/bodypuristriot.js index ba0fea2e0dc..81973958e9c 100644 --- a/src/Mods/Catmod/events/nonRandom/bodypuristriot.js +++ b/src/Mods/Catmod/events/nonRandom/bodypuristriot.js @@ -101,7 +101,7 @@ App.Events.SEBodyPuristRiot = class SEBodyPuristRiot extends App.Events.BaseEven function reputation() { const frag = new DocumentFragment(); let r = []; - r.push(`You brush some concrete dust from the thrown brick off your shoulder. This isn't the first enemy you've stared down, and it sure as hell isn't the scariest. Even above the crackle of electrobatons and the shouting of the crowd, the entire riot group seems to hear when you ask them coldly if they've forgotten who you are. As the crowd watches, you rattle off battlefields and massacres, the names of armies you've shattered and towns you've burnt to ashes, casually point a finger at the blonde man with the megaphone, say his full name, and tell him that if he says another word you'll give his two daughters to your mercenaries as rape-toys, cut off his dick, and use him as a whipping board until he bleeds out after a few years of abuse. The crowd might have guns and knives, but they still quiet down at your words, balking somewhat at the threat of brutality. You take the oppurtunity to remind them that the security cameras outside your penthouse has recorded every face in the crowd, and anyone who actually uses the weapons in their hands has their home, occupation, and family on file. No one moves a muscle.`); // "oppurtunity"... spelling or cat pun? 🤔 + r.push(`You brush some concrete dust from the thrown brick off your shoulder. This isn't the first enemy you've stared down, and it sure as hell isn't the scariest. Even above the crackle of electrobatons and the shouting of the crowd, the entire riot group seems to hear when you ask them coldly if they've forgotten who you are. As the crowd watches, you rattle off battlefields and massacres, the names of armies you've shattered and towns you've burnt to ashes, casually point a finger at the blonde man with the megaphone, say his full name, and tell him that if he says another word you'll give his two daughters to your mercenaries as rape-toys, cut off his dick, and use him as a whipping board until he bleeds out after a few years of abuse. The crowd might have guns and knives, but they still quiet down at your words, balking somewhat at the threat of brutality. You take the oppurtunity to remind them that the security cameras outside your penthouse has recorded every face in the crowd, and anyone who actually uses the weapons in their hands has their home, occupation, and family on file. No one moves a muscle.`); // "oppurtunity"... spelling or cat pun? 🤔 App.Events.addParagraph(frag, r); r = []; r.push(`You tell the frozen crowd that you'll be continuing your work on Project N, and that if any one of them ever shows up at your house again with a gun, it'll be the worst, and last, decision they ever make. A few people at the back start to break off from the crowd. You turn back to your penthouse and walk inside as the crowd disintegrates. You have work to do, and you get the feeling these people <span class="green">aren't going to bother you again.</span>`); diff --git a/src/Mods/Catmod/interaction/fPet.js b/src/Mods/Catmod/interaction/fPet.js index ed7c892e707..2ac27c85ba7 100644 --- a/src/Mods/Catmod/interaction/fPet.js +++ b/src/Mods/Catmod/interaction/fPet.js @@ -100,7 +100,7 @@ App.Interact.fPet = function(slave) { r.push(`${He} makes a rude sign gesture.`); } else { r.push(`${He} mrowls,`); - r.push(Spoken(slave, `"I'm a person, not some kind of dumb animal."`)); + r.push(Spoken(slave, `"I'm a person, not some kind of dumb animal."`)); } } else if (slave.devotion >= -20 && slave.trust >= -20) { r.push(`${He} flinches back when you raise your hand towards ${him}, expecting to be hit. The tender petting that occurs obviously shocks ${him}, and for the first minute it looks like ${he}'s expecting you to change your mind at any moment and hit ${him} anyway. When you don't, only then does the scared cat${girl} allow ${himself} to get pet properly, slightly arching ${his} back to give you a range of motion against the silky fur as you stroke and play with your bioengineered cat${girl}. When you finally retract your hand, ${he} bats ${his} eyelashes at you, confused.`); diff --git a/src/Mods/SecExp/buildings/propagandaHub.js b/src/Mods/SecExp/buildings/propagandaHub.js index 9a31ee5ce5e..b3ef2737567 100644 --- a/src/Mods/SecExp/buildings/propagandaHub.js +++ b/src/Mods/SecExp/buildings/propagandaHub.js @@ -154,7 +154,7 @@ App.SecExp.propHub = (function() { "The authenticity dept. now provides a small amount of reputation as well as authority, but increases upkeep.", "controlLeaks", true, - "Institute a system able to release erroneous, but plausible, information about your business, leading your competitors to prepared financial traps. " + "Institute a system able to release erroneous, but plausible, information about your business, leading your competitors to prepared financial traps. " )); } else { App.UI.DOM.appendNewElement("div", node); diff --git a/src/Mods/SecExp/buildings/securityHQ.js b/src/Mods/SecExp/buildings/securityHQ.js index 57b4d19a3cc..5709f813031 100644 --- a/src/Mods/SecExp/buildings/securityHQ.js +++ b/src/Mods/SecExp/buildings/securityHQ.js @@ -316,7 +316,7 @@ App.SecExp.secHub = (function() { "Will increase recon capabilities, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.", "sensors") ); - } else { + } else { App.UI.DOM.appendNewElement("div", z, "You have installed perimeter seismic sensors able to detect movement with high accuracy."); } if (V.SecExp.buildings.secHub.upgrades.intel.signalIntercept === 0) { diff --git a/src/Mods/SecExp/events/conflictReport.js b/src/Mods/SecExp/events/conflictReport.js index 44a25843d2d..95edc3385e6 100644 --- a/src/Mods/SecExp/events/conflictReport.js +++ b/src/Mods/SecExp/events/conflictReport.js @@ -1387,7 +1387,7 @@ const arcologyEffects = function(lowerClass, slaves, prosperity) { V.arcologies[0].prosperity -= random(prosperity); }; /** - * @param {FC.SecExp.PlayerHumanUnitTypeModHuman} [unit] + * @param {FC.SecExp.PlayerHumanUnitTypeModHuman} [unit] * @param {number} [averageLosses] */ const rebellingUnitsFate = function(unit, averageLosses) { diff --git a/src/Mods/SecExp/js/reportingRelatedFunctions.js b/src/Mods/SecExp/js/reportingRelatedFunctions.js index cc41fcb9c8e..a7224ac63b6 100644 --- a/src/Mods/SecExp/js/reportingRelatedFunctions.js +++ b/src/Mods/SecExp/js/reportingRelatedFunctions.js @@ -155,7 +155,7 @@ App.SecExp.commanderEffectiveness = function(passage) { let slave; const isBodyguard = commander === "Bodyguard"; - switch(commander) { + switch (commander) { case "PC": if (inHandler) { if (V.SecExp.core.authority <= 2500 && V.SecExp.core.authority > 1000) { @@ -895,7 +895,7 @@ App.SecExp.upkeep = (function() { return { cost, edictsAuth - } + }; function cost() { let secExpCost = 0; @@ -910,8 +910,8 @@ App.SecExp.upkeep = (function() { } return secExpCost; /** Upkeep cost of edicts, in cash - * @returns {number} - */ + * @returns {number} + */ function edictsCash() { let value = 0; if (V.SecExp.edicts.slaveWatch) { value++; } @@ -931,8 +931,8 @@ App.SecExp.upkeep = (function() { return value * 1000; } /** Upkeep cost of Special Forces support edicts. They allow the two mods an additional layer of in-universe interaction. - * @returns {number} - */ + * @returns {number} + */ function SF() { let value = 0; if (V.SecExp.edicts.SFSupportLevel >= 1) { @@ -953,8 +953,8 @@ App.SecExp.upkeep = (function() { return value; } /** Upkeep cost of buildings (in cash) - * @returns {number} - */ + * @returns {number} + */ function buildings() { let value = 0; const base = V.facilityCost * 5; const upgrade = 50; @@ -985,8 +985,8 @@ App.SecExp.upkeep = (function() { } } /** Upkeep cost of edicts, in authority - * @returns {number} - */ + * @returns {number} + */ function edictsAuth() { let value = 0; if (V.SecExp.edicts.enslavementRights > 0) { diff --git a/src/Mods/SecExp/js/secExp.js b/src/Mods/SecExp/js/secExp.js index b0c799b0092..b64b946fe4f 100644 --- a/src/Mods/SecExp/js/secExp.js +++ b/src/Mods/SecExp/js/secExp.js @@ -1,7 +1,7 @@ /** Takes the passed input and returns a clamped V.SecExp.core.authority * @param {number} input defaults to zero */ -App.SecExp.authorityX = function(input = 0) { +App.SecExp.authorityX = function(input = 0) { V.SecExp.core.authority = Math.trunc(Math.clamp(V.SecExp.core.authority + input, 0, 20000)); }; diff --git a/src/Mods/SpecialForce/events/TrickShotNight.js b/src/Mods/SpecialForce/events/TrickShotNight.js index 20845ecaa9a..bfdeba4feaf 100644 --- a/src/Mods/SpecialForce/events/TrickShotNight.js +++ b/src/Mods/SpecialForce/events/TrickShotNight.js @@ -13,7 +13,7 @@ App.Events.TrickShotNight = class TrickShotNight extends App.Events.BaseEvent { const { HeA } = getPronouns(assistant.pronouns().main).appendSuffix("A"); - const shootChance = Math.max(25 + V.PC.skill.warfare * 0.2, 25 + V.PC.skill.warfare * 0.65); // Odds increase slowly up to 0 skill, then greatly after. Always some odds to succeed or fail. + const shootChance = Math.max(25 + V.PC.skill.warfare * 0.2, 25 + V.PC.skill.warfare * 0.65); // Odds increase slowly up to 0 skill, then greatly after. Always some odds to succeed or fail. App.Events.addParagraph(node, [`Despite your direct elevator, interaction with the majority of your security force is relatively scarce. Aside from mutually exchanged nods in the firebase and the occasional briefing, your ${V.SF.Lower} enjoy a degree of autonomy.`]); diff --git a/src/Mods/SpecialForce/upgrades/SpecialForceUpgradeFunctions.js b/src/Mods/SpecialForce/upgrades/SpecialForceUpgradeFunctions.js index c5082bf7ea2..489d9b06b34 100644 --- a/src/Mods/SpecialForce/upgrades/SpecialForceUpgradeFunctions.js +++ b/src/Mods/SpecialForce/upgrades/SpecialForceUpgradeFunctions.js @@ -9,7 +9,7 @@ App.SF.unlocked = (function() { function secondTier() { return V.SF.Squad.Firebase + V.SF.Squad.Armoury + V.SF.Squad.Drugs + V.SF.Squad.Drones + - (V.terrain !== "oceanic" ? V.SF.Squad.AV + V.SF.Squad.TV : 0) + V.SF.Squad.AA + V.SF.Squad.TA >= 30; + (V.terrain !== "oceanic" ? V.SF.Squad.AV + V.SF.Squad.TV : 0) + V.SF.Squad.AA + V.SF.Squad.TA >= 30; } function garage() { @@ -150,9 +150,9 @@ App.SF.upgrades = (function() { return node; /** - * @param {string} unit - * @returns {DocumentFragment} - */ + * @param {string} unit + * @returns {DocumentFragment} + */ function checkUnit(unit) { const node = new DocumentFragment(); const max = App.SF.upgrades.currentUnitMax(unit); @@ -257,11 +257,11 @@ App.SF.upgrades = (function() { /** * @param {number} cost * @returns {number} - */ + */ function getPrice(cost) { const upgradeDiv = 1.65; const S = V.SF.Squad; - let value = (cost/upgradeDiv) * App.SF.env() * Math.pow(1.15, V.SF.Squad[unit] + 1); + let value = (cost / upgradeDiv) * App.SF.env() * Math.pow(1.15, V.SF.Squad[unit] + 1); if ([S.AircraftCarrier, S.Drones, S.GiantRobot, S.GunS, S.MissileSilo, S.Satellite, S.SpacePlane, S.Sub].includes(unit)) { value *= V.HackingSkillMultiplier; } diff --git a/src/arcologyBuilding/base.js b/src/arcologyBuilding/base.js index c2e8f4e4d17..be563aa4cdf 100644 --- a/src/arcologyBuilding/base.js +++ b/src/arcologyBuilding/base.js @@ -106,8 +106,7 @@ App.Arcology.Section = class extends App.Entity.Serializable { /** * @param {string} id unique ID * @param {Array<Array<App.Arcology.Cell.BaseCell>>} rows - * @param {boolean} [groundLevel=false] if the section the ground level, all lower layers are automatically in the - * basement + * @param {boolean} [groundLevel=false] if the section the ground level, all lower layers are automatically in the basement */ constructor(id, rows, groundLevel = false) { super(); diff --git a/src/arcologyBuilding/presets.js b/src/arcologyBuilding/presets.js index e7d60df03aa..058d31aa4cf 100644 --- a/src/arcologyBuilding/presets.js +++ b/src/arcologyBuilding/presets.js @@ -242,8 +242,7 @@ App.Arcology.upgrades = function(building) { * @typedef upgrade * @property {string} id used to identify already build upgrades, unique! * @property {Array<string>} layouts - * @property {Array<string>} exclusive any upgrade is always exclusive to itself. NOTE: keep in mind that - * exclusiveness has to be added to both upgrades! + * @property {Array<string>} exclusive any upgrade is always exclusive to itself. NOTE: keep in mind that exclusiveness has to be added to both upgrades! * @property {string} name as shown to player. * @property {string} desc Fits in a sentence like this: The next major upgrade needed is "desc" * @property {number} cost diff --git a/src/art/vector_revamp/vectorRevampedArtControl.js b/src/art/vector_revamp/vectorRevampedArtControl.js index 1095c10bd2f..eb22a38d301 100644 --- a/src/art/vector_revamp/vectorRevampedArtControl.js +++ b/src/art/vector_revamp/vectorRevampedArtControl.js @@ -1104,17 +1104,17 @@ class ClothingControl { return torsoSize; } - /** This function must return a random item from the array in the input, - * but the index chosen must be constant for the same slave for the same week. - * Intended for an array of colors, but has other uses - * The idea is to make sure that the color for the same clothing remains - * the same for the same slave within a given week, so the color does not - * change upon image redraw. - * @template T - * @param {Array<T>} [possibleColors] array of strings representing colorSlave - * @param {number} [seedOffset] optional offset to the seed. Can be used to generate different - * results for different pieces of clothing - * @returns {T} + /** + * This function must return a random item from the array in the input, + * but the index chosen must be constant for the same slave for the same week. + * Intended for an array of colors, but has other uses + * The idea is to make sure that the color for the same clothing remains + * the same for the same slave within a given week, so the color does not + * change upon image redraw. + * @template T + * @param {Array<T>} [possibleColors] array of strings representing colorSlave + * @param {number} [seedOffset] optional offset to the seed. Can be used to generate different results for different pieces of clothing + * @returns {T} */ randomItem(possibleColors = ['#FFFFFF'], seedOffset = 0) { const a = this.randomNumber(seedOffset); @@ -1122,14 +1122,14 @@ class ClothingControl { } /** This function must return a pseudo random number that is consistent for the - * same slave in the same week. - * To do this a pseudo random generator is used and called multiple times. - * First with the ID as seed, so the results are different for different slaves - * Second with lifetimeCashExpenses as seed, to get a number that changes from week to week - * And last with a seed calculated from the first two results and seedOffset - * @param {number} [seedOffset] optional offset to the seed. Can be used to generate different - * results for different pieces of clothing - * @returns {number} + * same slave in the same week. + * To do this a pseudo random generator is used and called multiple times. + * First with the ID as seed, so the results are different for different slaves + * Second with lifetimeCashExpenses as seed, to get a number that changes from week to week + * And last with a seed calculated from the first two results and seedOffset + * @param {number} [seedOffset] optional offset to the seed. Can be used to generate different + * results for different pieces of clothing + * @returns {number} */ randomNumber(seedOffset = 0) { let a = this.mulberry32(this.slave.ID); // Seed based on slave @@ -1148,16 +1148,16 @@ class ClothingControl { braStrapOpacity() { let opa = [0, 0, 0]; let boobs = this.slave.boobs; - if ((boobs >= 300 && boobs < 400) || // Small - (boobs >= 600 && boobs <= 700) || // Medium_800 - (boobs > 1000 && boobs <= 1500) || // Medium_1500 - (boobs > 2500 && boobs <= 6500) || // Medium_7000 + if ((boobs >= 300 && boobs < 400) || // Small + (boobs >= 600 && boobs <= 700) || // Medium_800 + (boobs > 1000 && boobs <= 1500) || // Medium_1500 + (boobs > 2500 && boobs <= 6500) || // Medium_7000 (boobs >= 15000 && boobs < 25000)) { // Huge opa = [1, 0, 0]; // Use strap 1 - } else if ((boobs >= 500 && boobs < 600) || - (boobs >= 850 && boobs <= 1000) || - (boobs > 2000 && boobs <= 2500) || - (boobs >= 11000 && boobs < 15000) || + } else if ((boobs >= 500 && boobs < 600) || + (boobs >= 850 && boobs <= 1000) || + (boobs > 2000 && boobs <= 2500) || + (boobs >= 11000 && boobs < 15000) || (boobs >= 35000 )) { opa = [0, 0, 1]; // Use strap 3 } else { @@ -2633,7 +2633,7 @@ class RevampedArtControl { get buttLayer() { let result = []; let buttSize = 0; - if (!hasAnyLegs(this.artSlave) || !this.showButt) { + if (!hasAnyLegs(this.artSlave) || !this.showButt) { return result; } @@ -2952,7 +2952,7 @@ class RevampedArtControl { if (this.clothingControl.piecewiseClothing.shirt) { let sleeve = "Long"; if (this.clothingControl.piecewiseClothing.schoolgirlNormal || - this.clothingControl.piecewiseClothing.schoolgirlShort || + this.clothingControl.piecewiseClothing.schoolgirlShort || this.leftArmType === "" || this.rightArmType === "") { sleeve = "Short"; } @@ -3092,7 +3092,7 @@ class RevampedArtControl { } } if (this.clothingControl.piecewiseClothing.tshirt || - this.clothingControl.piecewiseClothing.niceMaid) { + this.clothingControl.piecewiseClothing.niceMaid) { if (this.bellyLevel === 0) { result.push(`Art_Vector_Revamp_Torso_Outfit_Tshirt_${this.torsoSize}`); } else { @@ -3762,7 +3762,7 @@ class RevampedArtControl { } /** Convert from coordinate system in the svg file to the graphic coordinate on page - * The y-axis in svg counts from the bottom up and in browser it is top down with a canvas height of 1000. + * The y-axis in svg counts from the bottom up and in browser it is top down with a canvas height of 1000. * @param {number[][]} M */ convertCoordinateSystem(M){ @@ -3787,7 +3787,7 @@ class RevampedArtControl { // IMPORTANT: The start x,y points must be inversible (three distinct points not all on a line) let M = [[start[0][0], start[0][1], 1], - [start[1][0], start[1][1], 1], + [start[1][0], start[1][1], 1], [start[2][0], start[2][1], 1]]; let Mi = this.matrix_invert(M); @@ -3799,7 +3799,7 @@ class RevampedArtControl { let d = Mi[1][0] * end[0][1] + Mi[1][1] * end[1][1] + Mi[1][2] * end[2][1]; let f = Mi[2][0] * end[0][1] + Mi[2][1] * end[1][1] + Mi[2][2] * end[2][1]; - let end_check = [[a*start[0][0] + c*start[0][1] + e, b*start[0][0] + d*start[0][1] + f], [a*start[1][0] + c*start[1][1] + e, b*start[1][0] + d*start[1][1] + f], [a*start[2][0] + c*start[2][1] + e, b*start[2][0] + d*start[2][1] + f]]; + let end_check = [[a*start[0][0] + c*start[0][1] + e, b*start[0][0] + d*start[0][1] + f], [a*start[1][0] + c*start[1][1] + e, b*start[1][0] + d*start[1][1] + f], [a*start[2][0] + c*start[2][1] + e, b*start[2][0] + d*start[2][1] + f]]; this[name] = `matrix(${a},${b},${c},${d},${e},${f})`; } diff --git a/src/art/webgl/art.js b/src/art/webgl/art.js index ce4f4041564..46af9e02073 100644 --- a/src/art/webgl/art.js +++ b/src/art/webgl/art.js @@ -667,7 +667,7 @@ App.Art.applySurfaces = function(slave, scene, p) { let cockSkin; let skin; - let O = App.Art.hexToRgb(skinColorCatcher(slave).skinColor); + let O = App.Art.hexToRgb(skinColorCatcher(slave).skinColor); let A = [207/255, 198/255, 195/255]; let B = [201/255, 157/255, 134/255]; @@ -1159,7 +1159,7 @@ App.Art.applyMaterials = function(slave, scene, p) { materials.push(["Sclera_Right", "Ka", [scleraColorRight[0]*0.8, scleraColorRight[1]*0.8, scleraColorRight[2]*0.8]]); // expected skin color - let O = App.Art.hexToRgb(skinColorCatcher(slave).skinColor); + let O = App.Art.hexToRgb(skinColorCatcher(slave).skinColor); // average color of skintone texture let A = [207/255, 198/255, 195/255]; diff --git a/src/art/webgl/engine.js b/src/art/webgl/engine.js index cd5f070e7e6..6e991a18a33 100644 --- a/src/art/webgl/engine.js +++ b/src/art/webgl/engine.js @@ -2,10 +2,10 @@ App.Art.Engine = class { getVsSourceGeometry() { - return `#version 300 es - uniform mat4 matModelViewProjection; - uniform mat4 matModelView; - uniform mat4 matModel; + return `#version 300 es + uniform mat4 matModelViewProjection; + uniform mat4 matModelView; + uniform mat4 matModel; uniform mat4 matNormal; in vec3 vertexNormal; @@ -29,7 +29,7 @@ App.Art.Engine = class { } getFsSourceGeometry() { - return `#version 300 es + return `#version 300 es precision highp float; layout(location = 0) out vec3 gPosition; @@ -55,20 +55,20 @@ App.Art.Engine = class { } getVsSourceQuad() { - return `#version 300 es + return `#version 300 es in vec2 vertexPosition; in vec2 textureCoordinate; out vec2 textureCoord; - void main() { + void main() { textureCoord = textureCoordinate; gl_Position = vec4(vertexPosition, 0.0, 1.0); - }`; + }`; } getFsSourceSSAO() { - return `#version 300 es + return `#version 300 es precision highp float; out float ao; @@ -120,7 +120,7 @@ App.Art.Engine = class { // range check & accumulate float rangeCheck = smoothstep(0.0, 1.0, radius / abs(pos.z - sampleDepth)); - occlusion += (sampleDepth <= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; + occlusion += (sampleDepth <= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; } occlusion = 1.0 - (occlusion / scale); @@ -129,7 +129,7 @@ App.Art.Engine = class { } getFsSourceSSAOBlur() { - return `#version 300 es + return `#version 300 es precision highp float; out float ao; @@ -156,67 +156,67 @@ App.Art.Engine = class { getFsSourceForwardPass(dl, pl) { return `#version 300 es - precision highp float; - - uniform float lightInt[${dl}]; - uniform vec3 lightColor[${dl}]; - uniform vec3 lightVect[${dl}]; - - uniform float pointLightInt[${pl}]; - uniform vec3 pointLightColor[${pl}]; - uniform vec3 pointLightPos[${pl}]; - - uniform float whiteM; - uniform float gammaY; + precision highp float; + + uniform float lightInt[${dl}]; + uniform vec3 lightColor[${dl}]; + uniform vec3 lightVect[${dl}]; + + uniform float pointLightInt[${pl}]; + uniform vec3 pointLightColor[${pl}]; + uniform vec3 pointLightPos[${pl}]; + + uniform float whiteM; + uniform float gammaY; uniform vec3 irradiance; uniform float ssaoInt; uniform float d; uniform vec3 Ka; - uniform vec3 Ks; + uniform vec3 Ks; uniform vec3 Ke; - uniform float Ni; + uniform float Ni; uniform float r; uniform float m; uniform float s; - uniform float sNormals; + uniform float sNormals; uniform float sSSAO; uniform float sAO; - uniform float sAmbient; - uniform float sAlbedo; - uniform float sSpecular; + uniform float sAmbient; + uniform float sAlbedo; + uniform float sSpecular; uniform float sEmission; - uniform float sAlpha; - uniform float sGamma; - uniform float sReinhard; - uniform float sNormal; + uniform float sAlpha; + uniform float sGamma; + uniform float sReinhard; + uniform float sNormal; uniform float sHDR; uniform float roughness; uniform float metallic; uniform vec3 fresnel; - - uniform vec3 cameraPos; + + uniform vec3 cameraPos; - uniform sampler2D textSampler[6]; + uniform sampler2D textSampler[6]; in vec2 textureCoord; in vec3 normal; - in vec3 pos; + in vec3 pos; - out vec4 outputColor; + out vec4 outputColor; const float PI = 3.14159265359; float distributionGGX(vec3 N, vec3 H, float roughness) { - float a = roughness*roughness; - float a2 = a*a; - float NdotH = max(dot(N, H), 0.0); + float a = roughness*roughness; + float a2 = a*a; + float NdotH = max(dot(N, H), 0.0); float NdotH2 = NdotH*NdotH; - float num = a2; + float num = a2; float denom = (NdotH2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; @@ -228,7 +228,7 @@ App.Art.Engine = class { float r = (roughness + 1.0); float k = (r*r) / 8.0; - float num = NdotV; + float num = NdotV; float denom = NdotV * (1.0 - k) + k; return num / denom; @@ -238,8 +238,8 @@ App.Art.Engine = class { { float NdotV = max(dot(N, V), 0.0); float NdotL = max(dot(N, L), 0.0); - float ggx2 = geometrySchlickGGX(NdotV, roughness); - float ggx1 = geometrySchlickGGX(NdotL, roughness); + float ggx2 = geometrySchlickGGX(NdotV, roughness); + float ggx1 = geometrySchlickGGX(NdotL, roughness); return ggx1 * ggx2; } @@ -261,41 +261,41 @@ App.Art.Engine = class { return mat3(tangent, bitangent, normal); } - void main() { + void main() { vec2 resolution = vec2(textureSize(textSampler[0], 0)); mat3 TBN = createTBNMatrix(pos, textureCoord, normal); - vec3 new_normal = normal; - vec3 map_Ka = vec3(0.0,0.0,0.0); - vec3 map_Ks = vec3(0.0,0.0,0.0); + vec3 new_normal = normal; + vec3 map_Ka = vec3(0.0,0.0,0.0); + vec3 map_Ks = vec3(0.0,0.0,0.0); vec3 map_Ke = vec3(0.0,0.0,0.0); - float map_d = 1.0; + float map_d = 1.0; float ao = 1.0; - if (sAlpha == 1.0) - map_d = d * texture(textSampler[1], textureCoord).r; + if (sAlpha == 1.0) + map_d = d * texture(textSampler[1], textureCoord).r; if (map_d < 0.05) discard; if (sNormal == 1.0) { - vec3 map_Kn = texture(textSampler[5], textureCoord).rgb *2.0-1.0; - if (map_Kn != vec3(-1.0,-1.0,-1.0)) + vec3 map_Kn = texture(textSampler[5], textureCoord).rgb *2.0-1.0; + if (map_Kn != vec3(-1.0,-1.0,-1.0)) new_normal = normalize(TBN * map_Kn); - } + } if (sSSAO == 1.0) ao = texture(textSampler[0], vec2(gl_FragCoord.x, gl_FragCoord.y) / resolution).r; if (sAlbedo == 1.0) - map_Ka = Ka * texture(textSampler[2], textureCoord).rgb; + map_Ka = Ka * texture(textSampler[2], textureCoord).rgb; - if (sSpecular == 1.0) - map_Ks = Ks * s * texture(textSampler[3], textureCoord).rgb; + if (sSpecular == 1.0) + map_Ks = Ks * s * texture(textSampler[3], textureCoord).rgb; if (sEmission == 1.0) - map_Ke = Ke * texture(textSampler[4], textureCoord).rgb; + map_Ke = Ke * texture(textSampler[4], textureCoord).rgb; // material parameters vec3 albedo = pow(map_Ka, vec3(2.2)); @@ -308,27 +308,27 @@ App.Art.Engine = class { // reflectance equation vec3 Lo = vec3(0.0); vec3 Le = map_Ke; - for (int i = 0; i < ${dl}; i++) { + for (int i = 0; i < ${dl}; i++) { if (lightInt[i] <= 0.0) continue; // calculate per-light radiance vec3 L = -lightVect[i]; vec3 H = normalize(V + L); - vec3 radiance = lightColor[i] * lightInt[i]; + vec3 radiance = lightColor[i] * lightInt[i]; // cook-torrance brdf - float NDF = distributionGGX(N, H, r); - float G = geometrySmith(N, V, L, r); - vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); + float NDF = distributionGGX(N, H, r); + float G = geometrySmith(N, V, L, r); + vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); - vec3 numerator = NDF * G * F; + vec3 numerator = NDF * G * F; float denominator = 4.0 * max(dot(N, V), 0.0) * max(dot(N, L), 0.0) + 0.00001; - vec3 specular = numerator / denominator; + vec3 specular = numerator / denominator; // kS is equal to Fresnel vec3 kD = vec3(1.0) - F; - kD *= 1.0 - m; + kD *= 1.0 - m; // add to outgoing radiance Lo float NdotL = max(dot(N, L), 0.0); @@ -342,20 +342,20 @@ App.Art.Engine = class { // calculate per-light radiance vec3 L = normalize(pointLightPos[i] - pos); vec3 H = normalize(V + L); - vec3 radiance = pointLightColor[i] * pointLightInt[i]; + vec3 radiance = pointLightColor[i] * pointLightInt[i]; // cook-torrance brdf - float NDF = distributionGGX(N, H, r); - float G = geometrySmith(N, V, L, r); - vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); + float NDF = distributionGGX(N, H, r); + float G = geometrySmith(N, V, L, r); + vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); - vec3 numerator = NDF * G * F; + vec3 numerator = NDF * G * F; float denominator = 4.0 * max(dot(N, V), 0.0) * max(dot(N, L), 0.0) + 0.00001; - vec3 specular = numerator / denominator; + vec3 specular = numerator / denominator; // kS is equal to Fresnel vec3 kD = vec3(1.0) - F; - kD *= 1.0 - m; + kD *= 1.0 - m; // add to outgoing radiance Lo float NdotL = max(dot(N, L), 0.0); @@ -374,23 +374,23 @@ App.Art.Engine = class { c = c * ao; if (sReinhard == 1.0) { - float l_old = 0.2126*c.r+0.7152*c.g+0.0722*c.b; - float numerator = l_old * (1.0 + (l_old / (whiteM*whiteM))); - float l_new = numerator / (1.0 + l_old); - c = c * (l_new / l_old); - } + float l_old = 0.2126*c.r+0.7152*c.g+0.0722*c.b; + float numerator = l_old * (1.0 + (l_old / (whiteM*whiteM))); + float l_new = numerator / (1.0 + l_old); + c = c * (l_new / l_old); + } if (sGamma == 1.0) - c = pow(c, vec3(1.0/gammaY)); + c = pow(c, vec3(1.0/gammaY)); - if (sNormals == 1.0) - c = new_normal; + if (sNormals == 1.0) + c = new_normal; if (sAO == 1.0) c = vec3(ao); - outputColor = vec4(c*map_d, map_d); - }`; + outputColor = vec4(c*map_d, map_d); + }`; } initBuffers(sceneData, dir) { @@ -1260,9 +1260,9 @@ App.Art.Engine = class { matrixMakeProjection(fov, aspect, near, far) { return [[aspect * (1/Math.tan(fov*0.5/180*Math.PI)), 0, 0, 0], - [0, (1/Math.tan(fov*0.5/180*Math.PI)), 0, 0], - [0, 0, far/(far-near), 1], - [0, 0, (-far*near)/(far-near), 0]]; + [0, (1/Math.tan(fov*0.5/180*Math.PI)), 0, 0], + [0, 0, far/(far-near), 1], + [0, 0, (-far*near)/(far-near), 0]]; } matrixPointAt(pos, target, up) { @@ -1272,9 +1272,9 @@ App.Art.Engine = class { let newRight = this.vectorCrossProduct(newUp, newForward); return [[newRight[0], newRight[1], newRight[2], 0], - [newUp[0], newUp[1], newUp[2], 0], - [newForward[0], newForward[1], newForward[2], 0], - [pos[0], pos[1], pos[2], 1]]; + [newUp[0], newUp[1], newUp[2], 0], + [newForward[0], newForward[1], newForward[2], 0], + [pos[0], pos[1], pos[2], 1]]; } matrixMakeRotation(xr, yr, zr) { @@ -1299,40 +1299,40 @@ App.Art.Engine = class { matrixMakeRotationY(r) { return [[Math.cos(r), 0, Math.sin(r)], - [0, 1, 0], - [-Math.sin(r), 0, Math.cos(r)]]; + [0, 1, 0], + [-Math.sin(r), 0, Math.cos(r)]]; } matrixMakeRotationZ(r) { return [[Math.cos(r), Math.sin(r), 0], - [-Math.sin(r), Math.cos(r), 0], - [0, 0, 1]]; + [-Math.sin(r), Math.cos(r), 0], + [0, 0, 1]]; } matrixMakeTranslation(x, y, z) { return [[1, 0, 0, 0], - [0, 1, 0, 0], - [0, 0, 1, 0], - [x, y, z, 1]]; + [0, 1, 0, 0], + [0, 0, 1, 0], + [x, y, z, 1]]; } matrixMakeScaling(s) { return [[s, 0, 0, 0], - [0, s, 0, 0], - [0, 0, s, 0], - [0, 0, 0, 1]]; + [0, s, 0, 0], + [0, 0, s, 0], + [0, 0, 0, 1]]; } matrixMulMatrix(m1, m2) { return [[m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0] + m1[0][2] * m2[2][0], - m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1] + m1[0][2] * m2[2][1], - m1[0][0] * m2[0][2] + m1[0][1] * m2[1][2] + m1[0][2] * m2[2][2]], - [m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0] + m1[1][2] * m2[2][0], - m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1] + m1[1][2] * m2[2][1], - m1[1][0] * m2[0][2] + m1[1][1] * m2[1][2] + m1[1][2] * m2[2][2]], - [m1[2][0] * m2[0][0] + m1[2][1] * m2[1][0] + m1[2][2] * m2[2][0], - m1[2][0] * m2[0][1] + m1[2][1] * m2[1][1] + m1[2][2] * m2[2][1], - m1[2][0] * m2[0][2] + m1[2][1] * m2[1][2] + m1[2][2] * m2[2][2]]]; + m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1] + m1[0][2] * m2[2][1], + m1[0][0] * m2[0][2] + m1[0][1] * m2[1][2] + m1[0][2] * m2[2][2]], + [m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0] + m1[1][2] * m2[2][0], + m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1] + m1[1][2] * m2[2][1], + m1[1][0] * m2[0][2] + m1[1][1] * m2[1][2] + m1[1][2] * m2[2][2]], + [m1[2][0] * m2[0][0] + m1[2][1] * m2[1][0] + m1[2][2] * m2[2][0], + m1[2][0] * m2[0][1] + m1[2][1] * m2[1][1] + m1[2][2] * m2[2][1], + m1[2][0] * m2[0][2] + m1[2][1] * m2[1][2] + m1[2][2] * m2[2][2]]]; } matrixMulMatrix4(m1, m2) { @@ -1340,15 +1340,15 @@ App.Art.Engine = class { m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1] + m1[0][2] * m2[2][1] + m1[0][3] * m2[3][1], m1[0][0] * m2[0][2] + m1[0][1] * m2[1][2] + m1[0][2] * m2[2][2] + m1[0][3] * m2[3][2], m1[0][0] * m2[0][3] + m1[0][1] * m2[1][3] + m1[0][2] * m2[2][3] + m1[0][3] * m2[3][3]], - [m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0] + m1[1][2] * m2[2][0] + m1[1][3] * m2[3][0], + [m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0] + m1[1][2] * m2[2][0] + m1[1][3] * m2[3][0], m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1] + m1[1][2] * m2[2][1] + m1[1][3] * m2[3][1], m1[1][0] * m2[0][2] + m1[1][1] * m2[1][2] + m1[1][2] * m2[2][2] + m1[1][3] * m2[3][2], m1[1][0] * m2[0][3] + m1[1][1] * m2[1][3] + m1[1][2] * m2[2][3] + m1[1][3] * m2[3][3]], - [m1[2][0] * m2[0][0] + m1[2][1] * m2[1][0] + m1[2][2] * m2[2][0] + m1[2][3] * m2[3][0], + [m1[2][0] * m2[0][0] + m1[2][1] * m2[1][0] + m1[2][2] * m2[2][0] + m1[2][3] * m2[3][0], m1[2][0] * m2[0][1] + m1[2][1] * m2[1][1] + m1[2][2] * m2[2][1] + m1[2][3] * m2[3][1], m1[2][0] * m2[0][2] + m1[2][1] * m2[1][2] + m1[2][2] * m2[2][2] + m1[2][3] * m2[3][2], m1[2][0] * m2[0][3] + m1[2][1] * m2[1][3] + m1[2][2] * m2[2][3] + m1[2][3] * m2[3][3]], - [m1[3][0] * m2[0][0] + m1[3][1] * m2[1][0] + m1[3][2] * m2[2][0] + m1[3][3] * m2[3][0], + [m1[3][0] * m2[0][0] + m1[3][1] * m2[1][0] + m1[3][2] * m2[2][0] + m1[3][3] * m2[3][0], m1[3][0] * m2[0][1] + m1[3][1] * m2[1][1] + m1[3][2] * m2[2][1] + m1[3][3] * m2[3][1], m1[3][0] * m2[0][2] + m1[3][1] * m2[1][2] + m1[3][2] * m2[2][2] + m1[3][3] * m2[3][2], m1[3][0] * m2[0][3] + m1[3][1] * m2[1][3] + m1[3][2] * m2[2][3] + m1[3][3] * m2[3][3]]]; @@ -1356,29 +1356,29 @@ App.Art.Engine = class { matrixMulVector(m, v) { return [v[0] * m[0][0] + v[1] * m[1][0] + v[2] * m[2][0], - v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1], - v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2]]; + v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1], + v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2]]; } matrixInverse(m) { return [[m[0][0], m[1][0], m[2][0], 0], - [m[0][1], m[1][1], m[2][1], 0], - [m[0][2], m[1][2], m[2][2], 0], - [-(m[3][0]*m[0][0]+m[3][1]*m[0][1]+m[3][2]*m[0][2]), -(m[3][0]*m[1][0]+m[3][1]*m[1][1]+m[3][2]*m[1][2]), -(m[3][0]*m[2][0]+m[3][1]*m[2][1]+m[3][2]*m[2][2]), 1]]; + [m[0][1], m[1][1], m[2][1], 0], + [m[0][2], m[1][2], m[2][2], 0], + [-(m[3][0]*m[0][0]+m[3][1]*m[0][1]+m[3][2]*m[0][2]), -(m[3][0]*m[1][0]+m[3][1]*m[1][1]+m[3][2]*m[1][2]), -(m[3][0]*m[2][0]+m[3][1]*m[2][1]+m[3][2]*m[2][2]), 1]]; } matrixTranspose(m) { return [[m[0][0], m[1][0], m[2][0], m[3][0]], - [m[0][1], m[1][1], m[2][1], m[3][1]], - [m[0][2], m[1][2], m[2][2], m[3][2]], - [m[0][3], m[1][3], m[2][3], m[3][3]]]; + [m[0][1], m[1][1], m[2][1], m[3][1]], + [m[0][2], m[1][2], m[2][2], m[3][2]], + [m[0][3], m[1][3], m[2][3], m[3][3]]]; } matrixFlatten(m) { return [m[0][0], m[0][1], m[0][2], m[0][3], - m[1][0], m[1][1], m[1][2], m[1][3], - m[2][0], m[2][1], m[2][2], m[2][3], - m[3][0], m[3][1], m[3][2], m[3][3]]; + m[1][0], m[1][1], m[1][2], m[1][3], + m[2][0], m[2][1], m[2][2], m[2][3], + m[3][0], m[3][1], m[3][2], m[3][3]]; } lerp(a, b, f) { diff --git a/src/art/webgl/ui.js b/src/art/webgl/ui.js index 1397baaa1f4..a71807d4eb6 100644 --- a/src/art/webgl/ui.js +++ b/src/art/webgl/ui.js @@ -288,7 +288,7 @@ App.Art.AutoFrame = function(view, slaveHeight, cameraHeight, offset) { if (a > Math.PI/2) { h = n/((-(r + 1) - ((r+1)**2 + 4*r*Math.tan(a)**2)**(1/2))/(2*Math.tan(a)*r)); // take negative discriminant } else { - h = n/((-(r + 1) + ((r+1)**2 + 4*r*Math.tan(a)**2)**(1/2))/(2*Math.tan(a)*r)); // take positive discriminant + h = n/((-(r + 1) + ((r+1)**2 + 4*r*Math.tan(a)**2)**(1/2))/(2*Math.tan(a)*r)); // take positive discriminant } } else { h = (m+n)/2 * Math.sin(Math.acos(((m+n)/2-n)/((m+n)/2))); // edge case diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index 9de73c1b1f5..2a9b789da72 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -2432,13 +2432,13 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() { if (set.piercing === undefined) { set.piercing = new App.Entity.completePiercingState(); for (const piercing of Object.keys(App.Data.Piercings)) { - const oldPiercing = `${oldPiercings.get(piercing) || piercing}Piercing`; // the old variable names were sometimes plural and sometimes singular. The new standard is to use singular when possible. + const oldPiercing = `${oldPiercings.get(piercing) || piercing}Piercing`; // the old variable names were sometimes plural and sometimes singular. The new standard is to use singular when possible. set.piercing[piercing].desc = null; if (piercing === "gentials" && set.piercing[piercing].smart === undefined) { set.piercing[piercing].smart = null; } if (set.hasOwnProperty(oldPiercing)) { - if (set[oldPiercing] === 3) { // 3 used to indicate a smart piercing. We now track this on a separate property as a bool. + if (set[oldPiercing] === 3) { // 3 used to indicate a smart piercing. We now track this on a separate property as a bool. set.piercing[piercing].weight = 2; set.piercing[piercing].smart = true; } else { @@ -2667,12 +2667,12 @@ App.Update.slavePiercingsDatatypeCleanup = function(slave) { ]); for (const piercing in App.Data.Piercings) { slave.piercing[piercing] = slave.piercing[piercing] || new App.Entity.piercingState(); - const oldPiercing = `${oldPiercings.get(piercing) || piercing}Piercing`; // the old variable names were sometimes plural and sometimes singular. The new standard is to use singular when possible. + const oldPiercing = `${oldPiercings.get(piercing) || piercing}Piercing`; // the old variable names were sometimes plural and sometimes singular. The new standard is to use singular when possible. if (App.Data.Piercings[piercing].smart) { slave.piercing[piercing].smart = slave.piercing[piercing].smart || false; } if (slave.hasOwnProperty(oldPiercing)) { - if (slave[oldPiercing] === 3) { // 3 used to indicate a smart piercing. We now track this on a separate property as a bool. + if (slave[oldPiercing] === 3) { // 3 used to indicate a smart piercing. We now track this on a separate property as a bool. slave.piercing[piercing].weight = 2; slave.piercing[piercing].smart = true; } else if (slave[oldPiercing]) { diff --git a/src/endWeek/events/expire.js b/src/endWeek/events/expire.js index e9ac09b1c20..cdcb4170ff4 100644 --- a/src/endWeek/events/expire.js +++ b/src/endWeek/events/expire.js @@ -3,7 +3,7 @@ App.Events.SEExpiration = class SEExpiration extends App.Events.BaseEvent { super(actors, params); } - /** Custom casting: all expiring slaves are cast automatically. if no slaves are cast, casting fails and the event does not run. */ + /** Custom casting: all expiring slaves are cast automatically. If no slaves are cast, casting fails and the event does not run. */ castActors() { this.actors = V.slaves.filter(s => s.indenture === 0).map(s => s.ID); return this.actors.length > 0; diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js index 38cd772da96..87e270578af 100644 --- a/src/endWeek/healthFunctions.js +++ b/src/endWeek/healthFunctions.js @@ -742,7 +742,7 @@ globalThis.tired = function(slave) { } } - tiredChange = livingRules + assignment + restRules + reward + punishment; // + muscles + health + tiredChange = livingRules + assignment + restRules + reward + punishment; // + muscles + health H.tired += tiredChange; // HG special cases diff --git a/src/endWeek/saRecruitGirls.js b/src/endWeek/saRecruitGirls.js index 77b105fd9b5..df74829d537 100644 --- a/src/endWeek/saRecruitGirls.js +++ b/src/endWeek/saRecruitGirls.js @@ -932,9 +932,10 @@ App.SlaveAssignment.recruitGirls = (function() { r.push(`${He} uses ${his} extra time and <span class="cash">recruitment allowance</span> this week to tour the arcology and post to your household's social media accounts more actively than usual, <span class="reputation inc">building up your reputation.</span>`); - /** Conditional push: - * if V.showEWM is set, is a function that pushes the arguments into r - * otherwise is a function that just silently consumes the arguments + /** + * Conditional push: + * if V.showEWM is set, is a function that pushes the arguments into r + * otherwise is a function that just silently consumes the arguments * @type {function(...string): void} */ const pushEWM = V.showEWM === 1 ? (...str) => r.push(...str) : () => {}; diff --git a/src/endWeek/saRelationships.js b/src/endWeek/saRelationships.js index 5fcab058fc1..706cd45fcf9 100644 --- a/src/endWeek/saRelationships.js +++ b/src/endWeek/saRelationships.js @@ -710,7 +710,7 @@ App.SlaveAssignment.relationships = (function() { slave.relationship++; friend.relationship = slave.relationship; } else if (V.seeIncest === 1 && slave.behavioralQuirk === "sinful" && areRelated(slave, friend) && random(1, 100) > (80 - seed)) { - r.push(`Aroused by the chance to commit the sin of incest, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); + r.push(`Aroused by the chance to commit the sin of incest, ${slave.slaveName} successfully seduces ${his} ${relativeTerm(slave, friend)}, ${friend.slaveName}, making them <span class="relationship">friends with benefits.</span>`); slave.relationship++; friend.relationship = slave.relationship; } else if (slave.energy > 95 && random(1, 100) > (80 - seed)) { @@ -1191,7 +1191,7 @@ App.SlaveAssignment.relationships = (function() { */ function familyFeelings(slave) { /** @param {Map<string, Array<App.Entity.SlaveState>>} map - * @param {App.Entity.SlaveState} relative */ + * @param {App.Entity.SlaveState} relative */ function addToRelativeMap(map, relative) { const terms = relativeTerms(slave, relative); for (const term of terms) { @@ -1204,7 +1204,7 @@ App.SlaveAssignment.relationships = (function() { } /** @param {Map<string, Array<App.Entity.SlaveState>>} map - * @returns {Array<string>} */ + * @returns {Array<string>} */ function relativeMapToGroupArray(map) { let groups = []; for (const [type, people] of map) { @@ -1218,7 +1218,7 @@ App.SlaveAssignment.relationships = (function() { } /** @param {Map<string, Array<App.Entity.SlaveState>>} map - * @returns {App.Entity.SlaveState} */ + * @returns {App.Entity.SlaveState} */ function singleRelativeInMap(map) { if (map.size !== 1) { return null; @@ -1232,7 +1232,7 @@ App.SlaveAssignment.relationships = (function() { } /** @param {Map<string, Array<App.Entity.SlaveState>>} map - * @returns {number} */ + * @returns {number} */ function relativeMapTotalSize(map) { let size = 0; for (const people of map.values()) { diff --git a/src/events/PE/UnderageConcubine.js b/src/events/PE/UnderageConcubine.js index 5bb78c2d7db..e6d8cbc45bf 100644 --- a/src/events/PE/UnderageConcubine.js +++ b/src/events/PE/UnderageConcubine.js @@ -70,7 +70,7 @@ App.Events.PEUnderageConcubine = class PEUnderageConcubine extends App.Events.Ba t.push(`Your days of caring what the Old World has to say are long over. You tell both ${V.assistant.name} and ${concubine.slaveName} to ignore the fuss and go back to what they were doing as you reach over to play with ${concubine.slaveName}'s pretty ${num(concubine.actualAge)}-year-old ${concubine.toyHole === "all her holes" ? "body" : concubine.toyHole}.`); App.Events.addParagraph(frag, t); - // doesn't matter, huh? let's see about that... + // doesn't matter, huh? let's see about that... const matureArc = arcologyGoesMature(); if (matureArc) { t = []; diff --git a/src/events/RE/REBusyArcade.js b/src/events/RE/REBusyArcade.js index c31d8976ab2..b6d3f161126 100644 --- a/src/events/RE/REBusyArcade.js +++ b/src/events/RE/REBusyArcade.js @@ -8,7 +8,7 @@ App.Events.REBusyArcade = class REBusyArcade extends App.Events.BaseEvent { actorPrerequisites() { return [ [ - s => s.assignment === Job.ARCADE, + s => s.assignment === Job.ARCADE, s => s.fetish !== "mindbroken", s => canMove(s) || hasAnyLegs(s), s => s.devotion < 45 diff --git a/src/events/RE/reHGReplacement.js b/src/events/RE/reHGReplacement.js index 36206079b79..165546496da 100644 --- a/src/events/RE/reHGReplacement.js +++ b/src/events/RE/reHGReplacement.js @@ -90,7 +90,7 @@ App.Events.REHGReplacement = class REHGReplacement extends App.Events.BaseEvent let r = []; r.push(`After giving the matter some consideration, you agree, instructing ${V.assistant.name} that ${slave.slaveName} is now the Head Girl. ${slave.slaveName} is <span class="devotion inc">overjoyed,</span> and bounces to ${his} feet, clearly very eager to begin. You caution ${him} that ${he} is not to undermine ${S.HeadGirl.slaveName} by letting anyone know why you decided to change Head Girls. ${He} nods obediently. As far as ${S.HeadGirl.slaveName} knows, it's just a standard change of Head Girls, and ${he2}'s too good a slave to let it affect ${him2} seriously.`); slave.devotion += 5; - assignJob(slave, Job.HEADGIRL); // should we be removing the old HG here? + assignJob(slave, Job.HEADGIRL); // should we be removing the old HG here? App.Events.addParagraph(frag, r); return frag; } diff --git a/src/events/RE/reSiblingPlease.js b/src/events/RE/reSiblingPlease.js index c7434d2fb41..725f549d0ee 100644 --- a/src/events/RE/reSiblingPlease.js +++ b/src/events/RE/reSiblingPlease.js @@ -246,7 +246,7 @@ App.Events.RESiblingPlease = class RESiblingPlease extends App.Events.BaseEvent fuckMom(t, disobedient); if (mom.preg === -1) { - t.push(`You know it probably won't take today, but you've already ordered ${V.assistant.name} to discontinue ${his2} contraceptive regimen, and you'll be repeating this ritual all week. ${He2}'s <span class="pregnant">bound to end up pregnant.</span>`); + t.push(`You know it probably won't take today, but you've already ordered ${V.assistant.name} to discontinue ${his2} contraceptive regimen, and you'll be repeating this ritual all week. ${He2}'s <span class="pregnant">bound to end up pregnant.</span>`); } else { t.push(`You won't know if it's taken right away, but you'll be repeating this ritual all week, so ${he2}'s <span class="pregnant">going to end up pregnant.</span>`); } @@ -288,7 +288,7 @@ App.Events.RESiblingPlease = class RESiblingPlease extends App.Events.BaseEvent fuckDau(t); if (dau.preg === -1) { - t.push(`You know it probably won't take today, but you've already ordered ${V.assistant.name} to discontinue ${his} contraceptive regimen, and you'll be repeating this ritual all week. ${He}'s <span class="pregnant">bound to end up pregnant.</span>`); + t.push(`You know it probably won't take today, but you've already ordered ${V.assistant.name} to discontinue ${his} contraceptive regimen, and you'll be repeating this ritual all week. ${He}'s <span class="pregnant">bound to end up pregnant.</span>`); } else { t.push(`You won't know if it's taken right away, but you'll be repeating this ritual all week, so ${he}'s <span class="pregnant">going to end up pregnant.</span>`); } diff --git a/src/events/RESS/forbiddenMasturbation.js b/src/events/RESS/forbiddenMasturbation.js index b3f7125d1ad..efa67ac905e 100644 --- a/src/events/RESS/forbiddenMasturbation.js +++ b/src/events/RESS/forbiddenMasturbation.js @@ -218,7 +218,7 @@ App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends A } if (responses.length > 1) { - responses.splice(1, 0, new App.Events.Result(null, null, `Punish ${him}, but then let ${him} get off:`)); // Hack for providing a headline to certain responses + responses.splice(1, 0, new App.Events.Result(null, null, `Punish ${him}, but then let ${him} get off:`)); // Hack for providing a headline to certain responses } App.Events.addResponses(node, responses); diff --git a/src/events/RESS/milkgasm.js b/src/events/RESS/milkgasm.js index 74d38d302d4..1af30b58a03 100644 --- a/src/events/RESS/milkgasm.js +++ b/src/events/RESS/milkgasm.js @@ -289,7 +289,7 @@ App.Events.RESSMilkgasm = class RESSMilkgasm extends App.Events.BaseEvent { } else { r.push(`finger into each nipple.`); } - r.push(`The ${canTalk(eventSlave) ? "shrieking" : "whining"} reaches a paroxysm, but once they're`); + r.push(`The ${canTalk(eventSlave) ? "shrieking" : "whining"} reaches a paroxysm, but once they're`); if (eventSlave.nipples !== "fuckable") { r.push(`protruded,`); } else { diff --git a/src/events/RESS/scrubbing.js b/src/events/RESS/scrubbing.js index 4abb0033e3e..dc56c339065 100644 --- a/src/events/RESS/scrubbing.js +++ b/src/events/RESS/scrubbing.js @@ -143,10 +143,10 @@ App.Events.RESSScrubbing = class RESSScrubbing extends App.Events.BaseEvent { App.Events.addParagraph(node, r); App.Events.addResponses(node, [ canDoAnal(eventSlave) - ? new App.Events.Result(`Use ${his} butt to help ${him} scrub`, scrub, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null) + ? new App.Events.Result(`Use ${his} butt to help ${him} scrub`, scrub, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null) : new App.Events.Result(), canDoVaginal(eventSlave) - ? new App.Events.Result(`Avail yourself to ${his} pussy`, pussy, eventSlave.vagina === 0 ? `This option will take ${his} virginity` : null) + ? new App.Events.Result(`Avail yourself to ${his} pussy`, pussy, eventSlave.vagina === 0 ? `This option will take ${his} virginity` : null) : new App.Events.Result(), canDoAnal(eventSlave) || canDoVaginal(eventSlave) ? new App.Events.Result(`Give ${him} a bigger mess to deal with`, mess, virginityWarning()) diff --git a/src/events/assistant/assistantBody.js b/src/events/assistant/assistantBody.js index 0a368690af5..2756572aa6f 100644 --- a/src/events/assistant/assistantBody.js +++ b/src/events/assistant/assistantBody.js @@ -12,7 +12,7 @@ App.Events.assistantBody = class assistantBody extends App.Events.BaseEvent { execute(node) { const { HeA, - heA, hisA, himA, himselfA + heA, hisA, himA, himselfA } = getPronouns(assistant.pronouns().main).appendSuffix("A"); let r = []; App.Events.drawEventArt(node, "assistant"); diff --git a/src/events/eventUtils.js b/src/events/eventUtils.js index 234f52e8a02..5733300cfe7 100644 --- a/src/events/eventUtils.js +++ b/src/events/eventUtils.js @@ -1,4 +1,4 @@ -/** @typedef {App.Entity.SlaveState|"assistant"} EventArtObject */ +/** @typedef {App.Entity.SlaveState|"assistant"} EventArtObject */ App.Events.drawEventArt = (function() { const validSingleOutfits = Array.from(App.Data.clothes.keys()); @@ -7,7 +7,7 @@ App.Events.drawEventArt = (function() { * @param {Node} node - DOM node to attach art to * @param {EventArtObject|EventArtObject[]} slaves - one or several objects (slave object or "assistant") to draw art for * @param {FC.Clothes|FC.Clothes[]} [clothesMode] - if the slaves' clothing should be overridden, what should they be wearing? - * @param {object|object[]} [extraClothes] - if other parts of the slaves' clothing should be overridden, what should they be wearing? For slave.vaginalAccessory, use [{"vaginalAccessory": "dildo"}] + * @param {object|object[]} [extraClothes] - if other parts of the slaves' clothing should be overridden, what should they be wearing? For slave.vaginalAccessory, use [{"vaginalAccessory": "dildo"}] */ function draw(node, slaves, clothesMode, extraClothes) { // do nothing if the player doesn't want images @@ -121,7 +121,7 @@ App.Events.drawEventArt = (function() { /** Refresh previously drawn event art with new slaves or clothing * @param {EventArtObject|EventArtObject[]} slaves - one or several objects (slave object or "assistant") to draw art for * @param {FC.Clothes|FC.Clothes[]} [clothesMode] - if the slaves' clothing should be overridden, what should they be wearing? - * @param {object|object[]} [extraClothes] - if other parts of the slaves' clothing should be overridden, what should they be wearing? For slave.vaginalAccessory, use [{"vaginalAccessory": "dildo"}] + * @param {object|object[]} [extraClothes] - if other parts of the slaves' clothing should be overridden, what should they be wearing? For slave.vaginalAccessory, use [{"vaginalAccessory": "dildo"}] */ App.Events.refreshEventArt = function(slaves, clothesMode, extraClothes) { // do nothing if the player doesn't want images @@ -411,8 +411,8 @@ App.Events.qualifiesForREFIsubSlave = function(slave, fetish) { return slave.fetishKnown === 1 && slave.fetishStrength > 95 && isSlaveAvailable(slave) && slave.fetish === fetish; }; -/** Queue an event for scheduled execution on a later week. Queued events are executed automatically at the end of Nonrandom Event on the chosen week. - * @param {number} weeks - the number of weeks to wait before executing the event. 0 means execute this week, 1 execute next week, etc. Note that events generally cannot safely queue other events for the same week; they should always pass 1 or more in this parameter. Other parts of the game (Slave Interact, etc) can safely queue events for this week (i.e. the upcoming End Week cycle) by passing 0. +/** Queue an event for scheduled execution on a later week. Queued events are executed automatically at the end of Nonrandom Event on the chosen week. + * @param {number} weeks - the number of weeks to wait before executing the event. 0 means execute this week, 1 execute next week, etc. Note that events generally cannot safely queue other events for the same week; they should always pass 1 or more in this parameter. Other parts of the game (Slave Interact, etc) can safely queue events for this week (i.e. the upcoming End Week cycle) by passing 0. * @param {App.Events.BaseEvent} event - the event to execute. note that this event is serialized normally, so changes to the class name or parameter structure will break the event in saved games! * @param {Object} [params] - any parameters to serialize with the event. when the event executes, these will be accessible in "this.params". */ diff --git a/src/events/nonRandom/daughters/pCollaborationChoice.js b/src/events/nonRandom/daughters/pCollaborationChoice.js index 70dd262e81f..d37a2800f96 100644 --- a/src/events/nonRandom/daughters/pCollaborationChoice.js +++ b/src/events/nonRandom/daughters/pCollaborationChoice.js @@ -134,7 +134,7 @@ App.Events.PCoupCollaborationChoice = class PCoupCollaborationChoice extends App function transmit() { const frag = new DocumentFragment(); let r = []; - if (V.traitor === 0) { // for typing. Why the fuck do I have to do this for a nested function. + if (V.traitor === 0) { // for typing. Why the fuck do I have to do this for a nested function. return node; } r.push(`You transmit the access codes to your security systems.`); diff --git a/src/events/nonRandom/mercs/pSlaveMedic.js b/src/events/nonRandom/mercs/pSlaveMedic.js index df9b358e90d..b09ccbd0834 100644 --- a/src/events/nonRandom/mercs/pSlaveMedic.js +++ b/src/events/nonRandom/mercs/pSlaveMedic.js @@ -98,7 +98,7 @@ App.Events.PSlaveMedic = class PSlaveMedic extends App.Events.BaseEvent { } else { r.push(`main living area,`); } - r.push(`you see ${slave.slaveName} bending over a mercenary with most of his armor stripped off. ${He}'s the ${aNational(slave.nationality)} nurse they captured and enslaved, and ${he} seems to be doing pretty well in ${his} new life. ${He} seems to be checking the sutures on a minor wound to the man's flank. "Don't squirm," ${he} says quietly. "I'll get you off when I've checked this." He chuckles and holds still; ${he} redresses the wound, stands up, and strips off ${his} fatigue pants.`); + r.push(`you see ${slave.slaveName} bending over a mercenary with most of his armor stripped off. ${He}'s the ${aNational(slave.nationality)} nurse they captured and enslaved, and ${he} seems to be doing pretty well in ${his} new life. ${He} seems to be checking the sutures on a minor wound to the man's flank. "Don't squirm," ${he} says quietly. "I'll get you off when I've checked this." He chuckles and holds still; ${he} redresses the wound, stands up, and strips off ${his} fatigue pants.`); if (V.pedo_mode === 1) { r.push(`${He}'s quite youthful, nimble and knows just how to manage ${his} impressive asset without it touching ${his} charge.`); } else { @@ -115,7 +115,7 @@ App.Events.PSlaveMedic = class PSlaveMedic extends App.Events.BaseEvent { if (V.cash > lowBid) { choices.push(new App.Events.Result(`Offer ${cashFormat(lowBid)} for ${him}`, offerLow)); if (V.cash > highBid) { - choices.push(new App.Events.Result(`Offer a very generous ${cashFormat(highBid)} for ${him}`, offerHigh)); + choices.push(new App.Events.Result(`Offer a very generous ${cashFormat(highBid)} for ${him}`, offerHigh)); } else { choices.push(new App.Events.Result(null, null, `Cannot afford even a generous bid of ${cashFormat(highBid)}`)); } diff --git a/src/events/nonRandom/pAbducted.js b/src/events/nonRandom/pAbducted.js index 3e9d042b21e..52e1c770328 100644 --- a/src/events/nonRandom/pAbducted.js +++ b/src/events/nonRandom/pAbducted.js @@ -113,7 +113,7 @@ App.Events.pAbducted = class pAbducted extends App.Events.BaseEvent { App.Events.addParagraph(node, r); r = []; - r.push(`Once the realization strikes that you've gone missing, your arcology descends into lawlessness as the less than reputable clash to see who can seize control of building, at least until a new owner arrives to clean them out. An indeterminate amount of time later, a slave that looks a lot like the lost owner of ${V.arcologies[0].name} is seen; who's to say if it is you, or somebody else though? The story of your new life may be worth telling, but it must be told elsewhere.`); + r.push(`Once the realization strikes that you've gone missing, your arcology descends into lawlessness as the less than reputable clash to see who can seize control of building, at least until a new owner arrives to clean them out. An indeterminate amount of time later, a slave that looks a lot like the lost owner of ${V.arcologies[0].name} is seen; who's to say if it is you, or somebody else though? The story of your new life may be worth telling, but it must be told elsewhere.`); App.Events.addParagraph(node, r); App.Events.addParagraph(node, ["<span class='bold'>GAME OVER</span>"]); diff --git a/src/events/nonRandom/rival/pRivalryHostage.js b/src/events/nonRandom/rival/pRivalryHostage.js index 8680757cda4..96768bcce2d 100644 --- a/src/events/nonRandom/rival/pRivalryHostage.js +++ b/src/events/nonRandom/rival/pRivalryHostage.js @@ -10,8 +10,8 @@ App.Events.pRivalryHostage = function() { switch (V.rivalryFS) { case "Maturity Preferentialism": case "Petite Admiration": - case "Statuesque Glorification": - case "Youth Preferentialism": + case "Statuesque Glorification": + case "Youth Preferentialism": V.hostageWife = GenerateNewSlave("XX"); } diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index c57ddb8cc01..6b593264017 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -206,7 +206,7 @@ App.Events.getIndividualEvents = function() { }; /** get a list of possible nonindividual events - * Note: recruitment events should NOT be added to this list; they go in getNonindividualRecruitmentEvents instead. + * Note: recruitment events should NOT be added to this list; they go in getNonindividualRecruitmentEvents instead. * @returns {Array<App.Events.BaseEvent>} */ App.Events.getNonindividualEvents = function() { @@ -333,7 +333,7 @@ App.Events.getNonindividualEvents = function() { }; /** get a list of possible nonindividual recruitment events - * The probability of selecting recruitment events is capped, to allow the above events to trigger more frequently + * The probability of selecting recruitment events is capped, to allow the above events to trigger more frequently * @returns {Array<App.Events.BaseEvent>} */ App.Events.getNonindividualRecruitmentEvents = function() { @@ -488,7 +488,7 @@ App.Events.playRandomIndividualEvent = function() { // pick a slave for a random individual event const eventSlave = eligibleSlaves.random(); - // pick a random individual event for that slave. Use RE No Event if there are none she's eligible for. + // pick a random individual event for that slave. Use RE No Event if there are none she's eligible for. const events = App.Events.getValidEvents(App.Events.getIndividualEvents(), eventSlave); const event = events.random() || makeNoEvent(eventSlave.ID); @@ -531,7 +531,7 @@ App.Events.playRandomNonindividualEvent = function() { App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Skip week-end events", "Next Week")); d.append(App.Events.renderEventDebugger("Random Nonindividual Event")); } else { - // pick a random nonindividual event. there should always be at least one. + // pick a random nonindividual event. there should always be at least one. const maxRecruitNumber = Math.min(10, Math.floor(nonRecEvents.length/4) + 1); if (recEvents.length > maxRecruitNumber) { recEvents = recEvents.pluckMany(maxRecruitNumber); diff --git a/src/events/scheduled/burst/burst.js b/src/events/scheduled/burst/burst.js index 5bd6efbc5d2..fc7de3835ca 100644 --- a/src/events/scheduled/burst/burst.js +++ b/src/events/scheduled/burst/burst.js @@ -3,7 +3,7 @@ App.Events.SEBurst = class SEBurst extends App.Events.BaseEvent { super(actors, params); } - /** Custom casting: all bursting slaves are cast automatically. if no slaves are cast, casting fails and the event does not run. */ + /** Custom casting: all bursting slaves are cast automatically. If no slaves are cast, casting fails and the event does not run. */ castActors() { this.actors = V.slaves.filter(s => burstCheck(s)).map(s => s.ID); return this.actors.length > 0; diff --git a/src/events/scheduled/pitFightLethal.js b/src/events/scheduled/pitFightLethal.js index b678b0a4bd9..c2fe9ef8b33 100644 --- a/src/events/scheduled/pitFightLethal.js +++ b/src/events/scheduled/pitFightLethal.js @@ -105,8 +105,8 @@ App.Facilities.Pit.lethalFight = function(fighters) { } /** - * @param {DocumentFragment} parent - * @param {App.Entity.SlaveState} fighter + * @param {DocumentFragment} parent + * @param {App.Entity.SlaveState} fighter */ function fighterDeadliness(parent, fighter) { const {he, his, him, himself, He, His} = getPronouns(fighter); diff --git a/src/events/scheduled/pitFightNonlethal.js b/src/events/scheduled/pitFightNonlethal.js index b63543361bc..7e670108ef5 100644 --- a/src/events/scheduled/pitFightNonlethal.js +++ b/src/events/scheduled/pitFightNonlethal.js @@ -147,8 +147,8 @@ App.Facilities.Pit.nonlethalFight = function(fighters) { } /** - * @param {DocumentFragment} parent - * @param {App.Entity.SlaveState} fighter + * @param {DocumentFragment} parent + * @param {App.Entity.SlaveState} fighter */ function fighterDeadliness(parent, fighter) { const {he, his, him, himself, He, His} = getPronouns(fighter); diff --git a/src/events/scheduled/sePCBirthday.desc.js b/src/events/scheduled/sePCBirthday.desc.js index 1edaa99dba7..0b1d37efcd4 100644 --- a/src/events/scheduled/sePCBirthday.desc.js +++ b/src/events/scheduled/sePCBirthday.desc.js @@ -541,7 +541,7 @@ App.Events.pcBirthday.Desc = (function(bday) { The moans become audible, starting from a soft whimper and growing into a desperate cry for release. ${pn.She}'s working ${pn.his} hips with fierce urgency. ${pn.She}'ll be damned if ${pn.she} gets off without milking your dick for every fucking drop of cum that is ready to burst the dam. ${pn.She} won't let go now; ${pn.his} limbs have such a vice grip on your pounding body that you'd have little chance to shake loose even if you wanted. The - ${pn.girl} is wild. And hungry. And intense. And writhing. And – + ${pn.girl} is wild. And hungry. And intense. And writhing. And – </p> <p> Brought to a crescendo, you release inside of ${pn.her}. An animalistic growl escapes ${pn.his} lips. ${pn.She} trembles underneath you, a series of @@ -595,7 +595,7 @@ App.Events.pcBirthday.Desc = (function(bday) { now, ${pn.his} pussy is planted firmly against yours, the direct mingling of your wetness sealing the kiss of your private lips. ${data.planner.slave.slaveName} bucks ${pn.his} hips and presses firmly down into you and the cadence quickly returns. ${pn.His} hands absently grope and caress your body. ${pn.His} thrusts drive harder into you but the sticky friction of ${pn.his} groin against your clitoris never lets up. The ${pn.girl} - is wild. And hungry. And intense. And writhing. And – + is wild. And hungry. And intense. And writhing. And – </p> <p> Brought to a crescendo, you come spastically against each other. An animalistic growl escapes ${pn.his} lips. ${pn.She} trembles between your legs, a @@ -648,7 +648,7 @@ App.Events.pcBirthday.Desc = (function(bday) { urgency. ${pn.She}'ll be damned if ${pn.she} gets off without milking your dick for every fucking drop of cum that is ready to burst the dam. ${pn.His} hips buck just as insatiably as yours. ${pn.She} releases your buttock only to reach down and pull your thigh over ${pn.his} hip. ${pn.She} rolls forward enough to give you more leverage into ${pn.his} devouring asshole. ${pn.She} arches ${pn.his} back and begs you to pump ${pn.her} harder. The ${pn.girl} is - wild. And hungry. And intense. And writhing. And – + wild. And hungry. And intense. And writhing. And – </p> <p> Brought to a crescendo, you release inside of ${pn.her} and ${pn.she} onto the cotton sheets. An animalistic growl escapes ${pn.his} lips. ${pn.She} @@ -695,7 +695,7 @@ App.Events.pcBirthday.Desc = (function(bday) { The moans become audible, starting from a soft whimper and growing into a desperate cry for release. ${pn.She}'s working ${pn.his} hips with fierce urgency. ${pn.She}'ll be damned if ${pn.she} gets off without working ${pn.his} engorged tool against every sensitive spot inside you. You won't let go now; your limbs have such a vice grip on ${pn.his} pounding body that ${pn.she}'d have little chance to shake loose even if ${pn.she} wanted. The ${pn.girl} is wild. And hungry. And - intense. And writhing. And – + intense. And writhing. And – </p> <p> Brought to a crescendo, ${pn.she} releases inside of you. An animalistic growl escapes ${pn.his} lips. ${pn.She} trembles above you, a series of shockwaves and @@ -854,7 +854,7 @@ App.Events.pcBirthday.Desc = (function(bday) { like a pommel horse; her face stops before yours just long enough to plant a finalé kiss on your cheek, and she disappears somewhere behind you. </p> <p> - As her body launched out of sight, however, another two bodies were waiting at your feet. Or – you begin to wonder if it is actually two, or + As her body launched out of sight, however, another two bodies were waiting at your feet. Or – you begin to wonder if it is actually two, or if your vision is doubling from a random pill you pulled off a tray and the mystical atmosphere provided by the fog. But no, it's soon clear that it's two redhead twins who had been warming each other up to prepare themselves for you. In stark and provocative contrast to the athlete before them, these girls slide upon you with full, soft bodies. They kiss your nipples, your collarbone, your cheeks, and finally share your tongue @@ -945,7 +945,7 @@ App.Events.pcBirthday.Desc = (function(bday) { you like a pommel horse; her face stops before yours just long enough to plant a finalé kiss on your cheek, and she disappears somewhere behind you. </p> <p> - As her body launched out of sight, however, another two bodies were waiting at your feet. Or – you begin to wonder if it is actually two, or + As her body launched out of sight, however, another two bodies were waiting at your feet. Or – you begin to wonder if it is actually two, or if your vision is doubling from a random pill you pulled off a tray and the mystical atmosphere provided by the fog. But no, it's soon clear that it's two redhead twins who had been warming each other up to prepare themselves for you. In stark and provocative contrast to the athlete before them, these girls slide upon you with full, soft bodies. They kiss your nipples, your collarbone, your cheeks, and finally share your tongue between diff --git a/src/events/scheduled/sePCBirthday.js b/src/events/scheduled/sePCBirthday.js index 5cfd6526af3..7974837fce5 100644 --- a/src/events/scheduled/sePCBirthday.js +++ b/src/events/scheduled/sePCBirthday.js @@ -82,8 +82,8 @@ App.Events.pcBirthday = (function(events) { // TODO: (snes): can be expanded to // a) add more moods // b) check state to change weights for moods, - // e.g. if the player is doing poorly, the outcome - // is more likely to be solumn + // e.g. if the player is doing poorly, the outcome + // is more likely to be solumn // // as a POC, just using rng for now return App.Events.pcBirthday.forceMood || (Math.random() > 0.2 ? "happy" : "solemn"); diff --git a/src/events/timeGatedPlotEvent.js b/src/events/timeGatedPlotEvent.js index c36a2c550dc..ffcd42130eb 100644 --- a/src/events/timeGatedPlotEvent.js +++ b/src/events/timeGatedPlotEvent.js @@ -5,7 +5,7 @@ App.Events.TimeGatedPlotEvent = class TimeGatedPlotEvent extends App.Events.Base super(actors, params); // sparse array, indexed by effective week - // maybe mercs should be a separate chain? Oh well, they're here for now. + // maybe mercs should be a separate chain? Oh well, they're here for now. this.events = []; this.events[4] = new App.Events.PArcologyNaming(); this.events[6] = new App.Events.PStripClubClosing(); diff --git a/src/facilities/bodyModification/bodyModification.js b/src/facilities/bodyModification/bodyModification.js index c9bf7f798ca..088bbf7577b 100644 --- a/src/facilities/bodyModification/bodyModification.js +++ b/src/facilities/bodyModification/bodyModification.js @@ -223,7 +223,7 @@ App.UI.bodyModification = function(slave, cheat = false) { } if (pierced) { - App.UI.DOM.appendNewElement("div", el, `Reminder for writing custom content: slave pronouns are usually written in the masculine, and start with '$'. "$His earlobes" becomes "Her earlobes" in text.`, "note"); + App.UI.DOM.appendNewElement("div", el, `Reminder for writing custom content: slave pronouns are usually written in the masculine, and start with '$'. "$His earlobes" becomes "Her earlobes" in text.`, "note"); } else { options.addComment(`${His} smooth ${slave.skin} skin is completely unpierced.`); } @@ -1217,7 +1217,7 @@ App.UI.scarSelect = function(category, slave, cheat = false) { * * @param {Object} variable * @param {string} property - * @param {boolean | App.Entity.SlaveState} selector false means missing limbs. True means no missing limbs. Slave state checks the slave. + * @param {boolean | App.Entity.SlaveState} selector false means missing limbs. True means no missing limbs. Slave state checks the slave. * @returns {HTMLElement} */ App.UI.bodyPartSelector = function(variable, property, selector) { @@ -1290,7 +1290,7 @@ App.UI.bodyPartSelector = function(variable, property, selector) { * @param {string} bodyPart * @returns {string} */ -App.UI.bodyPartRoot = function(bodyPart) { +App.UI.bodyPartRoot = function(bodyPart) { if (bodyPart.startsWith("left")) { bodyPart = (bodyPart.replace(/left /g, "")); } else if (bodyPart.startsWith("right")) { diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js index 90c8ec78631..a00a9c9c9eb 100644 --- a/src/facilities/farmyard/farmyard.js +++ b/src/facilities/farmyard/farmyard.js @@ -109,9 +109,9 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit "Slimness Enthusiast": `It features trim animals and slaves alike, not a pound of excess among them. The feed for both livestock and crops are carefully maintained to ensure optimal growth without waste, letting them flourish without being weighed down.`, "Hedonistic": `It features wider gates and stalls, for both the humans visiting or tending the occupants, and the animals starting to mimic their handlers${V.seeBestiality ? ` and company` : ``}, with plenty of seats along the way.`, "Intellectual Dependency": `Large signs covered in cartoonish illustrations dot the pens, illustrating how to take care of the needs of the occupant within.${V.seeBestiality ? ` There is a strong emphasis on proper breeding positions for your slaves, with step by step instructions.` : ``}`, - "Slave Professionalism": `Despite the surroundings, those of your slaves that are allowed to wear clothes are dressed in clean outfits.${V.seeBestiality ? ` Those bearing litters walk with practiced care, protecting their young.` : ``} They go about their tasks methodically and with care, with ${S.Farmer ? S.Farmer.slaveName : `senior farmhands`} watching carefully to correct any lax behaviour.`, - "Petite Admiration": `The buildings are squat, one story affairs that allow those of smaller stature easier access. ${V.seeBestiality ? ` Those closer to physical perfection bear the cum stains of their recent breedings.` : ``}`, - "Statuesque Glorification": `Those workers who are smaller and less fit have been given the worst jobs, mucking out the pens and stables. ${V.seeBestiality ? ` Those closer to physical perfection bear the cum stains of their recent breedings.` : ``}`, + "Slave Professionalism": `Despite the surroundings, those of your slaves that are allowed to wear clothes are dressed in clean outfits.${V.seeBestiality ? ` Those bearing litters walk with practiced care, protecting their young.` : ``} They go about their tasks methodically and with care, with ${S.Farmer ? S.Farmer.slaveName : `senior farmhands`} watching carefully to correct any lax behaviour.`, + "Petite Admiration": `The buildings are squat, one story affairs that allow those of smaller stature easier access. ${V.seeBestiality ? ` Those closer to physical perfection bear the cum stains of their recent breedings.` : ``}`, + "Statuesque Glorification": `Those workers who are smaller and less fit have been given the worst jobs, mucking out the pens and stables. ${V.seeBestiality ? ` Those closer to physical perfection bear the cum stains of their recent breedings.` : ``}`, "standard": `It is very much a converted warehouse still, sectioned off in various 'departments'${V.farmyardUpgrades.machinery ? ` with machinery placed where it can be` : V.farmyardUpgrades.hydroponics ? ` and plumbing for the hydroponics system running every which way` : ``}.`, "": ``, }; diff --git a/src/facilities/nursery/nurseryDatatypeCleanup.js b/src/facilities/nursery/nurseryDatatypeCleanup.js index c4def25f184..f92a3b63a01 100644 --- a/src/facilities/nursery/nurseryDatatypeCleanup.js +++ b/src/facilities/nursery/nurseryDatatypeCleanup.js @@ -227,9 +227,9 @@ App.Facilities.Nursery.ChildDatatypeCleanup = function(child) { ]); for (const piercing of Object.keys(App.Data.Piercings)) { child.piercing[piercing] = child.piercing[piercing] || new App.Entity.piercingState(); - const oldPiercing = `${oldPiercings.get(piercing) || piercing}Piercing`; // the old variable names were sometimes plural and sometimes singular. The new standard is to use singular when possible. + const oldPiercing = `${oldPiercings.get(piercing) || piercing}Piercing`; // the old variable names were sometimes plural and sometimes singular. The new standard is to use singular when possible. if (child.hasOwnProperty(oldPiercing)) { - if (child[oldPiercing] === 3) { // 3 used to indicate a smart piercing. We now track this on a separate property as a bool. + if (child[oldPiercing] === 3) { // 3 used to indicate a smart piercing. We now track this on a separate property as a bool. child.piercing[piercing].weight = 2; child.piercing[piercing].smart = true; } else if (child[oldPiercing]) { diff --git a/src/facilities/surgery/multiImplant.js b/src/facilities/surgery/multiImplant.js index 867cbd6d2df..380f85ff23f 100644 --- a/src/facilities/surgery/multiImplant.js +++ b/src/facilities/surgery/multiImplant.js @@ -57,7 +57,7 @@ App.UI.multipleOrganImplant = function() { V.surgeryType = "cochlear implant"; node.append(App.UI.SlaveInteract.surgeryDegradation(slave)); } else { - App.UI.DOM.appendNewElement("span", div, `Since ${he} has working ears the ${App.Data.prosthetics.cochlear.name} will be put into storage.`, "note"); + App.UI.DOM.appendNewElement("span", div, `Since ${he} has working ears the ${App.Data.prosthetics.cochlear.name} will be put into storage.`, "note"); } break; case "electrolarynx": diff --git a/src/gui/options/options.js b/src/gui/options/options.js index ae0691a369f..b0b5e1bb120 100644 --- a/src/gui/options/options.js +++ b/src/gui/options/options.js @@ -1112,7 +1112,7 @@ App.UI.artOptions = function() { ["Shokushu's rendered image pack", 0], ]); if (V.imageChoice === 1) { - options.addComment("The only 2D art in somewhat recent development. Contains many outfits."); + options.addComment("The only 2D art in somewhat recent development. Contains many outfits."); options.addOption("Face artwork is", "seeFaces") .addValue("Enabled", 1).on().addValue("Disabled", 0).off(); @@ -1136,7 +1136,7 @@ App.UI.artOptions = function() { options.addOption("Clothing erection bulges are", "showClothingErection") .addValue("Enabled", true).on().addValue("Disabled", false).off(); } else if (V.imageChoice === 4) { - options.addComment(`This art is currently (9/6/21) the most actively developed. Real time 3D models. <a href='https://mega.nz/folder/HgZ0WTxB#o3mwURAAQfN5WZzutQvbXA' target='_blank'> Download the WebGL art assets</a> and place the 'webgl' folder into the resources/ folder where this HTML file is. + options.addComment(`This art is currently (9/6/21) the most actively developed. Real time 3D models. <a href='https://mega.nz/folder/HgZ0WTxB#o3mwURAAQfN5WZzutQvbXA' target='_blank'> Download the WebGL art assets</a> and place the 'webgl' folder into the resources/ folder where this HTML file is. Then <b>refresh</b> the page. Create the resources folder if it does not exist. <span class="warning">(Android/MacOS not supported)</span>`); diff --git a/src/gui/sideBar.js b/src/gui/sideBar.js index 07eb32e2ec9..d9c086210a0 100644 --- a/src/gui/sideBar.js +++ b/src/gui/sideBar.js @@ -1,6 +1,7 @@ -/** Notify the game that the sidebar needs to be refreshed as soon as possible, but do not do it immediately. - * This allows us to call this function repeatedly without impacting performance (for example, from repX() and cashX()). - * The game will redraw the sidebar exactly once, as soon as all the scripts have finished executing. +/** + * Notify the game that the sidebar needs to be refreshed as soon as possible, but do not do it immediately. + * This allows us to call this function repeatedly without impacting performance (for example, from repX() and cashX()). + * The game will redraw the sidebar exactly once, as soon as all the scripts have finished executing. */ App.Utils.scheduleSidebarRefresh = (function() { let refresh = false; diff --git a/src/interaction/sellSlave.js b/src/interaction/sellSlave.js index a4660f1c4d0..f7d5e8eb4a5 100644 --- a/src/interaction/sellSlave.js +++ b/src/interaction/sellSlave.js @@ -1831,7 +1831,7 @@ App.Interact.sellSlave = function(slave) { cost: 200 * Math.trunc((cost * 2) / 200), offerDesc: `from an obsessive fan who absolutely must have ${him} for himself.`, get requirements() { return (slave.porn.prestige === 1); }, - percentOdds: 69, // Who did this? Seriously, who did this... + percentOdds: 69, // Who did this? Seriously, who did this... get completeSale() { const r = []; let slaveImpact; diff --git a/src/interaction/siRules.js b/src/interaction/siRules.js index 90dd8a73dd7..6034405bf2d 100644 --- a/src/interaction/siRules.js +++ b/src/interaction/siRules.js @@ -183,7 +183,7 @@ App.UI.SlaveInteract.rules = function(slave, refresh) { choices = [ {value: "confinement", tooltip: App.UI.DOM.combineNodes(`Increases `, App.UI.DOM.makeElement("span", `fear`, ["trust", "dec"]), ` when the slave is punished.`)}, {value: "whipping", tooltip: App.UI.DOM.combineNodes(`Significantly increases `, App.UI.DOM.makeElement("span", `fear`, ["trust", "dec"]), ` at the cost of `, App.UI.DOM.makeElement("span", `health`, ["health", "dec"]), ` when the slave is punished.`)}, - {value: "chastity", tooltip: App.UI.DOM.combineNodes(`Increases both `, App.UI.DOM.makeElement("span", `fear`, ["trust", "dec"]), ` and `, App.UI.DOM.makeElement("span", `devotion`, ["devotion", "inc"]), ` at the cost of `, App.UI.DOM.makeElement("span", `libido`, ["libido", "dec"]), ` when the slave is punished.`)}, + {value: "chastity", tooltip: App.UI.DOM.combineNodes(`Increases both `, App.UI.DOM.makeElement("span", `fear`, ["trust", "dec"]), ` and `, App.UI.DOM.makeElement("span", `devotion`, ["devotion", "inc"]), ` at the cost of `, App.UI.DOM.makeElement("span", `libido`, ["libido", "dec"]), ` when the slave is punished.`)}, {value: "situational", tooltip: App.UI.DOM.combineNodes(`Increases `, App.UI.DOM.makeElement("span", `fear`, ["trust", "dec"]), ` when the slave is punished.`)}, ]; div.append(listChoices(choices, "punishment")); diff --git a/src/interaction/siWork.js b/src/interaction/siWork.js index ebe6d096fde..385f01610c1 100644 --- a/src/interaction/siWork.js +++ b/src/interaction/siWork.js @@ -385,7 +385,7 @@ App.UI.SlaveInteract.work = function(slave, refresh) { if (slave.vagina > -1) { if (canDoVaginal(slave)) { sexOptions.push({text: `Grope ${his} pussy`, scene: () => App.Interact.fondleVagina(slave)}); - sexOptions.push({text: `Eat ${him} out`, scene: () => App.Interact.fLickPussy(slave)}); + sexOptions.push({text: `Eat ${him} out`, scene: () => App.Interact.fLickPussy(slave)}); } } @@ -687,7 +687,7 @@ App.UI.SlaveInteract.work = function(slave, refresh) { if (slave.fetish !== "mindbroken" && slave.accent < 4 && ((canTalk(slave)) || hasAnyArms(slave))) { sexOptions.push({text: `Ask ${him} about ${his} feelings`, scene: () => App.Interact.feelings(slave)}); if (V.PC.dick > 0) { - sexOptions.push({text: `Make ${him} beg`, scene: () => App.Interact.fBeg(slave)}); + sexOptions.push({text: `Make ${him} beg`, scene: () => App.Interact.fBeg(slave)}); } } if (slave.devotion >= 100 && slave.relationship < 0 && slave.relationship > -3) { @@ -721,7 +721,7 @@ App.UI.SlaveInteract.work = function(slave, refresh) { let activeSlaveRepSacrifice = repGainSacrifice(slave, V.arcologies[0]); if (activeSlaveRepSacrifice > 0) { /* - TODO: fix this interaction. Consider that it "takes a week" but is not tied to endweek. Consider how easy it is to cheese for rep gains. + TODO: fix this interaction. Consider that it "takes a week" but is not tied to endweek. Consider how easy it is to cheese for rep gains. sexOptions.push({ text: `Require ${him} to offer penance to Xochiquetzal`, goto: `Aztec Slave Sacrifice Penance`, diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 79ab592fa8e..bcf2e425581 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1187,7 +1187,7 @@ globalThis.DefaultRules = (function() { rule.growth.lips, rule.growth.dick, rule.growth.balls - ].every(r => r === null) // Check if all objects in list equal null + ].every(r => r === null) // Check if all objects in list equal null ) { ProcessOtherDrugs(slave, rule); return; diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 81716f12d29..1c08c3d68b4 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -414,7 +414,7 @@ App.Entity.piercingState = class { /** @type {FC.PiercingType} */ this.weight = 0; /** - * String describing piercing. Leave empty to use default description. + * String describing piercing. Leave empty to use default description. * @type {string} */ this.desc = ""; @@ -435,7 +435,7 @@ App.Entity.piercingStateRA = class { /** @type {FC.PiercingType} */ this.weight = null; /** - * String describing piercing. Leave empty to use default description. + * String describing piercing. Leave empty to use default description. * @type {string} */ this.desc = null; @@ -663,13 +663,13 @@ App.Entity.SlaveState = class SlaveState { this.health = { /** * slave 's health - * * -90 - : On the edge of death - * * -90 - -51: Extremely unhealthy - * * -50 - -21: Unhealthy - * * -20 - 20: Healthy - * * 21 - 50: Very healthy - * * 50 - 90: Extremely healthy - * * 90 - : Unnaturally healthy + * * -90 - : On the edge of death + * * -90 - -51: Extremely unhealthy + * * -50 - -21: Unhealthy + * * -20 - 20: Healthy + * * 21 - 50: Very healthy + * * 50 - 90: Extremely healthy + * * 90 - : Unnaturally healthy */ condition: 0, /** slave 's short term health damage */ diff --git a/src/js/assignJS.js b/src/js/assignJS.js index e60b756d211..974a7d48a82 100644 --- a/src/js/assignJS.js +++ b/src/js/assignJS.js @@ -443,7 +443,7 @@ globalThis.assignJobSafely = function(slave, assignmentStr) { slave.choosesOwnAssignment = 1; } else if ([Job.AGENT, Job.AGENTPARTNER].includes(V.assignmentRecords[slave.ID])) { // it is NEVER safe to auto-reassign agents (we don't know which arcology they came from) assignJob(slave, Job.REST); - } else if (!App.Utils.jobForAssignment(assignmentStr).canEmploy(slave).length) { // If nothing complains about job requirements not being met + } else if (!App.Utils.jobForAssignment(assignmentStr).canEmploy(slave).length) { // If nothing complains about job requirements not being met assignJob(slave, assignmentStr); } else { assignJob(slave, Job.REST); diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js index 7127d4eb496..603fb38c97a 100644 --- a/src/js/birth/birth.js +++ b/src/js/birth/birth.js @@ -3,7 +3,7 @@ App.Events.SEBirth = class SEBirth extends App.Events.BaseEvent { super(actors, params); } - /** Custom casting: all slaves in labor are cast automatically. if no slaves are cast, casting fails and the event does not run. */ + /** Custom casting: all slaves in labor are cast automatically. If no slaves are cast, casting fails and the event does not run. */ castActors() { this.actors = V.slaves.filter(s => isInLabor(s)).map(s => s.ID); return this.actors.length > 0; diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js index 02e01e5d57c..6efec868244 100644 --- a/src/js/extendedFamilyModeJS.js +++ b/src/js/extendedFamilyModeJS.js @@ -104,9 +104,9 @@ globalThis.sameParent = function(slave1, slave2) { */ globalThis.specificCharacterID = function(ID) { return (ID > 0 || // active slave - ID < -20 || // missing slave - ID === -1 || // player - ID === -3); // player's old master + ID < -20 || // missing slave + ID === -1 || // player + ID === -3); // player's old master }; /** Returns true if the father of slave is a specific, unique character (current or former slave, or the PC) diff --git a/src/js/ibcJS.js b/src/js/ibcJS.js index 8375a8346de..41ffff33f8a 100644 --- a/src/js/ibcJS.js +++ b/src/js/ibcJS.js @@ -9,7 +9,7 @@ * @property {number} [inbreedingCoeff] */ -// TODO: replace snake_case with camelCase +// TODO: replace snake_case with camelCase /* eslint-disable camelcase */ /* eslint-disable eqeqeq */ @@ -22,7 +22,7 @@ globalThis.ibc = (() => { let find_gp = (id) => (slaveStateById(id) || V.genePool.find((s) => s.ID === id) || ((id in V.missingTable) ? V.missingTable[id] : null) || null); /** The player's old master is a known parent, but we don't normally have a slavelike object - * for him. We use this one instead, wherever necessary. + * for him. We use this one instead, wherever necessary. * @type {IBCRelative} */ const oldMaster = { ID: -3, @@ -226,18 +226,18 @@ globalThis.ibc = (() => { // NodeCodes are constructed recursively in this fashion: // // - Assign each of the founders (nodes with both parents === null) an unique ID, starting from - // 0 and incrementing each time (the order doesn't matter); a founder's set of NodeCodes has - // exactly one NodeCode, which is [ID] (an array containing only their ID) + // 0 and incrementing each time (the order doesn't matter); a founder's set of NodeCodes has + // exactly one NodeCode, which is [ID] (an array containing only their ID) // // - For each other node, let M be its child number w.r.t. its mother and N its child number - // w.r.t. its father, i.e. the number of children that the respective parent has had before - // this one (the order is not important to the algorithm, it's arbitrary here for - // convenience). Its set of NodeCodes is the set of all its mother's NodeCodes with M appended - // and all of its father's NodeCodes with N appended. For example, if its mother has the - // NodeCodes [[2]] and M = 3 and its father has the NodeCodes [[0,1], [3,1]] and N = 1 then - // the set of NodeCodes for this node would be + // w.r.t. its father, i.e. the number of children that the respective parent has had before + // this one (the order is not important to the algorithm, it's arbitrary here for + // convenience). Its set of NodeCodes is the set of all its mother's NodeCodes with M appended + // and all of its father's NodeCodes with N appended. For example, if its mother has the + // NodeCodes [[2]] and M = 3 and its father has the NodeCodes [[0,1], [3,1]] and N = 1 then + // the set of NodeCodes for this node would be // - // [[2, 3], [0, 1, 1], [3, 1, 1]] + // [[2, 3], [0, 1, 1], [3, 1, 1]] // // We do this iteratively here, looping over the set of all nodes until each has been assigned // a NodeCode. This requires looping through a number of times equal to the number of @@ -363,7 +363,7 @@ globalThis.ibc = (() => { }; /** Determine the coefficients of inbreeding of an array of slaves. Returns a mapping of their - * ID to their coefficient of inbreeding + * ID to their coefficient of inbreeding * @param {IBCRelative[]} slaves * @param {boolean} [ignore_coeffs=false] * @returns {Object.<number, number>} @@ -446,9 +446,9 @@ globalThis.ibc = (() => { }; /** Recalculate the inbreeding coefficient for all slaves dependent on the passed IDs (e.g. the - * slaves themselves and all of their children). This will replace the inbreeding coefficients - * wherever they exist with the computed values, ignoring all cached values. - * This should be called if parents are changed. + * slaves themselves and all of their children). This will replace the inbreeding coefficients + * wherever they exist with the computed values, ignoring all cached values. + * This should be called if parents are changed. * @param {number[]} ids */ let recalculate_coeff_ids = (ids) => { diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 6c418607678..e0facf9fe6d 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -411,7 +411,7 @@ globalThis.setPregType = function(actor) { */ if (ovum < 1) { ovum = 1; } - // console.log("Name: ", actor.slaveName, " ftVol:", ftVol, " cmVol:", cmVol, " maxVol:", maxVol, " freeVol:", freeVol, " coeff:", coeff, " fertilityStack: ", fertilityStack, " ovum: ", ovum); + // console.log("Name: ", actor.slaveName, " ftVol:", ftVol, " cmVol:", cmVol, " maxVol:", maxVol, " freeVol:", freeVol, " coeff:", coeff, " fertilityStack: ", fertilityStack, " ovum: ", ovum); } return Math.ceil(ovum); diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 537d4805b20..30c2d7b15d9 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -905,7 +905,7 @@ App.RA.options = (function() { } } - // Basically just a copy of NumericTargetEditor modified to handle strings as well + // Basically just a copy of NumericTargetEditor modified to handle strings as well class ExpressiveNumericTargetEditor extends EditorWithShortcuts { /** * @param {string} prefix @@ -973,8 +973,8 @@ App.RA.options = (function() { } getTextData() { - const n = this.numEditor.value !== "" ? Number(this.numEditor.value) : Number.NaN; // Attempt to convert numEditor.value to number, - const v = isNaN(n) ? this.numEditor.value : Math.floor(n); // return numEditor.value as number if !NaN (should result in realValue being of number) + const n = this.numEditor.value !== "" ? Number(this.numEditor.value) : Number.NaN; // Attempt to convert numEditor.value to number, + const v = isNaN(n) ? this.numEditor.value : Math.floor(n); // return numEditor.value as number if !NaN (should result in realValue being of number) return v === null || v === "" ? null : {cond: this.opSelector.value, val: v}; } @@ -1181,7 +1181,7 @@ App.RA.options = (function() { // App.UI.DOM.appendNewElement("h1", div, `Rules Assistant`); App.UI.DOM.appendNewElement("div", greeting, `${properTitle()}, I will review your slaves and make changes that will have a beneficial effect. Apologies, ${properTitle()}, but this function is... not fully complete. It may have some serious limitations. Please use the '${noDefaultSetting.text}' option to identify areas I should not address.`); App.UI.DOM.appendNewElement("div", greeting, `For things like breast, butt, lip, dick, and ball injections, you need to only set the growth targets in Physical Regimen and I'll try to figure out how to best achieve them. You probably won't need a separate rule for each of them, or have to worry about ending the injections.`); - App.UI.DOM.appendNewElement("div", greeting, `Please note that surgeries will only be applied to slaves that are in the penthouse, and will not be applied until the end of the week. Surgery outcomes are included in a slave's individual report, instead of with the other effects of the RA.`); + App.UI.DOM.appendNewElement("div", greeting, `Please note that surgeries will only be applied to slaves that are in the penthouse, and will not be applied until the end of the week. Surgery outcomes are included in a slave's individual report, instead of with the other effects of the RA.`); const summary = App.UI.DOM.appendNewElement("div", greeting, `You can always see an overview of all of your rules in the `); summary.append(App.UI.DOM.passageLink("summary view", "Rules Assistant Summary")); summary.append(`.`); diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index 87ec1f54bd1..295e3ca948c 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -2286,7 +2286,7 @@ globalThis.slaveCost = function(slave, isStartingSlave = false, followLaws = fal milkSpan.tabIndex = 0; milkSpan.classList.add("has-tooltip"); tippy(milkSpan, { - content: `Value as a cow is greater than their value as a sex object. Value is based on a year's fluids with current body.`, + content: `Value as a cow is greater than their value as a sex object. Value is based on a year's fluids with current body.`, placement: "right", interactive: true, trigger: "click" }); } diff --git a/src/js/utilsAssessSlave.js b/src/js/utilsAssessSlave.js index 4e2c6dc5dc3..0790308dafe 100644 --- a/src/js/utilsAssessSlave.js +++ b/src/js/utilsAssessSlave.js @@ -1,6 +1,6 @@ /* * -* This file focuses on slave related functions that assess qualities about slaves. Are they/can they X? +* This file focuses on slave related functions that assess qualities about slaves. Are they/can they X? * */ @@ -246,10 +246,10 @@ globalThis.canMoveToRoom = function(slave) { /** * @param {App.Entity.SlaveState} slave - * @returns {0|1|2|3} 0: No heel boost at all. 1: Pumps, slight boost. 2: High heels. 3: Painfully/extreme high heels + * @returns {0|1|2|3} 0: No heel boost at all. 1: Pumps, slight boost. 2: High heels. 3: Painfully/extreme high heels */ globalThis.shoeHeelCategory = function(slave) { - const height = App.Data.shoes.get(slave.shoes) ? App.Data.shoes.get(slave.shoes).heelHeight : 0; // Height is in cm + const height = App.Data.shoes.get(slave.shoes) ? App.Data.shoes.get(slave.shoes).heelHeight : 0; // Height is in cm if (height > 20) { return 3; } else if (height > 5) { diff --git a/src/js/wombJS.js b/src/js/wombJS.js index 725026f6b84..c2a86bec540 100644 --- a/src/js/wombJS.js +++ b/src/js/wombJS.js @@ -47,7 +47,7 @@ globalThis.WombInit = function(actor) { if (actor.pregData === undefined) { actor.pregData = clone(App.Data.misc.pregData.human); // Setup should be through deep copy, so in future, if we like, these values can be changed individually. Gameplay expansion possibilities. But for dev time to simplify debugging: - // actor.pregData = setup.pregData.human; // any changes in setup pregData template will be applied immediately to all. But can't be made separate changes. + // actor.pregData = setup.pregData.human; // any changes in setup pregData template will be applied immediately to all. But can't be made separate changes. } if (typeof actor.eggType !== 'string') { @@ -313,7 +313,7 @@ globalThis.WombGetVolume = function(actor) { // most legacy code from pregJS.tw rate = rateMin + (rateOne * cAge); cSize = (min + (one * cAge)); - // console.log("min:"+min+" max:"+max+" ageMin:"+ageMin+" ageMax:"+ageMax+" one:"+one+" rateOne:"+rateOne+" cAge:"+cAge+" rate:"+rate+" cSize:"+cSize+" final size:"+cSize*rate); + // console.log("min:"+min+" max:"+max+" ageMin:"+ageMin+" ageMax:"+ageMax+" one:"+one+" rateOne:"+rateOne+" cAge:"+cAge+" rate:"+rate+" cSize:"+cSize+" final size:"+cSize*rate); data.size = cSize; data.rate = rate; @@ -362,7 +362,7 @@ globalThis.WombGetVolume = function(actor) { // most legacy code from pregJS.tw // oldVol = ((4 / 3) * (Math.PI) * (phi / 2) * (Math.pow((oldLen / 2), 3))); // for debug - // console.log("fetus.age:" + ft.age + " oldLen:"+oldLen+" targetLen:"+targetLen+" ft.volume:"+ft.volume+ " old volume:"+oldVol ); + // console.log("fetus.age:" + ft.age + " oldLen:"+oldLen+" targetLen:"+targetLen+" ft.volume:"+ft.volume+ " old volume:"+oldVol ); /* I found, that previous targetLen calculation not exactly accurate if compared to the actual medical data chart for fetal length. It's been rough approximation based only on pregnancy week (giving smaller fetus size then it should in most cases). So I need all this debug code to compare data and verify calculations. After final tweaking I will remove or comment out legacy code. Please not touch this before it. Pregmodfan. @@ -466,7 +466,7 @@ globalThis.FetusGetPrediction = function(actor, age) { rate = rateMin + (rateOne * cAge); cSize = (min + (one * cAge)); - // console.log("min:"+min+" max:"+max+" ageMin:"+ageMin+" ageMax:"+ageMax+" one:"+one+" rateOne:"+rateOne+" cAge:"+cAge+" rate:"+rate+" cSize:"+cSize+" final size:"+cSize*rate); + // console.log("min:"+min+" max:"+max+" ageMin:"+ageMin+" ageMax:"+ageMax+" one:"+one+" rateOne:"+rateOne+" cAge:"+cAge+" rate:"+rate+" cSize:"+cSize+" final size:"+cSize*rate); data.size = cSize; data.rate = rate; @@ -826,9 +826,9 @@ globalThis.FetusGlobalReserveCount = function(reserveType) { }; globalThis.WombSetGenericReserve = function(actor, type, count) { - // console.log ("actor: " + actor + " type: " + type + " typeof: " + typeof type + " count: " + count); + // console.log ("actor: " + actor + " type: " + type + " typeof: " + typeof type + " count: " + count); actor.womb.forEach(function(ft) { - // console.log (" type: " + ft.reserve + " typeof: " + typeof ft.reserve); + // console.log (" type: " + ft.reserve + " typeof: " + typeof ft.reserve); if ((ft.reserve === "" || ft.reserve === type) && count > 0) { // console.log ("!trigger"); ft.reserve = type; diff --git a/src/npc/children/longChildDescription.js b/src/npc/children/longChildDescription.js index c36b61100cc..259dab8acf6 100644 --- a/src/npc/children/longChildDescription.js +++ b/src/npc/children/longChildDescription.js @@ -7954,7 +7954,7 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event if (child.inflation > 0) { V.activeSlave = child; - r += `${App.Desc.bellyInflation(child)} `; // TODO: + r += `${App.Desc.bellyInflation(child)} `; // TODO: } else if (child.bellyImplant >= 2000) { V.activeSlave = child; r += App.Desc.bellyImplant(child); // TODO: diff --git a/src/npc/databases/ddSlavesDatabase.js b/src/npc/databases/ddSlavesDatabase.js index 0e213158b6d..e28317509d2 100644 --- a/src/npc/databases/ddSlavesDatabase.js +++ b/src/npc/databases/ddSlavesDatabase.js @@ -783,7 +783,7 @@ App.Data.HeroSlaves.DD = [ fetish: "buttslut", fetishKnown: 1, behavioralFlaw: "odd", - piercing: {dick: {weight: 1}, ear: {weight: 1}, navel: {weight: 1}, areola: {weight: 2, desc: "$He has a large police badge made of polished silver pinned right to the skin with several barbell piercings just above $his left nipple."}}, + piercing: {dick: {weight: 1}, ear: {weight: 1}, navel: {weight: 1}, areola: {weight: 2, desc: "$He has a large police badge made of polished silver pinned right to the skin with several barbell piercings just above $his left nipple."}}, custom: {desc: "$He wears two pairs of handcuffs as bracelets (one pair on each wrist); the handcuff keyholes are welded, so they cannot be unlocked and removed in any normal way."}, career: "a security guard" }, diff --git a/src/npc/databases/dfSlavesDatabase.js b/src/npc/databases/dfSlavesDatabase.js index 0cc8d4f8cbc..6edcee13079 100644 --- a/src/npc/databases/dfSlavesDatabase.js +++ b/src/npc/databases/dfSlavesDatabase.js @@ -359,7 +359,7 @@ App.Data.HeroSlaves.DFextreme = [ fetishKnown: 1, lipsTat: "Cored plums are tattooed on $his face.", buttTat: "Cored plums are tattooed on $his buttocks.", - piercing: {nipple: {weight: 1}, vagina: {weight: 2}, genitals: {weight: 2}, corset: {weight: 1, desc: "$He has massive C-clamp piercings in $his back that allow $him to act as furniture"}}, + piercing: {nipple: {weight: 1}, vagina: {weight: 2}, genitals: {weight: 2}, corset: {weight: 1, desc: "$He has massive C-clamp piercings in $his back that allow $him to act as furniture"}}, sexualFlaw: "self hating", clothes: "no clothing", vaginalAccessory: "long, huge dildo" diff --git a/src/npc/descriptions/belly/belly.js b/src/npc/descriptions/belly/belly.js index 4042a7717ca..6ef7655304b 100644 --- a/src/npc/descriptions/belly/belly.js +++ b/src/npc/descriptions/belly/belly.js @@ -892,7 +892,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 300000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is massively pregnant, dwarfing any normal pregnancy,`); if (slave.physicalAge <= 3) { r.push(`and ${he} is nearly spherical. ${His} toddlerish form is utterly dwarfed by ${his} pregnancy, all ${he} can do is lean against it.`); @@ -1364,7 +1364,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 105000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb making ${him} resemble an over inflated blow-up doll.`); @@ -1628,7 +1628,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 75000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb making ${him} resemble an over inflated blow-up doll.`); @@ -1761,7 +1761,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 60000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb making ${him} resemble an over inflated blow-up doll.`); @@ -1894,7 +1894,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 45000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb making ${him} resemble an over inflated blow-up doll.`); @@ -1993,7 +1993,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 30000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb making ${him} resemble an over inflated blow-up doll.`); @@ -2090,7 +2090,7 @@ App.Desc.belly = function(slave, descType = DescType.NORMAL) { } else if (slave.belly >= 15000) { if (isBellyFluidLargest) { // TODO: write me - } else if (slave.bellyPreg > 0) { + } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb making ${him} resemble an over inflated blow-up doll.`); diff --git a/src/npc/descriptions/butt/butt.js b/src/npc/descriptions/butt/butt.js index b1b16d079e3..5590783afb0 100644 --- a/src/npc/descriptions/butt/butt.js +++ b/src/npc/descriptions/butt/butt.js @@ -1314,7 +1314,7 @@ App.Desc.butt = function(slave, descType = DescType.NORMAL) { } else if (slave.tailShape === "deer") { r.push(`${He} has a short and soft ${slave.tailColor} deer tail that tends to wiggle when ${he} gets exited.`); } else if (slave.tailShape === "succubus") { - r.push(`${He} has a long, slim succubus tail; ${his} tail ends in a soft ${slave.tailColor} heart shape.`); + r.push(`${He} has a long, slim succubus tail; ${his} tail ends in a soft ${slave.tailColor} heart shape.`); } else if (slave.tailShape === "dragon") { r.push(`${He} has a long and thick draconic tail; ${his} tail is covered in ${slave.tailColor} scales.`); } else if (slave.tail === "stinger") { diff --git a/src/npc/descriptions/upperBack.js b/src/npc/descriptions/upperBack.js index 4ffcffe14b7..9301bdb8e87 100644 --- a/src/npc/descriptions/upperBack.js +++ b/src/npc/descriptions/upperBack.js @@ -5,7 +5,7 @@ App.Desc.upperBack = function(slave) { const r = []; const { - him, he, He, his, His + him, he, He, his, His } = getPronouns(slave); diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index 659eb02459f..f1fce83dff3 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -38,7 +38,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = el.append(choices()); - App.Utils.updateUserButton(); // Make sure the user button is up to date, since V.nextButton may have changed since it was created. + App.Utils.updateUserButton(); // Make sure the user button is up to date, since V.nextButton may have changed since it was created. return el; diff --git a/src/npc/infants/InfantState.js b/src/npc/infants/InfantState.js index 01f76e0fd2f..1d74fcd36de 100644 --- a/src/npc/infants/InfantState.js +++ b/src/npc/infants/InfantState.js @@ -177,8 +177,9 @@ App.Facilities.Nursery.InfantState = class InfantState { hyperFertility: 0, /** pregnancy does not block ovulation, child can become pregnant even while pregnant */ superfetation: 0, - /** abnormal production of amniotic fluid - * only affects fetuses */ + /** + * abnormal production of amniotic fluid + * only affects fetuses */ polyhydramnios: 0, /** Pleasurable pregnancy and orgasmic birth. Wider hips, looser and wetter vagina. High pregadaptation and low birth damage. */ uterineHypersensitivity: 0, diff --git a/src/npc/interaction/fDick.js b/src/npc/interaction/fDick.js index fffb022fd15..a49eea4ef35 100644 --- a/src/npc/interaction/fDick.js +++ b/src/npc/interaction/fDick.js @@ -164,7 +164,7 @@ App.Interact.fDick = function(slave) { } - r.push(`it seems ${slave.slaveName} came too.`); + r.push(`it seems ${slave.slaveName} came too.`); r.push(`Since ${he} is mindbroken, ${his} responses to you are purely physiological and your actions have no affect on ${him} mentally. You leave your toy for one of your other slaves to clean and maintain.`); } else if (slave.devotion > 50) { if (slave.trust < -20) { diff --git a/src/npc/interaction/fEmbrace.js b/src/npc/interaction/fEmbrace.js index dc2c4fd3fcc..f4e5edab785 100644 --- a/src/npc/interaction/fEmbrace.js +++ b/src/npc/interaction/fEmbrace.js @@ -19,7 +19,7 @@ App.Interact.fEmbrace = function(slave) { addPartner(slave, -1); - r.push(`You tell ${slave.slaveName} to`); + r.push(`You tell ${slave.slaveName} to`); if (hasAnyLegs(slave)) { r.push(`stand in front of you.`); } else { diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js index b0cd4581432..19913206225 100644 --- a/src/npc/interaction/fFeelings.js +++ b/src/npc/interaction/fFeelings.js @@ -804,7 +804,7 @@ App.Interact.feelings = function(slave) { break; case "buttslut": r.push(`I'm so horny, ${Master}.`); - if (plugWidth(slave) === 1 && slave.anus > 2) { + if (plugWidth(slave) === 1 && slave.anus > 2) { r.push(`I wear the buttplug you gave me, but it is so small... It reminds me of being fucked in the ass, but I can barely feel it. It drives me crazy.`); } else if ( (plugWidth(slave) === 1 && slave.anus < 3) || diff --git a/src/npc/interaction/fRelation.js b/src/npc/interaction/fRelation.js index 181c042eed4..5b7649f352a 100644 --- a/src/npc/interaction/fRelation.js +++ b/src/npc/interaction/fRelation.js @@ -1,6 +1,6 @@ /** * @param {App.Entity.SlaveState} slave - slave to fuck with partner. - * @param {App.Entity.SlaveState} partner - partner to fuck slave with. must be a close relative or relationship target of slave. + * @param {App.Entity.SlaveState} partner - partner to fuck slave with. Must be a close relative or relationship target of slave. * @returns {DocumentFragment|HTMLElement} */ App.Interact.fRelation = function(slave, partner) { diff --git a/src/npc/interaction/forceFeeding.js b/src/npc/interaction/forceFeeding.js index cd1e4a798c1..da30d589b14 100644 --- a/src/npc/interaction/forceFeeding.js +++ b/src/npc/interaction/forceFeeding.js @@ -196,7 +196,7 @@ App.Interact.forceFeeding = function(slave) { r.push(`so you keep the cupfuls coming.`); } - r.push(`You can feel ${his} ${slave.skin} belly swelling with ${slave.inflationType} as it pushes out against your hand. Once ${he} has downed two liters, you give ${his} bloated belly a slap, eliciting`); + r.push(`You can feel ${his} ${slave.skin} belly swelling with ${slave.inflationType} as it pushes out against your hand. Once ${he} has downed two liters, you give ${his} bloated belly a slap, eliciting`); if (slave.fetish === "mindbroken") { r.push(`a small burp from the broken slave`); } else if (slave.devotion < -20) { diff --git a/src/npc/surgery/fatGraft.js b/src/npc/surgery/fatGraft.js index a4e141270b8..85ea1572173 100644 --- a/src/npc/surgery/fatGraft.js +++ b/src/npc/surgery/fatGraft.js @@ -19,7 +19,7 @@ App.UI.SlaveInteract.fatGraft = function(slave) { const {his} = getPronouns(slave); let p; let linkArray = []; - const buttCost = (slave.butt > 10) ? 5 : 2; // Buttsizes are apparently not linear, so it takes a lot more fat to increase the largest booties. + const buttCost = (slave.butt > 10) ? 5 : 2; // Buttsizes are apparently not linear, so it takes a lot more fat to increase the largest booties. r.push(`All surplus body fat was harvested, and enough is graftable for an additional ${availableFat * 100}ccs per breast or an additional ${num(Math.trunc(availableFat / buttCost))} sizes to ${his} rear.`); if (availableFat === 0) { r.push(`All fat marked for use.`); diff --git a/src/player/personalAttentionSelect.js b/src/player/personalAttentionSelect.js index 65c67149a48..2981f6d4fc1 100644 --- a/src/player/personalAttentionSelect.js +++ b/src/player/personalAttentionSelect.js @@ -854,7 +854,7 @@ App.UI.Player.personalAttention = function() { * @param {string} regimen * @param {Array<HTMLAnchorElement|HTMLSpanElement>} links * @param {number} index - * @param {Link[]} args + * @param {Link[]} args */ function addLinks(slave, regimen, links, index, ...args) { args.forEach(link => { -- GitLab