158 lines
No EOL
5.8 KiB
Ruby
158 lines
No EOL
5.8 KiB
Ruby
=begin
|
||
RGSS3 追加スキル発動装備 ver.1.03 2012/04/08 mo-to
|
||
TKOOL COOL
|
||
http://mototkool.blog.fc2.com/
|
||
|
||
★概要★
|
||
通常攻撃をした際、追加でスキル発動する装備品。
|
||
|
||
★使用法★
|
||
スクリプトの▼ 素材 以下 ▼ メイン 以上にこれをコピーして張り付ける。
|
||
装備のメモ欄に <追加スキル n:m%> n=スキルID m=確率1~100と記述する。
|
||
例)武器(防具)のメモ欄に <追加スキル 51:50%> と記述すると
|
||
通常攻撃した際、デフォでは50%の確率で『ファイア』が発動される。
|
||
|
||
★注意・仕様★
|
||
設定している装備を複数付けている場合でも一種類しか発動しません。
|
||
その際の発動条件は装備しているもの全ての確率抽選をし、条件を満たしたものが
|
||
選ばれて発動します。
|
||
複数ともに条件を満たした場合は等確率ランダムでひとつ選ばれます。
|
||
・追加スキルは反撃、魔法反射の影響は受けません。
|
||
・追加スキルは発動しても消費コストが掛かりません。
|
||
・追加スキルは攻撃回数がx回の装備でも最初の一回のみ発動です。
|
||
|
||
★更新履歴★
|
||
ver.1.00 公開
|
||
ver.1.01 追加スキルにコモンイベントを使えるようにした
|
||
ver.1.02 アイテムを使用したとき追加スキルが発動することがある不具合を修正^^;
|
||
ver.1.03 魔法反射で行動不能に陥ったときエラー落ちする不具合を修正
|
||
=end
|
||
|
||
#↓カスタマイズ
|
||
module MOTO
|
||
|
||
#通常攻撃がミスでも発動するか?(true/false)
|
||
MISS_ADD_SKILL = false
|
||
|
||
#対象を通常攻撃で倒した際も別対象に発動するか?(true/false)
|
||
DEAD_ADD_SKILL = true
|
||
|
||
end
|
||
#ここまで
|
||
|
||
module RPG
|
||
class EquipItem < BaseItem
|
||
#--------------------------------------------------------------------------
|
||
# ☆ メモ欄取得
|
||
#--------------------------------------------------------------------------
|
||
def add_skill_attack_set
|
||
@add_skill_attack = []
|
||
self.note.each_line { |line|
|
||
case line
|
||
when /<追加スキル\s*(\d+):\s*(\d+)([%%])?>/
|
||
skill_id = $1.to_i
|
||
rate = $2.to_i
|
||
if @add_skill_attack[skill_id] == nil
|
||
@add_skill_attack[skill_id] = 0
|
||
end
|
||
@add_skill_attack[skill_id] += rate
|
||
end
|
||
}
|
||
end
|
||
def add_skill_attack
|
||
add_skill_attack_set if @add_skill_attack == nil
|
||
return @add_skill_attack
|
||
end
|
||
end
|
||
end
|
||
|
||
class Game_Actor < Game_Battler
|
||
#--------------------------------------------------------------------------
|
||
# ○ 公開インスタンス変数
|
||
#--------------------------------------------------------------------------
|
||
attr_reader :add_skill_id
|
||
#--------------------------------------------------------------------------
|
||
# ○ セットアップ
|
||
#--------------------------------------------------------------------------
|
||
alias ori_moto_setup setup
|
||
def setup(actor_id)
|
||
ori_moto_setup(actor_id)
|
||
|
||
@add_skill_id = []
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ☆ 発動確率と追加スキルIDの取得フラグ
|
||
#--------------------------------------------------------------------------
|
||
def add_skill_attack_flag
|
||
@add_skill_id = []
|
||
for equip in equips.compact
|
||
for skill_id in 0...equip.add_skill_attack.size
|
||
if equip.add_skill_attack[skill_id] != nil &&
|
||
equip.add_skill_attack[skill_id] >= rand(100) + 1
|
||
@add_skill_id << skill_id
|
||
end
|
||
end
|
||
end #最終的
|
||
if @add_skill_id != []
|
||
@add_skill_id = @add_skill_id[rand(@add_skill_id.length)]
|
||
return true
|
||
else
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
|
||
class Game_Battler < Game_BattlerBase
|
||
#--------------------------------------------------------------------------
|
||
# ☆ スキル/アイテムの使用
|
||
# 行動側に対して呼び出され、使用対象以外に対する効果を適用する。
|
||
# (コモンイベント)
|
||
#--------------------------------------------------------------------------
|
||
def use_item_common_event(item)
|
||
item.effects.each {|effect| item_global_effect_apply(effect) }
|
||
end
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Scene_Battle
|
||
#------------------------------------------------------------------------------
|
||
# バトル画面の処理を行うクラスです。
|
||
#==============================================================================
|
||
|
||
class Scene_Battle < Scene_Base
|
||
#--------------------------------------------------------------------------
|
||
# ○ スキル/アイテムの効果を適用
|
||
#--------------------------------------------------------------------------
|
||
alias ori_moto_apply_item_effects apply_item_effects
|
||
def apply_item_effects(target, item)
|
||
ori_moto_apply_item_effects(target, item)
|
||
return if $game_troop.all_dead? || @subject.enemy? || @subject.current_action == nil
|
||
|
||
unless MOTO::DEAD_ADD_SKILL
|
||
return if target.dead?
|
||
end
|
||
unless MOTO::MISS_ADD_SKILL
|
||
return unless target.result.hit?
|
||
end
|
||
|
||
if @subject.current_action.attack?
|
||
if !@subject.confusion? && @subject.add_skill_attack_flag
|
||
@subject.current_action.set_skill(@subject.add_skill_id)
|
||
add_skill_action
|
||
end
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ☆ 追加スキル発動
|
||
#--------------------------------------------------------------------------
|
||
def add_skill_action
|
||
item = @subject.current_action.item
|
||
targets = @subject.current_action.make_targets.compact
|
||
@subject.use_item_common_event(item)
|
||
show_animation(targets, item.animation_id)
|
||
targets.each{ |target|
|
||
target.item_apply(@subject, item)
|
||
@log_window.display_action_results(target, item)
|
||
}
|
||
end
|
||
end |