diff --git a/mods/funnynames.js b/mods/funnynames.js new file mode 100644 index 00000000..4413cb93 --- /dev/null +++ b/mods/funnynames.js @@ -0,0 +1,121 @@ +function swapObjectValues(obj) { + const keys = Object.keys(obj); + while (keys.length > 1) { + const index1 = Math.floor(Math.random() * keys.length); + let index2 = Math.floor(Math.random() * keys.length); + while (index2 === index1) { + index2 = Math.floor(Math.random() * keys.length); + } + const temp = obj[keys[index1]]; + obj[keys[index1]] = obj[keys[index2]]; + obj[keys[index2]] = temp; + keys.splice(index1, 1); + keys.splice(keys.indexOf(keys[index2]), 1); + } + return obj; + } + function createLetterObject(str) { + const letterObject = {}; + for (let i = 0; i < str.length; i++) { + const letter = str[i]; + if (!letterObject[letter]) { + letterObject[letter] = letter; + } else { + let count = 2; + while (letterObject[letter + count]) { + count++; + } + letterObject[letter + count] = letter; + } + } + return letterObject; + } + function objectValuesToString(obj) { + let result = ""; + for (const key in obj) { + result += obj[key]; + } + return result; + } +if (!settings.funnyname){settings.funnyname = {}; saveSettings()} +elements.name_settings = { + color: elements.image.color, + category: "funny name tools", + canPlace: false, + onSelect: function(){ + var doVowelSwapping = prompt("Would you like to swap the vowels in the names? Type yes or no.", "no") + if (doVowelSwapping == "yes"){settings.funnyname.doVowelSwapping = true} else {settings.funnyname.doVowelSwapping = false} + var doNameSwapping = prompt("Would you like to swap the names of the elements? Type yes or no.", "no") + if (doNameSwapping == "yes"){settings.funnyname.doNameSwapping = true} else {settings.funnyname.doNameSwapping = false} + var doLetterSwapping = prompt("Would you like to swap the letters in the names? Type yes or no.", "no") + if (doLetterSwapping == "yes"){settings.funnyname.doLetterSwapping = true} else {settings.funnyname.doLetterSwapping = false} + var doNameRates = prompt("Would you like to make the names a rating? If yes, this will set all others to no (it is incompatible.) Type yes or no.", "no") + if (doNameRates == "yes"){ + settings.funnyname.doNameRates = true + settings.funnyname.doNameSwapping = false + settings.funnyname.doVowelSwapping = false + settings.funnyname.doLetterSwapping = false + } else {settings.funnyname.doNameRates = false} + saveSettings() + } +} +runAfterAutogen( + function(){ + if (settings.funnyname.doVowelSwapping){ + for (let elementname in elements){ + if (elementname != "name_settings"){ + let newelementname = elementname.replaceAll("e", "@") + newelementname = newelementname.replaceAll("o", "e") + newelementname = newelementname.replaceAll("@", "o") + newelementname = newelementname.replaceAll("a", "*") + newelementname = newelementname.replaceAll("u", "a") + newelementname = newelementname.replaceAll("i", "u") + newelementname = newelementname.replaceAll("*", "i") + elements[elementname].name = newelementname + } + } + } + if (settings.funnyname.doNameSwapping){ + let listofnames = {} + for (let elementname in elements){ + if (elementname != "name_settings"){ + if (elements[elementname].name){listofnames[elementname] = elements[elementname].name} else {listofnames[elementname] = elementname} + } + } + listofnames = swapObjectValues(listofnames) + for (let key in listofnames){ + elements[key].name = listofnames[key] + } + } + if (settings.funnyname.doLetterSwapping){ + for (let elementname in elements){ + if (elementname != "name_settings"){ + let newelementname = {} + if (elements[elementname].name){newelementname = createLetterObject(elements[elementname].name)} else {newelementname = createLetterObject(elementname)} + newelementname = swapObjectValues(newelementname) + elements[elementname].name = objectValuesToString(newelementname) + } + } + } + if (settings.funnyname.doNameRates){ + for (let elementname in elements){ + if (elementname != "name_settings"){ + var randomRating = Math.floor(Math.random() * 11) + switch(randomRating){ + case 0: elements[elementname].name = "absolutely_horrible"; break + case 1: elements[elementname].name = "horrible"; break + case 2: elements[elementname].name = "awful"; break + case 3: elements[elementname].name = "poor"; break + case 4: elements[elementname].name = "mediocre"; break + case 5: elements[elementname].name = "decent"; break + case 6: elements[elementname].name = "good"; break + case 7: elements[elementname].name = "great"; break + case 8: elements[elementname].name = "super_great"; break + case 9: elements[elementname].name = "absolutely_great"; break + case 10: elements[elementname].name = "one_of_the_best"; break + } + } + } + } + } +) \ No newline at end of file diff --git a/mods/nousersthings.js b/mods/nousersthings.js index de772824..5aedfe34 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -2742,7 +2742,7 @@ elements.ray_emitter = { // console.log(lcoord) if (isEmpty(lx,ly)){ createPixel(pixel.rayElement, lx, ly) - pixelMap[lx][ly].temp = pixelMap[x][y].temp + pixelMap[lx][ly].temp = pixel.temp if (pixel.rayElement == "ray"){ pixelMap[lx][ly].rColor = pixel.color pixelMap[lx][ly].color = pixel.color @@ -2878,7 +2878,7 @@ elements.specific_ray_emitter = { // console.log(lcoord) if (isEmpty(lx,ly)){ createPixel(pixel.rayElement, lx, ly) - pixelMap[lx][ly].temp = pixelMap[x][y].temp + pixelMap[lx][ly].temp = pixel.temp if (pixel.rayElement == "ray"){ pixelMap[lx][ly].rColor = pixel.color pixelMap[lx][ly].color = pixel.color