最大HPの決定

skills2.cc 2128 int calc_hp(void) が最大HPの計算をしているようだ。
int hitpという変数で計算していき、最後にyou.hp_maxに代入している。
まずは基本計算。

    hitp = (you.base_hp - 5000) + (you.base_hp2 - 5000);
    hitp += (you.experience_level * you.skills[SK_FIGHTING]) / 5;

you.base_hp及びyou.base_hp2はゲーム開始時に5000が代入されている。その後で何か色々やっているみたいだけどわからないので省略。
その後に現在のレベルと戦闘スキルのレベルの乗を5で割った数字を足している。
後は、狂戦士状態(3/2倍)石像の躯(3/2)、氷の躯(6/5)、ドラゴンの躯(8/5)などの変異中のボーナスと突然変異のボーナスを加算。
そしてyou.hp_maxに結果を代入した後deflate_hp( you.hp_max, false );という関数を実行してhitp返してを終了している。

まとめ
平常時の最大HPをあげるには

  • レベルを上げる
  • 戦闘スキルをあげる
  • HPが増える突然変異を取る