RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。
(A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。
#==============================================================================
# ■ 特殊なダメージ計算
#------------------------------------------------------------------------------
# RPGツクールVX Ace よろしくダメージ計算式をスキルごとに設定可能にします。
# (C) ルファー
# WebSite https://tkoolerlufar.pages.dev/
#==============================================================================
=begin
=対応RGSS
2
=他の素材との競合の可能性
!.. パラメータ追加系や、ダメージ計算に干渉する他素材に注意
=使い方
ダメージ計算式を入れたいスキルの「メモ」に
半角で "formula" と入れて改行してください。
その続きがダメージ計算式として使われます。
VXAce 同様に、以下の変数を計算式に入れられます。
* a.hp ... スキル使用者の残り HP
* a.maxhp ... スキル使用者の最大 HP
* a.mp ... スキル使用者の残り MP
* a.maxmp ... スキル使用者の最大 MP
* a.atk ... スキル使用者の攻撃力
* a.def ... スキル使用者の防御力
* a.spi ... スキル使用者の精神力
* a.agi ... スキル使用者の敏捷性
* b.hp ... スキル対象者の残り HP
* b.maxhp ... スキル対象者の最大 HP
* b.mp ... スキル対象者の残り MP
* b.maxmp ... スキル対象者の最大 MP
* b.atk ... スキル対象者の攻撃力
* b.def ... スキル対象者の防御力
* b.spi ... スキル対象者の精神力
* b.agi ... スキル対象者の敏捷性
* v[n] ... 変数の値 (イベントコマンド「文章の表示」で使う \V[n] と大体同じ)
= 例
* 使用者の残り HP が威力に比例する技
formula
a.hp / 2 + a.atk * 4 - b.def * 2
* 100番の変数で威力を指定する魔法
formula
v[100] + a.spi * 2 - b.spi
* 対象者の残り HP を 75% 削る
formula
b.hp * 4 / 3 + 1
* 対象者の最大 HP の 50% 分の回復
formula
b.maxhp / (-2)
* 固定ダメージ
formula
500
=更新履歴
2014/12/28 公開
=再定義しているメソッド
Game_Battler#make_obj_damage_value
=end
#----------------------------------------------------------------------------
# ◆ Lufar モジュール
#----------------------------------------------------------------------------
module Lufar
module SpecialDamageCalc
KEYWORD = "formula"
end
end
class Game_Battler
#--------------------------------------------------------------------------
# ● スキルまたはアイテムによるダメージ計算
# user : スキルまたはアイテムの使用者
# obj : スキルまたはアイテム
# 結果は @hp_damage または @mp_damage に代入する。
#--------------------------------------------------------------------------
alias _Lufar_SpecialDamageCalc_make_obj_damage_value make_obj_damage_value
def make_obj_damage_value(*args)
user, obj = args
if obj.note =~ /^#{Lufar::SpecialDamageCalc::KEYWORD}(\r?\n|\r)(.*)\z/m
begin
formula = $~[-1]
a, b, v = user, self, $game_variables
damage = Kernel.eval(formula).to_i # 基本ダメージ計算
damage *= elements_max_rate(obj.element_set) # 属性修正
damage /= 100
damage = apply_variance(damage, obj.variance) # 分散
damage = apply_guard(damage) # 防御修正
if obj.damage_to_mp
@mp_damage = damage # MP にダメージ
else
@hp_damage = damage # HP にダメージ
end
rescue Exception
print "ダメージ計算中に #{$!.class} が発生しました。\n#{$!.message}"
@mp_damage =
@hp_damage = 0
end
else
_Lufar_SpecialDamageCalc_make_obj_damage_value(*args)
end
end
end
戻る