Skip to main content

Class: Roleplayer

The core of this library contains a few systems that are common for most or all roleplaying games. It is designed to be extended and customized to fit the needs of a roleplaying game.

  • Action and effects system
  • Battle system
    • NPC actions
    • Resource generation system
    • Round action tracking
  • Character system
    • Resource system
    • Inventory system
    • Stats system
    • Level progression system
  • World building system
  • NPC system
    • Relationship system
  • Dice rolling system
  • Campaign system
    • Factions/relationships system
    • Quest system
    • Exploration system

It is all backed up by a rich event system where subsystems can subscribe and publish events.

Extends

Constructors

new Roleplayer(config, initialCampaignConfig)

new Roleplayer(config, initialCampaignConfig): Roleplayer

Parameters

config: WithRequired< Partial< Roleplayer >, "ruleset" >

initialCampaignConfig: RoleplayerCampaignParameters

Returns

Roleplayer

Overrides

Observable<RoleplayerEvent>.constructor

Source

core/roleplayer.ts:50

Properties

campaign

campaign: CampaignState

Source

core/roleplayer.ts:47


events

events: RoleplayerEvent[]

Source

core/roleplayer.ts:46


logger?

optional logger: Logger

Source

core/roleplayer.ts:48


ruleset

ruleset: Ruleset

Source

core/roleplayer.ts:44

Methods

createEventsProxy()

createEventsProxy(events): RoleplayerEvent[]

Parameters

events: RoleplayerEvent[]

Returns

RoleplayerEvent[]

Source

core/roleplayer.ts:66


debugEvent()

debugEvent(event): void

Parameters

event: RoleplayerEvent

Returns

void

Source

core/roleplayer.ts:182


debugEventProcessing()

debugEventProcessing(events): void

Parameters

events: RoleplayerEvent[]

Returns

void

Source

core/roleplayer.ts:186


dispatch()

dispatch(event): undefined | {type: "Unknown"; } | {type: "CampaignStarted"; } | {battleId: string;roundId: string;type: "RoundStarted"; } | {type: "RoundEnded"; } | {characterId: string;templateCharacterId: string;type: "CharacterSpawned"; } | {characterId: string;name: string;type: "CharacterNameSet"; } | {characterId: string;max: number;resourceTypeId: string;type: "CharacterResourceMaxSet"; } | {actionId: string;amount: number;characterId: string;resourceTypeId: string;sourceId: string;type: "CharacterResourceGain"; } | {actionId: string;amount: number;characterId: string;resourceTypeId: string;sourceId: string;type: "CharacterResourceLoss"; } | {amount: number;characterId: string;statId: string;type: "CharacterStatChange"; } | {characterId: string;experience: number;type: "CharacterExperienceChanged"; } | {characterId: string;experience: number;type: "CharacterExperienceSet"; } | {characterId: string;type: "CharacterDespawn"; } | {characterId: string;sourceId: string;targetPosition: Position;type: "CharacterMovement"; } | {actionId: string;characterId: string;type: "CharacterActionGain"; } | {characterId: string;equipmentSlotId: string;type: "CharacterEquipmentSlotGain"; } | {characterId: string;itemDefinitionId: string;itemInstanceId: string;type: "CharacterInventoryItemGain"; } | {characterId: string;characterInventoryItemId: string;type: "CharacterInventoryItemLoss"; } | {characterId: string;equipmentSlotId: string;itemId: string;type: "CharacterInventoryItemEquip"; } | {characterId: string;equipmentSlotId: string;itemId: string;type: "CharacterInventoryItemUnEquip"; } | {characterId: string;targetPosition: Position;type: "CharacterPositionSet"; } | {actionId: string;characterId: string;sourceId: string;statusId: string;type: "CharacterStatusGain"; } | {characterId: string;type: "CharacterAttackAttackerHit"; } | {characterId: string;type: "CharacterAttackAttackerMiss"; } | {actionDefinitionId: string;attackerId: string;characterId: string;type: "CharacterAttackDefenderHit"; } | {actionId: string;attackerId: string;characterId: string;type: "CharacterAttackDefenderDodge"; } | {characterId: string;type: "CharacterAttackDefenderParry"; } | {characterId: string;type: "CharacterClassReset"; } | {characterId: string;classId: string;type: "CharacterClassLevelGain"; }

Parameters

event: CampaignEvent

Returns

undefined | {type: "Unknown"; } | {type: "CampaignStarted"; } | {battleId: string;roundId: string;type: "RoundStarted"; } | {type: "RoundEnded"; } | {characterId: string;templateCharacterId: string;type: "CharacterSpawned"; } | {characterId: string;name: string;type: "CharacterNameSet"; } | {characterId: string;max: number;resourceTypeId: string;type: "CharacterResourceMaxSet"; } | {actionId: string;amount: number;characterId: string;resourceTypeId: string;sourceId: string;type: "CharacterResourceGain"; } | {actionId: string;amount: number;characterId: string;resourceTypeId: string;sourceId: string;type: "CharacterResourceLoss"; } | {amount: number;characterId: string;statId: string;type: "CharacterStatChange"; } | {characterId: string;experience: number;type: "CharacterExperienceChanged"; } | {characterId: string;experience: number;type: "CharacterExperienceSet"; } | {characterId: string;type: "CharacterDespawn"; } | {characterId: string;sourceId: string;targetPosition: Position;type: "CharacterMovement"; } | {actionId: string;characterId: string;type: "CharacterActionGain"; } | {characterId: string;equipmentSlotId: string;type: "CharacterEquipmentSlotGain"; } | {characterId: string;itemDefinitionId: string;itemInstanceId: string;type: "CharacterInventoryItemGain"; } | {characterId: string;characterInventoryItemId: string;type: "CharacterInventoryItemLoss"; } | {characterId: string;equipmentSlotId: string;itemId: string;type: "CharacterInventoryItemEquip"; } | {characterId: string;equipmentSlotId: string;itemId: string;type: "CharacterInventoryItemUnEquip"; } | {characterId: string;targetPosition: Position;type: "CharacterPositionSet"; } | {actionId: string;characterId: string;sourceId: string;statusId: string;type: "CharacterStatusGain"; } | {characterId: string;type: "CharacterAttackAttackerHit"; } | {characterId: string;type: "CharacterAttackAttackerMiss"; } | {actionDefinitionId: string;attackerId: string;characterId: string;type: "CharacterAttackDefenderHit"; } | {actionId: string;attackerId: string;characterId: string;type: "CharacterAttackDefenderDodge"; } | {characterId: string;type: "CharacterAttackDefenderParry"; } | {characterId: string;type: "CharacterClassReset"; } | {characterId: string;classId: string;type: "CharacterClassLevelGain"; }

Source

core/roleplayer.ts:96


dispatchAction()

dispatchAction<T>(action): T

Type parameters

T

Parameters

action: ActionDispatch< T >

Returns

T

Source

core/roleplayer.ts:86


dispatchEvents()

dispatchEvents(...events): void

Parameters

• ...events: CampaignEvent[]

Returns

void

Source

core/roleplayer.ts:90


nextSerialNumber()

nextSerialNumber(): number

Returns

number

Source

core/roleplayer.ts:80


notify()

notify(event): void

Parameters

event: RoleplayerEvent

Returns

void

Inherited from

Observable.notify

Source

lib/events/observable.ts:15


reduce()

reduce(event): void

Parameters

event: RoleplayerEvent

Returns

void

Source

core/roleplayer.ts:127


subscribe()

subscribe(func): () => void

Parameters

func: Func< RoleplayerEvent >

Returns

Function

Returns

void

Inherited from

Observable.subscribe

Source

lib/events/observable.ts:6


unsubscribe()

unsubscribe(func): void

Parameters

func: Func< RoleplayerEvent >

Returns

void

Inherited from

Observable.unsubscribe

Source

lib/events/observable.ts:11