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



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

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

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

2020:11:01
・他スクリプト併用時のアップデート反映

2023:10:01
・一撃必殺カスタマイズの仕様変更対応

#==============================================================================
# '0X to XP:パラメーター上昇アイテムの複数化 by 貪藻矢射妥←
#------------------------------------------------------------------------------
# パラメーター上昇を'0X方式(複数同時に上昇可能)にします
# 
# ・・・ちなみに上昇する数値は全部同じになるのでちょっと使い勝手は悪い
# 
# ※また、Lvをあげつつパラメーターを上げるといったことはできません。
# 
#==============================================================================
# 変更点
# 
# 2009:06:03
# ・Lvをアップさせるアイテムへの対応。
# 
# 2016:03:01
# ・武器による命中精度対応
# ・外部フラグによる微修正
# 
# 2020:11:01
# ・他スクリプト併用時のアップデート反映
# 
# 2023:10: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
  
  
  
end
class Game_Battler
  include MINTO
  include DIAMOND
  
  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::DC_ITEM, item)
end # $OuterFlgs["Death_Critical"]
      
      # 回復量を計算
      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 # $OuterFlgs["VX_2_XP"]
      # 分散
      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 # $OuterFlgs["VX_2_XP"]
        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 # $OuterFlgs["VX_2_XP"]
        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
      

    
      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 item.element_set.include?(LVPLUS)
          lv_up_flg = true
        end
        
        #p param_up_flg, item.parameter_points
        
        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 lv_up_flg
          sys_update_flg = false
          
          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
↓設定例↓ パラメーター上昇アイテムであることを選択した後に、他に上昇させたいパラメーターに値する属性を チェックしていきます。

戻る