OSDN Git Service

[Fix] 練気術師の練気による格闘ダメージ修正が機能していなかった
authortaotao54321 <taotao54321@gmail.com>
Sat, 6 Feb 2021 08:29:30 +0000 (17:29 +0900)
committertaotao54321 <taotao54321@gmail.com>
Sat, 6 Feb 2021 09:05:27 +0000 (18:05 +0900)
commitaf3cff68c6675e62e95cb16b5baa9e760b172988
tree79d51392d12d2cf5c81e97cc38bae51bc55d121a
parent13e282f3aae2b3f29a398170c261de73adc4f8ea
[Fix] 練気術師の練気による格闘ダメージ修正が機能していなかった

calc_num_blow() 内で計算したものが後から calc_to_damage() の戻り値で上書きされていた。
当該コードを calc_to_damage() に統合して解決。
ダメージ修正を計算するコード自体もトリッキーだったので、素直な実装にした。

プログラム設計の面では、現状以下のような問題が存在すると考えられる。今後の課題。

* 関数名から副作用の有無がわかりにくい。player_type* の内容を直接変更し
  ているのに calc_foo() といった名前になっているものがある。update_foo()
  などの方がわかりやすい。
* 副作用のない calc_foo() 関数の player_type* 引数に const が付いていれ
  ば本件のようなミスは防げる。ただし、下請け関数も含めて広範囲に const
  を付ける必要があるため作業量は多い。
* ステータス間に依存関係が存在するため、計算の順番を間違えないよう人手で
  チェックする必要がある。
src/player/player-status.c