Skip to content
On this page

Items

Prerequisites

Read the article Create database to find out how to put the data into your game and then use it.

Example of full item:

ts
import { RpgPlayer } from '@rpgjs/server'
import { Item } from '@rpgjs/database'

@Item({  
    name: 'Potion',
    description: 'Gives 100 HP',
    price: 200,
    hpValue: 100,
    hitRate: 1,
    consumable: true,
    addStates: [],
    removeStates: [],
    elements: [],
    effects: [],
    paramsModifier: {}
})
export class Potion {
    onAdd(player: RpgPlayer) {

    }

    onUse(player: RpgPlayer) {

    }

    onUseFailed(player: RpgPlayer) {

    }

    onRemove(player: RpgPlayer) {

    }
}

API


id

  • Property: id
  • Type: string
  • Optional: true
  • Usage:

The id of the item. The identifier makes it possible to find an object in the database. By default, the identifier is the name of the class


name

  • Property: name
  • Type: string
  • Optional: true
  • Usage:

The name of the item.


description

  • Property: description
  • Type: string
  • Optional: true
  • Usage:

The description of the item.


price

  • Property: price
  • Type: number
  • Optional: true
  • Usage:

The price of the item. If the price is undefined, then it will not be possible to buy or sell the item.


hpValue

  • Property: hpValue
  • Type: number
  • Optional: true
  • Usage:

The number of heart points given back by the item


hitRate

  • Property: hitRate
  • Type: number
  • Optional: true
  • Default: 1
  • Usage:

The success rate of the item. Value between 0 and 1. Even if the use of the item failed, the item will be removed from the player's inventory.


consumable

  • Property: consumable
  • Type: boolean
  • Optional: true
  • Default: true
  • Usage:

Indicate if the item can be used. If not, an error will be sent


effects

  • Property: effects
  • Type: Array< Effect>
  • Optional: true
  • Example:
ts
import { Effect } from '@rpgjs/server'

effects: [Effect.CAN_NOT_SKILL]
  • Usage:

List of effects applied by the object, weapon, armor or condition


elements

  • Enum: number
TagDescription
Efficiency.GAIN_HP-0.5 value
Efficiency.PERFECT_INVULNERABLE0 value
Efficiency.INVULNERABLE0.5 value
Efficiency.NORMAL1 value
Efficiency.VULNERABLE1.5 value
Efficiency.VERY_VULNERABLE2 value
  • Property: elements
  • Type: Array<{ rate: number, element: Element} | Element>
  • Optional: true
  • Example:

Example 1

ts
import { Element } from 'my-database/elements'

elements: [Element.Fire] // rate is 1 by default

Example 2

ts
import { Element } from 'my-database/elements'

elements: [{ rate: 1.5, element: Element.Fire }]

Example 3

ts
import { Efficiency } from '@rpgjs/server'
import { Element } from 'my-database/elements'

elements: [{ rate: Efficiency.VULNERABLE, element: Element.Fire }]
  • Usage:

List of elements.

Applies a vulnerability rate. It is a multiplying coefficient for damage calculations.

To help, you can use the Efficiency enumerations


paramsModifier

  • Property: paramsModifier
  • Type: Object
  • Optional: true
  • Example:
ts
import { Presets } from '@rpgjs/server'

const { MAXHP } = Presets

paramsModifier: {
     [MAXHP]: {
         value: 100
     }
}
  1. Player has 741 MaxHp
  2. After changing the parameter, he will have 841 MaxHp
  • Usage:

Changes the values of some parameters

It is important that these parameters have been created beforehand with the addParameter() method. By default, the following settings have been created:

  • maxhp
  • maxsp
  • str
  • int
  • dex
  • agi

Object Key

The key of the object is the name of the parameter

The good practice is to retrieve the name coming from a constant

Object Value

The value of the key is an object containing:

{
  value: number,
  rate: number
}
  • value: Adds a number to the parameter
  • rate: Adds a rate to the parameter

Note that you can put both (value and rate)

In the case of a state or the equipment of a weapon or armor, the parameters will be changed but if the state disappears or the armor/weapon is de-equipped, then the parameters will return to the initial state.


addStates

  • Property: addStates
  • Type: Array<{ rate: number, state: StateClass } | StateClass>
  • Optional: true
  • Usage:

Apply states

  • If it is an item, the state will be applied during the useItem() method

The array can contain a rate of chance (between 0 and 1) that the state applies.

Example, the Paralize state has a 1 in 2 chance of applying :

ts
// Paralize is a class with the decorator State
addStates: [{ rate: 0.5, state: Paralize }]

removeStates

  • Property: removeStates
  • Type: Array<{ rate: number, state: StateClass } | StateClass>
  • Optional: true
  • Usage:

Remove states. If the player has states, the object will remove them.

The array can contain a rate of chance (between 0 and 1) of state removal

Example, the Paralize state has a 1 in 2 chance of removal :

ts
// Paralize is a class with the decorator State
removeStates: [{ rate: 0.5, state: Paralize }]