#==============================================================================
# ■ MONSTER_BOOK vol.1.00 (分割定義 1)
#------------------------------------------------------------------------------
# ※ Window_digits_number vol.4.00(必須)
# ※ Scroll_Bar3.20 Scene_Battle 4より下に挿入
# 08/01/08
#==============================================================================
module MONSTER_BOOK
  #…………………………………………………………………………………………………
  # ■図鑑のレイアウト設定(文字サイズ/文字色)
  #…………………………………………………………………………………………………
  # □文字色の設定(通常色/影色/システム色)
    NORMAL_COLOR = Color.new(255, 255, 255, 255)
    SHADOW_COLOR = Color.new(0,0,0,255)
    SYSTEM_COLOR = Color.new(192, 224, 255, 255)
    S_SHADOW_COLOR = Color.new(0,128,128,255)
  # □図鑑リストの文字サイズ
    LIST_SIZE = 18
  # □囲み文字装飾を使用する[true/false]
    LOUND = true
  # □影文字装飾を使用する[true/false]
    SHADOW = false
  # □[属性/ステート]ランクの色設定(0=A,1=B,2=C,3=D,4=E,5=F)
    EL_COLORS = [] # ※← EL_COLORS = []は変更不可
    EL_COLORS[0] = Color.new(255,0,0,255)
    EL_COLORS[1] = Color.new(128,0,128,255)
    EL_COLORS[2] = Color.new(255, 255, 255, 255)
    EL_COLORS[3] = Color.new(0,64,128,255)
    EL_COLORS[4] = Color.new(128,128,128,255)
    EL_COLORS[5] = Color.new(0,128,0,255)
  #…………………………………………………………………………………………………
  # ■属性(アイコン)の描画(Windowskinsフォルダにインポート)
  #…………………………………………………………………………………………………
    ELEMENTS = "elements"
  # □属性アイコンを使用する[true/false]※falseの場合、属性名が長いと不都合あり
    ELEMENT_ICON = false
  # □属性ID配列(1〜8) ※レイアウトの関係で、最大8個に固定 ※少ない方が図鑑を表示するまでの時間が短い
    ELEMENT_IDS = [1,2,3,4,5,6,7,8]
  # □モンスター種族属性ID配列(9〜16) ※[属性有効度=A]に指定することが条件
    ELEMENT_TYPE_IDS = [9,10,11,12,13,14,15,16]
  #…………………………………………………………………………………………………
  # ■ステートアイコンの描画(Windowskinsフォルダにインポート)
  #…………………………………………………………………………………………………
    STATES = "states"
  # □ステートID配列(1〜16) ※レイアウトの関係で1行、最大8個に固定(2行表示)
    STATE_IDS = [1,2,3,4,5,6]
    STATE_IDS2 = [7,8,9,10,11,12]
    # ※[抵抗しないステート]を除外 ※少ない方が図鑑を表示するまでの時間が短い
  #…………………………………………………………………………………………………
  # ■背景画像(Windowskinsフォルダにインポート)
  #…………………………………………………………………………………………………
    BACK = "book_background"
  # □メニュー(Scene_Menu)に組み込んだ場合の戻りindex
    MENUE_INDEX = 0
  #…………………………………………………………………………………………………
  # ■カーソルアイコンを使用する[true/false](Cursor_Icon_typeX必須)
  #…………………………………………………………………………………………………
  # □デフォルトカーソルの消去 ※self.windowskinを削除しているので軽量化？
    NO_CURSOR = false
  #…………………………………………………………………………………………………
  # ■スクロールバーを使用する[true/false](Scroll_Bar3.20必須)
  #…………………………………………………………………………………………………
    SCROLL_BAR = false
    SCROLL_BAR_BACK = "scroll_bar"
    SCROLL_BAR_X = 0#-8 # スクロールバーのX座標補正値
    SCROLL_BAR_Y = 0#10 # スクロールバーのY座標補正値
  #…………………………………………………………………………………………………
  # ■点滅文字選択を使用する[true/false](Blink_Window2.00必須)
  #…………………………………………………………………………………………………
    BLINK_WINDOW = false
    BLINK_COLOR = Color.new(255,255,0,155) #点滅文字色
  #…………………………………………………………………………………………………
  # ■キーヘルプを使用する[true/false](Key_Icon_Make2.00必須)
  #…………………………………………………………………………………………………
    KEY_HELP = false
    # □キーに使用する文字を設定
    KEY_HELP_BACK = "Back"
    KEY_HELP_NEXT = "Next"
    KEY_HELP_PUSH = "Push"
  #…………………………………………………………………………………………………
  # ■最大桁数 ※少ない桁の方が図鑑を表示するまでの時間が短い
  #…………………………………………………………………………………………………
  # □獲得EXPの最大桁数(データベースでは7桁)
    EXP_D = 5
  # □獲得ゴールドの最大桁数(データベースでは7桁)
    GOLD_D = 5
    # ※ゲーム中に1000000(7桁)のEXP/お金を獲得するエネミーは、必要無いハズ？
  #…………………………………………………………………………………………………
  # ■図鑑ｂﾌ手動設定{key=>value,...}
  #…………………………………………………………………………………………………
  #   key=図鑑ｂ指定　(1〜図鑑登録数)を指定(必ず連続する番号で指定　1,2,3,4...みたいに)
  #   value=エネミーIDを指定　例 1=>13 ならば、図鑑1は、エネミーID13
  #…………………………………………………………………………………………………
    NUMBERS = {}#例 {1=>13,2=>12,3=>11,4=>10,5=>9,6=>8,7=>7,8=>6,9=>5,10=>4,11=>3,12=>2,13=>1}
    
  #…………………………………………………………………………………………………
  # ■システム文字を設定
  #…………………………………………………………………………………………………
    SYSTEM = [] # ※← SYSTEM = []は変更不可
    SYSTEM[0] = "モンスター図鑑"
    SYSTEM[1] = "完成度"
    SYSTEM[2] = "倒した数"
    SYSTEM[3] = "回避"
    SYSTEM[4] = "属性"
    SYSTEM[5] = "耐性"
    SYSTEM[6] = "EXP"
    SYSTEM[7] = "お宝"
    SYSTEM[8] = "？"
    SYSTEM[9] = "？？"
    SYSTEM[10] = "？？？"
    SYSTEM[11] = "？？？？？？？？"
    SYSTEM[12] = "？？？？？？？"
    SYSTEM[13] = "No Item"
  #…………………………………………………………………………………………………
  # ■モンスター解説を使用する[true/false](↓の設定が必須)
  #…………………………………………………………………………………………………
    HELP_WINDOW = true
  #…………………………………………………………………………………………………
  # ■モンスター解説 HELP[ID] = {key=>value,...}
  #…………………………………………………………………………………………………
  #   key=エネミーID
  #   value=行番号　0=1行目、1=2行目...
  #…………………………………………………………………………………………………
    HELP = [] # ※← HELP = []は変更不可
  #…………………………………………………………………………………………………
    HELP[1] = {
    0=>"ゴースト",
    1=>"肉体を失い、魂だけとなった存在。",
    2=>"生前の未練に縛られて、悪霊と化して",
    3=>"しまった者。",
    4=>""
    }
    HELP[2] = {
    0=>"バジリスク",
    1=>"獰猛な大トカゲ。",
    2=>"伝説では、鶏が産んだ卵を、蛇が孵化",
    3=>"させる事によって誕生すると言われる。",
    4=>""
    }
    HELP[3] = {
    0=>"サハギン",
    1=>"人の身体と、魚の特徴を併せ持つ半魚人。",
    2=>"集団で行動することが多く、支配階級も",
    3=>"存在するようだ。",
    4=>""
    }
    HELP[4] = {
    0=>"ヘルハウンド",
    1=>"その雄叫びを聞いた者は、恐怖に慄き、",
    2=>"死に至ると言う、地獄の猟犬。",
    3=>"集団で、統率の取れた狩りを行なう。",
    4=>""
    }
    HELP[5] = {
    0=>"コボルド",
    1=>"狼と人間の特徴を、併せ持つ獣人。",
    2=>"人間と同様に、武器を扱うことができる。",
    3=>"単独で行動することが多く、一匹狼的な",
    4=>"性分であることが窺える。"
    }
    HELP[6] = {
    0=>"コカトリス",
    1=>"鶏の体に蛇の尾を持つ怪鳥。",
    2=>"ペトロブレスと呼ばれる、吐息には、",
    3=>"生物を石に変える力が有るとされる。",
    4=>""
    }
    HELP[7] = {
    0=>"インプ",
    1=>"人間を堕落させる悪魔の類。",
    2=>"魔女の使い魔として、召喚されることも",
    3=>"あるようだ。",
    4=>""
    }
    HELP[8] = {
    0=>"エンジェル",
    1=>"神の御使いである天使だが、位階は低い。",
    2=>"福音と共に顕れ、人間を正しい方向へと",
    3=>"導く役割を担っている。",
    4=>""
    }
    HELP[9] = {
    0=>"ゾンビ",
    1=>"反魂の秘術によって、蘇った死体。",
    2=>"不完全な状態で、生き返った為、",
    3=>"完全に自我を失っており、生ある者に",
    4=>"執拗な悪意を向ける。"
    }
    HELP[10] = {
    0=>"ラミア",
    1=>"上半身は女性、下半身は蛇の姿をした魔獣。",
    2=>"元々は、美しい女神であったとされるが、",
    3=>"呪いによって、今の姿になったと言われる。",
    4=>""
    }
    HELP[11] = {
    0=>"リザードマン",
    1=>"亜人と呼ばれる種族の一種で、",
    2=>"トカゲのような姿をしている。",
    3=>"戦士としての能力に優れており、",
    4=>"多様な武器を使いこなす。"
    }
    HELP[12] = {
    0=>"ケルベロス",
    1=>"冥界の門を守護する地獄の番犬。",
    2=>"三つの頭を持ち、鋭い牙で、",
    3=>"冥界から逃げ出す者を、捕らえ",
    4=>"貪り食うと言われる。"
    }
    HELP[13] = {
    0=>"ゴブリン",
    1=>"妖精の類だが、性格は残忍で狡猾。",
    2=>"人間と同様に、社会を形成しており、",
    3=>"独自の言語を操る。",
    4=>""
    }
    HELP[14] = {
    0=>"ハーピー",
    1=>"上半身は女性、下半身は鳥の姿をした怪鳥。",
    2=>"見た目とは裏腹に、残忍な性格をしており、",
    3=>"弱った者に、集団で襲い掛かると言った",
    4=>"習性があるようだ。"
    }
    HELP[15] = {
    0=>"ガーゴイル",
    1=>"神殿など、古い建造物に出現することが",
    2=>"多く、通常は石像の姿に擬態している。",
    3=>"侵入者を見つけると、悪魔の姿に変貌し、",
    4=>"襲い掛かると言う。"
    }
    HELP[16] = {
    0=>"アークエンジェル",
    1=>"本来は、大天使の総称。",
    2=>"人界に姿を現すことは、きわめて稀で、",
    3=>"来たる悪魔との戦いに備えている。",
    4=>""
    }
    HELP[17] = {
    0=>"スケルトン",
    1=>"魔術によって蘇った骸骨。",
    2=>"生前の記憶は失っているが、身体能力を",
    3=>"継承している為、戦士としての能力は高い。",
    4=>""
    }
    HELP[18] = {
    0=>"ヒドラ",
    1=>"六つ頭を持った大蛇。",
    2=>"その血液は、猛毒であり、",
    3=>"斬られた首は、何度でも再生すると",
    4=>"言われている。"
    }
    HELP[19] = {
    0=>"クラーケン",
    1=>"伝説の巨大イカ。",
    2=>"航行中の船舶を沈めることで有名。",
    3=>"船乗りたちに、最も恐れられている",
    4=>"存在と言えよう。"
    }
    HELP[20] = {
    0=>"グリフォン",
    1=>"鷲の頭部に、ライオンの胴体を持った魔獣。",
    2=>"富と権力の象徴で、鳥獣の王と呼ばれる",
    3=>"こともある。",
    4=>""
    }
    HELP[21] = {
    0=>"オーガ",
    1=>"人間によく似た姿をしているが、",
    2=>"性格は野蛮で、人間よりもひとまわり",
    3=>"大きな体格をしているのが特徴。",
    4=>"戦闘能力は高いが、知能は低い。"
    }
    HELP[22] = {
    0=>"ワイバーン",
    1=>"大きな翼を持った有翼竜。",
    2=>"姿かたちは、ドラゴンに酷似しているが、",
    3=>"その能力は、遥かに劣る。",
    4=>""
    }
    HELP[23] = {
    0=>"デーモン",
    1=>"天使とは、対極の位置にある存在で、",
    2=>"悪魔の眷属。",
    3=>"堕天して魔神となった、ルシフェル以前",
    4=>"より存在する、原始の魔族と言えよう。"
    }
    HELP[24] = {
    0=>"ケルビム",
    1=>"第二位階の天使で、智天使と呼ばれる存在。",
    2=>"エデンの入り口を守護する役割を担い、",
    3=>"神に謁見することを許された大天使。",
    4=>""
    }
    HELP[25] = {
    0=>"リッチ",
    1=>"反魂の秘術によって、不死者へと",
    2=>"完全なる転生を果たした人間。",
    3=>"転生前は、高名な神官であったが、",
    4=>"禁忌を犯した時点で、背徳の徒と言えよう。"
    }
    HELP[26] = {
    0=>"ケツァルコアトル",
    1=>"鳥と蛇の特徴を併せ持った神の化身。",
    2=>"豊穣を司る神であり、風の神でもある。",
    3=>"天空に在って、落雷と共に顕現する。",
    4=>""
    }
    HELP[27] = {
    0=>"リヴァイアサン",
    1=>"神によって創造された供物。",
    2=>"終焉の日に、振舞われる筈の存在が、",
    3=>"余りに強大な力を持っていた為、",
    4=>"大海に追放された神の獣。"
    }
    HELP[28] = {
    0=>"ベヒーモス",
    1=>"神によって創造された供物。",
    2=>"終焉の日に、振舞われる筈の存在が、",
    3=>"余りに強大な力を持っていた為、",
    4=>"大地に追放された神の獣。"
    }
    HELP[29] = {
    0=>"トロール",
    1=>"亜人の中でも、特に巨大な種族。",
    2=>"知能が低く、鈍重ではあるが、その分",
    3=>"突出した腕力を持っているのが特徴。",
    4=>"ハンマーなどの武器を、好んで使用する。"
    }
    HELP[30] = {
    0=>"ガルーダ",
    1=>"神の翼となって、天空を舞う怪鳥。",
    2=>"カルラエンと呼ばれる炎を吐き、",
    3=>"全てを焼き尽くすとされる。",
    4=>""
    }
    HELP[31] = {
    0=>"ディアボロス",
    1=>"元来は、天使であったが、神に反逆し",
    2=>"天界を追放された堕天使。",
    3=>"規律を重んじる傾向があり、暫し、",
    4=>"人間とも契約を交わすことがある。"
    }
    HELP[32] = {
    0=>"セラフィム",
    1=>"第一位階の天使で、熾天使と呼ばれる存在。",
    2=>"神の傍らに在ることを許された、",
    3=>"天軍の最高司令官。",
    4=>""
    }
  #--------------------------------------------------------------------------
  # ■ ヘルプ内容を作成
  #--------------------------------------------------------------------------
  def make_helps?
  end
#==============================================================================

end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
  #--------------------------------------------------------------------------
  # ■ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :monster_book_calling      # モンスター図鑑の呼び出しフラグ
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_game_temp_monster_book_initialize initialize;end
  def initialize
    # □元の処理を実行
    hidesp_game_temp_monster_book_initialize
    @monster_book_calling = false
  end
end
#==============================================================================
# ■ Game_System
# $game_system で参照
#==============================================================================
class Game_System
  include MONSTER_BOOK
  #--------------------------------------------------------------------------
  # ■ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :monsters                 # モンスターを倒した数(遭遇)
  attr_accessor :monster_numbers          # モンスターの並び順(手動設定)
  attr_accessor :monster_values           # モンスターの並び順(逆順)
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_monster_book_initialize initialize;end
  def initialize
    # □存在する敵の種類数を取得
    @monster_numbers = MONSTER_BOOK::NUMBERS
    if @monster_numbers == {}
      for i in 1...$data_enemies.size
        @monster_numbers[i] = i
      end
    end
    @monsters = {}
    @monster_values = {}
    for i in @monster_numbers.keys
      @monsters[i] = nil
      @monster_values[@monster_numbers[i]] = i
    end
    # □元の処理を実行
    hidesp_monster_book_initialize
  end
  #--------------------------------------------------------------------------
  # ■ 倒した数の増加
  #--------------------------------------------------------------------------
  def plus_monsters(i,n)
    @monsters[i] = [[@monsters[i] + n, 0].max, 9999].min
  end
  #--------------------------------------------------------------------------
  # ■ 図鑑の完成度
  #--------------------------------------------------------------------------
  def total_monsters_number?
    num = 0
    for i in @monsters.values
      if i != 0 && i != nil
        num += 1
      end
    end
    return num
  end
  #--------------------------------------------------------------------------
  # ■ 倒した数の操作(num=図鑑登録)
  #--------------------------------------------------------------------------
  def monsters_comp?(num = 0,n = 1)
    if num == 0
      for i in @monsters.keys
        @monsters[i] = n
      end
    else
      @monsters[num] = n
    end
  end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  if !$@;alias enemy_monster_book_initialize initialize;end
  def initialize(troop_id, member_index)
    # □元の処理を実行
    enemy_monster_book_initialize(troop_id, member_index)
    # □遭遇した場合、倒した数を初期化
    enemy_book?(@hidden,@enemy_id)
  end
  #--------------------------------------------------------------------------
  # ■ 遭遇した場合、倒した数を初期化
  #--------------------------------------------------------------------------
  def enemy_book?(hideen,id)
    unless hidden
      # □図鑑に登録されたエネミーの場合
      if $game_system.monster_values[id] != nil
        if $game_system.monsters[$game_system.monster_values[id]] == nil
          $game_system.monsters[$game_system.monster_values[id]] = 0
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ 変身
  #--------------------------------------------------------------------------
  if !$@;alias enemy_monster_transform transform;end
  def transform(enemy_id)
    # □元の処理を実行
    enemy_monster_transform(enemy_id)
    # □遭遇した場合、倒した数を初期化
    enemy_book?(@hidden,@enemy_id)
  end
  #--------------------------------------------------------------------------
  # ■ 隠れ状態設定
  #--------------------------------------------------------------------------
  def hidden=(hidden)
    @hidden = hidden
    # □遭遇した場合、倒した数を初期化
    enemy_book?(@hidden,@enemy_id)
  end
end
#==============================================================================
# ■ Interpreter
#==============================================================================
class Interpreter
  #--------------------------------------------------------------------------
  # ■ モンスター図鑑の処理
  #--------------------------------------------------------------------------
  def make_monster_book
    # バトル中断フラグをセット
    $game_temp.battle_abort = true
    # インデックスを進める
    @index += 1
    # □モンスター図鑑呼び出しフラグをセット
    $game_temp.monster_book_calling = true
    # 終了
    return false
  end
end
#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ■ フレーム更新
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_scene_map_monster_book_update update;end
  def update
    # □元の処理を実行
    hidesp_scene_map_monster_book_update
    # プレイヤーの移動中ではない場合
    unless $game_player.moving?
      # 各種画面の呼び出しを実行
      if $game_temp.monster_book_calling
        call_monster_book
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ モンスター図鑑の呼び出し
  #--------------------------------------------------------------------------
  def call_monster_book
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # モンスター図鑑画面に切り替え
    $scene = Scene_Monster_Book.new
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ■ アフターバトルフェーズ開始
  #--------------------------------------------------------------------------
  if !$@;alias enemy_monster_book_start_phase5 start_phase5;end
  def start_phase5
    for enemy in $game_troop.enemies
      # □エネミーが隠れ状態でない場合
      unless enemy.hidden
        if $game_system.monsters[$game_system.monster_values[enemy.id]] != nil
          # □倒した数を加算
          $game_system.plus_monsters($game_system.monster_values[enemy.id],1)
        end
      end
    end
    # □元の処理を実行
    enemy_monster_book_start_phase5
  end
end