#============================================================================== # 経験値消費でスキル修得スクリプト + パラメータ変化 ver1.01 #------------------------------------------------------------------------------ #[特徴] # KGC Software様のパッシブスキルの修得によるステータス変化を # ウィンドウに表示します。 # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.01 細かなところを修正 # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module Kazari module LearnSkillExp # パラメータ変化を表示するウィンドウの横幅 WINDOW_WIDTH = 208 # スキルレベルを導入している場合は true にしてください。 SKILL_LEVEL = true # 命中率、回避率、クリティカル率の名称 VOCAB_HIT = "命中率" VOCAB_EVA = "回避率" VOCAB_CRI = "会心率" end end #============================================================================== # ここまで #============================================================================== #============================================================================== # ■ Scene_LearnSkillExp #============================================================================== class Scene_LearnSkillExp < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- alias append_start start def start append_start x = Graphics.width - Kazari::LearnSkillExp::WINDOW_WIDTH y = @status_window.y + @status_window.height @parameter_window = Window_Parameter.new(x, y, @actor) end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- alias append_terminate terminate def terminate append_terminate @parameter_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias append_update update def update append_update update_parameter_window end #-------------------------------------------------------------------------- # ● スキル修得の更新 #-------------------------------------------------------------------------- def update_learn_skill if Input.trigger?(Input::B) Sound.play_cancel @learn_window.close @learn_window.active = false @skill_window.active = true elsif Input.trigger?(Input::C) case @learn_window.index when 0 RPG::SE.new(LEARN_SOUND[0], LEARN_SOUND[1], LEARN_SOUND[2]).play @actor.learning_skill(@skill) @skill_window.refresh @status_window.refresh @parameter_window.refresh when 1 Sound.play_decision end @learn_window.close @learn_window.active = false @skill_window.active = true end end #-------------------------------------------------------------------------- # ● パラメータウィンドウの更新 #-------------------------------------------------------------------------- def update_parameter_window if @skill_window.skill != nil skill = @skill_window.skill flag = @actor.skill_learn?(skill) tester = @actor.clone tester.learning_skill(skill) @parameter_window.set_new_parameters(tester) tester.skill_level[skill.id] -= 1 if SKILL_LEVEL tester.forget_skill(skill.id) unless flag end @parameter_window.update end end #============================================================================== # ■ Window_Parameter #============================================================================== class Window_Parameter < Window_Base include Kazari::LearnSkillExp #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(x, y, actor) super(x, y, Graphics.width - x, Graphics.height - y) @actor = actor refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_parameter(0, WLH * 0, 0) draw_parameter(0, WLH * 1, 1) draw_parameter(0, WLH * 2, 2) draw_parameter(0, WLH * 3, 3) draw_parameter(0, WLH * 4, 4) draw_parameter(0, WLH * 5, 5) draw_parameter(0, WLH * 6, 6) draw_parameter(0, WLH * 7, 7) draw_parameter(0, WLH * 8, 8) end #-------------------------------------------------------------------------- # ● 装備変更後の能力値設定 #-------------------------------------------------------------------------- def set_new_parameters(tester) new_mhp = tester.maxhp new_mmp = tester.maxmp new_atk = tester.atk new_def = tester.def new_spi = tester.spi new_agi = tester.agi new_hit = tester.hit new_eva = tester.eva new_cri = tester.cri if @new_mhp != new_mhp or @new_mmp != new_mmp or @new_atk != new_atk or @new_def != new_def or @new_spi != new_spi or @new_agi != new_agi or @new_hit != new_hit or @new_eva != new_eva or @new_cri != new_cri @new_mhp = new_mhp @new_mmp = new_mmp @new_atk = new_atk @new_def = new_def @new_spi = new_spi @new_agi = new_agi @new_hit = new_hit @new_eva = new_eva @new_cri = new_cri refresh end end #-------------------------------------------------------------------------- # ● スキル修得後の能力値の描画色取得 #-------------------------------------------------------------------------- def new_parameter_color(old_value, new_value) if new_value > old_value # 強くなる return power_up_color elsif new_value == old_value # 変わらず return normal_color else # 弱くなる return power_down_color end end #-------------------------------------------------------------------------- # ● 能力値の描画 #-------------------------------------------------------------------------- def draw_parameter(x, y, type) case type when 0 name = Vocab::hp value = @actor.maxhp new_value = @new_mhp when 1 name = Vocab::mp value = @actor.maxmp new_value = @new_mmp when 2 name = Vocab::atk value = @actor.atk new_value = @new_atk when 3 name = Vocab::def value = @actor.def new_value = @new_def when 4 name = Vocab::spi value = @actor.spi new_value = @new_spi when 5 name = Vocab::agi value = @actor.agi new_value = @new_agi when 6 name = VOCAB_HIT value = @actor.hit new_value = @new_hit when 7 name = VOCAB_EVA value = @actor.eva new_value = @new_eva when 8 name = VOCAB_CRI value = @actor.cri new_value = @new_cri end self.contents.font.color = system_color self.contents.draw_text(x + 4, y, 80, WLH, name) self.contents.font.color = normal_color self.contents.draw_text(x + 90, y, 30, WLH, value, 2) self.contents.font.color = system_color self.contents.draw_text(x + 122, y, 20, WLH, "→", 1) if new_value != nil self.contents.font.color = new_parameter_color(value, new_value) self.contents.draw_text(x + 142, y, 30, WLH, new_value, 2) end end end #============================================================================== # ■ Window_LearnSkill #============================================================================== class Window_LearnSkill < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(x, y, actor) super(x, y, Graphics.width - WINDOW_WIDTH, Graphics.height - y) @actor = actor @column_max = 1 self.index = 0 refresh end end