84db3342d06b6dc5d9bee8e6a00abe704949010b
3 interface
6 procedure destroy_block_0(id,xx,yy:integer);//Выполнение кода при разрушении блока не "тем" инструментом
7 procedure destroy_block_1(id,xx,yy:integer);//Выполнение кода при разрушении блока "нужным" инструментом
14 implementation
16 uses invui, maps, drop, console, furnace, png3, func, jpeg, mobs, vars, bmp, chest, inv, player, items_store, particles, worldgen, phy, sign, Blocks;
19 var
21 begin
23 begin
26 begin
28 begin
39 begin
44 else
46 begin
51 else
53 begin
58 else
60 begin
65 else
67 begin
75 begin
76 if (getmap(ix+1,iy)=10) and (getmap(ix-1,iy-1)=10) and (getmap(ix+2,iy-1)=10) and (getmap(ix-1,iy-2)=10) and (getmap(ix+2,iy-2)=10) and (getmap(ix-1,iy-3)=10) and (getmap(ix+2,iy-3)=10) and (getmap(ix,iy-4)=10) and (getmap(ix+1,iy-4)=10) then
82 var
86 begin
89 date:=''+getWeekDay(time)+'-'+getMonth(time)+'-'+getDay(time)+'_'+getHour(time)+'.'+getMinute(time)+'.'+getSecond(time);
95 var
99 begin
102 date:=''+getWeekDay(time)+'-'+getMonth(time)+'-'+getDay(time)+'_'+getHour(time)+'.'+getMinute(time)+'.'+getSecond(time);
108 var
112 begin
115 date:=''+getWeekDay(time)+'-'+getMonth(time)+'-'+getDay(time)+'_'+getHour(time)+'.'+getMinute(time)+'.'+getSecond(time);
121 var
125 begin
126 {setmap(0,xx,yy);
127 setmapinfo(0,xx,yy);
128 for iz:=0 to 359 do
129 rays[iz]:=mm;
131 for ir:=1 to rr do
132 for iz:=0 to 359 do
133 if rays[iz]>0 then
134 begin
135 if (iz>=0) and (iz<=180) and (ir=1) then erru:=-1; else erru:=0;
136 if (iz>=180) and (iz<=360) and (ir=1) then erru:=1; else erru:=0;
137 ix:=xx+trunc(cos(iz)*ir)+erru;
138 iy:=yy+trunc(sin(iz)*ir)+erru;
139 rays[iz]:=rays[iz]-getBlockHp(getmap(ix,iy));
140 if rays[iz]<0 then rays[iz]:=0;
141 if coll_boom(ix,iy)=true then minhp:=minhp+(rays[iz]*2);
142 for imob:=0 to 31 do
143 if mob[imob].m_hp>0 then
144 begin
145 if mob_coll_boom(imob,ix,iy)=true then begin mobs_minhp[imob]:=mobs_minhp[imob]+(rays[iz]*2); mob[imob].m_hp:=0; end;
146 end;
147 if getmap(ix,iy)=27 then boom(4,100,ix,iy);
148 if getBlockHp(getmap(ix,iy))<=mm then
149 begin
150 if 30<=random(100) then destroy_block_1(getmap(ix,iy),ix,iy);
151 setmap(0,ix,iy);
152 Particles.Create(Particles.explosion, (ix * 16) + 8 - 16, (iy * 16) + 8 - 16);
153 end;
154 end;
155 minhp:=minhp/360;
156 hp:=hp-minhp;
157 for imob:=0 to 31 do
158 begin
159 mobs_minhp[imob]:=mobs_minhp[imob]/360;
160 mob[imob].m_hp:=mob[imob].m_hp-mobs_minhp[imob];
161 end;}
165 begin
167 begin
172 begin
177 begin
181 begin
186 begin
191 begin
196 begin
201 begin
206 begin
211 begin
216 begin
221 begin
226 begin
231 begin
236 begin
241 begin
246 begin
250 begin
257 begin
259 begin
263 begin
267 begin
271 begin
276 begin
284 begin
286 begin
290 begin
295 begin
299 begin
303 begin
307 begin
311 begin
315 begin
319 begin
323 begin
327 begin
331 begin
335 begin
339 begin
343 begin
347 begin
352 begin
356 begin
361 begin
363 if getmapinfo(xx,yy)=3 then begin drop.create(217,random(4),xx*16+4,yy*16+4); drop.create(218,1,xx*16+4,yy*16+4); end;
368 begin
371 //setmap(0,xx,yy);
372 //setmapinfo(0,xx,yy);
376 begin
378 begin
383 begin
387 begin
391 begin
396 begin
400 begin
404 begin
408 begin
412 begin
417 begin
421 begin
425 begin
429 begin
433 begin
437 begin
441 begin
445 begin
449 begin
453 begin
458 begin
463 begin
467 begin
471 begin
475 begin
480 begin
485 begin
490 begin
495 begin
500 begin
505 begin
509 begin
513 begin
517 begin
521 begin
525 begin
529 begin
533 begin
537 begin
541 begin
545 begin
549 begin
553 begin
557 begin
561 begin
565 begin
569 begin
573 begin
578 begin
583 begin
588 begin
592 begin
596 begin
600 begin
604 begin
608 begin
613 begin
615 if getmapinfo(xx,yy)=3 then begin drop.create(217,random(2),xx*16+4,yy*16+4); drop.create(218,1,xx*16+4,yy*16+4); end;
620 begin
623 begin
630 begin
632 begin
638 //Возвращает true если блок небыл использован.
640 var
642 begin
649 begin
653 else
656 else
658 begin
662 else
664 begin
668 else
670 begin
674 else
676 begin
683 else
686 else
689 else
692 else
695 else
698 else
700 begin
702 begin
709 else
713 else
716 /*
719 if (getmap(curx,cury)=1) or (getmap(curx,cury)=2) or (getmap(curx,cury)=48) or (getmap(curx,cury)=74) then
720 begin
722 begin
728 else
730 begin
732 sleep;
733 else
739 var
741 begin
751 begin
753 begin
757 else
759 begin
764 else
767 else
769 begin
771 begin
776 else
778 begin
780 begin
786 else
788 begin
790 begin
796 else
798 begin
800 begin
805 else
807 begin
809 begin
814 else
816 begin
818 begin
825 else
827 begin
828 {if random(10)=random(10) then
829 create_mob(4, x*16, y*16);}
832 else
834 begin
836 begin
842 else
844 begin
846 begin
852 else
854 begin
856 begin
861 else
863 begin
865 begin
866 //create_mob(2, x*16, y*16);
870 else
872 begin
874 begin
875 //create_mob(3, x*16, y*16);
879 else
881 begin
883 begin
890 else
892 begin
894 begin
899 else
901 begin
903 begin
910 else
912 begin
914 begin
921 else
923 begin
925 begin
932 else
934 create_screenshot_png;
935 else
937 create_screenshot_jpeg;
938 else
940 create_screenshot_bmp;
941 else
943 begin
945 begin
953 else
955 begin
957 begin
964 else
966 begin
968 begin
975 else
977 begin
979 begin
986 else
988 begin
990 begin
995 else
997 begin
999 begin
1006 else
1008 begin
1010 begin
1017 else
1019 begin
1021 begin
1022 //create_mob(4, x*16, y*16);
1026 else
1028 begin
1030 begin
1031 //create_mob(5, x*16, y*16);
1035 else
1037 begin
1039 begin
1040 //create_mob(6, x*16, y*16);
1044 else
1046 begin
1048 begin
1049 //create_mob(7, x*16, y*16);
1053 else
1055 begin
1057 begin
1058 //create_mob(8, x*16, y*16);
1062 else
1064 begin
1066 begin
1067 //create_mob(10, x*16, y*16);
1071 else
1073 begin
1075 begin
1082 else
1084 begin
1086 begin
1093 else
1095 begin
1097 begin
1104 else
1106 begin
1108 begin
1110 begin
1114 else
1116 begin
1121 else
1123 begin
1128 else
1130 begin
1132 begin
1139 else
1144 var
1146 begin
1152 //Если внизу условный блок, то заменяем.
1155 else
1156 //Если нижний блок можно уничтожить, то ставим туда копию
1158 begin
1162 //Если ничего не можем, то пытаемся течь по сторонам
1163 else
1164 begin
1167 else
1169 begin
1176 else
1178 begin
1186 const
1194 var
1196 begin
1204 begin
1205 //Трава разрастается при условии что освещение выше чем 3
1208 else
1210 begin
1220 else
1222 begin
1224 begin
1229 else
1231 begin
1233 begin
1238 else
1240 begin
1244 else
1246 begin
1249 else
1251 begin
1254 else
1256 begin
1257 // В зимнем биоме снег не растапливается при сильном свете
1261 else
1263 begin
1266 else
1268 begin
1278 else
1280 begin
1284 else
1286 begin
1290 else
1292 begin
1296 else
1298 begin
1302 else
1304 begin
1309 begin
1314 begin
1315 {if CollTwoObj(plx, ply, player.getW, player.getH, x*16-SPAWN_RAD, y*16-SPAWN_RAD, x*16+SPAWN_RAD, y*16+SPAWN_RAD) then
1316 if random(SPAWN_RND)=random(SPAWN_RND) then
1317 create_mob(getMapInfo(x, y), x*16,(y-2)*16);}
1319 else
1321 begin
1325 else
1327 begin
1331 else
1333 begin
1337 else
1339 begin
1342 else
1346 else
1348 begin
1352 else
1354 begin
1357 else
1360 else
1362 begin
1366 else
1368 begin
1372 begin
1378 begin
1382 begin
1387 else
1389 begin
1399 begin
1415 else
1417 begin
1433 else
1435 begin