ここまでの成果

ファイルで星取り条件を記述できるようにしてみた。星取り判定はコンボ数が前フレームより増えていたときに行うようにした。これで「何かヒット→キャンセルでChain Arts, Chain Spellが補正ビットに追加→何かヒット(ここで星が取れる)」という、グレイヴ→必殺技で星が取れる的な流れができるようになった、と思う。元の仕様ではChain系の補正が表示された瞬間空振りでも問答無用で星が飛んでいた(以上のことが起きていた)。これでも「射撃→射撃ヒット中にキャンセルスキル・スペル空振り→射撃さらに連続ヒット」で悪用できちゃうけどずいぶんましになったと思う。これで無茶苦茶なテクニックが発見されたらChain系は諦める。

; RiftAttack    = 1
; SmashAttack   = 2
; BorderResist  = 4
; ChainArts     = 8
; ChainSpell    = 16
; CounterHit    = 32
; Limit >= 100% = 64

[GetStar]
SetName=RealHokuto

[Normal]
Condition1=3
Condition2=4
Condition3=32
Condition4=64
Condition5=0
Condition6=0
Condition7=0

[RealHokuto]
Condition1=4
Condition2=32
Condition3=64
Condition4=9
Condition5=16
Condition6=0
Condition7=0

[OldVersion]
Condition1=3
Condition2=4
Condition3=8
Condition4=16
Condition5=32
Condition6=64
Condition7=0


詳細:

  • コンボ数が前フレより増えていた→以下の判定へ
    • 7つの条件それぞれについて、指定されたビットが全て揃っていれば(例えば3(Rift + Smash)なら(bits & 3) == 3として判定できる)、星を1つ減らす。*1
    • ただしこのままだと条件がそろったまま1ヒットするたびに星が取れていってしまう。そこでbool got[7];な処理済みを表すフラグを用意し、1コンボで1条件につき1回しか取れないようにする。このフラグの解除は以下
  • そうでなかった場合で
    • コンボ数が減っていた(→2ヒット以上のコンボの後ならこれで判別できる)
    • ダメージかLimitが変動した(→1ヒットの後切れて、その後のヒットが別の技だったり、CHが違っていたりすればとれる。根性値にも期待。)
  • のいずれかを満たした場合は
    • 新しいコンボが始まったとみなし、処理済みフラグをクリア。さらに1ヒット目として星取り判定も行う。


BGMをoggにしました。ゲーム開発用のDirectSound+oggでのBGM再生クラスをぶっぱコピーし、SE用の部分を消しまくり、インメモリデータの再生になっていたところもお手軽ファイルから再生に書きなおしました。500MBのwavが14MBほどに。全体を圧縮すればUSBメモリでの持ち運び・web経由での転送は現実的ですが、やはりファイルサイズは小さいに越したことはありません。

*1:実は星が0のときにも1減らしてしまうバグをやってしまった