diff --git a/src/mobs.pas b/src/mobs.pas
index 95815db35f60c894ba81fd5da88288eb5f65968a..4899980faad7dd40f79c6aa86bac25798a8f3481 100644 (file)
--- a/src/mobs.pas
+++ b/src/mobs.pas
setPosi(1, i);\r
end;\r
\r
setPosi(1, i);\r
end;\r
\r
- function testSolid(i, vector:integer):boolean;\r
+ function testSolid(i, vector : integer) : boolean;\r
var\r
var\r
- x, y:integer;\r
+ x, y : integer;\r
begin\r
begin\r
- y:=((getY(i)+getH(i)))/16-1;\r
+ y := (getY(i) + getH(i)) / 16 - 1;\r
\r
\r
- if vector<0 then\r
- begin\r
- x:=(getX(i)/16)-1;\r
- end;\r
- else\r
- if vector>0 then\r
- begin\r
- x:=((getX(i)+getW(i))/16){+1};\r
- end;\r
+ if vector > 0 then\r
+ x := (getX(i) + getW(i) / 2 + 16 / 2) / 16;\r
else\r
else\r
- x:=((getX(i)+getW(i)/2)/16);\r
+ x := (getX(i) + getW(i) / 2 - 16 / 2) / 16;\r
\r
\r
- testSolid:=phy.isSolid(x, y, getVX(i), getVY(i));\r
+ testSolid := phy.isSolid(x, y, getVX(i), getVY(i));\r
+ end;\r
+\r
+ function collideWithPlayer(i : integer) : boolean;\r
+ begin\r
+ collideWithPlayer := CollTwoObj(getX(i), getY(i), getW(i), getH(i), player.getX, player.getY, player.getW, player.getH);\r
+ end;\r
+\r
+ function canBite(i : integer) : boolean;\r
+ begin\r
+ canBite := collideWithPlayer(i);\r
end;\r
\r
end;\r
\r
- procedure updateZloyAiAnim(i:integer);\r
+ procedure updateZloyAiAnim(i : integer);\r
const\r
DEL=1;\r
var\r
const\r
DEL=1;\r
var\r
mob_anim[i, 3]:=a_f;\r
end;\r
\r
mob_anim[i, 3]:=a_f;\r
end;\r
\r
- procedure updateZloyAi(i:integer);\r
+ procedure updateZloyAi(i : integer);\r
+ var\r
+ vector : integer;\r
begin\r
begin\r
- if player.getX<getX(i) then\r
+ if player.getX < getX(i) then\r
begin\r
goLeft(i);\r
begin\r
goLeft(i);\r
- updateZloyAiAnim(i);\r
- if testSolid(i, -1) then\r
- goUp(i);\r
- end;\r
- else\r
- if player.getX>getX(i) then\r
- begin\r
- goRight(i);\r
- updateZloyAiAnim(i);\r
- if testSolid(i, 1) then\r
- goUp(i);\r
+ vector := -1;\r
end;\r
end;\r
+ else if player.getX > getX(i) then\r
+ begin\r
+ goRight(i);\r
+ vector := 1;\r
+ end;\r
+\r
+ if vector <> 0 then\r
+ begin\r
+ updateZloyAiAnim(i);\r
+ if testSolid(i, vector) then\r
+ goUp(i);\r
+ end;\r
+\r
+ if collideWithPlayer(i) then\r
+ player.biteIt(1, vector);\r
end;\r
\r
end;\r
\r
- procedure update;//Обновление логики\r
+ procedure update;\r
var\r
i, _type, ai:integer;\r
begin\r
var\r
i, _type, ai:integer;\r
begin\r