#============================================================================== # ■ RGSS3 MP消費スキル・TP消費スキル個別封印ステート/特徴 Ver1.01 #------------------------------------------------------------------------------ # デフォルトでのスキルの封印はスキル個別かスキルタイプ別でしか行えませんが # このスクリプトを利用する事でMP消費スキル、TP消費スキルについて # それぞれに対する封印ステートか特徴を作成する事が出来るようになります。 # # 通常のスキル封印とは別に判定されますのでご注意ください。 #============================================================================== # スキルのメモ欄に指定 #------------------------------------------------------------------------------ # # # このスキルはMP消費量に関係なくMP消費スキルと判定される。 #------------------------------------------------------------------------------ # # # このスキルはTP消費量に関係なくTP消費スキルと判定される。 #------------------------------------------------------------------------------ # <非MP消費スキル> # # このスキルはMP消費量に関係なくMP消費スキルと判定されない。 # と同時に設定しないでください。 #------------------------------------------------------------------------------ # <非TP消費スキル> # # このスキルはTP消費量に関係なくTP消費スキルと判定されない。 # と同時に設定しないでください。 #============================================================================== # FModeがtrueの場合のみ、特徴を有する項目のメモ欄に指定 #------------------------------------------------------------------------------ # # # MP消費スキル封印状態になる。 #------------------------------------------------------------------------------ # # # TP消費スキル封印状態になる。 #============================================================================== module SSState #------------------------------------------------------------------------------ #ステートのみでなく特徴全体で封印判定を行うモードにします。 #この場合、スクリプト構成によっては負荷が大幅に高まる為注意が必要です。 #trueの場合は特徴全体、falseの場合はステートIDで指定 FMode = true #設定用キーワードを指定します。MP、TPの順です。 Words1 = ["MP消費スキル","TP消費スキル","非MP消費スキル","非TP消費スキル"] #---------------------------[FModeがtrueの場合専用]---------------------------- #FModeがtrueの場合のみ意味のあるキーワード設定を行います。 Words2 = ["MP消費スキル封印","TP消費スキル封印"] #---------------------------[FModeがfalseの場合専用]--------------------------- #MP消費スキルを封印するステートを設定します。 #複数設定する場合は[2, 3, 4]等のように、,で区切ってください。 #[]で囲むのも忘れずに。 MPS = [4] #TP消費スキルを封印するステートを設定します。 #複数設定する場合は[2, 3, 4]等のように、,で区切ってください。 #[]で囲むのも忘れずに。 TPS = [3] end class Game_BattlerBase #-------------------------------------------------------------------------- # スキルの使用可能条件チェック #-------------------------------------------------------------------------- alias skill_conditions_met_plus? skill_conditions_met? def skill_conditions_met?(skill) a = skill.force_cost_type return false if ((skill.mp_cost > 0 && !a[2]) or a[0]) && mps_sealing? return false if ((skill.tp_cost > 0 && !a[3]) or a[1]) && tps_sealing? skill_conditions_met_plus?(skill) end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # コストタイプ強制 #-------------------------------------------------------------------------- def force_cost_type (@force_cost_type ||= create_force_cost_type) end #-------------------------------------------------------------------------- # コストタイプ強制データ作成 #-------------------------------------------------------------------------- def create_force_cost_type SSState::Words1.inject([]) {|r,w| r .push(/<#{w}>/ =~ note ? true : false)} end end if SSState::FMode#FModeがtrueの場合 class Game_BattlerBase #-------------------------------------------------------------------------- # MP消費スキル封印状態か? #-------------------------------------------------------------------------- def mps_sealing? feature_objects.any? {|f| f.mps_sealing?} end #-------------------------------------------------------------------------- # TP消費スキル封印状態か? #-------------------------------------------------------------------------- def tps_sealing? feature_objects.any? {|f| f.tps_sealing?} end end class RPG::BaseItem #-------------------------------------------------------------------------- # MP消費スキル封印状態か? #-------------------------------------------------------------------------- def mps_sealing? (@mps_sealing ||= /<#{SSState::Words2[0]}>/ =~ note ? 1 : 0) == 1 end #-------------------------------------------------------------------------- # TP消費スキル封印状態か? #-------------------------------------------------------------------------- def tps_sealing? (@tps_sealing ||= /<#{SSState::Words2[1]}>/ =~ note ? 1 : 0) == 1 end end else#FModeがfalseの場合 class Game_BattlerBase #-------------------------------------------------------------------------- # MP消費スキル封印状態か? #-------------------------------------------------------------------------- def mps_sealing? SSState::MPS.any? {|i| state?(i)} end #-------------------------------------------------------------------------- # TP消費スキル封印状態か? #-------------------------------------------------------------------------- def tps_sealing? SSState::TPS.any? {|i| state?(i)} end end end