Thinking Outside the Box: Challenge 3

in Tips and Tricks


Artbane’s discussion of puzzles got me going! So I decided to puzzle you guys with a puzzle.

I’m going to give you a series of screens walking you through the puzzle, then you guys get to try to make it using the restrictions I set out!

Set1So here we start with the initial setup. The spikes that are raised in the image are alternating up and down every second. The spikes that are not raised are inactive. When you are on the same tile as a spike when it is up it knocks you back in the direction of the arrows. The first step is to get to the switch in the upper right.

Set2We’ve flipped the switch!. This opens the doors on the lower left. And look at that, the spikes that were active before are now not moving, and the others are on! They alternate up and down every 3/4’s of a second and if you are on the same tile as a spike when its up it knocks you back the direction of the arrow. Now we need to get to that switch in the lower left.

Set3We’ve flipped the next switch! Uh oh, it opened the door on the lower right, but now ALL the spikes are active. The ones in red alternate every second, the ones in blue alternate every 3/4s of a second. And they knock you back the direction indicated by the arrows.

Let’s get to that last switch!

Set4Whew! Now all the spikes are inactive, and the exit is open! Let’s get out of here.

Doesn’t sound too hard right? Let’s throw a monkey wrench into things:


No scripting, only one parallel process event.


Comments on this entry are closed.

  • Sophien

    Hey 😀 Really nice ^^ But maybe with a demo? 😀 THis could be much easier to understand xD For Vx Ace :DD

    • Well, the point is for people to put it together themselves and figure out how to make it. Supplying a demo would be giving away the answer. (I will be giving the answer, and the demo that shows off how I do it, probably next week. Or maybe this week if people figure out in the comments really fast)

  • David Ruckman

    At first I was like: This is pretty simple. Then it says: one parallel process event…
    Either there is some shortcut or there will be a ton of switches and variables used. Dang, and for once I thought I had this one…

    • This is a cool challenge, because the answer is going to show you how to do some neat shortcuts with events.

  • Sharon

    Scripting via a Call Script or within a Conditional Branch is okay, though, right?

    • I didn’t use call script when I did it. Curious what you were going to use it for.

  • Zachary Nelson

    First make a switch A and Switch B, make a parallel process even that switches switch A on and B off, then wait the amount of time specified, then it switches A off then B on, Set on pair of spikes to be raised when A is on and the other when B is on. Then make switches for the first two levers that lower the gates call them switch C and D, Finally make the last lever turn on a switch E, also make it where when switch E is active all spikes are set to the down position and the last gate is opened.

    Would that work?

    • Zachary Nelson

      Also add a small delay between the spikes switching to allow the player to move between them.

      • How would the spikes do knockback? That is the real challenge.

        The problem is that if you set them to event touch or player touch, they won’t cause anything to happen if you are standing on the spike when it raises.

        • HamsterPirateNinjas

          Have the parallel process check for the players x and y coordinates based on which switch is activated at any given time, and use that to activate the knock back. Problem solved.

          • You have part of it, but that requires an INCREDIBLY HIGH amount of nested conditional branches to do. And each time you add a new spike, you have to add in even more. Not saying it wouldn’t work, because it would, but you are ONE step away from having the answer.

            Also, how are you timing the up and down of the spikes.

        • Zachary Nelson

          I completely neglected that part of the challenge! Well what i came up with was making a variable on the spike switches when they are off that increases by 1 on touch, whenever a spike is up it does a condition seek if the variable if 1 or greater and is set to autorun, if the variable is 1 it knocks the player backwards, also make a event that sets the variable the 0 in front of and behind any spike. From what I tested it works but there is a slight lag when spikes pop up so I’m sure theres a better way to do it.

          Or did I make a mistake again? haha By the way these challenges are really fun and hard.

          • That is a pretty neat solution. You would probably want to have it event touch and set the variable to 1 or 2 depending on whether it should be knocked up or down. You would have to have event touches on either side to reset the variable though.

            It would work, not the solution I used but its a pretty out of the box approach!

            (Though you still need to find a way to do the timing on the spikes up and down!)

    • I just noticed, this wouldn’t create the exact conditions. Remember Spike group 1 alternates every second, Spike group 2 alternates every 3/4s of a second.

      • Zachary Nelson

        How i fixed the timing was extending the event itself, where i broke the timing into 1/4 seconds (15frames) and set it to wait like that and every 4 i set it where group A is on/off, and every 3 where group B is turned on/off,And kept going until both the groups overlapped where both A and B where off like the original state. so it repeated like that.
        Did i get it right?

        • The problem is that you need to be checking the x’s and y’s pretty constantly as well. Here is a hint: I used a total of 5 Variables in the entire system.

          • Zachary Nelson

            I keep running it through in my head over and over, I don’t want to get hardcore into it cause i know i won’t be able to stop till I solve it, and i have plans for later. But I’m really interested to see how you did it, I feel like I’m missing something really easy or simple. I’ll probably work on solving it tomorrow!

          • I’m glad I got you thinking! That is the point of these challenges!

  • Sindaine

    Ok so the way I did this was:
    1. I made the switches in the corners, and set them up to release the doors in the areas as above mentioned. (Top right switch turns on “Gateswitch1” which then went to a page on the gate that animated it lowering)
    2. For the Spikes I set up regions under each set of traps (Region#’s 1 through 10).
    3. I set up the spikes to have an individual move route that repeated the animation of them lowering and coming out of the ground with a wait equal to what above was mentioned as the animation ended and began. As the animation turned to “right” I also had it release a switch numbered per pair of spike traps. (IE Trap 1 has “Switch Check 1” switch). And then turn off that switch as it lowered back into the ground “Left” animation.
    4. Now I set up the one and only parallel process.
    4.a) Set up two variable to monitor where the player’s X and Y co-ordinates were.
    4.b) Set up a “Get location info, region ID” variable so that the system knows what region the player is stepping on that I set up earlier.
    4.c) Start conditional branches.
    if variable for region id = 1 then
    if Switch: Start check1 is on then
    Flash Screen Red
    Show Balloon icon for “!”
    Set move route for player: Directional fix on. Jump 0,-1. Directional Fix off.
    Branch off
    Branch off

    The above will make the player “Jump Directional upwards” 1 square if those conditions are met. Then I did the same thing for all the others that are supposed to make the player “Jump backwards”. Now I set up the exact same thing but changed the jump to: 0,1 to make the player go the other direction. All in all, there are 10 conditional branches within 1 parallel process. Works smoothly, and without error. Is this the answer?



    • Sindaine

      Damn I just realized I missed a step where the spikes start and stop. Shouldn’t take me long to edit my code. I’ll reply when I’m done.


    • You’ve got it mostly done!

      I did it a little differently, and I talked to someone on facebook who did the same thing. Your solution works really well, the only difference I think I would make is moving the counter to the parallel process event some way (I actually did it using some variables adding and loops, my other thought was putting it as a move route in the parallel process event, if you do a 3 second total loop, you can have the 1 sec (up and down 3 times) and .75 seconds (up and down 4 times) synch up to do a repeat of both and keep the speeds right). The only reason I would move the counter to the parallel process and then have the spike traps change based on that is that on a larger map having it done on each individual trap could lead to synch issues.

  • MyQly

    Well, I’ve gotten this working. I’m certain it isn’t in the most efficient method possible as I haven’t done anything with events previous to this so I’m rather happy with it.

    Still need to finish tweaking it after I get home from work to finish up the push back from the spikes depending on the lever states but that’s about 30% finished at this point.

    That stated, I had a couple of questions regarding the challenge and your stated solution.

    Nick, you said you utilized 5 variables in your solution. Was this inclusive of switches?

    Lastly, when you said *one parallel process event* does that mean within any common events I use only one may be parallel process? I am assuming so but wanted to verify.

    In tandem to that, am I allowed to setup event triggers to be parallel process? Does this run contrary to the stated rule?

    Like I said, I am new to eventing, so I wanted to check.

    • I think I had a total of 5 variables and 5 switches.

      As for the Parallel Process event rule, it means only ONE event, either common or on map, can be active with a parallel process trigger running. I had one event on the map with parallel process, with like, 4-5 pages I think. (1 was like, 3 commands and autorun I think though. the next to last one that turned everything off).

      I’ll probably post the solution sometime midweek since a person on facebook I think got it done near perfectly.

      • Ryan

        hey I can post pics of my parallel process if you want (it was all done on one page and the second page was blank). Kinda curious what you did too

        • I should have my post up tomorrow explaining the whole process I used. You can link your stuff if you want! One person on facebook found a way to do it, and between the two of us in dialogue, we ended up making both our processes better, which is cool! I learned something too this time.

  • Ron

    I think if you put the time it would make the better, it helps to increase dramatically
    If the player can not unlock up, they will die

  • d_a_renoir

    The timer is a timer event.

    For the direction the spikes tosses you to… Set the spikes as a player-touch event. Use the “player facing” conditional branch (in the third tab of the Conditional Branch command) to set so that the spikes will react differently if the player is facing a certain direction. If player is facing up, toss player down. If player is facing down, toss them up.

    • Player touch doesn’t work because if you are standing on it when the spikes activate it won’t work. Both Player Touch and Event touch don’t trigger if you are standing on an event when it switches pages/comes into being.

      Its actually where I got the idea to do this challenge.