diff --git a/mod-list.html b/mod-list.html
index 06e0a360..20eb440b 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -202,6 +202,7 @@
| ticking_temp_stuff.js | Adds more heaters and coolers | Alice |
| video.js | Adds a video player | ggod |
| waterspout.js | Adds back the old Water Spout | mollthecoder |
+| WhisperingTheory.js | Add powder and gas variant of heater and cooler | kaeud |
| Weapons |
| aircrafts.js | Adds aircraft and aircraft part pixels | Jayd |
diff --git a/mods/WhisperingTheory.js b/mods/WhisperingTheory.js
index ad41280b..a3a6bb02 100644
--- a/mods/WhisperingTheory.js
+++ b/mods/WhisperingTheory.js
@@ -1,8 +1,31 @@
-/* TODO
-- [x] powder heater & coller
-- [x] block roomtemp
-- [x] no smoke from cold fire
-*/
+elements.roomtemper = {
+ color: "#29632f",
+ behavior: behaviors.WALL,
+ tick: function(pixel) {
+ // from nouserthings.js <3
+ for (var i = 0; i < squareCoords.length; i++) {
+ var coord = squareCoords[i];
+ var x = pixel.x+coord[0];
+ var y = pixel.y+coord[1];
+ if (!isEmpty(x,y, true)) {
+ if(pixelMap[x][y].temp < -230) {
+ pixelMap[x][y].temp = (pixelMap[x][y].temp + 7)
+ } else if(pixelMap[x][y].temp > 270) {
+ pixelMap[x][y].temp = (pixelMap[x][y].temp - 7)
+ } else if (pixelMap[x][y].temp < 20) {
+ pixelMap[x][y].temp = (pixelMap[x][y].temp + 2)
+ } else if (pixelMap[x][y].temp > 20) {
+ pixelMap[x][y].temp = (pixelMap[x][y].temp - 2)
+ }
+ }
+ }
+ },
+ category:"machines",
+ state:"solid",
+ insulate: true,
+ noMix: true,
+ movable: false,
+};
elements.powder_heater = {
category: "machines",
@@ -48,36 +71,52 @@ elements.powder_freeze = {
insulate: true,
};
-elements.roomtemper = {
- color: "#29632f",
- behavior: behaviors.WALL,
- tick: function(pixel) {
- for (var i = 0; i < squareCoords.length; i++) {
- var coord = squareCoords[i];
- var x = pixel.x+coord[0];
- var y = pixel.y+coord[1];
- if (!isEmpty(x,y, true)) {
- if(pixelMap[x][y].temp < -230) {
- pixelMap[x][y].temp = (pixelMap[x][y].temp + 7)
- } else if(pixelMap[x][y].temp > 270) {
- pixelMap[x][y].temp = (pixelMap[x][y].temp - 7)
- } else if (pixelMap[x][y].temp < 20) {
- pixelMap[x][y].temp = (pixelMap[x][y].temp + 2)
- } else if (pixelMap[x][y].temp > 20) {
- pixelMap[x][y].temp = (pixelMap[x][y].temp - 2)
- }
- }
- }
- },
- category:"machines",
- state:"solid",
- insulate: true,
- noMix: true,
- movable: false,
-},
-
elements.cold_fire.behavior = [
"M1|M1|M1",
"M2|DL%8|M2",
"XX|M2|XX",
-]
+];
+
+elements.gas_heater = {
+ color: "#881111",
+ behavior: [
+ "M2|M1 AND HT:2|M2",
+ "M1 AND HT:2|XX|M1 AND HT:2",
+ "M2|M1 AND HT:2 | M2",
+ ],
+ category: "machines",
+ insulate: true,
+};
+
+elements.gas_superheater = {
+ color: "#dd1111",
+ behavior: [
+ "M2|M1 AND HT:10|M2",
+ "M1 AND HT:10|XX|M1 AND HT:10",
+ "M2|M1 AND HT:10|M2",
+ ],
+ category: "machines",
+ insulate: true,
+};
+
+elements.gas_cooler = {
+ color: "#111188",
+ behavior: [
+ "M2|M1 AND CO:2|M2",
+ "M1 AND CO:2|XX|M1 AND CO:2",
+ "M2|M1 AND CO:2|M2",
+ ],
+ category: "machines",
+ insulate: true,
+};
+
+elements.gas_freezer = {
+ color: "#1111dd",
+ behavior: [
+ "M2|M1 AND CO:10|M2",
+ "M1 AND CO:10|XX|M1 AND CO:10",
+ "M2|M1 AND CO:10|M2",
+ ],
+ category: "machines",
+ insulate: true,
+};