#============================================================================== # ■ RGSS3 アイテム消費無効特徴 Ver2.00 by 星潟 #------------------------------------------------------------------------------ # 全てのアイテム、もしくは指定したアイテムを # 一定確率で消費しない特徴を作成できるようになります。 # 非戦闘時はパーティメンバー全体で特徴が判定され # 戦闘時は各個々人で判定されます。 #============================================================================== # アイテムのメモ欄に記述します。 #------------------------------------------------------------------------------ # <アイテム消費無効タグ:1> # # このアイテムの消費無効タグとして1を設定します。 #------------------------------------------------------------------------------ # <アイテム消費無効タグ:1,2,3> # # このアイテムの消費無効タグとして1・2・3を設定します。 #============================================================================== # 特徴を有する項目のメモ欄に記述します。 # 最初の数字が消費無効タグ # (0の場合は全アイテムを対象。負の値の場合は正の値に直したアイテムIDで参照) # 次の数字が消費無効率となります。(省略した場合は100%) #------------------------------------------------------------------------------ # # # 全てのアイテムを常時消費しなくなります。 #------------------------------------------------------------------------------ # # # マップ上でアイテム消費無効タグ1のアイテムを使用した際、消費しません。 #------------------------------------------------------------------------------ # # # 戦闘中、消費無効タグ2のアイテムを使用した際、50%の確率で消費しません。 #------------------------------------------------------------------------------ # # # アイテムID1のアイテムを常時消費しなくなります。 #------------------------------------------------------------------------------ # # # マップ上でアイテムID2のアイテムを常時消費しなくなります。 #------------------------------------------------------------------------------ # # # 戦闘中、アイテムID3のアイテムを常時消費しなくなります。 #------------------------------------------------------------------------------ # # # 消費無効タグ3のアイテムを使用した際 # 使用者のレベル%の確率で消費しません。 #------------------------------------------------------------------------------ # # # マップ上で消費無効タグ4のアイテムを使用した際 # 変数ID50の値%の確率で消費しません。 #------------------------------------------------------------------------------ # # # 戦闘中、アイテムを使用した際 # 使用者の(運÷5)%の確率でアイテムを消費しません。 #============================================================================== module AntiCosumeItem #キーワード指定用配列を用意。 Words = [] #常時消費無効設定用キーワードを指定。 Words[0] = "Aアイテム消費無効" #マップ時消費無効設定用キーワードを指定。 Words[1] = "Mアイテム消費無効" #戦闘時消費無効設定用キーワードを指定。 Words[2] = "Bアイテム消費無効" #アイテム消費タグ設定用キーワードを指定。 Word = "アイテム消費無効タグ" #消費無効率の計算タイプを指定。0で乗算、1で加算。 #例.該当する消費無効設定で50%のものが2つある場合 #  乗算ならば50%×50%で25%、100%から25%を引いた75%の確率で消費無効。 #  加算ならば、50%+50%で100%、100%の確率で消費無効。 Type = 0 end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # アイテムの消耗 #-------------------------------------------------------------------------- alias consume_item_anti_consume consume_item def consume_item(item) users = $game_party.in_battle ? [self] : $game_party.movable_members d = 100 a = [0] f = false t = item.anti_consume_item_tag if !t.empty? a.push($game_party.in_battle ? 2 : 1) users.each {|user| user.feature_objects.each {|f| t.each {|i| a.each {|s| aci = f.anti_consume_item[s][i] next unless aci r = eval(aci) case AntiCosumeItem::Type when 0 d *= (100 - r).to_f / 100 when 1 d -= r end}}}} end f = true if rand(100) < (100 - d) consume_item_anti_consume(item) unless f end end class RPG::BaseItem #-------------------------------------------------------------------------- # アイテム消費無効率 #-------------------------------------------------------------------------- def anti_consume_item @anti_consume_item ||= create_anti_consume_item end #-------------------------------------------------------------------------- # アイテム消費無効率作成 #-------------------------------------------------------------------------- def create_anti_consume_item h = {} 3.times {|i| h[i] = {}} ws = AntiCosumeItem::Words note.each_line {|l| 3.times {|n| a = (/<#{ws[n]}[::](\S+)>/ =~ l ? $1.to_s : "").split(/\s*,\s*/) a[0] = a[0].to_i unless a.empty? case a.size when 1 a.push("100") when 2 else next end h[n][a[0]] = a[1]}} h end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # アイテム消費無効率 #-------------------------------------------------------------------------- def anti_consume_item_tag @anti_consume_item_tag ||= create_anti_consume_item_tag end #-------------------------------------------------------------------------- # アイテム消費無効率作成 #-------------------------------------------------------------------------- def create_anti_consume_item_tag (/<#{AntiCosumeItem::Word}[::](\S+)>/ =~ note ? $1.to_s : "" ).split(/\s*,\s*/).inject([-self.id,0]) {|r,i| r.push(i.to_i)} end end