2012/11/30
■ [変愚蛮怒/スポイラー]最大HPの計算処理(変愚蛮怒 Ver2.1.0)
同日追記
レベル1時点でのHP計算が間違っていたので修正。
本文
変愚の@さんのHPの決定には、ヒットダイスとCONが関係してくる。前者は種族、職業、性格の各HD値を加算した合計(スペルマスターのみ種族/2+性格)で決まる。 キャラを作成した時点でレベル1のHPをヒットダイス+3d(ヒットダイス)で与え、その後レベルが上がる毎に1d(ヒットダイス)が加算されたものが予め加算される。
所謂ライフレートというのは、レベル50までに得た計53d(ヒットダイス)分のHPの期待値を100として、実際に割り振られたHPがどの位の比率であるかを指している。シャッフルや新生の薬によりライフレートが変化するというのはつまりこのダイスを振りなおして、レベル毎の固定を決め直していることに他ならない。
これにCON値に基づいたボーナス値をテーブルから決め、加算することで最終的な最大HPが決まる。以下はそのテーブルをソースコードから引用である。128は負値をbyte型変数でつけるための単なる下駄なので気にしなくても良い。
/* * Stat Table (CON) -- extra 1/4-hitpoints per level (plus 128) */ byte adj_con_mhp[] = { 128 + -8 /* 3 */, 128 + -6 /* 4 */, 128 + -4 /* 5 */, 128 + -2 /* 6 */, 128 + -1 /* 7 */, 128 + 0 /* 8 */, 128 + 0 /* 9 */, 128 + 0 /* 10 */, 128 + 0 /* 11 */, 128 + 0 /* 12 */, 128 + 0 /* 13 */, 128 + 1 /* 14 */, 128 + 1 /* 15 */, 128 + 2 /* 16 */, 128 + 3 /* 17 */, 128 + 4 /* 18/00-18/09 */, 128 + 5 /* 18/10-18/19 */, 128 + 6 /* 18/20-18/29 */, 128 + 7 /* 18/30-18/39 */, 128 + 8 /* 18/40-18/49 */, 128 + 9 /* 18/50-18/59 */, 128 + 10 /* 18/60-18/69 */, 128 + 11 /* 18/70-18/79 */, 128 + 12 /* 18/80-18/89 */, 128 + 14 /* 18/90-18/99 */, 128 + 17 /* 18/100-18/109 */, 128 + 20 /* 18/110-18/119 */, 128 + 23 /* 18/120-18/129 */, 128 + 26 /* 18/130-18/139 */, 128 + 29 /* 18/140-18/149 */, 128 + 32 /* 18/150-18/159 */, 128 + 35 /* 18/160-18/169 */, 128 + 38 /* 18/170-18/179 */, 128 + 40 /* 18/180-18/189 */, 128 + 42 /* 18/190-18/199 */, 128 + 44 /* 18/200-18/209 */, 128 + 46 /* 18/210-18/219 */, 128 + 48 /* 18/220+ */ };
これを踏まえて、calc_hitpoint関数では以下の処理が行われる。
- bonus値をCONボーナス値*@さんのレベル/4で計算。
- 吸血鬼/悪魔/魔王変化などにより種族のHDが上書きされている場合、それに基づいた再計算処理を行う。
- @のレベルに基づいたHP固定値を取得する(以下mhp値とする)
- @さんがスペルマスターの場合、レベル30以下の場合mhpを(レベル+45)%に、Lv30以上の場合75%に減らし、bonusも65%に減らす。
- mhpにbonus値を加算する。
- @さんが狂戦士の場合、bonus加算の済んだmhpに(110+(((レベル + 40) * (レベル + 40) - 1550) / 110))%の修正を与える。
- HPがレベル値を下回っていたら、せめてレベル値分を下限とする。
- 士気高揚状態ならHP+10
- 常に狂戦士化している狂戦士以外で、狂戦士状態ならHP+30
- 真つよし・スペシャルを服用中ならHP+50
- 呪術の腕力強化状態ならHP+15
- 呪術の肉体強化状態ならHP+60