Было бы хорошо иметь весь код, а то я смутно понимаю предназначение кода.
Но в общем я догадываюсь о сути ошибки
end else //иначе (это когда курсор не на юнете, а на земле)
nameOnBar:='З Е М Л Я'; //присваиваем другое имя
facewindow:=loadImage('/land1face.png'); // и загружаем другую картинку
объясняю:
видиш ли, если не указаны
begin и
end, то выполняется
одна, следующая команда. Давай разберем пошагово
if (x=unit1x) and (y=unit1y) then
Если в выделенной клетке монстр, то...
begin
facewindow:=loadImage('/face1.png'); //загружаем рожу юнита(будет отображаться на нижнем баре)
nameOnBar:='О Р К'; //присваиваем имя юнита, которое будет около рожи
end;
Загружаем в память иконку орка (и причем это сделано очень неправильным образом, иконки следует загрузить заранее), и меняем текст на "орк"
else //иначе (это когда курсор не на юнете, а на земле)
nameOnBar:='З Е М Л Я'; //присваиваем другое имя
Иначе делаем текст "земля"
так как сдесь нет begin и end, выполнятсмя будет только nameOnBar:='З Е М Л Я'; Все, условие закончилось.
facewindow:=loadImage('/land1face.png'); // и загружаем другую картинку
А вот эта штука будет выполняться в ЛЮБОМ случае, так как не относиться к условию. Тоесть даже если в клетке стоит орк, и мы загрузим его иконку, то вот эта команда загрузит землю.
Правильно будет так:
if (x=unit1x) and (y=unit1y) then //если коорд. курсора совпадают с коорд. юнита,то...
begin
facewindow:=loadImage('/face1.png'); //загружаем рожу юнита(будет отображаться на нижнем баре)
nameOnBar:='О Р К'; //присваиваем имя юнита, которое будет около рожи
end else
begin //иначе (это когда курсор не на юнете, а на земле)
nameOnBar:='З Е М Л Я'; //присваиваем другое имя
facewindow:=loadImage('/land1face.png'); // и загружаем другую картинку
end;
drawImage(facewindow,scrW-sW-3,scrH-SH-3); //размещаем ее на баре
SetColor(180,250,0);
DrawText(nameOnBar,scrW-getStringWidth(nameOnBar)-35,scrH-getStringHeight(nameOnBar)-4); //и текст