sandboxels/mods/bouncing_balls.js

703 lines
32 KiB
JavaScript

elements.better_ball = {
name: "ball",
tick: function(pixel) {
if (pixel.dir === "down") {
if (tryMove(pixel, pixel.x, pixel.y+1)) {
if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.speed > 0.5) {
pixel.speed += 1
console.log("go up and down code")
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.speed > 0.5) {
var beneath = pixelMap[pixel.x][pixel.y+1];
if (elements[beneath.element].id === elements.better_ball.id) {
if (beneath.dir === "up") {
pixel.dir = "up"
beneath.dir = "down"
beneath.speed = pixel.speed
pixel.speed = beneath.speed
}
else {
pixel.dir = "up"
}
}
else {
pixel.dir = "up"
}
}
else if (outOfBounds(pixel.x,pixel.y+1) && pixel.speed > 0.5) {
pixel.dir = "up"
}
}
else {
pixel.speed += 1
console.log("increase speed code")
}
}
else if (!tryMove(pixel, pixel.x, pixel.y+1) && (!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1))) {
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.roll === false && (isEmpty(pixel.x-1, pixel.y+1) || isEmpty(pixel.x+1, pixel.y+1))) {
console.log("incline code")
if (isEmpty(pixel.x+1, pixel.y+1)) {
pixel.rolldir = 1
}
else if (isEmpty(pixel.x-1, pixel.y+1)) {
pixel.rolldir = -1
}
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y+1);
pixel.rollspeed += 1
}
else if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.rollspeed > 0) {
pixel.rollspeed -= 1
pixel.speed = 0
if (pixel.roll === false) {
pixel.roll = true
}
if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y, true) && pixel.rollspeed < 10) {
console.log("bounce off wall code")
pixel.rolldir = (pixel.rolldir-(2*pixel.rolldir))
}
else if (pixel.rollspeed > 9 && isEmpty(pixel, pixel.x+(pixel.rolldir), pixel.y-1) && !isEmpty(pixel.x+(pixel.rolldir), pixel.y, true)) {
console.log("uphill code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y-1);
pixel.rollspeed -= 1
pixel.speed = 0
}
else if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y+1, true)) {
console.log("roll code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y)
}
else if (isEmpty(pixel.x+(pixel.rolldir), pixel.y)) {
console.log("stop roll code")
pixel.roll = false
}
}
else if (pixel.rollspeed < 1 && pixel.roll === true) {
pixel.roll = false
}
}
}
else if (pixel.speed > 0 && pixel.dir === "up") {
if (tryMove(pixel, pixel.x, pixel.y-1)) {
pixel.speed -= 1.15
if (outOfBounds(pixel.x,pixel.y-1) || !isEmpty(pixel.x, pixel.y-1, true)) {
if (!isEmpty(pixel.x, pixel.y-1, true) && pixel.speed > 0) {
var above = pixelMap[pixel.x][pixel.y-1];
if (elements[above.element].id === elements.better_ball.id) {
if (above.dir === "down") {
pixel.dir = "down"
above.dir = "up"
above.speed = pixel.speed
pixel.speed = above.speed
}
else {
pixel.dir = "down"
}
}
}
else if (outOfBounds(pixel.x,pixel.y-1) && pixel.speed > 0) {
pixel.dir = "down"
}
}
if (pixel.speed < 1) {
pixel.dir = "down"
}
}
}
doDefaults(pixel);
},
properties: {
speed: 0,
dir: "down",
roll: false,
rollspeed: 0,
},
color: "#e35693",
tempHigh: 250,
stateHigh: "molten_plastic",
category: "special"
}
elements.basketball = {
tick: function(pixel) {
if (pixel.dir === "down") {
if (tryMove(pixel, pixel.x, pixel.y+1)) {
if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.speed > 0.5) {
pixel.speed += 1
console.log("go up and down code")
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.speed > 0.5) {
var beneath = pixelMap[pixel.x][pixel.y+1];
if (elements[beneath.element].id === elements.better_ball.id) {
if (beneath.dir === "up") {
pixel.dir = "up"
beneath.dir = "down"
beneath.speed = pixel.speed
pixel.speed = beneath.speed
}
else {
pixel.dir = "up"
}
}
else {
pixel.dir = "up"
}
}
else if (outOfBounds(pixel.x,pixel.y+1) && pixel.speed > 0.5) {
pixel.dir = "up"
}
}
else {
pixel.speed += 1
console.log("increase speed code")
}
}
else if (!tryMove(pixel, pixel.x, pixel.y+1) && (!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1))) {
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.roll === false && (isEmpty(pixel.x-1, pixel.y+1) || isEmpty(pixel.x+1, pixel.y+1))) {
console.log("incline code")
if (isEmpty(pixel.x+1, pixel.y+1)) {
pixel.rolldir = 1
}
else if (isEmpty(pixel.x-1, pixel.y+1)) {
pixel.rolldir = -1
}
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y+1);
pixel.rollspeed += 1
}
else if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.rollspeed > 0) {
pixel.rollspeed -= 1
pixel.speed = 0
if (pixel.roll === false) {
pixel.roll = true
}
if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y, true) && pixel.rollspeed < 10) {
console.log("bounce off wall code")
pixel.rolldir = (pixel.rolldir-(2*pixel.rolldir))
}
else if (pixel.rollspeed > 9 && isEmpty(pixel, pixel.x+(pixel.rolldir), pixel.y-1) && !isEmpty(pixel.x+(pixel.rolldir), pixel.y, true)) {
console.log("uphill code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y-1);
pixel.rollspeed -= 1
pixel.speed = 0
}
else if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y+1, true)) {
console.log("roll code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y)
}
else if (isEmpty(pixel.x+(pixel.rolldir), pixel.y)) {
console.log("stop roll code")
pixel.roll = false
}
}
else if (pixel.rollspeed < 1 && pixel.roll === true) {
pixel.roll = false
}
}
}
else if (pixel.speed > 0 && pixel.dir === "up") {
if (tryMove(pixel, pixel.x, pixel.y-1)) {
pixel.speed -= 1.4
if (outOfBounds(pixel.x,pixel.y-1) || !isEmpty(pixel.x, pixel.y-1, true)) {
if (!isEmpty(pixel.x, pixel.y-1, true) && pixel.speed > 0) {
var above = pixelMap[pixel.x][pixel.y-1];
if (elements[above.element].id === elements.better_ball.id) {
if (above.dir === "down") {
pixel.dir = "down"
above.dir = "up"
above.speed = pixel.speed
pixel.speed = above.speed
}
else {
pixel.dir = "down"
}
}
}
else if (outOfBounds(pixel.x,pixel.y-1) && pixel.speed > 0) {
pixel.dir = "down"
}
}
if (pixel.speed < 1) {
pixel.dir = "down"
}
}
}
doDefaults(pixel);
},
properties: {
speed: 0,
dir: "down",
roll: false,
rollspeed: 0,
},
color: ["#B54213","#B54213","#161616","#B54213","#B54213","#161616","#B54213","#B54213"],
tempHigh: 350,
stateHigh: ["cooked_meat","smoke","smoke","smoke","smoke","ash","molten_plastic","molten_plastic","molten_plastic","molten_plastic","molten_plastic","molten_plastic"],
category: "special"
}
elements.tennis_ball = {
tick: function(pixel) {
if (pixel.dir === "down") {
if (tryMove(pixel, pixel.x, pixel.y+1)) {
if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.speed > 0.5) {
pixel.speed += 1
console.log("go up and down code")
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.speed > 0.5) {
var beneath = pixelMap[pixel.x][pixel.y+1];
if (elements[beneath.element].id === elements.better_ball.id) {
if (beneath.dir === "up") {
pixel.dir = "up"
beneath.dir = "down"
beneath.speed = pixel.speed
pixel.speed = beneath.speed
}
else {
pixel.dir = "up"
}
}
else {
pixel.dir = "up"
}
}
else if (outOfBounds(pixel.x,pixel.y+1) && pixel.speed > 0.5) {
pixel.dir = "up"
}
}
else {
pixel.speed += 1
console.log("increase speed code")
}
}
else if (!tryMove(pixel, pixel.x, pixel.y+1) && (!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1))) {
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.roll === false && (isEmpty(pixel.x-1, pixel.y+1) || isEmpty(pixel.x+1, pixel.y+1))) {
console.log("incline code")
if (isEmpty(pixel.x+1, pixel.y+1)) {
pixel.rolldir = 1
}
else if (isEmpty(pixel.x-1, pixel.y+1)) {
pixel.rolldir = -1
}
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y+1);
pixel.rollspeed += 1
}
else if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.rollspeed > 0) {
pixel.rollspeed -= 1
pixel.speed = 0
if (pixel.roll === false) {
pixel.roll = true
}
if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y, true) && pixel.rollspeed < 10) {
console.log("bounce off wall code")
pixel.rolldir = (pixel.rolldir-(2*pixel.rolldir))
}
else if (pixel.rollspeed > 9 && isEmpty(pixel, pixel.x+(pixel.rolldir), pixel.y-1) && !isEmpty(pixel.x+(pixel.rolldir), pixel.y, true)) {
console.log("uphill code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y-1);
pixel.rollspeed -= 1
pixel.speed = 0
}
else if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y+1, true)) {
console.log("roll code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y)
}
else if (isEmpty(pixel.x+(pixel.rolldir), pixel.y)) {
console.log("stop roll code")
pixel.roll = false
}
}
else if (pixel.rollspeed < 1 && pixel.roll === true) {
pixel.roll = false
}
}
}
else if (pixel.speed > 0 && pixel.dir === "up") {
if (tryMove(pixel, pixel.x, pixel.y-1)) {
pixel.speed -= 1.5
if (outOfBounds(pixel.x,pixel.y-1) || !isEmpty(pixel.x, pixel.y-1, true)) {
if (!isEmpty(pixel.x, pixel.y-1, true) && pixel.speed > 0) {
var above = pixelMap[pixel.x][pixel.y-1];
if (elements[above.element].id === elements.better_ball.id) {
if (above.dir === "down") {
pixel.dir = "down"
above.dir = "up"
above.speed = pixel.speed
pixel.speed = above.speed
}
else {
pixel.dir = "down"
}
}
}
else if (outOfBounds(pixel.x,pixel.y-1) && pixel.speed > 0) {
pixel.dir = "down"
}
}
if (pixel.speed < 1) {
pixel.dir = "down"
}
}
}
doDefaults(pixel);
},
properties: {
speed: 0,
dir: "down",
roll: false,
rollspeed: 0,
},
color: ["#ccff00","#ccff00","#dff6c8","#ccff00","#ccff00","#dff6c8","#ccff00","#ccff00"],
tempHigh: 412,
stateHigh: "fire",
burn: 5,
burnTime: 350,
burnInto: ["smoke","smoke","smoke","smoke","ash"],
state: "solid",
category: "special"
}
elements.golf_ball = {
tick: function(pixel) {
if (pixel.dir === "down") {
if (tryMove(pixel, pixel.x, pixel.y+1)) {
if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.speed > 0.5) {
pixel.speed += 1
console.log("go up and down code")
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.speed > 0.5) {
var beneath = pixelMap[pixel.x][pixel.y+1];
if (elements[beneath.element].id === elements.better_ball.id) {
if (beneath.dir === "up") {
pixel.dir = "up"
beneath.dir = "down"
beneath.speed = pixel.speed
pixel.speed = beneath.speed
}
else {
pixel.dir = "up"
}
}
else {
pixel.dir = "up"
}
}
else if (outOfBounds(pixel.x,pixel.y+1) && pixel.speed > 0.5) {
pixel.dir = "up"
}
}
else {
pixel.speed += 1
console.log("increase speed code")
}
}
else if (!tryMove(pixel, pixel.x, pixel.y+1) && (!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1))) {
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.roll === false && (isEmpty(pixel.x-1, pixel.y+1) || isEmpty(pixel.x+1, pixel.y+1))) {
console.log("incline code")
if (isEmpty(pixel.x+1, pixel.y+1)) {
pixel.rolldir = 1
}
else if (isEmpty(pixel.x-1, pixel.y+1)) {
pixel.rolldir = -1
}
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y+1);
pixel.rollspeed += 1
}
else if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.rollspeed > 0) {
pixel.rollspeed -= 0.9
pixel.speed = 0
if (pixel.roll === false) {
pixel.roll = true
}
if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y, true) && pixel.rollspeed < 10) {
console.log("bounce off wall code")
pixel.rolldir = (pixel.rolldir-(2*pixel.rolldir))
}
else if (pixel.rollspeed > 9 && isEmpty(pixel, pixel.x+(pixel.rolldir), pixel.y-1) && !isEmpty(pixel.x+(pixel.rolldir), pixel.y, true)) {
console.log("uphill code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y-1);
pixel.rollspeed -= 0.9
pixel.speed = 0
}
else if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y+1, true)) {
console.log("roll code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y)
}
else if (isEmpty(pixel.x+(pixel.rolldir), pixel.y)) {
console.log("stop roll code")
pixel.roll = false
}
}
else if (pixel.rollspeed < 1 && pixel.roll === true) {
pixel.roll = false
}
}
}
else if (pixel.speed > 0 && pixel.dir === "up") {
if (tryMove(pixel, pixel.x, pixel.y-1)) {
pixel.speed -= 1.3
if (outOfBounds(pixel.x,pixel.y-1) || !isEmpty(pixel.x, pixel.y-1, true)) {
if (!isEmpty(pixel.x, pixel.y-1, true) && pixel.speed > 0) {
var above = pixelMap[pixel.x][pixel.y-1];
if (elements[above.element].id === elements.better_ball.id) {
if (above.dir === "down") {
pixel.dir = "down"
above.dir = "up"
above.speed = pixel.speed
pixel.speed = above.speed
}
else {
pixel.dir = "down"
}
}
}
else if (outOfBounds(pixel.x,pixel.y-1) && pixel.speed > 0) {
pixel.dir = "down"
}
}
if (pixel.speed < 1) {
pixel.dir = "down"
}
}
}
doDefaults(pixel);
},
properties: {
speed: 0,
dir: "down",
roll: false,
rollspeed: 0,
},
color: "#edf1e6",
tempHigh: 350,
stateHigh: "molten_plastic",
state: "solid",
category: "special"
}
elements.golf_ball = {
tick: function(pixel) {
if (pixel.dir === "down") {
if (tryMove(pixel, pixel.x, pixel.y+1)) {
if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.speed > 0.5) {
pixel.speed += 1
console.log("go up and down code")
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.speed > 0.5) {
var beneath = pixelMap[pixel.x][pixel.y+1];
if (elements[beneath.element].id === elements.better_ball.id) {
if (beneath.dir === "up") {
pixel.dir = "up"
beneath.dir = "down"
beneath.speed = pixel.speed
pixel.speed = beneath.speed
}
else {
pixel.dir = "up"
}
}
else {
pixel.dir = "up"
}
}
else if (outOfBounds(pixel.x,pixel.y+1) && pixel.speed > 0.5) {
pixel.dir = "up"
}
}
else {
pixel.speed += 1
console.log("increase speed code")
}
}
else if (!tryMove(pixel, pixel.x, pixel.y+1) && (!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1))) {
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.roll === false && (isEmpty(pixel.x-1, pixel.y+1) || isEmpty(pixel.x+1, pixel.y+1))) {
console.log("incline code")
if (isEmpty(pixel.x+1, pixel.y+1)) {
pixel.rolldir = 1
}
else if (isEmpty(pixel.x-1, pixel.y+1)) {
pixel.rolldir = -1
}
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y+1);
pixel.rollspeed += 1
}
else if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.rollspeed > 0) {
pixel.rollspeed -= 0.9
pixel.speed = 0
if (pixel.roll === false) {
pixel.roll = true
}
if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y, true) && pixel.rollspeed < 10) {
console.log("bounce off wall code")
pixel.rolldir = (pixel.rolldir-(2*pixel.rolldir))
}
else if (pixel.rollspeed > 9 && isEmpty(pixel, pixel.x+(pixel.rolldir), pixel.y-1) && !isEmpty(pixel.x+(pixel.rolldir), pixel.y, true)) {
console.log("uphill code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y-1);
pixel.rollspeed -= 0.9
pixel.speed = 0
}
else if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y+1, true)) {
console.log("roll code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y)
}
else if (isEmpty(pixel.x+(pixel.rolldir), pixel.y)) {
console.log("stop roll code")
pixel.roll = false
}
}
else if (pixel.rollspeed < 1 && pixel.roll === true) {
pixel.roll = false
}
}
}
else if (pixel.speed > 0 && pixel.dir === "up") {
if (tryMove(pixel, pixel.x, pixel.y-1)) {
pixel.speed -= 1.3
if (outOfBounds(pixel.x,pixel.y-1) || !isEmpty(pixel.x, pixel.y-1, true)) {
if (!isEmpty(pixel.x, pixel.y-1, true) && pixel.speed > 0) {
var above = pixelMap[pixel.x][pixel.y-1];
if (elements[above.element].id === elements.better_ball.id) {
if (above.dir === "down") {
pixel.dir = "down"
above.dir = "up"
above.speed = pixel.speed
pixel.speed = above.speed
}
else {
pixel.dir = "down"
}
}
}
else if (outOfBounds(pixel.x,pixel.y-1) && pixel.speed > 0) {
pixel.dir = "down"
}
}
if (pixel.speed < 1) {
pixel.dir = "down"
}
}
}
doDefaults(pixel);
},
properties: {
speed: 0,
dir: "down",
roll: false,
rollspeed: 0,
},
color: "#edf1e6",
tempHigh: 350,
stateHigh: "molten_plastic",
state: "solid",
category: "special"
}
elements.marble = {
tick: function(pixel) {
if (pixel.dir === "down") {
if (tryMove(pixel, pixel.x, pixel.y+1)) {
if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.speed > 0.5) {
pixel.speed += 1
console.log("go up and down code")
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.speed > 0.5) {
var beneath = pixelMap[pixel.x][pixel.y+1];
if (elements[beneath.element].id === elements.better_ball.id) {
if (beneath.dir === "up") {
pixel.dir = "up"
beneath.dir = "down"
beneath.speed = pixel.speed
pixel.speed = beneath.speed
}
else {
pixel.dir = "up"
}
}
else {
pixel.dir = "up"
}
}
else if (outOfBounds(pixel.x,pixel.y+1) && pixel.speed > 0.5) {
pixel.dir = "up"
}
}
else {
pixel.speed += 1
console.log("increase speed code")
}
}
else if (!tryMove(pixel, pixel.x, pixel.y+1) && (!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1))) {
if (!isEmpty(pixel.x, pixel.y+1, true) && pixel.roll === false && (isEmpty(pixel.x-1, pixel.y+1) || isEmpty(pixel.x+1, pixel.y+1))) {
console.log("incline code")
if (isEmpty(pixel.x+1, pixel.y+1)) {
pixel.rolldir = 1
}
else if (isEmpty(pixel.x-1, pixel.y+1)) {
pixel.rolldir = -1
}
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y+1);
pixel.rollspeed += 1
}
else if ((!isEmpty(pixel.x, pixel.y+1, true) || outOfBounds(pixel.x,pixel.y+1)) && pixel.rollspeed > 0) {
pixel.rollspeed -= 0.5
pixel.speed = 0
if (pixel.roll === false) {
pixel.roll = true
}
if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y, true) && pixel.rollspeed < 10) {
console.log("bounce off wall code")
pixel.rolldir = (pixel.rolldir-(2*pixel.rolldir))
}
else if (pixel.rollspeed > 9 && isEmpty(pixel, pixel.x+(pixel.rolldir), pixel.y-1) && !isEmpty(pixel.x+(pixel.rolldir), pixel.y, true)) {
console.log("uphill code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y-1);
pixel.rollspeed -= 0.5
pixel.speed = 0
}
else if (!isEmpty(pixel.x+(pixel.rolldir), pixel.y+1, true)) {
console.log("roll code")
tryMove(pixel, pixel.x+(pixel.rolldir), pixel.y)
}
else if (isEmpty(pixel.x+(pixel.rolldir), pixel.y)) {
console.log("stop roll code")
pixel.roll = false
}
}
else if (pixel.rollspeed < 1 && pixel.roll === true) {
pixel.roll = false
}
}
}
else if (pixel.speed > 0 && pixel.dir === "up") {
if (tryMove(pixel, pixel.x, pixel.y-1)) {
pixel.speed -= 5
if (outOfBounds(pixel.x,pixel.y-1) || !isEmpty(pixel.x, pixel.y-1, true)) {
if (!isEmpty(pixel.x, pixel.y-1, true) && pixel.speed > 0) {
var above = pixelMap[pixel.x][pixel.y-1];
if (elements[above.element].id === elements.better_ball.id) {
if (above.dir === "down") {
pixel.dir = "down"
above.dir = "up"
above.speed = pixel.speed
pixel.speed = above.speed
}
else {
pixel.dir = "down"
}
}
}
else if (outOfBounds(pixel.x,pixel.y-1) && pixel.speed > 0) {
pixel.dir = "down"
}
}
if (pixel.speed < 1) {
pixel.dir = "down"
}
}
}
doDefaults(pixel);
},
properties: {
speed: 0,
dir: "down",
roll: false,
rollspeed: 0,
},
color: ["#5e807d","#5e807d","#679e99","#5e807d","#5e807d","#ADD8E6","#90EE90","#ebbe4d"],
tempHigh: 1505,
stateHigh: "molten_glass",
state: "solid",
category: "special"
}