Copy to Clipboard Test

Linked Secrets Code

int SecretArray[65536];//Array for the secrets that are Linked.

//Each switch that sets off multiple secrets must share the same value.

//There is no limit to the number of multiple screens that can be affected this way.











ffc script Linked_Secrets{

	void run(bool first, int type,int Trigger, int index, int secret_offset,int sfx){

		bool isHit = false;

		int ComboD[176];

		if(type ==0){

			for(int i=0; i<176; i++){

				if(Screen->ComboD[i]==Trigger)ComboD[i] = Screen->ComboD[i];

			}

		}

		//Wait for it to be triggered.

		if(first){

			if(SecretArray[index])

				isHit = true;

			while(!isHit){

				if(type ==0){

					for(int i=0; i<176; i++){

						if(Screen->ComboD[i]!=Trigger && ComboD[i]==Trigger)isHit = true;

					}

				}

				else if(type !=0){

					 //Scan lweapons and wait for right one to impact.

					for (int i = 1; i <= Screen->NumLWeapons(); i++){

						lweapon w = Screen->LoadLWeapon(i);

						if (w->ID == type && Collision(this, w))isHit = true;

					}

				}

				Waitframe();

			}

		}

		else{

			while(SecretArray[index]==0){

				Waitframe();

			}

		}

		//Play secret sound.

		if(sfx!=0 && !SecretArray[index])

			Game->PlaySound(sfx);

		if(!SecretArray[index])

			SecretArray[index]=1;

		//Change all flagged combos by offset amount.

		if(type!=0){

			for (int i = 0; i < 175; i++ ){

				if(ComboFI(i,Trigger)){

					Screen->ComboD[i]+=secret_offset;

					Screen->ComboF[i] = 0;

					Screen->ComboI[i] = 0;

				}

			}

		}

		else{	

			Screen->TriggerSecrets();

			Screen->State[ST_SECRET]= true;

		}

	}

}