]> git.lizzy.rs Git - dragonblocks.git/blob - game/dirt/api.js
0d21f0cf264e8e5944d212d0a7ee62b07a5ddfa3
[dragonblocks.git] / game / dirt / api.js
1 dragonblocks.registerGroup({
2         name: "dirt",
3 });
4 dirt.registerDirt = function(obj){
5         if(! obj || ! obj.name)
6                 return;
7         let desc = obj.desc || "Dirt with " + dblib.humanFormat(obj.name);
8         let name = "dirt:" + obj.name;
9         let texture = "dirt_" + obj.name + ".png";
10         dragonblocks.registerNode({
11                 name: name,
12                 stable: true,
13                 texture: texture,
14                 groups: ["crumbly", "dirt"],
15                 hardness: 3,
16                 desc: desc,
17                 drops: "dirt:dirt",
18                 onset: (x, y) => {
19                         dragonblocks.getNode(x, y).meta.dirtInterval = setInterval(_ => {
20                                 for(let ix = x - 1; ix <= x + 1; ix++)
21                                         for(let iy = y - 1; iy <= y + 1; iy++)
22                                                 if(dblib.random(0, 60) == 0 && dragonblocks.getNode(ix, iy) && dragonblocks.getNode(ix, iy).name == "dirt:dirt" && dragonblocks.getNode(ix, iy - 1) && ! dragonblocks.getNode(ix, iy - 1).stable)
23                                                         dragonblocks.setNode(ix, iy, name);
24                                 if(dblib.random(0, 45) == 0 && dragonblocks.getNode(x, y - 1) && dragonblocks.getNode(x, y - 1).stable)
25                                         dragonblocks.setNode(x, y, "dirt:dirt");
26                         }, 1000);
27                 },
28                 onremove: (x, y) => {
29                         clearInterval(dragonblocks.getNode(x, y).meta.dirtInterval);
30                 }
31         });
32 }