diff --git a/mods/genetics.js b/mods/genetics.js index dc2d8257..be89639c 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,95 +1,182 @@ /* by nekonico, do not steal!!!!!! >:3*/ elements.organism = { - color: ["#997457","#c4b270","#9c916a","#9e8955","#a89a76"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "M2%10|M1|M2%10", + ], + color: ["#997457","#a89a76"], properties: { geneticCode: 0, + oldvore: 0, vore: 0, food: 0, - age: 0 + age: 0, + dead: false }, tick: function(pixel) { + if (pixel.vore != pixel.oldvore) { if (pixel.vore === 0) { - if (Math.random() > 0.2) { - pixel.color = "#997457" - } - else if (Math.random() > 0.2) { - pixel.color = "#c4b270" - } - else if (Math.random() > 0.2) { - pixel.color = "#9c916a" - } - else if (Math.random() > 0.2) { - pixel.color = "#9e8955" + if (Math.random() > 0.5) { + pixel.color = "#997457" } else { - pixel.color = "#a89a76" + pixel.color = "#a89a76" } } else if (pixel.vore === 1) { - pixel.color = "#9E6954" + if (Math.random() > 0.5) { + pixel.color = "#9E6954" + } + else { + pixel.color = "#AB8C6B" + } } else if (pixel.vore === 2) { - pixel.color = "#A25F50" + if (Math.random() > 0.5) { + pixel.color = "#A25F50" + } + else { + pixel.color = "#AF7E61" + } } else if (pixel.vore === 3) { - pixel.color = "#A7544D" + if (Math.random() > 0.5) { + pixel.color = "#A7544D" + } + else { + pixel.color = "#B27056" + } } else if (pixel.vore === 4) { - pixel.color = "#A7544D" + if (Math.random() > 0.5) { + pixel.color = "#A7544D" + } + else { + pixel.color = "#B5624B" + } } else if (pixel.vore === 5) { - pixel.color = "#AC4A4A" + if (Math.random() > 0.5) { + pixel.color = "#AC4A4A" + } + else { + pixel.color = "#B85440" + } } else if (pixel.vore === 6) { - pixel.color = "#B03F47" + if (Math.random() > 0.5) { + pixel.color = "#B03F47" + } + else { + pixel.color = "#BC4636" + } } else if (pixel.vore === 7) { - pixel.color = "#B53543" + if (Math.random() > 0.5) { + pixel.color = "#B53543" + } + else { + pixel.color = "#BF382B" + } } else if (pixel.vore === 8) { - pixel.color = "#B92A40" + if (Math.random() > 0.5) { + pixel.color = "#B92A40" + } + else { + pixel.color = "#C22A20" + } } else if (pixel.vore > 8) { - pixel.color = "#BE203D" + if (Math.random() > 0.5) { + pixel.color = "#BE203D" + } + else { + pixel.color = "#C51C15" + } } else if (pixel.vore === -1) { - pixel.color = "#8B7C4F" + if (Math.random() > 0.5) { + pixel.color = "#8B7C4F" + } + else { + pixel.color = "#9D9A6B" + } } else if (pixel.vore === -2) { - pixel.color = "#7D8447" + if (Math.random() > 0.5) { + pixel.color = "#7D8447" + } + else { + pixel.color = "#939A61" + } } else if (pixel.vore === -3) { - pixel.color = "#6F8C3F" + if (Math.random() > 0.5) { + pixel.color = "#6F8C3F" + } + else { + pixel.color = "#889A56" + } } else if (pixel.vore === -4) { - pixel.color = "#619437" + if (Math.random() > 0.5) { + pixel.color = "#619437" + } + else { + pixel.color = "#7D9A4B" + } } else if (pixel.vore === -5) { - pixel.color = "#539C2F" + if (Math.random() > 0.5) { + pixel.color = "#539C2F" + } + else { + pixel.color = "#739A40" + } } else if (pixel.vore === -6) { - pixel.color = "#46A428" + if (Math.random() > 0.5) { + pixel.color = "#46A428" + } + else { + pixel.color = "#689936" + } } else if (pixel.vore === -7) { - pixel.color = "#38AC20" + if (Math.random() > 0.5) { + pixel.color = "#38AC20" + } + else { + pixel.color = "#5E992B" + } } else if (pixel.vore === -8) { - pixel.color = "#2AB418" + if (Math.random() > 0.5) { + pixel.color = "#2AB418" + } + else { + pixel.color = "#539920" + } } else if (pixel.vore < -8) { - pixel.color = "#1CBC10" + if (Math.random() > 0.5) { + pixel.color = "#1CBC10" + } + else { + pixel.color = "#489915" + } + } + } + if (pixel.food > 0 && Math.random() > 0.99) { + pixel.food -= 1; + } + else if (pixel.food < 1 && pixel.age > 1000 && Math.random() > 0.99) { + pixel.dead = true; } if (pixel.geneticCode < 11) { - if (isEmpty(pixel.x, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); - } - else if (Math.random() > 0.9 && isEmpty(pixel.x-1, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y+1); - } - else if (Math.random() > 0.9 && isEmpty(pixel.x+1, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y+1); - } if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -132,7 +219,7 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { changePixel(pixel,"sugar"); } @@ -207,9 +294,17 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { changePixel(pixel,"sugar"); @@ -218,32 +313,29 @@ elements.organism = { pixel.age += 1 } else if (pixel.geneticCode > 20 && pixel.geneticCode < 31) { - if (isEmpty(pixel.x, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); - } - else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + if (Math.random() > 0.95 && isEmpty(pixel.x-1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); } - else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + else if (Math.random() > 0.95 && isEmpty(pixel.x+1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { - deletePixel(pixel.x, pixel.y-1); - pixel.food += 1 - } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sugar") { - deletePixel(pixel.x, pixel.y+1); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { - deletePixel(pixel.x+1, pixel.y); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { - deletePixel(pixel.x-1, pixel.y); - pixel.food += 1 - } - if (pixel.vore === 0) { + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sugar") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -277,7 +369,7 @@ elements.organism = { pixel.food += 1 } } - else if (pixel.vore > 0) { + else if (pixel.vore > 2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -295,7 +387,7 @@ elements.organism = { pixel.food += 1 } } - else if (pixel.vore < 0) { + else if (pixel.vore < -2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -379,9 +471,17 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { changePixel(pixel,"sugar"); @@ -390,16 +490,29 @@ elements.organism = { pixel.age += 1 } else if (pixel.geneticCode > 30 && pixel.geneticCode < 41) { - if (isEmpty(pixel.x, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); - } - else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + if (Math.random() > 0.9 && isEmpty(pixel.x-1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); } - else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + else if (Math.random() > 0.9 && isEmpty(pixel.x+1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); } - if (pixel.vore === 0) { + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sugar") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -433,7 +546,7 @@ elements.organism = { pixel.food += 1 } } - else if (pixel.vore > 0) { + else if (pixel.vore > 2) { /* by nekonico, do not steal!!!!!! >:3*/ if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -451,7 +564,7 @@ elements.organism = { pixel.food += 1 } } - else if (pixel.vore < 0) { + else if (pixel.vore < -2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -535,27 +648,56 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"rotten_meat"); + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } } pixel.age += 1 } else if (pixel.geneticCode > 40 && pixel.geneticCode < 51) { - if (isEmpty(pixel.x, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); - } - else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + if (Math.random() > 0.9 && isEmpty(pixel.x-1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); } - else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + else if (Math.random() > 0.9 && isEmpty(pixel.x+1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); } - if (pixel.vore === 0) { + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sugar") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -604,24 +746,24 @@ elements.organism = { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { deletePixel(pixel.x, pixel.y+1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { deletePixel(pixel.x+1, pixel.y); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } } - else if (pixel.vore > 0) { + else if (pixel.vore > 2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -655,7 +797,7 @@ elements.organism = { pixel.food += 1 } } - else if (pixel.vore < 0) { + else if (pixel.vore < -2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -672,35 +814,19 @@ elements.organism = { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { deletePixel(pixel.x, pixel.y+1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { deletePixel(pixel.x+1, pixel.y); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { - deletePixel(pixel.x-1, pixel.y); - pixel.food += 1 - } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { - deletePixel(pixel.x, pixel.y-1); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { - deletePixel(pixel.x, pixel.y+1); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { - deletePixel(pixel.x+1, pixel.y); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } @@ -771,27 +897,56 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"rotten_meat"); + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } } pixel.age += 1 } - else if (pixel.geneticCode > 50) { - if (isEmpty(pixel.x, pixel.y+1)) { - /* by nekonico, do not steal!!!!!! >:3*/ movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); - } - else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + else if (pixel.geneticCode > 50 && pixel.geneticCode < 61) { + if (Math.random() > 0.8 && isEmpty(pixel.x-1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); } - else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + else if (Math.random() > 0.8 && isEmpty(pixel.x+1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); } - if (pixel.vore === 0) { + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sugar") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -840,24 +995,24 @@ elements.organism = { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { deletePixel(pixel.x, pixel.y+1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { deletePixel(pixel.x+1, pixel.y); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } } - else if (pixel.vore > 0) { + else if (pixel.vore > 2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -923,7 +1078,7 @@ elements.organism = { pixel.food += 1 } } - else if (pixel.vore < 0) { + else if (pixel.vore < -2) { if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -956,6 +1111,22 @@ elements.organism = { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -972,51 +1143,35 @@ elements.organism = { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { deletePixel(pixel.x, pixel.y+1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { deletePixel(pixel.x+1, pixel.y); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { deletePixel(pixel.x, pixel.y+1); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { deletePixel(pixel.x+1, pixel.y); pixel.food += 1 } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { - deletePixel(pixel.x-1, pixel.y); - pixel.food += 1 - } - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "algae") { - deletePixel(pixel.x, pixel.y-1); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "algae") { - deletePixel(pixel.x, pixel.y+1); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "algae") { - deletePixel(pixel.x+1, pixel.y); - pixel.food += 1 - } - else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "algae") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } @@ -1087,24 +1242,2754 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"rotten_meat"); + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 60 && pixel.geneticCode < 71) { + if (Math.random() > 0.8 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.8 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sugar") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sugar") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fly") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fly") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fly") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fly") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "ant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "ant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "ant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "ant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "egg") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "egg") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "egg") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < -2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "wood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "wood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "wood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "wood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bamboo") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bamboo") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bamboo") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bamboo") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 70 && pixel.geneticCode < 81) { + if (Math.random() > 0.75 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.75 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && elements[pixelMap[pixel.x][pixel.y-1].element].isFood) { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && elements[pixelMap[pixel.x][pixel.y+1].element].isFood) { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && elements[pixelMap[pixel.x+1][pixel.y].element].isFood) { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && elements[pixelMap[pixel.x-1][pixel.y].element].isFood) { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fly") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fly") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fly") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fly") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "ant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "ant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "ant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "ant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "egg") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "egg") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "egg") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bird") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bird") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bird") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bird") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fish") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fish") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fish") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fish") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < -2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "wood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "wood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "wood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "wood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bamboo") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bamboo") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bamboo") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bamboo") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "cactus") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "cactus") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "cactus") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "cactus") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.95) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.05) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.95) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.05) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.95) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.05) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } } pixel.age += 1 } + else if (pixel.geneticCode > 80 && pixel.geneticCode < 91) { + if (Math.random() > 0.75 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.75 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && elements[pixelMap[pixel.x][pixel.y-1].element].isFood) { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && elements[pixelMap[pixel.x][pixel.y+1].element].isFood) { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && elements[pixelMap[pixel.x+1][pixel.y].element].isFood) { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && elements[pixelMap[pixel.x-1][pixel.y].element].isFood) { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fly") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fly") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fly") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fly") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "ant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "ant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "ant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "ant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "egg") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "egg") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "egg") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bird") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bird") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bird") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bird") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fish") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fish") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fish") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fish") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "head") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "head") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "head") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "head") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "body") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "body") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "body") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "body") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < -2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "wood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "wood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "wood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "wood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bamboo") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bamboo") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bamboo") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bamboo") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "cactus") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "cactus") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "cactus") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "cactus") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "petal") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "petal") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "petal") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "petal") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "pistil") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "pistil") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "pistil") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "pistil") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.95) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.05) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.95) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.05) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.95) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.05) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 90 && pixel.geneticCode < 101) { + if (Math.random() > 0.75 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.75 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore > -3 && pixel.vore < 3) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && elements[pixelMap[pixel.x][pixel.y-1].element].isFood) { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && elements[pixelMap[pixel.x][pixel.y+1].element].isFood) { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && elements[pixelMap[pixel.x+1][pixel.y].element].isFood) { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && elements[pixelMap[pixel.x-1][pixel.y].element].isFood) { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fly") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fly") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fly") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fly") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "ant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "ant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "ant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "ant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "egg") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "egg") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "egg") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bird") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bird") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bird") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bird") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fish") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fish") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fish") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fish") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "head") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "head") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "head") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "head") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "body") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "body") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "body") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "body") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bone") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bone") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bone") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bone") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "blood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "blood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "blood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "blood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < -2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "wood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "wood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "wood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "wood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bamboo") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bamboo") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bamboo") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bamboo") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "cactus") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "cactus") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "cactus") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "cactus") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "petal") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "petal") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "petal") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "petal") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "pistil") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "pistil") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "pistil") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "pistil") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sapling") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sapling") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sapling") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sapling") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "pinecone") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "pinecone") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "pinecone") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "pinecone") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.995) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.005) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.995) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.005) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.995) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.005) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 100) { + if (Math.random() > 0.75 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.75 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore > -3 && pixel.vore < 3) { + changePixel(pixel,"human"); + } + else if (pixel.vore > 2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fly") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fly") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fly") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fly") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "ant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "ant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "ant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "ant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "egg") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "egg") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "egg") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bird") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bird") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bird") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bird") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fish") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fish") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fish") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fish") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "head") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "head") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "head") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "head") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "body") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "body") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "body") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "body") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bone") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bone") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bone") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bone") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "blood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "blood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "blood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "blood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < -2) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "wood") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "wood") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "wood") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "wood") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "bamboo") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "bamboo") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "bamboo") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "bamboo") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "cactus") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "cactus") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "cactus") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "cactus") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "petal") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "petal") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "petal") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "petal") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "pistil") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "pistil") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "pistil") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "pistil") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "sapling") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "sapling") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sapling") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sapling") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "pinecone") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "pinecone") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "pinecone") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "pinecone") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.995) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.005) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.995) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.005) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.995) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.005) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + pixel.oldvore = pixel.vore }, + reactions: { + "cancer": { elem1:"cancer", chance:0.005 }, + "radiation": { elem1:["ash","grass","meat","cooked_meat","dead_plant","dna","sugar"], chance:0.4, func:function(pixel) { + if (pixel1.vore > 2) { + changePixel(pixel,"cooked_meat"); + } + else if (pixel1.vore < -2) { + changePixel(pixel,"dead_plant"); + } + else if (pixel1.vore > -3 && pixel1.vore < 3) { + changePixel(pixel,"ash"); + } + }}, + }, + burn: 10, + burnTime: 250, + burnInto: ["cooked_meat","dead_plant","dna","sugar"], tempHigh: 150, - stateHigh: "cooked_meat", + stateHigh: ["cooked_meat","dead_plant","dna","sugar"], tempLow: -50, - stateLow: "frozen_meat", + stateLow: ["frozen_meat","frozen_plant","dna","sugar"], + breakInto: ["rotten_meat","dead_plant","dna","sugar"], category: "organism", state: "solid", density: 1050 - } +} + +elements.food_pill = { + behavior: behaviors.POWDER, + reactions: { + "organism": { elem1: null, chance:0.1, func:function(pixel1,pixel2) { + if (pixel2.vore > 2) { + pixel2.food += 2 + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore < -2) { + pixel2.food += 2 + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore > -3 && pixel2.vore < 3) { + pixel2.food += 5 + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + }}, + }, + category: "organism", + state: "solid", + color: ["#2b1107","#5c3322","#2b1107","#5c3322","#2b1107","#5c3322"], + tempHigh: 250, + stateHigh: ["sugar","cooked_meat","smoke","smoke","smoke","dead_plant","smoke","smoke","smoke","stench"], + burn: 10, + burnTime: 200, + burnInto: ["sugar","cooked_meat","smoke","smoke","smoke","dead_plant","smoke","smoke","smoke","stench"], + breakInto: ["sugar","cooked_meat","dead_plant","dust","dust","dust","dust","dust","dust","dust","dust","dust","dust","dust","dust","dust"], + breakIntoColor: ["#2b1107","#5c3322","#5c3322","#5c3322","#5c3322","#5c3322","#5c3322","#5c3322","#41770B","#774C35"], + isFood: true +} + +elements.pacifism_pill = { + behavior: behaviors.POWDER, + reactions: { + "organism": { elem1: null, chance:0.1, func:function(pixel1,pixel2) { + if (pixel2.vore > 0) { + pixel2.vore -= 1 + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore < 0) { + pixel2.vore -= 1 + pixel2.food += 1 + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore === 0) { + pixel2.vore -= 1 + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + }}, + }, + category: "organism", + state: "solid", + color: ["#58AA38","#58AA38","#3D6D4B","#316232","#6CA65A","#58AA38","#3D6D4B","#316232","#58AA38","#58AA38","#3D6D4B","#316232"], + tempHigh: 250, + stateHigh: ["molten_plastic","dead_plant","smoke","smoke","smoke","dead_plant","smoke","smoke","smoke","stench","stench"], + burn: 10, + burnTime: 200, + burnInto: ["molten_plastic","dead_plant","smoke","smoke","smoke","dead_plant","smoke","smoke","smoke","stench","stench"], + breakInto: ["dead_plant","dust","dust","dust","dust","dust","dust"], + breakIntoColor: ["#6CA65A","#58AA38","#6CA65A","#6CA65A"], + isFood: true +} + +elements.neutrality_pill = { + behavior: behaviors.POWDER, + reactions: { + "organism": { elem1: null, chance:0.1, func:function(pixel1,pixel2) { + if (pixel2.vore > 0) { + pixel2.vore -= 1 + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore < 0) { + pixel2.vore += 1 + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore === 0) { + pixel2.food += 1 + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + }}, + }, + category: "organism", + state: "solid", + color: ["#c5dede","#c5dede","#464196","#2E2B64","#a4b3b3","#c5dede","#464196","#2E2B64","#c5dede","#c5dede","#464196","#2E2B64"], + tempHigh: 250, + stateHigh: ["molten_plastic","sugar","smoke","smoke","smoke","sugar","smoke","smoke","smoke","stench","stench"], + burn: 10, + burnTime: 200, + burnInto: ["molten_plastic","sugar","smoke","smoke","smoke","sugar","smoke","smoke","smoke","stench","stench"], + breakInto: ["sugar","dust","dust","dust","dust","dust","dust"], + breakIntoColor: ["#a4b3b3","#c5dede","#a4b3b3","#a4b3b3"], + isFood: true +} + +elements.aggression_pill = { + behavior: behaviors.POWDER, + reactions: { + "organism": { elem1: null, chance:0.1, func:function(pixel1,pixel2) { + if (pixel2.vore > 0) { + pixel2.vore += 1 + pixel2.food += 1 + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore < 0) { + pixel2.vore += 1 + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.vore === 0) { + pixel2.vore += 1 + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.9) { + pixel2.geneticCode += 1 + }; + } + }}, + }, + category: "organism", + state: "solid", + color: ["#B13E3E","#B13E3E","#8E122A","#870C1C","#A83232","#B13E3E","#8E122A","#870C1C","#B13E3E","#B13E3E","#8E122A","#870C1C"], + tempHigh: 250, + stateHigh: ["molten_plastic","cooked_meat","smoke","smoke","smoke","cooked_meat","smoke","smoke","smoke","stench","stench"], + burn: 10, + burnTime: 200, + burnInto: ["molten_plastic","cooked_meat","smoke","smoke","smoke","cooked_meat","smoke","smoke","smoke","stench","stench"], + breakInto: ["cooked_meat","dust","dust","dust","dust","dust","dust"], + breakIntoColor: ["#A83232","#B13E3E","#A83232","#A83232"], + isFood: true +} + +elements.growth_pill = { + behavior: behaviors.POWDER, + reactions: { + "organism": { elem1: null, chance:0.1, func:function(pixel1,pixel2) { + if (pixel2.vore > 0) { + if (Math.random() > 0.9) { + pixel2.food += 1 + }; + if (Math.random() > 0.99) { + pixel2.vore += 1 + }; + pixel2.geneticCode += 1 + } + else if (pixel2.vore < 0) { + if (Math.random() > 0.8) { + pixel2.food += 1 + }; + if (Math.random() > 0.99) { + pixel2.vore -= 1 + }; + pixel2.geneticCode += 1 + } + else if (pixel2.vore === 0) { + if (Math.random() > 0.75) { + pixel2.food += 1 + }; + pixel2.geneticCode += 1 + } + }}, + }, + category: "organism", + state: "solid", + color: ["#ECF4B0","#ECF4B0","#D1D099","#CBCA8C","#D2D9A6","#ECF4B0","#D1D099","#CBCA8C","#ECF4B0","#ECF4B0","#D1D099","#CBCA8C"], + tempHigh: 250, + stateHigh: ["molten_plastic","sugar","smoke","smoke","smoke","herb","smoke","smoke","smoke","stench"], + burn: 10, + burnTime: 200, + burnInto: ["molten_plastic","sugar","smoke","smoke","smoke","herb","smoke","smoke","smoke","stench"], + breakInto: ["sugar","dust","dust","dust","dust","dust","dust","herb","dust","dust","dust","dust","dust","dust"], + breakIntoColor: ["#D2D9A6","#ECF4B0","#D2D9A6","#D2D9A6"], + isFood: true +} + +elements.antiaging_pill = { + name: "anti-aging_pill", + behavior: behaviors.POWDER, + reactions: { + "organism": { elem1: null, chance:0.1, func:function(pixel1,pixel2) { + if (pixel2.age > 99) { + pixel2.age -= 100; + if (Math.random() > 0.999) { + pixel2.food += 1 + }; + if (Math.random() > 0.995) { + pixel2.geneticCode += 1 + }; + } + else if (pixel2.age < 100) { + pixel2.age = 100; + if (Math.random() > 0.999) { + pixel2.food += 1 + }; + if (Math.random() > 0.995) { + pixel2.geneticCode += 1 + }; + } + }}, + }, + category: "organism", + state: "solid", + color: ["#B8C5C5","#B8C5C5","#9291A6","#8C8B99","#A8AFAF","#B8C5C5","#9291A6","#8C8B99","#B8C5C5","#B8C5C5","#9291A6","#8C8B99"], + tempHigh: 250, + stateHigh: ["molten_plastic","magnesium","smoke","smoke","smoke","sugar","smoke","smoke","smoke","stench","stench","stench"], + burn: 10, + burnTime: 200, + burnInto: ["molten_plastic","magnesium","smoke","smoke","smoke","sugar","smoke","smoke","smoke","stench","stench","stench"], + breakInto: ["magnesium","dust","dust","dust","dust","dust","dust","sugar","dust","dust","dust","dust","dust","dust"], + breakIntoColor: ["#A8AFAF","#B8C5C5","#A8AFAF","#A8AFAF"], + isFood: true +} /* by nekonico, do not steal!!!!!! >:3*/ diff --git a/mods/true_flashbang.js b/mods/true_flashbang.js new file mode 100644 index 00000000..d30dff31 --- /dev/null +++ b/mods/true_flashbang.js @@ -0,0 +1,61 @@ +// by nekonico + +elements.true_flashbang = { + color: "#65665c", + onSelect: function() { + logMessage("Caution: If you have epilepsy or any similar vision issues, do not place this element for your own safety."); + }, + behavior: [ + "XX|EX:20>flashbang_flash%1|XX", + "XX|XX|XX", + "M2|M1 AND EX:20>flashbang_flash%1|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "molten_steel", + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.flashbang_flash = { + color: "#ffffff", + properties: { + delay: 100 + }, + tick: function(pixel) { + settings.bg = pixel.color; + let hex = Math.round(255 * pixel.alpha).toString(16); + pixel.color = `#${hex}${hex}${hex}` // credits to therazzler in the R74n discord for this code :3 + var done = true; + if (pixel.delay) { + var delayR = pixel.delay % 1; + var delay = pixel.delay - delayR; + if (!(pixelTicks - pixel.start > (pixel.delay||1) && Math.random() < 1-delayR)) { + done = false; + } + } + if ((Math.random() < 0.75 && done) || pixel.alpha < 0.05) { + deletePixel(pixel.x, pixel.y) + settings.bg = "#000000"; + } + if (pixel.delay) { + pixel.alpha = Math.max(0,1-(pixelTicks - pixel.start)/pixel.delay) + } + doHeat(pixel); + + }, + category: "energy", + temp: 40, + tempLow: -270, + stateLow: ["liquid_light",null], + state: "gas", + category: "energy", + density: 0.00001, + ignoreAir: true, + insulate: true, + hidden: true, + noMix: true, + excludeRandom: true +} \ No newline at end of file