Non-threaded

Forums » Advanced Editor Forum » Read Thread

Get help from the experts on variables, scripts, items, and other scary things.

Random Encounter with Skill variable script issue

4 years ago
@BradinDvorak I'm working on a script that does random encounters, but there is a fail scenario that can trigger based on a skill variable(in this case DIMENSION). So I did have this script validating until I realized I had forgotten to account for players attempting the random encounter after already experiencing the 3 fail scenarios. I added script to account for that and suddenly it is rejecting the END on line 150. Which is the second to last END. I also was originally doing the middle portion as IF %DIMENSION > 2 AND < 7 THEN but it would not validate so I had to nest IF statements instead. I'll go post about that on the bug thread shortly. See below full script. IF %DIMENSION < 3 THEN BEGIN %RAND := 1D35 IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND > 11 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND > 11 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND > 11 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END ELSE IF %DIMENSION = 3 THEN BEGIN %RAND := 1D25 IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND > 11 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND > 11 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND > 11 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END ELSE IF %DIMENSION = 4 THEN BEGIN %RAND := 1D25 IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND > 11 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND > 11 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND > 11 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END ELSE IF %DIMENSION = 5 THEN BEGIN %RAND := 1D25 IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND > 11 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND > 11 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND > 11 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END ELSE IF %DIMENSION > 5 THEN BEGIN %RAND := 1D13 IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND > 11 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND > 11 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND > 11 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE END ELSE IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN BEGIN %RAND := 1D10 IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE END

Random Encounter with Skill variable script issue

4 years ago
There's two spots where I see ELSE followed immediately by END. I don't think that's going to work.

Random Encounter with Skill variable script issue

4 years ago
Oh my god, thank you. I've been staring at this text wall for almost an hour and did not catch that lol.

Random Encounter with Skill variable script issue

4 years ago
Or not. Now it's validating but the link is ignoring the script altogether and treating it as just a previous page link.

Random Encounter with Skill variable script issue

4 years ago
Quick logic check/question: I'm looking at it and it appears to say IF dimension less than 3, do this stuff. ELSE if dim is 3, do this stuff. ELSE if dim is 4, do this. ELSE if dim is 5, do this. ELSE if dim greater than 5, do this. ELSE something about dim fail. I don't see any way for it to get to dim fail because dim will always meet one of those other conditions. Beyond that, if it's doing nothing, it could be processing and not finding a true statement. I could see that if RAND was greater than 11 and none of the dimfails were zero. Or if RAND was any number and the corresponding DIMXX wasn't zero.

Random Encounter with Skill variable script issue

4 years ago
Maybe that's where I'm messing up here. Walking myself back through my logic of writing the script. I want the player to be able to experience randomized encounters with a chance of failure. The chance of failure being higher if their skill level is lower. Then I realized I had not accounted for the possiblity of the player attempting one of these random encounters after already experiencing all three failures. I have variables in place on each encounter and failure page to prevent players seeing the same scenario twice and was having an issue with them showing multiple times anyways. So I thought it might be because I had forgotten to account for all 3 fail scenarios being seen and wrote in the final BEGIN END portion to see if that fixed the issue. Which is when the script being completely ignored started up. This is all just me testing it out before I implement it to my story. For the end product I want to have a total of 10 possible random encounters and between 3 and 5 possible fail scenarios. However the player will only have the chance to see a limited number of these encounters. That way they have a chance of having a completely new experience with these encounters on other play throughs. So in the actual game there is no chance for them to see all 10 encounters, but they will have a chance to see all of the failure scenarios since those will not count toward the total chances they have to try getting the encounters. Hopefully that makes sense, I feel like my brain was getting rambly there at the end. Maybe it's the RAND that is the issue. I have RAND with a max of 100 but set it to 1D35 at most for the highest failure rate. I do have lines to account for numbers higher than 11 on the roll, but I may have missed putting one in somewhere. I'm about to double check for that.
EDIT: After all that rambling I see what you're talking about now. That is probably what is confusing it. How would I fix that while also still accounting for the multiple fail scenarios? Add OR statements?

Random Encounter with Skill variable script issue

4 years ago
Hmmm.... Looking at the first block, for dimension = 3 (I'm not sure what the dimension aspects are or how that's set). RAND is setup with 1d35. For 1-10 it appears you want to send them to a page, but ONLY if the DIMXX is zero. I'm guessing DIMXX gets set to zero after a reader completely that particular encounter. So there's a 1 in 3.5 (10/35 = 28.5%) chance that one of those lines will come up, and if the user has already seen that encounter, then there's no encounter at all. In the other cases (25/35 = 71.5%) there's only an encounter if one of the dimfails is already set to zero. As I'm reading that section, if NONE of the dimfails are set to zero, there's a 71.5% chance nothing happens. Reading back to your text, you mention 10 random encounter and 3-5 fails. Are the 3-5 fails some of those random encounters? It doesn't sound like it, so do you mean you want 13-15 possible random encounters, but not more than 5 failures and no repetition? I guess I'm asking the relationship between the random encounters and the fails. Are the fails random, too? Do you want the reader to get some number of random encounters AND some number of fail encounters?

Random Encounter with Skill variable script issue

4 years ago
DIMXX corresponds to each encounter page and DIMFAILX is the failure scenarios. The encounters are random and each one is its own thing. But, the failure scenarios are consecutive. So you have to get fail scenario 1 before you can get fail scenario 2 and so on. Once you have all the fail scenarios then failure is no longer possible and you will always get an encounter. I'll probably end up tweaking how many of each ends up in the actual story, but that's the basic concept of it for the purpose of this script. Yes, that's why I wrote in the final section to try and account for if none of the dimfails are set to 0. But, that seems to be part of the problem since it made the script get ignored once I added it in.

Random Encounter with Skill variable script issue

4 years ago
I see. There are, of course, tons of ways to do everything in computers. Likely Brad will show up and tell you how to do this in one line of code. But in the meantime, here's how I would think through it: "Once you have all the fail scenarios then failure is no longer possible and you will always get an encounter. " So would it make sense that there's X% chance something's going to happen (failure or encounter)? Then I might start it that way (this is more pseudo-code than actually syntax-correct code): RAND = 1d100 IF RAND less than 50 THEN BEGIN END Then you've just got one big block that only happens when the encounter is possible. If there's a 100% chance of either the encounter or the fail, you just leave that out. Then, inside that BEGIN block, how do you decide if there's an encounter or failure? If that's a % chance, that's another IF inside the block -- but you've also got to decide if there can be a failure. Personally, I'd use one variable for failure. The value would range from 0 to 3, indicating the number of failures. So, if there's a 25% chance here of getting a failure (if allowed): RAND = 1d100 IF RAND less than 25 BEGIN IF NUMFAILURES less than 3 BEGIN give a failure here (and increment NUMFAILURES) END ELSE BEGIN give random encounter here END END ELSE give a random encounter here My brain isn't quite there right now, but I think that would do it, if that's what you want to do. Yeah, there's some repetition in there, but that's a side effect of the AND not working right.

Random Encounter with Skill variable script issue

4 years ago
Ok that makes sense looking at it that way. I actually didn't know you could nest BEGIN and ENDs inside each other like that. I'll attempt a script rewrite here soon and see what happens then report back. Thanks again for all your help!

Random Encounter with Skill variable script issue

4 years ago
EDIT: Ignore all that. I think I figured out the problem. I'll let you know if I actually did or not shortly.

Random Encounter with Skill variable script issue

4 years ago
Ok, I fixed some of the problem. Thanks to Berka's reply in the bug report thread I was able to shorten the script a bit using the > AND <. I also was able to get the encounters to stop looping. For some reason just having the variable scores upped using the pop up button thing in the editor wasn't working so I had to put in a %DIM01 := 1 in the page script to force it. So now I am down to 2 problems. One it still acts as a previous page link sometimes and two it won't trigger encounters as often as it should based on the percentages and instead triggers fails then loops on the generic fail page I made that is repeatable. The fail rate shouldn't be high enough even on the > 3 skill level for that to happen. I got 2 encounters, all 3 fails, and then looped the generic fail page with 30 clicks. I should have gotten more encounters than that I think. I did notice the previous page thing happens less after I got an encounter to trigger. Here is the new script: IF %DIMENSION < 3 THEN %RAND := 1D40 BEGIN IF %RAND > 10 THEN BEGIN IF %RAND > 10 AND %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69 ELSE IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70 ELSE IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END IF %RAND < 11 THEN BEGIN IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 END END IF %DIMENSION > 2 AND %DIMENSION < 7 THEN %RAND := 1D35 BEGIN IF %RAND > 10 THEN BEGIN IF %RAND > 10 AND %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69 ELSE IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70 ELSE IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END IF %RAND < 11 THEN BEGIN IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 END END IF %DIMENSION > 7 THEN %RAND := 1D25 BEGIN IF %RAND > 10 THEN BEGIN IF %RAND > 10 AND %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69 ELSE IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70 ELSE IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 END IF %RAND < 11 THEN BEGIN IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 ELSE IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 0 THEN $DEST := @P69 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 ELSE IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 END END

Random Encounter with Skill variable script issue

4 years ago
It might help, if you simplified your script a bit, then started trouble shooting.

For example -

IF %DIMENSION < 3 THEN %RAND := 1D40
BEGIN
IF %RAND > 10 THEN
BEGIN
IF %RAND > 10 AND %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN
$DEST := @P69 ELSE
IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN
$DEST := @P70 ELSE
IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN
$DEST := @P71
END

---

You really don't need to use ELSE.
You don't need paragraphs after THEN (though they're helpful for separating out a BEGIN & END set)
BEGIN & END is for multiple operations off IF (not singular operations)

IF %DIMENSION < 3 THEN
BEGIN
%RAND := 1D40
IF %RAND > 10 THEN
BEGIN
IF %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71
END
END

Random Encounter with Skill variable script issue

4 years ago
That makes sense. Thank you so much. I'll give this a try and see if it fixes my issues. It seems like I've been overcomplicating the script so hopefully this gets it working correctly!

Random Encounter with Skill variable script issue

4 years ago
Ok, I think I did this correctly. But, I'm still having the same issue (So probably not correct). It still sometimes acts as a previous page link and encounters are repeating themselves despite the variables scoring correctly when the encounter is viewed. Here is the first section of script. The other 3 sections are identical but with the first line changing to account for different skill variable scores so the fail percentage is different. IF %DIMENSION < 3 THEN %RAND := 1D40 BEGIN IF %RAND > 10 THEN BEGIN IF %RAND > 10 AND %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69 IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70 IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71 IF %RAND > 10 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72 END IF %RAND < 11 THEN BEGIN IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59 IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60 IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61 IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62 IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63 IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64 IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65 IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66 IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67 IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68 IF %RAND = 1 AND %DIM01 = 1 THEN $DEST := @P69 IF %RAND = 2 AND %DIM02 = 1 THEN $DEST := @P69 IF %RAND = 3 AND %DIM03 = 1 THEN $DEST := @P69 IF %RAND = 4 AND %DIM04 = 1 THEN $DEST := @P69 IF %RAND = 5 AND %DIM05 = 1 THEN $DEST := @P69 IF %RAND = 6 AND %DIM06 = 1 THEN $DEST := @P69 IF %RAND = 7 AND %DIM07 = 1 THEN $DEST := @P69 IF %RAND = 8 AND %DIM08 = 1 THEN $DEST := @P69 IF %RAND = 9 AND %DIM09 = 1 THEN $DEST := @P69 IF %RAND = 10 AND %DIM10 = 1 THEN $DEST := @P69 IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 THEN $DEST := @P70 IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70 IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71 IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72 END END

Random Encounter with Skill variable script issue

4 years ago
I'd like to take a crack at untangling the problem, but don't have the time right now. Maybe on the weekend though...

Random Encounter with Skill variable script issue

4 years ago
It's no rush! Just whenever you have time, I appreciate it. :)

Random Encounter with Skill variable script issue

4 years ago
IF %DIMENSION < 3 THEN
BEGIN
%RAND := 1D40
IF %RAND > 10 THEN
BEGIN
IF %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72
END

IF %RAND < 11 THEN
BEGIN
IF %RAND = 1 AND %DIM01 = 0 THEN $DEST := @P59
IF %RAND = 2 AND %DIM02 = 0 THEN $DEST := @P60
IF %RAND = 3 AND %DIM03 = 0 THEN $DEST := @P61
IF %RAND = 4 AND %DIM04 = 0 THEN $DEST := @P62
IF %RAND = 5 AND %DIM05 = 0 THEN $DEST := @P63
IF %RAND = 6 AND %DIM06 = 0 THEN $DEST := @P64
IF %RAND = 7 AND %DIM07 = 0 THEN $DEST := @P65
IF %RAND = 8 AND %DIM08 = 0 THEN $DEST := @P66
IF %RAND = 9 AND %DIM09 = 0 THEN $DEST := @P67
IF %RAND = 10 AND %DIM10 = 0 THEN $DEST := @P68

IF %RAND = 1 AND %DIM01 = 1 THEN $DEST := @P69
IF %RAND = 2 AND %DIM02 = 1 THEN $DEST := @P69
IF %RAND = 3 AND %DIM03 = 1 THEN $DEST := @P69
IF %RAND = 4 AND %DIM04 = 1 THEN $DEST := @P69
IF %RAND = 5 AND %DIM05 = 1 THEN $DEST := @P69
IF %RAND = 6 AND %DIM06 = 1 THEN $DEST := @P69
IF %RAND = 7 AND %DIM07 = 1 THEN $DEST := @P69
IF %RAND = 8 AND %DIM08 = 1 THEN $DEST := @P69
IF %RAND = 9 AND %DIM09 = 1 THEN $DEST := @P69
IF %RAND = 10 AND %DIM10 = 1 THEN $DEST := @P69

IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70
IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 THEN $DEST := @P70
IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 THEN $DEST:= @P70

IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71
IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 THEN $DEST:= @P71

IF %RAND = 1 AND %DIM01 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 2 AND %DIM02 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 3 AND %DIM03 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 4 AND %DIM04 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 5 AND %DIM05 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 6 AND %DIM06 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 7 AND %DIM07 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 8 AND %DIM08 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 9 AND %DIM09 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
IF %RAND = 10 AND %DIM10 = 1 AND %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST:= @P72
END
END

---

Are you sure you are accounting for all the possible combinations? If not, then it will default to the last true $DEST checked or the Link itself if there are not true $DEST.

For example, you have:
%DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0
%DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0
%DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0
%DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1

But what about:
%DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 1
%DIMFAIL1 = 0 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0
%DIMFAIL1 = 0 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1
%DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 1

Random Encounter with Skill variable script issue

4 years ago
Thanks so much! This fixed it still acting as a previous page link. I'm having problems with encounters repeating themselves despite the variables getting switched to 1 after the first view.

Those combinations aren't possible. The fail scenarios are consecutive. So if the player hasn't seen the first fail scenario then they can't get to the second one and so on. I did them that way so there isn't just a repeating fail page that doesn't account for how many times they failed to get an encounter and the reader will feel less like I'm just looping them around with the encounters.

I'm starting to wonder if it's possible some other script in the game is interfering with it somehow. I have it on my script testing story game that I use for any complicated scripts I want to implement in games. That way I can bug test without potentially breaking an actual story game with a mess of script lol. The only other ones I have though are a codex type script and a regular random encounter one that doesn't lean on any additional variables like this one does.

Random Encounter with Skill variable script issue

4 years ago
OK, I get the fail sequence now that you explained it haha!

I'm wondering if the AND function can't handle more than 1 instance. You could test it by reducing or nesting.

For Example:
IF %RAND > 10 THEN
BEGIN
IF %DIMFAIL1 = 0 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P69
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 AND %DIMFAIL3 = 0 THEN $DEST := @P70
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 1 AND %DIMFAIL3 = 1 THEN $DEST := @P72
END

Would be:
IF %RAND > 10 THEN
BEGIN
IF %DIMFAIL1 = 0 THEN $DEST := @P69
IF %DIMFAIL1 = 1 AND %DIMFAIL2 = 0 THEN $DEST := @P70
IF %DIMFAIL2 = 1 AND %DIMFAIL3 = 0 THEN $DEST := @P71
IF %DIMFAIL3 = 1 THEN $DEST := @P72
END

Random Encounter with Skill variable script issue

4 years ago
Holy scripting gods that fixed it!
Berka, you are amazing and I freaking love you right now.
Thank you so much!
I went in and took out all the additional ANDs for the fail scenarios. Nothing is repeating, no previous page action. Just glorious working script!
I am so stinking happy right now. Thank you so so much!

Random Encounter with Skill variable script issue

4 years ago
Glad it helped!

Scripting is great, but there are a lot of ways to do the same thing. It’s best to try to find the simplest way though;

Even now, I realize that piece of script I did can be even simpler, due to the way the system only uses the last true event in any array.

So you could even use this:

IF %RAND > 10 THEN
BEGIN
$DEST := @P69
IF %DIMFAIL1 = 1 THEN $DEST := @P70
IF %DIMFAIL2 = 1 THEN $DEST := @P71
IF %DIMFAIL3 = 1 THEN $DEST := @P72
END

So the default is page 69.
If Fail1 = 1 then it ignores page 69 and goes to Page 70.
If Fail2 = 1 then it ignores page 70 and goes to Page 71.
If Fail3 = 1 then it ignores all the above and goes to Page 72.

(it was worth seeing if the AND function could only be used once thought)

^v^

Random Encounter with Skill variable script issue

4 years ago
Oooo even better!
So far it seems like it doesn't like being used more than 3 times, which is great to know for future reference. Or at least it doesn't like it in longer scripts, it might be fine in ones that are just a single line for a $DEST link or something.
Anyway, thanks again you beautiful scripting god you!