#============================================================================== # ■ XP-RGSS-16 スキル変化 [Ver.1.1.0] by Claimh #------------------------------------------------------------------------------ # ・一定確率で、別パターンのスキルが発動する。 #============================================================================== module Change_Skill MOMENT = [] ADDATK = [] MO_ADD = [] #============================================================================== # □ カスタマイズSTART #============================================================================== # 効果1属性ID MOMENT_ID = 21 # 効果2属性ID ADD_ATK_ID = 22 # 効果1発動確率 MOMENT_PRO = 50 # 効果2発動確率 ADD_ATK_PRO = 50 # 効果1によって変化するスキル MOMENT[0] = [57, 58] MOMENT[1] = [61, 62] # 効果2によって変化するスキル ADDATK[0] = [57, 59] ADDATK[1] = [61, 63] # 効果1+効果2によって変化するスキル MO_ADD[0] = [57, 60] MO_ADD[1] = [61, 64] #============================================================================== # □ カスタマイズEND #============================================================================== end class Scene_Battle include Change_Skill #-------------------------------------------------------------------------- # ● スキルアクション 結果作成 #-------------------------------------------------------------------------- alias make_skill_action_result_change_skill make_skill_action_result def make_skill_action_result # スキル変化 change_skill_check(@active_battler.current_action.skill_id) make_skill_action_result_change_skill # 原物 if @chenge_skill != nil @active_battler.forget_skill(@chenge_skill) end end #-------------------------------------------------------------------------- # ● スキル変化判定 #-------------------------------------------------------------------------- def change_skill_check(skill_id) # 初期化 moment = false add_atk = false @pattern = 0 @chenge_skill = nil @add_moment = false set = nil n1 = rand(100) n2 = rand(100) element = $data_skills[skill_id].element_set # 効果1判定 if element.include?(MOMENT_ID) if n1 < MOMENT_PRO moment = true end end # 効果2判定 if element.include?(ADD_ATK_ID) if n2 < ADD_ATK_PRO add_atk = true end end # スキル変化 if moment and add_atk @pattern = 1 set = MO_ADD elsif moment and !add_atk @pattern = 2 set = MOMENT elsif !moment and add_atk @pattern = 3 set = ADDATK else return end # スキル変化 change_skill(skill_id, set) end #-------------------------------------------------------------------------- # ● スキル変化 #-------------------------------------------------------------------------- def change_skill(skill_id, set) for i in 0..set.size-1 check = set[i] if skill_id == check[0] @chenge_skill = check[1] @active_battler.current_action.skill_id = @chenge_skill @active_battler.learn_skill(@chenge_skill) end end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション) #-------------------------------------------------------------------------- alias update_phase4_step3_change_skill update_phase4_step3 def update_phase4_step3 update_phase4_step3_change_skill case @pattern when 1 @moment = Window_Skill_Change.new @moment.set_pattern("必中", "追加") @add_moment = true when 2 @moment = Window_Skill_Change.new @moment.set_pattern("必中") @add_moment = true when 3 @moment = Window_Skill_Change.new @moment.set_pattern("追加") @add_moment = true end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション) #-------------------------------------------------------------------------- alias update_phase4_step4_change_skill update_phase4_step4 def update_phase4_step4 update_phase4_step4_change_skill if @add_moment @moment.dispose @pattern = 0 @add_moment = false end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_moment update def update update_moment if @add_moment @moment.x += 1 @moment.contents_opacity -= 5 end end end class Window_Skill_Change < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 200, 100, 120) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 end def set_pattern(p1, p2 = "") self.contents.draw_text(0, 0, 80, 40, p1) self.contents.draw_text(0, 40, 80, 40, p2) end end