Jump to content

Photo

Colored Crystal Switches

script request puzzle

  • Please log in to reply
15 replies to this topic

#1 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 31 October 2014 - 01:24 PM

This puzzle  involves multiple crystals that change color when you hit/attack them, cycling through a list of (identical but different colored) combos with each hit until reaching the end, and reverting back to the beginning of the list by way of an under combo. That's as far as I actually am. The goal is to have certain crystals be certain colors to proceed. There will be no indicator that a particular crystal is actally the correct color until ALL crystals have been made correct. The system will know when a crystal is the correct color thanks to an fcc script that checks what combo is currently present at each of the points where a crystal is located, triggering a screen secret once the correct combo is in each of the spots, but untriggering it if even so much as one of the crystals is hit again. It should also be versatile, and able to be fitted to run multiple puzzles (of this type) within the single script. It should be simple enough in concept, but but unfortunately for me, my concepts don't tend to translate too well into scripts. "Me too no good grammar" with scripting unfortunately.

 



#2 Frocks7Snee

Frocks7Snee

    Illustrious

  • Members
  • Gender:Male

Posted 31 October 2014 - 04:26 PM

You could just use a string of slash-> next combos that change the crystals to the next color, with a blank tile at the end that cycles back to the first. You'd still need a script to check fir the right colors, im pretty sure.



#3 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 31 October 2014 - 11:30 PM

Yup. That's how I did it. I had a ridiculous amount of fun from hitting the same crystal repeatedly and watching it cycle through all the pretty colors over and over again endlessly! Odd how such a simple thing amused me for that long... But yah, now I just need to figure out the script.



#4 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 01 December 2014 - 05:08 PM

I'm a little fuzzy on system limitations and knowing what scripting can and can't do. Would it be more realistic (for someone of my skill level) to have one script that checks for all the variables on the screen, or multiple scripts per screen that work together by each checking only a single variable? And even then, how would they actually check for the variables. Am I right in thinking I can somehow tell the system to check for whether a certain combo number is present at a particular location? And would I be able to get just a single script to cover all puzzels of this type? Or would I have to have an individual script (or even multiple ones) for each incarnation of the puzzle that the player encounters?



#5 Lejes

Lejes

    Seeker of Runes

  • Members
  • Gender:Unspecified
  • Location:Flying High Above Monsteropolis

Posted 01 December 2014 - 08:13 PM

You can have a script check combo numbers, yes. You can even have one script that does it for any screen. The easy way to do it is to scan all 176 combos for the thing you want, then keep checking those ones to see if they change.



#6 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 01 December 2014 - 10:01 PM

Okay, so basically what your saying is that when I go and write the script, I do it like this:
 
Script runs at screen init.
 
The location of each switch is set within the script (meaning that while a single script could run the entire puzzle, different puzzles of the same type would require a different script, thus in the script list they would be listed as crystalinstance1, crystalinstance2, and so on) in a manner where the X and Y coordinates to be read for each trigger are listed out, and the ffc variables (D0, D1, 2, etc) relate to the number of the combo tile required to be present at a given location.
 
Each frame the system checks each of the variables to see if it's requisit combo is present or not. If all requisit combos are present, the screen secret is triggered, but if even so much as one of the coordinates checked is found to have the wrong combok, no secret is triggered and the script will continue to run checking again with each frame until all conditions are met.
 
Does that sound about right? There is a little bit more I'd like to get out of this script, but I think it's probably best to try and start small and build up from there once the foundation is laid. The reason I'm bothering to think all this out is that I feel it might be helpful to me to have a sort of rough draft for the script written in my own vernacular before I go and try to tackle it in a language I barely understand. Hopefully that way I people can catch anything that just flat out won't work before I go through all the trouble of figuring out the wording and system grammar.
 
I'll probably start work on the actual script sometime tomorrow. For now though I'm just posting this so I don't go through all of trouble working on this only to find out that my plan was doomed from the start. To reference a certain children's story, please tell me before I start building whether my foundation is solid, or if I need to find a stronger base material. I want to be prepared! In the past the Big Bad Wolf hasn't ever even gotten the chance to come a'huffin and puffin before a wee breeze comes and blows in the house before he even gets there! I'm getting tired of it!


#7 Lejes

Lejes

    Seeker of Runes

  • Members
  • Gender:Unspecified
  • Location:Flying High Above Monsteropolis

Posted 01 December 2014 - 10:24 PM

That sounds about right. Unless I'm missing some feature you want in your puzzle, though, you probably won't need to check X and Y coordinates at all. A combo's position on the screen can be read solely through its index number, 0 to 175. That's what the variable you'll most likely be using for this (Screen->ComboD[i]) uses.



#8 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 03 December 2014 - 08:14 PM

Tried making a demo level independent of my actual quest for my puzzle idea using this script... Or at least I tried to. The damn thing refused to compile. My best guess is that I've either got some sort of syntax error, or I screwed up and completely messed something up through my ignorance. Maybe someone else can tell.
 
import "std.zh"
ffc script CrystalSwitchDemo {
 void run() {
    {
       if (Screen->ComboD[901])int ComboX(176), int ComboY(48) {
       else {
       if (Screen->ComboD[899])int ComboX(176), int ComboY(112) {                   
       }
       else {
       if (Screen->ComboD[897])int ComboX(144), int ComboY(80) {
       }
       else {
       if (Screen->ComboD[898])int ComboX(208), int ComboY(80) {
       }
       else {
       if (Screen->ComboD[900])int ComboX(176), int ComboY(80) {
       }
      Waitframe();
    }
  }
}

 

The actual program I write the script in says that nothing's wrong until the last line, where it gives me the error message "Line: 22... Error: Unexpected end of input".

 

When I try to compile it in ZQuest it tells me "PASS 1: PARSING... LINE 7: SYNTAX ERROR, UNEXPECTED FLOAT, ON TOKEN INT... FATAL ERROR P00: CAN'T OPEN OR PARSE INPUT FILE!... --- PRESS A KEY ---".

 

Not really sure why the syntax error on line 7 doesn't show up until I actually try to compile the script. That, and I'm not sure what input file it's referring to. Does it mean std.zh? If it helps at all, the program I'm writing the script in is bobby_light's ZScript Code Editor (the one talked about here:"http://www.purezc.ne...showtopic=55636").



#9 justin

justin

    Adept

  • Members

Posted 03 December 2014 - 09:16 PM

       if (Screen->ComboD[901])int ComboX(176), int ComboY(48) {
 

 

it's catching the int in this line (well, every line like this, but really the first one is where it is tripping up right now).

 

should be something like

if (Screen->ComboD[901]==something){
   do something with ComboX(176) and ComboY(48)
}
else if{...
}

obviously the ==something should actually be the thing you want to know if Screen->ComboD[901] is equal to.  if it is then it'll run what's inside the curly braces.  if not, it'll move onto the next else.

 

i'm not exactly sure what you're trying to do, so i wasn't sure what to put in the curly braces.

 

also, you want it to be else if, not just else.  else means, if the preceeding IFs aren't true then do this instead.  else if, means if the first IF isn't true, then check if this IF is true, if not then go onto the next (or possibly the else)

 

 

oh, and if you paste your code on here into the code tags it is easier to read

 

 

edit:  ok, just looking through your code again trying to figure out what you're trying to do.  

some other issues...

Screen->ComboD[x], the x should equal between 0 and 175.  If you open ZQuest and hover over the various screen positions you can get the pos#.  What is 901 supposed to be referencing?

 

 

editedit:  rereading your first posts in the thread, starting to get an idea of what you're trying to do.

import "std.zh"

const int CRYSTAL_COMBO = 0; // This should be the combo# of the first crystal colour
// combos should be in order, first combo is the first colour
// setup combos with strike next flags


// D0 = the pos# of the first crystal
// D1 = the colour of the first crystal to trigger secret 
// D2 = the pos# of the second crystal
// D3 = the colour of the second crystal to trigger secret 

// pos# is determined by hovering mouse cursor over the crystal in Zquest until the popup box shows
// colour (canadian eh?), this depends on how many colours there are, starts at 0.

ffc script CrystalSwitchDemo {
 void run(int crystalPos1, int crystalColour1, int crystalPos2, int crystalColour2) {
   while(true) {

       // This If statement is checking the Combo# at each position
       // if the combo# is equal to the combo# of the correct colour then it triggers secrets
       // both crystals have to be correct for it to work.

       if( (Screen->ComboD[crystalPos1]==CRYSTAL_COMBO+crystalColour1)&&
           (Screen->ComboD[crystalPos2]==CRYSTAL_COMBO+crystalColour2) ){

          // trigger secret
          Screen->TriggerSecrets();           
          Screen->State[ST_SECRET]=true; // Change to false if you don't want the secret permanent
       }
    
      Waitframe();
    }
  }
}

tested, works.  read through the comments to understand what is going on.  feel free to ask why if you don't get it.

 

it could be expanded to include more crystals per screen.  this was just two.  could go as high as 4.  if you wanted more than that, we'd have to differ to someone smarter than me.


Edited by justin, 03 December 2014 - 09:58 PM.


#10 Lejes

Lejes

    Seeker of Runes

  • Members
  • Gender:Unspecified
  • Location:Flying High Above Monsteropolis

Posted 03 December 2014 - 09:25 PM

There's something wrong with pretty much every line of that. I'm not sure why you're trying to look at Screen->ComboD[900] and such when that array only has 176 elements? It's one for each combo on the screen. Also worth noting that arrays start at 0, so valid indexes will be 0 through 175. You can hover your mouse cursor over a combo in ZQuest to get a better idea of how the positions are laid out. And those braces...they're meant to enclose things. Meaning if your "{" doesn't have a matching "}" you're doing it wrong. Your if statements have another problem altogether. You're kind of just sticking random stuff in them. They need to have something that evaluates to true or false, meaning either a comparison (a < b) or a boolean variable. Basically, they check whether that thing is true or false, and if it's true, run all the statements in between the if statement's braces. Using "else" means you want those statements to run if and only if the preceding if statement is false. And finally there's the int thing. That's the syntax error the compiler is telling you about. When you put "int" in front of something, it means you're declaring whatever follows as a new integer variable or function. You don't need to redeclare ComboX and ComboY because std.zh has already done that. Not that either of those functions would be useful for what you're trying to do here. They give you the X and Y coordinate of the top left corner of that combo. But you don't need the X and Y, since you're just using the position number.



#11 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 04 December 2014 - 09:07 PM

So I was right! I understand now that I understand nothing! The 897 to 901 was where I thought I was supposed to put the Combo ID#. Good to know that that's something else entirely. That would have really tripped me up if the damn thing ever compiled! Also the "else" vs. "else if". I kept going back and forth between the two unsure of which was right, but ultimately decided on "else" because... well, I'm not really sure exactly!

 

It's also good to know I'm limited to having four crystals if I want to maintain some level of simplicity. My initial designs for some of the puzzle variations I was planning to put in the actual quest ranged from having three to seven crystals (I was also juggling the idea of one that had sixteen but decided that might be too difficult for the player), but that'll be easy enough to change since the only one I've actually placed so far has three.

 

So in short, forget about X and Y, use the location arrays instead. Don't overwrite the integers lest the universe should collapse in on itself. And stop to think about whether I want something to happen "instead of" or "in addition to", because that will determine if I use "else" or "else if".

 

The one thing that bugs me now after reading all of these replies though (and it's actually pretty silly when I stop to think about it) is the question of "color" vs. "colour". I know that both are correct, but does the compiler have a preference of one over the other? Would I confuse it if I used "color" a few times and "colour" a few times, interchanging without a care between the two? Or is it just one of those things that doesn't matter to the compiler, and only matters in terms of what is or isn't a pain in the ass to any humans reading the script? I'm telling you, stupid questions like this are more annoying than getting the face of an actor or the tune to a song stuck in your head, and not being able to put a name to it even though you know that you should know it, and you actually remember that you did as recently as yesterday! I hate when that happens!



#12 justin

justin

    Adept

  • Members

Posted 04 December 2014 - 09:54 PM

the compiler is looking for words that have been declared.  if color is declared somewhere it would be valid, same for colour.  vice versa, if they aren't declared anywhere then they won't be understood.  in this case, i declared a variable called crystalColour1.  so you'd have to input it exactly as i have including the lowercaseUppercase thing i did.

 

you'd be able to have more than 4 crystals, it just wouldn't work with how this particular script is designed.  This is designed based on how you were trying to do it.  

 

 

here's the script expanded to use 4 crystals.  if you're using less than 4 crystals on that screen you'll have to put the position value for the next crystal to -1.  Eg. using 3 crystals, then D4 (position of 3rd crystal) will be -1.  Explained in the script comments too.

 

compiles.  untested.  

plus i AMURIKANIZED the word colour for you.

and added a potential sound effect feature for when secrets are triggered.

import "std.zh"
 
const int SECRET_SOUND = 0; // Change to the number for the sound effect to play when secrets are triggered. Leave at 0 if you don't want one.
 
const int CRYSTAL_COMBO = 0; // This should be the combo# of the first crystal color
// combos should be in order, first combo is the first color
// setup combos with strike next flags
 
// D0 = the pos# of the 1st crystal
// D1 = the color of the 1st crystal to trigger secret 
// D2 = the pos# of the 2nd crystal
// D3 = the color of the 2nd crystal to trigger secret 
// D4 = the pos# of the 3rd crystal
// D5 = the color of the 3rd crystal to trigger secret 
// D6 = the pos# of the 4th crystal
// D7 = the color of the 4th crystal to trigger secret 
 
// pos# is determined by hovering mouse cursor over the crystal in Zquest until the popup box shows
// color (AMURIKA!), this depends on how many colors there are, starts at 0.
 
// if you want less than 4 crystals set the next position value to -1.  
// E.G. only want 2 crystals then set D4 (3rd crystal position value) to -1.
 
ffc script CrystalSwitchDemo {
 void run(int crystalPos1, int crystalColor1, int crystalPos2, int crystalColor2, 
          int crystalPos3, int crystalColor3, int crystalPos4, int crystalColor4) {
 
   int numCrystals = 0;
   bool crystalSecret = false;
   
   if (crystalPos1 == -1) numCrystals = 0;
   else if (crystalPos2 == -1) numCrystals = 1;
   else if (crystalPos3 == -1) numCrystals = 2;
   else if (crystalPos4 == -1) numCrystals = 3;
   else numCrystals = 4;
 

   while(true) {
       // This If statement is checking the Combo# at each position
       // if the combo# is equal to the combo# of the correct color then it triggers secrets
       // all crystals have to be correct for it to work.

 
       if( (numCrystals == 1) && (Screen->ComboD[crystalPos1]==CRYSTAL_COMBO+crystalColor1)) {
          crystalSecret = true;
       }else if( (numCrystals == 2) && 
            ( (Screen->ComboD[crystalPos1]==CRYSTAL_COMBO+crystalColor1)&&
              (Screen->ComboD[crystalPos2]==CRYSTAL_COMBO+crystalColor2) ) ) {
          crystalSecret = true;
       }else if( (numCrystals == 3) && 
            ( (Screen->ComboD[crystalPos1]==CRYSTAL_COMBO+crystalColor1)&&
              (Screen->ComboD[crystalPos2]==CRYSTAL_COMBO+crystalColor2)&&
              (Screen->ComboD[crystalPos3]==CRYSTAL_COMBO+crystalColor3) ) ) {
          crystalSecret = true;
       }else if( (numCrystals == 4) && 
            ( (Screen->ComboD[crystalPos1]==CRYSTAL_COMBO+crystalColor1)&&
              (Screen->ComboD[crystalPos2]==CRYSTAL_COMBO+crystalColor2)&&
              (Screen->ComboD[crystalPos3]==CRYSTAL_COMBO+crystalColor3)&&
              (Screen->ComboD[crystalPos4]==CRYSTAL_COMBO+crystalColor4) ) ) {
          crystalSecret = true;
       }

      if (crystalSecret){ // trigger secret
          Game->PlaySound(SECRET_SOUND);
          Screen->TriggerSecrets();           
          Screen->State[ST_SECRET]=true; // Change to false if you don't want the secret permanent
          Quit();
      }
          
      Waitframe();
    }
  }
}

compare the two scripts.  how are they similar?  how are they different?  what do you think the different bits are doing?  ask questions.  that's the only way this stuff will start to make sense.


Edited by justin, 05 December 2014 - 12:07 AM.


#13 justin

justin

    Adept

  • Members

Posted 05 December 2014 - 12:57 AM

and here's a better way to do it.  easier to setup, less messy code, etc.

 

for this method.  place an FFC, give it the script CrystalSwitchFFC, and set to run on Init.  set the combo to a blank combo that isn't combo zero.  that's all you need to do with this FFC.

 

then for each crystal you're going to place those as FFCs as well.  go to the arguments tab, and set D0 to the color # that triggers it.

the first combo in your series would be color0, next is color1, etc.

 

with this method you can have 32 crystals on the screen.  and they don't have to be on the grid.  however, FFCs aren't solid, so if you want them solid you'll have to place it over another solid combo - just make a blank combo that is fully solid.

 

 

import "std.zh"
 
const int SECRET_SOUND = 0; // Change to the number for the sound effect to play when secrets are triggered. Leave at 0 if you don't want one.
 
const int CRYSTAL_COMBO = 0; // This should be the combo# of the first crystal color
 
const int NUM_CRYSTAL_COMBOS = 4; // Set this to the number of colors you're using.
 
 

// combos should be in order, first combo is the first color
// setup combos with strike next flags, have one combo after the last strike->next that looks exactly the same, but Combo cycles back to the first in the series.
 
 


ffc script CrystalSwitchFFC {
void run(){
 
        ffc f;
        int numCrystals = 0;
        int numCrystalsCorrect = -1;
 
        while(true){
              for(int i=1; i<=32; i++){
                     f=Screen->LoadFFC(i);
                     if( ( f->Data >= CRYSTAL_COMBO )&&( f->Data <= (CRYSTAL_COMBO+NUM_CRYSTAL_COMBOS-1) ) ){
                           numCrystals++;
                           if( f->Data == (f->InitD[0]+CRYSTAL_COMBO) )
                                 numCrystalsCorrect++;
                     }
              }
 
             if(numCrystals==numCrystalsCorrect+1){
                   Game->PlaySound(SECRET_SOUND);
                   Screen->TriggerSecrets();           
                   Screen->State[ST_SECRET]=true; // Change to false if you don't want the secret permanent
                   Quit();
             } 
 
            numCrystals = 0;
            numCrystalsCorrect = -1;
 
           Waitframe();     
           }
     }
}


#14 A Link to Frustration

A Link to Frustration

    Link to Frustration

  • Members
  • Gender:Male
  • Location:My Own Little Plane of Oblivion

Posted 05 December 2014 - 11:29 PM

Wow. Tried your script and it works like a charm! And here I was beginning to think it might not even be possible! :eng101:

Not really though. I actually just thought I don't know as much as I think I do. :derp:

Hey, why the hell is my emoticon wearing a graduate's cap? Is he taunting me with his smrtnses?

BAD EMOTICON! BAD! GO TO YOUR ROOM AND SIT IN THE CORNER! :whap:

...

Okay, where was I? Oh! Right! Do you mind if I use this in my quest? It'd really come in handy! Plus I can't really see the point in taking several months to try and make one myself anymore when one already exists now. :shrug:

Also, it's a pretty useful little addition to diversify any questmaker's arsenal. And it's not really like it's that original! I can't think of any off the top of my head, but I know I've seen puzzles that were extremely similar to this one in several other games. Lord knows it'll take me forever to finish making the quest, and that's not even considering testing and debugging. If I were you, I'd consider submitting it to the database! I don't really believe in sitting on things for personal gain. If there's any way to help noobs like me make their quests seem more professional I say go for it! But, that's entirely your choice.

 

I did do a bit of modifying to the comments though. Basically I just overexplained everything to myself so that I won't forget how to use it if I stop working on my quest for whatever reason and then eventually came back to it. Maybe that'll also make it harder to misunderstand should you ever decide to post it. My personal motto is that "It hasn't been done right unless you've annoyed someone." And to that end, I make sure to almost always overexplain!

 

...Still awake? :zzz: ... Crap, not again! :sorry:

import "std.zh"
 
const int SECRET_SOUND = ?????; // Change to the number for the sound effect to play when secrets are triggered. Set to 0 if you don't want one.
 
const int CRYSTAL_COMBO = ?????; // This should be the combo# of the first crystal color
 
const int NUM_CRYSTAL_COMBOS = ?????; // Set this to however many different colors of crystal you have.
 
 
// SETUP INSTRUCTIONS

// IN THE SCRIPT EDITOR
// Set the constant integers listed above to whatever numbers are applicable for your quest.
// Set whether you want the secrets triggered with the Crystal Switch Puzzle to be permanant or not by changing the "?????" in "Screen->State[ST_Secret]=?????" to either "true" or "false"

// IN ZQUEST
// Make a seperate combo for each crystal color, making sure that their location on the combo list is layed out in the same order your colors will alternate as the crystals are struck.
// Set up each combo with a Strike->Next flag, excepting the last (Crystal Switch) combo on the list. This will instead be set to reveal the screen's under combo.
// Set the screen's Under Combo as the first (Crystal Switch) combo in your list, so that the crystals can potentially cycle through all of the colors endlessly (for as long as Link keeps striking them).
// Place an ffc that is assigned to this script atop each of your Crystal Triggers. (IT IS RECOMMENDED YOU HAVE THE CRYSTAL FFCS SET TO SOLID COMBOS ON THE GRID, SO THAT THE GAME TREATS THE FFCS AS BEING SOLID AS WELL.)
// For each individual ffc, set D0 to the whatever color will read as correct for that ffc's crystal. (The first color combo on the list would be numbered as "0", the second as "1", the third as "2" and so on.)

// IN ZELDA CLASSIC
// Remember to test each completed puzzle to make sure they work correctly.



//NOTES AND TIPS
// You can have up to a maximum of 32 different crystals involved in each puzzle, but be mindful that things don't get too chaotic!
// Don't be a jerk! Try not to make your puzzels too complex without giving the player a hint for them somewhere!
// The two Crystal Switch Puzzle scripts are both perfectly identical except that one triggers permanant secrets, and the other temporary secrets.
// Each script is capable of handeling every Crystal Switch Puzzle in your quest, but you'll want to have both loaded into the Compiler if you plan on having some that result in permanant secrets and some that result in temporary ones.
 // Set the ffc's for each puzzle run off of whichever script gives the type of secret desired.


ffc script CrystalSwitchPerm {
void run(){
 
        ffc f;
        int numCrystals = 0;
        int numCrystalsCorrect = -1;
 
        while(true){
              for(int i=1; i<=32; i++){
                     f=Screen->LoadFFC(i);
                     if( ( f->Data >= CRYSTAL_COMBO )&&( f->Data <= (CRYSTAL_COMBO+NUM_CRYSTAL_COMBOS-1) ) ){
                           numCrystals++;
                           if( f->Data == (f->InitD[0]+CRYSTAL_COMBO) )
                                 numCrystalsCorrect++;
                     }
              }
 
             if(numCrystals==numCrystalsCorrect+1){
                   Game->PlaySound(SECRET_SOUND);
                   Screen->TriggerSecrets();           
                   Screen->State[ST_SECRET]=true;
                   Quit();
             } 
 
            numCrystals = 0;
            numCrystalsCorrect = -1;
 
           Waitframe();     
           }
     }
}

ffc script CrystalSwitchTemp {
void run(){
 
        ffc f;
        int numCrystals = 0;
        int numCrystalsCorrect = -1;
 
        while(true){
              for(int i=1; i<=32; i++){
                     f=Screen->LoadFFC(i);
                     if( ( f->Data >= CRYSTAL_COMBO )&&( f->Data <= (CRYSTAL_COMBO+NUM_CRYSTAL_COMBOS-1) ) ){
                           numCrystals++;
                           if( f->Data == (f->InitD[0]+CRYSTAL_COMBO) )
                                 numCrystalsCorrect++;
                     }
              }
 
             if(numCrystals==numCrystalsCorrect+1){
                   Game->PlaySound(SECRET_SOUND);
                   Screen->TriggerSecrets();           
                   Screen->State[ST_SECRET]=false;
                   Quit();
             } 
 
            numCrystals = 0;
            numCrystalsCorrect = -1;
 
           Waitframe();     
           }
     }
}


#15 justin

justin

    Adept

  • Members

Posted 06 December 2014 - 12:35 AM

Happy that you got it working. You can certainly use it in your quest, as can anyone else. It was your idea, so you can feel free to submit to database.

I had a couple thoughts on it.
- You could start all the crystals on a combo one before the range of the puzzle. I'd make it the same color as the last crystal and strike next to the first color, the actual last combo then cycles to the first color combo, not the first combo. That way you could have crystals that are correct of color zero that won't be triggered just because. Or you could just place each crystal as a different color that isn't its trigger.

- You could be really evil and place crystals on the screen that aren't FFCs, so they still cycle, but aren't part of the puzzle.

I had made a similar puzzle to this with a clock idea. Basically there were 12 block trigger spots in a circle. They weren't actually block trigger combos, but a scripted 98 flag. The player had to strike two push blocks that cycled an direction arrow around, then push the blocks to the correct locations for the right time. So if the time was 3:50, you needed a block pointing right in the 3 position and a block pointing up-left in the 10 position.

could do something similar with moving crystals, but that's a different script!

Have fun, and please don't do 32 crystals! (But if you do, the FFC running the script gets a crystal too)



Also tagged with one or more of these keywords: script, request, puzzle

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users