SetBadObject
Marks objects of a given type and color as impassable within a specified radius for the pathfinding engine.
ObjType — graphic (type) of the object to block. Use $FFFF to match any type.
Color — color (hue) of the object to block. Use $FFFF to match any color.
Radius — the radius (in tiles) around the object within which tiles are treated as blocked.
After calling this method, tiles occupied by matching objects will be treated as impassable by the pathfinder (MoveXY, MoveXYZ, GetPathArray, GetPathArray3D).
This is useful for avoiding specific world objects that are technically passable but should be treated as obstacles (e.g., energy fields, fire fields).
Use ClearBadObjectList to clear all bad object entries.
Does nothing if the character is not connected or UO data is not loaded.
Помечает объекты заданного типа и цвета как непроходимые в указанном радиусе для системы поиска пути.
ObjType — graphic (тип) блокируемого объекта. $FFFF — любой тип.
Color — цвет блокируемого объекта. $FFFF — любой цвет.
Radius — радиус (в тайлах) вокруг объекта, в пределах которого тайлы считаются заблокированными.
После вызова тайлы, занятые совпадающими объектами, будут считаться непроходимыми системой поиска пути (MoveXY, MoveXYZ, GetPathArray, GetPathArray3D).
Полезно для обхода определённых мировых объектов, технически проходимых, но требующих обхода (например, энергетические поля, огненные поля).
Используйте ClearBadObjectList для очистки всего списка заблокированных объектов.
Не выполняет действий, если персонаж не подключён или данные UO не загружены.
procedure SetBadObject(ObjType: Word; Color: Word; Radius: Byte);
def SetBadObject(ObjType: int, Color: int, Radius: int) -> None: ...
const
FIRE_FIELD = $398C;
begin
// Block fire field objects within 2 tiles
SetBadObject(FIRE_FIELD, $FFFF, 2);
AddToSystemJournal('Fire fields marked as obstacles');
MoveXY(1234, 5678, True, 1, True);
end.
FIRE_FIELD = 0x398C
# Block fire field objects within 2 tiles
SetBadObject(FIRE_FIELD, 0xFFFF, 2)
AddToSystemJournal('Fire fields marked as obstacles')
MoveXY(1234, 5678, True, 1, True)