# Mastery Levels

## **Mastery Levels**

`Stat` objects with `canBeTrained` set true can have multiple `Mastery` levels, while other `Stat` objects, as well as `ItemObject` and `ItemAttribute` objects, have a single level.

A `MasteryLevels` is a Scriptable Object, which you can create in your project by right-clicking the project view:

`/Create/Game Modules/Create/Mastery Levels`

The object can hold any number of individual `MasteryLevel` objects. In my game Legend of the Stones, we use "*Novice*", "*Expert*", "*Master*", and "*Grand Master*", but you can of course name them however you'd like. You can also have multiple `MasteryLevels` available to your project.

## Modification Levels

When you use the Inspector to set `Stat` objects, `ItemObject` or `ItemAttribute` objects to have an affect on specific `Stat` objects, you're creating and populating `ModificationLevel` objects. These hold all the details about how one thing affects another. In general you shouldn't have to care about this, but feel free to look at the scripts to see how it all works.

## Managing Mastery Levels

When you select a `MasteryLevels` object, you are unable to edit the details directly. Instead, click the "*Manage Mastery Levels*" button.

![](/files/FhULNZM3hJbYv1O9CHYU)

The Editor Window which opens will allow you to edit the details of the object. If you have multiple `MasteryLevels` objects, select the one you'd like to manage using the drop down near the top.

![](/files/q6kWAqLh5P7tkR8l8tBj)

{% tabs %}
{% tab title="Mastery Levels" %}
![](/files/yGDx0RbOkugM0nZmKfWD)

Here you can create, rename, and reorder individual **Mastery Levels**. Select them from the tabs in the middle to update the `Dictionaries` content for each **Mastery Level**.

The Dictionaries tab allows you to create keys which are added to each Mastery Level, and each Mastery Level tab will allow you to populate the dictionary keys with values.
{% endtab %}

{% tab title="Dictionaries" %}
![](/files/aJzsfVt3qZdv9PlhKykh)

Here you can set up the keys available for all **Mastery Levels** of this `MasteryLevels` object. Values can be set individually on each `MasteryLevel`.
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://infinitypbr.gitbook.io/magic-pig-games/game-modules-4/module-documentation/stats-and-skills/mastery-levels.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
