#--------------------------------------------------------------------------
# ● 可以通行判定
# x : X 坐标
# y : Y 坐标
# flag : 通行度标志(非交通工具时,一般为 0x01)
#--------------------------------------------------------------------------
def passable?(x, y, flag = 0x01)
for event in events_xy(x, y) # 循环指定位置的事件数组
next if event.tile_id == 0 # 事件图片非图块的情况下
next if event.priority_type > 0 # 非「一般角色之下」
next if event.through # 允许穿透
pass = @passages[event.tile_id] # 获取通行属性
next if pass & 0x10 == 0x10 # ☆: 不影响通行判定
return true if pass & flag == 0x00 # ○: 可以通行
return false if pass & flag == flag # x: 不可通行
end
for i in [2, 1, 0] # 由上层而下
tile_id = @map.data[x, y, i] # 获取图块 ID
return false if tile_id == nil # 无法获取图块:不可通行
pass = @passages[tile_id] # 获取通行属性
next if pass & 0x10 == 0x10 # ☆: 不影响通行判定
return true if pass & flag == 0x00 # o: 可以通行
return false if pass & flag == flag # x: 不可通行
end
return false # 不可通行
end