From 155a5ca0877b2d26ff911a683185fe7771eda49e Mon Sep 17 00:00:00 2001
From: Salmonfishyy <160120816+Salmonfishyy@users.noreply.github.com>
Date: Sat, 3 Aug 2024 10:28:23 +0700
Subject: [PATCH 1/6] v1.10 Translate Update
---
lang/vi.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lang/vi.json b/lang/vi.json
index 8dd80cf2..4b1cf5d6 100644
--- a/lang/vi.json
+++ b/lang/vi.json
@@ -545,5 +545,9 @@
"kelp": "Tảo bẹ",
"grinder": "Máy nghiền",
"mixer": "Máy trộn",
-"freeze_ray": "Tia làm lạnh"
+"freeze_ray": "Tia làm lạnh",
+"galvanized_steel": "Thép mạ kẽm",
+"rice": "Gạo",
+"midas_touch": "Bàn tay của Midas",
+"liquid_ozone": "Ozone lỏng"
}
From b48b2e142a244d70072cb77b300683de8d195207 Mon Sep 17 00:00:00 2001
From: Salmonfishyy <160120816+Salmonfishyy@users.noreply.github.com>
Date: Sat, 3 Aug 2024 10:35:33 +0700
Subject: [PATCH 2/6] v1.10 France Translate Update
---
lang/fr.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lang/fr.json b/lang/fr.json
index 81ee0256..835ae068 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -544,5 +544,9 @@
"grinder": "le broyeur",
"cloth": "le tissu",
"kelp": "varech",
-"freeze_ray": "Ray gelée"
+"freeze_ray": "Ray gelée",
+"galvanized_steel": "Acier galvanisé",
+"rice": "Le riz",
+"midas_touch": "Touche de Midas",
+"liquid_ozone": "Ozone liquide"
}
From 655942a208992adb86588143dcf47dcafeef7be5 Mon Sep 17 00:00:00 2001
From: Melecie <97272289+Melecie@users.noreply.github.com>
Date: Sat, 3 Aug 2024 15:51:05 +0800
Subject: [PATCH 3/6] + Fallout makes Meat Rocket
---
mods/meat_rockets.js | 70 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644 mods/meat_rockets.js
diff --git a/mods/meat_rockets.js b/mods/meat_rockets.js
new file mode 100644
index 00000000..e79ccd4b
--- /dev/null
+++ b/mods/meat_rockets.js
@@ -0,0 +1,70 @@
+// Meat Rockets 1.0
+// Author: Melecie
+
+meat_rocket_funcs = {
+ rocketCreator(rElem, rColor, rName) {
+ if (typeof(rName) == "undefined") { rName = rElem + "_rocket" }
+
+ elements[rName] = {
+ color: rColor,
+ state: "solid",
+ behavior: behaviors.ITEM_ROCKET,
+ properties: { launching: false },
+ rocketItem: rElem,
+ density: 1024,
+ hardness: 0.90,
+ burn: 100,
+ burnTime: 8192,
+ category: "special",
+ }
+ }
+}
+
+
+behaviors.ITEM_ROCKET = function(pixel) {
+ if (pixel.launching) {
+ pixel.burning = false;
+
+ // launching rocket
+ let nextX = pixel.x + (pixel.flipX ? -1:1);
+ let nextY = pixel.y-1;
+ let rocketItem = elements[pixel.element].rocketItem;
+
+ // flip, occasionally explode
+ if (Math.random() < 0.1) {
+ pixel.flipX = !pixel.flipX;
+ if (Math.random() < 0.05) {
+ explodeAt(pixel.x, pixel.y-1, 3, [rocketItem, "smoke"]);
+ }
+ } else if (Math.random() < 0.1) {
+ createPixel(pixel.x, pixel.y-1, "smoke")
+ }
+
+ // movement code
+ if (outOfBounds(nextX, nextY)) {
+ explodeAt(pixel.x, pixel.y, 10, [rocketItem, "smoke", "smoke"]);
+ deletePixel(pixel.x, pixel.y);
+ } else if (canMove(pixel, nextX, nextY)) {
+ tryMove(pixel, nextX, nextY);
+ } else if ( elements[pixelMap[nextX][nextY].element].state == "gas" || pixelMap[nextX][nextY].element == rocketItem ) {
+ let otherPixel = pixelMap[nextX][nextY];
+ swapPixels(pixel, otherPixel);
+ } else if ( pixelMap[nextX][nextY].element == pixel.element ) {
+
+ } else {
+ explodeAt(pixel.x, pixel.y, 10, [rocketItem, "smoke", "smoke"]);
+ deletePixel(pixel.x, pixel.y);
+ }
+ } else {
+ // hasn't started yet
+ behaviors.POWDER(pixel);
+ if (pixel.burning == true) {
+ pixel.launching = true;
+ }
+ }
+
+ doDefaults(pixel);
+}
+
+meat_rocket_funcs.rocketCreator("meat", ["#d36e7d", "#a85c4b"])
+elements.meat.reactions.fallout = { elem1: "meat_rocket", chance: 0.2 }
\ No newline at end of file
From 3cb5fd1f3f0f61fc8dcf412572fcda76c8033faa Mon Sep 17 00:00:00 2001
From: Melecie <97272289+Melecie@users.noreply.github.com>
Date: Sat, 3 Aug 2024 15:55:09 +0800
Subject: [PATCH 4/6] meat rocket mod: should also update this
---
mod-list.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/mod-list.html b/mod-list.html
index cbc7784f..1878a711 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -241,6 +241,7 @@
| icb.js | Adds various levels of nested cluster bombs | Alice |
| life_eater.js | Adds Warhammer 40,000’s Life-Eater Virus and Virus Bombs | Alice |
| liquid_void.js | Adds a liquid variant of Void | Alice |
+| meat_rockets.js | Adds rockets that create meat when exploding | Melecie |
| more_breaking.js | Allows for breaking more elements in explosions | Alice |
| rays.js | Adds more Ray types | Alice |
| rays++.js | Adds a couple more rays | uptzik |
From 4effb6b08d490372764d57bdcd2434cebbcc83f0 Mon Sep 17 00:00:00 2001
From: redbirdly <155550833+redbirdly@users.noreply.github.com>
Date: Sat, 3 Aug 2024 17:17:50 +0800
Subject: [PATCH 5/6] Update fast_lightmap.js
---
mods/fast_lightmap.js | 88 ++++++++++++++++---------------------------
1 file changed, 32 insertions(+), 56 deletions(-)
diff --git a/mods/fast_lightmap.js b/mods/fast_lightmap.js
index 34c7ab3a..bd7a1f0d 100644
--- a/mods/fast_lightmap.js
+++ b/mods/fast_lightmap.js
@@ -5,6 +5,7 @@ var lightmap = [];
var nextLightmap = [];
var lightmapWidth, lightmapHeight;
var lightmapScale = 3;
+var lightSourceBoost = 2;
var pixelSizeQuarter = pixelSizeHalf / 2;
var falloff = 0.7;
@@ -167,49 +168,54 @@ function hsvToRgb(h, s, v) {
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
-function renderLightmap() {
- if (!canvas) return;
- if (!lightmap || !lightmap[0]) return;
+function renderLightmapPrePixel(ctx) {
+ if (!lightmap || !lightmap[0]) return;
- var context = canvas.getContext('2d');
- var _width = lightmap[0].length;
- var _height = lightmap.length;
+ var _width = lightmap[0].length;
+ var _height = lightmap.length;
- for (var y = 0; y < _height; y++) {
- for (var x = 0; x < _width; x++) {
- var { color } = lightmap[y][x];
- var [r, g, b] = color;
+ for (var y = 0; y < _height; y++) {
+ for (var x = 0; x < _width; x++) {
+ var { color } = lightmap[y][x];
+ var [r, g, b] = color;
- if (r > 16 || g > 16 || b > 16) {
- var [h, s, v] = rgbToHsv(r, g, b);
- var newColor = hsvToRgb(h, s, 1);
- var alpha = v;
+ if (r > 16 || g > 16 || b > 16) {
+ var [h, s, v] = rgbToHsv(r, g, b);
+ var newColor = hsvToRgb(h, s, 1);
+ var alpha = v;
- context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.4})`;
- context.fillRect(
+ ctx.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.4})`;
+ ctx.fillRect(
x * pixelSize * lightmapScale,
y * pixelSize * lightmapScale,
pixelSize * lightmapScale,
pixelSize * lightmapScale
);
- context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`;
- context.fillRect(
+ ctx.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`;
+ ctx.fillRect(
(x * pixelSize - pixelSizeHalf) * lightmapScale,
(y * pixelSize - pixelSizeHalf) * lightmapScale,
pixelSize * lightmapScale * 2,
pixelSize * lightmapScale * 2
);
- }
- }
- }
+ }
+ }
+ }
}
+// Register the function to run before each pixel is rendered
+renderPrePixel(function(ctx) {
+ if (!paused) {propagateLightmap();}
+ renderLightmapPrePixel(ctx);
+});
+
+
function glowItsOwnColor(pixel) {
if (!pixel.color) {return;}
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: rgbToArray(pixel.color) };
+ lightmap[y][x] = { color: scaleList(rgbToArray(pixel.color), lightSourceBoost) };
}
function glowItsOwnColorIfPowered(pixel) {
@@ -217,23 +223,22 @@ function glowItsOwnColorIfPowered(pixel) {
if (!pixel.color) return;
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: rgbToArray(pixel.color) };
+ lightmap[y][x] = { color: scaleList(rgbToArray(pixel.color), lightSourceBoost) };
}
function glowColor(pixel, color) {
if (!color) {return;}
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: color };
+ lightmap[y][x] = { color: scaleList(color, lightSourceBoost) };
}
function glowRadiationColor(pixel) {
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: radColor };
+ lightmap[y][x] = { color: scaleList(radColor, lightSourceBoost) };
}
-
// Define element tick functions
var originalStrangeMatterTick = elements.strange_matter.tick;
elements.strange_matter.tick = function(pixel) {
@@ -309,7 +314,7 @@ elements.magma.tick = glowItsOwnColor;
elements.plasma.tick = glowItsOwnColor;
elements.fw_ember.tick = glowItsOwnColor;
-elements.cold_fire.tick = pixel => glowColor(pixel, coldFireColor);
+elements.cold_fire.tick = glowItsOwnColor;
// Radioactive elements
var radioactiveElements = [
@@ -329,32 +334,3 @@ window.addEventListener('load', () => {
initializeLightmap(width, height);
};
});
-
-var originalTick = tick;
-tick = function() {
- originalTick();
- if (!paused) propagateLightmap();
-};
-resetInterval(tps);
-
-var originalDoFrame = doFrame;
-doFrame = function() {
- originalDoFrame();
- propagateLightmap();
-};
-
-if (enabledMods.includes("mods/velocity.js")) {
- runAfterAutogen(() => {
- var originalDrawPixels = drawPixels;
- drawPixels = function(forceTick = false) {
- originalDrawPixels(forceTick);
- renderLightmap();
- };
- });
-} else {
- var originalDrawPixels = drawPixels;
- drawPixels = function(forceTick = false) {
- originalDrawPixels(forceTick);
- renderLightmap();
- };
-}
From b3662f6fdd3bd218afc90302749c64f13af530e7 Mon Sep 17 00:00:00 2001
From: redbirdly <155550833+redbirdly@users.noreply.github.com>
Date: Sat, 3 Aug 2024 17:18:21 +0800
Subject: [PATCH 6/6] Update lightmap.js
---
mods/lightmap.js | 88 ++++++++++++++++++------------------------------
1 file changed, 32 insertions(+), 56 deletions(-)
diff --git a/mods/lightmap.js b/mods/lightmap.js
index e1d4272c..85d929b5 100644
--- a/mods/lightmap.js
+++ b/mods/lightmap.js
@@ -5,6 +5,7 @@ var lightmap = [];
var nextLightmap = [];
var lightmapWidth, lightmapHeight;
var lightmapScale = 2;
+var lightSourceBoost = 2;
var pixelSizeQuarter = pixelSizeHalf / 2;
var falloff = 0.8;
@@ -167,49 +168,54 @@ function hsvToRgb(h, s, v) {
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
-function renderLightmap() {
- if (!canvas) return;
- if (!lightmap || !lightmap[0]) return;
+function renderLightmapPrePixel(ctx) {
+ if (!lightmap || !lightmap[0]) return;
- var context = canvas.getContext('2d');
- var _width = lightmap[0].length;
- var _height = lightmap.length;
+ var _width = lightmap[0].length;
+ var _height = lightmap.length;
- for (var y = 0; y < _height; y++) {
- for (var x = 0; x < _width; x++) {
- var { color } = lightmap[y][x];
- var [r, g, b] = color;
+ for (var y = 0; y < _height; y++) {
+ for (var x = 0; x < _width; x++) {
+ var { color } = lightmap[y][x];
+ var [r, g, b] = color;
- if (r > 16 || g > 16 || b > 16) {
- var [h, s, v] = rgbToHsv(r, g, b);
- var newColor = hsvToRgb(h, s, 1);
- var alpha = v;
+ if (r > 16 || g > 16 || b > 16) {
+ var [h, s, v] = rgbToHsv(r, g, b);
+ var newColor = hsvToRgb(h, s, 1);
+ var alpha = v;
- context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.4})`;
- context.fillRect(
+ ctx.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.4})`;
+ ctx.fillRect(
x * pixelSize * lightmapScale,
y * pixelSize * lightmapScale,
pixelSize * lightmapScale,
pixelSize * lightmapScale
);
- context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`;
- context.fillRect(
+ ctx.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`;
+ ctx.fillRect(
(x * pixelSize - pixelSizeHalf) * lightmapScale,
(y * pixelSize - pixelSizeHalf) * lightmapScale,
pixelSize * lightmapScale * 2,
pixelSize * lightmapScale * 2
);
- }
- }
- }
+ }
+ }
+ }
}
+// Register the function to run before each pixel is rendered
+renderPrePixel(function(ctx) {
+ if (!paused) {propagateLightmap();}
+ renderLightmapPrePixel(ctx);
+});
+
+
function glowItsOwnColor(pixel) {
if (!pixel.color) {return;}
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: rgbToArray(pixel.color) };
+ lightmap[y][x] = { color: scaleList(rgbToArray(pixel.color), lightSourceBoost) };
}
function glowItsOwnColorIfPowered(pixel) {
@@ -217,23 +223,22 @@ function glowItsOwnColorIfPowered(pixel) {
if (!pixel.color) return;
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: rgbToArray(pixel.color) };
+ lightmap[y][x] = { color: scaleList(rgbToArray(pixel.color), lightSourceBoost) };
}
function glowColor(pixel, color) {
if (!color) {return;}
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: color };
+ lightmap[y][x] = { color: scaleList(color, lightSourceBoost) };
}
function glowRadiationColor(pixel) {
var x = Math.floor(pixel.x / lightmapScale);
var y = Math.floor(pixel.y / lightmapScale);
- lightmap[y][x] = { color: radColor };
+ lightmap[y][x] = { color: scaleList(radColor, lightSourceBoost) };
}
-
// Define element tick functions
var originalStrangeMatterTick = elements.strange_matter.tick;
elements.strange_matter.tick = function(pixel) {
@@ -309,7 +314,7 @@ elements.magma.tick = glowItsOwnColor;
elements.plasma.tick = glowItsOwnColor;
elements.fw_ember.tick = glowItsOwnColor;
-elements.cold_fire.tick = pixel => glowColor(pixel, coldFireColor);
+elements.cold_fire.tick = glowItsOwnColor;
// Radioactive elements
var radioactiveElements = [
@@ -329,32 +334,3 @@ window.addEventListener('load', () => {
initializeLightmap(width, height);
};
});
-
-var originalTick = tick;
-tick = function() {
- originalTick();
- if (!paused) propagateLightmap();
-};
-resetInterval(tps);
-
-var originalDoFrame = doFrame;
-doFrame = function() {
- originalDoFrame();
- propagateLightmap();
-};
-
-if (enabledMods.includes("mods/velocity.js")) {
- runAfterAutogen(() => {
- var originalDrawPixels = drawPixels;
- drawPixels = function(forceTick = false) {
- originalDrawPixels(forceTick);
- renderLightmap();
- };
- });
-} else {
- var originalDrawPixels = drawPixels;
- drawPixels = function(forceTick = false) {
- originalDrawPixels(forceTick);
- renderLightmap();
- };
-}