153 lines
5.9 KiB
Ruby
153 lines
5.9 KiB
Ruby
#==============================================================================
|
||
# ★ RGSS3_ダメージ倍率拡張 Ver1.12
|
||
#==============================================================================
|
||
=begin
|
||
|
||
作者:tomoaky
|
||
webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)
|
||
|
||
使用者が条件を満たしている場合にダメージ補正がかかるスキルを
|
||
作成できるようになります。
|
||
スキル(アイテム)のメモ欄に以下のタグを書き込んでください。
|
||
|
||
<自ステ特効 2, 150>
|
||
使用者がステート2番にかかっている状態のとき
|
||
スキルの威力が 1.5 倍になります。
|
||
|
||
<武器特効 3, 50>
|
||
使用者が武器タイプ3番(武器のIDではありません)の武器を装備しているとき
|
||
スキルの威力が半分になります。
|
||
|
||
<防具特効 1, 200>
|
||
使用者が防具タイプ1番(防具の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
|
||
|
||
|