#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ¡ß ¸¹Àº »ç¶÷ ÆÄƼ - KGC_LargeParty ¡ß VX ¡ß #_/ ¡Þ Last update : 2008/04/27 ¡Þ #_/---------------------------------------------------------------------------- #_/ 5¸í ÀÌ»óÀÇ ´ë±Ô¸ð ÆÄƼ¸¦ ±¸Ãà °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ¡Ú Ä¿½ºÅ͸¶ÀÌÁî Ç׸ñ - Customize ¡Ú #============================================================================== module KGC module LargeParty # ¡ß ÆÄƼ Æí¼º Çã°¡¸¦ ³ªÅ¸³»´Â ½ºÀ­Ä¡ ¹øÈ£ # ÀÌ ½ºÀ­Ä¡ÀÇ ON/OFF ±×¸®°í ÆÄƼ Æí¼ºÀÇ Çã°¡/ºÒÇã°¡ (À»)¸¦ ¹Ù²ß´Ï´Ù. PARTYFORM_SWITCH = 1 # ¡ß ÀüÅõÁßÀÇ ÆÄƼ Æí¼º Çã°¡¸¦ ³ªÅ¸³»´Â ½ºÀ­Ä¡ ¹øÈ£ # ¡è(¿Í)°ú ´Ù¸¥ ¹øÈ£¸¦ ÁöÁ¤Çϸé, ÀüÅõÁ߸¸ÀÇ ±³Ã¼ °¡ºÎ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. BATTLE_PARTYFORM_SWITCH = 1 # ¡ß µðÆúÆ®ÀÇ Æí¼º Çã°¡ Ç÷¡±× # true (À¸)·Î Çϸé, ¡¸´º °ÔÀÓ¡¹¼±Åýÿ¡ ¾çÂÊ ¸ðµÎÀÇ ÆÄƼ Æí¼º Çã°¡ ½ºÀ­Ä¡°¡ # ÀÚµ¿ÀûÀ¸·Î ON (ÀÌ)°¡ µË´Ï´Ù. DEFAULT_PARTYFORM_ENABLED = true # ¡ß ÀüÅõ ¸â¹ö ÃÖ´ë¼ö (µðÆúƮġ) # 5 ÀÌ»óÀ¸·Î Çϸé, ÀüÅõ È­¸éÀÇ ½ºÅ×ÀÌÅͽº°¡ ¾à°£ ºÁ ±«·Î¿öÁý´Ï´Ù. MAX_BATTLE_MEMBERS = 5 # ¡ß ÆÄƼ ¸â¹ö ÃÖ´ë¼ö # Game_Party::MAX_MEMBERS (À»)¸¦ µ¡¾²±âÇÕ´Ï´Ù. # 100 ÀÌ»óÀ¸·Î Çϸé [Window_MenuStatus] ÇÏÁö¸¸ ¹ö±×. MAX_MEMBERS = 99 # ¡ß °íÁ¤ ¸â¹öÀÇ ÁÙ¼­ ¹Ù²Ù¾î¸¦ ±ÝÁö # ½ºÅ©¸³Æ®·ÎºÎÅÍÀÇ Á¶ÀÛ ÀÌ¿Ü¿¡¼­´Â ÁÙ¼­ ¹Ù²Ù¾î ÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. FORBID_CHANGE_SHIFT_FIXED = false # ¡ß ´ë±â ¸â¹öÀÇ ¹è°æ»ö # »öÀ» ¹Ù²ÙÁö ¾Ê´Â °æ¿ì´Â Color.new(0, 0, 0, 0) STAND_BY_COLOR = Color.new(0, 0, 0, 128) # ¡ß °íÁ¤ ¸â¹öÀÇ ¹è°æ»ö FIXED_COLOR = Color.new(255, 128, 64, 96) # ¡ß ÁÙ¼­ ¹Ù²Ù¾î ¶§ÀÇ ¹è°æ»ö SELECTED_COLOR = Color.new(64, 255, 128, 128) # ¡ß ÆÄƼ Æí¼º ¹öÆ° (¸Þ´º È­¸é¿ë) # ¸Þ´º È­¸é¿¡¼­ ÀÌ ¹öÆ°À» ´©¸£¸é, ÆÄƼ Æí¼º È­¸éÀ¸·Î ÀÌÇàÇÕ´Ï´Ù. # »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì´Â nil MENU_PARTYFORM_BUTTON = Input::A # ¡ß ¸Þ´º È­¸é¿¡ ÆÄƼ Æí¼º Ä¿¸àµå¸¦ Ãß°¡ÇÑ´Ù # Ãß°¡ÇÏ´Â Àå¼Ò´Â, ¸Þ´º Ä¿¸àµåÀÇ ÃÖÇϺÎÀÔ´Ï´Ù. # ´Ù¸¥ ºÎºÐ¿¡ Ãß°¡ÇÏ°í ½ÍÀ¸¸é,¡ìÄ¿½ºÅÒ ¸Þ´º Ä¿¸àµå¡í (À»)¸¦ ÀÌ¿ëÇϽʽÿÀ. USE_MENU_PARTYFORM_COMMAND = true # ¡ß ¸Þ´º È­¸éÀÇ ÆÄƼ Æí¼º Ä¿¸àµåÀÇ ¸íĪ VOCAB_MENU_PARTYFORM = "Party" # ¡ß ÀüÅõÁß¿¡ ÆÄƼ Æí¼º Ä¿¸àµå¸¦ »ç¿ëÇÑ´Ù # Ãß°¡ÇÏ´Â Àå¼Ò´Â, ÆÄƼ Ä¿¸àµåÀÇ ÃÖÇϺÎ( ¡¸µµ¸ÁÄ£´Ù¡¹ÀÇ ¾Æ·¡)ÀÔ´Ï´Ù. USE_BATTLE_PARTYFORM = true # ¡ß ÀüÅõÁßÀÇ ÆÄƼ Æí¼º Ä¿¸àµåÀÇ ¸íĪ VOCAB_BATTLE_PARTYFORM = "±³Ã¼" # ¡ß Æí¼º È­¸éÀÇ Ä³¸¯ÅÍ ¹¦È­ »çÀÌÁî [Æø, ³ôÀÌ] # ¾×ÅÍÀÇ º¸Çà ±×·¡ÇÈÀÇ »çÀÌÁî¿¡ µû¶ó °íÃÄ ½á ÁÖ¼¼¿ä. PARTY_FORM_CHARACTER_SIZE = [40, 48] # ¡ß Æí¼º È­¸éÀÇ ÀüÅõ ¸â¹ö À©µµ¿ìÀÇ °ø³­¿¡ Ç¥½ÃÇÏ´Â ÅؽºÆ® BATTLE_MEMBER_BLANK_TEXT = "EMPTY" # ¡ß Æí¼º È­¸éÀÇ ÆÄƼ ¸â¹ö À©µµ¿ìÀÇ ÃÖ´ëÇà¼ö # ½ºÅ×ÀÌÅͽº À©µµ¿ì°¡ È­¸é¿¡¼­´Â ºÁ ³ª¿À´Â °æ¿ì´Â, # ÀÌ °ªÀ» 1 (À¸)·Î ÇØ ÁÖ¼¼¿ä. PARTY_MEMBER_WINDOW_ROW_MAX = 2 # ¡ß Æí¼º È­¸éÀÇ ÆÄƼ ¸â¹ö À©µµ¿ì¿¡ ÀüÅõ ¸â¹ö¸¦ Ç¥½ÃÇÑ´Ù SHOW_BATTLE_MEMBER_IN_PARTY = false # ¡ß Æí¼º È­¸éÀÇ ÆÄƼ ¸â¹ö À©µµ¿ìÀÇ °ø³­¿¡ Ç¥½ÃÇÏ´Â ÅؽºÆ® PARTY_MEMBER_BLANK_TEXT = "" # ¡ß Æí¼º È­¸éÀÇ Ä¸¼Ç À©µµ¿ìÀÇ Æø CAPTION_WINDOW_WIDTH = 192 # ¡ß Æí¼º È­¸éÀÇ ÀüÅõ ¸â¹ö À©µµ¿ìÀÇ Ä¸¼Ç BATTLE_MEMBER_CAPTION = "ÀüÅõ ¸â¹ö" if SHOW_BATTLE_MEMBER_IN_PARTY # ¡ß Æí¼º È­¸éÀÇ ÆÄƼ ¸â¹ö À©µµ¿ìÀÇ Ä¸¼Ç # SHOW_BATTLE_MEMBER_IN_PARTY = true ¶§ PARTY_MEMBER_CAPTION = "ÆÄƼ ¸â¹ö" else # ¡ß Æí¼º È­¸éÀÇ ÆÄƼ ¸â¹ö À©µµ¿ìÀÇ Ä¸¼Ç # SHOW_BATTLE_MEMBER_IN_PARTY = false ¶§ PARTY_MEMBER_CAPTION = "´ë±â ¸â¹ö" end # ¡ß Æí¼º È®ÀÎ À©µµ¿ìÀÇ Æø CONFIRM_WINDOW_WIDTH = 160 # ¡ß Æí¼º È®ÀÎ À©µµ¿ìÀÇ ¹®ÀÚ¿­ # ¡ØÄ¿¸àµå¼ö¡¤Â÷·Ê¸¦ º¯°æÇÏ¸é ¹ö±×. CONFIRM_WINDOW_COMMANDS = ["¿Ï·á", "ÁßÁö", "Ãë¼Ò"] # ¡ß ¼ó È­¸éÀÇ ½ºÅ×ÀÌÅͽº À©µµ¿ì ½ºÅ©·Ñ½Ã¿¡ »ç¿ëÇÏ´Â ¹öÆ° # ÀÌ ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È, »óÇÏ ¹öÆ°À¸·Î ½ºÅ©·Ñ ÇÒ ¼ö ÀÖ½À´Ï´Ù. # ½ºÅ©·ÑÀ» ¹«È¿·Î ÇÏ´Â °æ¿ì´Â nil (À»)¸¦ ÁöÁ¤. # ¡ìÇïÇÁ À©µµ¿ì ±â´ÉÈ®Àå¡íº´¿ë½Ã´Â, À§¿¡ µµÀÔÇÑ °ÍÀ» ¿ì¼±. SHOP_STATUS_SCROLL_BUTTON = Input::A # ¡ß ´ë±â ¸â¹ö ȹµæ °æÇèÄ¡ ºñÀ²¡¼´ÜÀ§£º¢¶(õºÐÀ² 1¢¶=0.1%)¡½ # 500 (ÀÌ)¶ó¸é 50.0% ÀÔ´Ï´Ù. STAND_BY_EXP_RATE = 500 # ¡ß °á°ú È­¸é¿¡¼­ ´ë±â ¸â¹öÀÇ ·¹º§¾÷À» Ç¥½ÃÇÑ´Ù # false (À¸)·Î Çϸé, ÀüÅõ ¸â¹ö¸¸ Ç¥½ÃÇÕ´Ï´Ù. SHOW_STAND_BY_LEVEL_UP = true # ¡ß ÀüÅõ ÀÌ¿Ü¿¡µµ ´ë±â ¸â¹ö¸¦ Ç¥½ÃÇÑ´Ù # true : ÀüÅõ ÀÌ¿Ü¿¡¼­´Â Ç×»ó Àü¿øÀ» Ç¥½Ã. # false : ±³Ã¼½Ã ÀÌ¿Ü´Â, ´ë±â ¸â¹ö¸¦ ¾ø´Â °ÍÀ¸·Î¼­ Ãë±ÞÇÑ´Ù. SHOW_STAND_BY_MEMBER_NOT_IN_BATTLE = true end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú $imported = {} if $imported == nil $imported["LargeParty"] = true #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à KGC::Commands #============================================================================== module KGC module Commands # ¸â¹öÀÇ ¼ÒÆ® Çü½Ä SORT_BY_ID = 0 # ID¼ø SORT_BY_NAME = 1 # À̸§¼ø SORT_BY_LEVEL = 2 # ·¹º§¼ø¼­ module_function #-------------------------------------------------------------------------- # ¡Û ÆÄƼ Æí¼º È­¸éÀÇ È£Ãâ #-------------------------------------------------------------------------- def call_partyform return if $game_temp.in_battle $game_temp.next_scene = :partyform end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö ÃÖ´ë¼ö¸¦ ¼³Á¤ # value : Àοø¼ö (»ý·« ÇßÀ» °æ¿ì´Â µðÆúƮġ¸¦ »ç¿ë) #-------------------------------------------------------------------------- def set_max_battle_member_count(value = nil) $game_party.max_battle_member_count = value end #-------------------------------------------------------------------------- # ¡Û ÆÄƼ Àοø¼ö°¡ °¡µæÇÑ°¡ #-------------------------------------------------------------------------- def party_full? return $game_party.full? end #-------------------------------------------------------------------------- # ¡Û ÆÄƼ Æí¼º °¡ºÎ¸¦ ¼³Á¤ # enabled : À¯È¿ Ç÷¡±× (»ý·«½Ã : true) #-------------------------------------------------------------------------- def permit_partyform(enabled = true) $game_switches[KGC::LargeParty::PARTYFORM_SWITCH] = enabled end #-------------------------------------------------------------------------- # ¡Û ÀüÅõÁßÀÇ ÆÄƼ Æí¼º °¡ºÎ¸¦ ¼³Á¤ # enabled : À¯È¿ Ç÷¡±× (»ý·«½Ã : true) #-------------------------------------------------------------------------- def permit_battle_partyform(enabled = true) $game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH] = enabled end #-------------------------------------------------------------------------- # ¡Û ¾×ÅÍÀÇ °íÁ¤ »óŸ¦ ¼³Á¤ # actor_id : ¾×ÅÍ ID # fixed : °íÁ¤ Ç÷¡±× (»ý·«½Ã : true) #-------------------------------------------------------------------------- def fix_actor(actor_id, fixed = true) $game_party.fix_actor(actor_id, fixed) end #-------------------------------------------------------------------------- # ¡Û ÁÙ´ëü # ¸â¹öÀÇ index1 ¹ø°¿Í index2 ¹ø°¸¦ ¹Ù²ã ³Ö´Â´Ù #-------------------------------------------------------------------------- def change_party_shift(index1, index2) $game_party.change_shift(index1, index2) end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö Á¤·Ä (½Â¼ø) # sort_type : ¼ÒÆ® Çü½Ä (SORT_BY_xxx) # reverse : true (ÀÌ)¶ó¸é ³»¸²Â÷¼ø #-------------------------------------------------------------------------- def sort_party_member(sort_type = SORT_BY_ID, reverse = false) $game_party.sort_member(sort_type, reverse) end #-------------------------------------------------------------------------- # ¡Û ´ë±â ¸â¹öÀÇ ID (À»)¸¦ Ãëµæ #-------------------------------------------------------------------------- def get_stand_by_member_ids result = [] $game_party.stand_by_members.each { |actor| result << actor.id } return result end #-------------------------------------------------------------------------- # ¡Û ¾×ÅÍ°¡ ´ë±â ¸â¹öÀΰ¡ # actor_id : ¾×ÅÍ ID #-------------------------------------------------------------------------- def stand_by_member?(actor_id) return get_stand_by_member_ids.include?(actor_id) end #-------------------------------------------------------------------------- # ¡Û ¾×Å͸¦ ÀüÅõ ¸â¹ö¿¡ °¡¼¼ÇÑ´Ù # actor_id : ¾×ÅÍ ID # index : Ãß°¡ À§Ä¡ (»ý·«½Ã´Â ÃÖÈĹÌ) #-------------------------------------------------------------------------- def add_battle_member(actor_id, index = nil) $game_party.add_battle_member(actor_id, index) end #-------------------------------------------------------------------------- # ¡Û ¾×Å͸¦ ÀüÅõ ¸â¹ö·ÎºÎÅÍ Á¦¿ÜÇÑ´Ù # actor_id : ¾×ÅÍ ID #-------------------------------------------------------------------------- def remove_battle_member(actor_id) $game_party.remove_battle_member(actor_id) end #-------------------------------------------------------------------------- # ¡Û °íÁ¤ ¾×ÅÍ Àܸ̿¦ ÀüÅõ ¸â¹ö·ÎºÎÅÍ Á¦¿ÜÇÑ´Ù #-------------------------------------------------------------------------- def remove_all_battle_member $game_party.all_members.each { |actor| $game_party.remove_battle_member(actor.id) } end #-------------------------------------------------------------------------- # ¡Û ·£´ý Ãâ°Ý #-------------------------------------------------------------------------- def random_launch new_battle_members = $game_party.fixed_members candidates = $game_party.all_members - new_battle_members num = [$game_party.max_battle_member_count - new_battle_members.size, candidates.size].min return if num <= 0 # ·£´ý¿¡ ¼±ÅÃÇÑ´Ù ary = (0...candidates.size).to_a.sort_by { rand } ary[0...num].each { |i| new_battle_members << candidates[i] } $game_party.set_battle_member(new_battle_members) end end end class Game_Interpreter include KGC::Commands end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Vocab #============================================================================== module Vocab # ¡¸ÆÄƼ Æí¼º¡¹Ä¿¸àµå¸í (¸Þ´º) def self.partyform return KGC::LargeParty::VOCAB_MENU_PARTYFORM end # ¡¸ÆÄƼ Æí¼º¡¹Ä¿¸àµå¸í (ÀüÅõ) def self.partyform_battle return KGC::LargeParty::VOCAB_BATTLE_PARTYFORM end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ¡Û ÆÄƼ³» À妽º Ãëµæ #-------------------------------------------------------------------------- def party_index return $game_party.all_members.index(self) end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö³ª ÆÇÁ¤ #-------------------------------------------------------------------------- def battle_member? return $game_party.battle_members.include?(self) end #-------------------------------------------------------------------------- # ¡Û °íÁ¤ ¸â¹ö³ª ÆÇÁ¤ #-------------------------------------------------------------------------- def fixed_member? return $game_party.fixed_members.include?(self) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ¡Ü Á¤¼ö #-------------------------------------------------------------------------- MAX_MEMBERS = KGC::LargeParty::MAX_MEMBERS # ÃÖ´ë ÆÄƼ Àοø¼ö #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- alias initialize_KGC_LargeParty initialize def initialize initialize_KGC_LargeParty @max_battle_member_count = nil @battle_member_count = 0 @fixed_actors = [] end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö ÃÖ´ë¼öÃëµæ #-------------------------------------------------------------------------- def max_battle_member_count if @max_battle_member_count == nil return KGC::LargeParty::MAX_BATTLE_MEMBERS else return @max_battle_member_count end end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö ÃÖ´ë¼öº¯°æ #-------------------------------------------------------------------------- def max_battle_member_count=(value) if value.is_a?(Integer) value = [value, 1].max end @max_battle_member_count = value end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö¼öÃëµæ #-------------------------------------------------------------------------- def battle_member_count if @battle_member_count == nil @battle_member_count = @actors.size end @battle_member_count = [@battle_member_count, @actors.size, max_battle_member_count].min return @battle_member_count end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö¼ö¼³Á¤ #-------------------------------------------------------------------------- def battle_member_count=(value) @battle_member_count = [[value, 0].max, @actors.size, max_battle_member_count].min end #-------------------------------------------------------------------------- # ¡Ü ¸â¹öÀÇ Ãëµæ #-------------------------------------------------------------------------- alias members_KGC_LargeParty members def members if $game_temp.in_battle || !KGC::LargeParty::SHOW_STAND_BY_MEMBER_NOT_IN_BATTLE return battle_members else return members_KGC_LargeParty end end #-------------------------------------------------------------------------- # ¡Û Àü¸â¹öÀÇ Ãëµæ #-------------------------------------------------------------------------- def all_members return members_KGC_LargeParty end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹öÀÇ Ãëµæ #-------------------------------------------------------------------------- def battle_members result = [] battle_member_count.times { |i| result << $game_actors[@actors[i]] } return result end #-------------------------------------------------------------------------- # ¡Û ´ë±â ¸â¹öÀÇ Ãëµæ #-------------------------------------------------------------------------- def stand_by_members return (all_members - battle_members) end #-------------------------------------------------------------------------- # ¡Û °íÁ¤ ¸â¹öÀÇ Ãëµæ #-------------------------------------------------------------------------- def fixed_members result = [] @fixed_actors.each { |i| result << $game_actors[i] } return result end #-------------------------------------------------------------------------- # ¡Ü Ãʱâ ÆÄƼÀÇ ¼Â¾÷ #-------------------------------------------------------------------------- alias setup_starting_members_KGC_LargeParty setup_starting_members def setup_starting_members setup_starting_members_KGC_LargeParty self.battle_member_count = @actors.size end #-------------------------------------------------------------------------- # ¡Ü ÀüÅõ Å×½ºÆ®¿ë ÆÄƼÀÇ ¼Â¾÷ #-------------------------------------------------------------------------- alias setup_battle_test_members_KGC_LargeParty setup_battle_test_members def setup_battle_test_members setup_battle_test_members_KGC_LargeParty self.battle_member_count = @actors.size end #-------------------------------------------------------------------------- # ¡Û ¸â¹öÀÇ ½Å±Ô ¼³Á¤ # new_member : »õ·Î¿î ¸â¹ö #-------------------------------------------------------------------------- def set_member(new_member) @actors = [] new_member.each { |actor| @actors << actor.id } end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹öÀÇ ½Å±Ô ¼³Á¤ # new_member : »õ·Î¿î ÀüÅõ ¸â¹ö #-------------------------------------------------------------------------- def set_battle_member(new_member) new_battle_member = [] new_member.each { |actor| @actors.delete(actor.id) new_battle_member << actor.id } @actors = new_battle_member + @actors self.battle_member_count = new_member.size end #-------------------------------------------------------------------------- # ¡Û ÆÄƼ Æí¼ºÀ» Çã°¡ÇÏ°í ÀÖÀ»±î ÆÇÁ¤ #-------------------------------------------------------------------------- def partyform_enable? return $game_switches[KGC::LargeParty::PARTYFORM_SWITCH] end #-------------------------------------------------------------------------- # ¡Û ÀüÅõÁßÀÇ ÆÄƼ Æí¼ºÀ» Çã°¡ÇÏ°í ÀÖÀ»±î ÆÇÁ¤ #-------------------------------------------------------------------------- def battle_partyform_enable? return false unless partyform_enable? return $game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH] end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö°¡ °¡µæÇÑ°¡ ÆÇÁ¤ #-------------------------------------------------------------------------- def full? return (@actors.size >= MAX_MEMBERS) end #-------------------------------------------------------------------------- # ¡Û °íÁ¤ ¾×Åͳª ÆÇÁ¤ # actor_id : ÆÇÁ¤ÇÏ´Â ¾×ÅÍÀÇ ID #-------------------------------------------------------------------------- def actor_fixed?(actor_id) return @fixed_actors.include?(actor_id) end #-------------------------------------------------------------------------- # ¡Ü ¾×Å͸¦ °¡¼¼ÇÑ´Ù # actor_id : ¾×ÅÍ ID #-------------------------------------------------------------------------- alias add_actor_KGC_LargeParty add_actor def add_actor(actor_id) last_size = @actors.size add_actor_KGC_LargeParty(actor_id) if last_size < @actors.size self.battle_member_count += 1 end end #-------------------------------------------------------------------------- # ¡Û ¾×Å͸¦ ÀüÅõ ¸â¹ö¿¡ °¡¼¼ÇÑ´Ù # actor_id : ¾×ÅÍ ID # index : Ãß°¡ À§Ä¡ (»ý·«½Ã´Â ÃÖÈĹÌ) #-------------------------------------------------------------------------- def add_battle_member(actor_id, index = nil) return unless @actors.include?(actor_id) # ÆÄƼ¿¡ ¾ø´Ù if index == nil return if battle_members.include?($game_actors[actor_id]) # Ãâ°ÝÀÌ ³¡³­ »óÅ return if battle_member_count == max_battle_member_count # Àοø¼ö°¡ ÃÖ´ë index = battle_member_count end @actors.delete(actor_id) @actors.insert(index, actor_id) self.battle_member_count += 1 end #-------------------------------------------------------------------------- # ¡Û ¾×Å͸¦ ÀüÅõ ¸â¹ö·ÎºÎÅÍ Á¦¿ÜÇÑ´Ù # actor_id : ¾×ÅÍ ID #-------------------------------------------------------------------------- def remove_battle_member(actor_id) return unless @actors.include?(actor_id) # ÆÄƼ¿¡ ¾ø´Ù return if actor_fixed?(actor_id) # °íÁ¤ÀÌ ³¡³­ »óÅ return if stand_by_members.include?($game_actors[actor_id]) # ´ë±âÁß @actors.delete(actor_id) @actors.push(actor_id) self.battle_member_count -= 1 end #-------------------------------------------------------------------------- # ¡Û ¾×ÅÍÀÇ °íÁ¤ »óŸ¦ ¼³Á¤ # actor_id : ¾×ÅÍ ID # fixed : °íÁ¤ Ç÷¡±× (»ý·«½Ã : false) #-------------------------------------------------------------------------- def fix_actor(actor_id, fixed = false) return unless @actors.include?(actor_id) # ÆÄƼ¿¡ ¾ø´Ù if fixed # °íÁ¤ unless @fixed_actors.include?(actor_id) @fixed_actors << actor_id unless battle_members.include?($game_actors[actor_id]) self.battle_member_count += 1 end end # °­Á¦ Ãâ°Ý apply_force_launch else # °íÁ¤ ÇØÁ¦ @fixed_actors.delete(actor_id) end $game_player.refresh end #-------------------------------------------------------------------------- # ¡Û °­Á¦ Ãâ°Ý Àû¿ë #-------------------------------------------------------------------------- def apply_force_launch while (fixed_members - battle_members).size > 0 # °íÁ¤ »óÅ°¡ ¾Æ´Ñ ¸â¹ö¸¦ Àû´çÇÏ°Ô °¡Á®¿Í ±³Ã¼ actor1 = stand_by_members.find { |a| @fixed_actors.include?(a.id) } actor2 = battle_members.reverse.find { |a| !@fixed_actors.include?(a.id) } index1 = @actors.index(actor1.id) index2 = @actors.index(actor2.id) @actors[index1], @actors[index2] = @actors[index2], @actors[index1] # ÀüÅõ ¸â¹ö°¡ Àü¿ø °íÁ¤µÇ¸é µ¹¾Æ¿Â´Ù (¿£µé·¹½º ·çÇÁ ¹æÁö) all_fixed = true battle_members.each { |actor| unless actor.fixed_member? all_fixed = false break end } break if all_fixed end end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö Á¤·Ä (½Â¼ø) # sort_type : ¼ÒÆ® Çü½Ä (SORT_BY_xxx) # reverse : true (ÀÌ)¶ó¸é ³»¸²Â÷¼ø #-------------------------------------------------------------------------- def sort_member(sort_type = KGC::Commands::SORT_BY_ID, reverse = false) # ¹öÆÛ¸¦ Áغñ b_actors = battle_members actors = all_members - b_actors f_actors = fixed_members # °íÁ¤ ij¸¯ÅÍ´Â ¼ÒÆ® ÇÏÁö ¾Ê´Â´Ù if KGC::LargeParty::FORBID_CHANGE_SHIFT_FIXED actors -= f_actors b_actors -= f_actors end # ¼ÒÆ® case sort_type when KGC::Commands::SORT_BY_ID # ID¼ø actors.sort! { |a, b| a.id <=> b.id } b_actors.sort! { |a, b| a.id <=> b.id } when KGC::Commands::SORT_BY_NAME # À̸§¼ø actors.sort! { |a, b| a.name <=> b.name } b_actors.sort! { |a, b| a.name <=> b.name } when KGC::Commands::SORT_BY_LEVEL # ·¹º§¼ø¼­ actors.sort! { |a, b| a.level <=> b.level } b_actors.sort! { |a, b| a.level <=> b.level } end # ¹ÝÀü if reverse actors.reverse! b_actors.reverse! end # °íÁ¤ ij¸¯Å͸¦ ¼±µÎ¿¡ °¡Á®¿Â´Ù if KGC::LargeParty::FORBID_CHANGE_SHIFT_FIXED actors = f_actors + actors b_actors = f_actors + b_actors end # º¹±Í set_member(actors) set_battle_member(b_actors) apply_force_launch $game_player.refresh end #-------------------------------------------------------------------------- # ¡Û ÁÙ´ëü # ÀüÅõ ¸â¹öÀÇ index1 ¹ø°¿Í index2 ¹ø°¸¦ ¹Ù²ã ³Ö´Â´Ù #-------------------------------------------------------------------------- def change_shift(index1, index2) size = @actors.size if index1 >= size || index2 >= size return end buf = @actors[index1] @actors[index1] = @actors[index2] @actors[index2] = buf $game_player.refresh end #-------------------------------------------------------------------------- # ¡Ü ÀüÅõ¿ë ½ºÅ×ÀÌÆ®ÀÇ ÇØÁ¦ (ÀüÅõ Á¾·á½Ã¿¡ È£ÃâÇØ) #-------------------------------------------------------------------------- def remove_states_battle for actor in all_members actor.remove_states_battle end 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_MenuStatus #============================================================================== class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ¡Ü Á¤¼ö #-------------------------------------------------------------------------- STATUS_HEIGHT = 96 # ½ºÅ×ÀÌÅͽº ÀÏÀκÐÀÇ ³ôÀÌ #-------------------------------------------------------------------------- # ¡Ü À©µµ¿ì ³»¿ëÀÇ ÀÛ¼º #-------------------------------------------------------------------------- def create_contents self.contents.dispose self.contents = Bitmap.new(width - 32, [height - 32, row_max * STATUS_HEIGHT].max) end #-------------------------------------------------------------------------- # ¡Ü ¼±µÎÀÇ ÇàÀÇ Ãëµæ #-------------------------------------------------------------------------- def top_row return self.oy / STATUS_HEIGHT end #-------------------------------------------------------------------------- # ¡Ü ¼±µÎÀÇ ÇàÀÇ ¼³Á¤ # row : ¼±µÎ¿¡ Ç¥½ÃÇÏ´Â Çà #-------------------------------------------------------------------------- def top_row=(row) super(row) self.oy = self.oy / WLH * STATUS_HEIGHT end #-------------------------------------------------------------------------- # ¡Ü 1 ÆäÀÌÁö¿¡ Ç¥½ÃÇÒ ¼ö ÀÖ´Â Çà¼öÀÇ Ãëµæ #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / STATUS_HEIGHT end #-------------------------------------------------------------------------- # ¡Ü Ç׸ñÀ» ¹¦È­ ÇÏ´Â ±¸ÇüÀÇ Ãëµæ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def item_rect(index) rect = super(index) rect.height = STATUS_HEIGHT rect.y = index / @column_max * STATUS_HEIGHT return rect end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh @item_max = $game_party.members.size create_contents fill_stand_by_background draw_member end #-------------------------------------------------------------------------- # ¡Û ÆÄƼ ¸â¹ö ¹¦È­ #-------------------------------------------------------------------------- def draw_member for actor in $game_party.members draw_actor_face(actor, 2, actor.party_index * 96 + 2, 92) x = 104 y = actor.party_index * 96 + WLH / 2 draw_actor_name(actor, x, y) draw_actor_class(actor, x + 120, y) draw_actor_level(actor, x, y + WLH * 1) draw_actor_state(actor, x, y + WLH * 2) draw_actor_hp(actor, x + 120, y + WLH * 1) draw_actor_mp(actor, x + 120, y + WLH * 2) end end #-------------------------------------------------------------------------- # ¡Û ´ë±â ¸â¹öÀÇ ¹è°æ»öÀ» ¹Ù¸¥´Ù #-------------------------------------------------------------------------- def fill_stand_by_background color = KGC::LargeParty::STAND_BY_COLOR dy = STATUS_HEIGHT * $game_party.battle_members.size dh = STATUS_HEIGHT * $game_party.stand_by_members.size if dh > 0 self.contents.fill_rect(0, dy, self.width - 32, dh, color) end end #-------------------------------------------------------------------------- # ¡Ü Ä¿¼­ÀÇ °»½Å #-------------------------------------------------------------------------- def update_cursor if @index < 0 # Ä¿¼­ ¾øÀ½ self.cursor_rect.empty elsif @index < @item_max # Åë»ó super elsif @index >= 100 # ÀڽŠself.cursor_rect.set(0, (@index - 100) * STATUS_HEIGHT, contents.width, STATUS_HEIGHT) else # Àüü self.cursor_rect.set(0, 0, contents.width, @item_max * STATUS_HEIGHT) end end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Window_ShopStatus #============================================================================== class Window_ShopStatus < Window_Base #-------------------------------------------------------------------------- # ¡Ü À©µµ¿ì ³»¿ëÀÇ ÀÛ¼º #-------------------------------------------------------------------------- def create_contents self.contents.dispose self.contents = Bitmap.new(width - 32, WLH * ($game_party.members.size + 1) * 2) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Window_BattleStatus #============================================================================== class Window_BattleStatus < Window_Selectable #-------------------------------------------------------------------------- # ¡Ü À©µµ¿ì ³»¿ëÀÇ ÀÛ¼º #-------------------------------------------------------------------------- def create_contents self.contents.dispose self.contents = Bitmap.new(width - 32, [WLH * $game_party.members.size, height - 32].max) end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- alias refresh_KGC_LargeParty refresh def refresh create_contents refresh_KGC_LargeParty end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_PartyFormCaption #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸é¿¡¼­ À©µµ¿ìÀÇ Ä¸¼ÇÀ» Ç¥½ÃÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_PartyFormCaption < Window_Base #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ # caption : Ç¥½ÃÇϴ ĸ¼Ç #-------------------------------------------------------------------------- def initialize(caption = "") super(0, 0, KGC::LargeParty::CAPTION_WINDOW_WIDTH, WLH + 32) @caption = caption refresh end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.draw_text(0, 0, width - 32, WLH, @caption) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_PartyFormMember #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸é¿¡¼­ ¸â¹ö¸¦ Ç¥½ÃÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_PartyFormMember < Window_Selectable #-------------------------------------------------------------------------- # ¡Û Á¤¼ö #-------------------------------------------------------------------------- DRAW_SIZE = KGC::LargeParty::PARTY_FORM_CHARACTER_SIZE #-------------------------------------------------------------------------- # ¡Ü °ø°³ ÀνºÅϽº º¯¼ö #-------------------------------------------------------------------------- attr_accessor :selected_index # ¼±ÅÃÀÌ ³¡³­ À妽º #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ # x : À©µµ¿ìÀÇ X ÁÂÇ¥ # y : À©µµ¿ìÀÇ Y ÁÂÇ¥ # width : À©µµ¿ìÀÇ Æø # height : À©µµ¿ìÀÇ ³ôÀÌ # spacing : ¿·¿¡ Ç׸ñÀÌ ÁÙ¼³ ¶§ÀÇ °ø¹éÀÇ Æø #-------------------------------------------------------------------------- def initialize(x, y, width, height, spacing = 8) super(x, y, width, height, spacing) end #-------------------------------------------------------------------------- # ¡Ü À©µµ¿ì ³»¿ëÀÇ ÀÛ¼º #-------------------------------------------------------------------------- def create_contents self.contents.dispose self.contents = Bitmap.new(width - 32, [height - 32, row_max * DRAW_SIZE[1]].max) end #-------------------------------------------------------------------------- # ¡Ü ¼±µÎÀÇ ÇàÀÇ Ãëµæ #-------------------------------------------------------------------------- def top_row return self.oy / DRAW_SIZE[1] end #-------------------------------------------------------------------------- # ¡Ü ¼±µÎÀÇ ÇàÀÇ ¼³Á¤ # row : ¼±µÎ¿¡ Ç¥½ÃÇÏ´Â Çà #-------------------------------------------------------------------------- def top_row=(row) super(row) self.oy = self.oy / WLH * DRAW_SIZE[1] end #-------------------------------------------------------------------------- # ¡Ü 1 ÆäÀÌÁö¿¡ Ç¥½ÃÇÒ ¼ö ÀÖ´Â Çà¼öÀÇ Ãëµæ #-------------------------------------------------------------------------- def page_row_max return (self.height - 32) / DRAW_SIZE[1] end #-------------------------------------------------------------------------- # ¡Ü Ç׸ñÀ» ¹¦È­ ÇÏ´Â ±¸ÇüÀÇ Ãëµæ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def item_rect(index) rect = super(index) rect.width = DRAW_SIZE[0] rect.height = DRAW_SIZE[1] rect.y = index / @column_max * DRAW_SIZE[1] return rect end #-------------------------------------------------------------------------- # ¡Û ¼±Åà ¾×ÅÍ Ãëµæ #-------------------------------------------------------------------------- def actor return @actors[self.index] end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear restore_member_list draw_member end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö ¸®½ºÆ® ¼öº¹ #-------------------------------------------------------------------------- def restore_member_list # °è½Âó¿¡¼­ Á¤ÀÇ end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö ¹¦È­ #-------------------------------------------------------------------------- def draw_member # °è½Âó¿¡¼­ Á¤ÀÇ end #-------------------------------------------------------------------------- # ¡Û °ø³­ ¾×ÅÍ ¹¦È­ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def draw_empty_actor(index) # °è½Âó¿¡¼­ Á¤ÀÇ end #-------------------------------------------------------------------------- # ¡Û °íÁ¤ ij¸¯ÅÍ ¹è°æ ¹¦È­ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def draw_fixed_back(index) rect = item_rect(index) self.contents.fill_rect(rect, KGC::LargeParty::FIXED_COLOR) end #-------------------------------------------------------------------------- # ¡Û ¼±ÅÃÁß Ä³¸¯ÅÍ ¹è°æ ¹¦È­ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def draw_selected_back(index) rect = item_rect(index) self.contents.fill_rect(rect, KGC::LargeParty::SELECTED_COLOR) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_PartyFormBattleMember #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸é¿¡¼­ ÀüÅõ ¸â¹ö¸¦ Ç¥½ÃÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_PartyFormBattleMember < Window_PartyFormMember #-------------------------------------------------------------------------- # ¡Ü °ø°³ ÀνºÅϽº º¯¼ö #-------------------------------------------------------------------------- attr_accessor :selected_index # ¼±ÅÃÀÌ ³¡³­ À妽º #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super(0, 0, 64, DRAW_SIZE[1] + 32) column_width = DRAW_SIZE[0] + @spacing nw = [column_width * $game_party.max_battle_member_count + 32, Graphics.width].min self.width = nw @item_max = $game_party.max_battle_member_count @column_max = width / column_width @selected_index = nil create_contents refresh self.active = true self.index = 0 end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö ¸®½ºÆ® ¼öº¹ #-------------------------------------------------------------------------- def restore_member_list @actors = $game_party.battle_members end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö ¹¦È­ #-------------------------------------------------------------------------- def draw_member @item_max.times { |i| actor = @actors[i] if actor == nil draw_empty_actor(i) else if i == @selected_index draw_selected_back(i) elsif $game_party.actor_fixed?(actor.id) draw_fixed_back(i) end rect = item_rect(i) draw_actor_graphic(actor, rect.x + DRAW_SIZE[0] / 2, rect.y + DRAW_SIZE[1] - 4) end } end #-------------------------------------------------------------------------- # ¡Û °ø³­ ¾×ÅÍ ¹¦È­ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def draw_empty_actor(index) rect = item_rect(index) self.contents.font.color = system_color self.contents.draw_text(rect, KGC::LargeParty::BATTLE_MEMBER_BLANK_TEXT, 1) self.contents.font.color = normal_color end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_PartyFormAllMember #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸é¿¡¼­ Àü¸â¹ö¸¦ Ç¥½ÃÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_PartyFormAllMember < Window_PartyFormMember #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super(0, 0, 64, 64) restore_member_list @item_max = $game_party.all_members.size # °¢Á¾ »çÀÌÁî °è»ê column_width = DRAW_SIZE[0] + @spacing sw = [@item_max * column_width + 32, Graphics.width].min @column_max = (sw - 32) / column_width sh = ([@item_max - 1, 0].max / @column_max + 1) * DRAW_SIZE[1] + 32 sh = [sh, DRAW_SIZE[1] * KGC::LargeParty::PARTY_MEMBER_WINDOW_ROW_MAX + 32].min # ÁÂÇ¥¡¤»çÀÌÁî Á¶Á¤ self.y += DRAW_SIZE[1] + 32 self.width = sw self.height = sh create_contents refresh self.active = false self.index = 0 end #-------------------------------------------------------------------------- # ¡Û ¼±ÅÃÇÏ°í ÀÖ´Â ¾×ÅÍÀÇ À妽º Ãëµæ #-------------------------------------------------------------------------- def actor_index return @index_offset + self.index end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö ¸®½ºÆ® ¼öº¹ #-------------------------------------------------------------------------- def restore_member_list if KGC::LargeParty::SHOW_BATTLE_MEMBER_IN_PARTY @actors = $game_party.all_members @index_offset = 0 else @actors = $game_party.stand_by_members @index_offset = $game_party.battle_members.size end end #-------------------------------------------------------------------------- # ¡Û ¸â¹ö ¹¦È­ #-------------------------------------------------------------------------- def draw_member @item_max.times { |i| actor = @actors[i] if actor == nil draw_empty_actor(i) next end if $game_party.actor_fixed?(actor.id) draw_fixed_back(i) end rect = item_rect(i) opacity = ($game_party.battle_members.include?(actor) ? 96 : 255) draw_actor_graphic(actor, rect.x + DRAW_SIZE[0] / 2, rect.y + DRAW_SIZE[1] - 4, opacity) } end #-------------------------------------------------------------------------- # ¡Ü ¾×ÅÍÀÇ º¸Çà ±×·¡ÇÈ ¹¦È­ # actor : ¾×ÅÍ # x : ¹¦È­Ã³ X ÁÂÇ¥ # y : ¹¦È­Ã³ Y ÁÂÇ¥ # opacity : ºÒÅõ¸íµµ #-------------------------------------------------------------------------- def draw_actor_graphic(actor, x, y, opacity = 255) draw_character(actor.character_name, actor.character_index, x, y, opacity) end #-------------------------------------------------------------------------- # ¡Ü º¸Çà ±×·¡ÇÈÀÇ ¹¦È­ # character_name : º¸Çà ±×·¡ÇÈ ÆÄÀϸí # character_index : º¸Çà ±×·¡ÇÈ À妽º # x : ¹¦È­Ã³ X ÁÂÇ¥ # y : ¹¦È­Ã³ Y ÁÂÇ¥ # opacity : ºÒÅõ¸íµµ #-------------------------------------------------------------------------- def draw_character(character_name, character_index, x, y, opacity = 255) return if character_name == nil bitmap = Cache.character(character_name) sign = character_name[/^[!$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity) end #-------------------------------------------------------------------------- # ¡Û °ø³­ ¾×ÅÍ ¹¦È­ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def draw_empty_actor(index) rect = item_rect(index) self.contents.font.color = system_color self.contents.draw_text(rect, KGC::LargeParty::PARTY_MEMBER_BLANK_TEXT, 1) self.contents.font.color = normal_color end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_PartyFormStatus #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸é¿¡¼­ ¾×ÅÍÀÇ ½ºÅ×ÀÌÅͽº¸¦ Ç¥½ÃÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_PartyFormStatus < Window_Base #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super(0, 0, 384, 128) self.z = 1000 @actor = nil refresh end #-------------------------------------------------------------------------- # ¡Û ¾×ÅÍ ¼³Á¤ #-------------------------------------------------------------------------- def set_actor(actor) if @actor != actor @actor = actor refresh end end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear if @actor == nil return end draw_actor_face(@actor, 0, 0) dx = 104 draw_actor_name(@actor, dx, 0) draw_actor_level(@actor, dx, WLH * 1) draw_actor_hp(@actor, dx, WLH * 2) draw_actor_mp(@actor, dx, WLH * 3) 4.times { |i| draw_actor_parameter(@actor, dx + 128, WLH * i, i, 120) } end #-------------------------------------------------------------------------- # ¡Ü ´É·ÂÄ¡ÀÇ ¹¦È­ # actor : ¾×ÅÍ # x : ¹¦È­Ã³ X ÁÂÇ¥ # y : ¹¦È­Ã³ Y ÁÂÇ¥ # type : ´É·ÂÄ¡ÀÇ Á¾·ù (03) # width : ¹¦È­Æø #-------------------------------------------------------------------------- def draw_actor_parameter(actor, x, y, type, width = 156) case type when 0 parameter_name = Vocab::atk parameter_value = actor.atk when 1 parameter_name = Vocab::def parameter_value = actor.def when 2 parameter_name = Vocab::spi parameter_value = actor.spi when 3 parameter_name = Vocab::agi parameter_value = actor.agi end nw = width - 36 self.contents.font.color = system_color self.contents.draw_text(x, y, nw, WLH, parameter_name) self.contents.font.color = normal_color self.contents.draw_text(x + nw, y, 36, WLH, parameter_value, 2) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Window_PartyFormControl #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸é¿¡¼­ Á¶ÀÛ ¹æ¹ýÀ» Ç¥½ÃÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_PartyFormControl < Window_Base #-------------------------------------------------------------------------- # ¡Û Á¤¼ö #-------------------------------------------------------------------------- MODE_BATTLE_MEMBER = 0 MODE_SHIFT_CHANGE = 1 MODE_PARTY_MEMBER = 2 #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super(0, 0, Graphics.width - 384, 128) self.z = 1000 @mode = MODE_BATTLE_MEMBER refresh end #-------------------------------------------------------------------------- # ¡Û ¸ðµå º¯°æ #-------------------------------------------------------------------------- def mode=(value) @mode = value refresh end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear case @mode when MODE_BATTLE_MEMBER # ÀüÅõ ¸â¹ö buttons = [ "A: Á¦¿ÜÇÑ´Ù", "B: Á¾·á", "C: °áÁ¤", "X: ÁÙ´ëü" ] when MODE_SHIFT_CHANGE # ÁÙ´ëü buttons = [ "B: ĵ½½", "C: °áÁ¤", "X: °áÁ¤" ] when MODE_PARTY_MEMBER # ÆÄƼ ¸â¹ö buttons = [ "B: ĵ½½", "C: °áÁ¤" ] else return end buttons.each_with_index { |c, i| self.contents.draw_text(0, WLH * i, width - 32, WLH, c) } end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Title #============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ¡Ü °¢Á¾ °ÔÀÓ ¿ÀºêÁ§Æ®ÀÇ ÀÛ¼º #-------------------------------------------------------------------------- alias create_game_objects_KGC_LargeParty create_game_objects def create_game_objects create_game_objects_KGC_LargeParty if KGC::LargeParty::DEFAULT_PARTYFORM_ENABLED $game_switches[KGC::LargeParty::PARTYFORM_SWITCH] = true $game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH] = true end end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Map #============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # ¡Ü È­¸é º¯È¯ÀÇ ½ÇÇà #-------------------------------------------------------------------------- alias update_scene_change_KGC_LargeParty update_scene_change def update_scene_change return if $game_player.moving? # Ç÷¹À̾îÀÇ À̵¿Áß? if $game_temp.next_scene == :partyform call_partyform return end update_scene_change_KGC_LargeParty end #-------------------------------------------------------------------------- # ¡Û ÆÄƼ Æí¼º È­¸é¿¡ÀÇ º¯È¯ #-------------------------------------------------------------------------- def call_partyform $game_temp.next_scene = nil $scene = Scene_PartyForm.new(0, Scene_PartyForm::HOST_MAP) end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Menu #============================================================================== class Scene_Menu < Scene_Base if KGC::LargeParty::USE_MENU_PARTYFORM_COMMAND #-------------------------------------------------------------------------- # ¡Ü Ä¿¸àµå À©µµ¿ìÀÇ ÀÛ¼º #-------------------------------------------------------------------------- alias create_command_window_KGC_LargeParty create_command_window def create_command_window create_command_window_KGC_LargeParty return if $imported["CustomMenuCommand"] @__command_partyform_index = @command_window.add_command(Vocab.partyform) @command_window.draw_item(@__command_partyform_index, $game_party.partyform_enable?) if @command_window.oy > 0 @command_window.oy -= Window_Base::WLH end @command_window.index = @menu_index end end #-------------------------------------------------------------------------- # ¡Ü Ä¿¸àµå ¼±ÅÃÀÇ °»½Å #-------------------------------------------------------------------------- alias update_command_selection_KGC_LargeParty update_command_selection def update_command_selection current_menu_index = @__command_partyform_index call_partyform_flag = false if Input.trigger?(Input::C) case @command_window.index when @__command_partyform_index # ÆÄƼ Æí¼º call_partyform_flag = true end # ÆÄƼ Æí¼º ¹öÆ° ¾ÐÇÏ elsif KGC::LargeParty::MENU_PARTYFORM_BUTTON != nil && Input.trigger?(KGC::LargeParty::MENU_PARTYFORM_BUTTON) call_partyform_flag = true current_menu_index = @command_window.index if current_menu_index == nil end # ÆÄƼ Æí¼º È­¸é¿¡ ÀÌÇà if call_partyform_flag if $game_party.members.size == 0 || !$game_party.partyform_enable? Sound.play_buzzer return end Sound.play_decision $scene = Scene_PartyForm.new(current_menu_index) return end update_command_selection_KGC_LargeParty end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Shop #============================================================================== unless $imported["HelpExtension"] class Scene_Shop < Scene_Base #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- alias udpate_KGC_LargeParty update def update # ½ºÅ©·Ñ ÆÇÁ¤ if !@command_window.active && KGC::LargeParty::SHOP_STATUS_SCROLL_BUTTON != nil && Input.press?(KGC::LargeParty::SHOP_STATUS_SCROLL_BUTTON) super update_menu_background update_scroll_status return else @status_window.cursor_rect.empty end udpate_KGC_LargeParty end #-------------------------------------------------------------------------- # ¡Û ½ºÅ×ÀÌÅͽº À©µµ¿ìÀÇ ½ºÅ©·Ñ ó¸® #-------------------------------------------------------------------------- def update_scroll_status # ½ºÅ×ÀÌÅͽº À©µµ¿ì¿¡ Ä¿¼­¸¦ Ç¥½Ã @status_window.cursor_rect.width = @status_window.contents.width @status_window.cursor_rect.height = @status_window.height - 32 @status_window.update if Input.press?(Input::UP) @status_window.oy = [@status_window.oy - 4, 0].max elsif Input.press?(Input::DOWN) max_pos = [@status_window.contents.height - (@status_window.height - 32), 0].max @status_window.oy = [@status_window.oy + 4, max_pos].min end end end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡à Scene_PartyForm #------------------------------------------------------------------------------ # ¡¡ÆÄƼ Æí¼º È­¸éÀÇ Ã³¸®¸¦ ½Ç½ÃÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. #============================================================================== class Scene_PartyForm < Scene_Base #-------------------------------------------------------------------------- # ¡Û Á¤¼ö #-------------------------------------------------------------------------- CAPTION_OFFSET = 40 # ĸ¼Ç À©µµ¿ìÀÇ À§Ä¡ º¸Á¤ HOST_MENU = 0 # È£Ãâ¿ø : ¸Þ´º HOST_MAP = 1 # È£Ãâ¿ø : ¸Ê HOST_BATTLE = 2 # È£Ãâ¿ø : ÀüÅõ #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ # menu_index : Ä¿¸àµåÀÇ Ä¿¼­ Ãʱâ À§Ä¡ # host_scene : È£Ãâ¿ø (0..¸Þ´º 1..¸Ê 2..ÀüÅõ) #-------------------------------------------------------------------------- def initialize(menu_index = 0, host_scene = HOST_MENU) @menu_index = menu_index @host_scene = host_scene end #-------------------------------------------------------------------------- # ¡Ü °³½Ã ó¸® #-------------------------------------------------------------------------- def start super create_menu_background create_windows create_confirm_window adjust_window_location # Æí¼ºÀüÀÇ ÆÄƼ¸¦ º¸Á¸ @battle_actors = $game_party.battle_members.dup @party_actors = $game_party.all_members.dup end #-------------------------------------------------------------------------- # ¡Û À©µµ¿ìÀÇ ÀÛ¼º #-------------------------------------------------------------------------- def create_windows # Æí¼º¿ë À©µµ¿ì¸¦ ÀÛ¼º @battle_member_window = Window_PartyFormBattleMember.new @party_member_window = Window_PartyFormAllMember.new @status_window = Window_PartyFormStatus.new @status_window.set_actor(@battle_member_window.actor) # ±× ¿ÜÀÇ À©µµ¿ì¸¦ ÀÛ¼º @battle_member_caption_window = Window_PartyFormCaption.new(KGC::LargeParty::BATTLE_MEMBER_CAPTION) @party_member_caption_window = Window_PartyFormCaption.new(KGC::LargeParty::PARTY_MEMBER_CAPTION) @control_window = Window_PartyFormControl.new end #-------------------------------------------------------------------------- # ¡Û È®ÀÎ À©µµ¿ìÀÇ ÀÛ¼º #-------------------------------------------------------------------------- def create_confirm_window commands = KGC::LargeParty::CONFIRM_WINDOW_COMMANDS @confirm_window = Window_Command.new(KGC::LargeParty::CONFIRM_WINDOW_WIDTH, commands) @confirm_window.index = 0 @confirm_window.openness = 0 @confirm_window.active = false end #-------------------------------------------------------------------------- # ¡Û À©µµ¿ìÀÇ ÁÂÇ¥ Á¶Á¤ #-------------------------------------------------------------------------- def adjust_window_location # ±âÁØ ÁÂÇ¥¸¦ °è»ê base_x = [@battle_member_window.width, @party_member_window.width].max base_x = [(Graphics.width - base_x) / 2, 0].max base_y = @battle_member_window.height + @party_member_window.height + @status_window.height + CAPTION_OFFSET * 2 base_y = [(Graphics.height - base_y) / 2, 0].max base_z = @menuback_sprite.z + 1000 # Æí¼º¿ë À©µµ¿ìÀÇ ÁÂÇ¥¸¦ ¼¼Æ® @battle_member_window.x = base_x @battle_member_window.y = base_y + CAPTION_OFFSET @battle_member_window.z = base_z @party_member_window.x = base_x @party_member_window.y = @battle_member_window.y + @battle_member_window.height + CAPTION_OFFSET @party_member_window.z = base_z @status_window.x = 0 @status_window.y = @party_member_window.y + @party_member_window.height @status_window.z = base_z # ±× ¿ÜÀÇ À©µµ¿ìÀÇ ÁÂÇ¥¸¦ ¼¼Æ® @battle_member_caption_window.x = [base_x - 16, 0].max @battle_member_caption_window.y = @battle_member_window.y - CAPTION_OFFSET @battle_member_caption_window.z = base_z + 500 @party_member_caption_window.x = [base_x - 16, 0].max @party_member_caption_window.y = @party_member_window.y - CAPTION_OFFSET @party_member_caption_window.z = base_z + 500 @control_window.x = @status_window.width @control_window.y = @status_window.y @control_window.z = base_z @confirm_window.x = (Graphics.width - @confirm_window.width) / 2 @confirm_window.y = (Graphics.height - @confirm_window.height) / 2 @confirm_window.z = base_z + 1000 end #-------------------------------------------------------------------------- # ¡Ü Á¾·á ó¸® #-------------------------------------------------------------------------- def terminate super dispose_menu_background @battle_member_window.dispose @party_member_window.dispose @status_window.dispose @battle_member_caption_window.dispose @party_member_caption_window.dispose @control_window.dispose @confirm_window.dispose end #-------------------------------------------------------------------------- # ¡Ü ¸Þ´º È­¸é°èÀÇ ¹è°æ ÀÛ¼º #-------------------------------------------------------------------------- def create_menu_background super @menuback_sprite.z = 20000 end #-------------------------------------------------------------------------- # ¡Ü ¿ø·¡ÀÇ È­¸é¿¡ µ¹¾Æ¿Â´Ù #-------------------------------------------------------------------------- def return_scene case @host_scene when HOST_MENU $scene = Scene_Menu.new(@menu_index) when HOST_MAP $scene = Scene_Map.new when HOST_BATTLE $scene = Scene_Battle.new end $game_player.refresh end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update super update_menu_background update_window if @battle_member_window.active update_battle_member elsif @party_member_window.active update_party_member elsif @confirm_window.active update_confirm end end #-------------------------------------------------------------------------- # ¡Û À©µµ¿ì °»½Å #-------------------------------------------------------------------------- def update_window @battle_member_window.update @party_member_window.update @status_window.update @battle_member_caption_window.update @party_member_caption_window.update @control_window.update @confirm_window.update end #-------------------------------------------------------------------------- # ¡Û À©µµ¿ìÀ繦ȭ #-------------------------------------------------------------------------- def refresh_window @battle_member_window.refresh @party_member_window.refresh end #-------------------------------------------------------------------------- # ¡Û ÇÁ·¹ÀÓ °»½Å (ÀüÅõ ¸â¹ö À©µµ¿ì°¡ ¾×ƼºêÀÇ °æ¿ì) #-------------------------------------------------------------------------- def update_battle_member @status_window.set_actor(@battle_member_window.actor) if Input.trigger?(Input::A) if @battle_member_window.selected_index == nil # ÁÙ¼­ ¹Ù²Ù¾î ¾ÈÀÌ ¾Æ´Ï´Ù actor = @battle_member_window.actor # ¾×Å͸¦ Á¦¿ÜÇÒ ¼ö ¾ø´Â °æ¿ì if actor == nil || $game_party.actor_fixed?(actor.id) Sound.play_buzzer return end # ¾×Å͸¦ Á¦¿ÜÇÑ´Ù Sound.play_decision actors = $game_party.battle_members actors.delete_at(@battle_member_window.index) $game_party.set_battle_member(actors) refresh_window end elsif Input.trigger?(Input::B) if @battle_member_window.selected_index == nil # ÁÙ¼­ ¹Ù²Ù¾î ¾ÈÀÌ ¾Æ´Ï´Ù # È®ÀÎ À©µµ¿ì·Î ÀüȯÇØ Sound.play_cancel show_confirm_window else # ÁÙ¼­ ¹Ù²Ù¾î ¾È # ÁÙ¼­ ¹Ù²Ù¾î ÇØÁ¦ Sound.play_cancel @battle_member_window.selected_index = nil @battle_member_window.refresh @control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER end elsif Input.trigger?(Input::C) if @battle_member_window.selected_index == nil # ÁÙ¼­ ¹Ù²Ù¾î ¾ÈÀÌ ¾Æ´Ï´Ù actor = @battle_member_window.actor # ¾×Å͸¦ Á¦¿ÜÇÒ ¼ö ¾ø´Â °æ¿ì if actor != nil && $game_party.actor_fixed?(actor.id) Sound.play_buzzer return end # ÆÄƼ ¸â¹ö À©µµ¿ì·Î ÀüȯÇØ Sound.play_decision @battle_member_window.active = false @party_member_window.active = true @control_window.mode = Window_PartyFormControl::MODE_PARTY_MEMBER else # ÁÙ¼­ ¹Ù²Ù¾î ¾È unless can_change_shift?(@battle_member_window.actor) Sound.play_buzzer return end # ÁÙ¼­ ¹Ù²Ù¾î ½ÇÇà Sound.play_decision index1 = @battle_member_window.selected_index index2 = @battle_member_window.index change_shift(index1, index2) @control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER end elsif Input.trigger?(Input::X) # ÁÙ¼­ ¹Ù²Ù¾î ºÒ°¡´ÉÇÑ °æ¿ì unless can_change_shift?(@battle_member_window.actor) Sound.play_buzzer return end if @battle_member_window.selected_index == nil # ÁÙ¼­ ¹Ù²Ù¾î ¾ÈÀÌ ¾Æ´Ï´Ù # ÁÙ¼­ ¹Ù²Ù¾î °³½Ã Sound.play_decision @battle_member_window.selected_index = @battle_member_window.index @battle_member_window.refresh @control_window.mode = Window_PartyFormControl::MODE_SHIFT_CHANGE else # ÁÙ¼­ ¹Ù²Ù¾î ¾È # ÁÙ¼­ ¹Ù²Ù¾î ½ÇÇà Sound.play_decision index1 = @battle_member_window.selected_index index2 = @battle_member_window.index change_shift(index1, index2) @control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER end end end #-------------------------------------------------------------------------- # ¡Û ÁÙ¼­ ¹Ù²Ù¾î °¡ºÎ ÆÇÁ¤ #-------------------------------------------------------------------------- def can_change_shift?(actor) # ¼±ÅÃÇÑ ¾×ÅÍ°¡ Á¸ÀçÇÏÁö ¾Ê´Â, ¶Ç´Â ÁÙ¼­ ¹Ù²Ù¾î ºÒ´ÉÀÎ °æ¿ì if actor == nil || (KGC::LargeParty::FORBID_CHANGE_SHIFT_FIXED && $game_party.actor_fixed?(actor.id)) return false end return true end #-------------------------------------------------------------------------- # ¡Û ÁÙ´ëü #-------------------------------------------------------------------------- def change_shift(index1, index2) # À§Ä¡¸¦ ±³Ã¼ $game_party.change_shift(index1, index2) # ¼±ÅÃÀÌ ³¡³­ À妽º¸¦ Ŭ¸®¾î @battle_member_window.selected_index = nil refresh_window end #-------------------------------------------------------------------------- # ¡Û ÇÁ·¹ÀÓ °»½Å (ÆÄƼ À©µµ¿ì°¡ ¾×ƼºêÀÇ °æ¿ì) #-------------------------------------------------------------------------- def update_party_member @status_window.set_actor(@party_member_window.actor) if Input.trigger?(Input::B) Sound.play_cancel # ÀüÅõ ¸â¹ö À©µµ¿ì·Î ÀüȯÇØ @battle_member_window.active = true @party_member_window.active = false @control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER elsif Input.trigger?(Input::C) actor = @party_member_window.actor # ¾×ÅÍ°¡ ÀüÅõ ¸â¹ö¿¡°Ô Æ÷ÇԵǴ °æ¿ì if $game_party.battle_members.include?(actor) Sound.play_buzzer return end # ¾×Å͸¦ ±³Ã¼ Sound.play_decision actors = $game_party.all_members battle_actors = $game_party.battle_members if @battle_member_window.actor != nil actors[@party_member_window.actor_index] = @battle_member_window.actor actors[@battle_member_window.index] = actor $game_party.set_member(actors.compact) end battle_actors[@battle_member_window.index] = actor $game_party.set_battle_member(battle_actors.compact) refresh_window # ÀüÅõ ¸â¹ö À©µµ¿ì·Î ÀüȯÇØ @battle_member_window.active = true @party_member_window.active = false @control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER end end #-------------------------------------------------------------------------- # ¡Û ÇÁ·¹ÀÓ °»½Å (È®ÀÎ À©µµ¿ì°¡ ¾×ƼºêÀÇ °æ¿ì) #-------------------------------------------------------------------------- def update_confirm if Input.trigger?(Input::B) Sound.play_cancel hide_confirm_window elsif Input.trigger?(Input::C) case @confirm_window.index when 0 # Æí¼º ¿Ï·á # ÆÄƼ°¡ ¹«È¿ÀÇ °æ¿ì unless battle_member_valid? Sound.play_buzzer return end Sound.play_decision return_scene when 1 # Æí¼º Áß´Ü Sound.play_decision # ÆÄƼ¸¦ Æí¼ºÀü »óÅ¿¡ µÇµ¹¸°´Ù $game_party.set_member(@party_actors) $game_party.set_battle_member(@battle_actors) return_scene when 2 # ĵ½½ Sound.play_cancel hide_confirm_window end end end #-------------------------------------------------------------------------- # ¡Û ÀüÅõ ¸â¹ö À¯È¿ ÆÇÁ¤ #-------------------------------------------------------------------------- def battle_member_valid? return false if $game_party.battle_members.size == 0 # ÀüÅõ ¸â¹ö°¡ ÇÏ´Ã $game_party.battle_members.each { |actor| return true if actor.exist? # »ýÁ¸ÀÚ°¡ ÀÖÀ¸¸éOK } return false end #-------------------------------------------------------------------------- # ¡Û È®ÀÎ À©µµ¿ìÀÇ Ç¥½Ã #-------------------------------------------------------------------------- def show_confirm_window if @battle_member_window.active @last_active_window = @battle_member_window else @last_active_window = @party_member_window end @battle_member_window.active = false @party_member_window.active = false @confirm_window.draw_item(0, battle_member_valid?) @confirm_window.open @confirm_window.active = true end #-------------------------------------------------------------------------- # ¡Û È®ÀÎ À©µµ¿ìÀÇ ºñÇ¥½Ã #-------------------------------------------------------------------------- def hide_confirm_window @confirm_window.active = false @confirm_window.close @last_active_window.active = true end end #¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú¡Ù¡Ú #============================================================================== # ¡á Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ¡Ü ¸Þ¼¼Áö Ç¥½Ã°¡ ³¡³¯ ¶§±îÁö ¿þÀÌÆ® #-------------------------------------------------------------------------- alias wait_for_message_KGC_LargeParty wait_for_message def wait_for_message return if @ignore_wait_for_message # ¸Þ¼¼Áö Á¾·á±îÁöÀÇ ¿þÀÌÆ®¸¦ ¹«½Ã wait_for_message_KGC_LargeParty end #-------------------------------------------------------------------------- # ¡Ü ·¹º§¾÷ÀÇ Ç¥½Ã #-------------------------------------------------------------------------- alias display_level_up_KGC_LargeParty display_level_up def display_level_up @ignore_wait_for_message = true display_level_up_KGC_LargeParty exp = $game_troop.exp_total * KGC::LargeParty::STAND_BY_EXP_RATE / 1000 $game_party.stand_by_members.each { |actor| if actor.exist? actor.gain_exp(exp, KGC::LargeParty::SHOW_STAND_BY_LEVEL_UP) end } @ignore_wait_for_message = false wait_for_message end #-------------------------------------------------------------------------- # ¡Ü ÆÄƼ Ä¿¸àµå ¼±ÅÃÀÇ °³½Ã #-------------------------------------------------------------------------- alias start_party_command_selection_KGC_LargeParty start_party_command_selection def start_party_command_selection if $game_temp.in_battle @status_window.index = 0 end start_party_command_selection_KGC_LargeParty end if KGC::LargeParty::USE_BATTLE_PARTYFORM #-------------------------------------------------------------------------- # ¡Ü Á¤º¸ Ç¥½Ã ºäÆ÷Æ®ÀÇ ÀÛ¼º #-------------------------------------------------------------------------- alias create_info_viewport_KGC_LargeParty create_info_viewport def create_info_viewport create_info_viewport_KGC_LargeParty @__command_partyform_index = @party_command_window.add_command(Vocab.partyform_battle) @party_command_window.draw_item(@__command_partyform_index, $game_party.battle_partyform_enable?) end #-------------------------------------------------------------------------- # ¡Ü ÆÄƼ Ä¿¸àµå ¼±ÅÃÀÇ °»½Å #-------------------------------------------------------------------------- alias update_party_command_selection_KGC_LargeParty update_party_command_selection def update_party_command_selection if Input.trigger?(Input::C) case @party_command_window.index when @__command_partyform_index # ÆÄƼ Æí¼º unless $game_party.battle_partyform_enable? Sound.play_buzzer return end Sound.play_decision process_partyform return end end update_party_command_selection_KGC_LargeParty end #-------------------------------------------------------------------------- # ¡Û ÆÄƼ Æí¼ºÀÇ Ã³¸® #-------------------------------------------------------------------------- def process_partyform Graphics.freeze snapshot_for_background $scene = Scene_PartyForm.new(0, Scene_PartyForm::HOST_BATTLE) $scene.main $scene = self @status_window.refresh perform_transition end end end