'0X to XP詰め合わせセット



'0X標準機能だった(と思うんだけど・・・)パラメーター上昇アイテムを複数同時上昇にします

変更点
2009:06:03
・Lvをアップさせるアイテムへの対応。

2016:03:01
・武器による命中精度対応
・外部フラグによる微修正

#==============================================================================
# '0X to XP:パラメーター上昇アイテムの複数化 by 貪藻矢射妥←
#------------------------------------------------------------------------------
# パラメーター上昇を'0X方式(複数同時に上昇可能)にします
# 
# ・・・ちなみに上昇する数値は全部同じになるのでちょっと使い勝手は悪い
# 
# ※また、Lvをあげつつパラメーターを上げるといったことはできません。
# 
#==============================================================================
# 変更点
# 
# 2009:06:03
# ・Lvをアップさせるアイテムへの対応。
# 
# 2016:03:01
# ・武器による命中精度対応
# ・外部フラグによる微修正

module DIAMOND
  
  # パラメータ上昇用属性
  # HP UP
  HPPLUS =  42
  # SP UP
  SPPLUS =  43
  # STR UP
  STRPLUS = 44
  # DEX UP
  DEXPLUS = 45
  # AGI UP
  AGIPLUS = 46
  # INT UP
  INTPLUS = 47
  # Lv UP
  LVPLUS  = 48
  
  # LUKのみ上昇時のステート
  LUK_ONLY = 108
  
end
class Game_Battler
  include MINTO
  include DIAMOND
  include SysUpdate    # Claimh
  include BM
  #--------------------------------------------------------------------------
  # ● アイテムの効果適用
  #     item : アイテム
  #--------------------------------------------------------------------------
  def item_effect(item)
    # クリティカルフラグをクリア
    self.critical = false
    # アイテムの効果範囲が HP 1 以上の味方で、自分の HP が 0、
    # またはアイテムの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
    if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
      # メソッド終了
      return false
    end
    # 有効フラグをクリア
    effective = false
    # コモンイベント ID が有効の場合は有効フラグをセット
    effective |= item.common_event_id > 0
    # 命中判定
    
    if $OuterFlgs["Weapon_HitRate"]
      base_hitrate = get_hitrate_base(self, false)
    else
      base_hitrate = 100
    end
    
    hit_result = (rand(base_hitrate) < item.hit)
    # 不確実なスキルの場合は有効フラグをセット
    effective |= item.hit < 100
    # 命中の場合
    if hit_result == true
      
      # 即死判定 ★ 一撃必殺カスタマイズ
      if $OuterFlgs["Death_Critical"]
        dead_end(DEATH_KILLER::PRE_DEATH_ITEM_STATES, item)
      end
      
      # 回復量を計算
      recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
      recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
      if recover_hp < 0
        recover_hp += self.pdef * item.pdef_f / 20
        recover_hp += self.mdef * item.mdef_f / 20
        recover_hp = [recover_hp, 0].min
      end
      # 属性修正
      recover_hp *= elements_correct(item.element_set)
      recover_hp /= 100
      recover_sp *= elements_correct(item.element_set)
      recover_sp /= 100
      if $OuterFlgs["VX_2_XP"]
        for st_id in VX_TO_XP::DRUG_KNOWN
          if self.states.include?(st_id)
            recover_hp *= VX_TO_XP::DRUG_RATE[st_id]
            recover_sp *= VX_TO_XP::DRUG_RATE[st_id]
          end
        end
      end
      # 分散
      if item.variance > 0 and recover_hp.abs > 0
        amp = [recover_hp.abs * item.variance / 100, 1].max
        recover_hp += rand(amp+1) + rand(amp+1) - amp
      end
      if item.variance > 0 and recover_sp.abs > 0
        amp = [recover_sp.abs * item.variance / 100, 1].max
        recover_sp += rand(amp+1) + rand(amp+1) - amp
      end
      # 回復量の符号が負の場合
      if recover_hp < 0
        # 防御修正
        if self.guarding?
          recover_hp /= 2
          if $OuterFlgs["VX_2_XP"]
            for st_id in VX_TO_XP::SUPER_GUARD
              if self.states.include?(st_id)
                self.damage /= VX_TO_XP::GUARD_RATE[st_id]
              end
            end
          end
        end
      end
      
      if recover_sp < 0
        # 防御修正
        if self.guarding?
          recover_sp /= 2
          if $OuterFlgs["VX_2_XP"]
            for st_id in VX_TO_XP::SUPER_GUARD
              if self.states.include?(st_id)
                self.damage2 /= VX_TO_XP::GUARD_RATE[st_id]
              end
            end
          end
        end
      end
      
      # HP 回復量の符号を反転し、ダメージの値に設定
      self.damage  = -recover_hp
      self.damage2 = -recover_sp
      # HP および SP を回復
      last_hp = self.hp
      last_sp = self.sp
      self.hp += recover_hp
      self.sp += recover_sp
      effective |= self.hp != last_hp
      effective |= self.sp != last_sp
      # ステート変化
      @state_changed = false
      
      if MINTO::RGSS["parameter_addition"]
        if !item.plus_state_set.include?(LUK_ONLY)
          effective |= states_plus(item.plus_state_set)
        end
        if !item.minus_state_set.include?(LUK_ONLY)
          effective |= states_minus(item.minus_state_set)
        end
      end
    
      param_up_flg = [false, false, false, false, false, false, false]
      lv_up_flg = false
      # パラメータ上昇値が有効の場合
      if item.parameter_type > 0 and item.parameter_points != 0
        if item.element_set.include?(HPPLUS) || item.parameter_type == 1
          param_up_flg[0] = true
        end
        if item.element_set.include?(SPPLUS) || item.parameter_type == 2
          param_up_flg[1] = true
        end
        if item.element_set.include?(STRPLUS) || item.parameter_type == 3
          param_up_flg[2] = true
        end
        if item.element_set.include?(DEXPLUS) || item.parameter_type == 4
          param_up_flg[3] = true
        end
        if item.element_set.include?(AGIPLUS) || item.parameter_type == 5
          param_up_flg[4] = true
        end
        if item.element_set.include?(INTPLUS) || item.parameter_type == 6
          param_up_flg[5] = true
        end
        if MINTO::RGSS["parameter_addition"]
          if item.minus_state_set.include?(LUK_ONLY) && 
            item.element_set.include?(LUKPLUS)
            for i in 0..5
              param_up_flg[i] = false
            end
            param_up_flg[6] = true
          end
          if item.plus_state_set.include?(LUK_ONLY) || 
            item.element_set.include?(LUKPLUS)
            param_up_flg[6] = true
          end
        end
        if item.element_set.include?(LVPLUS)
          lv_up_flg = true
        end
        
        if param_up_flg[0] && !lv_up_flg
          @maxhp_plus += item.parameter_points
        end
        if param_up_flg[1] && !lv_up_flg
          @maxsp_plus += item.parameter_points
        end
        if param_up_flg[2] && !lv_up_flg
          @str_plus += item.parameter_points
        end
        if param_up_flg[3] && !lv_up_flg
          @dex_plus += item.parameter_points
        end
        if param_up_flg[4] && !lv_up_flg
          @agi_plus += item.parameter_points
        end
        if param_up_flg[5] && !lv_up_flg
          @int_plus += item.parameter_points
        end
        if MINTO::RGSS["parameter_addition"]
          if param_up_flg[6] && !lv_up_flg
            @luk_plus += item.parameter_points
          end
        end
        if lv_up_flg
          sys_update_flg = false
          # 熟練度 @ Claimh
          for attr_id in SysUpdate::ELEMENTS
            if item.element_set.include?(attr_id)
              @attr[attr_id].level += item.parameter_points
              sys_update_flg = true
            end
          end
          if !sys_update_flg
            @level += item.parameter_points
            @exp = @exp_list[@level]
          end
        end
        # 有効フラグをセット
        effective = true
      end
      
      # HP 回復率と回復量が 0 の場合
      if item.recover_hp_rate == 0 and item.recover_hp == 0
        
        # ★ 一撃必殺カスタマイズ
        if self.states.include?(1) && $OuterFlgs["Death_Critical"]
          # ダメージに"即死"を設定
          self.damage = DEATH_KILLER::DEATH_WORD
        else
          # ダメージに空文字列を設定
          self.damage = ""
        end
        
      end
      # SP 回復率と回復量が 0 の場合
      if item.recover_sp_rate == 0 and item.recover_sp == 0
        
        # ★ 一撃必殺カスタマイズ
        if self.states.include?(1) && $OuterFlgs["Death_Critical"]
          # ダメージに"即死"を設定
          self.damage2 = DEATH_KILLER::DEATH_WORD
        else
          # ダメージに空文字列を設定
          self.damage2 = ""
        end
        
      end
      # HP/SP 回復が0 パラメータ上昇値が無効の場合
      if self.damage == "" && self.damage2 == "" && 
        (item.parameter_type == 0 or item.parameter_points == 0)
        unless @state_changed
          
          # ★ 一撃必殺カスタマイズ
          if self.states.include?(1) && $OuterFlgs["Death_Critical"]
            # ダメージに"即死"を設定
            self.damage  = DEATH_KILLER::DEATH_WORD
            self.damage2 = DEATH_KILLER::DEATH_WORD
          else
            # ダメージに "Miss" を設定
            self.damage  = MISS_WORD
            self.damage2 = MISS_WORD
          end
          
        end
      end
    # ミスの場合
    else
      # ダメージに "Miss" を設定
      self.damage  = MISS_WORD
      self.damage2 = MISS_WORD
    end
    # 戦闘中でない場合
    unless $game_temp.in_battle
      # ダメージに nil を設定
      self.damage  = nil
      self.damage2 = nil
    end
    # メソッド終了
    return effective
  end
end
↓設定例↓ パラメーター上昇アイテムであることを選択した後に、他に上昇させたいパラメーターに値する属性を チェックしていきます。

戻る