msColorArray = ["#a0a0a0", "#0000ff", "#008000", "#ff0000", "#000080", "#800000", "#008080", "#000000", "#808080"]

elements.msfield = {
	name: "minefield",
	color: "#c0c0c0",
	conduct: 1,
	insulate: true,
	properties: {
		uwu: 0,
		revealed: false,
		revealedAround: false,
	},
	tick: function(pixel) {
		if(typeof(pixel.revealed) === 'undefined') {
			pixel.revealed = false
		}
		if(typeof(pixel.uwu) === 'undefined') {
			pixel.uwu = 0
		}
		if(typeof(pixel.revealedAround) === 'undefined') {
			pixel.revealedAround = false
		}
		if(pixel.charge) {
			pixel.revealed = true
			delete pixel.charge
			if(pixel.chargeCD) {
				delete pixel.chargeCD
			}
		}
		if(pixel.revealed) {
			//count neighbors
			pixel.uwu = 0
			for (let i = -1; i < 2; i++) {
				for (let j = -1; j < 2; j++) {
					if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
						if (pixelMap[pixel.x+j][pixel.y+i].element == "msmine") {
							pixel.uwu += 1
						}
					}
				}
			}
			if(typeof(pixel.uwu) === 'number' && isFinite(pixel.uwu) && !isNaN(pixel.uwu)) {
				if(pixel.uwu >= 0 && pixel.uwu <= 8) {
					pixel.color = msColorArray[pixel.uwu]
				}
			} else {
				pixel.color = "#ff00ff"
			}
		} else {
			pixel.color = "#c0c0c0" //I feel bad suppressing the sand effect.
		}
	},
	category: "special",
	state: "solid",
	hidden: true,
};

elements.msmine = {
	name: "minefield",
	color: "#c0c0c0",
	conduct: 1,
	insulate: true,
	properties: {
		uwu: 0,
		revealed: false,
	},
	tick: function(pixel) {
		if(pixel.charge) {
			pixel.revealed = true
			delete pixel.charge
			if(pixel.chargeCD) {
				delete pixel.chargeCD
			}
		}
		if(pixel.revealed) {
			pixel.color = ("#" + ((192 + Math.abs((pixelTicks * 4) % 64)).toString(16) + "c0c0").padStart(6, '0'));
			//oldFillStyle = ctx.fillStyle
			//ctx.fillStyle = "#ff0000";
			////ctx.fillRect(pixel.x*pixelSize, pixel.y*pixelSize, pixelSize/2, pixelSize);
			//ctx.fillRect(23*pixelSize, 23*pixelSize, pixelSize/2, pixelSize);
			//ctx.fillStyle = oldFillStyle;
		} else {
			pixel.color = "#c0c0c0"
		}
	},
	category: "special",
	state: "solid",
	hidden: true,
};

elements.ms = { //minesweeper = {
	color: ["#c0c0c0", "#c0c0c0", "#ff0000", "#008000", "#ff0000", "#000080", "#800000", "#008080", "#000000", "#808080", "#808080"],
	behavior: [
		"XX|XX|XX",
		"XX|CH:msfield,msfield,msfield,msfield,msfield,msfield,msfield,msfield,msfield,msmine|XX",
		"XX|XX|XX"
	],
	category: "special",
	state: "solid",
};