Fetishes & Addictions

Breaks down the keys and :term:`strings </Doc/Tutorials/TheJsonFormat>` used by Fetishes and Addictions.

See Json/Fetishes/ for all related fetish and addiction .json files for reference and the template _BlankFetish.json.

Fetishes

Making a custom fetish comes down to making a .json like the following code block:

{
"FetishList": [
    {
    "Name": "Atom",
    "BaseLevel": "0",
    "Type": "Fetish",
    "CreationOn": "Enlightened!",
    "CreationOff": "Heathen.",
    "ToolTip": "How much you love to mod with the Atom text editor.\n\nVerdict: ",
    "LevelText": [
      ["0", "You'd rather use Notepad++"],
      ["25", "You'll try Atom just a little bit..."],
      ["50", "You can't help but use Atom as your text editor."],
      ["75", "You're overflowing with installed packages..."],
      ["100", "You're completely obsessed with Atom. Hopefully, it never shuts down in the future..."]
    ]
    }
  ]
}

"FetishList": will contain an array of objects representing each fetish. See Fetishes/fetishList.json for reference.

All keys are required unless stated otherwise.

Name

"Name": decides the name of your fetish, used for both internal reference and to be shown to the player in menus and skills.

BaseLevel

"BaseLevel": can optionally give a default amount of the fetish, regardless if it’s selected by the player in the creation menu. Give it a string of “0” if you do not wish to use it.

Type

"Type": should be set to “Fetish”, unless making an Addiction, as documented below.

CreationOn & CreationOff

The provided strings will be the dialogue the Goddess gives in the creation menu when starting a new game. "CreationOn": being if the player selects the fetish, "CreationOff": if the player unselects the fetish.

ToolTip

"ToolTip": will display the given value when viewing a fetish in the character menu and character creation. Be sure to keep \n\nVerdict: as the end of your string value.

Only for Fetishes.

LevelText

"LevelText": will conditionally display one of the given values based on whether it meets the given fetish level.

"LevelText": [
  ["0", "You still can't get over the loss of Atom."],
  ["34", "You think VS Code might be a worthy supplement with the One Dark theme..."],
  ["69", "You can't help but salivate at the quality git implementation."],
  ["100", "You're completely obsessed with VS Code. You have a hard time not fantasizing about its built-in terminal."]
  ]

Only for Fetishes.

Addictions

Addictions, being technically fetishes, use all the same functions and keys as their counterpart, with the exception of being invisible to the player. They can be put in the same JSON file together, or optionally separated for organization, like the base game.

It’s recommended to go to Fetishes/addictionList.json and see the comments Threshold provided for each base game addiction, and use your editor’s search features to review how they are used throughout the base game via the strings provided to the "Name": keys.

Note

Addictions don’t use the "ToolTip": and "LevelText": keys and thus can be excluded.

{
"FetishList": [
    {
    "Name": "Required for internal reference of the addiction.",
    "BaseLevel": "0",
    "Type": "Addiction",
    "CreationOn": "This text won't appear in-game, but still needs filled out so the game doesn't generate an error.",
    "CreationOff": ""
    }
  ]
}

As one can see, you really only need to provide "Type": with "Addiction", and provide "Name": with a unique string to use for internal referral. The rest is unused, but required to prevent an error on runtime.