=end
# =============================================================================
# 无设定
# =============================================================================
module THEO
module MAP
module REGEXP
MEMORIZE = /<(?:MEMORIZE|memorize)>(.*)/
end
end
end
Point = Struct.new(:x,:y)
class Event_Memorizer
def initialize
@data = {}
end
def [](key)
if @data[key].nil?
event = $game_map.events[key[1]]
@data[key] = Point.new(event.x,event.y)
end
return @data[key]
end
def []=(key,value)
@data[key] = value
end
end
class Game_System
attr_accessor :event_pos
alias pre_evmemorize_init initialize
def initialize
pre_evmemorize_init
init_event_memorizer
end
def init_event_memorizer
@event_pos = Event_Memorizer.new
end
end
class Game_Event < Game_Character
def name
@event.name
end
end
class Scene_Map < Scene_Base
include THEO::MAP
alias pre_evmemorize_transfer pre_transfer
def pre_transfer
pre_evmemorize_transfer
save_events_location
end
def save_events_location
$game_map.events.each do |id,event|
case event.name
when REGEXP::MEMORIZE
$game_system.event_pos[[$game_map.map_id,id]]=Point.new(event.x,event.y)
end
end
end
end
class Game_Map
include THEO::MAP
alias pre_setup_evmemorize setup
def setup(map_id)
pre_setup_evmemorize(map_id)
load_events_location
end
def load_events_location
events.each do |id,event|
case event.name
when REGEXP::MEMORIZE
point = $game_system.event_pos[[map_id,id]]
event.moveto(point.x,point.y)
end
end
end
[pre lang="ruby"]
module THEO::MAP
DISABLE_SW_ID = 1 # 禁用事件记忆的开关编号
end
class Game_Map
alias load_events_location_20190523 load_events_location
def load_events_location
load_events_location_20190523 if !$game_switches[DISABLE_SW_ID]
end
end
[/pre]