次はミスクリアの処理を作る
ミスクリアは200点と500点に達した時に、ミスがあればクリアされる。ミスしていなければ、そのままゲーム続行。
スコアが200(500)点に達するのは、工具の落下と、事務所に駆け込んだときの2パターンある。
なので、「オクトパス」のときに作った判定ロジックを流用した。
スコアを加算する前に、変数bscに待避しておき、bscと、現在のスコアを加味して判定する。
if (bsc>=195 & bsc<200 & score>=200) | (bsc>=495 & bsc<500 & score>=500) { if miss>0 and miss_clearflg=0 : miss_clearflg=1 : miss_clearcnt=300 : miss_flash=1 : bsc=score }
ここまでは楽だった。問題は、ミスクリア時の演出だった。
ミスがあれば、ミスマークが点滅して、ミスがクリアされる。
単純にこれだけならよかったのだが、この間、ドアの開閉も発生するし、作業員も移動できる。
しかも、ドアが開いていると、入れるが、スコアは加算されない。そしてその場から移動できない。
これだけの演出をするために、フラグを作りまくりw
ミスクリア演出中であるフラグ、ミスマークが点滅するためのカウンタ、ミスマークが点灯しているか消灯しているかを表すフラグと、3つのフラグで強引に判定。
ただ、ミスマークを表示するサブルーチンや、移動のサブルーチンはなるべく使いまわすようにした。
*missmark ;ミスマークの表示ルーチン ;ミスクリア時の処理 if miss_clearflg=1 { ;30フレーム単位でミスマークを点滅させる if (miss_clearcnt\30)=0 { miss_flash=miss_flash^1 } miss_clearcnt- if miss_clearcnt<=0 : miss_clearflg=0 : miss=0 } if miss_flash=1 or miss_clearflg=0 { repeat miss pos 530,178 celput 6,cnt loop } return