king-exit/Scripts/_.63.rb
2024-08-31 14:17:23 -05:00

158 lines
No EOL
5.8 KiB
Ruby
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

=begin
RGSS3 追加スキル発動装備 ver.1.03 2012/04/08 mo-to
 
http://mototkool.blog.fc2.com/
★概要★
通常攻撃をした際、追加でスキル発動する装備品。
★使用法★
スクリプトの▼ 素材 以下 ▼ メイン 以上にこれをコピーして張り付ける。
装備のメモ欄に <追加スキル n:m%> n=スキルID m=確率1100と記述する。
例)武器(防具)のメモ欄に <追加スキル 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