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; } } }