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

Important

If you do not use a constraint, you can remove it from the thought to make the JSONS less hefty and more readable. Check out the below "Minimum Required" to see what parameters are always required.

Minimum Required

The smallest amount of information you're required to include in this format.

{
    "event_id": "test",
    "strings": [
        "Is thinking"
    ]
}

Full Format

    {
        "event_id": "test",
        "location": [],
        "season": [],
        "tags": [],
        "strings": [
            "Is thinking"
        ],
        "involved_cats": {
            "m_c": {
                "status": [],
                "past_status": [],
                "age": [],
                "group": [],
                "standing": {
                    "group": [],
                    "currently": [],
                    "past": []
                  },
                "stat": {
                    "skill": [],
                    "trait": [],
                    "must_have_both": false
                },
                "health": {
                    "working": true,
                    "condition": [],
                    "must_be_congenital": false,
                    "must_be_acquired": false
                },
                "backstory": []
            }
        },
        "relationship_constraint": [
            {
                "cats_from": [],
                "cats_to": [],
                "mutual": false,
                "constraints": []
            }
        ]
    }

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

location:list[str]

This controls the biome and camp the event appears in. Tagging Instructions


season: list[str]

List of seasons in which the event may occur. You can utilize exclusionary tags. You can tag with a mix of "newleaf", "greenleaf", "leaf-fall", "leaf-bare", or remove the parameter altogether to allow for any season.


poi: Dict

Used to specify which POI (Point Of Interest) a Clan must have access to in order for this event to trigger. POI Constraint Tagging


tags: list[str]

Used to dictate some odds-and-ends about thought constraints: General Tags.


strings: 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.

For example:

"strings": [
        "Is wondering what r_c would think of current conflicts in the Clan",
        "Wishes r_c was alive to solve {PRONOUN/m_c/poss} problems",
        "Wonders if r_c is ending arguments in StarClan"
]

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!


involved_cats: dict[str: dict]

This dictionary holds all constraints for the cats whom we wish to reference in the thought, including the thinking cat!

Each entry is an individual cat, with the key being their event designation (r_c, m_c, etc.) and the value being their personal constraints. In thoughts, you are allowed to reference m_c, who is the "owner" of the thoughts, and r_c, who is a cat being referenced by the thought. Allowed constraints are as follows:

Full Involved Cat Dictionary Information

relationship_constraint: list[dict]

Constrains the thought to only occur is the specified relationships exist. Multiple dictionary blocks can be added to specify multiple required configurations of relationships.

        "relationship_constraint": [
            {
                "cats_from": [],
                "cats_to": [],
                "mutual": false,
                "constraints": []
            }
        ]
cats_from:list

The cats from whom the relationship originates. Use the designations (m_c, r_c, etc.) of cats listed in involved_cats.

cats_to:list

The cats who are the target of the relationship. Use the designations (m_c, r_c, etc.) of cats listed in involved_cats.

For example

If we want to ensure that m_c trusts r_c, we would put m_c in the cats_from list and r_c in the cats_to list. The feeling of trust is going from m_c to r_c.

mutual:bool

Defaults to false. Set this to true if the constraints should be mutual between the cats_from and cats_to groups.

For example

To work off of our earlier example: if we want r_c to also trust m_c, then we would set mutual to true.

constraints:list

The list of required relationships. You can include any tags in Relationship Tiers and Interpersonal Relationships. For the purposes of tag use explanations in those references: cats_from is considered "cat1" and cats_to is considered "cat2".

For example

To work off of our earlier example: we would list trusts in our constraints