#============================================================================== # ■対象のスキルを一時取得する使用効果 for RGSS3 Ver1.02-β # □作成者 kure # # 〇設定方法 #  スキルのメモ欄に<スキル共有 x, y>と書いて設定します。 #  xの値のターンだけ対象のスキルを共有して取得します。 # また IDyのステートとリンクし、解除されると共有が解除されます。 # #  xの値に0を入れるとターン制限が無くなります。 #  またxの値が1の場合ターン終了時にスキルが消えますので #  通常は2以上の値を入れて使用します。 # # ステートにリンクの設定を行わない場合はyの値を0にしてください。 # #  また戦闘終了時に一時取得スキルは初期化されます。 # #============================================================================== #============================================================================== # ●■ RPG::UsableItem(追加定義集積) #============================================================================== class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # ★ スキルの一時共有効果(追加定義) #-------------------------------------------------------------------------- def one_time_learn @note.match(/<スキル共有\s?(\d+)\s?,\s?(\d+)\s?>/) return $1 && $2 ? [$1.to_i, $2.to_i] : nil end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #スキルの読み込み処理------------------------------------------------------ #-------------------------------------------------------------------------- # ● 追加スキルの取得(エイリアス) #-------------------------------------------------------------------------- alias k_one_time_skill_before_added_skills added_skills def added_skills k_one_time_skill_before_added_skills + one_time_skills[0] end #-------------------------------------------------------------------------- # ● アクターが本来使用できるスキルIDのリスト(追加定義) #-------------------------------------------------------------------------- def battler_skill_id_list (@skills + features_set(FEATURE_SKILL_ADD)).uniq end #-------------------------------------------------------------------------- # ● 一時スキルの取得(追加定義) #-------------------------------------------------------------------------- def one_time_skills #一時スキルの配列が無い場合は作成 @one_time_skills ||= [[],-1,0] return @one_time_skills end #能力更新関連処理--------------------------------------------------------- #-------------------------------------------------------------------------- # ● ターン終了処理(エイリアス) #-------------------------------------------------------------------------- alias k_one_time_skill_before_on_turn_end on_turn_end def on_turn_end one_time_skill_turn_end k_one_time_skill_before_on_turn_end end #-------------------------------------------------------------------------- # ● 戦闘終了処理(エイリアス) #-------------------------------------------------------------------------- alias k_one_time_skill_before_on_battle_end on_battle_end def on_battle_end #戦闘終了時に一時スキルを初期化する @one_time_skills = [[],-1,0] k_one_time_skill_before_on_battle_end end #-------------------------------------------------------------------------- # ● 一時スキルのターンエンド処理(追加定義) #-------------------------------------------------------------------------- def one_time_skill_turn_end return unless @one_time_skills #残りターンをチェック(-1はターン制限なし) return if @one_time_skills[1] < 0 #残りターンを1減算 @one_time_skills[1] -= 1 #残りターンが残っている場合は処理を抜ける return if @one_time_skills[1] >= 0 @one_time_skills = [[],-1,0] end end #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● エネミー使用できるスキルIDのリスト(追加定義) #-------------------------------------------------------------------------- def battler_skill_id_list enemy.actions.collect{|action| action.skill_id} end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ◎ スキル/アイテムに有効な使用効果が一つでもあるかを判定(エイリアス) #-------------------------------------------------------------------------- alias k_one_time_skill_before_item_has_any_valid_effects? item_has_any_valid_effects? unless $! def item_has_any_valid_effects?(user, item) return true if k_one_time_skill_before_item_has_any_valid_effects?(user, item) return true if item.one_time_learn return false end #-------------------------------------------------------------------------- # ◎ 使用者側への効果適用(エイリアス再定義) #-------------------------------------------------------------------------- alias k_one_time_skill_before_item_user_effect item_user_effect unless $! def item_user_effect(user, item) k_one_time_skill_before_item_user_effect(user, item) user.set_one_time_skill(self, item) if item.one_time_learn end #-------------------------------------------------------------------------- # ● ステートの消去(エイリアス再定義) #-------------------------------------------------------------------------- alias k_one_time_skill_before_erase_state erase_state unless $! def erase_state(state_id) k_one_time_skill_before_erase_state(state_id) if @one_time_skills && @one_time_skills[2] == state_id @one_time_skills = [[],-1,0] end end #-------------------------------------------------------------------------- # ● 一時スキルのセット(追加定義) #-------------------------------------------------------------------------- def set_one_time_skill(target, item) return unless actor? @one_time_skills[0] = target.battler_skill_id_list @one_time_skills[1] = item.one_time_learn[0] - 1 @one_time_skills[2] = item.one_time_learn[2] target.result.success = true end end