#----------------------------------------------------------------------------
# 属性詳細化 Plus By 貪藻矢射妥←
# ちょっとクセがあります・・・多分。
#----------------------------------------------------------------------------
# 原作: ▼▲▼ XRXS14. 属性防御/弱点詳細化 ▼▲▼
# 原作者: 森穂様、XRXS.様
# HP: 小さな本屋
# アドレス: http://xrxs.at-ninja.jp/
#
# 改造内容:
# ・XPの仕様(有効度が-100の場合で、属性が防御されている場合、半減されて
# 有効度が-50にになってしまう点)の改良
#
# 更新っぽいもの
# 2007:02:13
# ・プログラム総数を減少
#
# 2007:02:15
# ・カスタマイズポイントの作成+微修正
#
# 2009:05:07
# ・こっちに● スキルの使用可能判定 は別に不要な気がするので削除
# (と、いうかなんでこっちにも入れたんだっけ?)←アンタ以外にわかるか!
#
# 2010:10:17
# ・エネミー側の処理を追加(今まで忘れていました・・・)
#
# 2011:06:04
# ・無駄処理を削除
#
# 2011:07:01
# ・属性防御のみを設定した場合の処理を追加
# ・属性防御用ステートでマイナスのみを設定した場合、軽減ではなく、増加するように
# 変更
# ・ステートに属性防御が付加されている場合、半減ではなく、軽減に変更
# ・物理属性配列/魔法属性配列が逆になっていたバグを修正
#
# 2024:07:01
# ・『オマケで沈黙の拡張』がすでにここに存在しないので改造内容から削除
# ※つまり、スクリプト事態は何も変更なしって意味
$OuterFlgs = {} if $OuterFlgs == nil
$OuterFlgs["Element_Plus"] = true
module ELE_MM
ELE_MM_MAX = 200
ELE_MM_MIN = -200
# weakest 物理/魔法
WEEK_P = 0
WEEK_M = -200
# 物理属性配列/魔法属性配列
P_LIST = [11..15]
M_LIST = [1..9, 16]
# 属性防御のみを設定した場合の軽減値
DEFAULT_GUARD = 15
# 属性防御判定用
GRD_ELE_PLUS = 0 # 属性ダメージ増加
GRD_ELE_MINUS = 1 # 属性ダメージ反転
GRD_ELE_NONE = -1 # デフォルト
#--------------------------------------------------------------------------
# ● 属性補正値計算
# resut : 補正値
# element_id : 属性 ID
#--------------------------------------------------------------------------
def state_guard_ele(result, element_id)
# ガード用因子設定
gurd_factor = (100.0 / (100 - DEFAULT_GUARD))
if result > 0
# ステートでこの属性が防御されている場合は軽減(属性有効度が正の場合)
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= gurd_factor
end
end
else
# ステートでこの属性が防御されている場合は軽減(属性有効度が負の場合)
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result *= gurd_factor
end
end
end
return Integer(result)
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 属性補正値の取得
# element_id : 属性 ID
#--------------------------------------------------------------------------
★★★ クラス詳細化 + 進化 参照 ★★★
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 属性補正値の取得
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 属性有効度に対応する数値を取得
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
result = state_guard_ele(result, element_id)
# メソッド終了
return result
end
end
class Game_Battler
include ELE_MM
#--------------------------------------------------------------------------
# ● 属性修正の計算
# element_set : 属性
#--------------------------------------------------------------------------
def elements_correct(element_set)
# 無属性の場合
if element_set == []
# 100 を返す
return 100
end
# 与えられた属性の中で最も弱いものを返す
# ※メソッド element_rate は、このクラスから継承される Game_Actor
# および Game_Enemy クラスで定義される
weakest = -100
for i in element_set
# 魔法属性の場合
for tmp_value in M_LIST
if tmp_value.is_a?(Range) && tmp_value === i || tmp_value == i
weakest = [WEEK_M, self.element_rate(i)].max
#p $data_system.elements[i], weakest
end
end
# 物理属性の場合
for tmp_value in P_LIST
if tmp_value.is_a?(Range) && tmp_value === i || tmp_value == i
weakest = [WEEK_P, self.element_rate(i)].max
#p $data_system.elements[i], weakest
end
end
end
return weakest
end
end
|