#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ¡ß «â«ó«¹«¿??Êü - KGC_EnemyGuide ¡ß VX ¡ß #_/ ¡Þ Last update : 2008/09/08 ¡Þ #_/---------------------------------------------------------------------------- #_/ «â«ó«¹«¿??ÊüªòíÂà÷ª·ªÞª¹¡£ #_/============================================================================ #_/ ¡¼ÐñÜâѦÒö¡½¡ì«É«í«Ã«×«¢«¤«Æ«à?íå¡í ªèªêß¾ªËÓôìýª·ªÆª¯ªÀªµª¤¡£ #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ¡Ú «««¹«¿«Þ«¤«ºú£ÙÍ - Customize ¡Ú #============================================================================== module KGC module EnemyGuide # ¡ß ?ÊüªËÛÎÌØ?ßÀªòÞÅéĪ¹ªë # true : ÛÎÌØ?ßÀªò«¦«£«ó«É«¦ÓÛªïªêªËÞÅéÄ¡£ # false : ÷×ßȪΫ¦«£«ó«É«¦ªòÞÅéÄ¡£ USE_BACKGROUND_IMAGE = false # ¡ß ÛÎÌØ?ßÀ«Õ«¡«¤«ëÙ£ # "Graphics/System/" ª«ªé?ªß?ªà¡£ BACKGROUND_FILENAME = "EnemyGuideBack" # ¡ß èÇà÷ÓøøúãƪΫ¤«ó«¿?«Ð«ë [«Õ«ì?«à] INFO_INTERVAL = 90 # ¡ß Ù£îñªÎîñªË÷ת·Ûã?ªòøúãÆ # true : 001: «¹«é«¤«à # false : «¹«é«¤«à SHOW_SERIAL_NUMBER = true # ¡ß ÷ת·Ûã?ªò«ê«¹«ÈªÎ?ªÓâ÷ªËª¹ªë # true : ID ªòÙíãʪ·ªÆøúãÆâ÷ªÎÛã?ªòÜõª±ªë¡£ # false : ÷ת·Ûã?ªÈª·ªÆ ID ªòÞÅéÄ¡£ SERIAL_NUM_FOLLOW = true # ¡ß ÷ת·Ûã?ªÎßöãÒ # «Ø«ë«×ªÎ sprintf «Õ«©?«Þ«Ã«Èªò?ðΡ£ SERIAL_NUM_FORMAT = "%03d: " # ¡ß Ú±ðäéçªÎîتÎÙ£îñ # £±Ùþí®ªÀª±ò¦ïÒª¹ªëªÈ¡¢îتÎÙ£îñªÈÔÒª¸Ùþí®?ªË?í媵ªìªÞª¹¡£ UNKNOWN_ENEMY_NAME = "£¿" # ¡ß Ú±ðäéçªÎîتΫÇ?«¿øúãÆ UNENCOUNTERED_DATA = "- No Data -" # ¡ß ?ÊüªÎ«Ñ«é«á?«¿Ù£ PARAMETER_NAME = { :defeat_count => "°ÝÆļö", :weak_element => "¾àÁ¡¼Ó¼º", :resist_element => "³»¼º¼Ó¼º", :weak_state => "¾àÁ¡ ½ºÅ×ÀÌÆ®", :resist_state => "¹«È¿ ½ºÅ×ÀÌÆ®", :exp => "°æÇèÄ¡", :treasure => "¾ÆÀÌÅÛ", :drop_prob => "µå·ÓÀ²", :steal_obj => "ÈÉÄ¥ ¼ö ÀÖ´Â °Í", :steal_prob => "¼º°øÀ²", } # ¡ç ª³ªìªÏἪµªÊª¤ª³ªÈ£¡ # ¡ß Ú±?÷òªÎîتΫѫé«á?«¿øúãÆ UNDEFEATED_PARAMETER = "???" # ¡ß Ú±«É«í«Ã«×ªÎ«¢«¤«Æ«àÙ£ # £±Ùþí®ªÀª±ò¦ïÒª¹ªëªÈ¡¢«¢«¤«Æ«àÙ£ªÈÔÒª¸Ùþí®?ªË?í媵ªìªÞª¹¡£ UNDROPPED_ITEM_NAME = "£¿" # ¡ß ?àõÒ±àõªòðàªÙªëÛô? # Ò±àõªòðàªÙªë?àõªÎ ID ªòÛÕÖªªËÌ«Ò¡¡£ # .. ªä ... ªòÞÅéĪ·ª¿Ûô?ò¦ïÒªâʦÒö¡£ ELEMENT_RANGE = [1..16] # ¡ß ?àõªÎ«¢«¤«³«ó # ÊÀ?àõªË??ª¹ªë«¢«¤«³«óªÎÛã?ªòò¦ïÒ¡£ # ÛÕÖªªÎôÕí®ª¬?àõ ID ªË??¡£ ELEMENT_ICON = [nil, # ID:0 ªÏ«À«ß? 50, 1, 4, 14, 24, 12, 189, 136, # Ì«? ¢¦ ýå? 104, 105, 106, 107, 108, 109, 110, 111, # æú ¢¦ äÞ? ] # ¡ç ª³ªìªÏἪµªÊª¤ª³ªÈ£¡ # ¡ß ?Êüª«ªé?ª¹îØ # ?Êüª«ªé?ª·ª¿ª¤îتΠID ªòÛÕÖªªËÌ«Ò¡¡£ # ID ªÈÛô? (1..10 ªÊªÉ) ªÎªÉªÁªéªÇªâʦ¡£ # <ÖÇ> HIDDEN_ENEMIES = [2, 4, 8, 16..32] HIDDEN_ENEMIES = [] # ¡ß îتÎ?ªÓâ÷ # øúãƪ¹ªëîتΠID ªò¡¢øúãƪ·ª¿ª¤â÷ªËÛÕÖªªËÌ«Ò¡¡£ # .. ªä ... ªòÞÅéĪ·ª¿Ûô?ò¦ïÒªâʦÒö¡£ # ò¦ïÒª·ªÊª«ªÃª¿îØ¡¢ªÞª¿ªÏ HIDDEN_ENEMIES ªËò¦ïÒª·ª¿îتÏøúãƪ·ªÊª¤¡£ # (ª³ªÎѦÒöªòÞÅéĪ·ªÊª¤íÞùêªÏ nil) ENEMY_ORDER = nil # ENEMY_ORDER = [1..5, 8..13, 6, 7, 14, 15] # ¡èÞÅéÄÖÇ # ¡ß ?ãóîñªÎîتâ?÷ò # true : ?ãóîñªÎîتâ?÷òª·ª¿ªÈ̸ªÊª¹¡£ # false : ?ãóîñªÎîتÏÚ±?÷ò (ðäéçªÎªß) ªÈ̸ªÊª¹¡£ ORIGINAL_DEFEAT = true # ¡ß «á«Ë«å??ØüªË¡¸«â«ó«¹«¿??Êü¡¹«³«Þ«ó«ÉªòõÚÊ¥ª¹ªë # õÚÊ¥ª¹ªëíÞᶪϡ¢«á«Ë«å?«³«Þ«ó«ÉªÎõÌù»Ý»ªÇª¹¡£ # öâªÎݻݪËõÚÊ¥ª·ª¿ª±ªìªÐ¡¢¡ì«««¹«¿«à«á«Ë«å?«³«Þ«ó«É¡í ªòª´××éĪ¯ªÀªµª¤¡£ USE_MENU_ENEMY_GUIDE_COMMAND = true # ¡ß «á«Ë«å??ØüªÎ¡¸«â«ó«¹«¿??Êü¡¹«³«Þ«ó«ÉªÎÙ£? VOCAB_MENU_ENEMY_GUIDE = "¸ó½ºÅ͵µ°¨" end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú $imported = {} if $imported == nil $imported["EnemyGuide"] = true module KGC module_function #-------------------------------------------------------------------------- # ¡Û Ùþí®Öªªò«Þ«¹«¯ # str : «Þ«¹«¯?ßÚªÎÙþí®Öª # mask : «Þ«¹«¯Ùþí®Öª #-------------------------------------------------------------------------- def mask_string(str, mask) text = mask if mask.scan(/./).size == 1 text = mask * str.scan(/./).size end return text end end module KGC::EnemyGuide # ïáЮøúúÞ module Regexp # «¨«Í«ß? module Enemy # ?Êü?Ù¥ËÒã· BEGIN_GUIDE_DESCRIPTION = /<(?:GUIDE_DESCRIPTION|µµ°¨)>/i # ?Êü?Ù¥ðûÖõ END_GUIDE_DESCRIPTION = //i end end module_function #-------------------------------------------------------------------------- # ¡Û Range ªÈ Integer ªÎÛÕÖªªò Integer ªÎÛÕÖªªË?üµ (ñìÜÜé©áȪÏÛÉð¶) #-------------------------------------------------------------------------- def convert_integer_array(array) result = [] array.each { |i| case i when Range result |= i.to_a when Integer result |= [i] end } return result end #-------------------------------------------------------------------------- # ¡Û îتòøúãƪ¹ªëª« #-------------------------------------------------------------------------- def enemy_show?(enemy_id) return false if HIDDEN_ENEMY_LIST.include?(enemy_id) if ENEMY_ORDER_ID != nil return false unless ENEMY_ORDER_ID.include?(enemy_id) end return true end # ÞªøúãÆ«â«ó«¹«¿?«ê«¹«È HIDDEN_ENEMY_LIST = convert_integer_array(HIDDEN_ENEMIES) # øúãÆâ÷ªÎîØ ID ENEMY_ORDER_ID = (ENEMY_ORDER == nil ? nil : convert_integer_array(ENEMY_ORDER)) # «Á«§«Ã«¯ª¹ªë?àõ«ê«¹«È CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE) end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à KGC::Commands #============================================================================== module KGC module Commands module_function #-------------------------------------------------------------------------- # ¡Û ðäéç?÷¾ö¢Ôð # enemy_id : îØ ID #-------------------------------------------------------------------------- def enemy_encountered?(enemy_id) return $game_system.enemy_encountered[enemy_id] end #-------------------------------------------------------------------------- # ¡Û ?÷ò?÷¾ö¢Ôð # enemy_id : îØ ID #-------------------------------------------------------------------------- def enemy_encountered?(enemy_id) return $game_system.enemy_encountered[enemy_id] end #-------------------------------------------------------------------------- # ¡Û «¢«¤«Æ«à«É«í«Ã«×?÷¾ö¢Ôð # enemy_id : îØ ID # item_index : «É«í«Ã«×«¢«¤«Æ«àÛã? #-------------------------------------------------------------------------- def enemy_item_dropped?(enemy_id, item_index) if $game_system.enemy_item_dropped[enemy_id] == nil return false end result = $game_system.enemy_item_dropped[enemy_id] & (1 << item_index) return (result != 0) end #-------------------------------------------------------------------------- # ¡Û ?ªßà÷Íí?ªß?÷¾ö¢Ôð # enemy_id : îØ ID # obj_index : «ª«Ö«¸«§«¯«ÈÛã? #-------------------------------------------------------------------------- def enemy_object_stolen?(enemy_id, obj_index) if $game_system.enemy_object_stolen[enemy_id] == nil return false end result = $game_system.enemy_object_stolen[enemy_id] & (1 << obj_index) return (result != 0) end #-------------------------------------------------------------------------- # ¡Û ðäéç?÷¾àâïÒ # enemy_id : îØ ID # enabled : true..ðäéç?ªß false..Ú±ðäéç #-------------------------------------------------------------------------- def set_enemy_encountered(enemy_id, enabled = true) $game_system.enemy_encountered[enemy_id] = enabled unless enabled # Ú±ðäéçªÊªé?÷ò?ªß«Õ«é«°ªâú°ð¶ set_enemy_defeated(enemy_id, false) end end #-------------------------------------------------------------------------- # ¡Û ?÷ò?÷¾àâïÒ # enemy_id : îØ ID # enabled : true..?÷ò?ªß false..Ú±?÷ò #-------------------------------------------------------------------------- def set_enemy_defeated(enemy_id, enabled = true) $game_system.enemy_defeated[enemy_id] = enabled if enabled # ?÷ò?ªßªÊªéðäéç«Õ«é«°ªâ«»«Ã«È set_enemy_encountered(enemy_id) end end #-------------------------------------------------------------------------- # ¡Û «¢«¤«Æ«à«É«í«Ã«×?÷¾àâïÒ # enemy_id : îØ ID # item_index : «É«í«Ã«×«¢«¤«Æ«àÛã? # enabled : true..«É«í«Ã«×?ªß false..Ú±«É«í«Ã«× #-------------------------------------------------------------------------- def set_enemy_item_dropped(enemy_id, item_index, enabled = true) if $game_system.enemy_item_dropped[enemy_id] == nil $game_system.enemy_item_dropped[enemy_id] = 0 end if enabled $game_system.enemy_item_dropped[enemy_id] |= (1 << item_index) else $game_system.enemy_item_dropped[enemy_id] &= ~(1 << item_index) end end #-------------------------------------------------------------------------- # ¡Û ?ªßà÷Íí?÷¾àâïÒ # enemy_id : îØ ID # obj_index : «ª«Ö«¸«§«¯«ÈÛã? # enabled : true..à÷Íí?ªß false..Ú±à÷Íí #-------------------------------------------------------------------------- def set_enemy_object_stolen(enemy_id, obj_index, enabled = true) if $game_system.enemy_object_stolen[enemy_id] == nil $game_system.enemy_object_stolen[enemy_id] = 0 end if enabled $game_system.enemy_object_stolen[enemy_id] |= (1 << obj_index) else $game_system.enemy_object_stolen[enemy_id] &= ~(1 << obj_index) end end #-------------------------------------------------------------------------- # ¡Û ?Êü«ê«»«Ã«È #-------------------------------------------------------------------------- def reset_enemy_guide $game_system.enemy_encountered = [] $game_system.enemy_defeated = [] $game_system.enemy_item_dropped = [] $game_system.enemy_object_stolen = [] end #-------------------------------------------------------------------------- # ¡Û ?ÊüèÇà÷ #-------------------------------------------------------------------------- def complete_enemy_guide (1...$data_enemies.size).each { |i| set_enemy_encountered(i) set_enemy_defeated(i) enemy = $data_enemies[i] items = [enemy.drop_item1, enemy.drop_item2] if $imported["ExtraDropItem"] items += enemy.extra_drop_items end items.each_index { |j| set_enemy_item_dropped(i, j) } if $imported["Steal"] objs = enemy.steal_objects objs.each_index { |j| set_enemy_object_stolen(i, j) } end } end #-------------------------------------------------------------------------- # ¡Û ?ÊüªËùߪáªëª« # enemy_id : îØ ID #-------------------------------------------------------------------------- def enemy_guide_include?(enemy_id) return false unless KGC::EnemyGuide.enemy_show?(enemy_id) enemy = $data_enemies[enemy_id] return (enemy != nil && enemy.name != "") end #-------------------------------------------------------------------------- # ¡Û ðí¹ªëîتÎðú×¾?ö¢Ôð # variable_id : ö¢Ô𪷪¿ö·ªòÓÛìýª¹ªë??ªÎ ID #-------------------------------------------------------------------------- def get_all_enemies_number(variable_id = 0) n = 0 (1...$data_enemies.size).each { |i| n += 1 if enemy_guide_include?(i) } $game_variables[variable_id] = n if variable_id > 0 return n end #-------------------------------------------------------------------------- # ¡Û ðäé窷ª¿îتÎðú×¾?ö¢Ôð # variable_id : ö¢Ô𪷪¿ö·ªòÓÛìýª¹ªë??ªÎ ID #-------------------------------------------------------------------------- def get_encountered_enemies_number(variable_id = 0) n = 0 (1...$data_enemies.size).each { |i| if enemy_guide_include?(i) && $game_system.enemy_encountered[i] n += 1 end } $game_variables[variable_id] = n if variable_id > 0 return n end #-------------------------------------------------------------------------- # ¡Û ?÷òª·ª¿îتÎðú×¾?ö¢Ôð # variable_id : ö¢Ô𪷪¿ö·ªòÓÛìýª¹ªë??ªÎ ID #-------------------------------------------------------------------------- def get_defeated_enemies_number(variable_id = 0) n = 0 (1...$data_enemies.size).each { |i| if enemy_guide_include?(i) && $game_system.enemy_encountered[i] && $game_system.enemy_defeated[i] n += 1 end } $game_variables[variable_id] = n if variable_id > 0 return n end #-------------------------------------------------------------------------- # ¡Û «â«ó«¹«¿??ÊüèÇà÷ÓøªÎö¢Ôð # variable_id : ö¢Ô𪷪¿ö·ªòÓÛìýª¹ªë??ªÎ ID #-------------------------------------------------------------------------- def get_enemy_guide_completion(variable_id = 0) num = get_all_enemies_number value = (num > 0 ? (get_defeated_enemies_number * 100 / num) : 0) $game_variables[variable_id] = value if variable_id > 0 return value end #-------------------------------------------------------------------------- # ¡Û «â«ó«¹«¿??Êüû¼ªÓõóª· #-------------------------------------------------------------------------- def call_enemy_guide return if $game_temp.in_battle $game_temp.next_scene = :enemy_guide end end end class Game_Interpreter include KGC::Commands end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Vocab #============================================================================== module Vocab # «â«ó«¹«¿??Êü def self.enemy_guide return KGC::EnemyGuide::VOCAB_MENU_ENEMY_GUIDE end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á RPG::Enemy #============================================================================== class RPG::Enemy #-------------------------------------------------------------------------- # ¡Û «â«ó«¹«¿??ÊüªÎ«­«ã«Ã«·«åßæà÷ #-------------------------------------------------------------------------- def create_enemy_guide_cache @__enemy_guide_description = "" description_flag = false self.note.each_line { |line| case line when KGC::EnemyGuide::Regexp::Enemy::BEGIN_GUIDE_DESCRIPTION # ?Ù¥ÙþËÒã· description_flag = true when KGC::EnemyGuide::Regexp::Enemy::END_GUIDE_DESCRIPTION # ?Ù¥ÙþðûÖõ description_flag = false else if description_flag @__enemy_guide_description += line end end } end #-------------------------------------------------------------------------- # ¡Û ?Êü?Ù¥Ùþ #-------------------------------------------------------------------------- def enemy_guide_description create_enemy_guide_cache if @__enemy_guide_description == nil return @__enemy_guide_description end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Game_System #============================================================================== class Game_System #-------------------------------------------------------------------------- # ¡Ü ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_writer :enemy_encountered # ðäéç?ªß«Õ«é«° attr_writer :enemy_defeated # ?÷ò?ªß«Õ«é«° attr_writer :enemy_item_dropped # «¢«¤«Æ«à«É«í«Ã«×?ªß«Õ«é«° attr_writer :enemy_object_stolen # ?ªßà÷Íí?ªß«Õ«é«° #-------------------------------------------------------------------------- # ¡Û ðäéç?ªß«Õ«é«°ö¢Ôð #-------------------------------------------------------------------------- def enemy_encountered @enemy_encountered = [] if @enemy_encountered == nil return @enemy_encountered end #-------------------------------------------------------------------------- # ¡Û ?÷ò?ªß«Õ«é«°ö¢Ôð #-------------------------------------------------------------------------- def enemy_defeated @enemy_defeated = [] if @enemy_defeated == nil return @enemy_defeated end #-------------------------------------------------------------------------- # ¡Û «¢«¤«Æ«à«É«í«Ã«×?ªß«Õ«é«°ö¢Ôð #-------------------------------------------------------------------------- def enemy_item_dropped @enemy_item_dropped = [] if @enemy_item_dropped == nil return @enemy_item_dropped end #-------------------------------------------------------------------------- # ¡Û ?ªßà÷Íí?ªß«Õ«é«°ö¢Ôð #-------------------------------------------------------------------------- def enemy_object_stolen @enemy_object_stolen = [] if @enemy_object_stolen == nil return @enemy_object_stolen end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ¡Ü «ª«Ö«¸«§«¯«ÈôøÑ¢ûù # index : îØ«°«ë?«×?«¤«ó«Ç«Ã«¯«¹ # enemy_id : îØ«­«ã«é ID #-------------------------------------------------------------------------- alias initialize_KGC_EnemyGuide initialize def initialize(index, enemy_id) initialize_KGC_EnemyGuide(index, enemy_id) @original_ids = [] # ?ãóîñªÎ ID # ðäéç?ªß«Õ«é«°ªò«ª«ó KGC::Commands.set_enemy_encountered(enemy_id) unless hidden end #-------------------------------------------------------------------------- # ¡Ü «³«é«×«¹ªÎ?ú¼ #-------------------------------------------------------------------------- alias perform_collapse_KGC_EnemyGuide perform_collapse def perform_collapse last_collapsed = @collapse perform_collapse_KGC_EnemyGuide if !last_collapsed && @collapse # ?÷ò?ªß«Õ«é«°ªò«ª«ó KGC::Commands.set_enemy_defeated(enemy_id) # ?ãóîñªÎîتâ?÷ò?ªßªËª¹ªë if KGC::EnemyGuide::ORIGINAL_DEFEAT @original_ids.compact.each { |i| KGC::Commands.set_enemy_defeated(i) } end end end #-------------------------------------------------------------------------- # ¡Ü ?ãó # enemy_id : ?ãó໪ÎîØ«­«ã«é ID #-------------------------------------------------------------------------- alias transform_KGC_EnemyGuide transform def transform(enemy_id) # ?ãóîñªÎIDªòÜÁðí @original_ids << @enemy_id transform_KGC_EnemyGuide(enemy_id) # ?ãóý­ªÎîتâðäéç?ªßªËª¹ªë KGC::Commands.set_enemy_encountered(enemy_id) end #-------------------------------------------------------------------------- # ¡Ü ?ªì?÷¾àâïÒ #-------------------------------------------------------------------------- alias hidden_equal_KGC_EnemyGuide hidden= unless $@ def hidden=(value) hidden_equal_KGC_EnemyGuide(value) # õóúÞª·ª¿íÞùêªÏðäéç?ªß«Õ«é«°ªò«ª«ó KGC::Commands.set_enemy_encountered(enemy_id) unless value end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Game_Troop #============================================================================== class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # ¡Ü «É«í«Ã«×«¢«¤«Æ«àªÎÛÕÖªíÂà÷ #-------------------------------------------------------------------------- def make_drop_items drop_items = [] dead_members.each { |enemy| [enemy.drop_item1, enemy.drop_item2].each_with_index { |di, i| next if di.kind == 0 next if rand(di.denominator) != 0 if di.kind == 1 drop_items.push($data_items[di.item_id]) elsif di.kind == 2 drop_items.push($data_weapons[di.weapon_id]) elsif di.kind == 3 drop_items.push($data_armors[di.armor_id]) end # «É«í«Ã«×?ªß«Õ«é«°ªò«»«Ã«È KGC::Commands.set_enemy_item_dropped(enemy.enemy.id, i) } } return drop_items end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Window_Command #============================================================================== class Window_Command < Window_Selectable unless method_defined?(:add_command) #-------------------------------------------------------------------------- # ¡Û «³«Þ«ó«ÉªòõÚÊ¥ # õÚÊ¥ª·ª¿êÈöǪòÚ÷ª¹ #-------------------------------------------------------------------------- def add_command(command) @commands << command @item_max = @commands.size item_index = @item_max - 1 refresh_command draw_item(item_index) return item_index end #-------------------------------------------------------------------------- # ¡Û «³«Þ«ó«Éªò«ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def refresh_command buf = self.contents.clone self.height = [self.height, row_max * WLH + 32].max create_contents self.contents.blt(0, 0, buf, buf.rect) buf.dispose end #-------------------------------------------------------------------------- # ¡Û «³«Þ«ó«Éªò?ìý #-------------------------------------------------------------------------- def insert_command(index, command) @commands.insert(index, command) @item_max = @commands.size refresh_command refresh end #-------------------------------------------------------------------------- # ¡Û «³«Þ«ó«ÉªòÞûð¶ #-------------------------------------------------------------------------- def remove_command(command) @commands.delete(command) @item_max = @commands.size refresh end end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_EnemyGuideTop #------------------------------------------------------------------------------ # «â«ó«¹«¿??Êü?ØüªÇ¡¢èÇà÷Óøªòøúãƪ¹ªë«¦«£«ó«É«¦ªÇª¹¡£ #============================================================================== class Window_EnemyGuideTop < Window_Base #-------------------------------------------------------------------------- # ¡Ü «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- def initialize super(0, 0, 240, WLH * 4 + 32) self.height = WLH + 32 @duration = 0 @interval = KGC::EnemyGuide::INFO_INTERVAL refresh if KGC::EnemyGuide::USE_BACKGROUND_IMAGE self.opacity = 0 end if self.windowskin != nil bitmap = Bitmap.new(windowskin.width, windowskin.height) bitmap.blt(0, 0, windowskin, windowskin.rect) bitmap.clear_rect(80, 16, 32, 32) self.windowskin = bitmap end end #-------------------------------------------------------------------------- # ¡Ü ÷òÑ¥ #-------------------------------------------------------------------------- def dispose self.windowskin.dispose super end #-------------------------------------------------------------------------- # ¡Ü «ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def refresh self.contents.clear total = KGC::Commands.get_all_enemies_number encountered = KGC::Commands.get_encountered_enemies_number defeated = KGC::Commands.get_defeated_enemies_number text = sprintf("Àû°úÁ¶¿ì: %3d/%3d ",encountered, total) self.contents.draw_text(0, 0, width - 32, WLH, text, 1) self.contents.draw_text(0, WLH * 3, width - 32, WLH, text, 1) text = sprintf("°ÝÆÄ¿Ï·á: %3d/%3d", encountered, total) self.contents.draw_text(0, WLH, width - 32, WLH, text, 1) text = sprintf("¿Ï¼ºµµ: %3d%%", encountered * 100 / total) self.contents.draw_text(0, WLH * 2, width - 32, WLH, text, 1) end #-------------------------------------------------------------------------- # ¡Ü «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- def update @duration += 1 case @duration when @interval...(@interval + WLH) self.oy += 1 when (@interval + WLH) @duration = 0 if self.oy >= WLH * 3 self.oy = 0 end end end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_EnemyGuideList #------------------------------------------------------------------------------ # «â«ó«¹«¿??Êü?ØüªÇ¡¢«â«ó«¹«¿?ìé?ªòøúãƪ¹ªë«¦«£«ó«É«¦ªÇª¹¡£ #============================================================================== class Window_EnemyGuideList < Window_Selectable #-------------------------------------------------------------------------- # ¡Ü «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- def initialize super(0, WLH + 32, 240, Graphics.height - (WLH + 32)) self.index = 0 refresh if KGC::EnemyGuide::USE_BACKGROUND_IMAGE self.opacity = 0 self.height -= (self.height - 32) % WLH end end #-------------------------------------------------------------------------- # ¡Û àÔ?«â«ó«¹«¿?ªÎö¢Ôð #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- # ¡Û «¨«Í«ß?ªò«ê«¹«ÈªËùߪáªëª« # enemy_id : îØ ID #-------------------------------------------------------------------------- def include?(enemy_id) return KGC::Commands.enemy_guide_include?(enemy_id) end #-------------------------------------------------------------------------- # ¡Ü «ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def refresh @data = [] if KGC::EnemyGuide::ENEMY_ORDER_ID == nil # IDâ÷ enemy_list = 1...$data_enemies.size else # ò¦ïÒâ÷ enemy_list = KGC::EnemyGuide::ENEMY_ORDER_ID end enemy_list.each { |i| @data << $data_enemies[i] if include?(i) } @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # ¡Ü ú£ÙͪÎÙÚ? # index : ú£ÙÍÛã? #-------------------------------------------------------------------------- def draw_item(index) enemy = @data[index] self.contents.font.color = normal_color unless KGC::Commands.enemy_encountered?(enemy.id) self.contents.font.color.alpha = 128 end rect = item_rect(index) self.contents.clear_rect(rect) if KGC::EnemyGuide::SHOW_SERIAL_NUMBER s_num = sprintf(KGC::EnemyGuide::SERIAL_NUM_FORMAT, KGC::EnemyGuide::SERIAL_NUM_FOLLOW ? (index + 1) : enemy.id) end text = (KGC::EnemyGuide::SHOW_SERIAL_NUMBER ? s_num : "") if KGC::Commands.enemy_encountered?(enemy.id) # ðäéç?ªß text += enemy.name else # Ú±ðäéç mask = KGC::EnemyGuide::UNKNOWN_ENEMY_NAME if mask.scan(/./).size == 1 mask = mask * enemy.name.scan(/./).size end text += mask end self.contents.draw_text(rect, text) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_EnemyGuideStatus #------------------------------------------------------------------------------ # «â«ó«¹«¿??Êü?ØüªÇ¡¢«¹«Æ?«¿«¹ªòøúãƪ¹ªë«¦«£«ó«É«¦ªÇª¹¡£ #============================================================================== class Window_EnemyGuideStatus < Window_Base #-------------------------------------------------------------------------- # ¡Û ïÒ? #-------------------------------------------------------------------------- PAGES = 3 # «Ú?«¸? #-------------------------------------------------------------------------- # ¡Ü ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_reader :enemy # øúãÆ«¨«Í«ß? #-------------------------------------------------------------------------- # ¡Ü «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- def initialize super(240, 0, Graphics.width - 240, Graphics.height) self.enemy = nil self.z = 100 if KGC::EnemyGuide::USE_BACKGROUND_IMAGE self.opacity = 0 end @show_sprite = false @enemy_sprite = Sprite.new @enemy_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height) @enemy_sprite.x = 0 @enemy_sprite.y = 0 @enemy_sprite.z = self.z + 100 @enemy_sprite.visible = false end #-------------------------------------------------------------------------- # ¡Ü ÷òÑ¥ #-------------------------------------------------------------------------- def dispose super @enemy_sprite.bitmap.dispose @enemy_sprite.dispose end #-------------------------------------------------------------------------- # ¡Û øúãÆ«¨«Í«ß?àâïÒ #-------------------------------------------------------------------------- def enemy=(enemy) @enemy = enemy refresh end #-------------------------------------------------------------------------- # ¡Û øúãÆï×ÜÃï·ªêô𪨠# shamt : ì¹ÔÑ«Ú?«¸? #-------------------------------------------------------------------------- def shift_info_type(shamt) n = self.ox + (width - 32) * shamt self.ox = [[n, 0].max, (width - 32) * (PAGES - 1)].min end #-------------------------------------------------------------------------- # ¡Û «¹«×«é«¤«ÈøúãÆï·ôð #-------------------------------------------------------------------------- def switch_sprite @show_sprite = !@show_sprite @enemy_sprite.visible = @show_sprite end #-------------------------------------------------------------------------- # ¡Ü «ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def refresh original_width = self.width self.width = original_width * PAGES - (32 * (PAGES - 1)) create_contents self.width = original_width draw_enemy_sprite return if enemy == nil self.contents.font.color = normal_color # ðäé窷ªÆª¤ªÊª¤ unless KGC::Commands.enemy_encountered?(enemy.id) self.contents.font.color.alpha = 128 dy = (height - 32) / 2 dy -= dy % WLH self.contents.draw_text(0, dy, width - 32, WLH, KGC::EnemyGuide::UNENCOUNTERED_DATA, 1) self.contents.blt(width - 32, 0, self.contents, self.contents.rect) return end draw_status end #-------------------------------------------------------------------------- # ¡Û «¹«Æ?«¿«¹ÙÚ? #-------------------------------------------------------------------------- def draw_status # Page 1 dy = draw_basic_info(0, 0) dy = draw_parameter2(0, dy) dy = draw_element(0, dy, 2) dy = draw_state(0, dy, 2) draw_prize(0, dy) # Page 2 dx = width - 32 dy = draw_basic_info(dx, 0) max_rows = (self.height - dy - 32) / WLH rows = (max_rows + 1) / 2 dy = draw_drop_item(dx, dy, rows) draw_steal_object(dx, dy, max_rows - rows) # Page 3 dx = (width - 32) * 2 dy = draw_basic_info(dx, 0) draw_description(dx, dy) end #-------------------------------------------------------------------------- # ¡Û ÐñÜâï×ÜÃ? # dx, dy : ÙÚ?à» X, Y #-------------------------------------------------------------------------- def draw_basic_info(dx, dy) draw_graphic(dx, dy) draw_parameter1(dx + 112, dy) return dy + 96 end #-------------------------------------------------------------------------- # ¡Û «°«é«Õ«£«Ã«¯ÙÚ? # dx, dy : ÙÚ?à» X, Y #-------------------------------------------------------------------------- def draw_graphic(dx, dy) buf = Bitmap.new(108, 96) bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue) rect = Rect.new(0, 0, bitmap.width / 1, bitmap.height / 1) rect.x = (108 - rect.width) / 2 rect.y = (96 - rect.height) / 2 buf.stretch_blt(rect, bitmap, bitmap.rect) self.contents.blt(dx, dy, buf, buf.rect) buf.dispose end #-------------------------------------------------------------------------- # ¡Û «¨«Í«ß?«¹«×«é«¤«ÈÙÚ? #-------------------------------------------------------------------------- def draw_enemy_sprite return if @enemy_sprite == nil @enemy_sprite.bitmap.fill_rect(@enemy_sprite.bitmap.rect, Color.new(0, 0, 0, 160)) return if enemy == nil || !KGC::Commands.enemy_encountered?(enemy.id) bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue) dx = (Graphics.width - bitmap.width) / 2 dy = (Graphics.height - bitmap.height) / 2 @enemy_sprite.bitmap.blt(dx, dy, bitmap, bitmap.rect) end #-------------------------------------------------------------------------- # ¡Û «Ñ«é«á?«¿ÙÚ? - 1 # dx, dy : ÙÚ?à» X, Y #-------------------------------------------------------------------------- def draw_parameter1(dx, dy) # Ù£îñ, HP, MP param = {} if KGC::Commands.enemy_encountered?(enemy.id) param[:maxhp] = enemy.maxhp param[:maxmp] = enemy.maxmp if $imported["BattleCount"] param[:defeat_count] = KGC::Commands.get_defeat_count(enemy.id) end else param[:maxhp] = param[:maxmp] = KGC::EnemyGuide::UNDEFEATED_PARAMETER param[:defeat_count] = 0 end self.contents.font.color = normal_color self.contents.draw_text(dx, dy, width - 144, WLH, enemy.name) self.contents.font.color = system_color self.contents.draw_text(dx, dy + WLH, 80, WLH, Vocab.hp) self.contents.draw_text(dx, dy + WLH * 2, 80, WLH, Vocab.mp) if $imported["BattleCount"] self.contents.draw_text(dx, dy + WLH * 3, 80, WLH, KGC::EnemyGuide::PARAMETER_NAME[:defeat_count]) end self.contents.font.color = normal_color self.contents.draw_text(dx + 88, dy + WLH, 64, WLH, param[:maxhp], 2) self.contents.draw_text(dx + 88, dy + WLH * 2, 64, WLH, param[:maxmp], 2) if $imported["BattleCount"] self.contents.draw_text(dx + 88, dy + WLH * 3, 64, WLH, param[:defeat_count], 2) end end #-------------------------------------------------------------------------- # ¡Û «Ñ«é«á?«¿ÙÚ? - 2 # dx, dy : ÙÚ?à» X, Y #-------------------------------------------------------------------------- def draw_parameter2(dx, dy) # ATK ¢¦ AGI param = {} if KGC::Commands.enemy_encountered?(enemy.id) param[:atk] = enemy.atk param[:def] = enemy.def param[:spi] = enemy.spi param[:agi] = enemy.agi else param[:atk] = param[:def] = param[:spi] = param[:agi] = KGC::EnemyGuide::UNDEFEATED_PARAMETER end dw = (width - 32) / 2 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 80, WLH, Vocab.atk) self.contents.draw_text(dx + dw, dy, 80, WLH, Vocab.def) self.contents.draw_text(dx, dy + WLH, 80, WLH, Vocab.spi) self.contents.draw_text(dx + dw, dy + WLH, 80, WLH, Vocab.agi) dx += 80 self.contents.font.color = normal_color self.contents.draw_text(dx, dy, 48, WLH, param[:atk], 2) self.contents.draw_text(dx + dw, dy, 48, WLH, param[:def], 2) self.contents.draw_text(dx , dy + WLH, 48, WLH, param[:spi], 2) self.contents.draw_text(dx + dw, dy + WLH, 48, WLH, param[:agi], 2) return dy + WLH * 2 end #-------------------------------------------------------------------------- # ¡Û ?àõÙÚ? # dx, dy : ÙÚ?à» X, Y # rows : ú¼? #-------------------------------------------------------------------------- def draw_element(dx, dy, rows = 1) new_dy = dy + WLH * (rows * 2) self.contents.font.color = system_color self.contents.draw_text(dx, dy, 80, WLH, KGC::EnemyGuide::PARAMETER_NAME[:weak_element]) self.contents.draw_text(dx, dy + WLH * rows, 80, WLH, KGC::EnemyGuide::PARAMETER_NAME[:resist_element]) return new_dy unless KGC::Commands.enemy_encountered?(enemy.id) cols = (width - 112) / 24 # å°ïÃ?àõ draw_icon_list(dx + 80, dy, rows, cols, KGC::EnemyGuide::CHECK_ELEMENT_LIST, Proc.new { |i| enemy.element_ranks[i] < 3 }, Proc.new { |i| KGC::EnemyGuide::ELEMENT_ICON[i] }) # Ò±àõ?àõ draw_icon_list(dx + 80, dy + WLH * rows, rows, cols, KGC::EnemyGuide::CHECK_ELEMENT_LIST, Proc.new { |i| enemy.element_ranks[i] > 3 }, Proc.new { |i| KGC::EnemyGuide::ELEMENT_ICON[i] }) return new_dy end #-------------------------------------------------------------------------- # ¡Û «¢«¤«³«ó«ê«¹«ÈÙÚ? # dx, dy : ÙÚ?à» X, Y # rows, cols : «¢«¤«³«óú¼/Öª? # item_list : ÙÚ??ßڪΫ꫹«È # cond_proc : ÙÚ??Ëì Proc # index_proc : «¢«¤«³«ó index ö¢ÔðéÄ Proc #-------------------------------------------------------------------------- def draw_icon_list(dx, dy, rows, cols, item_list, cond_proc, index_proc) nc = 0 # úÞÎÖª? nr = 0 # úÞÎú¼? item_list.each { |item| next if item == nil next unless cond_proc.call(item) icon_index = index_proc.call(item) next if icon_index == nil || icon_index == 0 draw_icon(icon_index, dx + nc * 24, dy + nr * 24) nc += 1 if nc == cols # ó­ªÎú¼ªØ nc = 0 nr += 1 break if nr == rows # ú¼ð¤ùÚ«ª?«Ð? end } end #-------------------------------------------------------------------------- # ¡Û «¹«Æ?«ÈÙÚ? # dx, dy : ÙÚ?à» X, Y # rows : ú¼? #-------------------------------------------------------------------------- def draw_state(dx, dy, rows = 1) new_dy = dy + WLH * (rows * 2) self.contents.font.color = system_color self.contents.draw_text(dx, dy, 80, WLH, KGC::EnemyGuide::PARAMETER_NAME[:weak_state]) self.contents.draw_text(dx, dy + WLH * rows, 80, WLH, KGC::EnemyGuide::PARAMETER_NAME[:resist_state]) return new_dy unless KGC::Commands.enemy_encountered?(enemy.id) cols = (width - 112) / 24 # å°ï빫Æ?«È draw_icon_list(dx + 80, dy, rows, cols, $data_states, Proc.new { |i| enemy.state_ranks[i.id] < 3 }, Proc.new { |i| i.icon_index }) # Ùí?«¹«Æ?«È draw_icon_list(dx + 80, dy + WLH * rows, rows, cols, $data_states, Proc.new { |i| enemy.state_ranks[i.id] == 6 }, Proc.new { |i| i.icon_index }) return new_dy end #-------------------------------------------------------------------------- # ¡Û EXP, Gold ÙÚ? # dx, dy : ÙÚ?à» X, Y #-------------------------------------------------------------------------- def draw_prize(dx, dy) param = {} if KGC::Commands.enemy_encountered?(enemy.id) param[:exp] = enemy.exp param[:gold] = enemy.gold param[:ap] = enemy.ap if $imported["EquipLearnSkill"] else param[:exp] = param[:gold] = param[:ap] = KGC::EnemyGuide::UNDEFEATED_PARAMETER end dw = (width - 32) / 2 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 80, WLH, KGC::EnemyGuide::PARAMETER_NAME[:exp]) self.contents.draw_text(dx + dw, dy, 80, WLH, Vocab.gold) if $imported["EquipLearnSkill"] self.contents.draw_text(dx, dy + WLH, 80, WLH, Vocab.ap) end # EXP, Gold dx += 76 self.contents.font.color = normal_color self.contents.draw_text(dx, dy, 52, WLH, param[:exp], 2) self.contents.draw_text(dx + dw, dy, 52, WLH, param[:gold], 2) if $imported["EquipLearnSkill"] self.contents.draw_text(dx, dy + WLH, 52, WLH, param[:ap], 2) end return dy + WLH * 2 end #-------------------------------------------------------------------------- # ¡Û «É«í«Ã«×«¢«¤«Æ«àÙÚ? # dx, dy : ÙÚ?à» X, Y # rows : ú¼? #-------------------------------------------------------------------------- def draw_drop_item(dx, dy, rows) new_dy = dy + WLH * rows dw = (width - 32) / 2 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 128, WLH, KGC::EnemyGuide::PARAMETER_NAME[:treasure], 1) self.contents.draw_text(dx + dw, dy, 128, WLH, KGC::EnemyGuide::PARAMETER_NAME[:drop_prob], 2) return new_dy unless KGC::Commands.enemy_encountered?(enemy.id) # «ê«¹«ÈíÂà÷ drop_items = [enemy.drop_item1, enemy.drop_item2] if $imported["ExtraDropItem"] drop_items += enemy.extra_drop_items end drop_items.delete_if { |i| i.kind == 0 } if drop_items.size >= rows drop_items = drop_items[0...(rows - 1)] end dy += WLH drop_items.each_with_index { |item, i| # «¢«¤«Æ«àÙ£ÙÚ? case item.kind when 0 next when 1 drop_item = $data_items[item.item_id] when 2 drop_item = $data_weapons[item.weapon_id] when 3 drop_item = $data_armors[item.armor_id] end if KGC::Commands.enemy_item_dropped?(enemy.id, i) draw_item_name(drop_item, dx, dy) else draw_masked_item_name(drop_item, dx, dy) end # «É«í«Ã«×áãÙÚ? if $imported["ExtraDropItem"] && item.drop_prob > 0 text = sprintf("%d%%", item.drop_prob) else text = "1/#{item.denominator}" end self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2) dy += WLH } return new_dy end #-------------------------------------------------------------------------- # ¡Û «¢«¤«Æ«àÙ£ªò«Þ«¹«¯ª·ªÆÙÚ? # item : «¢«¤«Æ«à («¹«­«ë¡¢ÙëÐï¡¢ÛÁÎýªÇªâʦ) # x : ÙÚ?à» X ñ¨øö # y : ÙÚ?à» Y ñ¨øö # enabled : êó?«Õ«é«°¡£false ªÎªÈª­Úâ÷âÙ¥ªÇÙÚ? #-------------------------------------------------------------------------- def draw_masked_item_name(item, x, y, enabled = true) return if item == nil draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 mask = KGC::EnemyGuide::UNDROPPED_ITEM_NAME text = KGC.mask_string(item.name, mask) self.contents.draw_text(x + 24, y, 172, WLH, text) end #-------------------------------------------------------------------------- # ¡Û ?ªáªë«ª«Ö«¸«§«¯«ÈÙÚ? # dx, dy : ÙÚ?à» X, Y # rows : ú¼? #-------------------------------------------------------------------------- def draw_steal_object(dx, dy, rows) return unless $imported["Steal"] new_dy = dy + WLH * rows dw = (width - 32) / 2 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 128, WLH, KGC::EnemyGuide::PARAMETER_NAME[:steal_obj], 1) self.contents.draw_text(dx + dw, dy, 128, WLH, KGC::EnemyGuide::PARAMETER_NAME[:steal_prob], 2) return new_dy unless KGC::Commands.enemy_encountered?(enemy.id) # «ê«¹«ÈíÂà÷ steal_objects = enemy.steal_objects.clone if steal_objects.size >= rows steal_objects = steal_objects[0...(rows - 1)] end dy += WLH steal_objects.each_with_index { |obj, i| if obj.kind == 4 # Gold if KGC::Commands.enemy_object_stolen?(enemy.id, i) text = sprintf("%d%s", obj.gold, Vocab.gold) else mask = KGC::EnemyGuide::UNDROPPED_ITEM_NAME text = KGC.mask_string("aaa", mask) end self.contents.draw_text(dx + 24, dy, dw, WLH, text) else # Item case obj.kind when 1 item = $data_items[obj.item_id] when 2 item = $data_weapons[obj.weapon_id] when 3 item = $data_armors[obj.armor_id] end if KGC::Commands.enemy_object_stolen?(enemy.id, i) draw_item_name(item, dx, dy) else draw_masked_item_name(item, dx, dy) end end # à÷ÍíáãÙÚ? if obj.success_prob > 0 text = sprintf("%d%%", obj.success_prob) else text = "1/#{obj.denominator}" end self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2) dy += WLH } return new_dy end #-------------------------------------------------------------------------- # ¡Û ?Ù¥ÙþÙÚ? # dx, dy : ÙÚ?à» X, Y #-------------------------------------------------------------------------- def draw_description(dx, dy) return unless KGC::Commands.enemy_encountered?(enemy.id) dx += 4 enemy.enemy_guide_description.each_line { |line| self.contents.draw_text(dx, dy, width - 32, WLH, line.chomp) dy += WLH } end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Map #============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # ¡Ü ?Øüï·ªêô𪨪Î?ú¼ #-------------------------------------------------------------------------- alias update_scene_change_KGC_EnemyGuide update_scene_change def update_scene_change return if $game_player.moving? # «×«ì«¤«ä?ªÎì¹ÔÑñ飿 if $game_temp.next_scene == :enemy_guide call_enemy_guide return end update_scene_change_KGC_EnemyGuide end #-------------------------------------------------------------------------- # ¡Û «â«ó«¹«¿??ÊüªØªÎï·ªêô𪨠#-------------------------------------------------------------------------- def call_enemy_guide $game_temp.next_scene = nil $scene = Scene_EnemyGuide.new(0, Scene_EnemyGuide::HOST_MAP) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Menu #============================================================================== class Scene_Menu < Scene_Base if KGC::EnemyGuide::USE_MENU_ENEMY_GUIDE_COMMAND #-------------------------------------------------------------------------- # ¡Ü «³«Þ«ó«É«¦«£«ó«É«¦ªÎíÂà÷ #-------------------------------------------------------------------------- alias create_command_window_KGC_EnemyGuide create_command_window def create_command_window create_command_window_KGC_EnemyGuide return if $imported["CustomMenuCommand"] @__command_enemy_guide_index = @command_window.add_command(Vocab.enemy_guide) if @command_window.oy > 0 @command_window.oy -= Window_Base::WLH end @command_window.index = @menu_index end end #-------------------------------------------------------------------------- # ¡Ü «³«Þ«ó«ÉàÔ?ªÎÌÚãæ #-------------------------------------------------------------------------- alias update_command_selection_KGC_EnemyGuide update_command_selection def update_command_selection current_menu_index = @__command_enemy_guide_index call_enemy_guide_flag = false if Input.trigger?(Input::C) case @command_window.index when @__command_enemy_guide_index # «â«ó«¹«¿??Êü call_enemy_guide_flag = true end end # «â«ó«¹«¿??ÊüªËì¹ú¼ if call_enemy_guide_flag Sound.play_decision $scene = Scene_EnemyGuide.new(@__command_enemy_guide_index, Scene_EnemyGuide::HOST_MENU) return end update_command_selection_KGC_EnemyGuide end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Scene_EnemyGuide #------------------------------------------------------------------------------ # «â«ó«¹«¿??Êü?ØüªÎ?×âªòú¼ª¦«¯«é«¹ªÇª¹¡£ #============================================================================== class Scene_EnemyGuide < Scene_Base HOST_MENU = 0 HOST_MAP = 1 #-------------------------------------------------------------------------- # ¡Ü «ª«Ö«¸«§«¯«ÈôøÑ¢ûù # menu_index : «³«Þ«ó«ÉªÎ««?«½«ëôøÑ¢êÈöÇ # host_scene : û¼ªÓõóª·êª (0..«á«Ë«å? 1..«Þ«Ã«×) #-------------------------------------------------------------------------- def initialize(menu_index = 0, host_scene = HOST_MENU) @menu_index = menu_index @host_scene = host_scene end #-------------------------------------------------------------------------- # ¡Ü ËÒã·?×â #-------------------------------------------------------------------------- def start super create_menu_background if KGC::EnemyGuide::USE_BACKGROUND_IMAGE @back_sprite = Sprite.new begin @back_sprite.bitmap = Cache.system(KGC::EnemyGuide::BACKGROUND_FILENAME) rescue @back_sprite.bitmap = Bitmap.new(32, 32) end end @top_window = Window_EnemyGuideTop.new @enemy_window = Window_EnemyGuideList.new @status_window = Window_EnemyGuideStatus.new @status_window.enemy = @enemy_window.item end #-------------------------------------------------------------------------- # ¡Ü ðûÖõ?×â #-------------------------------------------------------------------------- def terminate super dispose_menu_background if @back_sprite != nil @back_sprite.bitmap.dispose @back_sprite.dispose end @top_window.dispose @enemy_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # ¡Û ꪪÎ?ØüªØ?ªë #-------------------------------------------------------------------------- def return_scene case @host_scene when HOST_MENU $scene = Scene_Menu.new(@menu_index) when HOST_MAP $scene = Scene_Map.new end end #-------------------------------------------------------------------------- # ¡Ü «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- def update super update_menu_background @top_window.update @enemy_window.update @status_window.update if @enemy_window.active update_enemy_selection end end #-------------------------------------------------------------------------- # ¡Û «¨«Í«ß?àÔ?ªÎÌÚãæ #-------------------------------------------------------------------------- def update_enemy_selection if @last_index != @enemy_window.index @status_window.enemy = @enemy_window.item @last_index = @enemy_window.index end if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::A) || Input.trigger?(Input::C) # «¹«×«é«¤«ÈøúãÆï·ôð Sound.play_decision @status_window.switch_sprite elsif Input.trigger?(Input::LEFT) # ñ§«Ú?«¸ Sound.play_cursor @status_window.shift_info_type(-1) elsif Input.trigger?(Input::RIGHT) # éÓ«Ú?«¸ Sound.play_cursor @status_window.shift_info_type(1) end end end