#============================================================================== # ■ RGSS3 能力値増加特徴 Ver2.01a by 星潟 #------------------------------------------------------------------------------ # 特徴を有する項目による能力値増加を割合の他に # 特定の値で増加させる事が可能になります。 # 長すぎて2行になっても、自分で改行を行っていないのであれば機能すると思います。 # 記述方法を変える事で常時増加させる場合と # 戦闘中のみ増加させる場合とで使い分けが可能です。 # なお、マイナスの値が指定された場合は、減算扱いとなります。 #------------------------------------------------------------------------------ # 設定例(職業・ステート等のメモ欄に記入) # # 最大HPが500増加する。 # # # 最大MPが250増加する。 # # # 戦闘中、自分の現在HPの5分の1分、攻撃力が増加する。 # # # 戦闘中、生存している味方数の50倍分、防御力が増加する。 # # # 魔法力が変数9の値分増加する。 # # # 魔法防御がアイテムID5の所持数×10分増加する。 # # # 敏捷性が所持金の1000分の1の値分増加する。 # # # 戦闘中、運の値を常に0〜999の間のどれかの値で増加する。 # # # 命中率が変数11の値%分増加する。 # # # 狙われ率が50%増加する。 # # # HP弱体有効度が50%減少する。(耐性上昇) # # # 属性ID3の有効度が75%低下する。(耐性上昇) # # # ステートID2の有効度が25%増加する。(耐性低下) #------------------------------------------------------------------------------ # なお、処理によってはループしてエラーを吐く場合がある為 # キャラクターの能力値が相互に影響を及ぼすような設定は避けて下さい。 # (と設定したり # を1キャラクターに設定したり # 常時増加値として敵のデータを参照するように設定するとエラーを吐きます) # # Ver1.01 テスト用のp文を消去。 # Ver1.02 指定値強化・弱体アイテム・スキルとの競合を解消。 # Ver2.00 新たに追加能力値/特殊能力値/弱体有効度 # 属性有効度/ステート有効度への設定が可能になりました。 # Ver2.01 属性有効度/ステート有効度への設定が # 1つしか有効にならない不具合を修正しました。 #============================================================================== module VU_F #============================================================================== #空のハッシュを準備します。(消さないで下さい) #------------------------------------------------------------------------------ W1 = {} #============================================================================== #通常能力値設定用キーワードを括弧内に設定します。 #最大HPから運までの8種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[0] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[0].push("MHP")# 最大HP W1[0].push("MMP")# 最大MP W1[0].push("ATK")# 攻撃力 W1[0].push("DEF")# 防御力 W1[0].push("MAT")# 魔法力 W1[0].push("MDF")# 魔法防御 W1[0].push("AGI")# 敏捷性 W1[0].push("LUK")# 運 #============================================================================== #追加能力値設定用キーワードを括弧内に設定します。 #命中率からTP再生率までの10種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[1] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[1].push("HIT")# 命中率 W1[1].push("EVA")# 回避率 W1[1].push("CRI")# 会心率 W1[1].push("CEV")# 会心回避率 W1[1].push("MEV")# 魔法回避率 W1[1].push("MRF")# 魔法反射率 W1[1].push("CNT")# 反撃率 W1[1].push("HRG")# HP再生率 W1[1].push("MRG")# MP再生率 W1[1].push("TRG")# TP再生率 #============================================================================== #特殊能力値設定用キーワードを括弧内に設定します。 #狙われ率から経験値獲得率までの10種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[2] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[2].push("TGR")# 狙われ率 W1[2].push("GRD")# 防御効果率 W1[2].push("REC")# 回復効果率 W1[2].push("PHA")# 薬の知識 W1[2].push("MCR")# MP消費率 W1[2].push("TCR")# TPチャージ率 W1[2].push("PDR")# 物理ダメージ率 W1[2].push("MDR")# 魔法ダメージ率 W1[2].push("FDR")# 床ダメージ率 W1[2].push("EXR")# 経験獲得率 #============================================================================== #弱体有効度設定用キーワードを括弧内に設定します。 #最大HPから運までの8種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[3] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[3].push("DBMHP")# 最大HP W1[3].push("DBMMP")# 最大MP W1[3].push("DBATK")# 攻撃力 W1[3].push("DBDEF")# 防御力 W1[3].push("DBMAT")# 魔法力 W1[3].push("DBMDF")# 魔法防御 W1[3].push("DBAGI")# 敏捷性 W1[3].push("DBLUK")# 運 #============================================================================== #戦闘中に限定して作用する通常能力値設定用キーワードを括弧内に設定します。 #最大HPから運までの8種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[4] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[4].push("BMHP")# 最大HP弱体 W1[4].push("BMMP")# 最大MP弱体 W1[4].push("BATK")# 攻撃力弱体 W1[4].push("BDEF")# 防御力弱体 W1[4].push("BMAT")# 魔法力弱体 W1[4].push("BMDF")# 魔法防御弱体 W1[4].push("BAGI")# 敏捷性弱体 W1[4].push("BLUK")# 運弱体 #============================================================================== #戦闘中に限定して作用する追加能力値設定用キーワードを括弧内に設定します。 #命中率からTP再生率までの10種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[5] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[5].push("BHIT")# 命中率 W1[5].push("BEVA")# 回避率 W1[5].push("BCRI")# 会心率 W1[5].push("BCEV")# 会心回避率 W1[5].push("BMEV")# 魔法回避率 W1[5].push("BMRF")# 魔法反射率 W1[5].push("BCNT")# 反撃率 W1[5].push("BHRG")# HP再生率 W1[5].push("BMRG")# MP再生率 W1[5].push("BTRG")# TP再生率 #============================================================================== #戦闘中に限定して作用する特殊能力値設定用キーワードを括弧内に設定します。 #狙われ率から経験値獲得率までの10種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[6] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[6].push("BTGR")# 狙われ率 W1[6].push("BGRD")# 防御効果率 W1[6].push("BREC")# 回復効果率 W1[6].push("BPHA")# 薬の知識 W1[6].push("BMCR")# MP消費率 W1[6].push("BTCR")# TPチャージ率 W1[6].push("BPDR")# 物理ダメージ率 W1[6].push("BMDR")# 魔法ダメージ率 W1[6].push("BFDR")# 床ダメージ率 W1[6].push("BEXR")# 経験獲得率 #============================================================================== #戦闘中に限定して作用する弱体有効度設定用キーワードを括弧内に設定します。 #最大HPから運までの8種を順番に設定します。(変更不要です) #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W1[7] = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W1[7].push("BDBMHP")# 最大HP弱体 W1[7].push("BDBMMP")# 最大MP弱体 W1[7].push("BDBATK")# 攻撃力弱体 W1[7].push("BDBDEF")# 防御力弱体 W1[7].push("BDBMAT")# 魔法力弱体 W1[7].push("BDBMDF")# 魔法防御弱体 W1[7].push("BDBAGI")# 敏捷性弱体 W1[7].push("BDBLUK")# 運弱体 #============================================================================== #属性有効度/ステート有効度設定用キーワードを順番に設定します。 #------------------------------------------------------------------------------ #空の配列を用意。 #------------------------------------------------------------------------------ W2 = [] #------------------------------------------------------------------------------ #★以下に設定★ #------------------------------------------------------------------------------ W2[0] = "ELE" #属性有効度 W2[1] = "STA" #ステート有効度 W2[2] = "BELE"#属性有効度(戦闘中のみ) W2[3] = "BSTA"#ステート有効度(戦闘中のみ) #============================================================================== end class Game_BattlerBase #-------------------------------------------------------------------------- # 通常能力値 #-------------------------------------------------------------------------- alias param_plus_exppf param_plus def param_plus(param_id) #元の処理に追加データを加算。 param_plus_exppf(param_id) + ppf_param_plus(0,param_id) end #-------------------------------------------------------------------------- # 追加能力値 #-------------------------------------------------------------------------- alias xparam_exppf xparam def xparam(param_id) #元の処理に追加データを加算。 xparam_exppf(param_id) + ppf_param_plus(1,param_id) end #-------------------------------------------------------------------------- # 特殊能力値 #-------------------------------------------------------------------------- alias sparam_exppf sparam def sparam(param_id) #元の処理に追加データを加算。 sparam_exppf(param_id) + ppf_param_plus(2,param_id) end #-------------------------------------------------------------------------- # 弱体有効度 #-------------------------------------------------------------------------- alias debuff_rate_exppf debuff_rate def debuff_rate(param_id) #元の処理に追加データを加算。 debuff_rate_exppf(param_id) + ppf_param_plus(3,param_id) end #-------------------------------------------------------------------------- # 属性有効度 #-------------------------------------------------------------------------- alias element_rate_exppf element_rate def element_rate(element_id) #元の処理に追加データを加算。 element_rate_exppf(element_id) + ppf_param_plus(4,element_id) end #-------------------------------------------------------------------------- # ステート有効度 #-------------------------------------------------------------------------- alias state_rate_exppf state_rate def state_rate(state_id) #元の処理に追加データを加算。 state_rate_exppf(state_id) + ppf_param_plus(5,state_id) end #-------------------------------------------------------------------------- # 追加データ #-------------------------------------------------------------------------- def ppf_param_plus(type,param_id) data = 0 #各特徴のデータを加算。 feature_objects.each {|f| case type when 0..3 #テキストデータを取得。 text = f.ex_p_data[0 + type][param_id] #テキストデータを取得出来た場合は分岐。 if text #基本追加データを計算。 sub_data = eval(f.ex_p_data[0 + type][param_id]) #データが正常な場合は加算。 data += sub_data if sub_data end #戦闘中でない場合は次の処理へ。 next unless $game_party.in_battle #テキストデータを取得。 text = f.ex_p_data[4 + type][param_id] #テキストデータを取得出来た場合は分岐。 if text #戦闘中限定追加データを計算。 sub_data = eval(text) #データが正常な場合は加算。 data += sub_data if sub_data end when 4..5 #テキストデータを取得。 text = f.ex_r_data[type - 4][param_id] #テキストデータを取得出来た場合は分岐。 if text #基本追加データを計算。 sub_data = eval(f.ex_r_data[type - 4][param_id]) #データが正常な場合は加算。 data += sub_data if sub_data end #戦闘中でない場合は次の処理へ。 next unless $game_party.in_battle #テキストデータを取得。 text = f.ex_r_data[type - 2][param_id] #テキストデータを取得出来た場合は分岐。 if text #戦闘中限定追加データを計算。 sub_data = eval(text) #データが正常な場合は加算。 data += sub_data if sub_data end end} #基本能力値でない場合は100.0で割る。 data / (type == 0 ? 1 : 100.0) end end class RPG::BaseItem #-------------------------------------------------------------------------- # 追加データ(基本能力値/追加能力値/特殊能力値/弱体有効度用) #-------------------------------------------------------------------------- def ex_p_data #増加値設定が既に存在するならそれを返す。 return @ex_p_data if @ex_p_data != nil #増加値設定用ハッシュを準備。 @ex_p_data = {} #8回分処理。 8.times {|n| #配列を生成。 @ex_p_data[n] = [] #設定項目内の文字列設定に応じてメモ欄からデータを取得。 VU_F::W1[n].each {|i| @ex_p_data[n].push(/<#{i}[::](\S+)>/ =~ @note ? $1.to_s : "0")}} #データを返す。 @ex_p_data end #-------------------------------------------------------------------------- # 追加データ(属性有効度/ステート有効度用) #-------------------------------------------------------------------------- def ex_r_data #増加値設定が既に存在するならそれを返す。 return @ex_r_data if @ex_r_data != nil #増加値設定用ハッシュを準備。 @ex_r_data = {} #4回分処理。 4.times {|n| #配列を生成。 @ex_r_data[n] = {} #行別に処理。 @note.each_line {|l| #設定項目内の文字列設定に応じて各行からデータを取得。 data = /<#{VU_F::W2[n]}[::](\d+),(\S+)>/ =~ l ? [$1.to_i,$2.to_s] : nil #nilの場合は次の行へ。 next unless data #データを登録。 @ex_r_data[n][data[0]] = data[1]}} #データを返す。 @ex_r_data end end