#◆◇◆◇◆ ☆ 自由育成・システム ver 1.42 ◇◆◇◆◇ # ☆ マスタースクリプト ver 2.00 以降専用 # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin 更新履歴 ver → 1.10 ver 2.00 以降のマスタースクリプト専用化。 及びバグ修正とレイアウト変更。 ver → 1.20 誤字修正。及びボタンの統一。 ver → 1.30 一度に999まで上げられるように修正。 レイアウトも微妙に修正。 ver → 1.31 LVも一切表示されないように修正。 ver → 1.40 ある値から必要EXPを変化させる機能を追加。 ver → 1.41 必要EXP変化を修正。 ver → 1.42 必要EXP変化のミスを修正。 注意!! 古いセーブデータがあるとハングアップします。 必ず古いセーブデータを消してください。 また、これを導入すると、LVが全く機能しなくなります。 アクターの初期ステータスは、LV1のものを使用します。 説明 EXPを稼いでLVをあげるのではなく、 EXPを稼いで各パラメータを自由に上げれるように変更します。 LVが全く機能しなくなりますが、 アクターをプレイヤーが自由に育てることが出来ます。 パラメータをあげるのに必要なEXPは、 格パラメータのLV2のものを使用します。 例えば、LV2のHPが100だとすると、 HPを上げるにはHP1ポイントにつき100使用します。 各パラメータは、 1度に多く上げれば それだけ消費ポイントが減り、お得になります。 入力できる最大の999ポイントを1度にあげた場合、 合計から約25%ほど減ります。 (カスタマイズでON/OFF 可能) 成長画面には ステータス画面からZボタン(Dキー)を押すことで行く事が出来ます。 =end #============================================================================== # ■ MINTO::RGSS #============================================================================== module MINTO # 自由育成・システムを有効化 RGSS["free_actor_maker"] = true end if MINTO::RGSS["free_actor_maker"] #============================================================================== # ☆ カスタマイズ #============================================================================== module MINTO # 1度に多く上げれば、ポイントが減るか? (ON : true / OFF : false) Point_Discount = true # 必要経験値を上昇させる上限値に対する割合 # (アクターの各能力値が # 下の項目で設定した値に近づいたら経験値を上昇させます。 # その際はLV2のものではなく、LV3のものを使用します) # 例 SP上限が999で値が10、現在の最大SPが100以上ならLV3のSPを参照する Point_Rate = 10 #-------------------------------------------------------------------------- # ● 各パラメータの上限値 #-------------------------------------------------------------------------- def self.max_parameter max = [ 9999, # HP 999, # SP 999, # 腕力 999, # 器用さ 999, # 素早さ 999] # 魔力 return max end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :maxhp_plus # Max_Hp attr_accessor :maxsp_plus # Max_Sp attr_accessor :str_plus # 腕力 attr_accessor :dex_plus # 器用さ attr_accessor :agi_plus # 素早さ attr_accessor :int_plus # 魔力 #-------------------------------------------------------------------------- # ● 腕力の取得 #-------------------------------------------------------------------------- def str n = [[base_str + @str_plus, 1].max, MINTO::max_parameter[2]].min for i in @states n *= Data_States.data[i].str_rate / 100.0 end n = [[Integer(n), 1].max, MINTO::max_parameter[2]].min return n end #-------------------------------------------------------------------------- # ● 器用さの取得 #-------------------------------------------------------------------------- def dex n = [[base_dex + @dex_plus, 1].max, MINTO::max_parameter[3]].min for i in @states n *= Data_States.data[i].dex_rate / 100.0 end n = [[Integer(n), 1].max, MINTO::max_parameter[3]].min return n end #-------------------------------------------------------------------------- # ● 素早さの取得 #-------------------------------------------------------------------------- def agi n = [[base_agi + @agi_plus, 1].max, MINTO::max_parameter[4]].min for i in @states n *= Data_States.data[i].agi_rate / 100.0 end n = [[Integer(n), 1].max, MINTO::max_parameter[4]].min return n end #-------------------------------------------------------------------------- # ● 魔力の取得 #-------------------------------------------------------------------------- def int n = [[base_int + @int_plus, 1].max, MINTO::max_parameter[5]].min for i in @states n *= Data_States.data[i].int_rate / 100.0 end n = [[Integer(n), 1].max, MINTO::max_parameter[5]].min return n end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :exp # EXP #-------------------------------------------------------------------------- # ● レベルの変更 #-------------------------------------------------------------------------- def level=(level) end #-------------------------------------------------------------------------- # ● MaxHP の取得 #-------------------------------------------------------------------------- def maxhp n = [[base_maxhp + @maxhp_plus, 1].max, MINTO::max_parameter[0]].min for i in @states n *= Data_States.data[i].maxhp_rate / 100.0 end n = [[Integer(n), 1].max, MINTO::max_parameter[0]].min if MINTO::RGSS["クラス補正値"] n += MINTO.class_status_plus(@class_id)[0] end return n end #-------------------------------------------------------------------------- # ● 基本 MaxHP の取得 #-------------------------------------------------------------------------- def base_maxhp return Data_Actors.data[@actor_id].parameters[0, 1] end #-------------------------------------------------------------------------- # ● MaxSP の取得 #-------------------------------------------------------------------------- def maxsp n = [[base_maxsp + @maxsp_plus, 0].max, MINTO::max_parameter[1]].min for i in @states n *= Data_States.data[i].maxsp_rate / 100.0 end if MINTO::RGSS["クラス補正値"] n += MINTO.class_status_plus(@class_id)[1] end n = [[Integer(n), 0].max, MINTO::max_parameter[1]].min return n end #-------------------------------------------------------------------------- # ● 基本 MaxSP の取得 #-------------------------------------------------------------------------- def base_maxsp return Data_Actors.data[@actor_id].parameters[1, 1] end #-------------------------------------------------------------------------- # ● 基本腕力の取得 #-------------------------------------------------------------------------- def base_str n = Data_Actors.data[@actor_id].parameters[2, 1] weapon = Data_Weapons.data[@weapon_id] armor1 = Data_Armors.data[@armor1_id] armor2 = Data_Armors.data[@armor2_id] armor3 = Data_Armors.data[@armor3_id] armor4 = Data_Armors.data[@armor4_id] n += weapon != nil ? weapon.str_plus : 0 n += armor1 != nil ? armor1.str_plus : 0 n += armor2 != nil ? armor2.str_plus : 0 n += armor3 != nil ? armor3.str_plus : 0 n += armor4 != nil ? armor4.str_plus : 0 if MINTO::RGSS["クラス補正値"] n += MINTO.class_status_plus(@class_id)[6] end return [[n, 1].max, MINTO::max_parameter[2]].min end #-------------------------------------------------------------------------- # ● 基本器用さの取得 #-------------------------------------------------------------------------- def base_dex n = Data_Actors.data[@actor_id].parameters[3, 1] weapon = Data_Weapons.data[@weapon_id] armor1 = Data_Armors.data[@armor1_id] armor2 = Data_Armors.data[@armor2_id] armor3 = Data_Armors.data[@armor3_id] armor4 = Data_Armors.data[@armor4_id] n += weapon != nil ? weapon.dex_plus : 0 n += armor1 != nil ? armor1.dex_plus : 0 n += armor2 != nil ? armor2.dex_plus : 0 n += armor3 != nil ? armor3.dex_plus : 0 n += armor4 != nil ? armor4.dex_plus : 0 if MINTO::RGSS["クラス補正値"] n += MINTO.class_status_plus(@class_id)[7] end return [[n, 1].max, MINTO::max_parameter[3]].min end #-------------------------------------------------------------------------- # ● 基本素早さの取得 #-------------------------------------------------------------------------- def base_agi n = Data_Actors.data[@actor_id].parameters[4, 1] weapon = Data_Weapons.data[@weapon_id] armor1 = Data_Armors.data[@armor1_id] armor2 = Data_Armors.data[@armor2_id] armor3 = Data_Armors.data[@armor3_id] armor4 = Data_Armors.data[@armor4_id] n += weapon != nil ? weapon.agi_plus : 0 n += armor1 != nil ? armor1.agi_plus : 0 n += armor2 != nil ? armor2.agi_plus : 0 n += armor3 != nil ? armor3.agi_plus : 0 n += armor4 != nil ? armor4.agi_plus : 0 if MINTO::RGSS["クラス補正値"] n += MINTO.class_status_plus(@class_id)[8] end return [[n, 1].max, MINTO::max_parameter[4]].min end #-------------------------------------------------------------------------- # ● 基本魔力の取得 #-------------------------------------------------------------------------- def base_int n = Data_Actors.data[@actor_id].parameters[5, 1] weapon = Data_Weapons.data[@weapon_id] armor1 = Data_Armors.data[@armor1_id] armor2 = Data_Armors.data[@armor2_id] armor3 = Data_Armors.data[@armor3_id] armor4 = Data_Armors.data[@armor4_id] n += weapon != nil ? weapon.int_plus : 0 n += armor1 != nil ? armor1.int_plus : 0 n += armor2 != nil ? armor2.int_plus : 0 n += armor3 != nil ? armor3.int_plus : 0 n += armor4 != nil ? armor4.int_plus : 0 if MINTO::RGSS["クラス補正値"] n += MINTO.class_status_plus(@class_id)[9] end return [[n, 1].max, MINTO::max_parameter[5]].min end #-------------------------------------------------------------------------- # ● オリジナルMaxHP の取得 #-------------------------------------------------------------------------- def ori_maxhp n = Data_Actors.data[@actor_id].parameters[0, 1] n += @maxhp_plus n += MINTO.class_status_plus(@class_id)[0] if MINTO::RGSS["クラス補正値"] return [n, MINTO::max_parameter[0]].min end #-------------------------------------------------------------------------- # ● オリジナルMaxSP の取得 #-------------------------------------------------------------------------- def ori_maxsp n = Data_Actors.data[@actor_id].parameters[1, 1] n += @maxsp_plus n += MINTO.class_status_plus(@class_id)[1] if MINTO::RGSS["クラス補正値"] return [n, MINTO::max_parameter[1]].min end #-------------------------------------------------------------------------- # ● オリジナル腕力の取得 #-------------------------------------------------------------------------- def ori_str n = Data_Actors.data[@actor_id].parameters[2, 1] n += @str_plus n += MINTO.class_status_plus(@class_id)[2] if MINTO::RGSS["クラス補正値"] return [n, MINTO::max_parameter[2]].min end #-------------------------------------------------------------------------- # ● オリジナル器用さの取得 #-------------------------------------------------------------------------- def ori_dex n = Data_Actors.data[@actor_id].parameters[3, 1] n += @dex_plus n += MINTO.class_status_plus(@class_id)[3] if MINTO::RGSS["クラス補正値"] return [n, MINTO::max_parameter[3]].min end #-------------------------------------------------------------------------- # ● オリジナル素早さの取得 #-------------------------------------------------------------------------- def ori_agi n = Data_Actors.data[@actor_id].parameters[4, 1] n += @agi_plus n += MINTO.class_status_plus(@class_id)[4] if MINTO::RGSS["クラス補正値"] return [n, MINTO::max_parameter[4]].min end #-------------------------------------------------------------------------- # ● オリジナル魔力の取得 #-------------------------------------------------------------------------- def ori_int n = Data_Actors.data[@actor_id].parameters[5, 1] n += @int_plus n += MINTO.class_status_plus(@class_id)[5] if MINTO::RGSS["クラス補正値"] return [n, MINTO::max_parameter[5]].min end end #============================================================================== # ■ Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● レベルの描画 # actor : アクター # x : 描画先 X 座標 # y : 描画先 Y 座標 #-------------------------------------------------------------------------- def draw_actor_level(actor, x, y) end #-------------------------------------------------------------------------- # ● グラフィックの描画 # actor : アクター # x : 描画先 X 座標 # y : 描画先 Y 座標 #-------------------------------------------------------------------------- def draw_battler_graphics(actor, x, y, opa = 250) bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue) cw = bitmap.width / 2 ch = bitmap.height self.contents.blt(x - cw, y - ch, bitmap, bitmap.rect, opa) end end #============================================================================== # ■ Window_MenuStatus #============================================================================== class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] draw_actor_graphic(actor, x - 40, y + 80) draw_actor_name(actor, x, y) draw_actor_class(actor, x + 144, y) draw_actor_state(actor, x + 90, y + 32) self.contents.font.color = system_color self.contents.draw_text(x, y + 64, 80, 32, "EXP", 2) self.contents.font.color = normal_color self.contents.draw_text(x + 32, y + 64, 156, 32, actor.exp_s, 2) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end end #============================================================================== # ■ Window_Status #============================================================================== class Window_Status < Window_Base #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_graphic(@actor, 40, 112) draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 4 + 144, 0) draw_actor_state(@actor, 96, 64) draw_actor_hp(@actor, 96, 112, 172) draw_actor_sp(@actor, 96, 144, 172) draw_actor_parameter(@actor, 96, 192, 0) draw_actor_parameter(@actor, 96, 224, 1) draw_actor_parameter(@actor, 96, 256, 2) draw_actor_parameter(@actor, 96, 304, 3) draw_actor_parameter(@actor, 96, 336, 4) draw_actor_parameter(@actor, 96, 368, 5) draw_actor_parameter(@actor, 96, 400, 6) self.contents.font.color = system_color self.contents.draw_text(320, 48, 80, 32, "EXP") self.contents.font.color = normal_color self.contents.font.size = 15 self.contents.draw_text(400, 20, 200, 32, "Dキー(Zボタン) : パラメータアップ", 1) self.contents.font.size = 22 self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2) self.contents.font.color = system_color self.contents.draw_text(320, 160, 96, 32, "装備") draw_item_name(Data_Weapons.data[@actor.weapon_id], 320 + 16, 208) draw_item_name(Data_Armors.data[@actor.armor1_id], 320 + 16, 256) draw_item_name(Data_Armors.data[@actor.armor2_id], 320 + 16, 304) draw_item_name(Data_Armors.data[@actor.armor3_id], 320 + 16, 352) draw_item_name(Data_Armors.data[@actor.armor4_id], 320 + 16, 400) end end #============================================================================== # ■ Window_Help_LvUp #============================================================================== class Window_Help_Lv_Up < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 384, 640, 96) self.contents = Bitmap.new(width - 32, height - 32) end #-------------------------------------------------------------------------- # ● テキスト設定 #-------------------------------------------------------------------------- def set_text(text, align = 0) # テキストとアラインメントの少なくとも一方が前回と違っている場合 if text != @text or align != @align # テキストを再描画 self.contents.clear self.contents.font.color = normal_color text1 = text.split(/ /)[0].to_s text2 = text.split(/ /)[1].to_s self.contents.draw_text(4, 0, width, 32, text1, align) self.contents.draw_text(4, 32, width, 32, text2, align) @text = text @align = align @actor = nil end self.visible = true end end #============================================================================== # ■ Window_Command_Lv_Up #============================================================================== class Window_Command_Lv_Up < Window_Command #-------------------------------------------------------------------------- # ● ヘルプテキスト設定 #-------------------------------------------------------------------------- def set_text s1 = Data_System.data.words.hp s2 = Data_System.data.words.sp s3 = Data_System.data.words.str s4 = Data_System.data.words.dex s5 = Data_System.data.words.agi s6 = Data_System.data.words.int names = [s1, s2, s3, s4, s5, s6] text = names[self.index] + "を上昇させます" end #-------------------------------------------------------------------------- # ● ヘルプテキスト更新 #-------------------------------------------------------------------------- def update_help text = set_text @help_window.set_text(text) end end #============================================================================== # ■ Window_InputNumber #============================================================================== class Window_InputNumber < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(digits_max, actor = nil) @digits_max = digits_max @number = 0 # 数字の幅からカーソルの幅を計算 (0〜9 は等幅と仮定) dummy_bitmap = Bitmap.new(32, 32) @cursor_width = dummy_bitmap.text_size("0").width + 8 dummy_bitmap.dispose super(0, 0, @cursor_width * @digits_max + 32, 64) self.contents = Bitmap.new(width - 32, height - 32) self.z += 9999 self.opacity = 0 @index = 0 refresh update_cursor_rect end end #============================================================================== # ■ Window_InputNumber_Lv_Up #============================================================================== class Window_InputNumber_Lv_Up < Window_InputNumber #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(digits_max, actor) @data = 0 @actor = actor super end #-------------------------------------------------------------------------- # ● 項目取得 #-------------------------------------------------------------------------- def item(n = 0) @data = n end #-------------------------------------------------------------------------- # ● 基本EXPデータ取得 #-------------------------------------------------------------------------- def get_exp(i) case @data when 0 data = @actor.ori_maxhp + i when 1 data = @actor.ori_maxsp + i when 2 data = @actor.ori_str + i when 3 data = @actor.ori_dex + i when 4 data = @actor.ori_agi + i when 5 data = @actor.ori_int + i end max = MINTO.max_parameter[@data] if data * 100 / max >= MINTO::Point_Rate rate = 3 else rate = 2 end return Data_Actors.data[@actor.id].parameters[@data, rate] end #-------------------------------------------------------------------------- # ● EXPデータ取得 #-------------------------------------------------------------------------- def data_exp exp = 0 (0...self.number).each do |i| exp += get_exp(i) end Graphics.frame_reset if MINTO::Point_Discount rate = 1 + (self.number / 4000.0) exp = exp + (exp - (exp * rate)) end return exp.round end #-------------------------------------------------------------------------- # ● 経験値取得 #-------------------------------------------------------------------------- def exp n = 0 (0...self.number).each do |i| n += get_exp(i) end Graphics.frame_reset if MINTO::Point_Discount rate = 1 + (self.number / 4000.0) end if self.number > 0 if MINTO::Point_Discount exp = @actor.exp - (n + (n - (n * rate))) else exp = @actor.exp - n end return exp.round else return @actor.exp.round end end #-------------------------------------------------------------------------- # ● ヘルプウィンドウの設定 #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window # ヘルプテキストを更新 (update_help は継承先で定義される) if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # ● ヘルプテキスト設定 #-------------------------------------------------------------------------- def set_text text = "いくつ上昇させますか? ↑↓ : 値入力  ←→ : 桁切り替え" end #-------------------------------------------------------------------------- # ● ヘルプテキスト更新 #-------------------------------------------------------------------------- def update_help text = set_text @help_window.set_text(text) end end #============================================================================== # ■ Window_Dummy #============================================================================== class Window_Dummy < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(actor) super(0, 0, 640, 384) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_battler_graphics(@actor, 140, 270) draw_actor_name(@actor, 4, 0) draw_actor_hp(@actor, 288, 96, 172) draw_actor_sp(@actor, 288, 128, 172) draw_actor_parameter(@actor, 288, 160, 3) draw_actor_parameter(@actor, 288, 192, 4) draw_actor_parameter(@actor, 288, 224, 5) draw_actor_parameter(@actor, 288, 256, 6) self.contents.font.color = system_color self.contents.draw_text(288, 32, 120, 32, "残り EXP") self.contents.draw_text(288, 64, 120, 32, "消費 EXP") self.contents.font.color = normal_color self.contents.font.size = 22 self.contents.draw_text(160, 320, 480, 32, "Dキー(Zボタン):ステータス確認") end end #============================================================================== # ■ Window_Exp #============================================================================== class Window_Exp < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(actor) super(64, 32, 512, 480) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 @actor = actor refresh(@actor.exp_s) end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(exp = 0, data_exp = 0, type = 0, n = 0) self.contents.clear if !exp.instance_of?(String) if exp < 0 self.contents.font.color = Color.new(255, 0, 0) else self.contents.font.color = normal_color end end y = 64 + (32 * type) self.contents.draw_text(342, 0, 84, 32, exp.to_s, 2) self.contents.font.color = normal_color text = data_exp.to_s case type when 0 bool = [@actor.maxhp + n, MINTO.max_parameter[0]].min when 1 bool = [@actor.maxsp + n, MINTO.max_parameter[1]].min when 2 bool = [@actor.str + n, MINTO.max_parameter[2]].min when 3 bool = [@actor.dex + n, MINTO.max_parameter[3]].min when 4 bool = [@actor.agi + n, MINTO.max_parameter[4]].min when 5 bool = [@actor.int + n, MINTO.max_parameter[5]].min end self.contents.draw_text(342, 32, 84, 32, text, 2) if data_exp > 0 self.contents.draw_text(342, y, 120, 32, " → " + bool.to_s, 2) end end end #============================================================================== # ■ Scene_Status #============================================================================== class Scene_Status #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_MINT_Free_Actor_Maker update def update # Z ボタンが押された場合 if Input.trigger?(Input::Z) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # Lv_Up画面に切り替え $scene = Scene_Lv_Up.new(@actor_index) return end # 元の処理を実行 update_MINT_Free_Actor_Maker end end #============================================================================== # ■ Scene_Lv_Up #============================================================================== class Scene_Lv_Up #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # アクターを取得 @actor = $game_party.actors[@actor_index] # 各ウィンドウを作成 command = ["", "", "", "", "", ""] @number_window = Window_InputNumber_Lv_Up.new(3, @actor) @number_window.x = 280 @number_window.y = 385 @number_window.active = false @number_window.visible = false @command_window = Window_Command_Lv_Up.new(192, command) @command_window.active = true @command_window.opacity = 0 @command_window.x = 288 @command_window.y = 96 @command_window.z = 9998 @dummy_window = Window_Dummy.new(@actor) @exp_window = Window_Exp.new(@actor) @help_window = Window_Help_Lv_Up.new # ヘルプウィンドウを関連付け @number_window.help_window = @help_window @command_window.help_window = @help_window # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @command_window.dispose @number_window.dispose @dummy_window.dispose @exp_window.dispose @help_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update if @number_window.active @number_window.update update_number return end if @command_window.active @command_window.update update_command return end end #-------------------------------------------------------------------------- # ● フレーム更新(数値入力ウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_number # ↑ ボタンか ↓ ボタン が 押された場合 if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN) type = @command_window.index n = @number_window.number exp = @number_window.exp data_exp = @number_window.data_exp @exp_window.refresh(exp, data_exp, type, n) end # C ボタンが押された場合 if Input.trigger?(Input::C) if @number_window.exp > -1 && @number_window.number != 0 case @command_window.index when 0 if @number_window.number + @actor.maxhp < MINTO::max_parameter[0] + 1 # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) @actor.exp -= @number_window.data_exp @actor.maxhp_plus += @number_window.number else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end @number_window.number = 0 @number_window.refresh when 1 if @number_window.number + @actor.maxsp < MINTO::max_parameter[1] + 1 # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) @actor.exp -= @number_window.data_exp @actor.maxsp_plus += @number_window.number else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end @number_window.number = 0 @number_window.refresh when 2 if @number_window.number + @actor.str < MINTO::max_parameter[2] + 1 # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) @actor.exp -= @number_window.data_exp @actor.str_plus += @number_window.number else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end @number_window.number = 0 @number_window.refresh when 3 if @number_window.number + @actor.dex < MINTO::max_parameter[3] + 1 # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) @actor.exp -= @number_window.data_exp @actor.dex_plus += @number_window.number else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end @number_window.number = 0 @number_window.refresh when 4 if @number_window.number + @actor.agi < MINTO::max_parameter[4] + 1 # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) @actor.exp -= @number_window.data_exp @actor.agi_plus += @number_window.number else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end @number_window.number = 0 @number_window.refresh when 5 if @number_window.number + @actor.int < MINTO::max_parameter[5] + 1 # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) @actor.exp -= @number_window.data_exp @actor.int_plus += @number_window.number else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end end @dummy_window.refresh else # ブザー SE を演奏 $game_system.se_play(Data_System.data.buzzer_se) end @number_window.number = 0 @number_window.refresh type = @command_window.index n = @number_window.number exp = @number_window.exp data_exp = @number_window.data_exp @exp_window.refresh(exp, data_exp, type, n) end # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play(Data_System.data.cancel_se) # 数値入力ウィンドウのアクティブを解除 @number_window.active = false @number_window.visible = false # コマンドウィンドウをアクティブにする @command_window.active = true @dummy_window.refresh @number_window.number = 0 @exp_window.refresh(@number_window.exp) end end #-------------------------------------------------------------------------- # ● フレーム更新(コマンドウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_command # C ボタンが押された場合 if Input.trigger?(Input::C) # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) # コマンドウィンドウをアクティブを解除 @command_window.active = false # 数値入力ウィンドウのアクティブにする @help_window.set_text(@number_window.set_text) @number_window.help_window = @help_window @number_window.item(@command_window.index) @number_window.active = true @number_window.visible = true @dummy_window.refresh @number_window.number = 0 @exp_window.refresh(@number_window.exp) end # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # ステータス画面に切り替え $scene = Scene_Status.new(@actor_index) return end # Z ボタンが押された場合 if Input.trigger?(Input::Z) # 決定 SE を演奏 $game_system.se_play(Data_System.data.decision_se) # ステータス画面に切り替え $scene = Scene_Status.new(@actor_index) end # R ボタンが押された場合 if Input.trigger?(Input::R) # カーソル SE を演奏 $game_system.se_play(Data_System.data.cursor_se) # 次のアクターへ @actor_index += 1 @actor_index %= $game_party.actors.size # 別のLv_Up画面に切り替え $scene = Scene_Lv_Up.new(@actor_index) return end # L ボタンが押された場合 if Input.trigger?(Input::L) # カーソル SE を演奏 $game_system.se_play(Data_System.data.cursor_se) # 前のアクターへ @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size # 別のLv_Up画面に切り替え $scene = Scene_Lv_Up.new(@actor_index) return end end end end