#============================================================================== # ■ RGSS3 会心付与 Ver1.02 by 星潟 #------------------------------------------------------------------------------ # 本来会心の一撃はアイテム/スキルの会心の項目を # 「あり」にしていなければ発生する事はありませんが # このスクリプトを使用する事で # 本来会心の一撃が発生しないアイテム/スキルにおいて # 条件を満たせば会心の一撃が発生させられるようになります。 # なお、エラーが出る計算式の場合は条件は満たされない扱いになります。 # (敵のレベルを参照しようとした場合等) #============================================================================== # アイテム/スキルのメモ欄を使用します。 #------------------------------------------------------------------------------ # <会心付与:a.element_rate(20)>1> # # 使用者の属性ID20の有効度が1(100%)より大きい時 # 会心の一撃が出るようになります。 #------------------------------------------------------------------------------ # <会心付与:a.agi>b.agi> # # 使用者の敏捷性が対象の敏捷性より高い場合 # 会心の一撃が出るようになります。 #------------------------------------------------------------------------------ # <会心付与:$game_switches[1]> # # スイッチID1がONの時、会心の一撃が出るようになります。 #------------------------------------------------------------------------------ # <会心付与:a.state?(50)> # # 使用者にステートID50が付与されている時、会心の一撃が出るようになります。 #------------------------------------------------------------------------------ # <会心付与:b.state?(50)> # # 対象にステートID50が付与されている時、会心の一撃が出るようになります。 #------------------------------------------------------------------------------ # <会心付与:a.level>25> # # 使用者のレベルが25より大きい(26以上)の時 # 会心の一撃が出るようになります。 #------------------------------------------------------------------------------ # <会心付与:a.skills.include?($data_skills[82])> # # 使用者がスキルID82を覚えている場合 # 会心の一撃が出るようになります。 #============================================================================== module AddCritical Word = "会心付与" end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # スキル/アイテムの会心率計算 #-------------------------------------------------------------------------- alias item_cri_add_critical item_cri def item_cri(user, item) item.damage.add_critical_battler = [user,self,item] d = item_cri_add_critical(user, item) item.damage.add_critical_battler = nil d end end class RPG::UsableItem::Damage attr_accessor :add_critical_battler #-------------------------------------------------------------------------- # クリティカル有無 #-------------------------------------------------------------------------- unless method_defined?(:critical_add_critical) alias critical_add_critical critical def critical f = critical_add_critical return f if f a = @add_critical_battler a ? a[2].add_critical_eval(a[0],a[1],$game_variables) : f end end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # クリティカル有効化条件判定 #-------------------------------------------------------------------------- def add_critical_eval(a,b,v) @add_critical_eval ||= /<#{AddCritical::Word}[::](\S+)>/ =~ note ? $1.to_s : "" return false if @add_critical_eval.empty? begin eval(@add_critical_eval) rescue print printf("会心付与スクリプトの設定にミスがあります。\r\n対象:%s ID:%s\r\n",self.class.to_s,self.id) false end end end