# ▽△▽ XRXSv30. MeLT_Status. SY1. クラスセレクション ▽△▽ # # publish 2010/ 3/26 # update - 4/10 # [伸縮対応] # #============================================================================== # カスタマイズポイント #============================================================================== module XRXSV30 Captions[1] = "クラスチェンジ" end #============================================================================== # 設定 #============================================================================== XRXSV30::CommandIDs.push(1) #============================================================================== # アクター 有効クラス保持機能 #============================================================================== class Game_Actor < Game_Battler def classes @classes = [] if @classes == nil @classes.push(@class_id) unless @classes.include?(@class_id) return (@classes + $game_party.classes).uniq end end class Game_Party < Game_Unit def classes @classes = [] if @classes == nil return @classes end end #============================================================================== # パーティの所持アイテム数の記憶と復帰 #============================================================================== class Game_Party < Game_Unit def memory_item_numbers @memory_item_numbers = [@items.dup, @weapons.dup, @armors.dup] end def memory_back_item_numbers return unless @memory_item_numbers @items, @weapons, @armors = *@memory_item_numbers end end #============================================================================== # ステータス画面 #============================================================================== class Scene_Status < Scene_Base #-------------------------------------------------------------------------- # クラス選択の決定 #-------------------------------------------------------------------------- alias xrxsv30sy1_class_decision class_decision def class_decision case @class_window.type when 1 if @class_window.class_id != @actor.class.id Sound.play_equip @actor_hp_memory = @actor.hp if @actor_hp_memory == nil @actor_mp_memory = @actor.mp if @actor_mp_memory == nil @actor.classes @actor.class_id = @class_window.class_id @actor.classes @actor.hp = @actor_hp_memory @actor.mp = @actor_mp_memory @actorstatus_window.refresh @equipstatus_window.refresh @class_window.refresh @class_window.active = true changed = false for i in 0...Scene_Equip::EQUIP_TYPE_MAX new_equip = @actor.equips[i] last_equip = @last_equips[i] new_id = (new_equip == nil ? 0 : new_equip.id) last_id = (last_equip == nil ? 0 : last_equip.id) changed |= new_id != last_id end @help_window.visible = changed @help_window.set_text(XRXSV30::CHNG_S) if changed @actorpicture_sprite.refresh if @actorpicture_sprite != nil end end else xrxsv30sy1_class_decision end end #============================================================================== # クラスリストウィンドウへのセット #============================================================================== class Window_Classes < Window_Selectable alias xrxsv30sy1_set set def set(index) @set_type = index case @set_type when 1 @for_one_mode = false @item_max = @actor.classes.size @data = @actor.classes.dup begin @data.sort!{|a, b| (@actor.class_exp[b] * 10 - b) - (@actor.class_exp[a] * 10 - a) } rescue nil end refresh else xrxsv30sy1_set(index) end end alias xrxsv30sy1_new_parameter_actor new_parameter_actor def new_parameter_actor if @set_type == 1 $game_party.memory_item_numbers temp_actor = @actor.clone temp_actor.class_id = self.class_id $game_party.memory_back_item_numbers return temp_actor else return xrxsv30sy1_new_parameter_actor end end end