指輪の殺戮修正が両手にかかる
了解しました。自分が対応します。
修正中、一つ一つ整理しなおしているがまだ殺戮修正が両方にかかりっぱなし。
自分なりにコードを読んで修正を試みたのですが、やや変更量が多くなったためとりあえずダメージ修正についてのみ解決案のようなものを置いておきます:
https://osdn.net/users/taotao/pf/hengband/scm/commits/b22a6d6f827f0d5250a162a5b6136c589cd2ae28
修正の要点:
taotao への返信
自分なりにコードを読んで修正を試みたのですが、やや変更量が多くなったためとりあえずダメージ修正についてのみ解決案のようなものを置いておきます: https://osdn.net/users/taotao/pf/hengband/scm/commits/b22a6d6f827f0d5250a162a5b6136c589cd2ae28 修正の要点: * get_default_hand() は二刀流でないときに攻撃を行う側の手を返す関数だと思いますが、正しい値を返さないことがあるようです。
これも併せて修正の対象にしたいと思います。
* 両手が素手の場合、修行僧/練気術師/狂戦士は両手持ち扱い、他職は片手持ち扱いになるようです。(v2.2.1 のコードより)
Discordでは2.2.1も正しい挙動だったか怪しく感じていましたが、流石に変えてはおらん気もします。もう少し古いコードを確認してなるべく元の仕様に合わせます。
* 元のコードは指輪とそれ以外を一括で処理しようとしていますが、愚直に場合分けする方が無難だと思います。
自分も先ほど個人的にいじっていましたが、おおむねその方針で修正していこうと思います。
dis-氏がtaotao氏の方針をより発展させた形で解決進めてくれているので、確認してそっちに切り替える。
装備状態を enum にする方がわかりやすくて良いですね。dis- 氏の修正に賛成です。
とりあえず自分の feature/fix-ring-slaying-bonus は feature/Fix-Calc-Slaying に吸収して(適当に追加したコメント以外)後者のみ通しました。
https://osdn.net/projects/hengband/scm/git/hengband/commits/873a4473e7f8f274a83f9d4729e4599f6af408ef マージ時のミス修正していただきました。ありがとうございます。
https://osdn.net/projects/hengband/scm/git/hengband/commits/5d618a3f8283d5027034fb2eee8a6d3d00612697
さらにここまでで、リファクタリングしてもらいつつ、指輪枠の挙動については正しく成立していることを確認。本チケットは完了にする。各氏ありがとうございます。
バグを調査していて別のバグに気づいたので報告します。
概要の通り、指輪の殺戮修正が両手にかかっています。
具体例を書くとなぜかSPAM扱いされるので、とりあえずこれだけチケットに登録。詳細はIRCで説明した通り。