武器の追加効果でスリープさせたときに勝利数が増えるのを修正(原作バグ)

原作トラキアには武器の追加効果でスリープさせたときに勝利数が増えるバグが存在しており、今回はこれを修正しました。

これはバグなのか? というご意見もあるかと思いますが、スリープした敵を撃破しても勝利数が増えることから、1人に対して2回カウントできてしまいます。また、スリープさせることで増えるのは状況画面で表示される勝利数のみであり、エンディングで見られる各ユニット個人の勝利数は増えません。上記2点から、バグと言って差し支えないでしょう。

あれこれ処理を書き換えて実験してみた結果、状態異常が成功した時点で戦闘終了させる、以下の処理が悪さしているようです。

; スリープが入った時点で戦闘終了させる
83:E289  B9 41 00	lda	$0041,Y
83:E28C  8D CE 4F	sta	$4FCE

とはいえ、この処理を潰してしまうとスリープさせたあとも殴り続けてしまうので、勝利数カウント処理のほうで処理します。

スリープ付与の処理内で $7EA4E4 (戦闘中のフラグ) に $80 (戦闘終了時にアニメ実行/状態異常用) をセットしているのを利用し、このフラグが立っているときは $83:E6E5-E71A の捕縛・勝利数カウント処理内で勝利数をカウントアップしないように変更しました。敵が武器を持っていない場合の無条件捕縛の際もこのフラグが立っているため、勝利数のカウントアップに対してのみ判定を入れています。

通常の撃破時と捕縛時にカウントが増えることは確認してありますが、他のタイミングでこのフラグが立たないかどうかは確認しきれていないため、レアケースにて何か弊害があるかもしれません。とりあえず処理を入れておいて、問題が起きないか注視しておくことにします。

また、勝利数カウントのテスト中に、闘技場で勝利しても勝利数が増えない問題を発見しました。こちらも原作の考慮漏れと思われます。併せて修正しました。

追記

$83:E6E5-E71A の捕縛・勝利数カウント処理において、上限9999を判定していますが、これが機能せず10000以上の値をカウントしていたのを修正しました。勝利数が65536回になると0に巻き戻っていたと思われます。こちらも原作のバグです。併せて修正しました。

原作では無限増援がないので65536回以上の勝利数を積み上げることは不可能であり、特に問題にならなかったと思われます。