# Actors, Players, NPCs

Using game modules, all things that might have stats, conditions, give conditions, have an inventory, and so on, will benefit from having an `actor` class which inherits from [`GameModulesInventoryActor`](/magic-pig-games/game-modules-4/module-documentation/game-modules-actor.md). Just because it has an actor class on it, does not mean it's going to walk around and do things in the world.

## Entity

All entities will be interactable, implementing `IAmInteractable`. They will have to decide for themselves what happens when they are interacted with. And all will have a `public actor Actor` on them. `Actor` is a class which inherits from `GameModulesInventoryActor`, and may have additional functionality on it in the future, shared by all `Entity` objects.

An entity can be the Player, or a townsperson, or a dragon. It can also be a treasure box, a secret wall that can be destroyed, or a barrel that explodes causing massive damage.

## Player

This is one of the main player characters. These are special. For **Legend of the Stones**, there will be 4 players, each of whom does not have an in-game body. Instead, we have a first person view with four portraits. However, each player will be a `monobehaviour` (inheriting from `Entity`), and can do things with `Update()` and other similar methods.

## Character

This is an `Entity` which can move around the world. It doesn't mean that it's an `NPC`, it just means that it may wander around the world in some way. While it can be interacted with, it does not have all the engagement mechanics that an `NPC` would have.

## NPC

This is a `Character` which engages with the player. It may be an enemy or a friend. `NPCs` will also be able to join the party as a "hireling" or follower.

{% hint style="success" %}
While the chart below shows the basic flow of inheritance, we will likely have additional classes added. For sure we will have specific classes for specific NPC/Enemies such as "Slime", which has unique methods and properties to that specific character.

We may also add new classes for specific non-character entities. One may imagine a "`Barrel`" class which inherits from Entity, and handles all the aspects of being a barrel. Even then, we may have "`PotionBarrel`", "`LootBarrel`", etc to further segment things out.
{% endhint %}

<figure><img src="/files/L7nDXoMZ8cxyiQBB7pCI" alt=""><figcaption></figcaption></figure>


---

# 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/legend-of-the-stones/actors-players-npcs.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.
