Cultist Simulator

Cultist Simulator

39 Bewertungen
Truly Forbidden Lore (Debug Console / Modding)
Von hyphz
There is forbidden lore even beyond that of your cult; but like all such truths, it may render all else purposeless.
   
Preis verleihen
Favorisieren
Favorisiert
Entfernen
Opening the Debug Console
You can open the debug console while the game is in progress by pressing CTRL+` (CTRL plus Backquote). You may have to tap backquote several times, and it works more reliably if the CTRL key is held for a moment before you press `.
Structure of the debug console

The top box allows you to enter the name of an asset which other buttons operate on. These asset names are not visible in the game and need to be extracted from the game resources.

+1, -1 will give you 1 or take away 1 of the card type shown in the box. -1 may also remove other objects.

>>30 will immediately fast forward 30 seconds.

Begin Situation will immediately fire the verb named in the box, if it exists.

Halt Verb will stop the timer on the event named in the box, if it's running.

Update Content will reload all of the game's data files from the resource database. This is probably not useful unless you are editing the resource files in place, which has to be done very carefully.

End Game will um, end the game.

Load and Save will immediately load and save the game. Always save before doing anything risky, so you can load if it turns out to go wrong.

Reset Decks resets the status of all decks. This means that Unique items can appear again.

Next Track changes the music track playing.
Gainable card IDs
You can use the +1 and -1 buttons with IDs below to immediately gain or lose those things.

Positive resources: health, passion, reason, contentment.

Exhausted positive resources: disillusionment, passionexhausted, concentration (dimmed Reason).

Advancement resources: vitality, erudition, glimmering.

Advancement books: textbookreason, textbookpassion.

Negative resources: hunger, bloodshed, restlessness, injury, fatigue, affliction, dread, decrepitude, fascination.

Knowledge of a language: scholar{language} where language is either latin, fucine, greek, phrygian, aramaic, mandaic, sanskrit or vak. Eg, scholarlatin to learn Latin. You can also get the textbook with textbook{language}.

Ascension progress cards: ascension{route}{level} where route is power, sensation, or enlightenment, and level is a-f (f is highest).

Ritual ingredients: ingredient{element}{level} where element is edge, forge, grail, heart, knock, lantern, moth or winter and level is b, d, or f. Also corpse.

Influences: influence{element}{level} where element is as ritual ingredients, and level is blank, c, e, or g.

Lore fragments: fragment{element}{level} where element is as ritual ingredients plus secrethistories, and level is blank or b-g.

Job: gloverandgloverjuniorjob, gloverandgloverjuniorjob_difficultbossa_job (Glover and Glover with Mr Alden), gloverandglover_difficultbossa_gone_job (Mr Alden gone), gloverandgloverjuniorjob_nodifficultbossa (demoted back to junior job after Mr Alden gone), gloverandgloverjob, gloverandgloverseniorjob, gloverandgloverseniorjob_youngerglovergone (Senior job after younger Glover gone), gloverandgloverjob_youngerglovergone (demoted back to middle job after younger Glover gone), gloverandglovertopjob, gloverandglovertopjob_tainted (decaying Glover and Glover job after scandal in the top job)

Possibly unimplemented jobs: mediumjob, auctioneerjob, dancerjob, priestjob.

Occult books (translated versions): dehoris1, dehoris2, travellingatnight1, travellingatnight2, travellingatnight3, sixlettersonnecessity, locksmithsdream1, locksmithsdream2, locksmithsdream3, homoursofagentleman, victoryofcrows, introductiontohistories, treatiseonunderplaces, onthewhite, waroftheroadscensored, queensoftherivers, apolloandmarsyas, skeletonsongs, burningofunburntgod, debellismurorum, onwhatiscontainedbysilver, truecompleteasclepian, geminiad, geminiadread, orchidtransfigurations1, orchidtransfigurations2, orchidtransfigurations3, wainscothistories, chioneatabydos, irreproachabletraditionssocietynobleendeavour, roseofnuriel, roseofhypatia, roseofwaznei, sunsetpassages, gospelzacchaeus, matthiasamethystloss, matthiasamethysttransformation, matthiasamethystpursuit, franklinbancroftdiaries, indignitiesobliviate, furiostantra, devouredtantra, ceaselesstantra, knownunknowntantra, encirclingtantra, shavenlocktantra, tantraworms, bookofcentipede, accountkanishspidersdoor, stumm, winzantinscriptions, larquebinecodex, againstsisterhoodknot, morphycodex, leoninetantra, incandescenttantra, thirstingtantra, flayedtantra, watchfultantra, twinserpenttantra, firecircletantra, asthesunhiscourse, concursumdiaries, ironbook, silverbook, ivorybook, worlddoesnotweep, deedsofthescarredcaptain, bookofdissolution, catalogueofunchartedpleasures, thosewhodonotsleep, theskythesoul, onthematterandthedeedsofserpents, serenityofblackwood, bookofthrones, secondglory, bookoftreblood, burningwoman, twentysixenticementsseventorments, historyofshadowlesskings, highmysterieschurchsolar, medusaslament, bookofmasks, inthemountainsasupontheplain, memoryofgods, sevenfoldslayingsevencoiled, bighuff, dreamconspiracyskies, bookwhitecat, focusamber, songcarapacecross, originsofhours, wherehasshegone, bookextinguishedheart, howendwillbegin, manneralchemistspared, fivecreations, commandspreservationallexists, timedivision, manualdeparture, birdsong, voyagesfo, scarsky. Books that are initially found in different languages have an untranslated version which is the same tag plus the name of the language.

Non-occult book: genericrubbishbook (placeholder when shop book decks run out)

Enter time then click Halt Verb to stop the Time Passes event running and draining money. This may also prevent the random generation of negative statuses (like sickness) but it will also stop the random generation of positive ones (like good days).
Specific Debug Commands
Any of the following can be started by typing their name in the box and clicking "begin situation".

_adeptskit: gives mid level fragments, ingredients and tools.

_memoryvault: retrieves all items stored as last actions.

_ascensionending: show a Grail vectory.

_arrest: show the Imprisonment ending.

_mansustest, _mansusteststag, _mansustestpeacock, mansustestgate, _mansustestspider _mansustestwhite: enter the Mansus immediately via the given gate.

Modding
Warning: This is entirely unsupported and could easily break your game or saves!

If you are using the GateOfHorn beta, then the data files for the game are fully exposed in the Cultist Simulator install directory (which will be something like "\program files (x86)\steam\steamapps\common\cultist simulator"). Look in the subdirectory cultist simulator_data\StreamingAssets\content. There are two folders, core and more. Core is the main game; More is where you can put mods.

If you don't want to use the beta, you'll need Unity Assets Bundle Extractor from https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor . You'll need the beta version 2.2, as older versions don't know how to extract the Unity version used. Open Unity Assets Bundle Extractor (UABE), and navigate to the Cultist Simulator install directory (it will be something like: \program files (x86)\steam\steamapps\common\cultist simulator". From there, enter subdirectory "cultist simulator_data" and open the file "resources.assets". Scroll down until you see the block of TextAssets - those are the JSON files that define the game (internally called "the Compendium"). You can click on one and then choose Plugins -> Export as .TXT to write one out as a text file. You can then modify that text file and choose Plugins -> Import as .TXT to reload one, and then Save the file back.

Files are stored in JSON - but extremely rough JSON. You'll need a fairly permissive tool for modifying it (it must tolerate at least: unquoted labels and strings, CRLFs inside strings, empty values in lists, and repeated fields)

There are several types of item in the game. Each file contains members of one type of item; must be an a directory named after that type of item; and must have a parent JSON block named after that type of it. Note that not every item type is loaded from every file - no matter what JSON blocks are in a file, they will not be loaded if they do not match the directory that the file is in. Also, some items are hard wired, most notably the endings. Items are in JSON object lists in a property with the same name as the item type.
Data structures
Elements (cards)
These are both cards, and aspects (the traits thet cards can have). Their fields are as follows:

id - ID of the card, used in the debug console.
label - Text that appears on the card itself.
description - Text that appears in the top right corner when the card is selected. ID, description, and label are the only mandatory fields.
animFrames - number of extra animation frames beyond the basic card art.
icon - name of the icon used for the art. If not specified (as it is not for most built-in cards) then the id is used.
lifetime - number of seconds after which card decays, if it does. If not specified, the card does not decay.
decayTo - string name of card that card decays into, if it does. If none is specified, the card just disappears when its lifetime runs out.
isAspect - if true, this is treated as an aspect that other cards can have.
noartneeded -
unique - true if the card is unique, so that only one can exist.
aspects - property list of aspects and traits of the card and their levels.
xtriggers - allows the card to respond to events occurring elsewhere. Xtriggers is a property list mapping trigger names to card names. When the named trigger occurs, this card is replaced with the mapped card name.
slots - list of Slot Specifications (see below) that specify the situation initiated when the card is dropped on a verb. Note that the card must be in the verb's acceptable list.

Slot Specifications
id: The text that appears above the slot.
actionId: The name of the verb (dream, talk, work, explore, study) that the slot appears in.
description: The text that appears when the slot is clicked on.
required: Property list identifying the cards that may go into this slot, by either name or aspect. If there are multiple requirements, they are alternatives.
forbidden: Property list identifying cards that may not go into this slot even if they meet the requirements above - essentially acting as exclusions.
greedy: If true, this slot will grab a card matching its requirements forcefully. If there are several requirements, ones earlier in the list will be prioritised.
consumes: If true, the card placed in this slot will not go into the Situation once the recipe matches.
noanim: If true, the grabbing of the card is not animated.

Decks
Decks are used whenever the game needs to randomly select a card. They are used for random regular events from the time system, books found in bookstores, items auctioned, etc. They are also used for "seasons", which is the internal system used for sequencing random events in time. Their fields are:

id - the Id of the deck.
label, description - text label and description for the deck.
spec - list of card names, as strings, that may be drawn from the deck.
resetonexhaustion - if the deck is reset after the last card is drawn or not (default FALSE).
defaultcard - if resetonexhaustion is not true, the card to draw if an attempt is made to draw from the deck after it is exhausted.
drawmessages - Maps card names that can be drawn from the deck to "messages"?
defaultdrawmessages - ?

Verbs
Verbs are the large objects which represent actions cards are dropped on.

id - the ID of the verb.
label, description - text label and description of the verb.
atStart - true if the verb appears at the start of the game.
slots - Slot specifier of the initial slot that appears in the verb. The format is the same as "slot specifiers" above. After the first card is dropped into the verb, the card's slot specifiers take over, so it's an error for more than one slot to be specified in a verb.

Recipes
Recipes are the second most significant part of the game after elements. They represent combinations of cards on a verb which trigger an effect, and the effect they trigger.

id - the ID of the recipe.
label, description - the label of the recipe, appears when the verb is cilcked on while the recipe is running.
craftable - if the recipe can be deliberately triggered by the user.
signalimportantloop - if "true", a different sound effect is used when the recipe triggers. This is only used for the Time recipe.
portaleffect - If set, completing the recipe will trigger entry to the Mansus. The value specifies which Mansus entry is triggered: Wood, StagDoor, WhiteDoor, SpiderDoor, PeacockDoor, TricuspidGate.
hintonly - If set "true", the recipe never starts time or completes, but only displays its startdescription.
actionId - the name of the verb that triggers the recipe. This can be any of the standard verbs (work, study, explore, dream, talk) plus also the extra verbs that pop up in certain situations (despair, visions, craving, etc.)
startdescription - text displayed when cards are being loaded into the recipe.
warmup - the amount of time it takes for the recipe to complete.
requirements - the list of aspects and levels which must be present on the verb for the recipe to fire. This must include the card that launches the recipe and includes all cards placed on or grabbed by the recipe [[i]and[/i] linked or alternative recipes up to that point. These are in the same format as the "required" field in a slots spec, except that they must ALL be met for the recipe to trigger. The requirements cannot specify which slots the requirements must be in, but the slots specification can. These values can also be -1 to indicate that a given aspect must not be present.
effects: List of key value pairs listing cards that are added or taken away when the recipe fires. Keys are card IDs, values are the number of cards added or subtracted from those currently on the verb (as above). When the recipe chain ends, all cards on the verb are returned.
deckeffect - property list of strings to integers. When the recipe fires, a number of cards equal to each value is drawn from the deck named after the corresponding key.
linked - List of objects. Each object must have two fields: id, giving the ID of a recipe, and chance, giving a number from 1-100. If present, when the recipe completes another recipe will be started. The game will go down the list in order, rolling percentile against the chance of each value, and starting the recipe of the first one that rolls successfully and that has its prerequisites met. It appears that effects can also be carried over from a recipe to its links.
alternativerecipes: - Similar to the list in linked, but runs when the recipe starts, not when it fires.
aspects - aspects of the recipe, but also appear to be what are matched with the xtriggers entries on elements to trigger change to those elements when the recipe fires.
ending - Signals that completion of the recipe ends the game.
signalEndingFlavour - Style of effect to use when ending the game via this recipe.
mutations - Unknown function, appears in debugging code. Can have up to four components: filterOnAspectId, mutateAspectId, mutationLevel, additive.
burnimage - May display an overlay on the table while running?
maxexecutions - ?
slots - Specifies that the recipe itself has slots, which is usually the case for non-crafting recipes that aren't initiated by cards. Only one is allowed.

Legacies
Legacies are the starting conditions which you pick when starting a new game.
id - ID.
label, description, startdescription - as always.
fromEnding - name of the ending which must have been triggered for the legacy to appear.
availableWithoutEndingMatch - specifies if the legacy is always available.
image - name of the art.
effects - effects list, same as for a recipe.


Troubleshooting
When I restarted Cultist Simulator, the Skinwalker's face and the passing dust had turned into purple squares.
The Asset files have been damaged. If you didn't take a backup, you'll need to redownload the game from Steam. This shouldn't be possible if you're using the beta modding support.

When I restarted Cultist Simulator and continued my game my character's name had changed and I could not get time to pass.
You continued a game from the release version into the beta. You'll need to restart.

My card has slots on a particular verb, but when I try to drop it on the verb it just bounces out.
Check that the verb's specifier makes the card acceptable to its base slot.

My card has slots on a particular verb, but when they're all filled, nothing happens.
No Recipe is firing. Check that you've added a Recipe that matches the combination you filled in.
9 Kommentare
Glowing Dinosaur 11. Okt. 2023 um 2:24 
Thank you!
Maghorn 25. Juli 2021 um 5:41 
"Possibly unimplemented jobs: mediumjob, auctioneerjob, dancerjob, priestjob."
These are jobs that come from DLC character starts.
XXYY君 13. Sep. 2020 um 6:33 
It should be "deckeffects", not "deckeffect".
esscheintdiesonne 8. Dez. 2018 um 3:11 
Can't seem to open it..
WITCHCRAFT!
jerseyp19 24. Juli 2018 um 17:43 
Got as far as "Scroll down until you see the block of TextAssets". Nothing is named that and it's not a type. I'm missing something.
The_Hero_Number_0 9. Juli 2018 um 9:21 
Quick aside, unrelated to the quality of the information contained within this guide: The name of the ` symbol is "Grave", not "Backquote".
TacticalTarkus 28. Juni 2018 um 3:28 
I have met with a terrible fate.
robin! 21. Juni 2018 um 10:13 
Fantastic guide, well written! Thanks!

Do you intend to add NPCs eventually? I find it really comforting to know that I won't lose my high level acolytes due to a bad roll of the dice, but I can't remember their names - and that goes doubly for rare ingredients/tools.
Dakuwan 12. Juni 2018 um 14:06 
Thanks man, appreciate your work.

Btw, "UnityEX", another tool I came across while trying to get at the card faces/title screen image can unpack/repack the files as well.