# Step 2: Finding the right class

## Summary&#x20;

Created: Apr 02 2024 by [mana vortex](mailto:undefined)\
Last documented edit: [Berdagon](mailto:undefined)

This page will list useful classes and tell you where to find more information about them.

## Explanation

When you're completely lost, how do you find the right class?

## Classes (and what they do)

### PlayerPuppet

```swift
public class PlayerPuppet extends ScriptedPuppet
```

This class is the Player and handles most of the events and logic related to player

#### Examples

```swift
protected cb func OnGameAttached() -> Bool
```

This function is called when the GameInstance is attached to the Player

### DamageSystem

```swift
public final native class DamageSystem extends IDamageSystem
```

This class handles all the events and calculations of the damages done to all the gameobjects from all the sources

#### Examples

```swift
private final func ProcessPipeline(hitEvent: ref<gameHitEvent>, cache: ref<CacheData>) -> Void
```

This is the starting event that gets called when an object is hit and it has a `gameHitEvent` variable


---

# 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://wiki.redmodding.org/redscript/getting-started/how-to-start-redscripting/step-2-finding-the-right-class.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.
