#============================================================================== # ■ アイテム図鑑3 ver 1.00 本体プログラム #------------------------------------------------------------------------------ #  配布元: # 白の魔 http://izumiwhite.web.fc2.com/ # #  利用規約: # RPGツクールVXの正規の登録者のみご利用になれます。 # 利用報告・著作権表示とかは必要ありません。 # 改造もご自由にどうぞ。 # 何か問題が発生しても責任は持ちません。 #============================================================================== module WD_itemdictionary def i_dictionary_switch_on(id) $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil $game_system.i_dic_sw[id] = false if $game_system.i_dic_sw[id] == nil $game_system.i_dic_sw[id] = true end def i_dictionary_switch_off(id) $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil $game_system.i_dic_sw[id] = false if $game_system.i_dic_sw[id] == nil $game_system.i_dic_sw[id] = false end def w_dictionary_switch_on(id) $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil $game_system.w_dic_sw[id] = false if $game_system.w_dic_sw[id] == nil $game_system.w_dic_sw[id] = true end def w_dictionary_switch_off(id) $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil $game_system.w_dic_sw[id] = false if $game_system.w_dic_sw[id] == nil $game_system.w_dic_sw[id] = false end def a_dictionary_switch_on(id) $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil $game_system.a_dic_sw[id] = false if $game_system.a_dic_sw[id] == nil $game_system.a_dic_sw[id] = true end def a_dictionary_switch_off(id) $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil $game_system.a_dic_sw[id] = false if $game_system.a_dic_sw[id] == nil $game_system.a_dic_sw[id] = false end def item_dictionary_perfection(n) dic_max = 0 dic_num = 0 for i in 1...$data_items.size hantei = /<図鑑無効>/ =~ $data_items[i].note if $data_items[i].name.size > 0 and hantei == nil dic_max += 1 $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil $game_system.i_dic_sw[i] = false if $game_system.i_dic_sw[i] == nil if $game_system.i_dic_sw[i] == true dic_num += 1 end end end for i in 1...$data_weapons.size hantei = /<図鑑無効>/ =~ $data_weapons[i].note if $data_weapons[i].name.size > 0 and hantei == nil dic_max += 1 $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil $game_system.w_dic_sw[i] = false if $game_system.w_dic_sw[i] == nil if $game_system.w_dic_sw[i] == true dic_num += 1 end end end for i in 1...$data_armors.size hantei = /<図鑑無効>/ =~ $data_armors[i].note if $data_armors[i].name.size > 0 and hantei == nil dic_max += 1 $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil $game_system.a_dic_sw[i] = false if $game_system.a_dic_sw[i] == nil if $game_system.a_dic_sw[i] == true dic_num += 1 end end end $game_variables[n] = (100*dic_num)/dic_max end end class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :i_dic_sw attr_accessor :w_dic_sw attr_accessor :a_dic_sw #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias wd_orig_initialize13 initialize def initialize wd_orig_initialize13 @i_dic_sw = [] @w_dic_sw = [] @a_dic_sw = [] end end class Game_Interpreter include WD_itemdictionary end class Game_Party < Game_Unit include WD_itemdictionary #-------------------------------------------------------------------------- # ● アイテムの増加 (減少) # item : アイテム # n : 個数 # include_equip : 装備品も含める #-------------------------------------------------------------------------- alias wd_orig_gain_item13 gain_item def gain_item(item, n, include_equip = false) wd_orig_gain_item13(item, n, include_equip) if n > 0 case item when RPG::Item i_dictionary_switch_on(item.id) when RPG::Weapon w_dictionary_switch_on(item.id) when RPG::Armor a_dictionary_switch_on(item.id) end end end end #============================================================================== # ■ Scene_TotalDictionary #------------------------------------------------------------------------------ #  アイテム図鑑画面の処理を行うクラスです。 #============================================================================== class Scene_TotalDictionary < Scene_Base #-------------------------------------------------------------------------- # ● 初期化 #-------------------------------------------------------------------------- def initialize @dic_index = [] for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size @dic_index[i] = -1 end end #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super create_menu_background @viewport = Viewport.new(0, 0, 544, 416) @left_window = [] @right_window = [] for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size @left_window[i] = Window_TotalDictionaryLeft.new @left_window[i].viewport = @viewport @left_window[i].visible = false @right_window[i] = Window_TotalDictionaryRight.new(i) @right_window[i].viewport = @viewport @right_window[i].visible = false @right_window[i].active = false end @bottom_window = Window_DictionaryPerfection.new @bottom_window.viewport = @viewport @kind_window = Window_DictionaryKind.new @kind_window.viewport = @viewport end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super dispose_menu_background for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size @left_window[i].dispose @right_window[i].dispose end @bottom_window.dispose @kind_window.dispose end #-------------------------------------------------------------------------- # ● 元の画面へ戻る #-------------------------------------------------------------------------- def return_scene $scene = Scene_Map.new # $scene = Scene_Menu.new(6) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super update_menu_background for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size @left_window[i].update @right_window[i].update end @bottom_window.update @kind_window.update for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size if @dic_index[i] != @right_window[i].index @left_window[i].refresh(@right_window[i].data_kind[@right_window[i].index], @right_window[i].data_id[@right_window[i].index], @right_window[i].index) @dic_index[i] = @right_window[i].index end end hantei = false for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size if @right_window[i].active if Input.trigger?(Input::B) Sound.play_cancel @right_window[i].active = false @kind_window.active = true end hantei = true end end if hantei == false for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size if @kind_window.index == i for j in 0...WD_itemdictionary_ini::C_kind_display_text1.size @right_window[j].visible = false @left_window[j].visible = false end @right_window[i].visible = true @left_window[i].visible = true end end if Input.trigger?(Input::C) Sound.play_decision @kind_window.active = false for i in 0...WD_itemdictionary_ini::C_kind_display_text1.size if @kind_window.index == i @right_window[i].active = true end end elsif Input.trigger?(Input::B) Sound.play_cancel return_scene end end end end #============================================================================== # ■ Window_TotalDictionaryLeft #------------------------------------------------------------------------------ #  アイテムの性能を表示するウィンドウです。 #============================================================================== class Window_TotalDictionaryLeft < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize x = 0 y = 0 width = 544-200 height = 416-56 super(x, y, width, height) end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(kind, id, index) self.contents.clear self.contents.font.color = normal_color draw_item_parameter(id, index) if kind == 0 draw_weapon_parameter(id, index) if kind == 1 draw_armor_parameter(id, index) if kind == 2 end #-------------------------------------------------------------------------- # ● 道具の性能の表示 #-------------------------------------------------------------------------- def draw_item_parameter(id, index) $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil $game_system.i_dic_sw[id] = false if $game_system.i_dic_sw[id] == nil if WD_itemdictionary_ini::I_number_display x = WD_itemdictionary_ini::I_number_display_x y = WD_itemdictionary_ini::I_number_display_y width = WD_itemdictionary_ini::I_number_display_width text = sprintf("%0#{WD_itemdictionary_ini::I_number_display_digit}d",index+1) self.contents.draw_text(x, y, width, WLH, text, 0) end if $game_system.i_dic_sw[id] == true item = $data_items[id] if WD_itemdictionary_ini::I_name_display x = WD_itemdictionary_ini::I_name_display_x y = WD_itemdictionary_ini::I_name_display_y width = WD_itemdictionary_ini::I_name_display_width self.contents.draw_text(x, y, width, WLH, item.name, 0) end if WD_itemdictionary_ini::I_icon_display x = WD_itemdictionary_ini::I_icon_display_x y = WD_itemdictionary_ini::I_icon_display_y draw_icon(item.icon_index, x, y, true) end if WD_itemdictionary_ini::I_text_display x = WD_itemdictionary_ini::I_text_display_x y = WD_itemdictionary_ini::I_text_display_y width = WD_itemdictionary_ini::I_text_display_width self.contents.draw_text(x, y, width, WLH, item.description, 0) end if WD_itemdictionary_ini::I_occasion_display x = WD_itemdictionary_ini::I_occasion_display_x y = WD_itemdictionary_ini::I_occasion_display_y width = WD_itemdictionary_ini::I_occasion_display_width text1 = WD_itemdictionary_ini::I_occasion_display_text1 text2 = WD_itemdictionary_ini::I_occasion_display_text2 text3 = WD_itemdictionary_ini::I_occasion_display_text3 text4 = WD_itemdictionary_ini::I_occasion_display_text4 text5 = WD_itemdictionary_ini::I_occasion_display_text5 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color case item.occasion when 0 self.contents.draw_text(x, y, width, WLH, text2, 2) when 1 self.contents.draw_text(x, y, width, WLH, text3, 2) when 2 self.contents.draw_text(x, y, width, WLH, text4, 2) when 3 self.contents.draw_text(x, y, width, WLH, text5, 2) end end if WD_itemdictionary_ini::I_consumable_display x = WD_itemdictionary_ini::I_consumable_display_x y = WD_itemdictionary_ini::I_consumable_display_y width = WD_itemdictionary_ini::I_consumable_display_width text1 = WD_itemdictionary_ini::I_consumable_display_text1 text2 = WD_itemdictionary_ini::I_consumable_display_text2 text3 = WD_itemdictionary_ini::I_consumable_display_text3 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color if item.consumable self.contents.draw_text(x, y, width, WLH, text2, 2) else self.contents.draw_text(x, y, width, WLH, text3, 2) end end if WD_itemdictionary_ini::I_speed_display x = WD_itemdictionary_ini::I_speed_display_x y = WD_itemdictionary_ini::I_speed_display_y width = WD_itemdictionary_ini::I_speed_display_width text1 = WD_itemdictionary_ini::I_speed_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, item.speed, 2) end if WD_itemdictionary_ini::I_price_display x = WD_itemdictionary_ini::I_price_display_x y = WD_itemdictionary_ini::I_price_display_y width = WD_itemdictionary_ini::I_price_display_width text1 = WD_itemdictionary_ini::I_price_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, "#{item.price}#{Vocab::gold}", 2) end if WD_itemdictionary_ini::I_option_display x = WD_itemdictionary_ini::I_option_display_x y = WD_itemdictionary_ini::I_option_display_y width = WD_itemdictionary_ini::I_option_display_width text1 = WD_itemdictionary_ini::I_option_display_text1 text2 = WD_itemdictionary_ini::I_option_display_text2 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color match_hantei = false i = 0 item.note.scan(/<図鑑オプション:(.*)>/){|matched| i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, matched, 0) match_hantei = true } if match_hantei == false self.contents.draw_text(x + 24, y + WLH, width - 24, WLH, text2, 0) end end else x = WD_itemdictionary_ini::I_non_display_x y = WD_itemdictionary_ini::I_non_display_y width = WD_itemdictionary_ini::I_non_display_width text1 = WD_itemdictionary_ini::I_non_display_text1 self.contents.draw_text(x, y, width, WLH, text1, 0) end end #-------------------------------------------------------------------------- # ● 武器の性能の表示 #-------------------------------------------------------------------------- def draw_weapon_parameter(id, index) $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil $game_system.w_dic_sw[id] = false if $game_system.w_dic_sw[id] == nil if WD_itemdictionary_ini::W_number_display x = WD_itemdictionary_ini::W_number_display_x y = WD_itemdictionary_ini::W_number_display_y width = WD_itemdictionary_ini::W_number_display_width text = sprintf("%0#{WD_itemdictionary_ini::W_number_display_digit}d",index+1) self.contents.draw_text(x, y, width, WLH, text, 0) end if $game_system.w_dic_sw[id] == true item = $data_weapons[id] if WD_itemdictionary_ini::W_name_display x = WD_itemdictionary_ini::W_name_display_x y = WD_itemdictionary_ini::W_name_display_y width = WD_itemdictionary_ini::W_name_display_width self.contents.draw_text(x, y, width, WLH, item.name, 0) end if WD_itemdictionary_ini::W_icon_display x = WD_itemdictionary_ini::W_icon_display_x y = WD_itemdictionary_ini::W_icon_display_y draw_icon(item.icon_index, x, y, true) end if WD_itemdictionary_ini::W_text_display x = WD_itemdictionary_ini::W_text_display_x y = WD_itemdictionary_ini::W_text_display_y width = WD_itemdictionary_ini::W_text_display_width self.contents.draw_text(x, y, width, WLH, item.description, 0) end if WD_itemdictionary_ini::W_atk_display x = WD_itemdictionary_ini::W_atk_display_x y = WD_itemdictionary_ini::W_atk_display_y width = WD_itemdictionary_ini::W_atk_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::atk, 0) self.contents.font.color = normal_color if item.atk >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.atk}", 2) else self.contents.draw_text(x, y, width, WLH, item.atk, 2) end end if WD_itemdictionary_ini::W_def_display x = WD_itemdictionary_ini::W_def_display_x y = WD_itemdictionary_ini::W_def_display_y width = WD_itemdictionary_ini::W_def_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::def, 0) self.contents.font.color = normal_color if item.def >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.def}", 2) else self.contents.draw_text(x, y, width, WLH, item.def, 2) end end if WD_itemdictionary_ini::W_spi_display x = WD_itemdictionary_ini::W_spi_display_x y = WD_itemdictionary_ini::W_spi_display_y width = WD_itemdictionary_ini::W_spi_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::spi, 0) self.contents.font.color = normal_color if item.spi >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.spi}", 2) else self.contents.draw_text(x, y, width, WLH, item.spi, 2) end end if WD_itemdictionary_ini::W_agi_display x = WD_itemdictionary_ini::W_agi_display_x y = WD_itemdictionary_ini::W_agi_display_y width = WD_itemdictionary_ini::W_agi_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::agi, 0) self.contents.font.color = normal_color if item.agi >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.agi}", 2) else self.contents.draw_text(x, y, width, WLH, item.agi, 2) end end if WD_itemdictionary_ini::W_hit_display x = WD_itemdictionary_ini::W_hit_display_x y = WD_itemdictionary_ini::W_hit_display_y width = WD_itemdictionary_ini::W_hit_display_width text1 = WD_itemdictionary_ini::W_hit_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, "#{item.hit}%", 2) end if WD_itemdictionary_ini::W_price_display x = WD_itemdictionary_ini::W_price_display_x y = WD_itemdictionary_ini::W_price_display_y width = WD_itemdictionary_ini::W_price_display_width text1 = WD_itemdictionary_ini::W_price_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, "#{item.price}#{Vocab::gold}", 2) end if WD_itemdictionary_ini::W_element_display x = WD_itemdictionary_ini::W_element_display_x y = WD_itemdictionary_ini::W_element_display_y width = WD_itemdictionary_ini::W_element_display_width text1 = WD_itemdictionary_ini::W_element_display_text1 text2 = WD_itemdictionary_ini::W_element_display_text2 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color sentence = "" if item.element_set.size > 0 for element in item.element_set if element <= WD_itemdictionary_ini::W_element_display_range sentence += "#{$data_system.elements[element]}," end end sentence.chop! end sentence = text2 if sentence.size == 0 self.contents.draw_text(x + 120, y, width - 120, WLH, sentence, 2) end if WD_itemdictionary_ini::W_state_display x = WD_itemdictionary_ini::W_state_display_x y = WD_itemdictionary_ini::W_state_display_y width = WD_itemdictionary_ini::W_state_display_width text1 = WD_itemdictionary_ini::W_state_display_text1 text2 = WD_itemdictionary_ini::W_state_display_text2 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color sentence = "" if item.state_set.size > 0 for element in item.state_set if element <= WD_itemdictionary_ini::W_state_display_range sentence += "#{$data_states[element].name}," end end sentence.chop! end sentence = text2 if sentence.size == 0 self.contents.draw_text(x + 120, y, width - 120, WLH, sentence, 2) end if WD_itemdictionary_ini::W_option_display x = WD_itemdictionary_ini::W_option_display_x y = WD_itemdictionary_ini::W_option_display_y width = WD_itemdictionary_ini::W_option_display_width text1 = WD_itemdictionary_ini::W_option_display_text1 text2 = WD_itemdictionary_ini::W_option_display_text2 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color match_hantei = false i = 0 if WD_itemdictionary_ini::W_option_display_auto if item.two_handed i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "両手持ち", 0) match_hantei = true end if item.fast_attack i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "ターン内先制", 0) match_hantei = true end if item.dual_attack i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "連続攻撃", 0) match_hantei = true end if item.critical_bonus i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "クリティカル頻発", 0) match_hantei = true end end item.note.scan(/<図鑑オプション:(.*)>/){|matched| i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, matched, 0) match_hantei = true } if match_hantei == false self.contents.draw_text(x + 24, y + WLH, width - 24, WLH, text2, 0) end end else x = WD_itemdictionary_ini::W_non_display_x y = WD_itemdictionary_ini::W_non_display_y width = WD_itemdictionary_ini::W_non_display_width text1 = WD_itemdictionary_ini::W_non_display_text1 self.contents.draw_text(x, y, width, WLH, text1, 0) end end #-------------------------------------------------------------------------- # ● 防具の性能の表示 #-------------------------------------------------------------------------- def draw_armor_parameter(id, index) $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil $game_system.a_dic_sw[id] = false if $game_system.a_dic_sw[id] == nil if WD_itemdictionary_ini::A_number_display x = WD_itemdictionary_ini::A_number_display_x y = WD_itemdictionary_ini::A_number_display_y width = WD_itemdictionary_ini::A_number_display_width text = sprintf("%0#{WD_itemdictionary_ini::A_number_display_digit}d",index+1) self.contents.draw_text(x, y, width, WLH, text, 0) end if $game_system.a_dic_sw[id] == true item = $data_armors[id] if WD_itemdictionary_ini::A_name_display x = WD_itemdictionary_ini::A_name_display_x y = WD_itemdictionary_ini::A_name_display_y width = WD_itemdictionary_ini::A_name_display_width self.contents.draw_text(x, y, width, WLH, item.name, 0) end if WD_itemdictionary_ini::A_icon_display x = WD_itemdictionary_ini::A_icon_display_x y = WD_itemdictionary_ini::A_icon_display_y draw_icon(item.icon_index, x, y, true) end if WD_itemdictionary_ini::A_text_display x = WD_itemdictionary_ini::A_text_display_x y = WD_itemdictionary_ini::A_text_display_y width = WD_itemdictionary_ini::A_text_display_width self.contents.draw_text(x, y, width, WLH, item.description, 0) end if WD_itemdictionary_ini::A_atk_display x = WD_itemdictionary_ini::A_atk_display_x y = WD_itemdictionary_ini::A_atk_display_y width = WD_itemdictionary_ini::A_atk_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::atk, 0) self.contents.font.color = normal_color if item.atk >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.atk}", 2) else self.contents.draw_text(x, y, width, WLH, item.atk, 2) end end if WD_itemdictionary_ini::A_def_display x = WD_itemdictionary_ini::A_def_display_x y = WD_itemdictionary_ini::A_def_display_y width = WD_itemdictionary_ini::A_def_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::def, 0) self.contents.font.color = normal_color if item.def >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.def}", 2) else self.contents.draw_text(x, y, width, WLH, item.def, 2) end end if WD_itemdictionary_ini::A_spi_display x = WD_itemdictionary_ini::A_spi_display_x y = WD_itemdictionary_ini::A_spi_display_y width = WD_itemdictionary_ini::A_spi_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::spi, 0) self.contents.font.color = normal_color if item.spi >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.spi}", 2) else self.contents.draw_text(x, y, width, WLH, item.spi, 2) end end if WD_itemdictionary_ini::A_agi_display x = WD_itemdictionary_ini::A_agi_display_x y = WD_itemdictionary_ini::A_agi_display_y width = WD_itemdictionary_ini::A_agi_display_width self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::agi, 0) self.contents.font.color = normal_color if item.agi >= 0 self.contents.draw_text(x, y, width, WLH, "+#{item.agi}", 2) else self.contents.draw_text(x, y, width, WLH, item.agi, 2) end end if WD_itemdictionary_ini::A_eva_display x = WD_itemdictionary_ini::A_eva_display_x y = WD_itemdictionary_ini::A_eva_display_y width = WD_itemdictionary_ini::A_eva_display_width text1 = WD_itemdictionary_ini::A_eva_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, "#{item.eva}%", 2) end if WD_itemdictionary_ini::A_price_display x = WD_itemdictionary_ini::A_price_display_x y = WD_itemdictionary_ini::A_price_display_y width = WD_itemdictionary_ini::A_price_display_width text1 = WD_itemdictionary_ini::A_price_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, "#{item.price}#{Vocab::gold}", 2) end if WD_itemdictionary_ini::A_element_display x = WD_itemdictionary_ini::A_element_display_x y = WD_itemdictionary_ini::A_element_display_y width = WD_itemdictionary_ini::A_element_display_width text1 = WD_itemdictionary_ini::A_element_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color sentence = "" if item.element_set.size > 0 for element in item.element_set if element <= WD_itemdictionary_ini::A_element_display_range sentence += "#{$data_system.elements[element]}," end end sentence.chop! end sentence = "無" if sentence.size == 0 self.contents.draw_text(x + 120, y, width - 120, WLH, sentence, 2) end if WD_itemdictionary_ini::A_state_display x = WD_itemdictionary_ini::A_state_display_x y = WD_itemdictionary_ini::A_state_display_y width = WD_itemdictionary_ini::A_state_display_width text1 = WD_itemdictionary_ini::A_state_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color sentence = "" if item.state_set.size > 0 for element in item.state_set if element <= WD_itemdictionary_ini::A_element_display_range sentence += "#{$data_states[element].name}," end end sentence.chop! end sentence = "無" if sentence.size == 0 self.contents.draw_text(x + 120, y, width - 120, WLH, sentence, 2) end if WD_itemdictionary_ini::A_option_display x = WD_itemdictionary_ini::A_option_display_x y = WD_itemdictionary_ini::A_option_display_y width = WD_itemdictionary_ini::A_option_display_width text1 = WD_itemdictionary_ini::A_option_display_text1 self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, text1, 0) self.contents.font.color = normal_color match_hantei = false i = 0 if WD_itemdictionary_ini::A_option_display_auto if item.prevent_critical i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "クリティカル防止", 0) match_hantei = true end if item.half_mp_cost i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "消費MP半分", 0) match_hantei = true end if item.double_exp_gain i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "取得経験値2倍", 0) match_hantei = true end if item.auto_hp_recover i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, "HP自動回復", 0) match_hantei = true end end item.note.scan(/<図鑑オプション:(.*)>/){|matched| i += 1 self.contents.draw_text(x + 24, y + WLH * i, width - 24, WLH, matched, 0) match_hantei = true } if match_hantei == false self.contents.draw_text(x + 24, y + WLH, width - 24, WLH, "なし", 0) end end else x = WD_itemdictionary_ini::A_non_display_x y = WD_itemdictionary_ini::A_non_display_y width = WD_itemdictionary_ini::A_non_display_width text1 = WD_itemdictionary_ini::A_non_display_text1 self.contents.draw_text(x, y, width, WLH, text1, 0) end end end #============================================================================== # ■ Window_TotalDictionaryRight #------------------------------------------------------------------------------ #  アイテムの一覧を表示するウィンドウです。 #============================================================================== class Window_TotalDictionaryRight < Window_Selectable #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :data_kind attr_reader :data_id #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(winid) x = 544 -200 y = 0 width = 200 height = 416 - 32 - WD_itemdictionary_ini::C_kind_display_row * 24 super(x, y, width, height) @index= 0 @column_max = 1 @winid = winid refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh @data = [] @data_kind = [] @data_id = [] for i in 1...$data_items.size hantei1 = /<図鑑無効>/ =~ $data_items[i].note hantei2 = /<図鑑種類:#{WD_itemdictionary_ini::C_kind_display_text1[@winid]}>/ =~ $data_items[i].note if $data_items[i].name.size > 0 and hantei1 == nil and hantei2 != nil $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil $game_system.i_dic_sw[i] = false if $game_system.i_dic_sw[i] == nil if $game_system.i_dic_sw[i] == true @data.push($data_items[i].name) else @data.push(WD_itemdictionary_ini::C_non_display_text1) end @data_kind.push(0) @data_id.push($data_items[i].id) end end for i in 1...$data_weapons.size hantei1 = /<図鑑無効>/ =~ $data_weapons[i].note hantei2 = /<図鑑種類:#{WD_itemdictionary_ini::C_kind_display_text1[@winid]}>/ =~ $data_weapons[i].note if $data_weapons[i].name.size > 0 and hantei1 == nil and hantei2 != nil $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil $game_system.w_dic_sw[i] = false if $game_system.w_dic_sw[i] == nil if $game_system.w_dic_sw[i] == true @data.push($data_weapons[i].name) else @data.push(WD_itemdictionary_ini::C_non_display_text1) end @data_kind.push(1) @data_id.push($data_weapons[i].id) end end for i in 1...$data_armors.size hantei1 = /<図鑑無効>/ =~ $data_armors[i].note hantei2 = /<図鑑種類:#{WD_itemdictionary_ini::C_kind_display_text1[@winid]}>/ =~ $data_armors[i].note if $data_armors[i].name.size > 0 and hantei1 == nil and hantei2 != nil $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil $game_system.a_dic_sw[i] = false if $game_system.a_dic_sw[i] == nil if $game_system.a_dic_sw[i] == true @data.push($data_armors[i].name) else @data.push(WD_itemdictionary_ini::C_non_display_text1) end @data_kind.push(2) @data_id.push($data_armors[i].id) end end self.contents.clear @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # ● 項目の描画 #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color.alpha = 255 self.contents.font.color.alpha = 128 if @data[index] == WD_itemdictionary_ini::C_non_display_text1 self.contents.draw_text(rect, @data[index], 0) end end #============================================================================== # ■ Window_DictionaryPerfection #------------------------------------------------------------------------------ #  図鑑完成度を表示するウィンドウです。 #============================================================================== class Window_DictionaryPerfection < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 # x : ウィンドウの X 座標 # y : ウィンドウの Y 座標 #-------------------------------------------------------------------------- def initialize super(0, 416 - 56, 544 - 200, 56) refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear dic_max = 0 dic_num = 0 for i in 1...$data_items.size hantei = /<図鑑無効>/ =~ $data_items[i].note if $data_items[i].name.size > 0 and hantei == nil dic_max += 1 $game_system.i_dic_sw = [] if $game_system.i_dic_sw == nil $game_system.i_dic_sw[i] = false if $game_system.i_dic_sw[i] == nil if $game_system.i_dic_sw[i] == true dic_num += 1 end end end for i in 1...$data_weapons.size hantei = /<図鑑無効>/ =~ $data_weapons[i].note if $data_weapons[i].name.size > 0 and hantei == nil dic_max += 1 $game_system.w_dic_sw = [] if $game_system.w_dic_sw == nil $game_system.w_dic_sw[i] = false if $game_system.w_dic_sw[i] == nil if $game_system.w_dic_sw[i] == true dic_num += 1 end end end for i in 1...$data_armors.size hantei = /<図鑑無効>/ =~ $data_armors[i].note if $data_armors[i].name.size > 0 and hantei == nil dic_max += 1 $game_system.a_dic_sw = [] if $game_system.a_dic_sw == nil $game_system.a_dic_sw[i] = false if $game_system.a_dic_sw[i] == nil if $game_system.a_dic_sw[i] == true dic_num += 1 end end end self.contents.draw_text(0, 0, 544 - 200 - 32, WLH, "図鑑完成度: #{(100*dic_num)/dic_max}%", 1) end end #============================================================================== # ■ Window_DictionaryKind #------------------------------------------------------------------------------ #  図鑑の種類を表示するウィンドウです。 #============================================================================== class Window_DictionaryKind < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize x = 544 - 200 y = 416 - 32 - WD_itemdictionary_ini::C_kind_display_row * 24 width = 200 height = 32 + WD_itemdictionary_ini::C_kind_display_row * 24 super(x, y, width, height) @index = 0 @column_max = WD_itemdictionary_ini::C_kind_display_column refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh @data = WD_itemdictionary_ini::C_kind_display_text1 @item_max = @data.size self.contents.clear create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # ● 項目の描画 #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) self.contents.draw_text(rect, @data[index], 1) end end