rebf-gaiden/Scripts/_Ver1_12.rb
2025-04-26 17:06:34 -05:00

153 lines
5.9 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_ダメージ倍率拡張 Ver1.12
#==============================================================================
=begin
作者tomoaky
webサイトひきも記 (http://hikimoki.sakura.ne.jp/)
使用者が条件を満たしている場合にダメージ補正がかかるスキルを
作成できるようになります。
スキル(アイテム)のメモ欄に以下のタグを書き込んでください。
 <自ステ特効 2, 150>
 使用者がステート2番にかかっている状態のとき
 スキルの威力が 1.5 倍になります。
 <武器特効 3, 50>
使用者が武器タイプ武器のIDではありませんの武器を装備しているとき
スキルの威力が半分になります。
<防具特効 1, 200>
使用者が防具タイプ防具のIDではありませんの防具を装備しているとき
スキルの威力が 2.0 倍になります。
<復讐特効 130>
仲間の戦闘不能者数だけスキルの威力が 1.3 倍になります。
 複数の条件を設定する場合は、必ず1行に1個のタグを書き込んでください。
 複数の条件を同時に満たした場合はそのすべての倍率が適用されます。
2012.04.03 Ver1.12
・タグを複数指定した際、倍率が正しく計算されない不具合を修正
2012.03.07 Ver1.11
・復讐特効タグが正しく動作しない不具合を修正
2012.02.17 Ver1.1
・復讐特効タグを追加
2012.02.14 Ver1.0
公開
=end
#==============================================================================
# ■ RPG::UsableItem
#==============================================================================
class RPG::UsableItem
#--------------------------------------------------------------------------
# ○ 使用者ステート特効の設定を取得
#--------------------------------------------------------------------------
def damage_rate_user_states
unless @damage_rate_user_states
@damage_rate_user_states = []
@note.each_line do |line|
if /<自ステ特効\s*(\d+)\s*\,\s*(\d+)\s*>/ =~ line
@damage_rate_user_states.push([$1.to_i, $2.to_i])
end
end
end
@damage_rate_user_states
end
#--------------------------------------------------------------------------
# ○ 武器特効の設定を取得
#--------------------------------------------------------------------------
def damage_rate_user_wtypes
unless @damage_rate_user_wtypes
@damage_rate_user_wtypes = []
@note.each_line do |line|
if /<武器特効\s*(\d+)\s*\,\s*(\d+)\s*>/ =~ line
@damage_rate_user_wtypes.push([$1.to_i, $2.to_i])
end
end
end
@damage_rate_user_wtypes
end
#--------------------------------------------------------------------------
# ○ 防具特効の設定を取得
#--------------------------------------------------------------------------
def damage_rate_user_atypes
unless @damage_rate_user_atypes
@damage_rate_user_atypes = []
@note.each_line do |line|
if /<防具特効\s*(\d+)\s*\,\s*(\d+)\s*>/ =~ line
@damage_rate_user_atypes.push([$1.to_i, $2.to_i])
end
end
end
@damage_rate_user_atypes
end
#--------------------------------------------------------------------------
# ○ 復讐特効の設定を取得
#--------------------------------------------------------------------------
def damage_rate_dead_member
/<復讐特効\s*(\d+)\s*>/ =~ @note ? $1.to_i : nil
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ○ 特定のタイプの武器を装備しているか
#--------------------------------------------------------------------------
def wtype_equipped?(wtype_id)
return false
end
#--------------------------------------------------------------------------
# ○ 特定のタイプの防具を装備しているか
#--------------------------------------------------------------------------
def atype_equipped?(atype_id)
return false
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの属性修正値を取得
#--------------------------------------------------------------------------
alias tmdmgrate_game_battler_item_element_rate item_element_rate
def item_element_rate(user, item)
result = tmdmgrate_game_battler_item_element_rate(user, item)
item.damage_rate_user_states.each do |data|
result *= data[1] / 100.0 if user.state?(data[0])
end
item.damage_rate_user_wtypes.each do |data|
result *= data[1] / 100.0 if user.wtype_equipped?(data[0])
end
item.damage_rate_user_atypes.each do |data|
result *= data[1] / 100.0 if user.atype_equipped?(data[0])
end
if user.actor?
rate = item.damage_rate_dead_member
if rate
rate /= 100.0
$game_party.members.each {|actor| result *= rate if actor.dead? }
end
end
result
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor
#--------------------------------------------------------------------------
# ○ 特定のタイプの防具を装備しているか
#--------------------------------------------------------------------------
def atype_equipped?(atype_id)
armors.any? {|armor| armor.atype_id == atype_id }
end
end