#==============================================================================
# ■ 困难模式
#------------------------------------------------------------------------------
# 游戏中控制难度的方法:事件脚本中写
# $game_system.hard_mode = 布尔值
# 布尔值可以是true 或 false,分别代表开启困难模式、关闭困难模式 
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # ● 常量
  #--------------------------------------------------------------------------
  
  # 是否自动开启困难模式
  DEFAULT_HARD_MODE = false 
  
  # 困难模式下敌人各项属性的倍数
  HARD_MODE_PARAMS_ZOOM = {
    :maxhp => 1,
    :maxmp => 1,
    :atk   => 2,
    :def   => 2,
    :spi   => 2,
    :agi   => 2,
    :hit   => 1,
    :eva   => 1,
    :cri   => 1,
  }
  
  # 困难模式下敌人各项属性的增加值
  HARD_MODE_PARAMS_ADD = {
    :maxhp => 0,
    :maxmp => 0,
    :atk   => 0,
    :def   => 0,
    :spi   => 0,
    :agi   => 0,
    :hit   => 0,
    :eva   => 0,
    :cri   => 0,
  }
  
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :hard_mode                    # 困难模式
  #--------------------------------------------------------------------------
  # ● [别名修改]初始化对像
  #--------------------------------------------------------------------------
  alias initialize_for_hard_mode initialize
  def initialize
    initialize_for_hard_mode
    @hard_mode = DEFAULT_HARD_MODE
  end
end

#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
#  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的 内部使用。
#==============================================================================

class Game_Enemy
  #--------------------------------------------------------------------------
  # ● [追加]计算不同难度下的属性
  #--------------------------------------------------------------------------
  def calculate_param(param_type, param)
    return param if !$game_system.hard_mode
    param * Game_System::HARD_MODE_PARAMS_ZOOM[param_type] +
    Game_System::HARD_MODE_PARAMS_ADD[param_type]
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取基本体力最大值
  #--------------------------------------------------------------------------
  alias base_maxhp_for_hard_mode base_maxhp
  def base_maxhp
    return calculate_param(:maxhp, base_maxhp_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取基本魔力最大值
  #--------------------------------------------------------------------------
  alias base_maxmp_for_hard_mode base_maxmp
  def base_maxmp
    return calculate_param(:maxmp, base_maxmp_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取基本攻击力
  #--------------------------------------------------------------------------
  alias base_atk_for_hard_mode base_atk
  def base_atk
    return calculate_param(:atk, base_atk_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取基本防御力
  #--------------------------------------------------------------------------
  alias base_def_for_hard_mode base_def
  def base_def
    return calculate_param(:def, base_def_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取基本精神力
  #--------------------------------------------------------------------------
  alias base_spi_for_hard_mode base_spi
  def base_spi
    return calculate_param(:spi, base_spi_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取基本敏捷
  #--------------------------------------------------------------------------
  alias base_agi_for_hard_mode base_agi
  def base_agi
    return calculate_param(:agi, base_agi_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取命中率
  #--------------------------------------------------------------------------
  alias hit_for_hard_mode hit
  def hit
    return calculate_param(:hit, hit_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取闪躲率
  #--------------------------------------------------------------------------
  alias eva_for_hard_mode eva
  def eva
    return calculate_param(:eva, eva_for_hard_mode)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]获取会心一击率
  #--------------------------------------------------------------------------
  alias cri_for_hard_mode cri
  def cri
    return calculate_param(:cri, cri_for_hard_mode)
  end
end