В бете 8 была поддержка звука, надо вернуть.
Запилить загрузку старых сохранений (см. cavecraft forever)
+ Софтклавиши для переключения предметов на ремне перепутаны
-Печи не сохраняются и не загружаются (не забыть инкрементировать версию формата карт)
++ Печи и мобы не сохраняются и не загружаются (не забыть инкрементировать версию формата карт)
При создании мира с сундуком, оный может висеть в воздухе
+ Зависание при попытке листать пустой список сохранений
Иногда вместо травы генерируется грязь.
Уголь встречается на поверхности реже чем железо
Починит установку блока при прыжке
Перепроверить рост деревьев
-Печь не светится когда работает
++ Печь не светится когда работает
Потеря контрастности при малом количестве источников света
Слишком много золота
Курсор на ремне должен быть чётче
Один уголь выплавляет 7 предметов, хотя должно быть 8
По лестнице можно лезть даже если она стоит выше игрока
-Золото не переплавляется
+ Игрок возраждается в точке своей смерти, вместо точки спавна
+ От больших грибов больно уж чорные тени. У тыкв тоже надо поправить.
+После удаления всех сохранений кнопки остаются на вид активными
;Все описанные здесь блоки могут отображаться на карте.\r
\r
;Устанавливаем количество блоков\r
-RESET_BLOCKS 124\r
+RESET_BLOCKS 125\r
\r
;Описание команды установки блока:\r
;SET_BLOCK [id] [tex] [hp] [coll] [tool] [lvl] [flags] [tr] [li]\r
SET_BLOCK 123 139 1 0 0 0 b101 0 0\r
;Стебель тыквы\r
SET_BLOCK 124 139 1 0 0 0 b101 0 0\r
-\r
+;Горящая печь\r
+SET_BLOCK 125 134 40 0 3 0 b000 0 15\r
#!/bin/sh
-F="c:;fs/c;e:;fs/e"
+F="c:;fs/c"
mkdir -p fs/c fs/e
# exec java -Dfileconn.dir.memorycard="file:///c:/" -jar pstros.jar bin.jar -w176 -h208 -s2 -fc="$F"
video;\r
\r
const\r
- version='BETA 9';\r
- version_map=8;\r
+ version = 'BETA 9';\r
+ version_map = 9;\r
\r
var\r
keymode,updx,updy:integer;\r
\r
chest.resetData;\r
\r
- {for ix:=0 to 15 do\r
- begin\r
- b_furnace[ix]:=false;\r
- for iy:=0 to 4 do\r
- begin\r
- furnace[ix,iy].item_i:=0;\r
- furnace[ix,iy].sum_i:=0;\r
- furnace_gg[ix].f_gor:=15;\r
- furnace_gg[ix].fire_time:=0;\r
- furnace_gg[ix].f_got:=0;\r
- furnace_gg[ix].got_time:=0;\r
- end;\r
- end;}\r
+ furnace.resetData;\r
\r
drop.resetData;\r
\r
chest.saveData;\r
drw_load_line('Furnaces',60);\r
//Furnaces\r
- /* for ix:=0 to 15 do\r
- begin\r
- writebool(b_furnace[ix]);\r
- writeint(furnace_gg[ix].f_gor);\r
- writeint(furnace_gg[ix].f_got);\r
- for iy:=0 to 4 do\r
- begin\r
- write_byte(furnace[ix,iy].item_i);\r
- writeint(furnace[ix,iy].sum_i);\r
- end;\r
- end;*/\r
+ furnace.saveData;\r
drw_load_line('Mobs',70);\r
//Mobs\r
mob.saveData;\r
drw_load_line('Chests',55);\r
//Chests\r
chest.loadData;\r
- drw_load_line('Furnaces',60);\r
+ drw_load_line('Furnaces',60);\r
//Furnaces\r
- /* for ix:=0 to 15 do\r
- begin\r
- b_furnace[ix]:=readbool;\r
- furnace_gg[ix].f_gor:=readint;\r
- furnace_gg[ix].f_got:=readint;\r
- for iy:=0 to 4 do\r
- begin\r
- furnace[ix,iy].item_i:=read_byte;\r
- furnace[ix,iy].sum_i:=readint;\r
- end;\r
- end;*/\r
- drw_load_line('Mobs',70);\r
+ furnace.loadData;\r
//Mobs\r
mob.loadData;\r
- drw_load_line('Drop',80);\r
+ drw_load_line('Drop',80);\r
//Drop\r
drop.loadData;\r
- drw_load_line('Particles',85);\r
+ drw_load_line('Particles',85);\r
//Particles\r
max_particles:=readint;\r
reset_particles(max_particles+1);\r
function furnaceBurn(i:integer):boolean;\r
function itemBurn(i:integer):boolean;\r
\r
+ procedure SaveData;\r
+ procedure LoadData;\r
+ procedure ResetData;\r
+\r
implementation\r
- uses maps, drop, items_store, items;\r
+ uses maps, drop, items_store, items, jsr75i, func;\r
+\r
var\r
furnace_b: array [0..MAX_FURNACE] of boolean;\r
furnace_item, furnace_sum: array [0..MAX_FURNACE, 0..MAX_FURNACE_CELLS] of integer;\r
UpdateTime;\r
end;\r
\r
+ procedure SaveData;\r
+ var\r
+ i, j : Integer;\r
+ begin\r
+ for i := 0 to MAX_FURNACE do\r
+ begin\r
+ writebool(furnace_b[i]);\r
+ for j := 0 to MAX_FURNACE_CELLS do\r
+ begin\r
+ write_byte(furnace_item[i, j]);\r
+ writeint(furnace_sum[i, j]);\r
+ end;\r
+ writeint(furnace_fstart[i]);\r
+ writeint(furnace_ftime[i]);\r
+ writeint(furnace_prstart[i]);\r
+ end;\r
+ end;\r
+\r
+ procedure LoadData;\r
+ var\r
+ i, j : Integer;\r
+ begin\r
+ for i := 0 to MAX_FURNACE do\r
+ begin\r
+ furnace_b[i] := readbool;\r
+ for j := 0 to MAX_FURNACE_CELLS do\r
+ begin\r
+ furnace_item[i, j] := read_byte;\r
+ furnace_sum[i, j] := readint;\r
+ end;\r
+ furnace_fstart[i] := readint;\r
+ furnace_ftime[i] := readint;\r
+ furnace_prstart[i] := readint;\r
+ end; \r
+ end;\r
+\r
+ procedure ResetData;\r
+ var\r
+ i, j : Integer;\r
+ begin\r
+ for i := 0 to MAX_FURNACE do\r
+ begin\r
+ furnace_b[i] := false;\r
+ for j := 0 to MAX_FURNACE_CELLS do\r
+ begin\r
+ furnace_item[i, j] := 0;\r
+ furnace_sum[i, j] := 0;\r
+ end;\r
+ furnace_fstart[i] := 0;\r
+ furnace_ftime[i] := 0;\r
+ furnace_prstart[i] := 0;\r
+ end; \r
+ end;\r
+\r
end.\r
setmap(0,xx,yy);\r
destsign(getmapinfo(xx,yy));\r
end; else\r
- if id=106 then\r
+ if (id = 106) or (id = 125) then\r
begin\r
setmap(0,xx,yy);\r
DestroyFurnace(xx, yy);\r
begin\r
if createsign(xx,yy)=-1 then set_block_code:=true;\r
end; else\r
- if it=106 then\r
+ if (it = 106) or (it = 125) then\r
begin\r
if CreateFurnace(xx, yy)=FURNACE_ERROR then\r
set_block_code:=true;\r
begin\r
destsign(getmapinfo(xx,yy));\r
end; else\r
- if id=106 then\r
+ if (id = 106) or (id = 125) then\r
begin\r
DestroyFurnace(xx, yy);\r
end; else\r
destsign(getmapinfo(xx,yy));\r
drop.create(104,1,xx*16+4,yy*16+4);\r
end; else\r
- if id=106 then\r
+ if (id = 106) or (id = 125) then\r
begin\r
setmap(0,xx,yy);\r
DestroyFurnace(xx, yy);\r
if block=104 then\r
keymode:=5;*/\r
else\r
- if block=106 then\r
+ if (block = 106) or (block = 125) then\r
OpenFurnaceWindow(info);\r
else\r
if block=107 then\r
create_particle(4, x*16+4, y*16+4);\r
end;\r
else\r
+ if (block = 106) or (block = 125) then\r
+ begin\r
+ if furnaceBurn(getMapInfo(x, y)) then\r
+ setmap(125, x, y);\r
+ else\r
+ setmap(106, x, y);\r
+ end;\r
+ else\r
if block=110 then\r
begin\r
if (getmap(x-1, y)=0) or (getmap(x+1, y)=0) or (getmap(x, y-1)=0) or (getmap(x, y+1)=0) then\r
procedure freeSkin;//Выгрузка текстур\r
\r
implementation\r
- uses phy, player, canvas, func;\r
+ uses phy, player, canvas, jsr75i, func;\r
const\r
MAX_MOBS=31;\r
MAX_ANIMREG=3;\r
end;\r
end;\r
\r
- procedure saveData;//Сохранение всех данных\r
- begin\r
-\r
+ procedure saveData;\r
+ var\r
+ i, j : integer;\r
+ begin\r
+ for i := 0 to MAX_MOBS do\r
+ begin\r
+ write_byte(mob_type[i]);\r
+ writeint(mob_x[i]);\r
+ writeint(mob_y[i]);\r
+ writeint(mob_vx[i]);\r
+ writeint(mob_vy[i]);\r
+ write_byte(mob_posi[i]);\r
+ writeint(mob_hp[i]);\r
+ writebool(mob_jmp[i]);\r
+ for j := 0 to MAX_ANIMREG do\r
+ write_byte(mob_anim[i, j]);\r
+ end;\r
end;\r
\r
procedure loadData;//Загрузка всех данных\r
- begin\r
-\r
+ var\r
+ i, j : integer;\r
+ begin\r
+ for i := 0 to MAX_MOBS do\r
+ begin\r
+ mob_type[i] := read_byte;\r
+ mob_x[i] := readint;\r
+ mob_y[i] := readint;\r
+ mob_vx[i] := readint;\r
+ mob_vy[i] := readint;\r
+ mob_posi[i] := read_byte;\r
+ mob_hp[i] := readint;\r
+ mob_jmp[i] := readbool;\r
+ for j := 0 to MAX_ANIMREG do\r
+ mob_anim[i, j] := read_byte;\r
+ end;\r
end;\r
\r
procedure resetData;//Сброс всех данных\r
- var\r
- i, j:integer;\r
- begin\r
- for i:=0 to MAX_MOBS do\r
- begin\r
- mob_type[i]:=M_NONE;\r
- mob_x[i]:=0;\r
- mob_y[i]:=0;\r
- mob_vx[i]:=0;\r
- mob_vy[i]:=0;\r
- mob_posi[i]:=0;\r
- mob_hp[i]:=0;\r
- mob_jmp[i]:=false;\r
- for j:=0 to MAX_ANIMREG do\r
- mob_anim[i, j]:=0;\r
- end;\r
+ var\r
+ i, j:integer;\r
+ begin\r
+ for i := 0 to MAX_MOBS do\r
+ begin\r
+ mob_type[i]:=M_NONE;\r
+ mob_x[i]:=0;\r
+ mob_y[i]:=0;\r
+ mob_vx[i]:=0;\r
+ mob_vy[i]:=0;\r
+ mob_posi[i]:=0;\r
+ mob_hp[i]:=0;\r
+ mob_jmp[i]:=false;\r
+ for j := 0 to MAX_ANIMREG do\r
+ mob_anim[i, j]:=0;\r
+ end;\r
end;\r
\r
initialization\r