> For the complete documentation index, see [llms.txt](https://infinitypbr.gitbook.io/magic-pig-games/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://infinitypbr.gitbook.io/magic-pig-games/game-modules-4/module-documentation/game-module-lists.md).

# Game Module "Lists"

Most **Game Module** types (**Stat**, **Condition**, **Quest**, etc) have "List" objects, such as `GameStatList`, `GameConditionList`, and so on. Some will have unique methods, but all will have common methods that handle the same operations, but specific to their type.

{% hint style="success" %}
Each subsection of this topic shows the common methods that each Game Module List has, such as `Get()` or `Count()`, along with all of the variations of those shared methods.

Each subsection will then show the methods that are unique to each Game Module type.
{% endhint %}

{% hint style="info" %}
The common methods can be found in GameModuleListExtensions.cs
{% endhint %}

{% hint style="warning" %}
Some methods which all Game Module Lists have, such as `SetOwner`, require a different type, depending on the list. For example, in `GameStatList` and `GameItemObjectList`, the method `SetOwner()` takes in a `IHaveStats value`.

However, the same method in `GameConditionsList` takes in a `IHaveConditions` `value`, and the same method in `GameQuestList` takes in a `IHaveQuests value`.

You can cast your `Actor` or other class which implements various "`IHave`" interfaces like this:

```csharp
// Assumes this is run on the Actor who implements IHaveStats etc
public void SetOwner()
{
    partyStats.SetOwner((IHaveStats)this);
    quests.SetOwner((IHaveQuests)this);
}
```

{% endhint %}
