diff --git a/mods/fantasy_elements.js b/mods/fantasy_elements.js index 09f3c813..4ca0481d 100644 --- a/mods/fantasy_elements.js +++ b/mods/fantasy_elements.js @@ -1,4 +1,37 @@ +// 1.0 update +// adds dragon breath +// adds frostbite +// adds pulsium +// adds pulsium bar +// adds goblins delight +// adds pheonix +// adds pheonix ash +// adds baby pheonix +// adds ice pheonix + +// 1.1 update +// adds dragon scale +// adds mystic runes +// adds enchanted wood +// adds quartzium +// adds quartz +// adds moonite + +// 1.2 update +// fixed visibility bug and some errors +// adds faustium +// adds nebulaflare +// adds flaro +// adds aurorium +// adds glimmerium +// adds ozmoz +// adds goblin +// adds fenzium +// adds sceptrium +// adds sceptrium dust + // 1.3.2 fantasy_elements.js mod +// added changelog // adds plode a bomb // 1.4 the golem mod @@ -12,6 +45,11 @@ // iced pheonix at 700 degrees becomes pheonix // added blood golem +// 1.5 update +// corrected the 'phoenix' wrong spelling mistake to pheonix +// added grethe +// added grothea + elements.dragon_breath = { color: "#f94e4e", behavior: behaviors.GAS, @@ -110,7 +148,7 @@ elements.pheonix = { baby: "baby_pheonix", }; -elements.phoenix_ash = { +elements.pheonix_ash = { color: "#a8a8a5", behavior: behaviors.POWDER, category: "fantasy", @@ -134,7 +172,7 @@ elements.baby_pheonix = { burnTime:19, state: "solid", stateLow: "iced_pheonix", - breakInto: "phoenix_ash", + breakInto: "pheonix_ash", density: 850, conduct: 1, }; @@ -738,3 +776,25 @@ elements.blood_golem= { "category":"fantasy", "temp": 10, }; + +elements.grethe = { + color: "#51f542", + "behavior": [ + "XX|XX|DL", + "SA|XX|M2", + "XX|M1|XX", + ], + category: "fantasy", + state: "solid", +}; + +elements.grothea = { + color: ["#d742f5","#c246db","#772987"], + "behavior": [ + "M2|XX|XX", + "SA|M1|XX", + "XX|XX|DL", + ], + category: "fantasy", + state: "solid", +}; diff --git a/mods/jaydsfunctions.js b/mods/jaydsfunctions.js new file mode 100644 index 00000000..724ace4b --- /dev/null +++ b/mods/jaydsfunctions.js @@ -0,0 +1,111 @@ +//jaydsfunctions +erase1Var = 0; +elements.selective_eraser = { + color: ["#ffff00","#ffff00","#ffff00","#555555","#555555","#555555"], + category: "tools", + tool: function(pixel) { + if (pixel.element === erase1Var) { + deletePixel(pixel.x, pixel.y); + } + }, + onSelect: function() { + var answer1 = prompt("Please input what element should be erased.",(erase1Var||undefined)); + if (!answer1) { return } + erase1Var = answer1; + } +}, +explode1Var = 0; +elements.selective_exploder = { + color: ["#ff0000","#ff0000","#ff0000","#555555","#555555","#555555"], + category: "tools", + tool: function(pixel) { + if (pixel.element === explode1Var) { + changePixel(pixel, "explosion") + } + }, + onSelect: function() { + var answer2 = prompt("Please input what element to explode.",(explode1Var||undefined)); + if (!answer2) { return } + explode1Var = answer2; + } +}, +convert11Var = 0; +convert22Var = 0; +elements.converter_tool = { + color: ["#ffffff","#ffffff","#ffffff","#555555","#555555","#555555"], + darkText: true, + category: "tools", + tool: function(pixel) { + if (pixel.element === convert11Var) { + changePixel(pixel, convert22Var) + } + }, + onSelect: function() { + var answer3 = prompt("Please input what should element be converted.",(convert11Var||undefined)); + if (!answer3) { return } + convert11Var = answer3; + var answer4 = prompt("Please input what element to convert into.",(convert22Var||undefined)); + if (!answer4) { return } + convert22Var = answer4; + } +}, +elements.fast_bomb = { + color: "#524c41", + category: "weapons", + state: "solid", + behavior: [ + "XX|EX:10>explosion|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>explosion|M2", + ], + tick: function(pixel) { + for (var i=0; i<3; i++) { + if (!tryMove(pixel, pixel.x, pixel.y+1)) { + if (!isEmpty(pixel.x, pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "fast_bomb") { break; } + } + } + } + }, + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +}, +exclude1Var = 0; +elements.exclusive_eraser = { + color: ["#ff5a00","#ff5a00","#ff5a00","#555555","#555555","#555555"], + category: "tools", + tool: function(pixel) { + if (pixel.element !== exclude1Var) { + deletePixel(pixel.x, pixel.y); + } + }, + onSelect: function() { + var answer5 = prompt("Please input what element shouldn't be erased.",(exclude1Var||undefined)); + if (!answer5) { return } + exclude1Var = answer5; + } +}, +elements.tenth_heater = { + category: "special", + color: "#ff0000", + behavior: [ + "XX|HT:0.1|XX", + "HT:0.1|XX|HT:0.1", + "XX|HT:0.1|XX", + ], + ignore: "tenth_heater" +}, +elements.e_tenth_heater = { + category: "special", + color: "#ff0000", + behavior: behaviors.WALL, + behaviorOn: [ + "XX|HT:0.1|XX", + "HT:0.1|XX|HT:0.1", + "XX|HT:0.1|XX", + ], + ignore: "tenth_heater", + conduct: 1 +} \ No newline at end of file diff --git a/mods/moreViews.js b/mods/moreViews.js index dbd8d9ab..1d874d60 100644 --- a/mods/moreViews.js +++ b/mods/moreViews.js @@ -35,7 +35,7 @@ setView = (n) => { } for (const i in views) { - if (i < 5) continue; + if (i < 4) continue; const option = document.createElement("option"); option.setAttribute("value", i); option.innerText = views[i]; diff --git a/mods/onecolor.js b/mods/onecolor.js index 2820328c..b5320f25 100644 --- a/mods/onecolor.js +++ b/mods/onecolor.js @@ -44,4 +44,103 @@ window.addEventListener('load', function() { }*/ return color; } + pixelTempCheck = function(pixel){ + if (pixel.del) { return } + var elementInfo = elements[pixel.element]; + if (pixel.temp < absoluteZero) { // Absolute Zero + pixel.temp = absoluteZero; + } + // If the pixel's temp >= the elementInfo tempHigh, change pixel.element to elementInfo.stateHigh + if (pixel.temp >= elementInfo.tempHigh) { + var result = elementInfo.stateHigh; + if (elementInfo.extraTempHigh) { + for (var extraTemp in elementInfo.extraTempHigh) { + if (pixel.temp >= extraTemp) { + result = elementInfo.extraTempHigh[extraTemp]; + } + } + } + // If result is an array, choose a random item + if (Array.isArray(result)) { + result = result[Math.floor(Math.random() * result.length)]; + } + if (result === null) {deletePixel(pixel.x,pixel.y);return false} + else { + if (elements[result].customColor) { + changePixel(pixel,result,false); + pixel.color = color; + } + else if (elementInfo.stateHighColor) { + changePixel(pixel,result,false); + pixel.color = pixelColorPick(pixel,elementInfo.stateHighColor); + } + else if (elementInfo.stateHighColorMultiplier) { + var color = pixel.color; + changePixel(pixel,result,false); + var rgb = color.match(/\d+/g); + var m = elementInfo.stateHighColorMultiplier; + if (Array.isArray(m)) { + m = m[0]; + } + var r = Math.floor(rgb[0] * m); + var g = Math.floor(rgb[1] * m); + var b = Math.floor(rgb[2] * m); + // Make sure the color is within the RGB range + r = Math.max(0, Math.min(255, r)); + g = Math.max(0, Math.min(255, g)); + b = Math.max(0, Math.min(255, b)); + pixel.color = "rgb("+r+","+g+","+b+")"; + } + else { changePixel(pixel,result,false); } + if (elementInfo.fireColor && result==="fire") { + pixel.color = pixelColorPick(pixel,elementInfo.fireColor); + } + } + } + // If the pixel's temp <= the elementInfo tempLow, change pixel.element to elementInfo.stateLow + else if (pixel.temp <= elementInfo.tempLow) { + var result = elementInfo.stateLow; + if (elementInfo.extraTempLow) { + for (var extraTemp in elementInfo.extraTempLow) { + if (pixel.temp <= extraTemp) { + result = elementInfo.extraTempLow[extraTemp]; + } + } + } + // If result is an array, choose a random item + if (Array.isArray(result)) { + result = result[Math.floor(Math.random() * result.length)]; + } + if (result === null) {deletePixel(pixel.x,pixel.y);return false} + else { + if (elements[result].customColor) { + changePixel(pixel,result,false); + pixel.color = color; + } + else if (elementInfo.stateLowColor) { + changePixel(pixel,result,false); + pixel.color = pixelColorPick(pixel,elementInfo.stateLowColor); + } + else if (elementInfo.stateLowColorMultiplier) { + var color = pixel.color; + changePixel(pixel,result,false); + var rgb = color.match(/\d+/g); + var m = elementInfo.stateLowColorMultiplier; + if (Array.isArray(m)) { + m = m[0]; + } + var r = Math.floor(rgb[0] * m); + var g = Math.floor(rgb[1] * m); + var b = Math.floor(rgb[2] * m); + // Make sure the color is within the RGB range + r = Math.max(0, Math.min(255, r)); + g = Math.max(0, Math.min(255, g)); + b = Math.max(0, Math.min(255, b)); + pixel.color = "rgb("+r+","+g+","+b+")"; + } + else { changePixel(pixel,result,false); } + } + } + return true; + } }); diff --git a/mods/weapons.js b/mods/weapons.js index 3eef74c2..6c8181a3 100644 --- a/mods/weapons.js +++ b/mods/weapons.js @@ -509,4 +509,87 @@ tick: function(pixel) { }}}, category: "aircrafts", breakInto: "metal_scrap" - } \ No newline at end of file + }, +elements.machine_for_throwing_bombs_at_you_left = { + color: "#524c41", + behavior: behaviors.WALL, + behaviorOn: [ + "XX|XX|XX", + "CR:bombs_for_throwing_at_you_left|XX|XX", + "XXXX|XX", + ], + category: "weapons", + conduct: 1 +}, +elements.bombs_for_throwing_at_you_left = { + color: "#524c41", + category: "ammunition", + behavior: [ + "XX|EX:10>bomb|XX", + "XX|XX|XX", + "M1|M1%10 AND EX:10>bomb|XX", + ], +} +elements.machine_for_throwing_bombs_at_right = { + color: "#524c41", + behavior: behaviors.WALL, + behaviorOn: [ + "XX|XX|XX", + "XX|XX|CR:bombs_for_throwing_at_you_right", + "XXXX|XX", + ], + category: "weapons", + conduct: 1 +}, +elements.bombs_for_throwing_at_you_right = { + color: "#524c41", + category: "ammunition", + behavior: [ + "XX|EX:10>bomb|XX", + "XX|XX|XX", + "XX|M1%10 AND EX:10>bomb|M1", + ], +}, +elements.energized_orb_left = { + color: ["#e0e000","#f3f300"], + category: "energy", + behavior: [ + "XX|EX:50>electric|XX", + "M1 AND EX:50>electric|XX|EX:50>electric", + "XX|EX:50>electric|XX" + ], + state: "gas", +}, +elements.energized_orb_right = { + color: ["#e0e000","#f3f300"], + category: "energy", + behavior: [ + "XX|EX:50>electric|XX", + "EX:50>electric|XX|M1 AND EX:50>electric", + "XX|EX:50>electric|XX" + ], + state: "gas", +}, +elements.fast_bomb = { + color: "#524c41", + category: "weapons", + state: "solid", + behavior: [ + "XX|EX:10>explosion|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>explosion|M2", + ], + tick: function(pixel) { + for (var i=0; i<3; i++) { + if (!tryMove(pixel, pixel.x, pixel.y+1)) { + if (!isEmpty(pixel.x, pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "fast_bomb") { break; } + } + } + } + }, + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} \ No newline at end of file