#============================================================================== # ■ XP-RGSS-15 一人連携 [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # ・スキル攻撃時に偶発的に他のスキルを発動する # ・発動するか否かは各スキルごとに設定した確率によって判断する # ・連携するスキルを習得済みでないと連携は発動しない #============================================================================== module Skill_link #============================================================================== # □ カスタマイズSTART #============================================================================== # 連携成功時のアニメーション SKILL_LINK_ANIME = 23 # ダメージ一括表示 LINK_DMG_ALL = true # 不要ならfalse # 一人連携設定例 # [起点となるスキルID, 連携名, [[連携で発生するスキル, 発生率]・・・]] LINK1 = [57, "アルシェススペシャル", [[58, 80], [60, 50]]] LINK2 = [61, "バジルスペシャル", [[62, 80]]] # 上記配列を羅列 SKILL_LINK = [LINK1, LINK2] #============================================================================== # □ カスタマイズEND #============================================================================== end class Scene_Battle include Skill_link #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備) #-------------------------------------------------------------------------- alias update_phase4_step1_skill_link update_phase4_step1 def update_phase4_step1 update_phase4_step1_skill_link $skill_linked = false $skill_link_end = false @skill_link_cnt = 0 @skill_linked_cnt = 0 end #-------------------------------------------------------------------------- # ● スキルアクション 結果作成 #-------------------------------------------------------------------------- alias make_skill_action_result_skill_link make_skill_action_result def make_skill_action_result make_skill_action_result_skill_link # 原物 if !$skill_linked and @skill_link_cnt == 0 and @active_battler.is_a?(Game_Actor) skill_link_check(@skill) end if $skill_linked and @skill_link_name != nil @help_window.set_text(@skill_link_name, 1) end end #-------------------------------------------------------------------------- # ● 連携チェック #-------------------------------------------------------------------------- def skill_link_check(skill) for i in 0..SKILL_LINK.size-1 link = SKILL_LINK[i] # 連携チェックヒット if @skill.id == link[0] @skill_link = link[2] # 連携数カウント for j in 0..@skill_link.size-1 check_link = @skill_link[j] # 使えないスキルを連携しようとしていないか? if @active_battler.skill_can_use?(check_link[0]) # 連携成功チェック if rand(100) < check_link[1] # 連携名チェック if link[1] != "" @skill_link_name = link[1] else @skill_link_name = nil end # 連携成功 $skill_linked = true # 連携数のカウント @skill_link_cnt += 1 else return end end end end end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション) #-------------------------------------------------------------------------- alias update_phase4_step3_skill_link update_phase4_step3 def update_phase4_step3 if @skill_linked_cnt != 0 @animation1_id = SKILL_LINK_ANIME end update_phase4_step3_skill_link # 原物 # 待ち @wait_count = 4 end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示) #-------------------------------------------------------------------------- alias update_phase4_step5_skill_link update_phase4_step5 def update_phase4_step5 # 一括時は最後に表示させる if LINK_DMG_ALL and $skill_linked if @skill_linked_cnt >= @skill_link_cnt # ヘルプウィンドウを隠す @help_window.visible = false # ステータスウィンドウをリフレッシュ @status_window.refresh # 積算ダメージの描写 for target in @target_battlers if target.linked_all_dmg != nil target.damage = target.linked_all_dmg target.damage_pop = true target.linked_all_dmg = nil # 途中で死んでたらトドメさす if target.dead_end target.hp = 0 target.dead_end = false end end end # ステップ 6 に移行 @phase4_step = 6 return end else update_phase4_step5_skill_link # 原物 end # 連携終了チェック 一括でない場合は終了 if $skill_link_end and !LINK_DMG_ALL return end if $skill_linked if @skill_link_name != nil # ヘルプウィンドウを隠さない @help_window.visible = true end # 次の連携スキルセット next_link = @skill_link[@skill_linked_cnt] # 使えないなら発動しない(SP切れ) if next_link != nil and @active_battler.skill_can_use?(next_link[0]) # 連携スキル発動 @active_battler.current_action.skill_id = next_link[0] @skill_linked_cnt += 1 if @skill_linked_cnt >= @skill_link_cnt $skill_link_end = true end @phase4_step = 2 else $skill_link_end = true # ダメージ表示をさせる @phase4_step = 5 return end end end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler include Skill_link attr_accessor :linked_all_dmg # 積算ダメージ attr_accessor :dead_end # 死亡フラグ #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_skill_link initialize def initialize initialize_skill_link @linked_all_dmg = nil @dead_end = false end #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 (バトラー) # skill : スキル #-------------------------------------------------------------------------- alias skill_effect_skill_link skill_effect def skill_effect(user, skill) ret = skill_effect_skill_link(user, skill) # 原物 if self.dead? and $skill_linked $skill_link_end = true # 一括の場合はまだ生かしておく if LINK_DMG_ALL self.dead_end = true self.hp = 1 end end # ダメージの蓄積 if LINK_DMG_ALL and $skill_linked and self.damage != "Miss" if @linked_all_dmg == nil @linked_all_dmg = 0 end @linked_all_dmg += self.damage self.damage = nil end return ret end end