#==============================================================================
# VX to XP詰め合わせせっと by 貪藻矢射妥←
#------------------------------------------------------------------------------
# VXの以下の標準機能をXPで再現します。
#
# ・逆効果と相殺
# ・クスリの知識
# ・強力防御
# ・クリティカル多
#
#==============================================================================
# 変更点
#
# 2011:07:01
# ・それぞれ、複数の効果をもつ場合に対応
#
# 2011:09:04
# ・Silfeed Arks様の『敵の行動に対して発動させるスキル』が紛れていたので除外
#
# 2011:12:08
# ・VX風Vocab対応
#
# 2016:03:01
# ・外部フラグ追加
# ・武器による命中精度対応
# ・各種ステートID配列をハッシュから生成するように変更
#
# 2020:11:01
# ・強力防御が二重計上される不具合を修正
module VX_TO_XP
# 逆効果と相殺の属性ID
SIE = 31
# クリティカルの変動値。
# クリティカル頻発によって通常の何倍になるのか?
# ステートID => 倍数
CRITICAL_RATE = {201=>3, 291=>4}
# 強力防御の変動値。
# 強力防御によって通常の何倍になるのか?
# ステートID => 倍数
GUARD_RATE = {199=>2, 289=>3}
# 薬の知識の変動値。
# 薬の知識によって通常の何倍になるのか?
# ステートID => 倍数
DRUG_RATE = {200=>2, 290=>3}
# クリティカルの増幅値。
# クリティカルによってダメージが通常の何倍になるのか?
# 参考:
# XP 2倍
# VX 3倍
CRITICAL_BST = 3
# ステートID配列 ※自動生成、通常は気にしない
# 強力防御
SUPER_GUARD = GUARD_RATE.keys
# クスリの知識
DRUG_KNOWN = DRUG_RATE.keys
# クリティカル多
CRITICAL_MOST = CRITICAL_RATE.keys
end
$OuterFlgs = {} if $OuterFlgs == nil
$OuterFlgs["VX_2_XP"] = true
class Game_Battler
include Vocab
#--------------------------------------------------------------------------
# ● ステートの付加
# state_id : ステート ID
# force : 強制付加フラグ (オートステートの処理で使用)
#--------------------------------------------------------------------------
def add_state(state_id, force = false)
# 無効なステートの場合
if $data_states[state_id] == nil
# メソッド終了
return
end
# 強制付加ではない場合
unless force
# 既存のステートのループ
for i in @states
# 新しいステートが既存のステートのステート変化 (-) に含まれており、
# そのステートが新しいステートのステート変化 (-) には含まれない場合
# (ex : 戦闘不能のときに毒を付加しようとした場合)
if $data_states[i].minus_state_set.include?(state_id) and
not $data_states[state_id].minus_state_set.include?(i)
# メソッド終了
return
end
end
end
# このステートが付加されていない場合
unless state?(state_id)
# 逆位相で相殺機能Offの場合
unless state_offset?(state_id)
# ステート ID を @states 配列に追加
@states.push(state_id)
end
# オプション [HP 0 の状態とみなす] が有効の場合
if $data_states[state_id].zero_hp
# HP を 0 に変更
@hp = 0
end
# 全ステートのループ
for i in 1...$data_states.size
# ステート変化 (+) 処理
if $data_states[state_id].plus_state_set.include?(i)
add_state(i)
end
# ステート変化 (-) 処理
if $data_states[state_id].minus_state_set.include?(i)
remove_state(i)
end
end
# レーティングの大きい順 (同値の場合は制約の強い順) に並び替え
@states.sort! do |a, b|
state_a = $data_states[a]
state_b = $data_states[b]
if state_a.rating > state_b.rating
-1
elsif state_a.rating < state_b.rating
+1
elsif state_a.restriction > state_b.restriction
-1
elsif state_a.restriction < state_b.restriction
+1
else
a <=> b
end
end
end
# 強制付加の場合
if force
# 自然解除の最低ターン数を -1 (無効) に設定
@states_turn[state_id] = -1
end
# 強制付加ではない場合
unless @states_turn[state_id] == -1
# 自然解除の最低ターン数を設定
@states_turn[state_id] = $data_states[state_id].hold_turn
end
# 行動不能の場合
unless movable?
# アクションをクリア
@current_action.clear
end
# HP および SP の最大値チェック
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
#--------------------------------------------------------------------------
# ● 相殺するべきステートかどうかの判定
# state_id : ステート ID
#
# 新しく追加しようとするステートの属性防御に『逆効果と相殺』が含まれていて、
# 付加しようとするステートのマイナスセットに現在付加されているステートの
# 少なくともひとつが含まれている場合はステートを解除するだけで、ステートの
# 追加を行わず、それ以外の場合にステートの付加を行う。
#--------------------------------------------------------------------------
def state_offset?(state_id)
return false unless $data_states[state_id].guard_element_set.include?(VX_TO_XP::SIE)
for i in @states
return true if $data_states[state_id].minus_state_set.include?(i)
end
return false
end
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
# attacker : 攻撃者 (バトラー)
#--------------------------------------------------------------------------
★★★ 一撃必殺カスタマイズ 参照 ★★★
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者 (バトラー)
# skill : スキル
#--------------------------------------------------------------------------
★★★ Surume_2K_2_XP 参照 ★★★
#--------------------------------------------------------------------------
# ● アイテムの効果適用
# item : アイテム
#--------------------------------------------------------------------------
★★★ '0X to XP:パラメーター上昇アイテムの複数化 参照 ★★★
end
|