Treetops behind cliff edges - problem & solution

● ARCHIVED · READ-ONLY
Started by Kryterion 11 posts View original ↗
  1. I was mapping recently when I came across an unusual problem that is best described with pictures.

    tut_1.png

    tut_2.png

    tut_3.png

    The reason for this is obvious: the passage for the tile is set to 'star', so it always appears above the character, no matter where you're standing. Clearly this is not acceptable! We want it to appear above the character when you're standing 'behind' it, and below when you're standing 'in front' of it - i.e., when you're on the cliff edge. The solution is pretty simple: you need to create the graphic as an event that 'knows' where you are on the map, so that it can change its priority accordingly. Experienced eventers have probably already worked out what I'm going to say (or else done this problem already), but for beginners, I'll explain it step-by-step.
     

    First, create an event anywhere on the map. Preferably somewhere where it won't interfere with the play at all (I put these sort of events in the top-left so I can find it again if I need to). The only thing this event is going to contain is a variable that keeps track of the player's map co-ordinates. In this case, we're only concerned by the character's y-position.

    Set the event trigger to parallel process.

    In the event contents, right-click, insert > game progression > control variables.

    Create a variable with the name of 'player y' (or some other useful description).

    Leave the operation as 'set'.

    Set the operand as game data > character > player > map y.

    That's it for this event. Now go to where you want to place the treetop, and make a note of the map co-ordinates (it's given in the bottom right-hand corner of the screen). Again, we're only concerned by its y-position (remember grid co-ordinates are always given in the format "x,y" so it's the second number we want). For convenience I will refer to this number as 'event y'.

    All that this event is going to contain is a process that watches the variable 'player y' and flips its priority accordingly. So again, set the event trigger to parallel process. Set the graphic to the treetop (obviously), and set the priority as 'above characters'.

    In the event contents, place a conditional branch.

    Set the condition for the branch as a variable > player y (or whatever you named it) > greater than > constant > [event y]. (While you're here, deselect the tick at the bottom that says 'set event handling when conditions do not apply', just for neatness.)

    In the outcome of the branch, put control self switch > A = ON.

    Now copy & paste the event page you just made.

    In event tab 2, change the event's condition to self switch A is ON, and change the priority to below characters.

    Change the condition of the branch from greater than to less than or equal to, and change the outcome of the branch to self switch A is OFF.

    That's it! A simple, but I hope you agree, elegant solution to the problem. Now you can copy & paste the treetop event around the map as you need it. Just remember to change the value of [event y] everytime you place it.

    tut_4.png
  2. Great simple tutorial that's very useful. I've not encountered this problem before but when I do I will know what to do!
  3. This is pretty usefull in many ways, great way to do it,  thank you!
  4. I'm curious, how often does this issue occur?  I mean, it's great you figured out a solution and I can see this type of event possibly having other uses.  But wouldn't it have been much more simple to just not put a tree there?
  5. mlogan said:
    I'm curious, how often does this issue occur?  I mean, it's great you figured out a solution and I can see this type of event possibly having other uses.  But wouldn't it have been much more simple to just not put a tree there?
    There might be tons of other scenarios where it could be useful as well (Not just with a tree top), so I think It's a valid tutorial :)
  6. I didn't say it wasn't valid.  To me it just seems overly complicated.  But I like to keep things simple, that's just me.
  7. mlogan said:
    I didn't say it wasn't valid.  To me it just seems overly complicated.  But I like to keep things simple, that's just me.
    True. I wouldn't have used this for a single tree perhaps, but I can see how this tutorial could be used in other cases.. and then I think It's a simple solution to a problem :)
  8. mlogan said:
    I'm curious, how often does this issue occur?  I mean, it's great you figured out a solution and I can see this type of event possibly having other uses.  But wouldn't it have been much more simple to just not put a tree there?
    It also happens to chairs..  So it is pretty common, for me at least.
  9. Quite useful for two block character sprites also. Thanks for the tutorial.
  10. so, i am just not getting this... am i creating 2 seperate events? one to track the Y and the other for the conditional branch? or is this all one event that consists of 2 pages? I have tried both ways and after over an hour, it still doesn't work for me...
  11. The 'Star Passability Fix' script by Neon Black should fix this problem without you needing to use events.  Check and see if it's in your script list.  If it's not, do a search for it (it's in a new project by default if you have the latest version of Ace), and add it to your project in the Materials section.