381 lines
No EOL
18 KiB
Ruby
381 lines
No EOL
18 KiB
Ruby
#==============================================================================
|
||
# ■ RGSS3 能力値増加特徴 Ver2.01a by 星潟
|
||
#------------------------------------------------------------------------------
|
||
# 特徴を有する項目による能力値増加を割合の他に
|
||
# 特定の値で増加させる事が可能になります。
|
||
# 長すぎて2行になっても、自分で改行を行っていないのであれば機能すると思います。
|
||
# 記述方法を変える事で常時増加させる場合と
|
||
# 戦闘中のみ増加させる場合とで使い分けが可能です。
|
||
# なお、マイナスの値が指定された場合は、減算扱いとなります。
|
||
#------------------------------------------------------------------------------
|
||
# 設定例(職業・ステート等のメモ欄に記入)
|
||
# <MHP:500>
|
||
# 最大HPが500増加する。
|
||
#
|
||
# <MMP:250>
|
||
# 最大MPが250増加する。
|
||
#
|
||
# <BATK:self.hp/5>
|
||
# 戦闘中、自分の現在HPの5分の1分、攻撃力が増加する。
|
||
#
|
||
# <BDEF:friends_unit.alive_members.size*50>
|
||
# 戦闘中、生存している味方数の50倍分、防御力が増加する。
|
||
#
|
||
# <MAT:$game_variables[9]>
|
||
# 魔法力が変数9の値分増加する。
|
||
#
|
||
# <MDF:$game_party.item_number($data_items[5])*10>
|
||
# 魔法防御がアイテムID5の所持数×10分増加する。
|
||
#
|
||
# <AGI:$game_party.gold/1000>
|
||
# 敏捷性が所持金の1000分の1の値分増加する。
|
||
#
|
||
# <BLUK:rand(1000)>
|
||
# 戦闘中、運の値を常に0~999の間のどれかの値で増加する。
|
||
#
|
||
# <HIT:$game_variables[11]>
|
||
# 命中率が変数11の値%分増加する。
|
||
#
|
||
# <TGR:50>
|
||
# 狙われ率が50%増加する。
|
||
#
|
||
# <BMHP:-50>
|
||
# HP弱体有効度が50%減少する。(耐性上昇)
|
||
#
|
||
# <ELE:3,-75>
|
||
# 属性ID3の有効度が75%低下する。(耐性上昇)
|
||
#
|
||
# <STA:2,25>
|
||
# ステートID2の有効度が25%増加する。(耐性低下)
|
||
#------------------------------------------------------------------------------
|
||
# なお、処理によってはループしてエラーを吐く場合がある為
|
||
# キャラクターの能力値が相互に影響を及ぼすような設定は避けて下さい。
|
||
# (<ATK:self.param(2)>と設定したり
|
||
# <ATK:self.param(3)>と<DEF:self.param(2)>を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 |