136 lines
No EOL
5.9 KiB
Ruby
136 lines
No EOL
5.9 KiB
Ruby
class RPG::UsableItem::Damage
|
||
#--------------------------------------------------------------------------
|
||
# ○ 魔法攻撃倍率の共通計算式 ※再定義
|
||
#--------------------------------------------------------------------------
|
||
=begin
|
||
def magic_attack(element_id)
|
||
"(100 + a.mat + a.last_tp - b.mdf - b.tp) * 0.01 * a.atk_elements_rate(#{element_id})"
|
||
end
|
||
=end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 魔法攻撃倍率の共通計算式 ※再定義
|
||
#--------------------------------------------------------------------------
|
||
def element_magic(element_id)
|
||
"[a.atk_elements_rate(#{element_id}), 0.1].max"
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 巻物アイテムの共通計算式
|
||
#--------------------------------------------------------------------------
|
||
def scroll_magic(skill_id)
|
||
"($data_skills[#{skill_id}].base + ($data_skills[#{skill_id}].plus * 3))"
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 計算式の文字列置き換え
|
||
#--------------------------------------------------------------------------
|
||
alias element_change_formula change_formula
|
||
def change_formula
|
||
result = element_change_formula
|
||
result.gsub!(/e_id\[(\d+)\]/i) { element_magic($1.to_i) }
|
||
result.gsub!(/scroll\[(\d+)\]/i){ scroll_magic($1.to_i) }
|
||
result
|
||
=begin
|
||
result = @formula.clone
|
||
result.gsub!("n_a") { normal_attack }
|
||
result.gsub!("m_a") { magic_attack }
|
||
result.gsub!("c_a") { charm_attack }
|
||
result.gsub!("m_g") { magic_guard }
|
||
result.gsub!(/e_id\[(\d+)\]/i) { element_magic($1.to_i) }
|
||
result.gsub!(/s_lv\[(\d+)\]/i) { skill_lv_attack($1.to_i) }
|
||
result
|
||
=end
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Game_BattlerBase
|
||
#------------------------------------------------------------------------------
|
||
# バトラーを扱う基本のクラスです。主に能力値計算のメソッドを含んでいます。こ
|
||
# のクラスは Game_Battler クラスのスーパークラスとして使用されます。
|
||
#==============================================================================
|
||
|
||
class Game_BattlerBase
|
||
#--------------------------------------------------------------------------
|
||
# ○ 属性攻撃率の取得
|
||
#--------------------------------------------------------------------------
|
||
def atk_elements_rate(element_id)
|
||
return 1.0 + default_aer(element_id)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ アクター固有属性攻撃率の取得
|
||
#--------------------------------------------------------------------------
|
||
def default_aer(element_id)
|
||
return 0.0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 属性IDを名前に変換
|
||
#--------------------------------------------------------------------------
|
||
def elements_comvert(element_id)
|
||
case element_id
|
||
when 0 ; "無"
|
||
when 50 ; "回復"
|
||
else ; $data_system.elements[element_id]
|
||
end
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Game_Actor
|
||
#------------------------------------------------------------------------------
|
||
# アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
|
||
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
|
||
#==============================================================================
|
||
|
||
class Game_Actor < Game_Battler
|
||
#--------------------------------------------------------------------------
|
||
# ○ アクター固有属性攻撃率の取得
|
||
#--------------------------------------------------------------------------
|
||
def default_aer(element_id)
|
||
element_name = elements_comvert(element_id)
|
||
return $1.to_i * 0.01 if actor.note =~ /\<#{element_name}属性倍率:(\-?\+?\d+)\>/
|
||
return 0.0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 属性攻撃率の取得
|
||
#--------------------------------------------------------------------------
|
||
def atk_elements_rate(element_id)
|
||
element_name = elements_comvert(element_id)
|
||
full_equip_plus_states.inject(super) do |r, obj|
|
||
r += $1.to_i * 0.01 if obj.note =~ /\<#{element_name}属性倍率:(\-?\+?\d+)\>/
|
||
r
|
||
end
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Game_Enemy
|
||
#------------------------------------------------------------------------------
|
||
# 敵キャラを扱うクラスです。このクラスは Game_Troop クラス($game_troop)の
|
||
# 内部で使用されます。
|
||
#==============================================================================
|
||
|
||
class Game_Enemy < Game_Battler
|
||
#--------------------------------------------------------------------------
|
||
# ○ エネミー固有属性攻撃率の取得
|
||
#--------------------------------------------------------------------------
|
||
def default_aer(element_id)
|
||
#element_name = elements_comvert(element_id)
|
||
#return $1.to_i * 0.01 if enemy.note =~ /\<#{element_name}属性倍率:(\-?\+?\d+)\>/
|
||
return 0.0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 属性攻撃率の取得
|
||
#--------------------------------------------------------------------------
|
||
def atk_elements_rate(element_id)
|
||
element_name = elements_comvert(element_id)
|
||
feature_objects.inject(super) do |r, obj|
|
||
r += $1.to_i * 0.01 if obj.note =~ /\<#{element_name}属性倍率:(\-?\+?\d+)\>/ && !difficulty_easy?
|
||
r
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ○ 難易度イージーか
|
||
#--------------------------------------------------------------------------
|
||
def difficulty_easy?
|
||
difficulty_score == 0
|
||
end
|
||
end |