トップ «前の日記(2013/07/12) 最新 次の日記(2013/07/14)» 編集

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分一本勝負


2013/07/13

[変愚蛮怒/スポイラー]ゲーム中の時間処理について2(変愚蛮怒 Ver2.1.3 rev3476)

今回はプレイヤーに関する処理中心

process_player()関数による「プレイヤーの処理」

process_player()はゲームメインループ中で1[turn]毎に呼び出される関数であり以下の処理を順に行う

  • [hack_mutation]フラグが立っている「何かが変わった気がする」と共に変異をランダムに一つ得る
  • カジノの闘技場の場合、モンスターを無条件に感知できる処理のみ尾行う
  • プレイヤー構造体中の[energy_need]の値が正であったら、加速値に依存した、SPEED_TO_ENERGY()の分だけ引く。
  • [energy_need]がまだ残っていたらこの時点でreturnで処理終了。
  • 休憩、釣り、採掘などの連続行動処理中ならばそれにキー入力による中断処理を行う。
  • プレイヤーが混乱や盲目に陥っていない状態で騎乗していれば、睡眠、混乱、恐怖、朦朧している騎乗モンスターの復帰を試みる処理を行う。
  • 練気術師の光速移動のターン数はここで1減らす。
  • 練気術師の貯めている気の値を40減らす。0未満にはならない。
  • 青魔道士のラーニング中のMP減少処理を行う。
  • 剣術家の型を取っている場合のMP減少、中断処理を行う。
  • ここから[energy_need]>0になる(行動パワーを消費する行為)を行うまで繰り返す
    • 捨て身、カウンターのフラグをリセット
    • ステータスの更新処理
    • アイテムがザックから溢れた際のドロップ処理
    • [energy_use]を0にリセット
    • カジノの闘技場中なら無条件に行動できる(process_command())
      • そうでなくプレイヤーが麻痺しているか意識不明瞭ならば、[energy_use]+100
      • そうでなく休憩中ならば何も行動せずに[energy_use]+100
      • そうでなく魚釣り中ならば何も行動せずに[energy_use]+100
      • そうでなく走っている最中ならrun_step()で自動移動処理
      • そうでなくトラベル・コマンド中ならばtrabel_step()で自動移動処理
      • そうでなく繰り返しコマンド中ならば繰り返しコマンドを実行
      • そうでなければコマンド受付(process_command())
    • アイテムがザックから溢れた際のドロップ処理
    • [energy_use]が0でなければ以下の処理を行う
      • 超能力の時止め中か[energy_use]が400を超えていたら[energy_need]に[energy_use]をそのまま加算
      • そうでなければ[energy_use] * ENERGY_NEED / 100L を加算。ENERGY_NEEDは平均100、分散25の正規乱数の近似である。
      • 色やシンボルが常時変化するモンスターの変化処理
      • ものまね師の記憶上書き処理
      • 時止め中に[energy_need]>-1000になっていたら時止め解消処理。
      • プレイヤーがプレイを終了したり死亡した場合のプレイ解除処理
      • スナイパーの集中度解除処理
      • プレイヤーがフロアを離れる場合このループを抜ける。
    • update_smell()処理

「影分身」の回避判定

  • 忍者の影分身の回避判定は[turn]が奇数の時に発動する。[turn]数の1ターンの増加量がランダムであることにより、同ターン時の判定を一致させつつ、確率性を実現している。

光源の寿命について

process_world()中のprocess_world_aux_light()関数で行われる光源処理であるがプレイヤーのみに関わる要素であるため、ここで説明を行う。10で割り切れる[turn]でのみ呼び出される処理であることに注意。

  • 光源の寿命値はオブジェクト構造体の[xtra4]変数に保持され、アイテム中の「(Xターンの寿命)」の値は長持ちエゴの場合[xtra4]の倍の値、それ以外は[xtra4]がそのまま当てはまる。
  • [xtra4]の値は長持ちエゴならば[turn]が20で割り切れる毎に、そうでない場合は[turn]が1増える毎に1減っていく。
  • 「明かりが微かになってきている。」の表示は以下の条件で発生する。
    • 光源が長持ちエゴを持っている場合、光源の寿命が50[xtra4]未満で5で割り切れ、かつ[turn]が20で割り切れない時に発生する。
    • それ以外は光源の寿命が100[xtra4]未満で10で割り切れる時に発生する。

[ヴィーヤウトゥムノ] ウィル・オー・ウィスプ/Will o' the wisp (Yellow 'E')

=== Num:582  Lev:37  Rar:4  Spd:+20  Hp:200  Ac:150  Exp:500
発光する奇妙な光球だ。それは消えたり現れたりしながら、冒険者を少しずつ引
き寄せているようだ。その踊るような奇妙な動きをみていると、何故かじっとし
ていられなくなる。
それは通常地下 37 階で出現し、幾分不規則に、かつ非常に素早く動いている。
このモンスターを倒すことは 50 レベルのキャラクタにとって 約355.77 ポイン
トの経験となる。それは的確に魔法を使うことができ、重傷+呪い、混乱、シ
ョートテレポート、テレポートの呪文を唱えることがある(確率:1/2)。それは
AC150 の防御力と 200 の体力がある。それは壁をすり抜けることができる。それ
は光っている。それは透明で目に見えない。それはテレパシーでは感知できな
い。それは酸と稲妻と炎と冷気と毒の耐性を持っている。それは進化しない。そ
れは恐怖を感じないし、混乱しないし、眠らされない。それは侵入者をかなり警
戒しており、 300 フィート先から侵入者に気付くことがある。それは 1d9 のダ
メージで殴って攻撃し、 1d9 のダメージで殴って攻撃し、 1d9 のダメージで殴
って攻撃し、 1d9 のダメージで殴って攻撃する。

0

Urwen

アッキ=ニンジャ『ウルウェン』
どう見ても精子です。

Romunqualy

鬼畜大佐『ロムンクァリィ』
本当にありがとうございました。
しつこく付きまとって呪いを
BUKKAKEして来る意味でもいやらしいのよね。