From f142a13761220379cc278fe1cca0cfc9e4aabfbc Mon Sep 17 00:00:00 2001
From: ezsh <ezsh.junk@gmail.com>
Date: Sun, 20 Jan 2019 18:46:40 +0100
Subject: [PATCH] Rename twee files with [script] passages to .js

---
 src/SpecialForce/{JS.js => SpecialForce.js}                    | 0
 src/art/{artJS.tw => art.js}                                   | 2 --
 src/art/{assistantArt.tw => assistantArt.js}                   | 2 --
 .../vector/{Set_Colour_Outfit_JS.tw => Set_Colour_Outfit.js}   | 2 --
 src/art/vector/{Set_Colour_Skin_JS.tw => Set_Colour_Skin.js}   | 2 --
 ...ctorRevampedArtControlJS.tw => vectorRevampedArtControl.js} | 2 --
 src/config/{sugarCubeConfig.tw => sugarCubeConfig.js}          | 3 ---
 src/debugging/{debugJS.tw => debug.js}                         | 2 --
 src/endWeek/{saChoosesOwnClothes.tw => saChoosesOwnClothes.js} | 2 --
 src/endWeek/{saPornJS.tw => saPorn.js}                         | 2 --
 src/endWeek/{saRest.tw => saRest.js}                           | 2 --
 src/endWeek/{saServant.tw => saServant.js}                     | 2 --
 src/endWeek/{saStayConfined.tw => saStayConfined.js}           | 2 --
 src/js/{DefaultRules.tw => DefaultRules.js}                    | 1 -
 src/js/{PenthouseNaming.tw => PenthouseNaming.js}              | 2 --
 src/js/{SetBellySize.tw => SetBellySize.js}                    | 2 --
 src/js/{accordianJS.tw => accordian.js}                        | 2 --
 src/js/{assayJS.tw => assay.js}                                | 2 --
 src/js/{assignJS.tw => assign.js}                              | 2 --
 src/js/{birthJS.tw => birth.js}                                | 2 --
 src/js/{bugReport.tw => bugReport.js}                          | 2 --
 src/js/{colorModeJS.tw => colorMode.js}                        | 2 --
 src/js/{dTree.min.tw => dTree.min.js}                          | 1 -
 src/js/{datatypeCleanupJS.tw => datatypeCleanup.js}            | 2 --
 src/js/{displayVariables.tw => displayVariables.js}            | 2 --
 src/js/{economyJS.tw => economy.js}                            | 2 --
 src/js/{eventSelectionJS.tw => eventSelection.js}              | 2 --
 src/js/{extendedFamilyModeJS.tw => extendedFamilyMode.js}      | 2 --
 src/js/{familyTree.tw => familyTree.js}                        | 1 -
 src/js/{foreachMacroJS.tw => foreachMacro.js}                  | 2 --
 src/js/{generateGenetics.tw => generateGenetics.js}            | 2 --
 src/js/{generateNewSlaveJS.tw => generateNewSlave.js}          | 2 --
 src/js/{hTagMacroJS.tw => hTagMacro.js}                        | 2 --
 src/js/{heroCreator.tw => heroCreator.js}                      | 2 --
 src/js/{itemAvailability.tw => itemAvailability.js}            | 2 --
 src/js/{pregJS.tw => preg.js}                                  | 2 --
 src/js/{quickListJS.tw => quickList.js}                        | 2 --
 src/js/{rbuttonJS.tw => rbutton.js}                            | 1 -
 src/js/{relationshipChecks.tw => relationshipChecks.js}        | 1 -
 src/js/{removeActiveSlave.tw => removeActiveSlave.js}          | 2 --
 src/js/{rulesAssistant.tw => rulesAssistant.js}                | 2 --
 src/js/{rulesAssistantOptions.tw => rulesAssistantOptions.js}  | 1 -
 src/js/{rulesAutosurgery.tw => rulesAutosurgery.js}            | 2 --
 src/js/{sexActsJS.tw => sexActs.js}                            | 2 --
 src/js/{slaveCostJS.tw => slaveCost.js}                        | 2 --
 src/js/{slaveGenerationJS.tw => slaveGeneration.js}            | 2 --
 src/js/{slaveSummaryWidgets.tw => slaveSummaryWidgets.js}      | 2 --
 src/js/{spanMacroJS.tw => spanMacro.js}                        | 2 --
 src/js/{storyJS.tw => story.js}                                | 2 --
 src/js/{summaryWidgets.tw => summaryWidgets.js}                | 2 --
 src/js/{textInput.tw => textInput.js}                          | 2 --
 src/js/{textboxJS.tw => textbox.js}                            | 2 --
 src/js/{utilJS.tw => util.js}                                  | 2 --
 src/js/{vignettes.tw => vignettes.js}                          | 2 --
 src/js/{walkPastJS.tw => walkPast.js}                          | 2 --
 src/js/{wombJS.tw => womb.js}                                  | 2 --
 src/pregmod/Jquery/{JS.tw => Jquery.js}                        | 1 -
 57 files changed, 106 deletions(-)
 rename src/SpecialForce/{JS.js => SpecialForce.js} (100%)
 rename src/art/{artJS.tw => art.js} (99%)
 rename src/art/{assistantArt.tw => assistantArt.js} (99%)
 rename src/art/vector/{Set_Colour_Outfit_JS.tw => Set_Colour_Outfit.js} (97%)
 rename src/art/vector/{Set_Colour_Skin_JS.tw => Set_Colour_Skin.js} (99%)
 rename src/art/vector_revamp/{vectorRevampedArtControlJS.tw => vectorRevampedArtControl.js} (99%)
 rename src/config/{sugarCubeConfig.tw => sugarCubeConfig.js} (93%)
 rename src/debugging/{debugJS.tw => debug.js} (99%)
 rename src/endWeek/{saChoosesOwnClothes.tw => saChoosesOwnClothes.js} (99%)
 rename src/endWeek/{saPornJS.tw => saPorn.js} (99%)
 rename src/endWeek/{saRest.tw => saRest.js} (99%)
 rename src/endWeek/{saServant.tw => saServant.js} (99%)
 rename src/endWeek/{saStayConfined.tw => saStayConfined.js} (99%)
 rename src/js/{DefaultRules.tw => DefaultRules.js} (99%)
 rename src/js/{PenthouseNaming.tw => PenthouseNaming.js} (98%)
 rename src/js/{SetBellySize.tw => SetBellySize.js} (95%)
 rename src/js/{accordianJS.tw => accordian.js} (97%)
 rename src/js/{assayJS.tw => assay.js} (99%)
 rename src/js/{assignJS.tw => assign.js} (99%)
 rename src/js/{birthJS.tw => birth.js} (99%)
 rename src/js/{bugReport.tw => bugReport.js} (99%)
 rename src/js/{colorModeJS.tw => colorMode.js} (97%)
 rename src/js/{dTree.min.tw => dTree.min.js} (99%)
 rename src/js/{datatypeCleanupJS.tw => datatypeCleanup.js} (99%)
 rename src/js/{displayVariables.tw => displayVariables.js} (98%)
 rename src/js/{economyJS.tw => economy.js} (99%)
 rename src/js/{eventSelectionJS.tw => eventSelection.js} (99%)
 rename src/js/{extendedFamilyModeJS.tw => extendedFamilyMode.js} (99%)
 rename src/js/{familyTree.tw => familyTree.js} (99%)
 rename src/js/{foreachMacroJS.tw => foreachMacro.js} (98%)
 rename src/js/{generateGenetics.tw => generateGenetics.js} (99%)
 rename src/js/{generateNewSlaveJS.tw => generateNewSlave.js} (99%)
 rename src/js/{hTagMacroJS.tw => hTagMacro.js} (98%)
 rename src/js/{heroCreator.tw => heroCreator.js} (87%)
 rename src/js/{itemAvailability.tw => itemAvailability.js} (99%)
 rename src/js/{pregJS.tw => preg.js} (99%)
 rename src/js/{quickListJS.tw => quickList.js} (99%)
 rename src/js/{rbuttonJS.tw => rbutton.js} (99%)
 rename src/js/{relationshipChecks.tw => relationshipChecks.js} (96%)
 rename src/js/{removeActiveSlave.tw => removeActiveSlave.js} (99%)
 rename src/js/{rulesAssistant.tw => rulesAssistant.js} (99%)
 rename src/js/{rulesAssistantOptions.tw => rulesAssistantOptions.js} (99%)
 rename src/js/{rulesAutosurgery.tw => rulesAutosurgery.js} (99%)
 rename src/js/{sexActsJS.tw => sexActs.js} (99%)
 rename src/js/{slaveCostJS.tw => slaveCost.js} (99%)
 rename src/js/{slaveGenerationJS.tw => slaveGeneration.js} (99%)
 rename src/js/{slaveSummaryWidgets.tw => slaveSummaryWidgets.js} (99%)
 rename src/js/{spanMacroJS.tw => spanMacro.js} (96%)
 rename src/js/{storyJS.tw => story.js} (99%)
 rename src/js/{summaryWidgets.tw => summaryWidgets.js} (98%)
 rename src/js/{textInput.tw => textInput.js} (98%)
 rename src/js/{textboxJS.tw => textbox.js} (97%)
 rename src/js/{utilJS.tw => util.js} (99%)
 rename src/js/{vignettes.tw => vignettes.js} (99%)
 rename src/js/{walkPastJS.tw => walkPast.js} (99%)
 rename src/js/{wombJS.tw => womb.js} (99%)
 rename src/pregmod/Jquery/{JS.tw => Jquery.js} (99%)

diff --git a/src/SpecialForce/JS.js b/src/SpecialForce/SpecialForce.js
similarity index 100%
rename from src/SpecialForce/JS.js
rename to src/SpecialForce/SpecialForce.js
diff --git a/src/art/artJS.tw b/src/art/art.js
similarity index 99%
rename from src/art/artJS.tw
rename to src/art/art.js
index 6158abe9e11..0f5c2f9ce94 100644
--- a/src/art/artJS.tw
+++ b/src/art/art.js
@@ -1,5 +1,3 @@
-:: Art JS [script]
-
 window.ArtControlRendered = function ArtControlRendered(slave, sizePlacement) {
 	const V = State.variables;
 	let fileName = "'resources/renders/";
diff --git a/src/art/assistantArt.tw b/src/art/assistantArt.js
similarity index 99%
rename from src/art/assistantArt.tw
rename to src/art/assistantArt.js
index dd39d8be45c..b441c2fb827 100644
--- a/src/art/assistantArt.tw
+++ b/src/art/assistantArt.js
@@ -1,5 +1,3 @@
-:: Assistant Art JS [script]
-
 /*
 Displays assistant images. Currently passage-based.
 sizePlacement: Image size/center.
diff --git a/src/art/vector/Set_Colour_Outfit_JS.tw b/src/art/vector/Set_Colour_Outfit.js
similarity index 97%
rename from src/art/vector/Set_Colour_Outfit_JS.tw
rename to src/art/vector/Set_Colour_Outfit.js
index dee464deef3..b48d35a8078 100644
--- a/src/art/vector/Set_Colour_Outfit_JS.tw
+++ b/src/art/vector/Set_Colour_Outfit.js
@@ -1,5 +1,3 @@
-:: Art_Vector_Set_Colour_Outfit_JS [script]
-
 window.Art_Vector_Set_Colour_Outfit = function(artSlave) {
 
 var s = {
diff --git a/src/art/vector/Set_Colour_Skin_JS.tw b/src/art/vector/Set_Colour_Skin.js
similarity index 99%
rename from src/art/vector/Set_Colour_Skin_JS.tw
rename to src/art/vector/Set_Colour_Skin.js
index 21caf1875f7..790667177f9 100644
--- a/src/art/vector/Set_Colour_Skin_JS.tw
+++ b/src/art/vector/Set_Colour_Skin.js
@@ -1,5 +1,3 @@
-:: Art_Vector_Set_Colour_Skin_JS [script]
-
 window.Art_Vector_Set_Colour_Skin = function(artSlave, outfitBaseColour) {
 
 /* create an aggregator object yielding all computed styles */
diff --git a/src/art/vector_revamp/vectorRevampedArtControlJS.tw b/src/art/vector_revamp/vectorRevampedArtControl.js
similarity index 99%
rename from src/art/vector_revamp/vectorRevampedArtControlJS.tw
rename to src/art/vector_revamp/vectorRevampedArtControl.js
index 72a9e372980..1bc9c96030a 100644
--- a/src/art/vector_revamp/vectorRevampedArtControlJS.tw
+++ b/src/art/vector_revamp/vectorRevampedArtControl.js
@@ -1,5 +1,3 @@
-:: Revamped Art Control [script]
-
 class ArtStyleEntry {
 	constructor(name) {
 		this.name = name;
diff --git a/src/config/sugarCubeConfig.tw b/src/config/sugarCubeConfig.js
similarity index 93%
rename from src/config/sugarCubeConfig.tw
rename to src/config/sugarCubeConfig.js
index 477f842262b..e8124b74e73 100644
--- a/src/config/sugarCubeConfig.tw
+++ b/src/config/sugarCubeConfig.js
@@ -1,6 +1,3 @@
-:: SugarCube configuration [script]
-
-
 /* Main SugarCube configuration file. */
 
 /* Change the starting passage from the default 'start' to 'Alpha disclaimer'. */
diff --git a/src/debugging/debugJS.tw b/src/debugging/debug.js
similarity index 99%
rename from src/debugging/debugJS.tw
rename to src/debugging/debug.js
index a9c993ef2ea..e58085d898d 100644
--- a/src/debugging/debugJS.tw
+++ b/src/debugging/debug.js
@@ -1,5 +1,3 @@
-:: DebugJS [script]
-
 /*
 Given an object, this will return an array where for each property of the original object, we include the object
 {variable: property, oldVal: _oldDiff.property, newVal: _newDiff.property}
diff --git a/src/endWeek/saChoosesOwnClothes.tw b/src/endWeek/saChoosesOwnClothes.js
similarity index 99%
rename from src/endWeek/saChoosesOwnClothes.tw
rename to src/endWeek/saChoosesOwnClothes.js
index 40e99e6cf6d..de58e03266c 100644
--- a/src/endWeek/saChoosesOwnClothes.tw
+++ b/src/endWeek/saChoosesOwnClothes.js
@@ -1,5 +1,3 @@
-:: saChoosesOwnClothes [script]
-
 window.saChoosesOwnClothes = (function() {
 	"use strict";
 	let V;
diff --git a/src/endWeek/saPornJS.tw b/src/endWeek/saPorn.js
similarity index 99%
rename from src/endWeek/saPornJS.tw
rename to src/endWeek/saPorn.js
index a8d5b27c92e..99cab8b193e 100644
--- a/src/endWeek/saPornJS.tw
+++ b/src/endWeek/saPorn.js
@@ -1,5 +1,3 @@
-:: SA porn JS [script]
-
 /* to later be rolled into saPorn */
 
 window.getHighestPorn = function(slave) {
diff --git a/src/endWeek/saRest.tw b/src/endWeek/saRest.js
similarity index 99%
rename from src/endWeek/saRest.tw
rename to src/endWeek/saRest.js
index 7d989c88391..f5688294be8 100644
--- a/src/endWeek/saRest.tw
+++ b/src/endWeek/saRest.js
@@ -1,5 +1,3 @@
-:: SA rest [script]
-
 window.saRest = function saRest(slave) {
 
 	var pronouns = getPronouns(slave);
diff --git a/src/endWeek/saServant.tw b/src/endWeek/saServant.js
similarity index 99%
rename from src/endWeek/saServant.tw
rename to src/endWeek/saServant.js
index 0034e8dfe3b..7de4c498313 100644
--- a/src/endWeek/saServant.tw
+++ b/src/endWeek/saServant.js
@@ -1,5 +1,3 @@
-:: SA servant [script]
-
 window.saServant = function saServant(slave) {
 
 	var pronouns = getPronouns(slave);
diff --git a/src/endWeek/saStayConfined.tw b/src/endWeek/saStayConfined.js
similarity index 99%
rename from src/endWeek/saStayConfined.tw
rename to src/endWeek/saStayConfined.js
index ba77cbcd68f..6ccc3d087fa 100644
--- a/src/endWeek/saStayConfined.tw
+++ b/src/endWeek/saStayConfined.js
@@ -1,5 +1,3 @@
-:: SA stay confined [script]
-
 window.saStayConfined = function saStayConfined(slave) {
 
 	var pronouns = getPronouns(slave);
diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.js
similarity index 99%
rename from src/js/DefaultRules.tw
rename to src/js/DefaultRules.js
index 443ab177c62..b723149cbc4 100644
--- a/src/js/DefaultRules.tw
+++ b/src/js/DefaultRules.js
@@ -1,4 +1,3 @@
-:: DefaultRules [script]
 // this code applies RA rules onto slaves
 
 window.DefaultRules = (function() {
diff --git a/src/js/PenthouseNaming.tw b/src/js/PenthouseNaming.js
similarity index 98%
rename from src/js/PenthouseNaming.tw
rename to src/js/PenthouseNaming.js
index 8bb274738a0..0bf340af6ff 100644
--- a/src/js/PenthouseNaming.tw
+++ b/src/js/PenthouseNaming.js
@@ -1,5 +1,3 @@
-:: PenthouseNaming [script]
-
 window.MasterSuiteUIName = function() {
 	const V = State.variables;
 	var name = "";
diff --git a/src/js/SetBellySize.tw b/src/js/SetBellySize.js
similarity index 95%
rename from src/js/SetBellySize.tw
rename to src/js/SetBellySize.js
index 48bb9d52070..7cf564990b3 100644
--- a/src/js/SetBellySize.tw
+++ b/src/js/SetBellySize.js
@@ -1,5 +1,3 @@
-:: SetBellySize [script]
-
 window.SetBellySize = function SetBellySize(slave) {
 	let _implantSize;
 	WombNormalizePreg(slave); /*now with support for legacy code that advance pregnancy by setting .preg++ */
diff --git a/src/js/accordianJS.tw b/src/js/accordian.js
similarity index 97%
rename from src/js/accordianJS.tw
rename to src/js/accordian.js
index 67555db4822..8946465faa6 100644
--- a/src/js/accordianJS.tw
+++ b/src/js/accordian.js
@@ -1,5 +1,3 @@
-:: accordionJS.tw [script]
-
 /* Accordion 000-250-006 */
 
 /*
diff --git a/src/js/assayJS.tw b/src/js/assay.js
similarity index 99%
rename from src/js/assayJS.tw
rename to src/js/assay.js
index bbf29cb494f..5106e1815f5 100644
--- a/src/js/assayJS.tw
+++ b/src/js/assay.js
@@ -1,5 +1,3 @@
-:: AssayJS [script]
-
 window.isSlim = function(slave) {
 	let slim = false;
 	const ArcologyZero = State.variables.arcologies[0];
diff --git a/src/js/assignJS.tw b/src/js/assign.js
similarity index 99%
rename from src/js/assignJS.tw
rename to src/js/assign.js
index 1665ef1787e..dd58152a1d5 100644
--- a/src/js/assignJS.tw
+++ b/src/js/assign.js
@@ -1,5 +1,3 @@
-:: assignJob [script]
-
 window.assignJob = function assignJob(slave, job) {
 	"use strict";
 	const V = State.variables;
diff --git a/src/js/birthJS.tw b/src/js/birth.js
similarity index 99%
rename from src/js/birthJS.tw
rename to src/js/birth.js
index 86e5522eee9..dfda1b3e016 100644
--- a/src/js/birthJS.tw
+++ b/src/js/birth.js
@@ -1,5 +1,3 @@
-:: birthJS [script]
-
 window.BirthDestinationText = function(choice,slave) {
 	var pronouns = getPronouns(slave);
 	var he = pronouns.pronoun, him = pronouns.object, his = pronouns.possessive, hers = pronouns.possessivePronoun, himself = pronouns.objectReflexive, boy = pronouns.noun;
diff --git a/src/js/bugReport.tw b/src/js/bugReport.js
similarity index 99%
rename from src/js/bugReport.tw
rename to src/js/bugReport.js
index 60d34860a38..b0ace2e4ef7 100644
--- a/src/js/bugReport.tw
+++ b/src/js/bugReport.js
@@ -1,4 +1,2 @@
-:: Bug Report [script]
-
 /*! <<bugreport>> macro for SugarCube 2.x */
 !function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2)throw new Error("<<bugreport>> macro requires SugarCube 2.0 or greater, aborting load");Macro.add("bugreport",{handler:function(){function serializeVariables(varObj,diffObj,doSort){function renderDiff(diff,orig){for(var keys=Object.keys(diff||{}),render=orig?clone(orig):{},i=0,klen=keys.length;klen>i;i++){var p=keys[i],diffP=diff[p];if(diffP===Diff.Op.Delete)delete render[p];else if(Array.isArray(diffP))switch(diffP[0]){case Diff.Op.SpliceArray:try{render.splice(diffP[1],1+(diffP[2]-diffP[1]))}catch(e){}break;case Diff.Op.Copy:render[p]=clone(diffP[1]);break;case Diff.Op.CopyDate:render[p]=new Date(diffP[1])}else{var recurse=renderDiff(diffP,render[p]);0!==Object.keys(recurse).length&&(render[p]=recurse)}}return render}var varList=[],diff=renderDiff(Diff.diff(varObj,diffObj));for(var p in diff){var sName="$"+(-1===p.search(/[^\w]/)?p:'"'+p+'"');varList.push(sName+"="+JSON.stringify(diff[p]))}return doSort&&("function"==typeof doSort?varList.sort(doSort):varList.sort()),0!==varList.length?varList.join(", "):""}var srcMatch,passages,varsPre,varsPost,dialog,dataEl,info=null!=this.args[0]&&Story.has(this.args[0])?Story.get(this.args[0]):null,last=State.length-1,source=unescape(window.location);null!==(srcMatch=/\/([^\/]+)$/.exec(source))&&(source=srcMatch[1]),passages=[];for(var i=0;last>=i;i++)passages.push('"'+State.index(i).title+'"');passages=passages.join(", "),varsPre=serializeVariables(State.index(0).variables,State.index(last).variables),varsPost=serializeVariables(State.index(last).variables,State.variables),dialog=UI.setup("Bug Report","bugreport"),dialog.innerHTML=(null!==info?'<div id="bugreport-info"></div>':"")+'<div><b>Bug report:</b> <a id="bugreport-data-select" class="link-internal macro-bugreport">[Select]</a></div><code id="bugreport-data" tabindex="0"></code>'+(/applewebkit|chrome/.test(Browser.userAgent)?"":'<div class="scroll-pad">&nbsp;</div>'),dataEl=dialog.querySelector("#bugreport-data"),null!==info&&new Wikifier(dialog.querySelector("#bugreport-info"),info.processText()),addAccessibleClickHandler("#bugreport-data-select",function(self){return function(){jQuery(dataEl).focus(),self.selectData(dataEl)}}(this.self)),insertText(dataEl,"[spoiler][code]"),insertElement(dataEl,"br"),insertText(dataEl,"SOURCE: "+source),insertElement(dataEl,"br"),insertElement(dataEl,"br"),insertText(dataEl,"PASSAGES:"),insertElement(dataEl,"br"),insertText(dataEl,passages),insertElement(dataEl,"br"),insertElement(dataEl,"br"),insertText(dataEl,"VARIABLES (PRE-EXECUTION):"),insertElement(dataEl,"br"),varsPre&&(insertText(dataEl,varsPre),insertElement(dataEl,"br")),insertElement(dataEl,"br"),insertText(dataEl,"VARIABLES (POST-EXECUTION):"),insertElement(dataEl,"br"),varsPost&&(insertText(dataEl,varsPost),insertElement(dataEl,"br")),insertText(dataEl,"[/code][/spoiler]"),UI.open()},selectData:function(e){var s,r;if(window.getSelection){s=window.getSelection();if(s.setBaseAndExtent){var l=(e.innerText.length>1)?e.innerText.length-1:1;try{s.setBaseAndExtent(e,0,e,l)}catch(error){r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else{if(window.opera&&e.innerHTML.substring(e.innerHTML.length-4)==='<br>'){e.innerHTML=e.innerHTML+'&nbsp;'}var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else if(document.getSelection){s=document.getSelection();r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}else if(document.selection){r=document.body.createTextRange();r.moveToElementText(e);r.select()}}})}();
diff --git a/src/js/colorModeJS.tw b/src/js/colorMode.js
similarity index 97%
rename from src/js/colorModeJS.tw
rename to src/js/colorMode.js
index ca282973d7c..f5b61a7b863 100644
--- a/src/js/colorModeJS.tw
+++ b/src/js/colorMode.js
@@ -1,5 +1,3 @@
-:: colorModeJS [script]
-
 window.flipColors = function (lightColorMap){
 	if ( !window.savedColorMap ){
 		window.savedColorMap = setColors(lightColorMap);
diff --git a/src/js/dTree.min.tw b/src/js/dTree.min.js
similarity index 99%
rename from src/js/dTree.min.tw
rename to src/js/dTree.min.js
index 0338634d374..b29089b8899 100644
--- a/src/js/dTree.min.tw
+++ b/src/js/dTree.min.js
@@ -1,4 +1,3 @@
-:: DTreeJS [script]
 /* This is the minified version of lodash, d3 and dTree */
 ;
 (function (window, define, exports) {
diff --git a/src/js/datatypeCleanupJS.tw b/src/js/datatypeCleanup.js
similarity index 99%
rename from src/js/datatypeCleanupJS.tw
rename to src/js/datatypeCleanup.js
index 63307a7559b..c033d0c26e8 100644
--- a/src/js/datatypeCleanupJS.tw
+++ b/src/js/datatypeCleanup.js
@@ -1,5 +1,3 @@
-:: Datatype Cleanup JS [script]
-
 /*
 	This function does not ensure values make sense. For example, it does not fix weird relations/relationships/rivalries/pregnancies/prosthetics.
 	It only makes sure most datatypes are correct, and sets to default if not. Number values are clamped to the correct bounds.
diff --git a/src/js/displayVariables.tw b/src/js/displayVariables.js
similarity index 98%
rename from src/js/displayVariables.tw
rename to src/js/displayVariables.js
index 0876395eaaa..c153952509e 100644
--- a/src/js/displayVariables.tw
+++ b/src/js/displayVariables.js
@@ -1,4 +1,2 @@
-:: Display Variables [script]
-
 /*! <<checkvars>> macro for SugarCube 2.x */
 !function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2)throw new Error("<<checkvars>> macro requires SugarCube 2.0 or greater, aborting load");Macro.add("checkvars",{handler:function(){function toString(value,indent){var baseType=typeof value;switch(baseType){case"number":return isNaN(value)?"NaN":isFinite(value)?String(value):"Infinity";case"string":return JSON.stringify(value);case"function":return"(function)";default:if("object"!==baseType||null==value)return String(value);var objType=Object.prototype.toString.call(value);if("[object Date]"===objType)return'(object: Date, value: "'+value.toISOString()+'")';if("[object RegExp]"===objType)return"(object: RegExp, value: "+value.toString()+")";var opener,closer,result=[],indentText="  ";return indent||(indent=""),("[object Set]"===objType||value instanceof Set)&&(value=Array.from(value)),Array.isArray(value)?(opener="[\n",closer="\n"+indent+"]",value.forEach(function(p,i){result.push(indent+indentText+i+" ⇒ "+toString(value[i],indent+indentText))}),Object.keys(value).forEach(function(p){/^\d+$/.test(p)||result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})):"[object Map]"===objType||value instanceof Map?(opener="{\n",closer="\n"+indent+"}",Array.from(value).map(function(kv){result.push(indent+indentText+toString(kv[0],indent+indentText)+" ⇒ "+toString(kv[1],indent+indentText))})):(opener="{\n",closer="\n"+indent+"}",Object.keys(value).forEach(function(p){result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})),opener+result.join(",\n")+closer}}var dialog,sv=State.variables,names=Object.keys(sv);if(dialog=UI.setup("Story $variables","checkvars"),0===names.length)return dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><p><em>No $variables currently set…</em></p>",void UI.open();dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><table><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody></tbody></table>"+(/applewebkit|chrome/.test(Browser.userAgent)?"":'<div class="scroll-pad">&nbsp;</div>');var tbody=dialog.querySelector("tbody");names.sort(function(a,b){return Util.isNumeric(a)&&Util.isNumeric(b)?Number(a)-Number(b):a.localeCompare(b)});for(var i=0;i<names.length;i++){var tr=document.createElement("tr"),tdName=document.createElement("td"),tdValue=document.createElement("td");tdName.textContent="$"+names[i],tdValue.textContent = toString(sv[names[i]]),tr.appendChild(tdName),tr.appendChild(tdValue),tbody.appendChild(tr)}UI.open()}})}();
diff --git a/src/js/economyJS.tw b/src/js/economy.js
similarity index 99%
rename from src/js/economyJS.tw
rename to src/js/economy.js
index 7cea434cf44..21983bcdc88 100644
--- a/src/js/economyJS.tw
+++ b/src/js/economy.js
@@ -1,5 +1,3 @@
-:: EconomyJS [script]
-
 window.LivingRule = Object.freeze({LUXURIOUS: 'luxurious', NORMAL: 'normal', SPARE: 'spare'});
 window.Job = Object.freeze({
 	DAIRY: 'work in the dairy', MILKMAID: 'be the Milkmaid', MASTER_SUITE: 'serve in the master suite', CONCUBINE: 'be your Concubine',
diff --git a/src/js/eventSelectionJS.tw b/src/js/eventSelection.js
similarity index 99%
rename from src/js/eventSelectionJS.tw
rename to src/js/eventSelection.js
index a9797ef3270..5365e1d048e 100644
--- a/src/js/eventSelectionJS.tw
+++ b/src/js/eventSelection.js
@@ -1,5 +1,3 @@
-:: EventSelectionJS [script]
-
 window.generateRandomEventPoolStandard = function(eventSlave) {
 
 /* STANDARD EVENTS */
diff --git a/src/js/extendedFamilyModeJS.tw b/src/js/extendedFamilyMode.js
similarity index 99%
rename from src/js/extendedFamilyModeJS.tw
rename to src/js/extendedFamilyMode.js
index 442370b0363..64b0ffd1242 100644
--- a/src/js/extendedFamilyModeJS.tw
+++ b/src/js/extendedFamilyMode.js
@@ -1,5 +1,3 @@
-:: Extended Family Mode JS [script]
-
 /* see documentation for details /devNotes/Extended Family Mode Explained.txt */
 
 window.isMotherP = function isMotherP(daughter, mother) {
diff --git a/src/js/familyTree.tw b/src/js/familyTree.js
similarity index 99%
rename from src/js/familyTree.tw
rename to src/js/familyTree.js
index 6cf960120fb..655c2d95425 100644
--- a/src/js/familyTree.tw
+++ b/src/js/familyTree.js
@@ -1,4 +1,3 @@
-:: FamilyTreeJS [script]
 'use strict';
 
 var lastActiveSlave, lastSlaves, lastPC;
diff --git a/src/js/foreachMacroJS.tw b/src/js/foreachMacro.js
similarity index 98%
rename from src/js/foreachMacroJS.tw
rename to src/js/foreachMacro.js
index 7453ee70cff..be77e940d95 100644
--- a/src/js/foreachMacroJS.tw
+++ b/src/js/foreachMacro.js
@@ -1,5 +1,3 @@
-:: Foreach Macro JS [script]
-
 Macro.add('foreach', {
 	skipArgs : true,
 	tags : null,
diff --git a/src/js/generateGenetics.tw b/src/js/generateGenetics.js
similarity index 99%
rename from src/js/generateGenetics.tw
rename to src/js/generateGenetics.js
index 3a450dd1961..4121ddfe06a 100644
--- a/src/js/generateGenetics.tw
+++ b/src/js/generateGenetics.js
@@ -1,5 +1,3 @@
-:: generateGenetics [script]
-
 // Generates a child's genetics based off mother and father and returns it as an object to be attached to an ovum
 window.generateGenetics = (function() {
 	"use strict";
diff --git a/src/js/generateNewSlaveJS.tw b/src/js/generateNewSlave.js
similarity index 99%
rename from src/js/generateNewSlaveJS.tw
rename to src/js/generateNewSlave.js
index 4953ae85561..deabc979139 100644
--- a/src/js/generateNewSlaveJS.tw
+++ b/src/js/generateNewSlave.js
@@ -1,5 +1,3 @@
-:: Generate New Slave JS [script]
-
 window.GenerateNewSlave = (function(){
 	'use strict';
 	let V, slave, chance;
diff --git a/src/js/hTagMacroJS.tw b/src/js/hTagMacro.js
similarity index 98%
rename from src/js/hTagMacroJS.tw
rename to src/js/hTagMacro.js
index 25a3d459fef..1f4eaa36511 100644
--- a/src/js/hTagMacroJS.tw
+++ b/src/js/hTagMacro.js
@@ -1,5 +1,3 @@
-:: HTAG Macro JS [script]
-
 /*
  * <<htag>> macro
  * A simple macro which allows to create wrapping html elements with dynamic IDs.
diff --git a/src/js/heroCreator.tw b/src/js/heroCreator.js
similarity index 87%
rename from src/js/heroCreator.tw
rename to src/js/heroCreator.js
index 8d2d7c9c8b9..ae2ef6d1ca4 100644
--- a/src/js/heroCreator.tw
+++ b/src/js/heroCreator.js
@@ -1,5 +1,3 @@
-:: heroCreator.tw [script]
-
 window.getHeroSlave = function(heroSlave, baseHeroSlave) {
 	var newSlave = clone(baseHeroSlave);
 	for (var attrname in heroSlave) {
diff --git a/src/js/itemAvailability.tw b/src/js/itemAvailability.js
similarity index 99%
rename from src/js/itemAvailability.tw
rename to src/js/itemAvailability.js
index 0f585e7ba5e..77b5c003f26 100644
--- a/src/js/itemAvailability.tw
+++ b/src/js/itemAvailability.js
@@ -1,5 +1,3 @@
-:: itemAvailability [script]
-
 /* intended to condense the clothing/toy/etc availability checks into something less asinine */
 window.isItemAccessible = function(string) {
 	const V = State.variables;
diff --git a/src/js/pregJS.tw b/src/js/preg.js
similarity index 99%
rename from src/js/pregJS.tw
rename to src/js/preg.js
index df33cb05f7a..fca26a406d0 100644
--- a/src/js/pregJS.tw
+++ b/src/js/preg.js
@@ -1,5 +1,3 @@
-:: pregJS [script]
-
 /* Major props to the anons who worked together to forge the Super Pregnancy Project. Let your legacy go unforgotten.*/
 window.getPregBellySize = function(s) {
 	var gestastionWeek = s.preg;
diff --git a/src/js/quickListJS.tw b/src/js/quickList.js
similarity index 99%
rename from src/js/quickListJS.tw
rename to src/js/quickList.js
index 01df5cb5169..0a57d7c224c 100644
--- a/src/js/quickListJS.tw
+++ b/src/js/quickList.js
@@ -1,5 +1,3 @@
-:: Quick List [script]
-
 window.sortDomObjects = function (objects, attrName, reverse = 0) {
 	reverse = (reverse) ? -1 : 1;
 	function sortingByAttr (a, b) {
diff --git a/src/js/rbuttonJS.tw b/src/js/rbutton.js
similarity index 99%
rename from src/js/rbuttonJS.tw
rename to src/js/rbutton.js
index 1c842ff6b94..aee998bf910 100644
--- a/src/js/rbuttonJS.tw
+++ b/src/js/rbutton.js
@@ -1,4 +1,3 @@
-:: rbuttonJS [script]
 /* This is modified radiobutton macro, for automatic checked state setup*/
 /* Usage (be sure to use quotes around parameters):
 
diff --git a/src/js/relationshipChecks.tw b/src/js/relationshipChecks.js
similarity index 96%
rename from src/js/relationshipChecks.tw
rename to src/js/relationshipChecks.js
index 765e2fea22c..c4cea47b7e7 100644
--- a/src/js/relationshipChecks.tw
+++ b/src/js/relationshipChecks.js
@@ -1,4 +1,3 @@
-:: relationshipChecks [script]
 window.rivalryTerm = function(id) {
 	if (id.rivalry === 1) {
 		return `growing rival`;
diff --git a/src/js/removeActiveSlave.tw b/src/js/removeActiveSlave.js
similarity index 99%
rename from src/js/removeActiveSlave.tw
rename to src/js/removeActiveSlave.js
index 6bffe5cd384..b28dc6a6760 100644
--- a/src/js/removeActiveSlave.tw
+++ b/src/js/removeActiveSlave.js
@@ -1,5 +1,3 @@
-:: Remove activeSlave JS [script]
-
 window.removeActiveSlave = function removeActiveSlave() {
 	"use strict";
 	const V = State.variables;
diff --git a/src/js/rulesAssistant.tw b/src/js/rulesAssistant.js
similarity index 99%
rename from src/js/rulesAssistant.tw
rename to src/js/rulesAssistant.js
index f496cdbb87f..285bde3f7ff 100644
--- a/src/js/rulesAssistant.tw
+++ b/src/js/rulesAssistant.js
@@ -1,5 +1,3 @@
-:: rulesAssistant [script]
-
 window.hasSurgeryRule = function(slave, rules) {
 	return rules.some(
 		rule => ruleApplied(slave, rule) && rule.set.autoSurgery > 0);
diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.js
similarity index 99%
rename from src/js/rulesAssistantOptions.tw
rename to src/js/rulesAssistantOptions.js
index e3860e426e1..50d2fbfde19 100644
--- a/src/js/rulesAssistantOptions.tw
+++ b/src/js/rulesAssistantOptions.js
@@ -1,4 +1,3 @@
-:: Rules Assistant Options [script]
 // rewrite of the rules assistant options page in javascript
 // uses an object-oriented widget pattern
 // wrapped in a closure so as not to pollute the global namespace
diff --git a/src/js/rulesAutosurgery.tw b/src/js/rulesAutosurgery.js
similarity index 99%
rename from src/js/rulesAutosurgery.tw
rename to src/js/rulesAutosurgery.js
index 0152b2c95f8..c74aefbf714 100644
--- a/src/js/rulesAutosurgery.tw
+++ b/src/js/rulesAutosurgery.js
@@ -1,5 +1,3 @@
-:: rules autosurgery js [script]
-
 window.rulesAutosurgery = (function() {
 	"use strict";
 	let V;
diff --git a/src/js/sexActsJS.tw b/src/js/sexActs.js
similarity index 99%
rename from src/js/sexActsJS.tw
rename to src/js/sexActs.js
index b9945e79ff3..362f66bba30 100644
--- a/src/js/sexActsJS.tw
+++ b/src/js/sexActs.js
@@ -1,5 +1,3 @@
-:: sexActJS[script]
-
 /*
  times is how many times to increment the anal counts.
  if left undefined it will assume it to be 1.
diff --git a/src/js/slaveCostJS.tw b/src/js/slaveCost.js
similarity index 99%
rename from src/js/slaveCostJS.tw
rename to src/js/slaveCost.js
index 3a12643876a..4a562f3f88f 100644
--- a/src/js/slaveCostJS.tw
+++ b/src/js/slaveCost.js
@@ -1,5 +1,3 @@
-:: Slave Cost JS [script]
-
 window.Beauty = (function() {
 	"use strict";
 	let V, arcology, beauty;
diff --git a/src/js/slaveGenerationJS.tw b/src/js/slaveGeneration.js
similarity index 99%
rename from src/js/slaveGenerationJS.tw
rename to src/js/slaveGeneration.js
index e9aa0247ffb..9e03b7e2e94 100644
--- a/src/js/slaveGenerationJS.tw
+++ b/src/js/slaveGeneration.js
@@ -1,5 +1,3 @@
-:: Slave Generation JS [script]
-
 window.nationalityToRace = function nationalityToRace(slave) {
 	slave.race = hashChoice(setup.raceSelector[slave.nationality] || setup.raceSelector[""]);
 };
diff --git a/src/js/slaveSummaryWidgets.tw b/src/js/slaveSummaryWidgets.js
similarity index 99%
rename from src/js/slaveSummaryWidgets.tw
rename to src/js/slaveSummaryWidgets.js
index 560fd3dc2d0..9da602b0a23 100644
--- a/src/js/slaveSummaryWidgets.tw
+++ b/src/js/slaveSummaryWidgets.js
@@ -1,5 +1,3 @@
-:: Slave Summary Widgets JS [script]
-
 window.clearSummaryCache = function clearSummaryCache(slave) {
 	if (!slave)
 		setup.summaryCache = {};
diff --git a/src/js/spanMacroJS.tw b/src/js/spanMacro.js
similarity index 96%
rename from src/js/spanMacroJS.tw
rename to src/js/spanMacro.js
index 47dd2b5c19b..dead2c13ec4 100644
--- a/src/js/spanMacroJS.tw
+++ b/src/js/spanMacro.js
@@ -1,5 +1,3 @@
-:: Span Macro JS [script]
-
 /*
  * <<span>> macro
  * A minimal macro which allows to create <span> elements with dynamic IDs.
diff --git a/src/js/storyJS.tw b/src/js/story.js
similarity index 99%
rename from src/js/storyJS.tw
rename to src/js/story.js
index a209bd90ae2..2680a4e5a98 100644
--- a/src/js/storyJS.tw
+++ b/src/js/story.js
@@ -1,5 +1,3 @@
-:: StoryJS [script]
-
 /*config.history.tracking = false;*/
 State.expired.disable;
 
diff --git a/src/js/summaryWidgets.tw b/src/js/summaryWidgets.js
similarity index 98%
rename from src/js/summaryWidgets.tw
rename to src/js/summaryWidgets.js
index b9cc28479bc..b55dd532714 100644
--- a/src/js/summaryWidgets.tw
+++ b/src/js/summaryWidgets.js
@@ -1,5 +1,3 @@
-:: Summary Widgets JS [script]
-
 window.SlaveStatClamp = function SlaveStatClamp(slave) {
 	slave.energy = Math.clamp(slave.energy, 0, 100);
 	const V = State.variables;
diff --git a/src/js/textInput.tw b/src/js/textInput.js
similarity index 98%
rename from src/js/textInput.tw
rename to src/js/textInput.js
index 35a28459f90..86d6eebae83 100644
--- a/src/js/textInput.tw
+++ b/src/js/textInput.js
@@ -1,5 +1,3 @@
-:: textinput [script]
-
 Macro.add("textinput", {
 	// Signifies that the macro is a container macro.
 	tags: null,
diff --git a/src/js/textboxJS.tw b/src/js/textbox.js
similarity index 97%
rename from src/js/textboxJS.tw
rename to src/js/textbox.js
index 225dcfe50c0..5dd0388fe6f 100644
--- a/src/js/textboxJS.tw
+++ b/src/js/textbox.js
@@ -1,5 +1,3 @@
-:: textboxJS [script]
-
 /* Nicked off greyelf, works for replace textboxes */
 window.setReplaceTextboxMaxLength = function (storyVarName, maxLength) {
 	var textboxId = '#textbox-' + Util.slugify(storyVarName);
diff --git a/src/js/utilJS.tw b/src/js/util.js
similarity index 99%
rename from src/js/utilJS.tw
rename to src/js/util.js
index 93e31243712..db4777860e7 100644
--- a/src/js/utilJS.tw
+++ b/src/js/util.js
@@ -1,5 +1,3 @@
-:: UtilJS [script]
-
 /*
  * Height.mean(nationality, race, genes, age) - returns the mean height for the given combination and age in years (>=2)
  * Height.mean(nationality, race, genes) - returns the mean adult height for the given combination
diff --git a/src/js/vignettes.tw b/src/js/vignettes.js
similarity index 99%
rename from src/js/vignettes.tw
rename to src/js/vignettes.js
index 20046ade726..c9a0edd22f1 100644
--- a/src/js/vignettes.tw
+++ b/src/js/vignettes.js
@@ -1,5 +1,3 @@
-:: VignettesJS [script]
-
 window.GetVignette = function GetVignette(slave) {
 	const V = State.variables;
 	let vignettes = [];
diff --git a/src/js/walkPastJS.tw b/src/js/walkPast.js
similarity index 99%
rename from src/js/walkPastJS.tw
rename to src/js/walkPast.js
index 05f749b3523..6636d9892ba 100644
--- a/src/js/walkPastJS.tw
+++ b/src/js/walkPast.js
@@ -1,5 +1,3 @@
-:: Walk Past JS [script]
-
 /* temporary container until the entire thing is complete. No point in not deploying the working functions, you know? */
 
 window.primeSlave = function(activeSlave, seed) {
diff --git a/src/js/wombJS.tw b/src/js/womb.js
similarity index 99%
rename from src/js/wombJS.tw
rename to src/js/womb.js
index 09caebe357c..032ef0fb95a 100644
--- a/src/js/wombJS.tw
+++ b/src/js/womb.js
@@ -1,5 +1,3 @@
-:: wombJS [script]
-
 /*
 This is womb processor/simulator script. It takes care about calculation of belly sizes based on individual fetus sizes, with full support of broodmothers implant random turning on and off possibility. Also this can be expanded to store more parents data in each individual fetus in future.
 Design limitations:
diff --git a/src/pregmod/Jquery/JS.tw b/src/pregmod/Jquery/Jquery.js
similarity index 99%
rename from src/pregmod/Jquery/JS.tw
rename to src/pregmod/Jquery/Jquery.js
index 11083196707..cb826d7932b 100644
--- a/src/pregmod/Jquery/JS.tw
+++ b/src/pregmod/Jquery/Jquery.js
@@ -1,4 +1,3 @@
-:: JQuery UI [script]
 (function (window, define, exports) {
 /*! jQuery UI - v1.12.1 - 2016-09-14
 * http://jqueryui.com
-- 
GitLab