If you don't know, you will have to edit existing scripts in the game with dnSpy. If you don't have it, here's a link for it: https://github.com/0xd4d/dnSpy/releases
There are a lot of tutorials on how to change the game's script with dnSpy, but EpicJake72's text guide explains best though (scroll down): https://drive.google.com/file/d/1P-Crr8Z2zSnxcc-Crzsf0T2V7EsZjF29/view?usp=sharing
For V1.4.1 and above:
- After opening dnSpy, go to TextUnderliner, but don't edit it yet! We have to make a new method so the game can run that piece of code when it starts. To make a new method, right click on TextUnderliner and click on "New Method". Make the method's name "Start" so the game will know it to run that when the mode selection screen is active, then click OK.
- Now right click on the code and click "Edit Class", which we will assign the code needed so it changes that text. Replace "public extern void Start();" with
"private void Start()
if (this.text.name == "StoryText")
this.text.text = "story mode text here";
- Now replace "story mode text here" with the text of your choice, for this tutorial, I am going for "Story Mode: Nothing special", but you can say something else than that. When you are done, click Compile.
- Go to MenuController, right click on the code and click "Edit Class". Now replace the whole code in the script with this:
// Token: 0x02000015 RID: 21
public class MenuController : MonoBehaviour
// Token: 0x06000051 RID: 81
// Token: 0x06000052 RID: 82
private void Start()
this.player = ReInput.players.GetPlayer(0);
// Token: 0x06000053 RID: 83
public void OnEnable()
this.uc.firstButton = this.firstButton;
this.uc.dummyButtonPC = this.dummyButtonPC;
this.uc.dummyButtonElse = this.dummyButtonElse;
// Token: 0x06000054 RID: 84
private void Update()
if (this.player.GetButtonDown("UICancel") && this.back != null)
UnityEngine.Object.FindObjectsOfType<TMP_Text>().text = "Story Mode:\nThis now works in V1.4.0!";
// Token: 0x04000062 RID: 98
public UIController uc;
// Token: 0x04000063 RID: 99
public Selectable firstButton;
// Token: 0x04000064 RID: 100
public Selectable dummyButtonPC;
// Token: 0x04000065 RID: 101
public Selectable dummyButtonElse;
// Token: 0x04000066 RID: 102
public GameObject back;
// Token: 0x04000067 RID: 103
private Player player;
- Now replace "story mode text here" with the text of your choice. When you are done, click Compile.
Endless Mode text (version independent)
- Now go to EndlessTextScript, but the thing about it is, you don't need to deal with a lot of problems this time, because it will not require making new methods. Right click on the code and click on "Edit Class", and remove line 18 (or the line with "this.text.text,"). Now you can write what you want before the high score text, like "Endless Mode: The suffering never ends", then click Compile.
- Now go to File and click either "Save All" or "Save Module".
- Now run your copy of Baldi's Basics to see the effect. You would get something like this if you go to the mode selection menu:
I think that's all for now! If it felt useful, you're welcome!