module DataManager
class << self
alias load_database_subtitle_final load_database
end
def self.load_database
load_database_subtitle_final
load_notetags_subtitle_final
end
def self.load_notetags_subtitle_final
[$data_skills, $data_items, $data_weapons, $data_armors].each do |group|
group.each do |obj|
next if obj.nil?
obj.load_notetag_subtitle_final if obj.respond_to?(:load_notetag_subtitle_final)
end
end
end
end
content.split('|').each do |part|
part = part.strip
if part =~ /^US\s*:\s*(.+)/i
user_speech = $1.to_s.strip
elsif part =~ /^(\d+)\s*:\s*(.+)/i
target_map[$1.to_i] = $2.to_s.strip
end
end
@multi_subtitle_map[user_id] = {
user_speech: user_speech,
targets: target_map
}
end
end
def subtitle_for(actor_id)
return @subtitle_map[actor_id] if @subtitle_map.key?(actor_id)
return @subtitle_map[0] if @subtitle_map.key?(0)
nil
end
def pair_subtitle_for(user_id, target_id)
@subtitle_pair_map[[user_id, target_id]]
end
def multi_subtitle_for(user_id)
@multi_subtitle_map[user_id]
end
end
multi = item.multi_subtitle_for(user.id)
if multi
targets = multi[:targets]
return true if @last_targets.any? { |t| t.is_a?(Game_Actor) && targets.key?(t.id) }
return true if multi[:user_speech] && !multi[:user_speech].empty?
end
@last_targets.each do |t|
return true if t.is_a?(Game_Actor) && item.pair_subtitle_for(user.id, t.id)
end
# 使用者台词
if user_speech && !user_speech.empty?
user_name = $game_actors[user.id].name
@log_window.add_text("#{user_name}:#{user_speech}")
wait(30)
end
# 队友台词
shown = false
@last_targets.each do |target|
next unless target.is_a?(Game_Actor)
text = targets_map[target.id]
next unless text
name = $game_actors[target.id].name
@log_window.add_text("#{name}:#{text}")
wait(20)
shown = true
end
if shown || user_speech
wait(30)
return
end
end
# 2. 双人评价
@last_targets.each do |target|
next unless target.is_a?(Game_Actor)
pair = item.pair_subtitle_for(user.id, target.id)
if pair
user_name = $game_actors[user.id].name
target_name = $game_actors[target.id].name
@log_window.add_text("#{user_name}:#{pair[:ci]}\n#{target_name}:#{pair[:pi]}")
wait(60)
return
end
end
# 3. 单人评价
single = item.subtitle_for(user.id)
if single
user_name = $game_actors[user.id].name
@log_window.add_text("#{user_name}:#{single}")
wait(60)
end
end
end[/pre]