Skip to content

Thoughts

"Thoughts" are the line of text below a cat's name on their profile. They're meant to signify a current action or line of thinking that the cat is "currently" taking, essentially a snapshot into a cat's day-to-day life.

As such, these can be very personal, silly, or specific! It's a chance to add a lot of additional character to each cat.

However, we also don't give thoughts a ton of room on the profile.

  • Thoughts should be short and sweet, less than 150 characters.
  • They are sentence fragments, with the cat's name on its profile assumed as the beginning of the sentence.
  • They must begin with a capital letter and should have no punctuation at the end.

A valid thought: Is giving badger-rides to a kit

An invalid thought: ExampleCat is giving badger-rides to a kit!

Tip

Within this doc you'll see references to a "main_cat" (m_c) and a "random_cat" (r_c). The thought will be appearing on the m_c's profile, while the r_c will be a randomly chosen cat whom you can optionally include in the thought.

Directory Structure

The thoughts directory is found in resources/lang/en/thoughts. Within this folder, you'll see multiple folders, each one containing a different category of thought.

Within the game, all cats take a new thought each timeskip. However, there are also special events within the game that may "replace" the cat's thought, such as death or exile. Typical timeskip thoughts are found in while_alive and while_dead (is_guide is also timeskip thoughts, but for a specific cat.) The rest of the folders are for those special event thoughts. Each folder contains json files of their associated thoughts.

Directory Usage json Structure
is_guide Thoughts that appear for the "guide cat" Guides can either be in the Dark Forest or StarClan, the guide's current location dictates which of these files their thought is pulled from
on_afterlife_change Thoughts that appear when a dead cat is moved to a different afterlife The cat will pull a thought from the file matching their new afterlife
on_birth Thoughts that appear after a cat is born Currently only houses parent.json. New parents will pull a thought from this file. If you'd like to add thoughts for the newborn, head to while_alive/newborn.json.
on_death Thoughts that appear after a cat dies The cat will pull a thought from the folder matching the afterlife they join. If they're a leader and are only losing a life, they take a thought from leader_life.json. If they're fully dying, they take a thought from leader_death.json. All other cats pull from general.json
on_exile Thoughts that appear after a cat is exiled All cats pull from general.json
on_grief_no_body Thoughts that appear for grieving cats after a cat dies and has no retrievable body All cats pull from general.json
on_grief_toward_body Thoughts that appear for grieving cats after a cat dies and has a retrievable body All cats pull from general.json
on_join Thoughts that appear for a cat who has just joined the Clan All cats pull from general.json
on_lost Thoughts that appear for a cat who has just been lost from the Clan All cats pull from general.json
on_meeting Thoughts that appear for a cat who has just met, but not joined, the Clan If the cat is part of another Clan, they pull from clancat.json, otherwise they pull from outsider.json
on_rank_change Thoughts that appear for a cat whose rank has just changed. Note that rank changes can happen OUTSIDE of ceremonies, so these thoughts should not reference a ceremony outright. Cats will pull from the file matching their current status. Remember you can use status_history constraints to constrain the pool to cats who used to be certain ranks. All cats will pull from general.json
while_alive Thoughts that living cats will choose from upon timeskip Cats will pull from the file matching their current status, if a cat is currently lost, they'll pull from the file in while_lost which matches with the status they had upon becoming lost. All cats (except newborns and lost cats) will pull from general.json. Clancats additionally draw from clancat.json
while_dead Thoughts that dead cats will choose from upon timeskip Cats will pull from the folder matching their current afterlife, and the file matching the status they had upon death. All cats (except newborns and outsiders) will pull from general.json

Tip

Within while_alive and while_dead, thoughts should be placed in general.json if they apply to multiple statuses.

Thought Format

{
    "id": "",
    "biome": [],
    "season": [],
    "thoughts": [],
    "has_injuries": {
        "m_c": [],
        "r_c": []
    },
    "perm_conditions": {
        "m_c": [],
        "r_c": [],
        "born_with": {
            "m_c": false,
            "r_c": false
        }
    },
    "relationship_constraint": [],
    "backstory_constraint": {
        "m_c": [],
        "r_c": []
    },
    "main_status_constraint": [],
    "random_status_constraint": [],
    "main_status_history": [],
    "random_status_history": [],
    "main_age_constraint": [],
    "random_age_constraint": [],
    "main_trait_constraint": [],
    "random_trait_constraint": [],
    "main_skill_constraint": [],
    "random_skill_constraint": [],
    "random_living_status": [],
    "random_outside_status": []
}

Important

If you do not use a constraint, you can remove it from the thought to make the JSONS less hefty and more readable.


id: str

A unique string used to identify the thought block. Generally, the ID includes the condition, personality, age, and status of the main_cat, as well as the condition, personality, age, and status of any other cat mentioned.

  • paralyzed_gen_to_alive_gen
  • insecure_apprentice
  • general_formerclancat_dead_thoughts

biome: list[str]

Constrains the thought to only occur if a player chooses a specific biome.

"plains", "beach", "mountainous", "forest",


season: list[str]

Constrains the thought to only occur once the Clan is in a specific season.

"Newleaf", "Greenleaf", "Leaf-fall", "Leaf-bare",


thoughts: list[str]

This is a list of thoughts applicable to the constraints on this thought block. You may include as many or as few thoughts here as you wish, but remember that the constraints will apply to all of them.

Examples:

  • "Mewls pitifully for milk" (gen_dead_newborn)
  • "Wonders if {PRONOUN/m_c/subject} would have gotten the chance to do r_c's first check-up" (general_med_cat_app_to_dead_starclan_newborn1)
  • "Is wondering if r_c would have been {PRONOUN/m_c/poss} friend" (kit_dead_kit)

Caution

Be careful about referencing actions only specific types of cats take! For example, if a thought refers to patrolling, consider if you've adequately constrained the thought to only allow cats who can go on a patrol. We don't want kittens talking about their trip to the Gathering!


has_injuries: dict[str: list]

Constraints the thought to only occur if m_c (the cat that is thinking the thought) or r_c (the cat that is being thought about) has a certain condition (either illness or injury).

Illness Tag List

Injury Tag List

You can additionally use the tag "any" to allow the thought to occur if the cat is experiencing any illness or injury.


perm_conditions: dict[str: var]

Constrains the thought to only occur if m_c (the cat that is thinking the thought) or r_c (the cat that is being thought about) has a certain perm condition.

Permanent Conditions Tag List

You can additionally use the tag "any" to allow the thought to occur if the cat is experiencing any permanent condition.

The additional constraint born_with allows you to constrain whether this thought appears for cats born with a condition (congenital) or not. Not providing the constraint is the same as saying either is acceptable.

Note

Be careful when specifying born_with. If you force a condition to be congenital when it can never generate as such, the thought will never trigger! The same also applies for forcing a condition to be non-congenital when it is always generated as such.


relationship_constraint: list

Constrains the thought to only occur if m_c and r_c fulfill the tags requirements. You can include any tags in Relationship Tiers and Interpersonal Relationships.


backstory_constraint: dict[str: list]

Constrains the thought to only occur if m_c or r_c has the specific listed backstory. To find what each backstory describes, you can find more by going to resources/lang/en/cat/backstories.en.json. You can utilize exclusionary tags.

Backstory Tag List


main_status_constraint: list[str] & random_status_constraint: list[str]

Constrains the thought to only happen if m_c or r_c are in a certain role. You can utilize exclusionary tags.

Status Tag List

You can also use the tag "any" to allow the thought to occur for all roles except "newborns", who shouldn't get any general thoughts, just the ones placed in their specific JSON.


main_status_history: list[str] & random_status_history: list[str]::

Constrains the thought to only happen if m_c or r_c used to have a certain role, but are no longer that role. You can utilize exclusionary tags.

Status Tag List


main_age_constraint: list[str] & random_age_constraint: list[str]:

Constrains the thought to only occur if m_c or r_c are within a certain age group. You can utilize exclusionary tags.

Age Tag List


main_trait_constraint: list[str] & random_trait_constraint: list[str]:

Constrains the thought to only occur if m_c or r_c has a specific trait. You can utilize exclusionary tags.

Trait Tag List


main_skill_constraint: list[str] & random_skill_constraint: list[str]:

Constrains the thought to occur only if m_c or r_c has a specific skill. You can utilize exclusionary tags.

Skill Tag List


random_living_status: list[str] & random_outside_status: list[str]:

Constrains the thought if r_c has a specific place of death (first set of tags) or outside role (second set of tags).

Other Status Tag List

Examples

Some examples of thoughts include:

{
    "id": "gen_dead_exiled",
    "thoughts": [
        "Wishes {PRONOUN/m_c/subject} had the chance to fix {PRONOUN/m_c/poss} mistakes while alive",
        "Curses c_n for making {PRONOUN/m_c/object} die alone",
        "Wonders what is happening in StarClan",
        "Regrets not trying to join a different Clan before {PRONOUN/m_c/subject} died",
        "Is wondering if {PRONOUN/m_c/subject} {VERB/m_c/have/has} a purpose anymore",
        "Is thinking bitterly about {PRONOUN/m_c/poss} former Clanmates"
    ],
    "main_status_constraint": [
        "exiled"
    ]
}

Found in while_dead/unknown_residence/exiled.json

{
    "id": "fierce_deputy",
    "thoughts": [
        "Is sternly instructing a patrol about the importance of strength in defending the Clan",
        "Feels a rush of adrenaline at the thought of an upcoming battle",
        "Impressed {PRONOUN/m_c/poss} Clanmates by scaring off an intruder"
    ],
    "main_trait_constraint": [
        "fierce"
    ]
}

Found in while_alive/deputy.json