=begin *規約* なし *使い方* この素材はなるべく上の方においてください。 ドラゴンクエストのメタルスライムのような敵を設定できるスクリプトです。 敵キャラのメモに <メタルエネミー:0.6> と書くと、その敵は60%の確率で1、40%で0ダメージのみ与えられる メタルエネミーになります。 もしクリティカルが発生した場合は、物理攻撃なら攻撃者の攻撃力、 魔法攻撃なら魔力と同値のダメージを与えます。 必中攻撃の場合は攻撃力か魔力の高い方と同値のダメージになります。 スキル、アイテム、武器のメモに <メタル斬り:1> と書くと、メタルエネミーに必ず1ダメージ与えられるスキル、アイテム、武器になります。 <メタル斬り:rand(2)+1> と書くと、与ダメは1~2と分散します。 (「+n」のnが最低値、「rand(m)」のmがnを基準とした分散の範囲です) また、武器とスキルのメタル斬り特徴が重複した場合、 それぞれ加算されて与ダメージが増えます。 =end module Metal_Dead #以下設定項目 #このIDのステートが付与されたときだけメタルエネミーを即死させることができます。 #(ザキやきゅうしょづきは無効だが毒針なら即死が効くというのができます) ID = 42 end =begin 以下、おまけの解説 メタルエネミーの特徴に「魔法ダメージ率0%」や「魔法回避率100%」と設定すれば魔法が 一切通用しなくなります。 (イベントコマンドで設定可能) また、いわゆるまじん斬りを作りたい場合はそのスキルのメモと計算式に以下のように 書いてください ↓メモ(nの値は任意) <メタル斬り:rand < 0.375 ? a.atk * n : 0> ↓計算式 rand < 0.375 ? a.atk * n : 0 =end #ここから下は改変不要です# class RPG::Weapon < RPG::EquipItem def metal_killer @metal_killer ||= note =~ /<メタル斬り[:: ]([^ \n]+)>/ ? $1.to_s : "0" end end class RPG::UsableItem < RPG::BaseItem def metal_killer @metal_killer ||= note =~ /<メタル斬り[:: ]([^ \n]+)>/ ? $1.to_s : "0" end end class RPG::Enemy < RPG::BaseItem def metal_e @metal_e ||= /<メタルエネミー[::  ]([^ \n]+)>/ =~ note ? $1.to_s : "false" end end class Game_Enemy < Game_Battler def metal_e enemy.metal_e end end class Game_Actor < Game_Battler def metal_e "false" end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● ダメージ計算 #-------------------------------------------------------------------------- alias make_damage_value_metal_enemy make_damage_value def make_damage_value(user, item) a = user ; b = self if enemy? && eval(metal_e) && !item.damage.recover? if user.actor? && (user.weapons.any?{|w|w.metal_killer != "0"} || item.metal_killer != "0") value = eval(item.metal_killer) value += user.weapons.inject(0){|v,w|v += eval(w.metal_killer)} if item.is_a?(RPG::Skill) else value = rand < eval(metal_e) ? 1 : 0 end if @result.critical value = user.atk if item.physical? value = user.mat if item.magical? value = [user.atk, user.mat].max if item.certain? end value *= item_element_rate(user, item) value *= pdr if item.physical? value *= mdr if item.magical? value = apply_guard(value) @result.make_damage(value.to_i, item) else make_damage_value_metal_enemy(user,item) end end #-------------------------------------------------------------------------- # ● 新しいステートの付加 #-------------------------------------------------------------------------- alias add_new_state_metal_enemy add_new_state def add_new_state(state_id) if eval(metal_e) die if state_id == Metal_Dead::ID @states.push(state_id) on_restrict if restriction > 0 sort_states refresh else add_new_state_metal_enemy(state_id) end end end