Skip to content

DunkkE/Quest-Board

Repository files navigation

Quest-Board

This is Quest Board. An app designed to let users generate a large variety of random content using custom themes. The app is intended for web, iOS, and Android.

How to run:

  • Navigate to repo main directory
  • console/cmd/terminal: npm install
  • ionic serve

Current Features:

  • Generate characters
  • Generate creatures
  • Generate locations
  • Generate items
  • Favorite any generated content
  • Robust custom themes entered via JSON

To Be Implemented:

  • Ability to generate from 'structure' categories without being in that category's generator
  • Quest generator
  • Changes to item and creature structures to allow more robust traits
  • User upload/download of custom themes
  • Create the themes in-app
  • User can filter certain given categories in the app

Possible Implementation Later:

  • Grammar detection system (improved grammar for things like plurals)

For custom themes, please see the below format for the strictly "required" information, and look in /Lists/adventure-default for an example.

{
    "name": string,
    "author": string,
    "description": string,
    "character": {
        "race": string[],
        "alignment": string[],
        "raceProperties": {
            "<given-race>": {
                "name-format": string[],
                "uniqueadjective": bool,
                "uniqueJob": bool
            }, ...
        },
        "job": {
            "standard": {
                "<given-alignment>" string[],
                ...
            }, ...
        },
        "description": string[],
         "quirk": string[],
         "goal": string[],
         "filterable": string[] 
    },
    "creature":{
        "type": string[],
        "name": {
          "<given-type>": string[],
          ...
        },
        "description": string[],
        "quirks": string[],
        "filterable": string[]

    },
    "item":{ -- NOTE, THIS AND CREATURES WILL BE CHANGED IN THE NEAR FUTURE --
        "type": string[],
        "material": string[],
        "name": {
            "<given-type>": string[]
            },
        "description": string[],
        "quirk": string[],
        "filterable": string[]
    },
    "location":{
        "type": string[],
        "name": {
            "town": { -- will be changed to structures as an array soon, but this is the correct format for now --
                "structure": string,
                ...
                 
            }, ...
        },
        "description" : {
            "<given-type>": string[],
            ...
           },
        "quirk": {
            "<given-type>": string[]
            },
            "filterable": string[]
    },
    "quest":{
        "filterable": []
        -- removed due to generation issues, will be reimplemented --
    }
}

Important syntax notes:

  • (), [], %XX% (X being a digit) must all be escaped using \ if they are intended to show up normally.
  • () indicates a property to generate -- example: (character.type) will give one of the strings found in theme[character][type]
  • () MUST have the full path to a STRING ARRAY. -- example:(location.description) is invalid, but (location.description.) is valid.
  • () - * indicates a random choice at that position. For example, (location.description.*) will choose a random type to continue into for generating a string
  • () - 'this' is a reserved word for receiving a property of a previously generated property. For example, if a location's description were to include its name, it could call (this.name) and it would be replaced with the name, if there is one, rather
  • [] indicates a 'choice' block. They will be removed on generation.
  • [] preceded by %XX% (X being a digit) will have a XX% chance of appearing.
  • [] containing the '|' character functions as an XOR-- only one of the options will be generated. More than one can be used. -- example: [Example 1|Example 2|Example 3] will result in the string Example 1, Example 2, or Example 3.
  • These can be combined together, i.e. %50%[(this.name) | (character.type)] will have a 50% chance of generating either the object's name or a character type

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published