トップ «前の日記(2012/11/29) 最新 次の日記(2012/12/01)» 編集

SikabaneWorksが関係するコンテンツ(主に*band系ローグライク)の開発近況・補足から全く個人的な雑記まで。

[WEB:屍の見える丘公園]| [RSS]

Angband | Badiashimshe | C# | CRAUZEL | D'angband/小説草稿 | D'angband/開発 | DarkSouls | Demon'sSouls | DungeonCrawl | ElvenUteruses | Haskell | Hengband | J9シリーズ | LEGO | LineDrawing | MISC | MTG | Mac | Math | Moria | R-18 | Roguelike | Rough | RoughSketch | Ruby | SDL | UNIX | VMware | WarHammer | Zangband | アタシラヂョウヲウ | イラスト | ガジェット | ゲーム | ゲーム紹介 | ゲーム製作技術 | ゲーム論 | スケッチ | ツクール | テクノロジー | ニコニコ動画 | ファルコム | ファンタジー | マリオ | ヴィーヤウトゥムノ | 別記事追加予定 | 変愚蛮怒 | 変愚蛮怒/スポイラー | 変愚蛮怒/元ネタ探訪 | 変愚蛮怒/攻略 | 変愚蛮怒/開発 | 宗教 | 情報 | 政治 | 文字コード | 日ペ昔話 | 東方ワンドロ | 東方外法漢女 | 歴史 | 漫画製作 | 版権絵 | 画像処理 | 翻訳 | 自然言語 | 艦隊これくしょん | 落書き | 言語解析 | 読書 | 超人ロック | 追記予定 | 通信 | 阿片窟 | 馬鹿馬鹿蛮怒/開発 | 魔法少女まどか☆マギカ | 魚類版深夜の真剣お絵描き60分一本勝負


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