#==============================================================================
# ■ RGSS3 強化・弱体拡張 Ver2.00 by 星潟
#------------------------------------------------------------------------------
# 強化・弱体の効果を変更し、上昇段階別の割合を細かく設定します。
# また、デフォルトでは強化/弱体は2段階が限界ですが
# この限界値を無制限に増加させます。
# これに際し、それぞれのアイコンが追加で必要になります。
# 10段階目までのアイコンは当方で用意し、併せて配布しております。
# (該当の画像使用時にはVX Aceの正規ユーザー登録が必要です。
# 既に素材アイコンを組み込んだアイコンファイルを使用されている方は
# 自力で画像の調整を行ってください)
# また、強化・弱体をいくら重ねても
# 表示だけは段階1から変わらなくする設定も可能です。
# この設定を有効にした場合、アイコンファイルに
# 新たにアイコンを追加する必要はなくなります。
# (表示が変わらないだけで効果はきちんと上乗せされていきます)
# 強化・弱体アイコン表示を完全に消滅させる事も可能です。
#
# Ver1.01 記述ミス2点を修正。
# Ver1.10 強化・弱体をリセットせずに強化・弱体段階を変更する機能を追加。
# Ver2.00 拡張スクリプトと統合・各種類別に段階変化による効果を変更可能に。
#==============================================================================
module B_D_EX
#強化を付与する際に、弱体段階をリセットするか、
#弱化を付与する際に、強体段階をリセットするかの設定を行います。
#trueの場合、強化する場合は、先に弱体が付与されていたら
#弱体の段階をリセットします。
#弱体する場合は、先に強化が付与されていたら
#強化の段階をリセットします。
#falseの場合、強化する場合は、先に弱体が付与されていたら
#弱体の段階を下げます。
#弱体する場合は、先に強化が付与されていたら
#強化の段階を下げます。
RESET = true
#強化最大段階を設定します。
BUFF_MAX = 10
#弱体最大段階を設定します。
DEBU_MAX = 10
#強化・弱体の各段階での強化割合を設定します。
#数値は%単位です。
#例えば5の場合、1段階分の強化・弱体で5%分の能力が変動します。
#[5,10,15,20,25,30,35,40,45,50]の場合
#1段階目では5%、2段階目では10%
#3段階目では1%、4段階目では20%……という事です。
#11段階目以降まで設定する場合は,で区切って続きを設定して下さい。
#最大HP強化割合
MHP_EFFECT1 = [3,6,9,12,15,18,21,24,27,30]
#最大HP弱体割合
MHP_EFFECT2 = [3,6,9,12,15,18,21,24,27,30]
#最大MP強化割合
MMP_EFFECT1 = [3,6,9,12,15,18,21,24,27,30]
#最大MP弱体割合
MMP_EFFECT2 = [3,6,9,12,15,18,21,24,27,30]
#攻撃力強化割合
ATK_EFFECT1 = [5,10,15,20,25,30,35,40,45,50]
#攻撃力弱体割合
ATK_EFFECT2 = [5,10,15,20,25,30,35,40,45,50]
#防御力強化割合
DEF_EFFECT1 = [5,10,15,20,25,30,35,40,45,50]
#防御力弱体割合
DEF_EFFECT2 = [5,10,15,20,25,30,35,40,45,50]
#魔法力強化割合
MAT_EFFECT1 = [5,10,15,20,25,30,35,40,45,50]
#魔法力弱体割合
MAT_EFFECT2 = [5,10,15,20,25,30,35,40,45,50]
#魔法防御強化割合
MDF_EFFECT1 = [5,10,15,20,25,30,35,40,45,50]
#魔法防御弱体割合
MDF_EFFECT2 = [5,10,15,20,25,30,35,40,45,50]
#敏捷性強化割合
AGI_EFFECT1 = [5,10,15,20,25,30,35,40,45,50]
#敏捷性弱体割合
AGI_EFFECT2 = [5,10,15,20,25,30,35,40,45,50]
#運強化割合
LUK_EFFECT1 = [5,10,15,20,25,30,35,40,45,50]
#運弱体割合
LUK_EFFECT2 = [5,10,15,20,25,30,35,40,45,50]
#強化・弱体のアイコンを使用するかを設定します。
#falseにした場合、強化・弱体アイコンはステート欄に表示されなくなります。
ICON_USE = true
#強化・弱体のアイコンを1つの種類につき
#1段階目のアイコンしか使用しないどうかを設定します。
#falseの場合、段階別にそれぞれアイコンが必要になります。
#trueの場合、1段階目のアイコンのみが使用されます。
ICON_FIX = false
#==============================================================================
# 以下2つはICON_FIXがtrueの場合の設定です。
#==============================================================================
#強化アイコンの読み込み開始位置を設定します。
#(デフォルトでは64です)
#指定位置から16個分のアイコンが強化アイコンとして使用されます。
B_I_E_D = 64
#弱体アイコンの読み込み開始位置を設定します。
#(デフォルトでは80です)
#指定位置から16個分のアイコンが弱体アイコンとして使用されます。
D_I_E_D = 80
#==============================================================================
# 以下2つはICON_FIXがfalseの場合の設定です。
#==============================================================================
#強化アイコンの読み込み開始位置を設定します。
#指定位置から最大段階×8個分のアイコンが強化アイコンとして使用されます。
B_I_L_O = 688
#弱体アイコンの読み込み開始位置を設定します。
#指定位置から最大段階×8個分のアイコンが弱体アイコンとして使用されます。
D_I_L_O = 768
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● ステートおよび強化/弱体のアイコンを描画
#--------------------------------------------------------------------------
alias draw_actor_icons_b_d_erase draw_actor_icons
def draw_actor_icons(actor, x, y, width = 96)
#強化/弱体のアイコンを表示しない場合は
#ステートのみを描画する。
#表示する場合は通常の処理を行う。
if B_D_EX::ICON_USE == false
icons = (actor.state_icons)[0, width / 24]
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
else
draw_actor_icons_b_d_erase(actor, x, y, width)
end
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 強化/弱体に対応するアイコン番号を取得
#--------------------------------------------------------------------------
def buff_icon_index(buff_level, param_id)
#強化段階に応じてアイコンを変更しない場合と
#変更する場合で処理を分ける。
if B_D_EX::ICON_FIX == false
if buff_level > 0
return B_D_EX::B_I_L_O + (buff_level - 1) * 8 + param_id
elsif buff_level < 0
return B_D_EX::D_I_L_O + (-buff_level - 1) * 8 + param_id
else
return 0
end
else
if buff_level > 0
return B_D_EX::B_I_E_D + param_id
elsif buff_level < 0
return B_D_EX::D_I_E_D + param_id
else
return 0
end
end
end
#--------------------------------------------------------------------------
# ● 通常能力値の強化/弱体による変化率取得
#--------------------------------------------------------------------------
def param_buff_rate(param_id)
#強化/弱体段階が0の場合、1.0を返す。
return 1.0 if @buffs[param_id] == 0
#強化/弱体の段階を取得する。
rank = @buffs[param_id].abs - 1
#強化/弱体化か、またその種類と段階によってデータを取得する。
if @buffs[param_id] > 0
case param_id
when 0;data = B_D_EX::MHP_EFFECT1[rank]
when 1;data = B_D_EX::MMP_EFFECT1[rank]
when 2;data = B_D_EX::ATK_EFFECT1[rank]
when 3;data = B_D_EX::DEF_EFFECT1[rank]
when 4;data = B_D_EX::MAT_EFFECT1[rank]
when 5;data = B_D_EX::MDF_EFFECT1[rank]
when 6;data = B_D_EX::AGI_EFFECT1[rank]
when 7;data = B_D_EX::LUK_EFFECT1[rank]
end
#強化情報を返す。
(data + 100) / 100.0
else
case param_id
when 0;data = B_D_EX::MHP_EFFECT2[rank]
when 1;data = B_D_EX::MMP_EFFECT2[rank]
when 2;data = B_D_EX::ATK_EFFECT2[rank]
when 3;data = B_D_EX::DEF_EFFECT2[rank]
when 4;data = B_D_EX::MAT_EFFECT2[rank]
when 5;data = B_D_EX::MDF_EFFECT2[rank]
when 6;data = B_D_EX::AGI_EFFECT2[rank]
when 7;data = B_D_EX::LUK_EFFECT2[rank]
end
#弱体情報を返す。
(100 - data) / 100.0
end
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 能力強化
#--------------------------------------------------------------------------
alias add_buff_reset add_buff
def add_buff(param_id, turns)
#弱体を相殺して消滅する場合はリセットを行う。
#そうでない場合は段階に加算し、通常の処理を行う。
if B_D_EX::RESET
add_buff_reset(param_id, turns)
else
return unless alive?
@buffs[param_id] += 1 unless buff_max?(param_id)
overwrite_buff_turns(param_id, turns)
@result.added_buffs.push(param_id).uniq!
refresh
end
end
#--------------------------------------------------------------------------
# ● 能力弱体
#--------------------------------------------------------------------------
alias add_debuff_reset add_debuff
def add_debuff(param_id, turns)
#強化を相殺して消滅する場合はリセットを行う。
#そうでない場合は段階に減算し、通常の処理を行う。
if B_D_EX::RESET
add_debuff_reset(param_id, turns)
else
return unless alive?
@buffs[param_id] -= 1 unless debuff_max?(param_id)
overwrite_buff_turns(param_id, turns)
@result.added_debuffs.push(param_id).uniq!
refresh
end
end
#--------------------------------------------------------------------------
# ● 能力強化が最大の段階か否かを判定
#--------------------------------------------------------------------------
def buff_max?(param_id)
@buffs[param_id] == B_D_EX::BUFF_MAX
end
#--------------------------------------------------------------------------
# ● 能力弱体が最大の段階か否かを判定
#--------------------------------------------------------------------------
def debuff_max?(param_id)
@buffs[param_id] == B_D_EX::DEBU_MAX * -1
end
end