#==================================================================
# 追逐事件 by Calendar99
#
# 追逐者设置移动路线--脚本--chase("string"),循环执行。
# 之后追逐者会追逐地图上最近的注释有string的事件。
# 可以在脚本中加入分歧判断,让事件在不追逐的时候执行其他行动。
#
#==================================================================
class Game_Character
def chase(string)
return false unless (event = get_chasing_event(string))
move_toward_character(event)
true
end
def distance_to(character)
distance_x = (self.x - character.x).abs
distance_y = (self.y - character.y).abs
return distance_x + distance_y
end
def get_chasing_events(string)
$game_map.events.select{|id, event| event.match(string) }
end
def get_chasing_event(string)
return unless (event_hash = get_chasing_events(string))
event_array = []
event_hash.each_value{|event| event_array << event}
event_array.sort{|a, b| self.distance_to(a) <=> self.distance_to(b) }.first
end
end
class Game_Event
def match(string)
@list.each do |command|
next unless command.code == 108 #注释
return true if command.parameters[0].index(string)
end
false
end
end