Copy to Clipboard Test

Enemy Waves Sequence Code

//Enemies spawn in waves. When all waves are spawned and all ebenies are killed, secrets pop open.
//ghost.zh required.

//Place invisible FFC anywhere in the screen.
//D0 - D7 - defines enemy waves. Each argument defines enemy wave in following scheme:
//#####.____ - delay between previous wave and this one, in frames. -1 - wait until all beatable enemies are gone.
//_____.###_ - ID of enemy to spawn.
//_____.___# - number of enemies to spawn, 1-9.

ffc script SequentialEnemySpawn{
	void run (int wave1, int wave2, int wave3, int wave4, int wave5, int wave6, int wave7, int wave8){
		if (Screen->State[ST_SECRET])Quit();
		Waitframes(5);
		int waves[8] = {wave1, wave2, wave3, wave4, wave5,wave6,wave7,wave8};
		int time[8];
		int enID[8];
		int ennum[8];
		for (int i=0; i<8; i++){
			time[i]=GetHighFloat(waves[i]);
			ennum[i]=Abs(GetPartialValue(waves[i], -4, 1));
			enID[i]=Abs(GetPartialValue(waves[i], -1, 3));
		}
		for (int i=0; i<8; i++){
			if (time[i]<0){
				Waitframes(5);
				while(EnemiesAlive())Waitframe();
			}
			else Waitframes(time[i]);
			if (time[i]!=0)Game->PlaySound(SFX_SUMMON);
			for (int n=1; n<=ennum[i];n++){
				npc en = SpawnNPC(enID[i]);
			}
		}
		while(EnemiesAlive())Waitframe();
		Game->PlaySound(SFX_SECRET);
		Screen->TriggerSecrets();
		Screen->State[ST_SECRET]=true;
	}
}