Donut Team is a labor of love, built and maintained by a small group of passionate developers. We invest our own time and resources to offer our tools, mods, and web services completely free of charge.

We don't run ads, and we will never sell your data - period.

If you've enjoyed anything we've created, please consider supporting our work with a one-time or monthly donation via our Ko-fi page . Every contribution helps us continue building great experiences for the community.

Dismiss
  • Modding Tools
  • Lucas' Simpsons Hit & Run Mod Launcher
  • Hacks
  • Setting Hacks

Discord Rich Presence

Available since Version 1.16.3.

This is a setting hack that can be enabled on the "Settings" page of the Mods List.

This hack adds Discord Rich Presence to the game.

Main mods are able to extensively customise what is shown on Discord when the player has this hack enabled, if they so choose.

Configuring This Hack

To configure this hack from a mod when its enabled, create a file named DiscordRichPresence.ini and add the parameters necessary for your mod inside it.

Version 1.27
Previous Versions

These configuration options work starting in Version 1.27.

[Miscellaneous]
; ApplicationID
; 	Set a custom application ID for your mod.
;	Defaults to our application ID for the Mod Launcher.
ApplicationID="000000000000000000"

[States]
; State strings let you customise what text is shown on Discord during various game states.
; Various variables can be substituted into state strings:
;	$(Level): Shows the LEVEL_X text bible string for the player's current level.
;	$(LevelNumber): Shows the player's current level number.
;	$(BonusGameLevelNumber): Shows the player's current bonus game level number.
;	$(MissionTitle): Shows either:
;		The mission's title set in the relevant section of DiscordRichPresence.ini
;			or if there isn't one
;		The MISSION_TITLE_LX_MXX text bible string for the player's current mission.

; MainMenu
; 	Set what text is shown while the player is on the main menu.
;	Defaults to "Main Menu".
MainMenu="Main Menu"

; BonusGame
; 	Set what text is shown while the player is playing a bonus game level.
;	Defaults to "$(BonusGameLevel) - Bonus Game".
BonusGame="$(BonusGameLevel) - Bonus Game"

; SundayDrive
; 	Set what text is shown while the player is playing a sunday drive mission in a regular game level.
;	Defaults to "$(Level) - Sunday Drive".
SundayDrive="$(Level) - Sunday Drive"

; Mission
; 	Set what text is shown while the player is playing a story mission in a regular game level.
;	Defaults to "$(Level) - $(MissionTitle)".
Mission="$(Level) - $(MissionTitle)"

; BonusMission
; 	Set what text is shown while the player is playing a bonus mission in a regular game level.
;	Defaults to "$(Level) - $(MissionTitle)".
BonusMission="$(Level) - $(MissionTitle)"

; StreetRace
; 	Set what text is shown while the player is playing a street race in a regular game level.
;	Defaults to "$(Level) - $(MissionTitle)".
StreetRace="$(Level) - $(MissionTitle)"

; WagerRace
; 	Set what text is shown while the player is playing a wager race in a regular game level.
;	Defaults to "$(Level) - $(MissionTitle)"
WagerRace="$(Level) - $(MissionTitle)"

; Unknown
; 	Set what text is shown while the game is in an unknown state.
;	Defaults to "In Game".
Unknown="In Game"

[LXMYSD]
; Sunday Drive Specific Stuff
;	Substitute X for a level number from 1 to 7.
;	Substitute Y for a mission number from 0 to 10.

; Title
;	Override the mission's title for rich presence.
Title="Not The Text Bible String"

; LargeImage
;	Override the LargeImage shown during this mission.
LargeImage="some_art_asset_in_discord_dev_portal"

; LargeImageText
;	Override the text shown when hovering over the LargeImage during this mission.
LargeImageText="Some fun flavor text about the mission?"

[LXMY]
; Mission Specific Stuff
;	Substitute X for a level number from 1 to 7.
;	Substitute Y for a mission number from 0 to 10.
;	(has the same properties as the [LXMYSD] section)

[LXBM1]
; Bonus Mission Specific Stuff
;	Substitute X for a level number from 1 to 7.
;	(has the same properties as the [LXMYSD] section)

[LXSRY]
; Street Race Specific Stuff
;	Substitute X for a level number from 1 to 7.
;	Substitute Y for a mission number from 1 to 3.
;	(has the same properties as the [LXMYSD] section)

[LXGR1]
; Wager Race Specific Stuff
;	Substitute X for a level number from 1 to 7.
;	(has the same properties as the [LXMYSD] section)

These configuration options only work prior to Version 1.27.

; [Global] Section: Set the titles for missions on every level.
    ; Currently only supports setting the titles for the Bonus Missions, Street Races and Wager Races.

[Global]
BonusMission="Example Bonus Mission"
StreetRace1="Example Street Race 1"
StreetRace2="Example Street Race 2"
StreetRace3="Example Street Race 3"
WagerRace="Example Wager Race"

Command Line Arguments

This hack is affected by certain Command Line Arguments for the Mod Launcher.

Version History

Version 1.27

  • Added a new ApplicationID property to the [Miscellaneous] section of DiscordRichPresence.ini to set a custom application ID.
    • This allows mods to, for example, say "Playing Donut Mod" on Discord instead of "Playing Lucas' Mod Launcher".
  • Added the ability to modify what text is shown on a user's Discord profile while playing various types of missions using a new [States] section in DiscordRichPresence.ini.
  • Added the ability to override the entire state text, as well as large image and large image text, on a per mission basis using new mission sections in DiscordRichPresence.ini.
  • Removed the -nodiscordrichpresence command line argument.
  • Removed the [Globals] section of DiscordRichPresence.ini.
    • It was quite limited and the new features added in this version provide all of its functionality and much more.
  • Removed the Show Main Mod and Show Mission Elapsed Time settings.
  • Updated the description of this hack.

Version 1.26

  • Made it so this hack uses Discord RPC as a DLL instead of using the version embedded into Hacks.dll if such a DLL file (discord-rpc.dll) inexplicably exists in the DLLs folder.
    • The -discordrpc command line argument opts out of this inexplicable behaviour.

Version 1.23.10

  • Made it use the new Discord GameSDK instead of the obsolete Discord RPC if the DLL file for it (discord_game_sdk.dll) happens to inexplicably be in the Mod Launcher's DLLs folder.
    • Also added the -discordrpc to opt out of this.
    • To be clear, this DLL is not included with the Mod Launcher.
  • Fixed an issue when logging state updates after 3:14:07 AM on January 19th, 2038 UTC.
  • Made this hack tell Discord the command to start the Mod Launcher so Discord doesn't try launching Simpsons.exe with an incorrect working directory when clicking Play/Play Game.
    • Also added the -nodiscordregistercommand command line argument to opt out of this.
      • When using Discord RPC, this causes the old behaviour of Discord updating the command to be wrong.
      • When using Discord GameSDK, this causes Discord to just not update the command.
  • Added the -discordloadinitialise command line argument. This makes the hack initialise Discord RPC / GameSDK as soon as the hack loads.
    • This used to be the default behaviour prior to Version 1.22 but it often causes rich presence to not work because Discord handles this poorly.

Version 1.23.8

  • Added the -nodiscordrichpresence command line argument.
  • Made the Bonus Mission, Street Race and Wager Race titles configurable by mods.

Version 1.23

Updated the description of this hack.

Version 1.22

  • Added the RapidJSON license.
  • Made this hack output DISCORD RICH PRESENCE: Initialising... when initialising Discord RPC.
  • Made this hack wait until the main menu to initialise Discord RPC.
    • This seems to make the hack work far more reliably than before.

Version 1.21

  • Fixed an oversight where the hack was listed on Windows XP.
  • Updated to a newer version of Discord RPC.

Version 1.18

Moved this hack to the new Settings page.