麻痺耐性があるのに麻痺する (Re: 変愚蛮怒3.0.0Alpha開発フォーラム (フォーラムメッセージ #86576 からの引用))
has_free_act() 内のもともと忍者の麻痺耐性を付与する部分であったと思われる部分が壊れている。 職業忍者の判定が消失しているうえに、鎧の判定が反転してて重鎧を装備している時に麻痺耐性が得られるようになってしまっている。
そして、add_class_flags()のキャラクタ情報のフラグ情報を設定する以下の箇所も上記と整合性が取れておらず、盾を装備していないという条件が無くても麻痺耐性があることになっている。 (別々に判定を実装してるのがまずいよなあ…)
- case CLASS_NINJA:
- {
- if (heavy_armor(creature_ptr))
- {
- add_flag(flags, TR_SPEED);
- }
- else
- {
- if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr)) &&
- (!creature_ptr->inventory_list[INVEN_LARM].k_idx || has_left_hand_weapon(creature_ptr)))
- add_flag(flags, TR_SPEED);
- if (creature_ptr->lev > 24)
- add_flag(flags, TR_FREE_ACT);
- }
- add_flag(flags, TR_SLOW_DIGEST);
- add_flag(flags, TR_RES_FEAR);
- if (creature_ptr->lev > 19)
- add_flag(flags, TR_RES_POIS);
- if (creature_ptr->lev > 24)
- add_flag(flags, TR_SUST_DEX);
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_SEE_INVIS);
- break;
- }
ステータス回りは大改造して色々やらかしてますね。面目ないです。
事が重大なので、3.0.0Alpha1リリース中に修正予定。
https://osdn.net/projects/hengband/scm/git/hengband/commits/537815c815f152b10c20f3b1e6f5ddc3f173bbc7 修正しました。もう少し調べて問題なければマージします。
add_class_flags()のほうが直っていません。 盾を装備していても麻痺耐性がついているように表示されてしまいます。
add_class_flags()の方は3.0.0Alphaのリファクタリングでなく、昔からあった問題のようです。少なくとも2.2.1で症状を確認できました。いずれにせよ暫定的対応も今後の処理の統一もしっかりやらないといけないようです。
とりあえずの修正を改めて行いました。チケット完了します。
フォーラム 変愚蛮怒3.0.0Alpha開発フォーラム [#86576] からの引用
[forum: 86576]