> ## Documentation Index
> Fetch the complete documentation index at: https://v5.rpgjs.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Class Commands

> Assign and inspect player classes and class-driven behaviors.

# Class Commands

Assign and inspect player classes and class-driven behaviors.

## Members

* [animations](#animations)
* [Change Actor](#change-actor)
* [changeActor](#changeactor)
* [createClassInstance](#createclassinstance)
* [resolveClassSnapshot](#resolveclasssnapshot)
* [setActor](#setactor)
* [setClass](#setclass)
* [WithClassManager](#withclassmanager)

## animations

Animation names mapped to graphics, consumed by optional combat modules.

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `property`
* Defined in: `ActorData`

### Signature

```ts theme={null}
animations: Record<string, string>
```

## Change Actor

Replace the player's active actor identity while preserving acquired
progression. The new actor's parameter curves are evaluated at the
current level and HP/SP keep their previous fill ratios. Starting
equipment is intentionally not granted. Runs on the authoritative server
in standalone RPG and MMORPG modes. Animation bindings are available to
optional combat modules through `combatAnimations`.

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `method`
* Member of: `RpgPlayer`

### Signature

```ts theme={null}
player.changeActor(actor)
```

### Parameters

* `actorInput`: `ActorInput`

### Returns

The resolved actor object.

### Examples

```ts theme={null}
const actor = await player.showCharacterSelect([Hero, Mage], { allowCancel: true });
if (actor) player.changeActor(actor);
```

## changeActor

Change the active actor without granting starting equipment or resetting
the player's acquired progression.

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `method`
* Defined in: `IClassManager`

### Signature

```ts theme={null}
changeActor(actor: ActorInput): ActorData
```

### Parameters

* `actor`: `ActorInput`

### Returns

The resolved actor object

## createClassInstance

Create a class instance without side effects.

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `method`

### Signature

```ts theme={null}
createClassInstance(classInput: ClassInput)
```

### Parameters

* `classInput`: `ClassInput`

## resolveClassSnapshot

Resolve class snapshot entry into a class instance without side effects.

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `method`

### Signature

```ts theme={null}
resolveClassSnapshot(snapshot: { _class?: any }, mapOverride?: any)
```

### Parameters

* `snapshot`: `{ _class?: any }`
* `mapOverride?`: `any`

## setActor

Set up the player as a specific actor archetype

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `method`
* Defined in: `IClassManager`

### Signature

```ts theme={null}
setActor(actor: ActorInput): ActorData
```

### Parameters

* `actor`: `ActorInput`

### Returns

The resolved actor object

## setClass

Assign a class to the player

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `method`
* Defined in: `IClassManager`

### Signature

```ts theme={null}
setClass(_class: ClassInput): ClassData
```

### Parameters

* `_class`: `ClassInput`

### Returns

The instantiated class object

## WithClassManager

Class Manager Mixin

Provides class and actor management capabilities to any class. This mixin handles
character class assignment and actor setup, including automatic parameter configuration,
starting equipment, and skill progression based on class definitions.

* Source: `packages/server/src/Player/ClassManager.ts`
* Kind: `function`

### Signature

```ts theme={null}
WithClassManager(Base: TBase)
```

### Parameters

* `Base`: `TBase`

### Returns

Extended class with class management methods

### Examples

```ts theme={null}
class MyPlayer extends WithClassManager(BasePlayer) {
  constructor() {
    super();
    // Class system is automatically initialized
  }
}

const player = new MyPlayer();
player.setClass(Fighter);
player.setActor(Hero);
```
