Internal Out (Patreon)
Content
i'm out of sorts as usual so let's just chop right in
you shall not pass
so there's a certain hidden entrance in E18 that has a unique graphic, and lia tried to go through it only to be slapped in the face with some kind of error and a crash to desktop. oof.
marcello took a look at it first and found that there's actually no particular script stuff going on on that door or map (ergo not his department not his problem xd) and so there shouldn't reallllly be a reason why it's crashing in the first place
so my turn. i find that the door works normally on my save. i try lia's. crashes.
i try warping into the room without using the door. crashes. this confirms the problem is with the room behind it and not the door.
the room doesn't have any unusual script jank anywhere in it-- in fact it's mostly simple and straightforward stuff. pretty small place, uses a new graphic set, not a dive map, no follower events-- that rules out most of the common issues.
so i go back to my favorite strategy-- deleting things.
i delete the three most involved events and test again-- no crash.
i replace two of them-- crash. i replace the other one-- crash.
eventually i figure out 2/3 together cause it to crash-- and only those two.
one of them is graphic only-- no event code. strange.
the other has all the event code. just for science, i try removing half of it-- crash. then i try the other half-- crash. it's not the event code.
all that's left is the actual settings on the event itself.
more specifically the conditional that tells which page of the event to use-- but even that is hard set through rpg maker's interpretter. i'd have a hard time getting that to crash if i tried to.
nevertheless. i click the conditions off, and it works.
the two crashing events have one thing in common: they both ask for a variable to determine which page to use. this check for the variable is crashing because the variable is returning something other than a number.
it's returning a pokemon.
somehow a whole-ass pokemon got slotted into this variable on lia's save
i couldn't tell you which one cuz all i see is the hash data
but gurl what you doin'...
let's say, just for example that it's a, idk, stunfisk. cuz stunfisk always messes things up.
and so the game is asking "is this variable less than 2?"
and the save answers "stunfisk"
and the game says "that does not answer my question you candy corn incarnate piece of crap" and then crashes because it doesn't know what to do with itself anymore.
so i don't really know how lia managed to get a pokemon into that variable, but given that it was a fresh variable before that's pretty worrying-- if some rogue event is managing to do that, for instance.
i marked that variable as unusable and changed the events to require a different one so it should be fixed but if something in the relevant area is busted maybe it'd just force a pokemon into the new variable instead and -that's- when we're gonna have a problem.
but that's a small chance.
collapse collapse
so i mentioned a couple days ago about the aggron battle that relies on collapsing the cave repeatedly-- and how i changed the cave to allow that.
so the way the cave collapse works is:
- there's a $fecounter variable that a lot of fields use
- every time someone uses a collapsing move, it counts up 1
- if it hits 2, cave collapses.
originally it did not reset back to 0 after one collapse, which feels like an oversight. in order to make the collapse repeat, it now resets to 0.
the problem we encountered is that actually messed with the parts of the game that i use that mechanic to change the overworld. there's a few of those, and they worked previously just by asking if $fecounter was more than 2 after a battle. since it resets at the start of each battle, we'd know that if it were more than 2, the cave collapsed, and so should the map we're in.
of course, since i made $fecounter reset, it can no longer accurately ask that.
so that sucks.
i ended up making a separate variable to track if collapses happened which i reallllly didnt want to do because it's messy but
also the easiest solution so eh.
rip in revive
hey so did u kno: essentials' implementation of revive is fuuckt
last episode we (definitely tried a lot to have) fixed an error with revive where if you were in doubles and revived a pokemon with only one other remaining, it would get sent out immediately but not have a sprite.
so now that we dealt with that, a new version of the issue decided to rear it's head today-- and vulpes (who i have suddenly learned is apparently also fairly adept at bug-hunting) confirmed that this is something that also exists in other essentials games
basically the error is, after reviving a pokemon with only one out on the field in doubles, the revived pokemon can take damage immediately-- before it's even technically sent out.
as it turns out, this is because the game doesn't really want to make up its mind as to whether or not the revived pokemon goes out onto the field right away. half the code wanted it to, and half the code didn't so it basically became some big like code civil war.
anyway marcello restructured the whole thing so it's cool now. probably.
temporary tempo
i don't recall whether it was before 18 or before 17, but somewhat recently we realized that maps and events had just, like, stopped caring about the latent pitch/volume settings included in rpg maker by default, and which i've used pretty liberally throughout most of the game.
because it -used- to work
but
grr.
(probably volume/sound option implementation broke it)
so all music was playing at the same speed and volume regardless of what we told it.
so we fixed that...
only to realize that the music when you dismount from something like surf, or a bicycle, and i think possibly even when moving map connections, is still ignoring those attributes.
we currently don't have a fix for this because we just found it in the last couple days and since it is purely a cosmetic issue we don't want to hold up testing for it-- i was hoping it would be a quick find and switch, but it didn't show up so easily, so we put it on our known bug list.
...and then marcello baited me by finding it and fixing it immediately after i did that.
i should do that more often
self-encouragement
so in his playthrough marcello found himself face to face with a trainer's accelgor. he sent out his kanto ninetales to flamethrower it into oblivion.
the AI decided to use Encore.
i panicked.
why would it encore flamethrower??? did we not explicitly put in a check to care about encoring damaging moves??? accelgor is definitely faster-- it should have its pick of the proverbial litter. is the move busted to fuck???
marcello then noted that-- actually ninetales hadn't used a move yet when it encored it.
ok. that's better
he theorized that-- although we have a check to ask about what the last-move-used was, we probably didn't handle for if there was no last move from the given pokemon.
reasonable. oversights happen. that's a simple fix.
then marcello had to redo that battle for some reason. i think he whited out or something idk. maybe just testing. come to think of it yeah, why,
anyway, he got ninetales out quicker this time and landed flamethrower on it
...and then told me that, sure enough, accelgor just dead-ass encored ninetales into flamethrower against itself.
last-move-used defined and all.
y i k e s.
like encore is my actual favorite move, i love it so much, i want it to be properly represented!!
so i went over my function code logic trying to figure out whyyyy it would do that to itself-- there's definitely a check for if the move does more than 20% damage to the target to not do the thing -- but maybe the score cut wasn't enough. i started thinking about how to implement an additional score cut or boost based on the type effectiveness of the move
and then marcello messaged me again.
and told me that
not only was there not a check for if there was no last-move
but he messed up when implementing the last-move check... and the encore user was actually thinking about its own last move instead of the opponent's.
it was not clapping for ninetales.
it was clapping for itself
telling itself what a good and brave job it was doing
facing up against that beautiful fox all by itself despite the disadvantage
and that was a really great move it just used; it should keep it up!!
and then ninetales got confused and was like
awh you like that? that's sweet of you. in that case, rawwwwwwrrrgggggggh~
and then it died.
along with me.
marcello playin' with my heart out here.
sliiiide to the left
so this happened to vulpes.

she was pretty initially diligent in trying to figure out what caused-- going on ice, surfing, biking, flying-- all of that made no difference to fix it. she said only rock climbing did.
i knew the issue immediately-- rock climb uses the Move Animation Off command to make the player look like they're being pulled up the rocks rather than walking up the rocks. somewhere, somehow, the Move Animation On command which should play after the rock climb movement finishes and restore the player to normal movement, wasn't being activated.
vulpes and i figured out exactly where very quickly because we both had a suspicion based on her having just been to Ametrine-- in specific, it was the rock climb on the fourth floor. I checked the event-- Move Animation On was there as proper.
so why wasn't it working?
because that rock climb event on the way down leads straight into ice.
and apparently essentials didn't like being told by the event to start moving the player again, only to be told by the scripts to stop moving the player again.
so it just.
didn't.
ever.
at all.
rude.
we put one more tile of snow down at the bottom of the rock climb to prevent this-- fortunately it was already in a corner, so that doesn't impact the puzzle at all. luck is real and i have it.
the train was supposed to be the only crash
turns out there was another fatal error right at the gotdamn start of the game. kanaya was replaying recently, which is how she found the fatal in obsidia, but she had picked up from a save file that was already past julia rather than starting from the beginning.
so good thing cass started over after clearing E18
only to crash immediately when my event leads the player upstairs to get a starter
that's right, me. i did this.
no one can report bugs in the rest of the game if they can't even get to the rest of the game
mwahahhahahah!
actually it was because of my changes to the grand hall. i've probably remarked in the past about how essentials is touched and will freeze if two events move into each other, even if one of them would normally be passable (that is not normal rpg maker behaviour).
in recent episodes, i've gotten better at pre-empting that by setting the Through passability on either events as they move by default, or events after they clear by default, avoiding as many of these as possible.
but i was absolutely not in that habit back in episode 1, lol.
so before, there was no actual teleport event where in-game Ame walked up the stairs to take the player to the starter room. now that there is an event there, she freeze.
so i flipped Through on for my movement and boom, is fix
...wait, don't i go up there twice? and victoria too? oh my-- one sec.
hahahaha those both would've crashed
well okay.
fixed those now too, glad i thought of that literally just now............
the BOULDER is out
there's a certain boulder in Celestinine. y'all know the one.

yeh. him.
so the way past this boulder hasn't been accessible until E18 because you need rock climb
only it also wasn't accessible in the internal test cuz using rock climb would reset the boulder........
the reason that happens is because essentials is dumb and map connections are bad
-ahem
the actual reason that happened is because essentials tries its best but it isn't enough and map connections are badly handled
this particular map is split into three pieces-- i had to do that to limit the area around the icy rock to -actually- just be the icy rock, and i have regretted it ever since. but if i didn't split it up the whole room and even upper section would be ok to evolve eevee to glaceon in, and that would feel strange to be so far away from the rock and have it work.
the fact that the player has to travel between two of the map pieces to get to the other side of the rock and make this puzzle work is what resets it. technically the player has travelled to another map, ergo the event resets.
so to fix this, i put in an event the other night that basically memorizes the position the boulder was in before they leave the map-splice
and an event that quickly transports the boulder back to that location when they re-enter
and then put things to reset the memorized location whenever the player re-enters this three-slice room (since i can't do it when they leave cuz of escape rope etc)
theoretically this should work but i have no guarantee it won't be broken as shit.
in order to prevent its broken-as-shitness, i asked inuki to test it today. he tried.
the boulder disappeared entirely.
just.
gone.
cya.
no trace of it.
i feel fairly certain what happened was he left the map and came back-- so the memorized position was reset. but reset means 0... so the event just transported the boulder to postion 0,0.
oops.
i put a check in for that now and hopefully there will be no more problems.
please play nice with the boulder.
and if it doesn't play nice back, tell me so i can cry some more.
--
anyway alpha tomorrow ok. i'll post instructions here when it's ready!