0_0_54D

 obake   debug   version 

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 に関連した処理のある関数一覧

  1. mv_SwapBackColor
  2. mv_SwapReEnter
  3. 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 と判明。処理を確認しながら全面的に直す。




次へ

前へ