#============================================================================== # ■ RGSS3 命中タイプ別ステート解除判定 Ver1.01 by 星潟 #------------------------------------------------------------------------------ # ステートの「ダメージを受けた際に解除」の判定を # 命中タイプ別に更に確率を変動させます。 # ダメージを受けた際に解除の確率が設定されていない場合 # この設定を行っても何も意味はありません。 #============================================================================== # ステートのメモ欄に指定します。 # 指定しない場合、全て100%扱いになります。 # 数字指定は、必中、物理、魔法の順番です。 # 以下は例となります。 #------------------------------------------------------------------------------ # <タイプ別解除判定:75,100,50> # # この場合、解除発生率に対し # 命中タイプ必中では75%、命中タイプ物理では100%、 # 命中タイプ魔法では50%の倍率をかけます。 #------------------------------------------------------------------------------ # <タイプ別解除判定:0,100,0> # # この場合、解除発生率に対し # 命中タイプ必中では0%、命中タイプ物理では100%、 # 命中タイプ魔法では0%の倍率をかけます。 # (つまり、命中タイプ必中と魔法では、0をかけるので解除されなくなります) #============================================================================== module STBDRBDDT #設定用キーワードを指定 Word = "タイプ別解除判定" end class Game_Temp attr_accessor :stbd_item end class Game_ActionResult attr_accessor :used_item_data #-------------------------------------------------------------------------- # クリア #-------------------------------------------------------------------------- alias clear_srbd clear def clear clear_srbd @used_item_data = nil end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ダメージ計算 #-------------------------------------------------------------------------- alias make_damage_value_srbd make_damage_value def make_damage_value(user, item) @result.used_item_data = item make_damage_value_srbd(user, item) end #-------------------------------------------------------------------------- # ダメージによるステート解除 #-------------------------------------------------------------------------- alias remove_states_by_damage_srbd remove_states_by_damage def remove_states_by_damage $game_temp.stbd_item = @result.used_item_data if @result.used_item_data remove_states_by_damage_srbd $game_temp.stbd_item = nil end end class RPG::State < RPG::BaseItem #-------------------------------------------------------------------------- # ダメージによるステート解除フラグ #-------------------------------------------------------------------------- unless method_defined?(:chance_by_damage_srbd) alias chance_by_damage_srbd chance_by_damage def chance_by_damage chance_by_damage_srbd * ($game_temp.stbd_item ? chance_by_damage_damage_type[$game_temp.stbd_item.hit_type].to_f / 100 : 1.0) end end #-------------------------------------------------------------------------- # タイプ別ステート解除判定 #-------------------------------------------------------------------------- def chance_by_damage_damage_type @rbddt_check ||= /<#{STBDRBDDT::Word}[::](\d+),(\d+),(\d+)>/ =~ note ? [$1.to_i,$2.to_i,$3.to_i] : [100] * 3 end end