tutaj na anty paralize
while not terminated do
begin
UpdateWorld;
if not self.hasting then
if self.mana >= 100 then
self.say('utani gran hur');
Sleep(100);
end;
tam gdzie utani gran hur mozna zmienic na utani hur ;)
a stawanie na ukos od moba masz tu
function GetCreatureByID(ID: integer): TCreature;
var
x: integer;
begin
Result := nil;
for x := 0 to Creatures.Count - 1 do
begin
if x >= Creatures.Count then Break;
if Creatures.Creature[x].ID = ID then
begin
Result := Creatures.Creature[x]; /////Made by medaking
Exit;
end;
end;
end;
function GetTileFromXYZ(X, Y, Z: integer): TTile;
begin
Result := nil;
if abs((Self.X - 7) - X) > 14 then Exit;
if abs((Self.Y - 5) - Y) > 11 then Exit;
if Self.Z <> Z then Exit;
Result := Screen.Tile[abs((Self.X - 7) - X), abs((Self.Y - 5) - Y)];
end;
function TileIsWalkable(X, Y, Z: integer): boolean;
const Ramps = [1950, 1952, 1954, 1956, 385, 1947, 434, 414, 604]
var Tile: TTile;
begin
Result := True;
Tile := GetTileFromXYZ(X, Y, Z);
If (Tile <> nil) and (Tile.Count <> 0) then
for i := 0 to Tile.Count - 1 do
begin
if Tile.Item[i].Properties.Hole then Result := False;
else if Tile.Item[i].Properties.Stairs then Result := False;
else if not Tile.Item[i].Properties.Walkable then Result := False;
else for j := Low(Ramps) to High(Ramps) do if Tile.Item[i].ID = Ramps[j] then Result := False;
end;
end;
while not Terminated do
begin
UpdateWorld;
if Self.Attacking then
begin
Monster := GetCreatureByID(Self.Attacking);
if Monster <> nil then
Case Monster.Direction of
0:begin
if (Self.X = Monster.X) and (Self.Y = Monster.Y-1) and (Self.Z = Monster.Z) then
begin
if TileIsWalkable(Monster.X-1, Monster.Y-1, Monster.Z) then Self.MoveTo(Monster.X-1, Monster.Y-1, Monster.Z);
else
if TileIsWalkable(Monster.X+1, Monster.Y-1, Monster.Z) then Self.MoveTo(Monster.X+1, Monster.Y-1, Monster.Z);
end;
end;
1:begin
if (Self.X = Monster.X+1) and (Self.Y = Monster.Y) and (Self.Z = Monster.Z) then
begin
if TileIsWalkable(Monster.X+1, Monster.Y-1, Monster.Z) then Self.MoveTo(Monster.X+1, Monster.Y-1, Monster.Z);
else
if TileIsWalkable(Monster.X+1, Monster.Y+1, Monster.Z) then Self.MoveTo(Monster.X+1, Monster.Y+1, Monster.Z);
end;
end;
2:begin
if (Self.X = Monster.X) and (Self.Y = Monster.Y+1) and (Self.Z = Monster.Z) then
begin
if TileIsWalkable(Monster.X-1, Monster.Y+1, Monster.Z) then Self.MoveTo(Monster.X-1, Monster.Y+1, Monster.Z);
else
if TileIsWalkable(Monster.X+1, Monster.Y+1, Monster.Z) then Self.MoveTo(Monster.X+1, Monster.Y+1, Monster.Z);
end;
end;
3:begin
if (Self.X = Monster.X-1) and (Self.Y = Monster.Y) and (Self.Z = Monster.Z) then
begin
if TileIsWalkable(Monster.X-1, Monster.Y-1, Monster.Z) then Self.MoveTo(Monster.X-1, Monster.Y-1, Monster.Z);
else
if TileIsWalkable(Monster.X-1, Monster.Y+1, Monster.Z) then Self.MoveTo(Monster.X-1, Monster.Y+1, Monster.Z);
end;
end;
end;
end;
Sleep(250);
end;
Zakładki