class CharacterListInfo

艦娘一覧

Constants

EXP_TABLE

累計経験値表

Attributes

blueprint_total_num[RW]

改装設計図の枚数 (From API version 7)

book_no[RW]

図鑑No.

damage_status[RW]

被弾状態を表す文字列(“NORMAL” 以外に何がある?)

exp_percent[RW]

経験値の獲得割合(%)

lv[RW]

Lv.

married[RW]

ケッコンカッコカリ済みかどうかを表すフラグ(boolean)

max_hp[RW]

最大HP

real_hp[RW]

現在HP

remodel_lv[RW]

艦娘の改造度合いを表す数値 (未改造の艦娘と、改造済みの艦娘が、別のデータとして返される) 0: 未改造 1: 改

ship_class[RW]

艦型 未取得の場合は、空文字列

ship_class_index[RW]

艦番号(1〜) 未取得の場合は、-1

ship_name[RW]

艦名

ship_sort_no[RW]

艦種順でソートする際に使うキー

ship_type[RW]

艦種

slot_amount[RW]

各スロットに搭載可能な艦載機数の配列(スロット数が4未満でも、要素は4個) 艦載機を搭載できない場合は 0

slot_disp[RW]

各スロットの搭載状況を表す文字列の配列(スロット数が4未満でも、要素は4個) “NONE”: “NOT_EQUIPPED_AIRCRAFT”: 艦載機を装備可能なスロットだが、艦載機を装備していない “EQUIPPED_AIRCRAFT”: 艦載機を装備している

slot_equip_name[RW]

各スロットの装備名を表す文字列の配列(スロット数が4未満でも、要素は4個)

slot_img[RW]

各スロットの装備画像のファイル名の配列(スロット数が4未満でも、要素は4個) 何も装備していない場合、および装備可能なスロットでない場合は、空文字列

slot_num[RW]

装備スロット数

star_num[RW]

星の数(1〜5)

status_img[RW]

艦娘のステータス画像(横長の画像)のファイル名

tc_img[RW]

詳細画面で表示する画像のファイル名

Public Class Methods

convert_lv_and_exp_percent_to_exp(lv, exp_percent) click to toggle source

Lv および経験値の獲得割合を、これまでに取得した累計経験値に変換して返します。 獲得割合は整数のパーセントなので、実際の累積経験値とは誤差があります。 また、経験値の獲得割合がサポートされる前のデータ(API version 4 以前)では、lv_to_exp と同じ結果を返します。 この累計経験値は、艦娘の経験値テーブルが、艦これの本家と同じと仮定して計算しています。

# File lib/admiral_stats_parser/model/character_list_info.rb, line 212
def self.convert_lv_and_exp_percent_to_exp(lv, exp_percent)
  # API version 4 以前のデータには exp_percent が含まれないので、lv_to_exp と同じ結果を返す
  unless exp_percent
    return convert_lv_to_exp(lv)
  end

  # exp_percent が 0 の場合、lv_to_exp と同じ結果を返す
  # これは Lv が上限の場合に next_exp が解決できない問題を避けるため
  if exp_percent == 0
    return convert_lv_to_exp(lv)
  end

  # 現在のレベルまでの経験値
  current_exp = convert_lv_to_exp(lv)
  # 次のレベルまでの経験値
  next_exp = convert_lv_to_exp(lv + 1)

  if next_exp
    # 次のレベルに達するまでに必要な経験値を加算して返す
    current_exp + (next_exp - current_exp) * exp_percent / 100
  else
    # 最大レベルに達した場合は、現在のレベルまでの経験値のみを返す
    current_exp
  end
end
convert_lv_to_exp(lv) click to toggle source

引数で与えられた Lv を、これまでに取得した累計経験値に変換して返します。 ただし、Lv をもとに計算する都合上、その Lv になってから取得した経験値は含みません。 この累計経験値は、艦娘の経験値テーブルが、艦これの本家と同じと仮定して計算しています。

# File lib/admiral_stats_parser/model/character_list_info.rb, line 111
def self.convert_lv_to_exp(lv)
  case lv
    when 1..50
      # Lv51までは、必要経験値が100ずつ増えていく
      lv * (lv - 1) * 100 / 2
    when 51..60
      # Lv61までは、次レベルまでの必要経験値が200ずつ増えていく
      a = 5000
      d = 200
      n = lv - 50
      # Lv50 までの累計経験値 = 122500
      122500 + n * (2 * a + (n - 1) * d) / 2
    when 61..70
      # Lv71までは、次レベルまでの必要経験値が300ずつ増えていく
      a = 7000
      d = 300
      n = lv - 60
      # Lv60 までの累計経験値 = 181500
      181500 + n * (2 * a + (n - 1) * d) / 2
    when 71..80
      # Lv81までは、次レベルまでの必要経験値が400ずつ増えていく
      a = 10000
      d = 400
      n = lv - 70
      # Lv70 までの累計経験値 = 265000
      265000 + n * (2 * a + (n - 1) * d) / 2
    when 81..91
      # Lv91までは、次レベルまでの必要経験値が500ずつ増えていく
      a = 14000
      d = 500
      n = lv - 80
      # Lv80 までの累計経験値 = 383000
      383000 + n * (2 * a + (n - 1) * d) / 2
    when 92..101
      # Lv92〜101は規則性がないため、累計経験値表から取得
      EXP_TABLE[lv]
    when 102..111
      # Lv111までは、次レベルまでの必要経験値が1000ずつ増えていく
      a = 1000
      d = 1000
      n = lv - 101
      # Lv101 までの累計経験値 = 1010000
      1010000 + n * (2 * a + (n - 1) * d) / 2
    when 112..116
      # Lv116までは、次レベルまでの必要経験値が2000ずつ増えていく
      a = 12000
      d = 2000
      n = lv - 111
      # Lv111 までの累計経験値 = 1065000
      1065000 + n * (2 * a + (n - 1) * d) / 2
    when 117..121
      # Lv121までは、次レベルまでの必要経験値が3000ずつ増えていく
      a = 23000
      d = 3000
      n = lv - 116
      # Lv116 までの累計経験値 = 1145000
      1145000 + n * (2 * a + (n - 1) * d) / 2
    when 122..131
      # Lv131までは、次レベルまでの必要経験値が4000ずつ増えていく
      a = 39000
      d = 4000
      n = lv - 121
      # Lv121 までの累計経験値 = 1290000
      1290000 + n * (2 * a + (n - 1) * d) / 2
    when 132..140
      # Lv140までは、次レベルまでの必要経験値が5000ずつ増えていく
      a = 80000
      d = 5000
      n = lv - 131
      # Lv131 までの累計経験値 = 1860000
      1860000 + n * (2 * a + (n - 1) * d) / 2
    when 141..145
      # Lv145までは、次レベルまでの必要経験値が7000ずつ増えていく
      a = 127000
      d = 7000
      n = lv - 140
      # Lv140 までの累計経験値 = 2760000
      2760000 + n * (2 * a + (n - 1) * d) / 2
    when 146..150
      # Lv150までは、次レベルまでの必要経験値が8000ずつ増えていく
      a = 163000
      d = 8000
      n = lv - 145
      # Lv145 までの累計経験値 = 3465000
      3465000 + n * (2 * a + (n - 1) * d) / 2
    when 151..155
      # Lv155までは、次レベルまでの必要経験値が9000ずつ増えていく
      a = 204000
      d = 9000
      n = lv - 150
      # Lv150 までの累計経験値 = 4360000
      4360000 + n * (2 * a + (n - 1) * d) / 2
    else
      nil
  end
end

Public Instance Methods

lv_and_exp_percent_to_exp() click to toggle source

Lv および経験値の獲得割合を、これまでに取得した累計経験値に変換して返します。 獲得割合は整数のパーセントなので、実際の累積経験値とは誤差があります。 また、経験値の獲得割合がサポートされる前のデータ(API version 4 以前)では、lv_to_exp と同じ結果を返します。 この累計経験値は、艦娘の経験値テーブルが、艦これの本家と同じと仮定して計算しています。

# File lib/admiral_stats_parser/model/character_list_info.rb, line 104
def lv_and_exp_percent_to_exp
  CharacterListInfo.convert_lv_and_exp_percent_to_exp(@lv, @exp_percent)
end
lv_to_exp() click to toggle source

Lv を、これまでに取得した累計経験値に変換して返します。 ただし、Lv をもとに計算する都合上、その Lv になってから取得した経験値は含みません。 この累計経験値は、艦娘の経験値テーブルが、艦これの本家と同じと仮定して計算しています。

# File lib/admiral_stats_parser/model/character_list_info.rb, line 96
def lv_to_exp
  CharacterListInfo.convert_lv_to_exp(@lv)
end