トップ «前の日記(2013/02/08) 最新 次の日記(2013/02/10)» 編集

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/02/09

[変愚蛮怒/スポイラー]モンスターの特殊攻撃選択処理(変愚蛮怒 Ver2.1.1 rev3274)

モンスター毎に規定された特殊攻撃率を通った後、以下の処理を進める。

  • 予め属性や、ペット関係で攻撃ターゲットにしている他のモンスターがいた場合、そいつが依然敵対関係であり、かつ射線の通る位置にいる場合、目標モンスター→@さんの順に特殊攻撃を試みる。
  • そうでない場合@さん→目標モンスターの順に特殊攻撃を試みる。
  • モンスターからモンスターへの特殊攻撃の場合monst_spell_monst()関数へ移行。
  • モンスターから@さんへの特殊攻撃の場合make_attack_spell()関数へ移行。
  • ただし、@さんが忍者の超隠密でaware=FALSEでいる場合、特殊攻撃の目標対象にならない。

make_attack_spell()

  • モンスターが混乱状態なら特殊攻撃は自動的に失敗する。
  • @さんに対して敵意を抱いていないなら、自動的に失敗する。
  • @さんが射程外(闘技場の時18、それ以外36)にいるなら自動的に失敗する。
  • 閃光のブレスは、ガラス地形などで特殊な射線の通り方をするので、それで目標に届くがどうかをチェックする。閃光でも基本的に通らない状態ならば閃光のブレスを特殊攻撃の選択対象から最初から除外する。
  • 射線が通るものの、@さんが壁抜けや幽体化などにより、壁にこもっている状態の場合、以下の特殊攻撃を優先的に選ぶ。
    • 分解のブレスをモンスターが使用可能で、射線を塞ぐ壁が溶解可能なら1/2の確率で分解のブレスに確定。
    • さもなくば閃光のブレスをモンスターが使用可能で、射線を塞ぐ壁がガラス地形ならば1/2の確率で閃光のブレスに確定する。
  • 射線が通ってない状態でも、以下の条件で優先的に以下の特殊攻撃を選ぶ。
    • 分解のブレス持ちで、@さんが最大射程の半分以内におり、壁の分解作用範囲内にいた場合、@さんからモンスターへの射線が通り(つまりLOSられている状態)なら1/2の確率、そうでないなら1/20の確率で分解のブレスに確定。
    • 閃光のブレス持ちで、@さんが最大射程の半分以内におり、ガラスの壁により特別な射線が通るなら1/5の確率で閃光のブレス確定。
    • スター・バースト持ちで、@さんが最大射程の中におり、ガラスの壁により特別な射線が通るなら1/5の確率でスター・バースト確定。
    • 射線が通らなくてもの意味のある特殊攻撃(叫ぶ、回復など)を持っていたなら、選択肢をそれらに狭める。
    • ここでまだ完全な確定特殊攻撃がなくて、しかるべき射線が通っている上で閃光のブレス持ちなら、1/5の確率で閃光のブレスに確定。
  • 1d100>魔法詠唱率*2を満たした場合、魔法的な特殊攻撃は全て選択肢から除外する。
  • 暗闇生成持ちが、@が忍者の上、自分がHURT_LITEやHAS_DARK_1など暗闇をまとっているフラグを持っていない場合、暗闇生成を光生成に切り替える。
    • STUPID持ちでないなら、DARKNESSフラグつきのダンジョンでは暗闇生成/光生成を使わない。
    • STUPID持ちでないなら、@さんが忍者で先の事情で光生成が使えないなら、選択肢から除外する。
  • 反魔法の洞窟でSTUPID持ちでないなら、この時点で魔法的な特殊攻撃は全て選択肢から除外される。
  • モンスターのHPが1/10で、SMARTならば、1/2の確率で回復、レベルテレポートなどの、緊急回避的な特殊攻撃のみを選択肢に入れる。
    • ただし、レベルテレポートが無意味な状態ならば、選択肢からは除外する。
  • この時点で使える特殊攻撃の選択肢がなくなったら終了。
  • STUPIDでなければ、以下のように選択肢を狭める。
    • @さんがMPを持たない職か、完全にMPが尽きているなら魔力吸収は行わない。
    • ボルト系特殊攻撃は途中に他のモンスターがいる場合にはフレンドリーファイアをやりかねないだけに終わるので選択肢から外す。
    • @さんの位置が召喚可能地点でないなら召喚系特殊攻撃は選択肢から外す。
    • 蘇生可能な死体が範囲内にないなら死者蘇生は選択肢から外す。
  • 以上を踏まえて特殊攻撃が確定していないなら、選択肢内でさらに特殊攻撃を決める。
    • STUPIDなら一様ランダムに一つ選ぶ。
    • そうでなければさらに細かく優先順位を定めるが後日別記事で解説。
  • 魔法的な特殊攻撃は25 - (敵レベル + 3) / 4%の失敗率を持つ、ただしSTUPID持ちは本能的な能力で特殊攻撃を行なっているということで無条件に成功する。
  • 朦朧としているなら1/2の確率で無条件に失敗する。
  • @さんが呪術で反魔法結界を展開しているなら(@さんのレベル * 3 / 2) > 1d(敵レベル)の時魔法的な特殊攻撃を封じる。
  • 以上を通れば、実際の特殊攻撃処理が行われる。