トップ «前の日記(2012/12/20) 最新 次の日記(2012/12/22)» 編集

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/12/21

[変愚蛮怒/スポイラー]自己変容処理の流れ(変愚蛮怒 ver2.1.1)

2012/12/22追記

ソース上、自己変容時に種族変更制限がかかっていることと、自分のプレイ経験上バルログに変化したことが矛盾している件が解決。バグのために実質の種族変更先は「アンドロイド以外」になっていることが判明した。

問題の箇所はここである。

/*
 * Restrict the race choices by exp penalty so
 * weak polymorph always means weak race
 */
if (power < 0)
	goalexpfact = 100;
else
	goalexpfact = 100 + 3 * randint0(power);

do
{
	new_race = randint0(MAX_RACES);
	expfact = race_info[new_race].r_exp;
}
while (((new_race == p_ptr->prace) && (expfact > goalexpfact)) || (new_race == RACE_ANDROID));

change_race(new_race, effect_msg);

変化前と同じ種族でなく、アンドロイドでもなく、なおかつ経験値修正未満の種族にしたいのなら、こうでなければならないはずである。

while ((new_race == p_ptr->prace) || (expfact > goalexpfact) || (new_race == RACE_ANDROID));
/*
 * Restrict the race choices by exp penalty so
 * weak polymorph always means weak race
 */

"weak polymorph"といっても、自己変容はこの箇所以外に実装はないので"strong polymorph"なぞ勿論ない。ホモは嘘つき、嘘つきはホモ、よってこの実装者はホモ。(三段論法破綻不可避)

本文

do_poly_self()関数より解析…したのだが、以前の個人的体験と矛盾した事態があるので、それを交えてみる。

  • @さんのレベルをpower値にそのまま代入
  • 「運」の徳+1
  • (power)>d20を満たし、なおかつ種族がアンドロイドでない場合1/3の確率で以下の処理
    • powerを10消費
    • (power)>d5かつ1/4の確率でpowerを2消費して性別が反転する。
    • (power)>d30かつ1/5の確率でpowerを15消費して以下の処理を行う(奇形化)
      • 全ステータスが各1/2の確率でvalue:6+d6分低下する、2/3の確率で永久的な喪失
      • さらに魅力がvalue:d6分永久的に喪失
    • (power)>d20 かつ 1/10の確率を満たす限り、powerを10消費してランダムに突然変異を1つ失う処理を繰り返す。失う変異がもう無かった場合「奇妙なくらい普通になった気がする」
    • 種族変化処理を以下の通りに行う。
      • 経験値ペナルティを基準に変化し得る種族を制限、ここまでで(power)が負になっていたら+0%、正ならアンドロイド以外の経験値ペナルティ 3 * (d(power)-1)以下の種族に変更される。
  • (power)>d30を満たした時1/6の確率で以下の処理
    • powerを20消費
    • 「内臓/機械の構造が変化した!」
      • 全ステータスが各1/2の確率でvalue:6+d6分低下する、2/3の確率で永久的な喪失。
      • 1/6の確率で「現在の姿で生きていくのは困難なようだ!」で(d10)d(@レベル)のダメージ。powerを10消費。
  • (power)>d20かつ1/4の確率でpowerを10消費して能力の限界値が変化する。
  • (power)>d15かつ1/3の確率を満たす限りpowerを7消費して突然変異を1つ得る。
  • (power)>d5を満たすなら、powerを5消費して傷の軽重が変化する。
  • 残った(power)の回数分ステータス交換を繰り返す。

以上。

問題は、種族変更処理である。以前自分はアルコン・ティーンチ混沌の戦士で散々自己変容の報奨を受けまくった挙句、終盤、カオス領域の自己変容で種族がバルログになったことがある。

天使から大悪魔とか見事な堕天ぶりだと草を生やしたものだが、この計算式の限りだと、レベルが最大でも種族ペナルティ+117%以上の種族には変身しないことになる。(power:50でも、変身処理に入った時点で-10され、(40-1)×3で最大117)

バージョンはまだ1.6.2であった記憶があるのでその間に変化した可能性がある。今回の解析が間違いでなく、なおかつ自分の記憶が勘違いでないことを祈って、いずれ再調査したい。

いずれにせよ現行では、以前エログロネタ絵で書いたえるふ→半タイタンの変身なぞ有り得ないのであった。しめやかに悶絶。

やっぱり、有り得たじゃないか!(安堵)

[D'angband/開発]D'angband開発日誌 part33

  • 余計なコメントを削除。(2012/12/19~)
  • ifdef JP による煩雑なローカライズの統合。(2012/12/19~)
  • 変愚蛮怒のeffect.cで実装されていたステータス処理のリファクタリング中(2012/12/19~)
    • 超隠密や、構え、型なども既にtrait系列に加えているので統合可能。折を見て進めるべし。
  • traitにalias定義機能を追加(完了・2012/12/20~2012/12/21)
    • trait_type構造体、parse_trait_info()、reprocess_trait()などを修正してaliasを追加、並びにhas_trait()関数上でalias処理も走査する機能を実装。
    • ただしそれに伴い、現在のフラグ処理上で非常に処理が重くなる。これらの高速化を行うため、フラグ保持を予めcreature_type構造体に収めるなどの改良を行う予定。

[ヴィーヤウトゥムノ]ハンサムな『ライア=エル』

「ランタンは売り切れたんだよ!もう来るんじゃない!」

Lyar-el

 このエルフとしては成人したばかりの若い青年は、元は豪商の長男だったそうだが、許嫁であった同族の娘を無頼の人間の男に取られた上、その際の悶着で大恥をかいて故郷を去らざるを得なくなった。
 わずかばかりの手持ちの資金から異郷で店を開き、ソツなく切り回す様は親譲りの商才を思わせる。概ね現地人からの風評は良く、言い寄ってくる異性も少なからずいるが、許嫁に対する執着が依然強いため取り合わない。少しずつ増えている貯蓄も、全ては一切の立場とプライドを取り戻すためである。