P5 Adachi Mod Dev Blog #2: Secret Bad End


This post contains spoilers for Persona 4, as well as the Persona 5 Adachi mod. If you would like to experience this secret yourself, DON’T keep reading before playing the mod!

We almost scrapped a pretty interesting feature in our recently released mod for Persona 5 that makes Tohru Adachi playable (it can be downloaded here).

Conceptually, we were confident that Adachi would make a great fit in the world of Persona 5. Mowing down shadows, fighting the souls of corrupted individuals… Except for one very glaring issue.

No, not just that you go to High School.
The protagonist can date minors in Persona 5.

So, how were we to deal with this? Leave it in and just say that this is an aged-down Adachi, or something? Remove all the romance routes? Actively discourage you from doing them?

All of these were brief considerations, but then we thought, why not mess with the player’s expectations?

Normally, when you trigger a romance route in Persona 5, a flag is set by the Confidant event that tells the game “yep, you’re in a relationship with this person.” We previously found all of these flags for our P5 Mod Menu, so next we had to decide what to do with them.

Thinking back to Persona 4, specifically the scene where Adachi shoves Saki Konishi into the TV world, it isn’t unlike Adachi to pursue highschoolers in this fashion. He is a serial murderer, but we didn’t want to portray him as a sexual predator in Persona 5. 

No, rather, when you’re ranking up your confidants, you are essentially just luring your next victim into the TV world to be murdered. Still pretty messed up, but not as pervy at least.

When you reach the rank where you decide whether or not to pursue a relationship, unbeknownst to the player, you’re actually deciding the character’s fate. Keep it platonic and your friend will be spared. Profess your love and you might see some unexpected dialog right at the last moment… If you’re not paying attention, you may even miss it.

It doesn’t end there, though. When the scene ends, it should transition straight to the interrogation room. Since this happens a lot in Persona 5 while ranking up Confidants, perhaps you still wouldn’t think anything out of the ordinary is afoot.

When the camera pans out, it’s not Sae that’s interrogating you like you’d expect, but none other than Naoto Shirogane.

After a brief exchange, the bad ending carries out the same as usual and you end up at the game over screen in the Velvet Room. We thought it would be too unfair to players if they hadn’t saved and lost a lot of progress, so the Continue option brings you right back to the next scene (although you are no longer in a relationship).

We knew someone was going to see what happens out of morbid curiosity (it’s already weird seeing Adachi hang out with the cast of P5). We didn’t want to disappoint anyone with a potentially uncomfortable romance route. Therefore, you cannot romance minors in Persona 5. Try anyway and you might just die. Fair, right?

We’ve talked about the what and the why, but now let’s discuss how we achieved this.

First, we didn’t want to replace Sae with Naoto just for this one scene. That would involve a lot of continuity errors, like Naoto being Makoto’s sister…? So I took Joker’s P4 DLC model, stuck Naoto’s head on it, and named it to a filename that doesn’t exist in the original game. That way, the normal unedited cutscenes never load that model.

Since I also didn’t want to overwrite the regular bad end cutscene with this, I did the same for the event files related to it– copied them, renamed them to a completely unique filename, and then made alterations. 

Thanks to TGE’s EVT Tool, I was able to load that custom model during our custom event. It also allowed me to load custom animations (based on Sae’s but modified to work on Joker’s model with the Naoto head).

Finally, we had to find a way to load this scene somehow. Ideally right after the romance flag is set so that players can make the immediate connection that this is related to the choice they just made.

There were a few candidates for scripts that load nearly every day (Joker’s bedroom, for instance) but the game’s entire calendar system is controlled by BF scripts. These can be found in the “scheduler” folder, and there’s one for each month.

Each day during a month has several procedures for specific times of day (morning, after school, evening) in the scheduler scripts that execute some functions.

Every day that you control the player in the game has an EveryDay() procedure, which contains all the functions that the game executes… you guessed it, every single day. Likewise, an EveryNight() procedure exists.

We wanted to check for romance flags being whether it was day or night, since for some confidants you can only talk to them at night. To take it a step further, both EveryDay() and EveryNight() reference MAIN_NPC_GO_OUT_FLAG_RESET(), another procedure that just disables some NPC flags. This was the best candidate to add our check to.


All that was left was to compile each of the 12 scheduler scripts with this “hook” that overwrites the procedure with our custom one.


And there you have it! That’s how we turned a potentially controversial feature into a fun easter egg that nobody expected. A lot of work for something that can easily go unnoticed, but we had fun making it a reality. Stay tuned for more info on the mod’s development!


Leave a Reply

Your email address will not be published.