#============================================================================== # ¡î 'SW_CreatureMix' by ½Ã¿ÊÀü»ç(SiotWarrior) #------------------------------------------------------------------------------ # ƯÁ¤ ¾×Å͸¦ ÇÕüÇÒ ¼ö ÀÖ´Â ½ºÅ©¸³Æ® ÀÔ´Ï´Ù. ¸ðµâ CreatureMix ³»¿¡¼­ ¼ººÐ ¾×Å͸¦ # ¼³Á¤ÇÏÁö ¾ÊÀº ¾×ÅÍ´Â ÇÕü ÇÒ ¼ö ¾ø½À´Ï´Ù. $game_temp.mix_creature = {¾×ÅÍ id, # ¾×ÅÍ id2...}, $scene = Scene_CreatureMix.new ¸¦ À̺¥Æ® ½ºÅ©¸³Æ® ¶õ¿¡ Àû¾î # ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÕ´Ï´Ù. ¼ººÐ ¾×ÅÍ´Â 4¸í±îÁö °¡´ÉÇÕ´Ï´Ù. # ex: $game_temp.mix_creature = [12, 16], $scene = Scene_CreatureMix.new ¶ó°í # À̺¥Æ® ½ºÅ©¸³Æ® ¶õ¿¡ ÀûÀ»½Ã ¸ðµâ CreatureMix ³»¿¡ °¢°¢ÀÇ ¾×ÅÍ IDÀÇ ¼ººÐ ¾×ÅÍ°¡ # Á¸Àç Çҽà Á¶°Ç ·¹º§À» ÃæÁ·ÇÏ´Â ¼ººÐ ¾×ÅÍ°¡ ÀüºÎ ¸ðÀÌ¸é ¸¶¿Õ°ú Á×À½ÀÇ ±â»ç¸¦ # Á¶ÇÕ °¡´ÉÇÕ´Ï´Ù. #============================================================================== #============================================================================== # ¡á ¸ðµâ #============================================================================== module SW module CreatureMix #-------------------------------------------------------------------------- # ¡Ü ¿ë¾î #-------------------------------------------------------------------------- CONDITIONAL_MIXTURE = "À¶ÇÕ Á¶°Ç" SACRIFICE = "Àç¹°" #-------------------------------------------------------------------------- # ¡Ü Á¶ÇÕµÉ ¾×ÅÍÀÇ ¼ººÐ ¾×ÅÍ ÁöÁ¤(ÃÖ´ë 4¸í) # ex: 12 => [10, 11], Á×À½ÀÇ ±â»ç ¾×ÅÍ ID => [±â»ç ¾×ÅÍ ID, »ç¾ÇÇÑ ¸Á·É ¾×ÅÍ ID] #-------------------------------------------------------------------------- SACRIFICE_LIST = { 12 => [10, 11], 16 => [13, 14, 15] } #-------------------------------------------------------------------------- # ¡Ü Á¶ÇÕµÉ ¾×ÅÍÀÇ ¼ººÐ ¾×ÅÍ ·¹º§ Á¦ÇÑ ÁöÁ¤(ÃÖ´ë 4¸í) # ex: 12 => [20, 30], Á×À½ÀÇ ±â»ç ¾×ÅÍ ID => [±â»ç ·¹º§ Á¦ÇÑ, »ç¾ÇÇÑ ¸Á·É ·¹º§ Á¦ÇÑ] #-------------------------------------------------------------------------- CONDITIONAL_LEVEL = { 12 => [20, 30], 16 => [40, 50, 60] } #-------------------------------------------------------------------------- # ¡Ü Á¶ÇÕµÉ ¾×ÅÍ ¸®½ºÆ® #-------------------------------------------------------------------------- MIXED_CREATURE = SACRIFICE_LIST.keys end end #============================================================================== # ¡á Scene_Base #------------------------------------------------------------------------------ # ¡¡°ÔÀÓÁßÀÇ ¸ðµç ¾ÀÀÇ ½´ÆÛ Å¬·¡½ºÀÔ´Ï´Ù. #============================================================================== class Scene_Base #-------------------------------------------------------------------------- # ¡Ü ¸ÞÀΠó¸® #-------------------------------------------------------------------------- def main Font.default_size = 22 # ±âº» Å©±â, '¹®ÀåÀÇ Ç¥½Ã'ÀÇ ÇÁ¸®ºä¿Í µ¿ÀÏÇÏ°Ô ¸ÂÃèÀ½. Font.default_bold = false #º¼µå¸¦ »ç¿ëÇÏÁö ¾ÊÀ½, »ç¿ëÇÔÀº true Font.default_name = ["ÈÞ¸Õ³ª¹«"] #±âº»À¸·Î ¼³Á¤µÈ ÇÑ±Û ÆùÆ® start # °³½Ã ó¸® perform_transition # Æ®¶õÁö¼Ç ½ÇÇà post_start # °³½Ã ÈÄó¸® Input.update # ÀÔ·Â Á¤º¸¸¦ °»½Å loop do Graphics.update # °ÔÀÓ È­¸éÀ» °»½Å Input.update # ÀÔ·Â Á¤º¸¸¦ °»½Å update # ÇÁ·¹ÀÓ °»½Å break if $scene != self # È­¸éÀÌ ¹Ù²î¸é ·çÇÁ¸¦ Áß´Ü end Graphics.update pre_terminate # Á¾·á »çÀü ó¸® Graphics.freeze # Æ®¶õÁö¼Ç Áغñ terminate # Á¾·á ó¸® end #-------------------------------------------------------------------------- # ¡Ü °³½Ã ó¸® #-------------------------------------------------------------------------- def start end #-------------------------------------------------------------------------- # ¡Ü Æ®¶õÁö¼Ç ½ÇÇà #-------------------------------------------------------------------------- def perform_transition Graphics.transition(10) end #-------------------------------------------------------------------------- # ¡Ü °³½Ã ÈÄó¸® #-------------------------------------------------------------------------- def post_start end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update end #-------------------------------------------------------------------------- # ¡Ü Á¾·á »çÀü ó¸® #-------------------------------------------------------------------------- def pre_terminate end #-------------------------------------------------------------------------- # ¡Ü Á¾·á ó¸® #-------------------------------------------------------------------------- def terminate end end #============================================================================== # ¡á Window_EachCreature #============================================================================== class Window_EachCreature < Window_Base attr_accessor :destination attr_reader :selected #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize(creature_index) super(creature_index * 128, 0, 128, 128) self.contents = Bitmap.new(width - 32, height - 32) @creature_id = $game_temp.mix_creature[creature_index] refresh @destination = self.x @selected = false end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear if can_be_mixture? draw_creature_graphic($game_actors[@creature_id], 48, 48, 96) else self.contents.draw_text(0, 32, 96, 32, "EMPTY", 1) end end #-------------------------------------------------------------------------- # ¡Ü ¹Í½ºÃÄ·Î ÀûÇÕÇÑ°¡¸¦ ÆÇÁ¤ #-------------------------------------------------------------------------- def can_be_mixture? result = $game_temp.mix_creature.include?(@creature_id) && !($game_party.actors.include?($game_actors[@creature_id])) && SW::CreatureMix::MIXED_CREATURE.include?(@creature_id) return result end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update super if self.x != @destination if (self.x - @destination).abs < 12 self.x = @destination else dist = (@destination - self.x) / 8 if dist < 0 dist = [dist, -12].min else dist = [dist, 12].max end self.x += dist end end end #-------------------------------------------------------------------------- # ¡Ü ¼±Åà »óÅÂÀÇ ¼³Á¤ # selected : »õ·Î¿î ¼±Åà »óÅ (true=¼±Åà false=ºñ¼±ÅÃ) #-------------------------------------------------------------------------- def selected=(selected) @selected = selected update_cursor_rect end #-------------------------------------------------------------------------- # ¡Ü Ä¿¼­ÀÇ ±¸Çü °»½Å #-------------------------------------------------------------------------- def update_cursor_rect if @selected self.cursor_rect.set(-1, -1, 98, 98) else self.cursor_rect.empty end end end #============================================================================== # ¡á Window_CreatureSacrifice #============================================================================== class Window_CreatureSacrifice < Window_Base attr_accessor :destination attr_reader :selected #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize(sacrifice_index) super(sacrifice_index * 128, 352, 128, 128) self.contents = Bitmap.new(width - 32, height - 32) @actor_index = sacrifice_index refresh @destination = self.x @selected = false end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear if in_members? draw_creature_graphic($game_party.actors[@actor_index], 48, 48, 96) else self.contents.draw_text(0, 32, 96, 32, "EMPTY", 1) end end #-------------------------------------------------------------------------- # ¡Ü Àç¹°·Î ÀûÇÕÇÑ°¡¸¦ ÆÇÁ¤ #-------------------------------------------------------------------------- def in_members? return $game_party.actors.include?($game_party.actors[@actor_index]) end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update super if self.x != @destination if (self.x - @destination).abs < 12 self.x = @destination else dist = (@destination - self.x) / 8 if dist < 0 dist = [dist, -12].min else dist = [dist, 12].max end self.x += dist end end end #-------------------------------------------------------------------------- # ¡Ü ¼±Åà »óÅÂÀÇ ¼³Á¤ # selected : »õ·Î¿î ¼±Åà »óÅ (true=¼±Åà false=ºñ¼±ÅÃ) #-------------------------------------------------------------------------- def selected=(selected) @selected = selected update_cursor_rect end #-------------------------------------------------------------------------- # ¡Ü Ä¿¼­ÀÇ ±¸Çü °»½Å #-------------------------------------------------------------------------- def update_cursor_rect if @selected self.cursor_rect.set(-1, -1, 98, 98) else self.cursor_rect.empty end end end #============================================================================== # ¡á Window_CreatureInfo #============================================================================== class Window_CreatureInfo < Window_Base #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize(actor_id) super(0, 128, 640, 224) self.contents = Bitmap.new(width - 32, height - 32) @actor_id = actor_id refresh end #-------------------------------------------------------------------------- # ¡Ü ¾×ÅÍ IDÀÇ Ãëµæ #-------------------------------------------------------------------------- def actor_id=(actor_id) @actor_id = actor_id refresh end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear actor = $game_actors[@actor_id] if !(@actor_id.nil?) if actor != nil draw_actor_name(actor, 4, 0) draw_actor_class(actor, 4 + 144, 0) draw_actor_level(actor, 4, 32) draw_actor_hp(actor, 4, 80, 172) draw_actor_sp(actor, 4, 112, 172) draw_actor_parameter(actor, 196, 32, 3) draw_actor_parameter(actor, 196, 64, 4) draw_actor_parameter(actor, 196, 96, 5) draw_actor_parameter(actor, 196, 128, 6) draw_battler_graphic(actor, 490, 96) end end #-------------------------------------------------------------------------- # ¡Ü Å©¸®ÃÄÀÇ ¹èƲ·¯ ±×·¡ÇÈÀ» ¹¦È­ #-------------------------------------------------------------------------- def draw_battler_graphic(actor, x, y) bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue) cw = bitmap.width ch = bitmap.height dest_rect = Rect.new(372, 0, 236, 192) dest_rect2 = Rect.new(x - (cw / 2), 0, cw, 192) dest_rect3 = Rect.new(372, y - (ch / 2), 236, ch) src_rect = Rect.new(0, 0, cw, ch) if cw <= 236 && ch <= 192 self.contents.blt(x - (cw / 2), y - (ch / 2), bitmap, src_rect) elsif cw <= 236 && ch > 192 self.contents.stretch_blt(dest_rect2, bitmap, src_rect) elsif cw > 236 && ch <= 192 self.contents.stretch_blt(dest_rect3, bitmap, src_rect) else self.contents.stretch_blt(dest_rect, bitmap, src_rect) end end end #============================================================================== # ¡á Window_CreatureMix #============================================================================== class Window_CreatureMix < Window_Base #-------------------------------------------------------------------------- # ¡Ü #-------------------------------------------------------------------------- attr_reader :sacrifice_list #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super(0, 128, 640, 224) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false @actor_id = nil @sacrifice_list = [] end #-------------------------------------------------------------------------- # ¡Ü ¾×ÅÍ IDÀÇ Ãëµæ #-------------------------------------------------------------------------- def actor_id=(actor_id) @actor_id = actor_id refresh end #-------------------------------------------------------------------------- # ¡Ü Àç¹° ¸®½ºÆ®ÀÇ Ãëµæ #-------------------------------------------------------------------------- def sacrifice_list=(actor_id) @sacrifice_list.push(actor_id) if !(actor_id.nil?) and !(@sacrifice_list.size == 4) end #-------------------------------------------------------------------------- # ¡Ü Àç¹° ¸®½ºÆ®ÀÇ »èÁ¦ #-------------------------------------------------------------------------- def sacrifice_list_delete @sacrifice_list.delete_at(@sacrifice_list.size - 1) end #-------------------------------------------------------------------------- # ¡Ü Àç¹° ¸®½ºÆ®ÀÇ ¸¶Áö¸· ¿ø¼Ò ¹Ýȯ #-------------------------------------------------------------------------- def sacrifice_list_last return @sacrifice_list[@sacrifice_list.size - 1] end #-------------------------------------------------------------------------- # ¡Ü Àç¹°·Î¼­ ÀûÇÕ¼º ÆÇÁ¤ #-------------------------------------------------------------------------- def can_be_sacrifice?(actor_id) i1 = SW::CreatureMix::SACRIFICE_LIST[@actor_id].index(actor_id) i2 = SW::CreatureMix::CONDITIONAL_LEVEL[@actor_id][i1] if !(i1.nil?) i2 = 1 if i2.nil? return (SW::CreatureMix::SACRIFICE_LIST[@actor_id].include?(actor_id) and $game_actors[actor_id].level >= i2) end #-------------------------------------------------------------------------- # ¡Ü Àç¹° ¸®½ºÆ®ÀÇ Á¶°Ç ÃæÁ· ÆÇÁ¤ #-------------------------------------------------------------------------- def can_be_mixtrue? return SW::CreatureMix::SACRIFICE_LIST[@actor_id].sort == @sacrifice_list.sort end #-------------------------------------------------------------------------- # ¡Ü Àç¹° ¸®½ºÆ® ºñ¿ì±â #-------------------------------------------------------------------------- def sacrifice_list_clear @sacrifice_list.clear end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 0, 120, 32, SW::CreatureMix::CONDITIONAL_MIXTURE) self.contents.font.color = normal_color array = SW::CreatureMix::SACRIFICE_LIST[@actor_id] self.contents.font.size = 18 if !(array.nil?) for i in array break if array.index(i) > 3 c1 = $game_actors[i].name cx = contents.text_size(c1).width i1 = array.index(i) i2 = SW::CreatureMix::CONDITIONAL_LEVEL[@actor_id][i1] i2 = 1 if i2.nil? self.contents.draw_text(4 + (128 * array.index(i)), 32, 128, 32, "¡¸#{c1} Lv.#{i2}¡¹") end end self.contents.font.size = Font.default_size self.contents.font.color = system_color self.contents.draw_text(4, 96, 120, 32, SW::CreatureMix::SACRIFICE) if !(@sacrifice_list.nil?) for i in @sacrifice_list draw_creature_graphic($game_actors[i], 36 + (64 * @sacrifice_list.index(i)), 160, 64) end end end end #============================================================================== # ¡á Scene_CreatureMix #============================================================================== class Scene_CreatureMix < Scene_Base #-------------------------------------------------------------------------- # ¡Ü °³½Ã ó¸® #-------------------------------------------------------------------------- def start super mixture_size = $game_temp.mix_creature.size sacrifice_size = $game_party.actors.size if mixture_size == 0 @mixture_slot = 5 else @mixture_slot = (mixture_size % 5) == 0 ? mixture_size : (mixture_size / 5 + 1) * 5 end if sacrifice_size == 0 @sacrifice_slot = 5 else @sacrifice_slot = (sacrifice_size % 5) == 0 ? sacrifice_size : (sacrifice_size / 5 + 1) * 5 end @each_window = [] @sacrifice_window = [] for i in 0...@mixture_slot @each_window.push(Window_EachCreature.new(i)) end for i2 in 0...@sacrifice_slot @sacrifice_window.push(Window_CreatureSacrifice.new(i2)) end @info_window = Window_CreatureInfo.new($game_temp.mix_creature[0]) @mix_window = Window_CreatureMix.new @mixture_index = 0 @sacrifice_index = 0 @mixture_page_index = @mixture_index % 5 @sacrifice_page_index = @sacrifice_index % 5 @each_window[@mixture_index].selected = true @top_mixture_slot = 0 @top_sacrifice_slot = 0 end #-------------------------------------------------------------------------- # ¡Ü Á¾·á ó¸® #-------------------------------------------------------------------------- def terminate super for i in @each_window i.dispose end for i2 in @sacrifice_window i2.dispose end @info_window.dispose @mix_window.dispose end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update super for i in @each_window i.update end for i2 in @sacrifice_window i2.update end @info_window.update @mix_window.update if @sacrifice_window[@sacrifice_index].selected == false update_each_selection elsif @sacrifice_window[@sacrifice_index].selected == true update_sacrifice_selection end end #-------------------------------------------------------------------------- # ¡Ü °¢°¢ÀÇ Å©¸®ÃÄ ¼±ÅÃÀÇ °»½Å #-------------------------------------------------------------------------- def update_each_selection if Input.trigger?(Input::B) $game_system.se_play($data_system.buzzer_se) $scene = Scene_Map.new elsif Input.trigger?(Input::C) if @each_window[@mixture_index].can_be_mixture? $game_system.se_play($data_system.decision_se) @each_window[@mixture_index].active = false @sacrifice_window[@sacrifice_index].selected = true @info_window.visible = false @mix_window.actor_id = $game_temp.mix_creature[@mixture_index] @mix_window.visible = true else $game_system.se_play($data_system.buzzer_se) end elsif Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @each_window[@mixture_index].selected = false @mixture_index = (@mixture_index + 1) % @mixture_slot @info_window.actor_id = $game_temp.mix_creature[@mixture_index] @each_window[@mixture_index].selected = true @mixture_page_index += 1 self.scroll_each_window return elsif Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @each_window[@mixture_index].selected = false @mixture_index = (@mixture_index + @mixture_slot - 1) % @mixture_slot @info_window.actor_id = $game_temp.mix_creature[@mixture_index] @each_window[@mixture_index].selected = true @mixture_page_index -= 1 self.scroll_each_window return end end #-------------------------------------------------------------------------- # ¡Ü Àç¹° Å©¸®ÃÄ ¼±ÅÃÀÇ °»½Å #-------------------------------------------------------------------------- def update_sacrifice_selection if Input.trigger?(Input::B) if @mix_window.sacrifice_list.empty? $game_system.se_play($data_system.buzzer_se) @each_window[@mixture_index].active = true @sacrifice_window[@sacrifice_index].selected = false @info_window.visible = true @mix_window.visible = false else $game_system.se_play($data_system.buzzer_se) $game_party.add_actor(@mix_window.sacrifice_list_last) @mix_window.sacrifice_list_delete @mix_window.refresh replace_sacrifice_window end elsif Input.trigger?(Input::C) if @sacrifice_window[@sacrifice_index].in_members? && @mix_window.sacrifice_list.size < 5 if @mix_window.can_be_sacrifice?($game_party.actors[@sacrifice_index].id) @mix_window.sacrifice_list = $game_party.actors[@sacrifice_index].id $game_party.remove_actor($game_party.actors[@sacrifice_index].id) if @mix_window.can_be_mixtrue? $game_system.se_play(RPG::AudioFile.new("059-Applause01")) $game_party.add_actor($game_temp.mix_creature[@mixture_index]) @mix_window.sacrifice_list_clear @mix_window.refresh @mix_window.visible = false @info_window.actor_id = nil @info_window.visible = true @each_window[@mixture_index].active = true @sacrifice_window[@sacrifice_index].selected = false else $game_system.se_play($data_system.decision_se) @mix_window.refresh end replace_sacrifice_window else $game_system.se_play($data_system.buzzer_se) end else $game_system.se_play($data_system.buzzer_se) end elsif Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @sacrifice_window[@sacrifice_index].selected = false @sacrifice_index = (@sacrifice_index + 1) % @sacrifice_slot @sacrifice_window[@sacrifice_index].selected = true @sacrifice_page_index += 1 self.scroll_sacrifice_window return elsif Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @sacrifice_window[@sacrifice_index].selected = false @sacrifice_index = (@sacrifice_index + @sacrifice_slot - 1) % @sacrifice_slot @sacrifice_window[@sacrifice_index].selected = true @sacrifice_page_index -= 1 self.scroll_sacrifice_window return end end #-------------------------------------------------------------------------- # ¡Ü Àç¹° À©µµ¿ìÀÇ ±³Ã¼ #-------------------------------------------------------------------------- def replace_sacrifice_window for i in 0...@sacrifice_slot @sacrifice_window[i].refresh end for i in 0...@mixture_slot @each_window[@mixture_index].refresh end end #-------------------------------------------------------------------------- # ¡Ü °¢°¢ÀÇ À©µµ¿ì ½ºÅ©·Ñ °ü¸® #-------------------------------------------------------------------------- def scroll_each_window if @mixture_page_index >= 0 && @mixture_page_index <= 3 return end if @mixture_page_index == 5 if @mixture_index <= 3 @top_mixture_slot = 0 else @top_mixture_slot -= 640 end @mixture_page_index = 0 elsif @mixture_page_index == -1 if @mixture_index >= @mixture_slot - 5 @top_mixture_slot = (@mixture_slot - 5) * -128 else @top_mixture_slot += 640 end @mixture_page_index = 4 end @mixture_slot.times { |i| @each_window[i].destination = @top_mixture_slot + 128 * i } end #-------------------------------------------------------------------------- # ¡Ü Àç¹° À©µµ¿ì ½ºÅ©·Ñ °ü¸® #-------------------------------------------------------------------------- def scroll_sacrifice_window if @sacrifice_page_index >= 0 && @sacrifice_page_index <= 3 return end if @sacrifice_page_index == 5 if @sacrifice_index <= 3 @top_sacrifice_slot = 0 else @top_sacrifice_slot -= 640 end @sacrifice_page_index = 0 elsif @sacrifice_page_index == -1 if @sacrifice_index >= @sacrifice_slot - 5 @top_sacrifice_slot = (@sacrifice_slot - 5) * -128 else @top_sacrifice_slot += 640 end @sacrifice_page_index = 4 end @sacrifice_slot.times { |i| @sacrifice_window[i].destination = @top_sacrifice_slot + 128 * i } end end #============================================================================== # ¡á Game_Temp #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ¡Ü #-------------------------------------------------------------------------- attr_reader :mix_creature #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- alias sw_creature_mix_initialize initialize def initialize sw_creature_mix_initialize @mix_creature = [] end #-------------------------------------------------------------------------- # ¡Ü Á¶ÇÕ µÉ ¾×ÅÍÀÇ Ãëµæ #-------------------------------------------------------------------------- def mix_creature=(creatures) @mix_creature.clear if !(creatures.nil?) for i in creatures @mix_creature.push(i) if !($game_party.actors.include?($game_actors[i])) end end end end #============================================================================== # ¡á Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ¡Ü Å©¸®ÃÄÀÇ º¸Çà ±×·¡ÇÈÀ» ¹¦È­ #-------------------------------------------------------------------------- def draw_creature_graphic(actor, x, y, size) bitmap = RPG::Cache.character(actor.character_name, actor.character_hue) cw = bitmap.width / 4 ch = bitmap.height / 4 dest_rect = Rect.new(x - (size / 2), y - (size / 2), size, size) dest_rect2 = Rect.new(x - (cw / 2), y - (size / 2), cw, size) dest_rect3 = Rect.new(x - (size / 2), y - (ch / 2), size, ch) src_rect = Rect.new(0, 0, cw, ch) if cw <= size && ch <= size self.contents.blt(x - (cw / 2), y - (ch / 2), bitmap, src_rect) elsif cw <= size && ch > size self.contents.stretch_blt(dest_rect2, bitmap, src_rect) elsif cw > size && ch <= size self.contents.stretch_blt(dest_rect3, bitmap, src_rect) else self.contents.stretch_blt(dest_rect, bitmap, src_rect) end end end