diff --git a/.env.template b/.env.template
new file mode 100644
index 0000000..180dbd6
--- /dev/null
+++ b/.env.template
@@ -0,0 +1,2 @@
+# The absolute path to the Foundry installation to create symlinks to
+FOUNDRY_ROOT=""
diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml
index 7763240..eecafc4 100644
--- a/.github/workflows/draft-release.yaml
+++ b/.github/workflows/draft-release.yaml
@@ -29,20 +29,22 @@ jobs:
if: ${{ steps.check-tag.outputs.exists == 'true' }}
run: exit 1
- - name: Ensure there are specific files to release
- if: ${{ vars.files_to_release == '' }}
- run: exit 1
+ - name: "Building compendia"
+ run: "npm run data:build"
- - name: Move system.json to a temp file
- id: manifest-move
- run: mv system.json module.temp.json
+ - name: "Removing compendium source"
+ run: "rm -rf packs/**/_source"
- - name: Update the download property in the manifest
+ - name: Update the manifest with the relevant properties
id: manifest-update
- run: cat module.temp.json | jq -r --tab '.download = "https://github.com/${{ github.repository }}/releases/download/v${{ steps.version.outputs.version }}/release.zip"' > system.json
+ uses: microsoft/variable-substitution@v1
+ with:
+ files: "system.json"
+ env:
+ download: "https://github.com/${{ github.repository }}/releases/download/v${{ steps.version.outputs.version }}/release.zip"
- name: Create the zip
- run: zip -r release.zip ${{ vars.files_to_release }}
+ run: zip -r release.zip system.json packs module langs assets templates README.md
- name: Create the draft release
uses: ncipollo/release-action@v1
@@ -50,5 +52,6 @@ jobs:
tag: "v${{ steps.version.outputs.version }}"
commit: ${{ github.ref }}
draft: true
+ body:
generateReleaseNotes: true
artifacts: "release.zip,system.json"
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 23d5f03..e058206 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
dist/
*.link
+*.txt
+/foundry
# Dependency directories
node_modules/
@@ -11,3 +13,10 @@ jspm_packages/
.env.test.local
.env.production.local
.env.local
+
+# Ignore all of the binaries and stuff that gets built for Foundry from the raw
+# JSON data because it's annoying seeing it in my git changes when it isn't actually
+# needed.
+/packs/**/*
+!/packs/**/*/
+!/packs/**/*.json
diff --git a/.vscode/foundry.html-data.json b/.vscode/foundry.html-data.json
new file mode 100644
index 0000000..3358d2b
--- /dev/null
+++ b/.vscode/foundry.html-data.json
@@ -0,0 +1,18 @@
+{
+ "version": 1.1,
+ "globalAttributes": [
+ { "name": "data-tooltip", "description": "The content for the tooltip to display" },
+ { "name": "data-tooltip-direction", "description": "The direction that the tooltip renders in, in relation to the element that has the tooltip", "valueSet": "tooltip-direction" }
+ ],
+ "valueSets": [
+ {
+ "name": "tooltip-direction",
+ "values": [
+ { "name": "UP", "description": "Put the tooltip above the element" },
+ { "name": "LEFT", "description": "Put the tooltip to the left of the element" },
+ { "name": "RIGHT", "description": "Put the tooltip to the right of element" },
+ { "name": "DOWN", "description": "Put the tooltip below the element" }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/ripcrypt.html-data.json b/.vscode/ripcrypt.html-data.json
new file mode 100644
index 0000000..3efb728
--- /dev/null
+++ b/.vscode/ripcrypt.html-data.json
@@ -0,0 +1,45 @@
+{
+ "version": 1.1,
+ "tags": [
+ {
+ "name": "rc-icon",
+ "description": "Loads an icon asynchronously, caching the result for future uses",
+ "attributes": [
+ { "name": "name", "description": "The name of the icon, this is relative to the assets folder of the system" },
+ { "name": "path", "description": "The full path of the icon, this will only be used if `name` isn't provided or fails to fetch." },
+ { "name": "var:size", "description": "The size of the icon, must be a valid CSS unit" },
+ { "name": "var:fill", "description": "The fill of the icon, must be a valid CSS colour" },
+ { "name": "var:stroke", "description": "The stroke colour of the icon, must be a valid CSS colour" },
+ { "name": "var:stroke-width", "description": "The stroke width of the icon, must be a valid CSS unit" },
+ { "name": "var:stroke-linejoin", "description": "The stroke linejoin of the icon, must be a valid CSS value" }
+ ]
+ },
+ {
+ "name": "rc-svg",
+ "description": "Loads an icon asynchronously, caching the result for future uses",
+ "attributes": [
+ { "name": "name", "description": "The name of the icon, this is relative to the assets folder of the system" },
+ { "name": "path", "description": "The full path of the icon, this will only be used if `name` isn't provided or fails to fetch." },
+ { "name": "var:size", "description": "The size of the icon, must be a valid CSS unit" },
+ { "name": "var:fill", "description": "The fill of the icon, must be a valid CSS colour" },
+ { "name": "var:stroke", "description": "The stroke colour of the icon, must be a valid CSS colour" },
+ { "name": "var:stroke-width", "description": "The stroke width of the icon, must be a valid CSS unit" },
+ { "name": "var:stroke-linejoin", "description": "The stroke linejoin of the icon, must be a valid CSS value" }
+ ]
+ },
+ {
+ "name": "rc-border",
+ "description": "Creates a stylized border in the same sort of design that the published RipCrypt book uses",
+ "attributes": [
+ { "name": "var:vertical-displacement", "description": "How much vertical displacement the title receives, defaults to 12.5px" },
+ { "name": "var:padding", "description": "How much padding the border container has" },
+ { "name": "var:border-color", "description": "The CSS value that is used as the colour of the border" },
+ { "name": "var:padding-top", "description": "How much padding the top of the border element has, if not provided, defaults to the value of vertical displacement plus 4px" },
+ { "name": "var:margin-top", "description": "How much margin the top of the border element has, if not provided, defaults to the value of vertical displacement" },
+ { "name": "var:border-mask", "description": "The CSS colour used to mask out the border element, if not provided defaults to the --base-background CSS variable"},
+ { "name": "var:title-height", "description": "The CSS height for the title, defaults to 20px" },
+ { "name": "var:title-background", "description": "The CSS colour to make the title element, defaults to var:border-color" }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a72c23c..c60389c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,8 +1,17 @@
{
"files.exclude": {
- "**/node_modules": true
+ "**/node_modules": true,
+ "foundry": true
},
"search.exclude": {
- "foundry.*.link": true
- }
+ "foundry": true
+ },
+ "html.customData": [
+ "./.vscode/foundry.html-data.json",
+ "./.vscode/ripcrypt.html-data.json"
+ ],
+ "workbench.editorAssociations": {
+ "*.svg": "default",
+ },
+ "git.branchProtection": []
}
\ No newline at end of file
diff --git a/README.md b/README.md
index 71abbda..6df788c 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,21 @@
-# Foundry-RipCrypt
-An implementation of the RipCrypt TTRPG System for FoundryVTT
+# RipCrypt - A Dungeon Sprint RPG
+RipCrypt is a fast, pick-up and play, tabletop RPG for 1-8 players.
+
+# Features:
+
+## Themes
+The RipCrypt system comes with a dark and light theme for **everything** within the system!
+All you need to do is select whichever theme you like more!
+
+## Hero Sheets
+This system comes with multiple different Actor sheets for players
+to make your experience, _yours_.
+
+Some of the sheets included by default are:
+- Summary Card
+- Skill Card
+- Craft Card
+- Full Sheet (Includes Summary Card & Skill Card)
+- Tabbed Full Sheet (Includes Summary Card, Skill Card, and Craft Card as tabs within a single sheet)
+
+## Geist Sheets
diff --git a/assets/_credit.txt b/assets/_credit.txt
index 19babdc..83c76aa 100644
--- a/assets/_credit.txt
+++ b/assets/_credit.txt
@@ -1,2 +1,34 @@
+Eldritch-Oliver:
+ - geist-silhouette.v2.svg : All rights reserved.
+ - caster-silhouette.v1.svg : All rights reserved.
+ - icons/star-empty.svg : Modified from https://thenounproject.com/icon/star-7711815/ by Llisole
+ - icons/star.svg : Modified from https://thenounproject.com/icon/star-7711815/ by Llisole
+ - icons/shield/checked.v1.svg : Modified from https://thenounproject.com/icon/shield-5565751/ by Corner Pixel
+ - icons/shield/crossed.v1.svg : Modified from https://thenounproject.com/icon/shield-5565751/ by Corner Pixel
+ - icons/shield/solid.v1.svg : Modified from https://thenounproject.com/icon/shield-5565751/ by Corner Pixel
+
+Kýnan Antos (Gritsilk Games):
+ - hero-silhouette.svg : Licensed to Distribute and Modify within the bounds of the "Foundry-RipCrypt" system.
+
+ARISO:
+ - icons/hourglass.svg (https://thenounproject.com/icon/hourglass-7546736/) : Rights Purchased
+
+Abdulloh Fauzan:
+ - icons/info-circle.svg (https://thenounproject.com/icon/information-4176576/) : Rights Purchased
+
+hanifmuhammad:
+ - icons/plus.svg (https://thenounproject.com/icon/plus-7363257/) : Rights Purchased
+
+QOLBIN SALIIM:
+ - icons/arrow-left.svg (https://thenounproject.com/icon/arrow-1933583/) : Rights Purchased
+ - icons/arrow-right.svg (https://thenounproject.com/icon/arrow-1933581/) : Rights Purchased
+ - icons/arrow-compass.svg (https://thenounproject.com/icon/arrow-2052607/) : Rights Purchased
+
Soetarman Atmodjo:
- - icons/roll.svg : Rights Purchased.
+ - icons/roll.svg (https://thenounproject.com/icon/dice-5195278/) : Rights Purchased
+
+SuperNdre:
+ - icons/edit.svg (https://thenounproject.com/icon/edit-5208207/) : Rights Purchased
+
+YANDI RS:
+ - icons/d8-outline.svg (https://thenounproject.com/icon/d8-7272826/) : Rights Purchased
diff --git a/assets/caster-silhouette.v1.svg b/assets/caster-silhouette.v1.svg
new file mode 100644
index 0000000..9b53fcc
--- /dev/null
+++ b/assets/caster-silhouette.v1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/geist-silhouette.v2.svg b/assets/geist-silhouette.v2.svg
new file mode 100644
index 0000000..deb4cda
--- /dev/null
+++ b/assets/geist-silhouette.v2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/hero-silhouette.svg b/assets/hero-silhouette.svg
new file mode 100644
index 0000000..12e2bb5
--- /dev/null
+++ b/assets/hero-silhouette.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/assets/icons/arrow-compass.svg b/assets/icons/arrow-compass.svg
new file mode 100644
index 0000000..b1e8a40
--- /dev/null
+++ b/assets/icons/arrow-compass.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/arrow-left.svg b/assets/icons/arrow-left.svg
new file mode 100644
index 0000000..e1a347e
--- /dev/null
+++ b/assets/icons/arrow-left.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/arrow-right.svg b/assets/icons/arrow-right.svg
new file mode 100644
index 0000000..a477835
--- /dev/null
+++ b/assets/icons/arrow-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/d8-outline.svg b/assets/icons/d8-outline.svg
new file mode 100644
index 0000000..0346f4c
--- /dev/null
+++ b/assets/icons/d8-outline.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/edit.svg b/assets/icons/edit.svg
new file mode 100644
index 0000000..acae8d6
--- /dev/null
+++ b/assets/icons/edit.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/evil.svg b/assets/icons/evil.svg
new file mode 100644
index 0000000..5d9fb11
--- /dev/null
+++ b/assets/icons/evil.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/assets/icons/hero.svg b/assets/icons/hero.svg
new file mode 100644
index 0000000..55de62b
--- /dev/null
+++ b/assets/icons/hero.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/assets/icons/hourglass.svg b/assets/icons/hourglass.svg
new file mode 100644
index 0000000..64ae5cf
--- /dev/null
+++ b/assets/icons/hourglass.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/info-circle.svg b/assets/icons/info-circle.svg
new file mode 100644
index 0000000..6e14569
--- /dev/null
+++ b/assets/icons/info-circle.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/plus.svg b/assets/icons/plus.svg
new file mode 100644
index 0000000..5e8c131
--- /dev/null
+++ b/assets/icons/plus.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/roll.svg b/assets/icons/roll.svg
index 4d2a61b..51fb7ed 100644
--- a/assets/icons/roll.svg
+++ b/assets/icons/roll.svg
@@ -1,4 +1,4 @@
-