トップ «前の日記(2014/02/04) 最新 次の日記(2014/02/06)» 編集

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


2014/02/05

[変愚蛮怒/スポイラー]投擲時のダメージ・命中判定処理(変愚蛮怒 Ver2.1.4 rev3670)

以下do_cmd_throw_aux()より確認。クッソ複雑なのでサブルーチンは今後別記事に記載。

  • 関数のステータスとして以下の状態を持つ。
    • mult…基本的なダメージ倍率。基本的に1。(旧実装の変異レイシャルの「強力投擲時」は2+レベル/40代入が行われていたが、)
    • boomerang…剣術の技「ブーメラン」処理、武器自体に戻ってくるフラグがなくても、投擲アイテムが手元に戻ってくる。
    • shuriken…忍術「八方手裏剣」時に、投擲に利用するくさびのスロットを与える。それ以外では-1。
  • 投擲するアイテムの選択。
    • shurikenが指定されている時はくさびのアイテムスロット固定。
    • boomerangがTRUEの時は装備品(右手/左手)からの選択
    • それ以外では現在手をつけられる任意のアイテムを選択できる。
    • アイテムが呪われた装備か闘技場出場中はここでキャンセル。
  • 「あなたは強く物を投げる。」変異時、multに+3を加算。
  • mul=10+2*(mult-1)
  • 10ポンド以下の投擲アイテムは10ポンド扱いに修正される。
  • 「それは敵に投げて大きなダメージを与えることができる。」アイテムか、boomerangがTRUEの時重量が半分扱いになる。
  • 投擲距離を(プレイヤーのSTR修正 + 20) * mul / divとする。
    • STR修正は3~18/***で3~240
    • また投擲距離はmul以上にならないので範囲は10~18となる。
  • syurikenが選択されている場合投擲範囲内をランダム、それ以外ではプレイヤーが選択したターゲットを目標にする。
  • 所持品の場合、投擲するアイテム数を1減らす。
  • プレイヤーの行動エネルギーを100消費
    • ただし、忍者、盗賊は消費エネルギーがレベル分軽減される。
  • プレイヤーが忍者で、くさびや、「それは敵に投げて大きなダメージを与えることができる。」剣を投げる場合、shurikenフラグをTRUE、それ以外ではFALSEにする(引数のshurikenと同じ仮引数だが上書きして再利用しているらしい)
  • 命中のチャンス値を計算
    • 「それは敵に投げて大きなダメージを与えることができる。」武器の場合、プレイヤーの投擲能力値+(素手の武器命中修正+アイテムの命中修正)*3
    • そうでない場合、プレイヤーの投擲能力値+(素手の武器命中修正)*3
    • shurikenがTRUEの場合チャンス値*2
    • プレイヤーの投擲能力値はプレイヤーの射撃技能値とほぼ同値
      • 狂戦士化している場合のみ投擲技能値のみ-20される模様。
  • 射線を進む事に以下の判定を行う。
    • 壁に命中した場合、人形であるか、薬であるか、その地点に敵がいない場合、一旦ここで処理を射線処理を終了する。
    • 敵がいた場合、test_hit_fire()による命中判定を行う。
    • 命中した場合、以下の処理を行う。
      • アイテム毎に定義されたダイスでダメージ値を決定
      • たいまつのみ特別に1d6で上書きされる
      • tot_dam_aux()関数による投擲アイテムのスレイ加算処理
      • critical_shot()関数によるクリティカル加算処理
      • アイテムのダメージ修正値を加算
      • boomerangがTRUEの場合ダメージがmult+(プレイヤーのその武器による攻撃回数)倍になり、プレイヤー自身のダメージ修正を加算
      • そうでなく「それは敵に投げて大きなダメージを与えることができる。」武器の場合3+mult倍の上でプレイヤー自身のダメージ修正を加算
      • そうでない場合ダメージをmult倍
      • shrikenがTRUEの時、ダメージに((レベル+30)*(レベル+30)-900)/55を加算
      • モンスターにダメージを与える。
  • 敵に命中した場合、たいまつならばtorch_lost_fuel()で寿命が減る。
  • アイテムの破壊確率を計算
    • 敵に命中した場合breakage_chance()で計算、命中していない場合0%
    • 人形の場合100%破壊
  • アイテムが人形の場合召喚処理
  • 薬が敵か壁に命中した場合、必ず壊れて、potion_smash_effect()が発動。
  • ★ミョルニール、★イージスファング、boomerangがTRUEの場合はアイテムが帰ってくる判定を行う。
    • アイテムが帰ってくる基本値は1d30+20+DEX命中修正(-3~+16)
    • boomerangがTRUEの場合確率+4+1d5
    • アイテムが★ミョルニール、★イージスファングかつboomerangがTRUEの場合確率+100で以下の条件に関係なく無条件に手に戻ってくる
    • 基本値が30以上かつ99%の確率の場合以下の通り
      • 基本値が37以上で手に装備したもの、なおかつプレイヤーが盲目で無い場合、アイテムは手に戻ってくる。
      • そうでなければ手で受け損ねて、足元に帰ってくる。
    • そうでなければアイテムは命中地点に落ちて、帰ってこない。
  • 破壊確率を免れた場合、アイテムが対応地点に落ちる。