Skip to content

crianonim/dialog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@crianonim/dialog

A TypeScript library for building dialog-based game systems with state management.

Installation

npm install @crianonim/dialog

Overview

This library provides a state machine for dialog trees with:

  • Dialog navigation - Stack-based navigation with go forward/back
  • Dynamic text - Text and conditions powered by Screept expressions
  • State management - Reducer-based game state with variables and procedures
  • Schema validation - Zod schemas for serialization/deserialization

Usage

import {
  GameDefinition,
  generateNewGameDefinition,
  gameDefinitionReducer,
  getDialogFromStack,
  getVisibleOptions,
} from "@crianonim/dialog";

// Create a new game
const game = generateNewGameDefinition();

// Get current dialog
const dialog = getDialogFromStack(game.gameState.dialogStack, game.dialogs);

// Get visible options (respects conditions)
const options = getVisibleOptions(dialog.options, game.gameState.screeptEnv);

// Execute actions when player selects an option
const newGame = gameDefinitionReducer(game, {
  type: "gamestate",
  actions: options[0].actions,
});

Dialog Actions

  • go_dialog - Navigate to a dialog by ID
  • go back - Return to previous dialog
  • msg - Output a message
  • screept - Execute a Screept statement
  • conditional - Branch based on a condition
  • block - Group multiple actions

License

ISC

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published