This commit is contained in:
parent
9d8badd1b1
commit
53ea5d49a5
|
|
@ -109,6 +109,76 @@
|
||||||
<p>The original <a href="https://sandboxels.r74n.com/changelog.txt">plain text version</a> of this is still maintained.</p>
|
<p>The original <a href="https://sandboxels.r74n.com/changelog.txt">plain text version</a> of this is still maintained.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<h2 id="5.9.1">[Version 5.9.1 - April 1, 2024 - Multiversal Update]</h2>
|
||||||
|
<ul>
|
||||||
|
<li>+ Multiverse Time Travel</li>
|
||||||
|
<li> + Use Timeline controls to navigate multidimensional space</li>
|
||||||
|
<li> + Split off from your current timeline</li>
|
||||||
|
<li>+ Eat tool</li>
|
||||||
|
<li>+ Mirror Dimension</li>
|
||||||
|
<li> + Access by throwing a test subject into a Mirror Portal</li>
|
||||||
|
<li>+ Moon</li>
|
||||||
|
<li>+ Moon Rock (Hidden)</li>
|
||||||
|
<li>+ Freeze tool</li>
|
||||||
|
<li>+ Freeze Ray</li>
|
||||||
|
<li>+ Air</li>
|
||||||
|
<li>+ UFO</li>
|
||||||
|
<li>+ Life Force</li>
|
||||||
|
<li>+ Carbon</li>
|
||||||
|
<li>+ Photon</li>
|
||||||
|
<li>+ Electron</li>
|
||||||
|
<li>+ BBQ Sauce</li>
|
||||||
|
<li>+ Mustard</li>
|
||||||
|
<li>+ Holy Grenade</li>
|
||||||
|
<li>+ Ice Ten</li>
|
||||||
|
<li>+ Love (Amends anuran ailments)</li>
|
||||||
|
<li>+ Love Bomb</li>
|
||||||
|
<li>+ Dirt Bomb</li>
|
||||||
|
<li>+ Cluster Cluster Bomb</li>
|
||||||
|
<li>+ Cherry</li>
|
||||||
|
<li>+ Blueberry</li>
|
||||||
|
<li>+ Olive</li>
|
||||||
|
<li>+ Blue Cheese</li>
|
||||||
|
<li>+ Toad</li>
|
||||||
|
<li>+ Mouse</li>
|
||||||
|
<li>+ Basketball</li>
|
||||||
|
<li>+ Baseball</li>
|
||||||
|
<li>+ Tennis Ball</li>
|
||||||
|
<li>+ Quirky Paint</li>
|
||||||
|
<li>+ Pen tool</li>
|
||||||
|
<li>+ Cursor</li>
|
||||||
|
<li>+ Powder</li>
|
||||||
|
<li>+ Footprint</li>
|
||||||
|
<li>+ Light Ice (Hidden)</li>
|
||||||
|
<li>+ Big Bang (Hidden)</li>
|
||||||
|
<li>[Changes]</li>
|
||||||
|
<li>+ 68% of Humans are lactose intolerant</li>
|
||||||
|
<li>+ 1% of Humans are gluten intolerant</li>
|
||||||
|
<li>+ Humans now drink Water</li>
|
||||||
|
<li>- Removed Gender Binary</li>
|
||||||
|
<li>+ Fireflies have a distinct sound</li>
|
||||||
|
<li>+ Bless converts Antimatter and Strange Matter to Normal Matter</li>
|
||||||
|
<li>+ Bless removes money, the root of all evil</li>
|
||||||
|
<li>+ Bless converts Plastic to eco-friendly Paper</li>
|
||||||
|
<li>+ Bless converts Water to Wine</li>
|
||||||
|
<li>+ Pb&J recipe</li>
|
||||||
|
<li>+ Helium can freeze again</li>
|
||||||
|
<li>+ Helium increases pitch of Human voice</li>
|
||||||
|
<li>- Removed Blood</li>
|
||||||
|
<li>~ Birds have been recolored as tribute</li>
|
||||||
|
<li>~ Udders produce many kinds of Milk</li>
|
||||||
|
<li>~ Cheerful Mode now hides ALL weapons</li>
|
||||||
|
<li>~ Moved Firework to Machines</li>
|
||||||
|
<li>~ Moved Ball to Special</li>
|
||||||
|
<li>~ Renamed Gray Goo to Grey Goo</li>
|
||||||
|
<li>~ Renamed Molten Tin to Moltin</li>
|
||||||
|
<li>~ Unhid Supernova</li>
|
||||||
|
<li>+ Re-added Cluster Bomb</li>
|
||||||
|
<li>[Bug Fixes]</li>
|
||||||
|
<li>~ Fixed: Water is not wet</li>
|
||||||
|
<li>~ Fixed: Not foolish enough</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h2 id="1.9.4">[Version 1.9.4 - March 17, 2024 - Natural Disasters]</h2>
|
<h2 id="1.9.4">[Version 1.9.4 - March 17, 2024 - Natural Disasters]</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>+ Tornado</li>
|
<li>+ Tornado</li>
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,74 @@ See sneak peaks for upcoming updates on the Discord: https://discord.gg/ejUc6YPQ
|
||||||
|
|
||||||
A fancier version of this changelog can be found here: https://sandboxels.R74n.com/changelog
|
A fancier version of this changelog can be found here: https://sandboxels.R74n.com/changelog
|
||||||
|
|
||||||
|
[Version 5.9.1 - April 1, 2024 - Multiversal Update]
|
||||||
|
+ Multiverse Time Travel
|
||||||
|
+ Use Timeline controls to navigate multidimensional space
|
||||||
|
+ Split off from your current timeline
|
||||||
|
+ Eat tool
|
||||||
|
+ Mirror Dimension
|
||||||
|
+ Access by throwing a test subject into a Mirror Portal
|
||||||
|
+ Moon
|
||||||
|
+ Moon Rock (Hidden)
|
||||||
|
+ Freeze tool
|
||||||
|
+ Freeze Ray
|
||||||
|
+ Air
|
||||||
|
+ UFO
|
||||||
|
+ Life Force
|
||||||
|
+ Carbon
|
||||||
|
+ Photon
|
||||||
|
+ Electron
|
||||||
|
+ BBQ Sauce
|
||||||
|
+ Mustard
|
||||||
|
+ Holy Grenade
|
||||||
|
+ Ice Ten
|
||||||
|
+ Love (Amends anuran ailments)
|
||||||
|
+ Love Bomb
|
||||||
|
+ Dirt Bomb
|
||||||
|
+ Cluster Cluster Bomb
|
||||||
|
+ Cherry
|
||||||
|
+ Blueberry
|
||||||
|
+ Olive
|
||||||
|
+ Blue Cheese
|
||||||
|
+ Toad
|
||||||
|
+ Mouse
|
||||||
|
+ Basketball
|
||||||
|
+ Baseball
|
||||||
|
+ Tennis Ball
|
||||||
|
+ Quirky Paint
|
||||||
|
+ Pen tool
|
||||||
|
+ Cursor
|
||||||
|
+ Powder
|
||||||
|
+ Footprint
|
||||||
|
+ Light Ice (Hidden)
|
||||||
|
+ Big Bang (Hidden)
|
||||||
|
[Changes]
|
||||||
|
+ 68% of Humans are lactose intolerant
|
||||||
|
+ 1% of Humans are gluten intolerant
|
||||||
|
+ Humans now drink Water
|
||||||
|
- Removed Gender Binary
|
||||||
|
+ Fireflies have a distinct sound
|
||||||
|
+ Bless converts Antimatter and Strange Matter to Normal Matter
|
||||||
|
+ Bless removes money, the root of all evil
|
||||||
|
+ Bless converts Plastic to eco-friendly Paper
|
||||||
|
+ Bless converts Water to Wine
|
||||||
|
+ Pb&J recipe
|
||||||
|
+ Helium can freeze again
|
||||||
|
+ Helium increases pitch of Human voice
|
||||||
|
- Removed Blood
|
||||||
|
~ Birds have been recolored as tribute
|
||||||
|
~ Udders produce many kinds of Milk
|
||||||
|
~ Cheerful Mode now hides ALL weapons
|
||||||
|
~ Moved Firework to Machines
|
||||||
|
~ Moved Ball to Special
|
||||||
|
~ Renamed Gray Goo to Grey Goo
|
||||||
|
~ Renamed Molten Tin to Moltin
|
||||||
|
~ Unhid Supernova
|
||||||
|
+ Re-added Cluster Bomb
|
||||||
|
[Bug Fixes]
|
||||||
|
~ Fixed: Water is not wet
|
||||||
|
~ Fixed: Not foolish enough
|
||||||
|
|
||||||
[Version 1.9.4 - March 17, 2024 - Natural Disasters]
|
[Version 1.9.4 - March 17, 2024 - Natural Disasters]
|
||||||
+ Tornado
|
+ Tornado
|
||||||
+ Earthquake
|
+ Earthquake
|
||||||
|
|
|
||||||
10
index.html
10
index.html
|
|
@ -11203,6 +11203,14 @@ else if (currentMonth == 11) { // December
|
||||||
elements.candy.colorKey = {"R":"#c92626", "W":"#e3e3e3"}
|
elements.candy.colorKey = {"R":"#c92626", "W":"#e3e3e3"}
|
||||||
elements.candy.color = ["#c92626","#e3e3e3","#c92626","#e3e3e3","#c92626"]
|
elements.candy.color = ["#c92626","#e3e3e3","#c92626","#e3e3e3","#c92626"]
|
||||||
}
|
}
|
||||||
|
else if ( true){// new Date().getMonth() == 3 && new Date().getDate() == 1) {
|
||||||
|
// if url contains "fools=true"
|
||||||
|
if (!window.location.href.includes("fools=false")) {
|
||||||
|
var script = document.createElement('script');
|
||||||
|
script.src = "mods/fools24.js"
|
||||||
|
document.head.appendChild(script);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Mod Loader
|
// Mod Loader
|
||||||
runAfterLoadList = [];
|
runAfterLoadList = [];
|
||||||
|
|
@ -16247,7 +16255,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">?</span> <input type="button" value="O
|
||||||
<!-- <p>If you'd like to support us, consider donating on <a href="https://www.paypal.com/donate/?hosted_button_id=GCX4VHQ7SZWTN" target="_blank">PayPal</a> or <a href="https://cash.app/$emojiartist" target="_blank" title="$emojiartist">CashApp</a>, or subscribing on Discord.</p> -->
|
<!-- <p>If you'd like to support us, consider donating on <a href="https://www.paypal.com/donate/?hosted_button_id=GCX4VHQ7SZWTN" target="_blank">PayPal</a> or <a href="https://cash.app/$emojiartist" target="_blank" title="$emojiartist">CashApp</a>, or subscribing on Discord.</p> -->
|
||||||
<p>Business inquiries? Education stories? Help needed? Email us at <a href="mailto:contact@r74n.com">contact@R74n.com</a>!</p>
|
<p>Business inquiries? Education stories? Help needed? Email us at <a href="mailto:contact@r74n.com">contact@R74n.com</a>!</p>
|
||||||
<p>More links: <a href="https://sandboxels.R74n.com/help" rel="help">Help</a> • <a href="https://sandboxels.R74n.com/tips">Tips</a> • <a href="https://sandboxels.R74n.com/mod-list">Mods</a> • <a href="https://sandboxels.R74n.com/mobile-use">Mobile</a> • <a href="https://sandboxels.R74n.com/offline-use">Offline</a> • <a href="https://R74n.com/privacy">Privacy</a></p>
|
<p>More links: <a href="https://sandboxels.R74n.com/help" rel="help">Help</a> • <a href="https://sandboxels.R74n.com/tips">Tips</a> • <a href="https://sandboxels.R74n.com/mod-list">Mods</a> • <a href="https://sandboxels.R74n.com/mobile-use">Mobile</a> • <a href="https://sandboxels.R74n.com/offline-use">Offline</a> • <a href="https://R74n.com/privacy">Privacy</a></p>
|
||||||
<p>Thanks to: Serioustar, WeiChei, Midi_png, ggod, personman, fnl4y, PitsPower, kaeud, Trent, u2ce</p>
|
<p id="thanksTo">Thanks to: Serioustar, WeiChei, Midi_png, ggod, personman, fnl4y, PitsPower, kaeud, Trent, u2ce</p>
|
||||||
<p style="display:none" id="langCredit">Translation by R74n</p>
|
<p style="display:none" id="langCredit">Translation by R74n</p>
|
||||||
<p>Sandboxels is developed by R74n. Check out <a href="https://R74n.com" rel="author" target="_blank">our other projects</a>!</p>
|
<p>Sandboxels is developed by R74n. Check out <a href="https://R74n.com" rel="author" target="_blank">our other projects</a>!</p>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@
|
||||||
<tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
<tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
<tr><td>fools.js</td><td>Adds back FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr><td>fools.js</td><td>Adds back FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
|
<tr><td>fools24.js</td><td>Adds back the 2024 Multiversal Update (v5.9.1)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
<tr><td>smooth_water.js</td><td>Changes water mechanics so that it flows in one direction until it bounces off of something</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr><td>smooth_water.js</td><td>Changes water mechanics so that it flows in one direction until it bounces off of something</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
<tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
<tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,842 @@
|
||||||
|
/*
|
||||||
|
[Version 5.9.1 - April 1, 2024 - Multiversal Update]
|
||||||
|
+ Multiverse Time Travel
|
||||||
|
+ Use Timeline controls to navigate multidimensional space
|
||||||
|
+ Split off from your current timeline
|
||||||
|
+ Eat tool
|
||||||
|
+ Mirror Dimension
|
||||||
|
+ Access by throwing a test subject into a Mirror Portal
|
||||||
|
+ Moon
|
||||||
|
+ Moon Rock (Hidden)
|
||||||
|
+ Freeze tool
|
||||||
|
+ Freeze Ray
|
||||||
|
+ Air
|
||||||
|
+ UFO
|
||||||
|
+ Life Force
|
||||||
|
+ Carbon
|
||||||
|
+ Photon
|
||||||
|
+ Electron
|
||||||
|
+ BBQ Sauce
|
||||||
|
+ Mustard
|
||||||
|
+ Holy Grenade
|
||||||
|
+ Ice Ten
|
||||||
|
+ Love (Amends anuran ailments)
|
||||||
|
+ Love Bomb
|
||||||
|
+ Dirt Bomb
|
||||||
|
+ Cluster Cluster Bomb
|
||||||
|
+ Cherry
|
||||||
|
+ Blueberry
|
||||||
|
+ Olive
|
||||||
|
+ Blue Cheese
|
||||||
|
+ Toad
|
||||||
|
+ Mouse
|
||||||
|
+ Basketball
|
||||||
|
+ Baseball
|
||||||
|
+ Tennis Ball
|
||||||
|
+ Quirky Paint
|
||||||
|
+ Pen tool
|
||||||
|
+ Cursor
|
||||||
|
+ Powder
|
||||||
|
+ Footprint
|
||||||
|
+ Light Ice (Hidden)
|
||||||
|
+ Big Bang (Hidden)
|
||||||
|
[Changes]
|
||||||
|
+ 68% of Humans are lactose intolerant
|
||||||
|
+ 1% of Humans are gluten intolerant
|
||||||
|
+ Humans now drink Water
|
||||||
|
- Removed Gender Binary
|
||||||
|
+ Fireflies have a distinct sound
|
||||||
|
+ Bless converts Antimatter and Strange Matter to Normal Matter
|
||||||
|
+ Bless removes money, the root of all evil
|
||||||
|
+ Bless converts Plastic to eco-friendly Paper
|
||||||
|
+ Bless converts Water to Wine
|
||||||
|
+ Pb&J recipe
|
||||||
|
+ Helium can freeze again
|
||||||
|
+ Helium increases pitch of Human voice
|
||||||
|
- Removed Blood
|
||||||
|
~ Birds have been recolored as tribute
|
||||||
|
~ Udders produce many kinds of Milk
|
||||||
|
~ Cheerful Mode now hides ALL weapons
|
||||||
|
~ Moved Firework to Machines
|
||||||
|
~ Moved Ball to Special
|
||||||
|
~ Renamed Gray Goo to Grey Goo
|
||||||
|
~ Renamed Molten Tin to Moltin
|
||||||
|
~ Unhid Supernova
|
||||||
|
+ Re-added Cluster Bomb
|
||||||
|
[Bug Fixes]
|
||||||
|
~ Fixed: Water is not wet
|
||||||
|
*/
|
||||||
|
|
||||||
|
currentversion = "5.9.1"
|
||||||
|
|
||||||
|
if (!elements.bless.reactions) { elements.bless.reactions = {}; }
|
||||||
|
elements.bless.reactions.gold_coin = { elem2:null }
|
||||||
|
elements.bless.reactions.plastic = { elem2:"paper" }
|
||||||
|
elements.bless.reactions.bead = { elem2:"sawdust" }
|
||||||
|
elements.bless.reactions.water = { elem2:"alcohol", color2:"#722F37" }
|
||||||
|
|
||||||
|
if (!elements.lead.reactions) { elements.lead.reactions = {}; }
|
||||||
|
elements.lead.reactions.grape = { elem1:"nut_butter", elem2:"jelly" }
|
||||||
|
elements.lead.reactions.jelly = { elem1:"nut_butter" }
|
||||||
|
|
||||||
|
elements.head.tempTick = elements.head.tick
|
||||||
|
elements.head.tick = function(pixel) {
|
||||||
|
elements.head.tempTick(pixel);
|
||||||
|
if (!pixel.sus) { // susceptibility to disease
|
||||||
|
pixel.sus = Math.random();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!elements.head.reactions) { elements.head.reactions = {}; }
|
||||||
|
var lactoseReaction = function(pixel) {
|
||||||
|
if (pixel.sus < 0.68) { changePixel(pixel,"explosion") }
|
||||||
|
}
|
||||||
|
var glutenReaction = function(pixel) {
|
||||||
|
if (pixel.sus < 0.01) { changePixel(pixel,"explosion") }
|
||||||
|
}
|
||||||
|
elements.head.reactions.milk = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.cheese = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.butter = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.melted_cheese = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.melted_butter = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.yogurt = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.ice_cream = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.cream = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.frozen_yogurt = { chance:0.1, func:lactoseReaction }
|
||||||
|
elements.head.reactions.wheat = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.bread = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.toast = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.gingerbread = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.batter = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.flour = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.baked_batter = { chance:0.1, func:glutenReaction }
|
||||||
|
elements.head.reactions.water = { elem2:null, chance:0.1 }
|
||||||
|
elements.head.reactions.sugar_water = { elem2:null, chance:0.1 }
|
||||||
|
elements.head.reactions.seltzer = { elem2:null, chance:0.1 }
|
||||||
|
elements.body.color = "#069469";
|
||||||
|
|
||||||
|
elements.firework.category = "machines";
|
||||||
|
|
||||||
|
elements.normal_matter = {
|
||||||
|
color: "#9ba89b",
|
||||||
|
behavior: [
|
||||||
|
"M2|M2|M2",
|
||||||
|
"M1|XX|M1",
|
||||||
|
"M1|M1|M1",
|
||||||
|
],
|
||||||
|
category: "special",
|
||||||
|
state: "gas",
|
||||||
|
density: 2.1,
|
||||||
|
hidden: true
|
||||||
|
};
|
||||||
|
elements.bless.reactions.antimatter = { elem2:"normal_matter" }
|
||||||
|
elements.bless.reactions.strange_matter = { elem2:"normal_matter" }
|
||||||
|
|
||||||
|
elements.ice_ten = {
|
||||||
|
color: ["#84d0ff","#85daff","#80ffff"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|CH:ice%0.5|XX",
|
||||||
|
"M2|M1|M2",
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"ice_ten": { func:function(pixel1,pixel2){
|
||||||
|
var pixels = currentPixels.slice();
|
||||||
|
for (var i = 0; i < pixels.length; i++) {
|
||||||
|
var pixel = pixels[i];
|
||||||
|
pixel.temp = -10000;
|
||||||
|
pixelTempCheck(pixel);
|
||||||
|
}
|
||||||
|
}, elem1:null, elem2:null },
|
||||||
|
},
|
||||||
|
temp:-100,
|
||||||
|
category: "special",
|
||||||
|
state: "solid",
|
||||||
|
density: 917,
|
||||||
|
excludeRandom: true
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.gray_goo.name = "grey_goo";
|
||||||
|
|
||||||
|
elements.big_bang = {
|
||||||
|
color: ["#ffebeb","#ffc9c9","#ffabab"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|EX:200>hydrogen,neutron,proton,electric AND CH:void|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
temp: 1000000000000000,
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
density: 1000,
|
||||||
|
hardness: 1,
|
||||||
|
hidden: true,
|
||||||
|
excludeRandom: true,
|
||||||
|
maxSize: 1,
|
||||||
|
cooldown: defaultCooldown,
|
||||||
|
noMix: true
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.blood.name = "life_force";
|
||||||
|
elements.blood.color = ["#99ff00","#d9ff00"];
|
||||||
|
delete elements.blood_ice.color;
|
||||||
|
elements.blood_ice.name = "life_force_ice";
|
||||||
|
|
||||||
|
elements.holy_grenade = {
|
||||||
|
color: "#fffd6a",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10>bless|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2|M1 AND EX:10>bless|M2",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.love = {
|
||||||
|
color: ["#fccbff","#ff9edf","#ff5cb6"],
|
||||||
|
behavior: [
|
||||||
|
"M2|M1|M2",
|
||||||
|
"M1|DL%25|M1",
|
||||||
|
"M2|M1|M2",
|
||||||
|
],
|
||||||
|
temp:20,
|
||||||
|
state: "gas",
|
||||||
|
density: 0.001,
|
||||||
|
canPlace: true,
|
||||||
|
category: "energy",
|
||||||
|
stain: -0.5
|
||||||
|
};
|
||||||
|
elements.love.reactions = elements.bless.reactions;
|
||||||
|
elements.love.tool = elements.bless.tool;
|
||||||
|
if (!elements.frog.reactions) { elements.frog.reactions = {}; }
|
||||||
|
elements.frog.reactions.love = { elem1:"human" }
|
||||||
|
if (!elements.bomb.reactions) { elements.bomb.reactions = {}; }
|
||||||
|
elements.bomb.reactions.love = { elem1:"love_bomb" }
|
||||||
|
if (!elements.grenade.reactions) { elements.grenade.reactions = {}; }
|
||||||
|
elements.grenade.reactions.love = { elem1:"love_bomb" }
|
||||||
|
|
||||||
|
elements.love_bomb = {
|
||||||
|
color: "#ff84f1",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10>love|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2|M1 AND EX:10>love|M2",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
}
|
||||||
|
elements.dirt_bomb = {
|
||||||
|
color: "#694805",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10>dirt|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2|M1 AND EX:10>dirt|M2",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.cluster_bomb = {
|
||||||
|
color: "#7d776d",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10>smoke,smoke,smoke,smoke,smoke,grenade%1|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2|M1 AND EX:10>smoke,smoke,smoke,smoke,smoke,grenade%1|M2",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
tempHigh: 1455.5,
|
||||||
|
stateHigh: "molten_steel",
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
}
|
||||||
|
elements.cluster_cluster_bomb = {
|
||||||
|
color: "#c1b7a5",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10>smoke,smoke,smoke,smoke,smoke,cluster_bomb%1|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2|M1 AND EX:10>smoke,smoke,smoke,smoke,smoke,cluster_bomb%1|M2",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
tempHigh: 1455.5,
|
||||||
|
stateHigh: "molten_steel",
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.bbq_sauce = {
|
||||||
|
color: "#571E1A",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
viscosity: 50000,
|
||||||
|
tempHigh: 260,
|
||||||
|
stateHigh: ["carbon_dioxide","methane","steam","salt","sugar"],
|
||||||
|
category:"liquids",
|
||||||
|
state: "liquid",
|
||||||
|
density: 1235,
|
||||||
|
stain: 0.05,
|
||||||
|
isFood: true
|
||||||
|
}
|
||||||
|
if (!elements.ketchup.reactions) { elements.ketchup.reactions = {}; }
|
||||||
|
elements.ketchup.reactions.molasses = { elem1:"bbq_sauce", elem2:"bbq_sauce" }
|
||||||
|
|
||||||
|
elements.mustard = {
|
||||||
|
color: "#e1ad01",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
viscosity: 50000,
|
||||||
|
tempHigh: 260,
|
||||||
|
stateHigh: ["carbon_dioxide","methane","steam","sugar"],
|
||||||
|
category:"liquids",
|
||||||
|
state: "liquid",
|
||||||
|
density: 1235,
|
||||||
|
stain: 0.05,
|
||||||
|
isFood: true
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.cherry = {
|
||||||
|
color: ["#ff295b","#ff212c","#ff1f1f","#ff4e33"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
reactions: {
|
||||||
|
"rock": { elem1:"juice", chance:0.1, color1:"#8e0000" },
|
||||||
|
"concrete": { elem1:"juice", chance:0.1, color1:"#8e0000" },
|
||||||
|
"basalt": { elem1:"juice", chance:0.1, color1:"#8e0000" },
|
||||||
|
"limestone": { elem1:"juice", chance:0.1, color1:"#8e0000" },
|
||||||
|
"tuff": { elem1:"juice", chance:0.1, color1:"#8e0000" },
|
||||||
|
"water": { elem2:"juice", chance:0.005, color2:"#8e0000" },
|
||||||
|
"sugar_water": { elem2:"juice", chance:0.025, color2:"#8e0000" },
|
||||||
|
"acid": { elem1:"juice", color1:"#8e0000" },
|
||||||
|
"acid_gas": { elem1:"juice", color1:"#8e0000" },
|
||||||
|
},
|
||||||
|
tempHigh: 256,
|
||||||
|
stateHigh: ["steam","sugar"],
|
||||||
|
category: "food",
|
||||||
|
state: "solid",
|
||||||
|
density: 1154,
|
||||||
|
breakInto: "juice",
|
||||||
|
breakIntoColor: "#8e0000",
|
||||||
|
ignoreAir: true,
|
||||||
|
isFood: true
|
||||||
|
}
|
||||||
|
elements.blueberry = {
|
||||||
|
color: ["#4929ff","#5821ff","#221cc8","#2406a0"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
reactions: {
|
||||||
|
"rock": { elem1:"juice", chance:0.1, color1:"#1b1259" },
|
||||||
|
"concrete": { elem1:"juice", chance:0.1, color1:"#1b1259" },
|
||||||
|
"basalt": { elem1:"juice", chance:0.1, color1:"#1b1259" },
|
||||||
|
"limestone": { elem1:"juice", chance:0.1, color1:"#1b1259" },
|
||||||
|
"tuff": { elem1:"juice", chance:0.1, color1:"#1b1259" },
|
||||||
|
"water": { elem2:"juice", chance:0.005, color2:"#1b1259" },
|
||||||
|
"sugar_water": { elem2:"juice", chance:0.025, color2:"#1b1259" },
|
||||||
|
"acid": { elem1:"juice", color1:"#1b1259" },
|
||||||
|
"acid_gas": { elem1:"juice", color1:"#1b1259" },
|
||||||
|
},
|
||||||
|
tempHigh: 256,
|
||||||
|
stateHigh: ["steam","sugar"],
|
||||||
|
category: "food",
|
||||||
|
state: "solid",
|
||||||
|
density: 1154,
|
||||||
|
breakInto: "juice",
|
||||||
|
breakIntoColor: "#1b1259",
|
||||||
|
ignoreAir: true,
|
||||||
|
isFood: true
|
||||||
|
}
|
||||||
|
elements.olive = {
|
||||||
|
color: ["#808000","#91912c","#a1a148","#686800"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
reactions: {
|
||||||
|
"rock": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
|
||||||
|
"concrete": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
|
||||||
|
"basalt": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
|
||||||
|
"limestone": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
|
||||||
|
"tuff": { elem1:"juice", chance:0.1, color1:"#ebeb55" },
|
||||||
|
"water": { elem2:"juice", chance:0.005, color2:"#ebeb55" },
|
||||||
|
"sugar_water": { elem2:"juice", chance:0.025, color2:"#ebeb55" },
|
||||||
|
"acid": { elem1:"juice", color1:"#ebeb55" },
|
||||||
|
"acid_gas": { elem1:"juice", color1:"#ebeb55" },
|
||||||
|
},
|
||||||
|
tempHigh: 256,
|
||||||
|
stateHigh: ["steam","sugar"],
|
||||||
|
category: "food",
|
||||||
|
state: "solid",
|
||||||
|
density: 1154,
|
||||||
|
breakInto: "juice",
|
||||||
|
breakIntoColor: "#ebeb55",
|
||||||
|
ignoreAir: true,
|
||||||
|
isFood: true
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.carbon = elements.charcoal;
|
||||||
|
elements.photon = elements.light;
|
||||||
|
elements.electron = elements.electric;
|
||||||
|
|
||||||
|
elements.blue_cheese = {
|
||||||
|
color: "#0352fc",
|
||||||
|
behavior: behaviors.STURDYPOWDER,
|
||||||
|
tempHigh: 54,
|
||||||
|
stateHigh: "melted_cheese",
|
||||||
|
category: "food",
|
||||||
|
state: "solid",
|
||||||
|
density: 477.62,
|
||||||
|
isFood: true
|
||||||
|
};
|
||||||
|
if (elements.cheese.reactions) { elements.blue_cheese.reactions = elements.cheese.reactions; }
|
||||||
|
|
||||||
|
elements.moon = {
|
||||||
|
color: ["#b9b9b9","#8e8e8e","#b9b9b9"],
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "melted_cheese",
|
||||||
|
category: "special",
|
||||||
|
state: "solid",
|
||||||
|
density: 3300,
|
||||||
|
insulate: true,
|
||||||
|
noMix: true,
|
||||||
|
alias: "satellite",
|
||||||
|
movable: false,
|
||||||
|
hardness: 0.8,
|
||||||
|
breakInto: "moon_rock"
|
||||||
|
};
|
||||||
|
if (!elements.light.reactions) { elements.light.reactions = {}; }
|
||||||
|
elements.light.reactions.moon = { color1:"#ffffff" }
|
||||||
|
elements.light.reactions.moon_rock = { color1:"#ffffff" }
|
||||||
|
|
||||||
|
elements.moon_rock = {
|
||||||
|
color: ["#b9b9b9","#a3a3a3","#898989"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "melted_cheese",
|
||||||
|
category: "land",
|
||||||
|
state: "solid",
|
||||||
|
density: 3300,
|
||||||
|
hardness: 0.25,
|
||||||
|
breakInto: "dust",
|
||||||
|
hidden: true,
|
||||||
|
alias: "lunar_rock"
|
||||||
|
};
|
||||||
|
if (elements.rock.reactions) { elements.moon_rock.reactions = elements.rock.reactions; }
|
||||||
|
|
||||||
|
elements.toad = elements.frog;
|
||||||
|
|
||||||
|
elements.mouse = {
|
||||||
|
color: ["#aaaaaa","#8a8a8a","#cdcdcd"],
|
||||||
|
behavior: [
|
||||||
|
"XX|M2%1.5|M2%5",
|
||||||
|
"XX|FX%2|M2 AND BO",
|
||||||
|
"XX|M1|M2",
|
||||||
|
],
|
||||||
|
egg: "mouse",
|
||||||
|
category: "life",
|
||||||
|
temp: 37.6,
|
||||||
|
tempHigh: 120,
|
||||||
|
stateHigh: "cooked_meat",
|
||||||
|
tempLow: -18,
|
||||||
|
stateLow: "frozen_meat",
|
||||||
|
breakInto: "blood",
|
||||||
|
burn:80,
|
||||||
|
burnTime:150,
|
||||||
|
state: "solid",
|
||||||
|
density: 1450,
|
||||||
|
conduct: 0.25
|
||||||
|
};
|
||||||
|
elements.bless.reactions.rat = { elem2:"mouse" }
|
||||||
|
|
||||||
|
elements.ball.hidden = false;
|
||||||
|
elements.basketball = {
|
||||||
|
color: "#d14b17",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|FY:0%5|XX",
|
||||||
|
"XX|M1 AND BO|XX",
|
||||||
|
],
|
||||||
|
tempHigh: 250,
|
||||||
|
stateHigh: "molten_plastic",
|
||||||
|
category: "special",
|
||||||
|
flipY: false,
|
||||||
|
flippableY: true,
|
||||||
|
};
|
||||||
|
elements.baseball = {
|
||||||
|
color: "#d7d7d7",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|FY:0%5|XX",
|
||||||
|
"XX|M1 AND BO|XX",
|
||||||
|
],
|
||||||
|
tempHigh: 250,
|
||||||
|
stateHigh: "molten_plastic",
|
||||||
|
category: "special",
|
||||||
|
flipY: false,
|
||||||
|
flippableY: true,
|
||||||
|
};
|
||||||
|
elements.tennis_ball = {
|
||||||
|
color: "#c2ff48",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|FY:0%5|XX",
|
||||||
|
"XX|M1 AND BO|XX",
|
||||||
|
],
|
||||||
|
tempHigh: 250,
|
||||||
|
stateHigh: "molten_plastic",
|
||||||
|
category: "special",
|
||||||
|
flipY: false,
|
||||||
|
flippableY: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.supernova.hidden = false;
|
||||||
|
|
||||||
|
elements.quirky_paint = {
|
||||||
|
color: ["#b1b1b1","#9dc270","#c170c2","#107f10","#442f21","#ff6e6e","#34555f"],
|
||||||
|
tool: function(pixel) {
|
||||||
|
var hexcode = "#"+(Math.floor(Math.random()*16777215).toString(16).padStart(6,"0"));
|
||||||
|
pixel.color = pixelColorPick(pixel,hexcode);
|
||||||
|
delete pixel.origColor;
|
||||||
|
},
|
||||||
|
category: "special",
|
||||||
|
canPlace: false,
|
||||||
|
desc: "Use on pixels to change color randomly."
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.bird.color = "#1DA1F2";
|
||||||
|
|
||||||
|
elements.freeze = {
|
||||||
|
color: ["#b1e5ff","#6e89ec"],
|
||||||
|
tool: function(pixel) {
|
||||||
|
pixel.temp -= 1000;
|
||||||
|
pixelTempCheck(pixel);
|
||||||
|
},
|
||||||
|
category: "energy",
|
||||||
|
excludeRandom: true
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.freeze_ray = {
|
||||||
|
color: ["#00aaff","#0037ff"],
|
||||||
|
tick: function(pixel) {
|
||||||
|
var x = pixel.x;
|
||||||
|
for (var y = pixel.y; y < height; y++) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
if (Math.random() > 0.05) { continue }
|
||||||
|
createPixel("flash", x, y);
|
||||||
|
pixelMap[x][y].color = "#00aaff";
|
||||||
|
pixelMap[x][y].temp = -200;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (elements[pixelMap[x][y].element].isGas) { continue }
|
||||||
|
if (elements[pixelMap[x][y].element].id === elements.heat_ray.id) { break }
|
||||||
|
pixelMap[x][y].temp -= 100;
|
||||||
|
pixelTempCheck(pixelMap[x][y]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
},
|
||||||
|
temp: -200,
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
density: 1,
|
||||||
|
excludeRandom: true,
|
||||||
|
noMix: true
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.ufo = {
|
||||||
|
color: "#9ddfa3",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|FX%5|M1%50",
|
||||||
|
"XX|XX|XX"
|
||||||
|
],
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.ray) {
|
||||||
|
if (isEmpty(pixel.x,pixel.y+1)) {
|
||||||
|
createPixel(pixel.ray,pixel.x,pixel.y+1);
|
||||||
|
}
|
||||||
|
if (Math.random() < 0.1) {
|
||||||
|
pixel.ray = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Math.random() < 0.1) {
|
||||||
|
var rays = ["heat_ray","freeze_ray","god_ray"];
|
||||||
|
pixel.ray = rays[Math.floor(Math.random()*rays.length)];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
breakInto: ["metal_scrap","slime"],
|
||||||
|
category: "special"
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.udder.tick = function(pixel) {
|
||||||
|
if (Math.random() <= 0.025 && isEmpty(pixel.x,pixel.y+1)) {
|
||||||
|
var milks = ["milk","pilk","chocolate_milk","fruit_milk","eggnog"];
|
||||||
|
var milk = milks[Math.floor(Math.random()*milks.length)];
|
||||||
|
createPixel(milk,pixel.x,pixel.y+1);
|
||||||
|
pixelMap[pixel.x][pixel.y+1].temp = 38;
|
||||||
|
}
|
||||||
|
doDefaults(pixel);
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_light.tempLow = -1000;
|
||||||
|
elements.liquid_light.stateLowName = "light_ice";
|
||||||
|
elements.light_ice = {
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
state: "solid",
|
||||||
|
}
|
||||||
|
|
||||||
|
fireflySound = null;
|
||||||
|
elements.firefly.onSelect = function() {
|
||||||
|
fireflySound = new Audio("https://archive.org/download/09Fireflies/09%20Fireflies.mp3");
|
||||||
|
}
|
||||||
|
elements.firefly.onMouseDown = function() {
|
||||||
|
if (fireflySound) { fireflySound.play(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.pen = {
|
||||||
|
color: "#000000",
|
||||||
|
tool: function(pixel) {
|
||||||
|
if (pixel.element === "paper") {
|
||||||
|
pixel.color = pixelColorPick(pixel,"#000000");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "special",
|
||||||
|
desc: "Draws on Paper."
|
||||||
|
}
|
||||||
|
elements.eat = {
|
||||||
|
color: ["#ffba79","#efff79"],
|
||||||
|
tool: function(pixel) {
|
||||||
|
if (elements[pixel.element].isFood) {
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "tools",
|
||||||
|
desc: "Consumes edible pixels."
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.molten_tin.name = "moltin";
|
||||||
|
|
||||||
|
elements.ball.category = "energy";
|
||||||
|
|
||||||
|
elements.liquid_helium.tempLow = -272;
|
||||||
|
|
||||||
|
elements.cursor = {
|
||||||
|
color: ["#000000","#00ff00"],
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixelTicks % 60 < 30) {
|
||||||
|
pixel.color = "#000000";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pixel.color = "#00ff00";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "special",
|
||||||
|
related: "pointer"
|
||||||
|
}
|
||||||
|
elements.pointer.related = "cursor";
|
||||||
|
|
||||||
|
elements.footprint = {
|
||||||
|
color: ["#73777A","#B3B7BA","#F3F7FA"],
|
||||||
|
colorPattern: [
|
||||||
|
"00000001",
|
||||||
|
"01111112",
|
||||||
|
"01111112",
|
||||||
|
"01111112",
|
||||||
|
"01111112",
|
||||||
|
"01111112",
|
||||||
|
"01111112",
|
||||||
|
"12222222",
|
||||||
|
],
|
||||||
|
colorKey: {
|
||||||
|
"0": "#73777A",
|
||||||
|
"1": "#B3B7BA",
|
||||||
|
"2": "#F3F7FA",
|
||||||
|
},
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
category: "special"
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.air = {
|
||||||
|
color: "#000000",
|
||||||
|
tool: function(){},
|
||||||
|
category: "gases"
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.powder = {
|
||||||
|
color: "#ffffff",
|
||||||
|
colorPattern: ["F"],
|
||||||
|
colorKey: { "F": "#ffffff" },
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "powders",
|
||||||
|
state: "solid",
|
||||||
|
}
|
||||||
|
|
||||||
|
inMirrorDimension = false;
|
||||||
|
function getMousePos(canvas, evt) {
|
||||||
|
// If evt.touches is defined, use the first touch
|
||||||
|
if (evt.touches) {
|
||||||
|
evt.preventDefault();
|
||||||
|
evt = evt.touches[0];
|
||||||
|
isMobile = true;
|
||||||
|
}
|
||||||
|
var rect = canvas.getBoundingClientRect();
|
||||||
|
return {
|
||||||
|
// Round to nearest pixel
|
||||||
|
x: Math.round((evt.clientX - rect.left)/pixelSize-0.5),
|
||||||
|
y: Math.round((evt.clientY - rect.top)/pixelSize-0.5)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
oldGetMousePos = getMousePos;
|
||||||
|
elements.mirror_portal = {
|
||||||
|
color: ["#e07aff","#693778","#4b2843","#1f0f1b"],
|
||||||
|
behavior: [
|
||||||
|
"XX|SW:mirror_portal%10|XX",
|
||||||
|
"SW:mirror_portal%10|XX|SW:mirror_portal%10",
|
||||||
|
"XX|SW:mirror_portal%10|XX"
|
||||||
|
],
|
||||||
|
category: "special",
|
||||||
|
reactions: {
|
||||||
|
"body": {
|
||||||
|
func: function() {
|
||||||
|
if (!inMirrorDimension) {
|
||||||
|
inMirrorDimension = true;
|
||||||
|
for (var i = 0; i < currentPixels.length; i++) {
|
||||||
|
var pixel = currentPixels[i];
|
||||||
|
if (pixel.element === "mirror_portal") {
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.head.insertAdjacentHTML("beforeend",`
|
||||||
|
<style id="mirrorDimensionStyle">
|
||||||
|
#game {-moz-transform: scale(-1, -1);
|
||||||
|
-o-transform: scale(-1, -1);
|
||||||
|
-webkit-transform: scale(-1, -1);
|
||||||
|
transform: scale(-1, -1);
|
||||||
|
filter: invert(100%);}
|
||||||
|
.elementButton {filter: invert(100%);}
|
||||||
|
.pagetitle::after { content:" Bandsoxels" }
|
||||||
|
</style>
|
||||||
|
`);
|
||||||
|
// invert the math in getMousePos
|
||||||
|
getMousePos = function(canvas, evt) {
|
||||||
|
if (evt.touches) {
|
||||||
|
evt.preventDefault();
|
||||||
|
evt = evt.touches[0];
|
||||||
|
isMobile = true;
|
||||||
|
}
|
||||||
|
var rect = canvas.getBoundingClientRect();
|
||||||
|
return {
|
||||||
|
x: Math.round((rect.right - evt.clientX)/pixelSize-0.5),
|
||||||
|
y: Math.round((rect.bottom - evt.clientY)/pixelSize-0.5)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
inMirrorDimension = false;
|
||||||
|
document.getElementById("mirrorDimensionStyle").remove();
|
||||||
|
for (var i = 0; i < currentPixels.length; i++) {
|
||||||
|
var pixel = currentPixels[i];
|
||||||
|
if (pixel.element === "mirror_portal") {
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getMousePos = oldGetMousePos;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var element in elements) {
|
||||||
|
var info = elements[element];
|
||||||
|
if (info.category === "weapons") {
|
||||||
|
info.nocheer = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
multiverseTimelines = [];
|
||||||
|
multiverseIndex = 0;
|
||||||
|
|
||||||
|
function saveTimeline() {
|
||||||
|
// save at current index
|
||||||
|
multiverseTimelines[multiverseIndex] = generateSave(undefined,{keep:["temp","color"]});
|
||||||
|
}
|
||||||
|
function splitTimeline() {
|
||||||
|
saveTimeline();
|
||||||
|
var newSave = generateSave(undefined,{keep:["temp","color"]});
|
||||||
|
// add new timeline one after current
|
||||||
|
multiverseTimelines.splice(multiverseIndex+1,0,newSave);
|
||||||
|
loadTimeline(multiverseIndex+1);
|
||||||
|
}
|
||||||
|
function newTimeline() {
|
||||||
|
// add new timeline at end
|
||||||
|
saveTimeline();
|
||||||
|
clearAll();
|
||||||
|
multiverseIndex = multiverseTimelines.length;
|
||||||
|
saveTimeline();
|
||||||
|
loadTimeline(multiverseIndex);
|
||||||
|
}
|
||||||
|
function loadTimeline(i) {
|
||||||
|
multiverseIndex = i;
|
||||||
|
loadSave(multiverseTimelines[i]);
|
||||||
|
document.getElementById("timelineIndex").textContent = i;
|
||||||
|
}
|
||||||
|
function nextTimeline() {
|
||||||
|
saveTimeline();
|
||||||
|
if (multiverseIndex === multiverseTimelines.length-1) {
|
||||||
|
newTimeline();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
loadTimeline(multiverseIndex+1);
|
||||||
|
}
|
||||||
|
function prevTimeline() {
|
||||||
|
saveTimeline();
|
||||||
|
if (multiverseIndex === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
loadTimeline(multiverseIndex-1);
|
||||||
|
}
|
||||||
|
function redoTimeline() {
|
||||||
|
loadTimeline(multiverseIndex);
|
||||||
|
}
|
||||||
|
function deleteTimeline() {
|
||||||
|
multiverseTimelines.splice(multiverseIndex,1);
|
||||||
|
if (multiverseIndex === multiverseTimelines.length) {
|
||||||
|
multiverseIndex--;
|
||||||
|
}
|
||||||
|
if (multiverseTimelines.length < 1) {
|
||||||
|
newTimeline();
|
||||||
|
}
|
||||||
|
loadTimeline(multiverseIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("load", function() {
|
||||||
|
absoluteZero = -Infinity;
|
||||||
|
this.document.getElementById("elementControls").insertAdjacentHTML("afterend",`
|
||||||
|
<div style="display:block; padding:5px; font-size:13px">
|
||||||
|
<button onclick="location.search = '?fools=false'">Return to Normalcy</button>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
this.document.getElementById("elementControls").insertAdjacentHTML("afterend",`
|
||||||
|
<div style="display:block; padding:5px; font-size:13px">
|
||||||
|
Timeline-<span id="timelineIndex">0</span>:<button onclick="splitTimeline()">Split</button><button onclick="newTimeline()">New</button><button onclick="prevTimeline()"><</button><button onclick="nextTimeline()">></button><button onclick="redoTimeline()">Redo</button><button onclick="deleteTimeline()">Delete</button>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
this.document.getElementById("thanksTo").insertAdjacentHTML("beforeend",`, and the friends we made along the way`);
|
||||||
|
})
|
||||||
|
window.addEventListener("keydown", function(e) {
|
||||||
|
if (e.ctrlKey || e.metaKey) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
Loading…
Reference in New Issue