 #07/02/05
#==============================================================================
# ■ Enemy_Ex vol.01
# ■ ORIGINAL_ACT_vol.01対応ヴァージョン
#==============================================================================

module Enemy_Ex
  #==============================================================================
  # ■ 盗む/変化/変身/召喚/状態
  #------------------------------------------------------------------------------
  # スキルに追加(アクター専用)　名前：ぬすむ、へんか、ぶんどる　
  # スキルに追加(エネミー専用)　名前：変身　効果範囲：自分自身
  #==============================================================================
  # ■[STEAL]スキルに追加した名前　効果範囲：敵単体　※複数指定可
       STEAL = "ぬすむ","スティール"
  # ■[STEAL_ATTACK]スキルに追加した名前　効果範囲：敵単体　※複数指定可
       STEAL_ATTACK = "ぶんどる"
  # ■[STEAL_RATA]盗み成功率　※エネミーより器用さが高いほど成功率UP(初期値=アクターの器用さを10倍）
       STEAL_RATA = 10
  # ■[STEAL_REA_RATA]レア率　※初期値=10%の確率でレア
       STEAL_REA_RATA = 10
  # ■[STEAL_OK]ぬすむ/ぶんどる成功時に表示するメッセージ　※アイテム名+STEAL_OK
       STEAL_OK = "を盗んだ！"
  # ■[STEAL_NO]失敗時のメッセージ
       STEAL_NO = "盗めなかった！"
  # ■[STEAL_NOT]既に盗んでいる場合のメッセージ
       STEAL_NOT = "何も持っていない！"
  # ■[STEAL_DAMAGE]盗む実行時のダメージ文字
       STEAL_DAMAGE = "Steal!"
  #--------------------------------------------------------------------------
  # ■[STEAL_UP]盗み成功率UP(武器or防具に追加した名前 ※複数指定可
       STEAL_UP = "盗賊の小手","盗賊王の指輪"
  # ■[STEAL_UP_RATA]UPする成功率(STEAL_UP)　※倍率を指定=初期値2倍
       STEAL_UP_RATA = 2
  # ■[STEAL_REA]盗むのレア率UP(武器or防具に追加した名前 ※複数指定可
       STEAL_REA = "盗賊の指輪","盗賊王の指輪"
  # ■[STEAL_REA_UP_RATA]UPするレア率(STEAL_UP)　※倍率を指定=初期値5倍
       STEAL_REA_UP_RATA = 5
  #--------------------------------------------------------------------------
  # ■[CHANGE_ITEM]スキルに追加した名前　効果範囲：敵単体　※複数指定可
       CHANGE_ITEM = "へんか"
  # ■[CHANGE_HP]変化に必要な残りHP%      ※初期値=HP10%以下の場合、有効
       CHANGE_HP = 10
  # ■[CHANGE_OK]へんか成功時に表示するメッセージ　※アイテム名+CHANGE_OK
       CHANGE_OK = "に変化した！"
  # ■[CHANGE_NO]失敗時のメッセージ
       CHANGE_NO = "変化しなかった！"
  # ■[CHANGE_DAMAGE]へんか実行時のダメージ文字
       CHANGE_DAMAGE = "Change!"
  #--------------------------------------------------------------------------
  # ■[STEAL_UP]変化に必要な残りHP%を変更(武器or防具に追加した名前 ※複数指定可
       CHANGE_UP = "賢者の石"
  # ■[CHANGE_UP_HP]装飾品(CHANGE_UP)で変更される残りHP%　※直接指定％=初期値25%以下
       CHANGE_UP_HP = 25
  #--------------------------------------------------------------------------
  # ■[CHENGE]スキルに追加した名前　効果範囲：自分自身　※複数指定可
       CHENGE = "変身","メタモル"
  # ■[CHENGE_ANIM]変身時のアニメーションIDを指定
       CHENGE_ANIM = 1
  #--------------------------------------------------------------------------
  
  # Ex[エネミーID]
  #==============================================================================
  # ■"盗む"=>[盗むアイテム,盗むレア]
  # ■"変化"=>[変化するアイテム]
  # "i(ID)"＝アイテム  "w(ID)"＝武器　"a(ID)"＝防具　"g(金額)"＝お金　 ""＝無しの場合
  #==============================================================================
  # ■"変身"=>[変身後のエネミーID]
  # "n(0〜8)"＝nの場合、指定した数値(ID)のエネミーに変身する ※HP/SP/ステートを変身前の状態から引き継ぐ
  # "r(0〜8)"＝rの場合、指定した数値(ID)のエネミーに変身する ※HP/SP/ステートを全回復する
  # ※Ex未設定で変身スキルを使用した場合、エラーを返す
  #==============================================================================
  
  #==============================================================================
  # ■[ORIGINAL_ACT]=[仲間をたくさん呼びつつＡＢＣ_vol.03]と併用する場合は、true
  # ※併用しない場合は↓、"召喚"＝無効
  #==============================================================================
       ORIGINAL_ACT = false
  # ※スクリプトの順番(上から) 
  # @[仲間をたくさん呼びつつＡＢＣ_vol.03]→A[Enemy_Ex]→B[ORIGINAL_ACT_vol.01]
  #--------------------------------------------------------------------------
  # ■"召喚"=>[トループに追加した順番(左から1〜8番)+エネミーの種類(ID)]
  #--------------------------------------------------------------------------
  # "n(0〜8)"＝トループの順番(※0＝ランダム rnでもOK!)
  # "t(-7〜+7)"＝使用者のトループの順番にプラスする数値(※0＝必ず失敗 xxでもOK!)
  # ※nかsどちらか1つを選択する
  # "i(0〜)"＝エネミーID(※0＝使用者のIDと同じ)
  # "召喚"=>["t0i0","t1i2","n1i0","n3i0","n5i0"] ←左の方が優先的に実行
  xx = "t0i0" # 必ず失敗
  rn = "n0i0" # ランダムに使用者と同じエネミー
  #==============================================================================
  # ■エネミーID未設定の場合(削除不可/書き換え不可)
  Ex = []
  Ex[0] = {"盗む"=>["",""],"変化"=>[""],"変身"=>[""],"状態"=>[],"召喚"=>[""] }
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # ■ここから下に、Open_textで出力されたデータ(enemy.text)を貼り付ける
  #--------------------------------------------------------------------------
  
  #■ 001ゴースト
  Ex[1] = {"盗む"=>["",""],"変化"=>[""],"変身"=>[""],"状態"=>[],"召喚"=>[] }
  #■ 002バジリスク
  Ex[2] = {"盗む"=>["",""],"変化"=>[""],"変身"=>[""],"状態"=>[],"召喚"=>[] }
  #■ 003サハギン
  Ex[3] = {"盗む"=>["",""],"変化"=>[""],"変身"=>[""],"状態"=>[],"召喚"=>[] }  
  
  
end

#==============================================================================
# ■ エネミー追加のテキスト出力(データ作成後に↓スクリプトを全部削除しよう！)
#==============================================================================
class Open_text
  include Enemy_Ex
  #--------------------------------------------------------------------------
  # ■ エネミー追加データを出力(スクリプト貼り付け用)
  # イベントコマンドのスクリプトに、下の2行を貼り付けて、ゲーム中に実行する。
  #--------------------------------------------------------------------------
  # a = Open_text.new
  # a.create_enemy_text
  #--------------------------------------------------------------------------
  def create_enemy_text    
    f = File.open("enemy.text", "w")
    text = ""
    for i in 1...$data_enemies.size
      text += "  #■ " + sprintf("%03d",$data_enemies[i].id).to_s + $data_enemies[i].name + "\n  "
      text += 'Ex[' + i.to_s + '] = {"盗む"=>["",""],"変化"=>[""],"変身"=>[""],"状態"=>[],"召喚"=>[] }' + "\n"
    end
    f.write(text)
    f.close
  end
  #--------------------------------------------------------------------------
  # ■ エネミー追加データを出力(テキスト閲覧用)
  # イベントコマンドのスクリプトに、下の2行を貼り付けて、ゲーム中に実行する。
  #--------------------------------------------------------------------------
  # a = Open_text.new
  # a.create_enemy_data
  #--------------------------------------------------------------------------
  def create_enemy_data
    f = File.open("enemy_data.text", "w")
    text = ""
    for i in 1...$data_enemies.size
      if Enemy_Ex::Ex[i] == nil
        name ="#■ " + sprintf("%03d",$data_enemies[i].id).to_s + $data_enemies[i].name + "(Enemy_Ex未設定)"
        item = ["未設定"]*6
      else
        Enemy_Ex::Ex[i]["盗む"][0].scan(/([iwag])([0-9]+)/)
        e0 = [$1,$2.to_i]
        Enemy_Ex::Ex[i]["盗む"][1].scan(/([iwag])([0-9]+)/)
        e1 = [$1,$2.to_i]
        Enemy_Ex::Ex[i]["変化"][0].scan(/([iwag])([0-9]+)/)
        e2 = [$1,$2.to_i]
        e3 = ["e",Enemy_Ex::Ex[i]["変身"]]
        e4 = ["s",Enemy_Ex::Ex[i]["状態"]]
        e5 = ["c",Enemy_Ex::Ex[i]["召喚"]]
        list = [e0,e1,e2,e3,e4,e5]
        item = []
        for e in list
          case e[0]
          when "i" # アイテム
            if $data_items[e[1]] != nil
              item.push(sprintf("%03d",e[1]).to_s + $data_items[e[1]].name + "(アイテム)")
            else
              item.push("アイテムＩD設定エラー！")
            end
          when "w" # 武器
            if $data_weapons[e[1]] != nil
              item.push(sprintf("%03d",e[1]).to_s + $data_weapons[e[1]].name + "(武器)")
            else
              item.push("武器ＩD設定エラー！")
            end
          when "a" # 防具
            if $data_armors[e[1]] != nil
              item.push(sprintf("%03d",e[1]).to_s + $data_armors[e[1]].name + "(防具)")
            else
              item.push("防具ＩD設定エラー！")
            end
          when "g" # お金
            item.push(e[1].to_s + $data_system.words.gold)
          when "e" # 変身後
            new_enemy = ""
            for z in e[1]
              z.scan(/([nr])([0-9]+)/)
              if $1 == nil or $2 == nil
                new_enemy += "無し"
              elsif $data_enemies[$2.to_i] != nil
                if $1 == "n"
                  new_enemy += sprintf("%03d",$2.to_i).to_s + $data_enemies[$2.to_i].name + "(通常)/"
                elsif $1 == "r"
                  new_enemy += sprintf("%03d",$2.to_i).to_s + $data_enemies[$2.to_i].name + "(全快)/"
                end
              else
                new_enemy += "エネミーＩD設定エラー！"
              end
            end
            item.push(new_enemy)
          when "s" # 状態
            if e[1] == nil or e[1] == []
              plus_states = "無し"
            else
              plus_states = ""
            end
            for s in e[1]
              if $data_states[s] != nil
                plus_states += sprintf("%03d",s).to_s + $data_states[s].name + "/"
              else
                plus_states += "ステートＩD設定エラー！"
              end
            end
            item.push(plus_states)
          when "c" # 召喚(仲間を呼ぶ)
            if e[1] == nil or e[1] == []
              new_call = "無し"
            else
              new_call = ""
            end
            for c in 0...e[1].size
              e[1][c].scan(/([nt])([+-]*[0-9]+)([i])([0-9]+)/)
              if $data_enemies[$4.to_i] != nil or $4.to_i == 0
                $4.to_i == 0 ? e_id = i : e_id = $4.to_i
                name = $data_enemies[e_id].name
                if $1 == "n"
                  $2.to_i == 0 ? pos = "(ランダム)" : pos = "(トループの" + $2 + "番目)"
                  new_call += sprintf("%03d",e_id).to_s + name + pos
                elsif $1 == "t"
                  $2.to_i == 0 ? pos = "(必ず失敗)" : pos = "(使用者の位置から" + $2 + "番目)"
                  new_call += sprintf("%03d",e_id).to_s + name + pos
                end
              else
                new_call += "エネミーＩD設定エラー！\n"
              end
              c+1 < e[1].size ? new_call += "\n  　                ： " : new_call += ""
            end
            item.push(new_call)
          else
            item.push("無し")
          end
        end
        name = "#■ " + sprintf("%03d",$data_enemies[i].id).to_s + $data_enemies[i].name
      end
      text += name + "\n"
      text += "盗めるアイテム　　　： " + item[1] + "\n"
      text += "盗めるアイテム(レア)： " + item[0] + "\n"
      text += "変化後のアイテム　　： " + item[2] + "\n"
      text += "変身後のエネミー　　： " + item[3] + "\n"
      text += "オートステート  　　： " + item[4] + "\n"
      text += "呼び出すエネミー  　： " + item[5] + "\n"
      text += "\n"
    end
    f.write(text)
    f.close
  end
end
