Ticket #41174

麻痺耐性があるのに麻痺する (Re: 変愚蛮怒3.0.0Alpha開発フォーラム (フォーラムメッセージ #86576 からの引用))

Open Date: 2021-01-15 18:42 Last Update: 2021-01-24 19:57

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
Priority:
8
Severity:
8
Resolution:
Fixed
File:
None

Details

フォーラム 変愚蛮怒3.0.0Alpha開発フォーラム [#86576] からの引用

[forum: 86576]

麻痺耐性があるのに麻痺しました。バージョン:3.0.0.0alpha プレイヤーはちからじまん骸骨忍者レベル31、職業由来の麻痺耐性だけあり。装備が重いということはなくステータス画面でも耐麻痺に+がついている。 敵はゴーゴンキメラ。 以下はメッセージログ 不意を突いてゴーゴンキメラに強烈な一撃を喰らわせた 再び敵の目にさらされるようになった。 ゴーゴンキメラを攻撃した。 <x3> ゴーゴンキメラに噛まれた。 全身が炎に包まれた! 帰還の詔の巻物 {!k!r}(e)が一個壊れてしまった! かわした。 にらまれた。 体が麻痺してしまった! ゴーゴンキメラに噛まれた。 かわした。 ゴーゴンキメラに噛まれた。 全身が炎に包まれた! かわした。

Ticket History (3/11 Histories)

2021-01-15 18:42 Updated by: habu
  • New Ticket "麻痺耐性があるのに麻痺する (Re: 変愚蛮怒3.0.0Alpha開発フォーラム (フォーラムメッセージ #86576 からの引用))" created
2021-01-15 18:58 Updated by: habu
Comment

has_free_act() 内のもともと忍者の麻痺耐性を付与する部分であったと思われる部分が壊れている。 職業忍者の判定が消失しているうえに、鎧の判定が反転してて重鎧を装備している時に麻痺耐性が得られるようになってしまっている。

  1. if (heavy_armor(creature_ptr) && (!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr))
  2. && (!creature_ptr->inventory_list[INVEN_LARM].k_idx || has_left_hand_weapon(creature_ptr))) {
  3. if (creature_ptr->lev > 24)
  4. result |= 0x01 << FLAG_CAUSE_CLASS;
  5. }

そして、add_class_flags()のキャラクタ情報のフラグ情報を設定する以下の箇所も上記と整合性が取れておらず、盾を装備していないという条件が無くても麻痺耐性があることになっている。 (別々に判定を実装してるのがまずいよなあ…)

  1. case CLASS_NINJA:
  2. {
  3. if (heavy_armor(creature_ptr))
  4. {
  5. add_flag(flags, TR_SPEED);
  6. }
  7. else
  8. {
  9. if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr)) &&
  10. (!creature_ptr->inventory_list[INVEN_LARM].k_idx || has_left_hand_weapon(creature_ptr)))
  11. add_flag(flags, TR_SPEED);
  12. if (creature_ptr->lev > 24)
  13. add_flag(flags, TR_FREE_ACT);
  14. }
  15. add_flag(flags, TR_SLOW_DIGEST);
  16. add_flag(flags, TR_RES_FEAR);
  17. if (creature_ptr->lev > 19)
  18. add_flag(flags, TR_RES_POIS);
  19. if (creature_ptr->lev > 24)
  20. add_flag(flags, TR_SUST_DEX);
  21. if (creature_ptr->lev > 29)
  22. add_flag(flags, TR_SEE_INVIS);
  23. break;
  24. }
2021-01-15 22:25 Updated by: deskull
Comment

ステータス回りは大改造して色々やらかしてますね。面目ないです。

2021-01-15 23:10 Updated by: deskull
Comment

事が重大なので、3.0.0Alpha1リリース中に修正予定。

2021-01-15 23:10 Updated by: deskull
  • Priority Update from 5 - Medium to 8
  • Severity Update from 5 - Medium to 8
2021-01-16 11:17 Updated by: deskull
  • Owner Update from (None) to deskull
2021-01-16 16:29 Updated by: deskull
Comment

https://osdn.net/projects/hengband/scm/git/hengband/commits/537815c815f152b10c20f3b1e6f5ddc3f173bbc7 修正しました。もう少し調べて問題なければマージします。

2021-01-16 21:55 Updated by: habu
Comment

add_class_flags()のほうが直っていません。 盾を装備していても麻痺耐性がついているように表示されてしまいます。

2021-01-24 19:03 Updated by: deskull
Comment

add_class_flags()の方は3.0.0Alphaのリファクタリングでなく、昔からあった問題のようです。少なくとも2.2.1で症状を確認できました。いずれにせよ暫定的対応も今後の処理の統一もしっかりやらないといけないようです。

2021-01-24 19:57 Updated by: deskull
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed
Comment

とりあえずの修正を改めて行いました。チケット完了します。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login