戦闘難易度 カスタム



・コマンドウィンドウを専用のウィンドウにし、現在選択している難易度の色を変更
・一度でも最低難易度にしたら以後難易度を変更できないように設定可能に変更

変更点
まだなし

スクリプト本体
#----------------------------------------------------------------------------
# 戦闘難易度 貪藻矢射妥←カスタム by 貪藻矢射妥←
#----------------------------------------------------------------------------
# 原作:     ◆ 戦闘難易度 - KGC_BattleDifficulty ◆
#           ◇ Last update : 20XX/??/?? ◇
# 原作者:   TOMY様
# HP:       Kamesoft
# アドレス: http://ytomy.sakura.ne.jp/
#
# 改造内容:
# ・コマンドウィンドウを専用のウィンドウにし、現在選択している難易度の色を変更
# ・一度でも最低難易度にしたら以後難易度を変更できないように設定可能に変更
# 
#============================================================================
# 変更点
# まだなし

#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================

module KGC
  # ◆難易度配列
  #  ≪"名称", HP, SP, 他能力値, EXP, ゴールド, トレジャー出現率≫
  #  各項目の倍率を指定(百分率)。
  BD_DIFFICULTY_LIST = [
    ["Picnic",          40,  20,  30,  50, 200, 100],
    ["Easy",            80,  80,  70,  90, 120, 100],
    ["Normal",         100, 100, 100, 100, 100, 100],
    ["Hard",           150, 130, 120, 100, 100, 100],
    ["Superior",       200, 180, 150, 100, 100, 100],
    ["Nightmare",      250, 200, 180, 120,  80, 100],
    ["Extraordinary",  300, 260, 200, 150,  60, 100],
    ["Hell & Inferno", 500, 400, 300, 200,  50, 100],
    ["Genesic H & I",  999, 777, 666, 250,  25, 100]
  ]
  # ◆初期難易度
  #  BD_DIFFICULTY_LIST のインデックス。
  BD_INITIAL_DIFFICULTY = 2
  # ◆一度でも最低難易度に変更したら難易度変更を不可能にするかどうか
  BD_DIFF_MIN_FIX_FLG = true
  # ◆現在の難易度カラー
  BD_SELECTED_COLOR  = Color.new(128, 255, 128, 255)
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["BattleDifficulty"] = true

module Difficulty
  #--------------------------------------------------------------------------
  # ● 難易度設定取得
  #--------------------------------------------------------------------------
  def self.get
    # 難易度設定を返す
    return KGC::BD_DIFFICULTY_LIST[$game_system.difficulty]
  end
  #--------------------------------------------------------------------------
  # ● 難易度設定変更
  #--------------------------------------------------------------------------
  def self.set(index)
    # 範囲外ならば変更しない
    return if index < 0 || index >= KGC::BD_DIFFICULTY_LIST.size
    $game_system.difficulty = index
  end
  #--------------------------------------------------------------------------
  # ● 能力値補正済みエネミー取得
  #--------------------------------------------------------------------------
  def self.get_revised_enemy(enemy)
    en = enemy.clone
    diff = self.get
    en.maxhp = en.maxhp * diff[1] / 100
    en.maxsp = en.maxsp * diff[2] / 100
    en.str   = en.str   * diff[3] / 100
    en.dex   = en.dex   * diff[3] / 100
    en.agi   = en.agi   * diff[3] / 100
    en.int   = en.int   * diff[3] / 100
    en.atk   = en.atk   * diff[3] / 100
    en.pdef  = en.pdef  * diff[3] / 100
    en.mdef  = en.mdef  * diff[3] / 100
    en.exp   = en.exp   * diff[4] / 100
    en.gold  = en.gold  * diff[4] / 100
    if en.treasure_prob < 100
      en.treasure_prob = [en.treasure_prob * diff[5] / 100, 100].min
    end
    return en
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_System
#==============================================================================

class Game_System
  attr_accessor :difficulty   # 難易度
  attr_accessor :diffixed_flg # 最低難易度固定フラグ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_KGC_BattleDifficulty initialize
  def initialize
    # 元の処理を実行
    initialize_KGC_BattleDifficulty

    @difficulty   = KGC::BD_INITIAL_DIFFICULTY
    @diffixed_flg = false
  end
  #--------------------------------------------------------------------------
  # ● 難易度一覧
  #--------------------------------------------------------------------------
  def difficulty_list
    return KGC::BD_DIFFICULTY_LIST
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 基本 MaxHP の取得
  #--------------------------------------------------------------------------
  alias base_maxhp_KGC_BattleDifficulty base_maxhp
  def base_maxhp
    n = base_maxhp_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[1]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本 MaxSP の取得
  #--------------------------------------------------------------------------
  alias base_maxsp_KGC_BattleDifficulty base_maxsp
  def base_maxsp
    n = base_maxsp_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[2]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本腕力の取得
  #--------------------------------------------------------------------------
  alias base_str_KGC_BattleDifficulty base_str
  def base_str
    n = base_str_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本器用さの取得
  #--------------------------------------------------------------------------
  alias base_dex_KGC_BattleDifficulty base_dex
  def base_dex
    n = base_dex_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本素早さの取得
  #--------------------------------------------------------------------------
  alias base_agi_KGC_BattleDifficulty base_agi
  def base_agi
    n = base_agi_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本魔力の取得
  #--------------------------------------------------------------------------
  alias base_int_KGC_BattleDifficulty base_int
  def base_int
    n = base_int_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本攻撃力の取得
  #--------------------------------------------------------------------------
  alias base_atk_KGC_BattleDifficulty base_atk
  def base_atk
    n = base_atk_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本物理防御の取得
  #--------------------------------------------------------------------------
  alias base_pdef_KGC_BattleDifficulty base_pdef
  def base_pdef
    n = base_pdef_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本魔法防御の取得
  #--------------------------------------------------------------------------
  alias base_mdef_KGC_BattleDifficulty base_mdef
  def base_mdef
    n = base_mdef_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● 基本回避修正の取得
  #--------------------------------------------------------------------------
  alias base_eva_KGC_BattleDifficulty base_eva
  def base_eva
    n = base_eva_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[3]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● EXP の取得
  #--------------------------------------------------------------------------
  alias exp_KGC_BattleDifficulty exp
  def exp
    n = exp_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[4]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● ゴールドの取得
  #--------------------------------------------------------------------------
  alias gold_KGC_BattleDifficulty gold
  def gold
    n = gold_KGC_BattleDifficulty
if $imported["BattleDifficulty"]
    n *= Difficulty.get[5]
    n /= 100
end # $imported["BattleDifficulty"]
    return Integer(n)
  end
  #--------------------------------------------------------------------------
  # ● トレジャー出現率の取得
  #--------------------------------------------------------------------------
  alias treasure_prob_KGC_BattleDifficulty treasure_prob
  def treasure_prob
    n = treasure_prob_KGC_BattleDifficulty
    if n < 100
if $imported["BattleDifficulty"]
      n *= Difficulty.get[6]
      n /= 100
end # $imported["BattleDifficulty"]
      return [n, 100].min
    else
      return n
    end
  end
end

#==============================================================================
# ■ Window_BattleDifficulty
#==============================================================================

class Window_BattleDifficulty < Window_Command
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #  現在選択している難易度だけ色を変えたいのでリフレッシュ処理だけ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      color = i == $game_system.difficulty ? KGC::BD_SELECTED_COLOR : normal_color
      draw_item(i, color)
    end
  end
end
導入例サンプル
# 以下は組み込みの一例です。
# 各自のカスタマイズに合わせて適宜利用してください。

#==============================================================================
# ■ Scene_Menu
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    # コマンドウィンドウを作成
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = "ステータス"
    # ★KGC_BattleDifficulty
    s7 = "難易度変更"
    # ★KGC_BattleDifficulty
    s5 = "記録する♪"
    s6 = "おひまい♪"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
    @command_window.index = @menu_index
    # パーティ人数が 0 人の場合
    if $game_party.actors.size == 0
      # アイテム、スキル、装備、ステータスを無効化
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # セーブ禁止の場合
    if $game_system.save_disabled
      # セーブを無効にする
      @command_window.disable_item(4)
    end
    # プレイ時間ウィンドウを作成
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # 歩数ウィンドウを作成
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # ゴールドウィンドウを作成
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # ステータスウィンドウを作成
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    # ★KGC_BattleDifficulty
    # 難易度選択ウィンドウを作成
    bd_commands = []
    $game_system.difficulty_list.each { |diff|
      bd_commands.push(diff[0])
    }
    @difficulty_window = Window_BattleDifficulty.new(160, bd_commands)
    #@difficulty_window = Window_Command.new(160, bd_commands)
    @difficulty_window.x = 128
    @difficulty_window.y = 144
    @difficulty_window.z = 2000
    @difficulty_window.deactivate
    @difficulty_window.hide
    # ★KGC_BattleDifficulty
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @difficulty_window.dispose if @difficulty_window != nil
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    # ★KGC_BattleDifficulty
    @difficulty_window.update if @difficulty_window != nil
    # ★KGC_BattleDifficulty
    # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
    if @command_window.active
      update_command
      return
    end
    # ステータスウィンドウがアクティブの場合: update_status を呼ぶ
    if @status_window.active
      update_status
      return
    end
    # ★KGC_BattleDifficulty
    # 難易度選択ウィンドウがアクティブの場合: update_difficulty を呼ぶ
    if @difficulty_window != nil && @difficulty_window.active
      update_difficulty
      return
    end
    # ★KGC_BattleDifficulty
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_command
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      Sound.play_cancel
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # ブザー SE を演奏
        Sound.play_buzzer
        return
      end
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # アイテム
        # 決定  SE を演奏
        Sound.play_ok
        # アイテム画面に切り替え
        $scene = Scene_Item.new
      when 1  # スキル
        # 決定 SE を演奏
        Sound.play_ok
        # ステータスウィンドウをアクティブにする
        @command_window.deactivate
        @status_window.activate
        @status_window.index = 0
      when 2  # 装備
        # 決定 SE を演奏
        Sound.play_ok
        # ステータスウィンドウをアクティブにする
        @command_window.deactivate
        @status_window.activate
        @status_window.index = 0
      when 3  # ステータス
        # 決定 SE を演奏
        Sound.play_ok
        # ステータスウィンドウをアクティブにする
        @command_window.deactivate
        @status_window.activate
        @status_window.index = 0
      # ★KGC_BattleDifficulty
      when 4  # 難易度変更
        # 決定 SE を演奏
        Sound.play_ok
        # 難易度選択ウィンドウをアクティブにする
        @command_window.deactivate
        @difficulty_window.activate
        @difficulty_window.show
        @difficulty_window.index = $game_system.difficulty
      # ★KGC_BattleDifficulty
      when 5  # セーブ
        # セーブ禁止の場合
        if $game_system.save_disabled
          # ブザー SE を演奏
          Sound.play_buzzer
          return
        end
        # 決定 SE を演奏
        Sound.play_ok
        # セーブ画面に切り替え
        $scene = Scene_Save.new
      when 6  # ゲーム終了
        # 決定 SE を演奏
        Sound.play_ok
        # ゲーム終了画面に切り替え
        $scene = Scene_End.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (難易度選択ウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_difficulty
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      Sound.play_cancel
      # コマンドウィンドウに切り替え
      @command_window.activate
      @difficulty_window.deactivate
      @difficulty_window.hide
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 一度でも最低難易度に変更したら以後の難易度変更は不可能
      if $game_system.diffixed_flg && @difficulty_window.index > 0
        # ブザー
        Sound.play_buzzer
      else
        # 決定  SE を演奏
        Sound.play_ok
        # 難易度変更
        $game_system.difficulty = @difficulty_window.index
        # 一度でも最低難易度にしたら以後の変更を不可能にする
        if $game_system.difficulty == 0 && KGC::BD_DIFF_MIN_FIX_FLG
          $game_system.diffixed_flg = true
        end
      end
      # リフレッシュ
      @difficulty_window.refresh
      # コマンドウィンドウに切り替え
      #@command_window.activate
      #@difficulty_window.deactivate
      #@difficulty_window.hide
      return
    end
  end
end
難易度説明?
Picnic 世界樹の迷宮でお馴染み。ピクニックにでも行くような軽い感じで
Easy 人生イージーモード
Normal 通常の難易度。可もなく、不可もなく
Hard ハードモード
Superior センチネルでお馴染み?!超級の難易度
Nightmare 悪夢のような難易度。夢ならどれほどよかったでしょう
Extraordinary センチネルでお馴染み?!異常な難易度
Hell & Inferno 行くも地獄、退くも地獄。ヘルアンドインフェルノ・ウィータ!
Genesic H & I それは最強の難易度。 それは難易度の究極なる姿。 我々が辿り着いた、大いなる難易度。 その名は、難易度・ジェネシックヘルアンドインフェルノ!
カスタマイズポイント解説 薄緑色の部分で一度最低難易度に設定したら二度と難易度変更できないようにするかを選びます

戻る