Skip to content

Wasteland-Ventures-Group/WV-VTT-module

Repository files navigation

Wasteland Ventures Foundry VTT System

Supported Foundry Version

This is an implementation of the Wasteland Ventures pen and paper RPG system for the Foundry Virtual Tabletop (Foundry VTT or FVTT) tool.

The system rules themselves can be found on Google Docs.

Installation

The latest release

Simply search for "Wasteland Ventures" in the systems list in the Foundry package management. You can install it directly via Foundry.

From main/git

To install the latest development version onto your Foundry instance, first copy this URL, then go into your setup pages to systems, then paste the URL into the manifest URL bar and click install.

Development

Setup

To develop this system and make use of the tooling in place, the minimum requirement is Node.js. Node.js usually has the package manager npm packaged with it. This is all you need to install the project's dependencies and get started developing.

A recommended way to install and manage Node.js on Linux systems is by using nodenv or the distribution's own package manager. On Windows, using Chocolatey or the Node.js installer is recommended.

Once Node.js and npm are installed, run npm ci in the project root directory and all dependencies will be installed into the node_modules directory.

Compiling/Transpiling

This project uses Typescript to generate its Javascript and Sass to generate its CSS. In addition, the template.json is not written by hand, but generated from Typescript classes. Further, compendiums are composed of one JSON file per entry and then compiled as part of the build process.

Gulp Tasks

Gulp is a task runner for Javascript, to automate repetitive tasks. It can even look out for changes in the input files for a task and rerun the task on its own in that case.

Running gulp

On Linux machines, you can easily run gulp with just this command:

./gulp.js

On Windows machines, you likely have to run it this way:

node gulp.js

From here on, only the Linux form will be listed, the Windows form should work in a similar way.

Getting an overview over tasks

For an overview of the tasks, run:

./gulp.js --tasks

Background tasks

Some tasks have a variant with the watch prefix. Those tasks are meant to be run as a background task and will look for changes in the corresponding input files to run on their own. For example, one can run the following on a terminal to have the files be recompiled when changes are made to the input files:

./gulp.js watchAll &

Adding entries to compendiums

The compendium sources are located under src/main/compendiums. They are grouped first by document type (Usually "actor" and "item") and then by their system sub types (for example "weapon").

It is recommended to edit the JSON files in those directories with an editor, that can supply additional information and checks via JSON schema. Currently there are ready made configurations for VS Code and Nvim with coc-nvim available.

Before you can start editing, the schemas have to be generated at least once and again, if changes are made to the system data types. To generate the schemas, run:

./gulp.js compSchemas

Adding translations

The translation files are located in src/main/lang. Their schema is generated using the following:

./gulp.js langSchema

The schema is generated from src/main/typescript/lang.d.ts. It needs to be regenerated each time this file is changed.

Putting the results in FoundryVTT

For the time being, development is the easiest, when putting a symlink in Foundry's data dir as Data/systems/wasteland-ventures and having it link to this repository's dist/wasteland-ventures dir. You can then just reload the foundry page in a browser and your changes are visible. If the system.json is changed, you have to navigate back to the setup page and reload your test world.

Releasing

To create a release, first go into the CHANGELOG.md and check for changes. Based on the unreleased changes, determine a new version number by following the semantic versioning spec. Then add that version number to the changelog and change the system.json version number to the new version. Also in the system.json change the download property to the location where the new download will be in. Then commit all that and tag it with a version tag like so: git tag v0.0.2. After this run ./gulp.js buildZip, push the commit and tag with git push; git push --tags and create a new release from the tag on GitHub. Then upload the packaged zip from the dist dir to the release. Afterwards log in to the Foundty VTT admin interface, go to the wasteland-ventures package and add a new package version.

Contributing

Issues and pull requests are welcome.