diff --git a/mods/m345678.js b/mods/m345678.js deleted file mode 100644 index c12fe160..00000000 --- a/mods/m345678.js +++ /dev/null @@ -1,816 +0,0 @@ - function pixelTickMod1(pixel) { - if (pixel.start === pixelTicks) {return} - var info = elements[pixel.element]; - if (pixel.charge && info.behaviorOn) { var behavior = info.behaviorOn; } - else { var behavior = info.behavior; } - if (pixel.flipX) { behavior = flipBehavior(behavior,"x"); } - if (pixel.flipY) { behavior = flipBehavior(behavior,"y"); } - if (pixel.r) { behavior = rotateBehavior(behavior,pixel.r); } - var x = pixel.x; - var y = pixel.y; - var move1Spots = []; - var move2Spots = []; - var move3Spots = []; - var move4Spots = []; - var move5Spots = []; - var move6Spots = []; - var move7Spots = []; - var move8Spots = []; - var supportSpots = []; - var swapSpots = []; - var leaveBehind = null; - var leaveBehind1 = null; - var leaveBehind2 = null; - var leaveBehind3 = null; - var leaveBehind4 = null; - var leaveBehind5 = null; - var leaveBehind6 = null; - var leaveBehind7 = null; - var leaveBehind8 = null; - var move = true; - // Parse behavior - for (var by = 0; by < behavior.length; by++) { - var behaviorby = behavior[by]; - for (var bx = 0; bx < behaviorby.length; bx++) { - var b0 = behaviorby[bx]; - if (b0 === "XX") {continue} - //if (b.includes(" OR ")) { - // b = b.split(" OR ")[Math.floor(Math.random()*b.split(" OR ").length)]; - //} - // Loop through b0.split(" AND ") - if (b0.includes(" AND ")) { var andsplit = b0.split(" AND "); } - else { var andsplit = [b0]; } - for (var i = 0; i < andsplit.length; i++) { - var b = andsplit[i]; - if (b.includes(":")) { - var arg = b.split(":")[1].split(/[\:\%]/)[0]; - if (!b.includes("%")) { - b = b.split(/[\:\%]/)[0]; - } - } - else { var arg = null;} - // If b has "%" followed by a number in it, it's a chance to move - if (b.includes("%")) { - // Split the string at the "%" and use the second half as the chance (float) - var chance = parseFloat(b.split("%")[1]); - //console.log(b+": "+(Math.random()*100 < chance)); - b = b.split(/[\:\%]/)[0]; - } - else { var chance = 100; } - if (chance==100 || Math.random()*100 < chance) { - var newCoords = behaviorCoords(x,y,bx,by); - if (b == "M1") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move1Spots.push(newCoords); - } - else if (b == "M2") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move2Spots.push(newCoords); - } - else if (b == "M3") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move3Spots.push(newCoords); - } - else if (b == "M4") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move4Spots.push(newCoords); - } - else if (b == "M5") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move5Spots.push(newCoords); - } - else if (b == "M6") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move6Spots.push(newCoords); - } - else if (b == "M7") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move7Spots.push(newCoords); - } - else if (b == "M8") { - if (info.viscosity != undefined) { - if (!((Math.random()*100) < 100 / ((info.viscosity) ** 0.25))) { - newCoords.x = x; - } - } - move8Spots.push(newCoords); - } - else if (b == "SP") { - supportSpots.push({x:newCoords.x,y:newCoords.y,arg:arg}); - } - else if (b == "SA") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - move = false; - } - } - else if (b == "DL") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - // if the pixel at newCoords is the same element as the pixel, ignore - newPixel = pixelMap[newCoords.x][newCoords.y]; - // if info.ignore exists and newPixel.element is in it - if (info.ignore && info.ignore.includes(newPixel.element)) { - continue; - } - if ((!(newPixel.element == pixel.element)) || (newCoords.x == x && newCoords.y == y)) { - if (arg != null) { var args = arg.split(","); } - if (arg == null || args.includes(newPixel.element)) { - if (!elements[newPixel.element].hardness || Math.random() > elements[newPixel.element].hardness) { - deletePixel(newCoords.x,newCoords.y); - if (newCoords.x == x && newCoords.y == y) { - var deleted = true; - } - swapSpots = []; - } - } - } - } - } - else if (b == "DB") { // Delete Both - if (!isEmpty(newCoords.x,newCoords.y,true)) { - // if the pixel at newCoords is the same element as the pixel, ignore - newPixel = pixelMap[newCoords.x][newCoords.y]; - // if info.ignore exists and newPixel.element is in it - if (info.ignore && info.ignore.includes(newPixel.element)) { - continue; - } - if (!(newPixel.element == pixel.element)) { - if (arg != null) { var args = arg.split(","); } - if (arg == null || args.includes(newPixel.element)) { - if (!elements[newPixel.element].hardness || Math.random() > elements[newPixel.element].hardness) { - deletePixel(newCoords.x,newCoords.y); - if (pixelMap[pixel.x][pixel.y] != undefined) { - deletePixel(pixel.x,pixel.y); - } - var deleted = true; - swapSpots = []; - } - } - } - } - } - //Change pixel - else if (b == "CH") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (!elements[newPixel.element].hardness || Math.random() > elements[newPixel.element].hardness) { - if (arg.includes(">")) { - var argfrom = arg.split(">")[0]; - var argto = arg.split(">")[1]; - } - else { - var argfrom = null; - var argto = arg; - } - if (argto.includes(",")) { - var argto = argto.split(",")[Math.floor(Math.random()*argto.split(",").length)]; - } - if (elements[argto]) { - if ((newPixel.element != argto) && (argfrom == null || argfrom == newPixel.element)) { - newPixel.element = argto; - newPixel.color = pixelColorPick(newPixel); - newPixel.start = pixelTicks; - if (elements[argto].burning != true) { - newPixel.burning = false; - } - else { - newPixel.burning = true; - newPixel.burnStart = pixelTicks; - } - if (newPixel.r && !elements[argto].rotatable) { - newPixel.r = false; - } - if (newPixel.flipX && !elements[argto].flippableX) { - newPixel.flipX = false; - } - if (newPixel.flipY && !elements[argto].flippableY) { - newPixel.flipY = false; - } - } - } - } - } - } - //Swap - else if (b == "SW") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (arg != null) { var args = arg.split(","); } - if (arg == null || args.includes(newPixel.element)) { - if (!elements[newPixel.element].hardness || Math.random() > elements[newPixel.element].hardness) { - swapSpots.push({x:newCoords.x,y:newCoords.y}); - } - } - } - } - //Create pixel - else if (b == "CR") { - if (isEmpty(newCoords.x,newCoords.y)) { - if (arg == null) { - arg = pixel.element; - } - else if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - if (elements[arg]) { - createPixel(arg,newCoords.x,newCoords.y); - pixelMap[newCoords.x][newCoords.y].temp = pixel.temp - } - } - } - // Clone self - else if (b == "CL") { - if (isEmpty(newCoords.x,newCoords.y)) { - if (arg == null || pixel.temp >= parseFloat(arg)) { - clonePixel(pixel,newCoords.x,newCoords.y); - } - } - } - // Clone first touched - else if (b == "CF") { - if (pixel.clone) { - if (isEmpty(newCoords.x,newCoords.y)) { - createPixel(pixel.clone,newCoords.x,newCoords.y); - pixelMap[newCoords.x][newCoords.y].temp = pixel.temp; - } - } - else { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - newPixel = pixelMap[newCoords.x][newCoords.y]; - if (newPixel.element != pixel.element && newPixel.element != "wire") { - pixel.clone = newPixel.element; - pixel.temp = newPixel.temp; - } - else if (newPixel.clone) { - pixel.clone = newPixel.clone; - pixel.temp = newPixel.temp; - } - } - } - } - else if (b=="SH") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - var con = elements[newPixel.element].conduct; - if (con != undefined) { - if (Math.random() < con) { // If random number is less than conductivity - if (!newPixel.charge && !newPixel.chargeCD) { - newPixel.charge = (parseFloat(arg) || 1); - if (elements[newPixel.element].colorOn) { - newPixel.color = pixelColorPick(newPixel); - } - } - } - } - } - } - //Stick - else if (b=="ST") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (newPixel.element != pixel.element && (arg == null || newPixel.element == arg)) { - var sticking = true - } - } - } - //Leave behind element - else if (b == "LB" || b == "L1" || b == "L2" || b == "L3" || b == "L4" || b == "L5" || b == "L6" || b == "L7" || b == "L8") { - if (arg != null && arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - if (elements[arg]) { - if (b=="LB") {leaveBehind = arg;} - else if (b=="L1") {leaveBehind1 = arg;} - else if (b=="L2") {leaveBehind2 = arg;} - else if (b=="L3") {leaveBehind3 = arg;} - else if (b=="L4") {leaveBehind4 = arg;} - else if (b=="L5") {leaveBehind5 = arg;} - else if (b=="L6") {leaveBehind6 = arg;} - else if (b=="L7") {leaveBehind7 = arg;} - else if (b=="L8") {leaveBehind8 = arg;} - } - } - //Change color - else if (b == "CC") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (arg == null) {arg = newPixel.colorObject} - else { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - if (!arg.startsWith("#")) { - arg = "#" + arg; - } - } - newPixel.color = pixelColorPick(newPixel,arg); - } - } - //Heat - else if (b == "HT") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - // if the element isn't the same or the coords ARE the same - if (!(newPixel.element == pixel.element) || (newCoords.x == pixel.x && newCoords.y == pixel.y)) { - if (arg != null) {arg = parseFloat(arg)} - else {arg = 1} - if (isNaN(arg)) {arg = 1} - newPixel.temp += arg; - pixelTempCheck(newPixel); - } - } - } - //Cool - else if (b == "CO") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (!(newPixel.element == pixel.element) || (newCoords.x == pixel.x && newCoords.y == pixel.y)) { - if (arg != null) {arg = parseFloat(arg)} - else {arg = 1} - if (isNaN(arg)) {arg = 1} - newPixel.temp -= arg; - pixelTempCheck(newPixel); - } - } - } - - // Flip X - else if (b == "FX") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (elements[newPixel.element].flippableX) { - if (arg === "0") { newPixel.flipX = false; } - else if (arg === "1") { newPixel.flipX = true; } - newPixel.flipX = !newPixel.flipX; - } - } - } - // Flip Y - else if (b == "FY") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - if (elements[newPixel.element].flippableY) { - if (arg === "0") { newPixel.flipY = false; } - else if (arg === "1") { newPixel.flipY = true; } - else { newPixel.flipY = !newPixel.flipY; } - } - } - } - // Rotate - else if (b == "RT") { - if (!isEmpty(newCoords.x,newCoords.y,true)) { - var newPixel = pixelMap[newCoords.x][newCoords.y]; - // If arg isn't null, set arg to a random choice from arg.split(",") - if (arg != null && arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - if (elements[newPixel.element].rotatable) { - newPixel.r = ((newPixel.r||0) + (parseInt(arg)||1)) % 4; - } - } - } - // Bounce - else if (b == "BO") { - if (!isEmpty(newCoords.x,newCoords.y)) { - if (info.flippableX) { - pixel.flipX = !pixel.flipX; - } - if (info.flippableY) { - pixel.flipY = !pixel.flipY; - } - if (info.rotatable) { - // If arg isn't null, set arg to a random choice from arg.split(",") - if (arg != null && arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - if (pixel.r !== undefined) { - pixel.r = (pixel.r + (parseInt(arg)||2)) % 4; - } - else { pixel.r = (parseInt(arg)||2); } - } - } - } - // Change When M2 - else if (b == "C2") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C2 = arg; - } - // Change When M3 - else if (b == "C3") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C3 = arg; - } - // Change When M4 - else if (b == "C4") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C4 = arg; - } - // Change When M5 - else if (b == "C5") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C5 = arg; - } - // Change When M6 - else if (b == "C6") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C6 = arg; - } - // Change When M7 - else if (b == "C7") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C7 = arg; - } - // Change When M8 - else if (b == "C8") { - if (arg.includes(",")) { - arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; - } - var C8 = arg; - } - // Explode - else if (b == "EX") { - if (!isEmpty(newCoords.x,newCoords.y)) { - if (outOfBounds(newCoords.x,newCoords.y) || (newCoords.x == x && newCoords.y == y) || (pixel.element !== pixelMap[newCoords.x][newCoords.y].element && elements[pixelMap[newCoords.x][newCoords.y].element].state !== "gas")) { - // if arg contains ">", var fire = everything after it, arg = everything before it - if (arg.includes(">")) { - var fire = arg.split(">")[1]; - arg = arg.split(">")[0]; - } - else { var fire = "fire" } - // arg = a number - if (arg != null) { - arg = parseInt(arg); - if (isNaN(arg)) {arg = 3} - } - else {arg = 3} - explodeAt(x,y,arg,fire); - if (!pixel.del && info.hardness !== 1) { - deletePixel(x,y); - var deleted = true; - } - swapSpots = []; - } - } - } - - - } - } - } - } - if (typeof deleted !== "undefined") {return;} - if (supportSpots.length > 0) { - var supportCount = 0; - var allEmpty = true; - for (var i = 0; i < supportSpots.length; i++) { - var bx = supportSpots[i].x; - var by = supportSpots[i].y; - var arg = supportSpots[i].arg; - if (!isEmpty(bx,by,true)) { - if ((arg == null && !validDensitySwaps.includes(info.state+">"+elements[pixelMap[bx][by].element].state)) || pixelMap[bx][by].element == arg) { - supportCount++; - } - } - } - if (supportCount == supportSpots.length) { - move = false; - } - } - - var moved = false; - - if (swapSpots.length > 0) { - var coords = swapSpots[Math.floor(Math.random()*swapSpots.length)]; - if (pixelMap[coords.x][coords.y] != undefined) { - swapPixels(pixel,pixelMap[coords.x][coords.y]); - move = false; - moved = true; - } - } - - if (typeof sticking !== "undefined") { - move = false; - } - - // Move First Priority - if (move) { - if (move1Spots.length > 0) { - // While move1Spots is not empty - while (move1Spots.length > 0) { - // coords = random item of move1Spots - var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind1 || leaveBehind); - if (moved) { - break; - } - else { - // remove coords from move1Spots - move1Spots.splice(move1Spots.indexOf(coords),1); - } - - - } - } - // Move Second Priority - if (!moved && move2Spots.length > 0) { - // While move2Spots is not empty - while (move2Spots.length > 0) { - // coords = random item of move2Spots - var coords = move2Spots[Math.floor(Math.random()*move2Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind2 || leaveBehind); - if (moved) { - if (typeof C2 !== "undefined" && elements[C2]) { - pixel.element = C2; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C2].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move2Spots - move2Spots.splice(move2Spots.indexOf(coords),1); - } - } - //Move Third Priority - if (!moved && move3Spots.length > 0) { - // While move3Spots is not empty - while (move3Spots.length > 0) { - // coords = random item of move3Spots - var coords = move3Spots[Math.floor(Math.random()*move3Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind3 || leaveBehind); - if (moved) { - if (typeof C3 !== "undefined" && elements[C3]) { - pixel.element = C3; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C3].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move3Spots - move3Spots.splice(move3Spots.indexOf(coords),1); - } - } - //Move Fourth Priority - if (!moved && move4Spots.length > 0) { - // While move4Spots is not empty - while (move4Spots.length > 0) { - // coords = random item of move4Spots - var coords = move4Spots[Math.floor(Math.random()*move4Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind4 || leaveBehind); - if (moved) { - if (typeof C4 !== "undefined" && elements[C4]) { - pixel.element = C4; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C4].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move4Spots - move4Spots.splice(move4Spots.indexOf(coords),1); - } - } - //Move Fifth Priority - if (!moved && move5Spots.length > 0) { - // While move5Spots is not empty - while (move5Spots.length > 0) { - // coords = random item of move5Spots - var coords = move5Spots[Math.floor(Math.random()*move5Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind5 || leaveBehind); - if (moved) { - if (typeof C5 !== "undefined" && elements[C5]) { - pixel.element = C5; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C5].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move5Spots - move5Spots.splice(move5Spots.indexOf(coords),1); - } - } - //Move Sixth Priority - if (!moved && move6Spots.length > 0) { - // While move6Spots is not empty - while (move6Spots.length > 0) { - // coords = random item of move6Spots - var coords = move6Spots[Math.floor(Math.random()*move6Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind6 || leaveBehind); - if (moved) { - if (typeof C6 !== "undefined" && elements[C6]) { - pixel.element = C6; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C6].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move6Spots - move6Spots.splice(move6Spots.indexOf(coords),1); - } - } - //Move Seventh Priority - if (!moved && move7Spots.length > 0) { - // While move7Spots is not empty - while (move7Spots.length > 0) { - // coords = random item of move7Spots - var coords = move7Spots[Math.floor(Math.random()*move7Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind7 || leaveBehind); - if (moved) { - if (typeof C7 !== "undefined" && elements[C7]) { - pixel.element = C7; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C7].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move7Spots - move7Spots.splice(move7Spots.indexOf(coords),1); - } - } - //Move Eighth Priority - if (!moved && move8Spots.length > 0) { - // While move8Spots is not empty - while (move8Spots.length > 0) { - // coords = random item of move8Spots - var coords = move8Spots[Math.floor(Math.random()*move8Spots.length)]; - var nx = coords.x; - var ny = coords.y; - moved = tryMove(pixel,nx,ny,leaveBehind8 || leaveBehind); - if (moved) { - if (typeof C8 !== "undefined" && elements[C8]) { - pixel.element = C8; - pixel.color = pixelColorPick(pixel); - pixel.start = pixelTicks; - if (elements[C8].burning != true) { - pixel.burning = false; - } - else { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - } - break; - } - else { - // remove coords from move8Spots - move8Spots.splice(move8Spots.indexOf(coords),1); - } - } - } - } - } - } - } - } - } - } - - - // Change tempearture if needed (unused) - /*if (info.tempChange != undefined) { - pixel.temp += info.tempChange; - pixelTempCheck(pixel); - }*/ - - // Burning - doBurning(pixel); - - // Heat Transfer - if (info.insulate != true) { - doHeat(pixel); - } - - // Electricity Transfer - doElectricity(pixel); - - - } - -elements.m3test = { - "color": "#33aa44", - "behavior": [ - "XX|M3%10|XX", - "M2|XX|M2", - "M1|M1|M1" - ], - tick: function(pixel) { - pixelTickMod1(pixel) - }, - "density": 1200, - "state": "liquid", - "category": "special" -} - -elements.m3test2 = { - "color": "#aa3344", - "behavior": [ - "M6|M5|M4", - "M7|LB:wood|M3", - "M8|M1|M2" - ], - tick: function(pixel) { - pixelTickMod1(pixel) - }, - "density": 120000, - "state": "solid", - "category": "special" -}