BonusPointの獲得と消費

※このページ内の式を見るときの注意点
Floor[ x ] : xを小数点以下切り捨て
Ceil[ x ] : xを小数点以下切り上げ
Sqrt[ x ] : xの正の平方根
x % y : xをyで割った余り

獲得ボーナスポイント

Lv N になったときにもらえるボーナスポイントは
getBonusPoint{Lv(N-1→N)} = Floor[(N-1)/3]+3
(Lv22までの実測から推測。)
Lv 獲得BonusPoint 累積BonusPoint
1 - 2
2 3 5
3 3 8
4 4 12
5 4 16
6 4 20
7 5 25
8 5 30
9 5 35
10 6 41
11 6 47
12 6 53
13 7 60
14 7 67
15 7 74
16 8 82
17 8 90
18 8 98
19 9 107
20 9 116
21 9 125
22 10 135
23 10 145
24 10 155
25 11 166
26 11 177
27 11 188
28 12 200
29 12 212
30 12 224
31 13 237
32 13 250
33 13 263
34 14 277
35 14 291
36 14 305
37 15 320
38 15 335
39 15 350
40 16 366

消費ボーナスポイント

ステータス値を N から N+1 にするのに必要なボーナスポイント(ゲーム内の表示と同じ)は、
payBonusPoint{Status(N→N+1)} = Floor[N/6]+1
(ステータス1〜30の実測から推測。)
ステータス値 必要コスト
1 1
2 1
3 1
4 1
5 1
6 2
7 2
8 2
9 2
10 2
11 2
12 3
13 3
14 3
15 3
16 3
17 3
18 4
19 4
20 4
21 4
22 4
23 4
24 5
25 5
26 5
27 5
28 5
29 5
30 6
31 6
32 6
33 6
34 6
35 6
36 7
37 7
38 7
39 7
40 7

おまけ:累積ボーナスポイントの計算式

上の表のように値を出して足し算すれば出せますが、それをやらずに求めるための式。

LV N の時の累積ボーナスポイント

2 + getBonusPoint{Lv(1→2)} + getBonusPoint{Lv(2→3)} + … + getBonusPoint{Lv(N-1→N)}
より、
totalBonusPoint{Lv(N)} = Floor[N/3]*(Floor[N/3]+5)*3/2 + (Floor[N/3]+3)*(N%3) - 1
例: LV 10の時の累積ボーナスポイント
totalBonusPoint{Lv(10)}
= Floor[10/3]*(Floor[10/3]+5)*3/2 + (Floor[10/3]+3)*(10%3) - 1
= 3*(3+5)*3/2 + (3+3)*1 -1
= 36 + 6 - 1
= 41

ステータス値を A から B (A<B)にするのに必要なボーナスポイント

payBonusPoint{Status(A→A+1)} + payBonusPoint{Status(A+1→A+2)} + … +payBonusPoint{Status(B-1→B)}
より、
payBonusPoint{Status(A→B)} = Floor[B/6+1] * (Floor[B/6]*3 + B%6) - Floor[A/6+1] * (Floor[A/6]*3 + A%6)
例: ステータス値を 16 から 19 にするのに必要なボーナスポイント
payBonusPoint{Status(16→19)}
= Floor[19/6+1] * (Floor[19/6]*3 + 19%6) - Floor[16/6+1] * (Floor[16/6]*3 + 16%6)
= 4 * (3*3 + 1) - 3 * (2*3 + 4)
= 4*10 - 3*10
= 10

累積ボーナスポイントを T 確保できる最低限のLV

「LV N の時の累積BonusPointの式」の逆。(複雑なのでいったんPを計算してそのPを使ってLVを求めている。)
P = Floor[(Sqrt[249+24*T]-15) / 6]
needLV = P*3 + Ceil[(T - (P*(P+5)*3/2-1)) / (P+3)]
例: 累積ボーナスポイントを 300 確保できる最低限のLV
P = Floor[(Sqrt[249+24*300]-15) / 6]
= Floor[(Sqrt[7449]-15) / 6]
= Floor[(86.307-15) / 6]
= Floor[11.885] = 11
needLV
= 11*3 + Ceil[(300 - (11*(11+5)*3/2-1)) / (11+3)]
= 33 + Ceil[(300 - 263) / 14]
= 33 + Ceil[2.643]
= 33 + 3
= 36