DEADSOFTWARE

New implementation of module Items, *.cfg files now deprecated
[cavecraft.git] / src / items_logic.mpsrc
index efcee9fb5ecb4034a8e3c47b848166b25fd43625..84db3342d06b6dc5d9bee8e6a00abe704949010b 100644 (file)
@@ -12,7 +12,8 @@ interface
  procedure updateBlock(x, y:integer);\r
 \r
 implementation\r
- uses invui, maps, drop, console, furnace, png3, func, jpeg, mobs, vars, bmp, items, chest, inv, player, items_store, particles, worldgen, phy, sign;\r
+\r
+  uses invui, maps, drop, console, furnace, png3, func, jpeg, mobs, vars, bmp, chest, inv, player, items_store, particles, worldgen, phy, sign, Blocks;\r
 \r
 procedure usebonemeal(block:integer);\r
  var\r
@@ -148,7 +149,7 @@ procedure boom(rr,mm,xx,yy:integer);
      begin\r
       if 30<=random(100) then destroy_block_1(getmap(ix,iy),ix,iy);\r
       setmap(0,ix,iy);\r
-      create_particle(7,(ix*16)+8-16,(iy*16)+8-16);\r
+      Particles.Create(Particles.explosion, (ix * 16) + 8 - 16, (iy * 16) + 8 - 16);\r
      end;\r
    end;\r
   minhp:=minhp/360;\r
@@ -1153,7 +1154,7 @@ procedure fluidLogic(x, y, ifbx, thenbx, ifby, thenby:integer);
    setMap(thenby, x, y+1);\r
   else\r
   //Если нижний блок можно уничтожить, то ставим туда копию\r
-  if getBlockSet(blockYp1) then\r
+  if Blocks.IsOverlapped(blockYp1) then\r
    begin\r
     destroy_block_0(blockYp1, x, y+1);\r
     setMap(block, x, y+1);\r
@@ -1164,7 +1165,7 @@ procedure fluidLogic(x, y, ifbx, thenbx, ifby, thenby:integer);
     if blockXm1=ifbx then\r
      setMap(thenbx, x-1, y);\r
     else\r
-    if getBlockSet(blockXm1) then\r
+    if Blocks.IsOverlapped(blockXm1) then\r
      begin\r
       destroy_block_1(blockXm1, x-1, y);\r
       setMap(block, x-1, y);\r
@@ -1173,7 +1174,7 @@ procedure fluidLogic(x, y, ifbx, thenbx, ifby, thenby:integer);
     if blockXp1=ifbx then\r
      setMap(thenbx, x+1, y);\r
     else\r
-    if getBlockSet(blockXp1) then\r
+    if Blocks.IsOverlapped(blockXp1) then\r
      begin\r
       destroy_block_1(blockXp1, x+1, y);\r
       setMap(block, x+1, y);\r
@@ -1184,7 +1185,7 @@ procedure fluidLogic(x, y, ifbx, thenbx, ifby, thenby:integer);
 procedure updateBlock(x, y:integer);\r
  const\r
   GRASS_RND=128;\r
-  TORCH_RND=128;\r
+  TORCH_RND=10;\r
   SPAWN_RND=128;\r
   SPAWN_RAD=128;\r
   GENWOOD_RND=1024;\r
@@ -1202,7 +1203,7 @@ procedure updateBlock(x, y:integer);
   if block=2 then\r
    begin\r
     //Трава разрастается при условии что освещение выше чем 3\r
-    if (getBlockSet(getMap(x, y-1))=false) or (light=0) then\r
+    if (light = 0) or (Blocks.IsOverlapped(getMap(x, y - 1)) = false) then\r
      setMap(1, x, y);\r
     else\r
     if light>3 then\r
@@ -1219,7 +1220,7 @@ procedure updateBlock(x, y:integer);
   else\r
   if block=7 then\r
    begin\r
-    if getBlockSet(getMap(x, y+1)) then\r
+    if Blocks.IsOverlapped(getMap(x, y+1)) then\r
      begin\r
       setMap(0, x, y);\r
       setMap(7, x, y+1);\r
@@ -1228,7 +1229,7 @@ procedure updateBlock(x, y:integer);
   else\r
   if block=8 then\r
    begin\r
-    if getBlockSet(getMap(x, y+1)) then\r
+    if Blocks.IsOverlapped(getMap(x, y+1)) then\r
      begin\r
       setMap(0, x, y);\r
       setMap(8, x, y+1);\r
@@ -1238,7 +1239,7 @@ procedure updateBlock(x, y:integer);
   if block=26 then\r
    begin\r
     if random(TORCH_RND)=random(TORCH_RND) then\r
-     create_particle(2, x*16+4, y*16+4);\r
+     Particles.Create(Particles.graySmoke, x * 16 + 4, y * 16 + 4);\r
    end;\r
   else\r
   if block=50 then\r
@@ -1260,7 +1261,7 @@ procedure updateBlock(x, y:integer);
   else\r
   if block=74 then\r
    begin\r
-    if getBlockSet(getMap(x, y-1))=false then\r
+    if Blocks.IsOverlapped(getMap(x, y-1))=false then\r
      setMap(1, x, y);\r
     else\r
     if light>3 then\r
@@ -1346,7 +1347,7 @@ procedure updateBlock(x, y:integer);
   if block=105 then\r
    begin\r
     if random(TORCH_RND)=random(TORCH_RND) then\r
-     create_particle(4, x*16+4, y*16+4);\r
+     Particles.Create(Particles.redSmoke, x * 16 + 4, y * 16 + 4);\r
    end;\r
   else\r
   if (block = 106) or (block = 125) then\r