Tibowl / KCBugTracker

Community run bug tracker for KanColle
14 stars 1 forks source link

耐久ゲージが黒になる | Black HP bar #3

Open Tibowl opened 4 years ago

Tibowl commented 4 years ago

Description If a ship's HP is close to exactly 2/3 full, but slightly below it, its battle banner's HP bar becomes black. This is caused by some rounding error in the calculation of the green-ness of the color. The green color would become round(>=255.5) = 256, causing an overflow in the final color value, resulting in the color 0x1000000 being used instead of a color around 0xFFFF00. There's a calculator to check if/at which HP values this happens.

Screenshot and/or video image

Reproducing Steps to reproduce the behavior: (if applicable, otherwise remove this section)

  1. Go to 6-5 boss
  2. Pray to RNG
  3. See black HP bar if you get boss to 233/350

Potential fix In MathUtil change the getColor function so it uses Math.floor instead of Math.round so 255.5 doesn't get rounded to 256 and cause an overflow.

Ryuuen commented 4 years ago

Japanese Translation:

タイトル:耐久ゲージが黒になる

説明 或る艦の耐久のフル耐久よりほんの少し低ければ、戦闘画面中、耐久ゲージが黒になります。 緑色の計算では、端数処理のエラーが原因になります。 緑色(G)の数値(>=255.5)は256に切り上げ、最終的に色数値のオーバフローになります。 本来は0xFFFF00を用いるべきですが、0x1000000が使われてしまいます。 この現象の発生するか否かを判断する計算機があります。

スクリーンショット及び動画 image

バグの再現方法 バグを再現するために、必要な手順を説明してください:(存在しない場合は削除しても良い)

  1. 6-5に出撃する
  2. ダメージ数値に運を祈る
  3. ボスマス旗艦が233/350になればバグが再現できる

可能な修正方法 MathUtilにおきまして、getColor関数を修正し、Math.roundではなくMath.floorを利用します。 そうすると、255.5は256に切り上げられないようになるため、オーバフローが発生しなくなります。