sacred-ritual-academy/Scripts/_.31.rb
2025-03-18 19:45:34 -05:00

381 lines
No EOL
18 KiB
Ruby
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# ■ 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)>
# 戦闘中、運の値を常に0999の間のどれかの値で増加する。
#
# <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