0_0_54D
0_0_54 のマイナーバージョンアップ。デバッグ中に発見されたバグについて。
Phy_Ck_Chain() の実装に一部不具合あり。
Phy_Ck_Chain() はタイルを落下させた後、連鎖判定を行うための関数。
詳細
debugPit というオブジェクトはゲーム開始時に作成される。
流れで見ると ev の create Event 時に “+Debug” アクション( 7番目のアクション ) から作成されるオブジェクトが debugPit である。ただし ev.OnDebug==true の時だけしか作成されないため、現時点ではアイテムの実装を待っている間を繋ぐ暫定処理。
debugPit の役割はゲーム中フラグの切り替え、ゲームルールを一部変更するフラグスイッチ。ev.PiTEnable フラグを担当している。
ev.PiTEnable の役割
連鎖で 3-Match 以外の隣接する同色タイルを破壊対象とするか、否か
ゲームボードの中央に位置する妖怪が何か呪いを持っている場合は
このオプションがオフにされる場合がある。
呪いの発動によってこのオプションがオフにされた場合に 3-Match で
消えるタイルに隣接している同色タイルは破壊の対象とされない
要するに Binary を使った状態管理用フラグ、PitEnable == 1 の時は隣接した同色のタイルを消すか否かを選択する。
ev.PiTEnable に関連した処理のある関数一覧
- mv_SwapBackColor
- mv_SwapReEnter
- Phy_Ck_Chain
この三つ
今回のバグと直接関連性があるものは Phy_Ck_Chain 以外無い。
Phy_Ck_Chain は QF_ComboChallenge から呼ばれている関数、そこ以外から呼ばれることはない。 QF_ComboChallenge はキューに入っている ID を元にコンボが無いかをチェックする関数。オブジェクト落下処理の後に呼ばれる。
if ((PiTEnable & PitOne)!=PitOne){
var v;
v = Phy_CK_3Match(a,PitOne);
return v;
}
Phy_Ck_Chain では Phy_CK_3Match という関数へ実際の処理を渡しているため、問題なのはそちら。
switch (argument1)
いきなりあからさまにおかしい処理を発見。0_0_54 で一番最後に実装された関数のようなので、結構いい加減な処理のまま動作チェックもあまりやってない感じ。
というわけでバグの温床は Phy_CK_3Match と判明。処理を確認しながら全面的に直す。
次へ
前へ