Merge branch 'Roll20:master' into master
@@ -40,14 +40,6 @@ workflows:
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- update_sheet:
|
||||
requires:
|
||||
- get_commit_hash
|
||||
context: char-sheet-app-staging
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- update_sheet:
|
||||
requires:
|
||||
- get_commit_hash
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
name: Charsheets Actions
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
charsheets-actions:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
since_last_remote_commit: true
|
||||
separator: '::'
|
||||
- name: Run sheet actions
|
||||
uses: nick-invision/private-action-loader@v3
|
||||
with:
|
||||
pal-repo-name: Roll20/charsheets-actions
|
||||
pal-repo-token: ${{ secrets.REPO_ACCESS_TOKEN }}
|
||||
file-list: ${{ steps.changed-files.outputs.all_modified_files }}
|
||||
separator: '::'
|
||||
credentials: ${{ secrets.SERVICE_ACCOUNT_KEY }}
|
||||
@@ -0,0 +1,146 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
.env.production
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
@@ -1,24 +0,0 @@
|
||||
Monster sheet
|
||||
- More attacks and damage
|
||||
- Remove repeating variant section
|
||||
- Spells for monsters
|
||||
|
||||
Player sheet
|
||||
- Cleanup curreny gems and layout
|
||||
- Make gems and equipment more responsive
|
||||
- Make spell imports more generic, to avoid fewer copy-paste errors
|
||||
|
||||
Possible NPC sheet
|
||||
- Follower sheet, collapse spells for Animals/Familiars
|
||||
- Add top level button to jump directly to the Follower sheet
|
||||
- More detailed weapons and such for npcs
|
||||
- Remove repeating NPC sections?
|
||||
|
||||
- Structured spell book, which fields for total pages, pages used, and remaining pages.
|
||||
-- Multiple spell books
|
||||
-- A roll button for the number of pages needed
|
||||
-- A roll button for the number of days to write it into the book
|
||||
|
||||
- Armor Class repeating section
|
||||
- Armor Class detailed breakdown
|
||||
- Armor class Slashing/Piercing/Bludgeoning
|
||||
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 175 KiB |
@@ -47,6 +47,11 @@
|
||||
.charsheet input.sheet-maxtext {
|
||||
width: 100px;
|
||||
}
|
||||
.charsheet select.sheet-maxtext-min,
|
||||
.charsheet input.sheet-maxtext-min {
|
||||
min-width: 100px;
|
||||
width: 100%
|
||||
}
|
||||
.charsheet select.sheet-fill,
|
||||
.charsheet input.sheet-fill {
|
||||
width: 112px;
|
||||
@@ -55,10 +60,20 @@
|
||||
.charsheet input.sheet-medium {
|
||||
width: 115px;
|
||||
}
|
||||
.charsheet select.sheet-medium-min,
|
||||
.charsheet input.sheet-medium-min {
|
||||
min-width: 115px;
|
||||
width: 100%;
|
||||
}
|
||||
.charsheet select.sheet-rogue,
|
||||
.charsheet input.sheet-rogue {
|
||||
width: 120px;
|
||||
}
|
||||
.charsheet select.sheet-rogue-min,
|
||||
.charsheet input.sheet-rogue-min {
|
||||
min-width: 120px;
|
||||
width: 100%;
|
||||
}
|
||||
.charsheet select.sheet-spell-half,
|
||||
.charsheet input.sheet-spell-half {
|
||||
width: 125px;
|
||||
@@ -67,10 +82,20 @@
|
||||
.charsheet input.sheet-middle {
|
||||
width: 138px;
|
||||
}
|
||||
.charsheet select.sheet-middle-min,
|
||||
.charsheet input.sheet-middle-min {
|
||||
min-width: 138px;
|
||||
width: 100%;
|
||||
}
|
||||
.charsheet select.sheet-display,
|
||||
.charsheet input.sheet-display {
|
||||
width: 150px;
|
||||
}
|
||||
.charsheet select.sheet-display-min,
|
||||
.charsheet input.sheet-display-min {
|
||||
min-width: 150px;
|
||||
width: 100%
|
||||
}
|
||||
.charsheet select.sheet-length,
|
||||
.charsheet input.sheet-length {
|
||||
width: 170px;
|
||||
@@ -87,6 +112,10 @@
|
||||
.charsheet input.sheet-spell {
|
||||
width: 215px;
|
||||
}
|
||||
.charsheet select.sheet-nonweaponprof,
|
||||
.charsheet input.sheet-nonweaponprof {
|
||||
width: 260px;
|
||||
}
|
||||
.charsheet select.sheet-spell-big,
|
||||
.charsheet input.sheet-spell-big {
|
||||
width: 295px;
|
||||
@@ -101,8 +130,8 @@
|
||||
width: 2.5em;
|
||||
}
|
||||
.charsheet select.sheet-minish,
|
||||
.charsheet .sheet-body input.sheet-minish,
|
||||
.charsheet input.sheet-minish {
|
||||
.charsheet input.sheet-minish,
|
||||
.charsheet .sheet-body input.sheet-minish {
|
||||
width: 3em;
|
||||
}
|
||||
.charsheet select.sheet-short,
|
||||
@@ -113,6 +142,11 @@
|
||||
.charsheet input.sheet-shortish {
|
||||
width: 4em;
|
||||
}
|
||||
.charsheet select.sheet-mediumish,
|
||||
.charsheet input.sheet-mediumish,
|
||||
.charsheet input[type="number"].sheet-mediumish {
|
||||
width: 4.5em;
|
||||
}
|
||||
|
||||
.charsheet select {
|
||||
display: inline-block;
|
||||
@@ -131,6 +165,16 @@
|
||||
min-width: 90%;
|
||||
}
|
||||
|
||||
.charsheet th.sheet-td-dynamic50,
|
||||
.charsheet td.sheet-td-dynamic50 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.charsheet th.sheet-td-dynamic100,
|
||||
.charsheet td.sheet-td-dynamic100 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.charsheet select.sheet-table-dynamic {
|
||||
margin: 0;
|
||||
}
|
||||
@@ -332,7 +376,8 @@ div[class^="sheet-section"] {
|
||||
.charsheet input.sheet-tab81:checked ~ div.sheet-section-weapon-standard,
|
||||
.charsheet input.sheet-tab82:checked ~ div.sheet-section-weapon-player-option,
|
||||
.charsheet input.sheet-tab83:checked ~ div.sheet-section-weapon-player-option-melee,
|
||||
.charsheet input.sheet-tab84:checked ~ div.sheet-section-weapon-player-option-ranged {
|
||||
.charsheet input.sheet-tab84:checked ~ div.sheet-section-weapon-player-option-ranged,
|
||||
.charsheet input.sheet-tab85:checked ~ div.sheet-section-settings-page {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@@ -449,7 +494,8 @@ div[class^="sheet-section"] {
|
||||
.charsheet input.sheet-tab81:checked + span.sheet-tab81,
|
||||
.charsheet input.sheet-tab82:checked + span.sheet-tab82,
|
||||
.charsheet input.sheet-tab83:checked + span.sheet-tab83,
|
||||
.charsheet input.sheet-tab84:checked + span.sheet-tab84 {
|
||||
.charsheet input.sheet-tab84:checked + span.sheet-tab84,
|
||||
.charsheet input.sheet-tab85:checked + span.sheet-tab85 {
|
||||
display: inline-table;
|
||||
background: #ab8b57;
|
||||
color: white;
|
||||
@@ -507,27 +553,36 @@ input.sheet-tab + span::before
|
||||
padding: 0 0 0 0;
|
||||
}
|
||||
|
||||
h2,h3,h4,h5,h6 {
|
||||
line-height:1em;
|
||||
display:inline;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size:.8125rem;
|
||||
color: #000;
|
||||
.charsheet h1,
|
||||
.charsheet h2,
|
||||
.charsheet h3,
|
||||
.charsheet h4,
|
||||
.charsheet h5,
|
||||
.charsheet h6 {
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
/*h2,h3,h4,h5,h6 {*/
|
||||
/* line-height:1em;*/
|
||||
/* display:inline;*/
|
||||
/* font-family: Arial, sans-serif;*/
|
||||
/* font-size:.8125rem;*/
|
||||
/* color: #000;*/
|
||||
/*}*/
|
||||
|
||||
h1 {
|
||||
width: 100%;
|
||||
background-color: #FFF;
|
||||
color: #000;
|
||||
padding:.2em 0 0 0;
|
||||
min-height: 1em;
|
||||
margin: 0 0 .5em 0;
|
||||
font-size:.8125rem;
|
||||
line-height:1.4em;
|
||||
display:block;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
/*h1 {*/
|
||||
/* width: 100%;*/
|
||||
/* background-color: #FFF;*/
|
||||
/* color: #000;*/
|
||||
/* padding:.2em 0 0 0;*/
|
||||
/* min-height: 1em;*/
|
||||
/* margin: 0 0 .5em 0;*/
|
||||
/* font-size:.8125rem;*/
|
||||
/* line-height:1.4em;*/
|
||||
/* display:block;*/
|
||||
/* text-align:center;*/
|
||||
/*}*/
|
||||
|
||||
.sheet-small-label1 {
|
||||
display: inline-block;
|
||||
@@ -781,7 +836,7 @@ button {
|
||||
|
||||
.charsheet,
|
||||
.charsheet button:hover {
|
||||
background-image: url("https://www.commentnation.com/backgrounds/images/parchment_paper_seamless_pattern.jpg");
|
||||
background-image: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/background-parchment_paper_seamless_pattern.jpg");
|
||||
}
|
||||
|
||||
/*/ Styles for 2ESheet rolltemplates /*/
|
||||
@@ -791,6 +846,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack div.sheet-template-container,
|
||||
.sheet-rolltemplate-2Espell div.sheet-template-container,
|
||||
.sheet-rolltemplate-2Echeck div.sheet-template-container,
|
||||
.sheet-rolltemplate-2Egrenademiss div.sheet-template-container,
|
||||
.sheet-rolltemplate-2Esave div.sheet-template-container {
|
||||
border: none;
|
||||
text-align: left;
|
||||
@@ -800,6 +856,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack th.sheet-template-title1,
|
||||
.sheet-rolltemplate-2Espell th.sheet-template-title1,
|
||||
.sheet-rolltemplate-2Echeck th.sheet-template-title1,
|
||||
.sheet-rolltemplate-2Egrenademiss th.sheet-template-title1,
|
||||
.sheet-rolltemplate-2Esave th.sheet-template-title1 {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
@@ -816,6 +873,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack th.sheet-template-title2,
|
||||
.sheet-rolltemplate-2Espell th.sheet-template-title2,
|
||||
.sheet-rolltemplate-2Echeck th.sheet-template-title2,
|
||||
.sheet-rolltemplate-2Egrenademiss th.sheet-template-title2,
|
||||
.sheet-rolltemplate-2Esave th.sheet-template-title2 {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
@@ -832,6 +890,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack th.sheet-template-subtitle1,
|
||||
.sheet-rolltemplate-2Espell th.sheet-template-subtitle1,
|
||||
.sheet-rolltemplate-2Echeck th.sheet-template-subtitle1,
|
||||
.sheet-rolltemplate-2Egrenademiss th.sheet-template-subtitle1,
|
||||
.sheet-rolltemplate-2Esave th.sheet-template-subtitle1 {
|
||||
font-size: 8pt;
|
||||
font-weight: normal;
|
||||
@@ -849,6 +908,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack th.sheet-template-subtitle2,
|
||||
.sheet-rolltemplate-2Espell th.sheet-template-subtitle2,
|
||||
.sheet-rolltemplate-2Echeck th.sheet-template-subtitle2,
|
||||
.sheet-rolltemplate-2Egrenademiss th.sheet-template-subtitle2,
|
||||
.sheet-rolltemplate-2Esave th.sheet-template-subtitle2 {
|
||||
font-size: 8pt;
|
||||
font-style: italic;
|
||||
@@ -866,6 +926,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack table,
|
||||
.sheet-rolltemplate-2Espell table,
|
||||
.sheet-rolltemplate-2Echeck table,
|
||||
.sheet-rolltemplate-2Egrenademiss table,
|
||||
.sheet-rolltemplate-2Esave table {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -873,12 +934,14 @@ button {
|
||||
.sheet-rolltemplate-2Edefault .sheet-template-body tr:nth-child(even),
|
||||
.sheet-rolltemplate-2Espell .sheet-template-body tr:nth-child(even),
|
||||
.sheet-rolltemplate-2Echeck .sheet-template-body tr:nth-child(even),
|
||||
.sheet-rolltemplate-2Egrenademiss .sheet-template-body tr:nth-child(even),
|
||||
.sheet-rolltemplate-2Esave .sheet-template-body tr:nth-child(even) {
|
||||
background-color: #e0e0e0;
|
||||
}
|
||||
.sheet-rolltemplate-2Edefault .sheet-template-body tr:nth-child(odd),
|
||||
.sheet-rolltemplate-2Espell .sheet-template-body tr:nth-child(odd),
|
||||
.sheet-rolltemplate-2Echeck .sheet-template-body tr:nth-child(odd),
|
||||
.sheet-rolltemplate-2Egrenademiss .sheet-template-body tr:nth-child(odd),
|
||||
.sheet-rolltemplate-2Esave .sheet-template-body tr:nth-child(odd) {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
@@ -887,6 +950,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack div.sheet-template-body,
|
||||
.sheet-rolltemplate-2Espell div.sheet-template-body,
|
||||
.sheet-rolltemplate-2Echeck div.sheet-template-body,
|
||||
.sheet-rolltemplate-2Egrenademiss div.sheet-template-body,
|
||||
.sheet-rolltemplate-2Esave div.sheet-template-body {
|
||||
border: 1px solid black;
|
||||
border-bottom-right-radius: 8px;
|
||||
@@ -900,6 +964,7 @@ button {
|
||||
.sheet-rolltemplate-2Eattack div.sheet-attack-head,
|
||||
.sheet-rolltemplate-2Espell div.sheet-spell-head,
|
||||
.sheet-rolltemplate-2Echeck div.sheet-check-head,
|
||||
.sheet-rolltemplate-2Egrenademiss div.sheet-grenade-head,
|
||||
.sheet-rolltemplate-2Esave div.sheet-save-head {
|
||||
border: 1px solid #000000;
|
||||
border-top-right-radius: 8px;
|
||||
@@ -973,7 +1038,7 @@ button {
|
||||
|
||||
.sheet-rolltemplate-2Eattack td.sheet-attack-c2 {
|
||||
position: relative;
|
||||
background-image: url("http://i.imgur.com/rFM5RnH.png");
|
||||
background-image: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/ac.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 50px 50px;
|
||||
background-position: center;
|
||||
@@ -983,7 +1048,7 @@ button {
|
||||
|
||||
.sheet-rolltemplate-2Eattack td.sheet-attack-c3 {
|
||||
position: relative;
|
||||
background-image: url("http://i.imgur.com/QFPPKuq.png");
|
||||
background-image: url("https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/crit.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 50px 50px;
|
||||
background-position: center;
|
||||
@@ -1147,60 +1212,13 @@ button {
|
||||
background: #f26f2e;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c1 {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
text-transform: capitalize;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
font-family: "verdana", sans-serif;
|
||||
border: none;
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c2 {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
text-transform: capitalize;
|
||||
text-align: center;
|
||||
font-family: "verdana", sans-serif;
|
||||
border: none;
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c3 {
|
||||
background-color: #093a01;
|
||||
border: none;
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
font-family: "verdana", sans-serif;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c4 {
|
||||
background-color: #a01616;
|
||||
border: none;
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
font-family: "verdana", sans-serif;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Echeck div.sheet-check-head {
|
||||
background: #512E5F;
|
||||
background: #512E5F;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c1 {
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c1,
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c1,
|
||||
.sheet-rolltemplate-2Egrenademiss td.sheet-grenade-c1 {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
text-transform: capitalize;
|
||||
@@ -1212,7 +1230,9 @@ button {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c2 {
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c2,
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c2,
|
||||
.sheet-rolltemplate-2Egrenademiss td.sheet-grenade-c2 {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
text-transform: capitalize;
|
||||
@@ -1223,7 +1243,9 @@ button {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c3 {
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c3,
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c3,
|
||||
.sheet-rolltemplate-2Egrenademiss td.sheet-grenade-c3 {
|
||||
background-color: #093a01;
|
||||
border: none;
|
||||
font-size: 12pt;
|
||||
@@ -1236,7 +1258,9 @@ button {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c4 {
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c4,
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c4,
|
||||
.sheet-rolltemplate-2Egrenademiss td.sheet-grenade-c4 {
|
||||
background-color: #a01616;
|
||||
border: none;
|
||||
font-size: 12pt;
|
||||
@@ -1249,6 +1273,42 @@ button {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Esave td.sheet-save-c5,
|
||||
.sheet-rolltemplate-2Echeck td.sheet-check-c5,
|
||||
.sheet-rolltemplate-2Egrenademiss td.sheet-grenade-c5 {
|
||||
background-color: #001BB5;
|
||||
border: none;
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
font-family: "verdana", sans-serif;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*/ Styles for the 2Egrenade Template /*/
|
||||
.sheet-rolltemplate-2Egrenademiss div.sheet-grenade-head {
|
||||
background: #B7A64E;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-2Egrenademiss .sheet-hit-text {
|
||||
font-size: 10pt;
|
||||
}
|
||||
.sheet-rolltemplate-2Egrenademiss .sheet-miss-text {
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
/*/ Overwrite inline roll styling /*/
|
||||
.sheet-rolltemplate-2Egrenademiss .sheet-ignore-inlineroll .inlinerollresult {
|
||||
background-color: inherit;
|
||||
border: inherit;
|
||||
padding: 0;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.sheet-inline {
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -1276,7 +1336,17 @@ table.sheet-default-header-every-third-column td:nth-child(3n+1),
|
||||
|
||||
.sheet-centering,
|
||||
.sheet-centering-padding-2,
|
||||
.sheet-centering-padding-5 {
|
||||
.sheet-centering-padding-5,
|
||||
table.sheet-centering-column1 td:nth-child(1),
|
||||
table.sheet-centering-column1 th:nth-child(1),
|
||||
table.sheet-centering-column2 td:nth-child(2),
|
||||
table.sheet-centering-column2 th:nth-child(2),
|
||||
table.sheet-centering-column3 td:nth-child(3),
|
||||
table.sheet-centering-column3 th:nth-child(3),
|
||||
table.sheet-centering-padding-5-column2 th:nth-child(2),
|
||||
table.sheet-centering-padding-5-column2 td:nth-child(2),
|
||||
table.sheet-centering-padding-5-column3 th:nth-child(3),
|
||||
table.sheet-centering-padding-5-column3 td:nth-child(3) {
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
@@ -1299,6 +1369,10 @@ table.sheet-default-header-every-third-column td:nth-child(3n+1),
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
table.sheet-centering-padding-5-column2 th:nth-child(2),
|
||||
table.sheet-centering-padding-5-column2 td:nth-child(2),
|
||||
table.sheet-centering-padding-5-column3 th:nth-child(3),
|
||||
table.sheet-centering-padding-5-column3 td:nth-child(3),
|
||||
.sheet-centering-padding-5 {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
@@ -0,0 +1,12 @@
|
||||
const pug = require('pug');
|
||||
const fs = require('fs');
|
||||
console.log('---- Generating spells datalists ----');
|
||||
const spellsJs = ['wizardSpells.js', 'priestSpells.js'];
|
||||
let html = '';
|
||||
spellsJs.forEach(jsFile => {
|
||||
console.log(jsFile);
|
||||
const spells = require(`../javascript/${jsFile}`);
|
||||
html += pug.renderFile('../pug/spellsDatalists.pug', {pretty: true, data: spells});
|
||||
});
|
||||
fs.writeFileSync('../html/spellsDatalists.html', html);
|
||||
console.log('');
|
||||
@@ -1,9 +1,9 @@
|
||||
& 'D:\git\roll20-character-sheets\AD&D 2E Revised\build\sanitizeFiles.ps1'
|
||||
& 'D:\git\roll20-character-sheets\ADnD 2E Revised\build\sanitizeFiles.ps1'
|
||||
|
||||
"---- Combining files ----"
|
||||
$inputFile = 'D:\git\roll20-character-sheets\AD&D 2E Revised\html\2ESheet-base.html'
|
||||
$sourceFolder = 'D:\git\roll20-character-sheets\AD&D 2E Revised'
|
||||
$outputFile = 'D:\git\roll20-character-sheets\AD&D 2E Revised\2ESheet.html'
|
||||
$inputFile = 'D:\git\roll20-character-sheets\ADnD 2E Revised\html\2ESheet-base.html'
|
||||
$sourceFolder = 'D:\git\roll20-character-sheets\ADnD 2E Revised'
|
||||
$outputFile = 'D:\git\roll20-character-sheets\ADnD 2E Revised\2ESheet.html'
|
||||
|
||||
$replaceConstant = '#REPLACE{0}#'
|
||||
|
||||
@@ -25,12 +25,17 @@ $inserts | ForEach-Object {
|
||||
}
|
||||
}
|
||||
$rawContent = $fileContent -join "`n"
|
||||
$replaces = $split[2..100];
|
||||
for ($i=0; $i -lt $replaces.Length; $i++) {
|
||||
$replace = $replaceConstant -f $i;
|
||||
$rawContent = $rawContent.Replace($replace, $replaces[$i])
|
||||
$replaceValues = $split[2..100];
|
||||
for ($i=0; $i -lt $replaceValues.Length; $i++) {
|
||||
$replaceKey = $replaceConstant -f $i;
|
||||
$replaceValue = $replaceValues[$i];
|
||||
if ($replaceValue.StartsWith("repeating")) {
|
||||
$replaceValue = $replaceValue.Replace("-", "_") #Allows for repeating section inserts
|
||||
}
|
||||
$rawContent = $rawContent.Replace($replaceKey, $replaceValue)
|
||||
}
|
||||
$rawContent = $rawContent -replace "\#REPLACE\d+\#", ""
|
||||
$rawContent = $rawContent -replace "\r?\nmodule\.exports.*;", ""
|
||||
|
||||
$regex = "^" + [Regex]::Escape($_.Line) + "$"
|
||||
$content = $content -replace $regex, $rawContent
|
||||
@@ -1,5 +1,20 @@
|
||||
$htmlFolder = 'D:\git\roll20-character-sheets\AD&D 2E Revised\html'
|
||||
$javascriptFolder = 'D:\git\roll20-character-sheets\AD&D 2E Revised\javascript'
|
||||
$htmlFolder = 'D:\git\roll20-character-sheets\ADnD 2E Revised\html'
|
||||
$javascriptFolder = 'D:\git\roll20-character-sheets\ADnD 2E Revised\javascript'
|
||||
|
||||
"---- Sanitize Javascript files ----"
|
||||
Get-ChildItem $javascriptFolder | ForEach-Object {
|
||||
$_.Name
|
||||
$content = Get-Content -Raw $_.FullName
|
||||
|
||||
$replace = $content -replace [Regex]::Escape("\\"), "\"
|
||||
$replace = $replace -replace [Regex]::Escape(" \n"), "\n"
|
||||
if ($replace -cne $content) {
|
||||
$replace | Set-Content -NoNewline -Path $_.FullName
|
||||
}
|
||||
}
|
||||
""
|
||||
|
||||
node buildPug.js
|
||||
|
||||
"---- Sanitize HTML files ----"
|
||||
Get-ChildItem $htmlFolder | ForEach-Object {
|
||||
@@ -13,16 +28,4 @@ Get-ChildItem $htmlFolder | ForEach-Object {
|
||||
}
|
||||
}
|
||||
|
||||
""
|
||||
"---- Sanitize Javascript files ----"
|
||||
Get-ChildItem $javascriptFolder | ForEach-Object {
|
||||
$_.Name
|
||||
$content = Get-Content -Raw $_.FullName
|
||||
|
||||
$replace = $content -replace [Regex]::Escape("\\"), "\"
|
||||
$replace = $replace -replace [Regex]::Escape(" \n"), "\n"
|
||||
if ($replace -cne $content) {
|
||||
$replace | Set-Content -NoNewline -Path $_.FullName
|
||||
}
|
||||
}
|
||||
""
|
||||
@@ -0,0 +1,30 @@
|
||||
Possible NPC sheet
|
||||
- Follower sheet, collapse spells for Animals/Familiars
|
||||
- Add top level button to jump directly to the Follower sheet
|
||||
- More detailed weapons and such for npcs
|
||||
- Remove repeating NPC sections?
|
||||
|
||||
- Structured spell book, which fields for total pages, pages used, and remaining pages.
|
||||
-- Multiple spell books
|
||||
-- A roll button for the number of pages needed
|
||||
-- A roll button for the number of days to write it into the book
|
||||
|
||||
- Armor Class detailed breakdown
|
||||
- Armor class Slashing/Piercing/Bludgeoning
|
||||
|
||||
Follower classes
|
||||
|
||||
AD&D 2E Book release order
|
||||
The Complete Fighter's Handbook December 1989
|
||||
The Complete Thief's Handbook December 1989
|
||||
The Complete Priest's Handbook May 1990
|
||||
The Complete Wizard's Handbook June 1990
|
||||
Tome of Magic May 1991
|
||||
The Complete Bard's Handbook March 1992
|
||||
The Complete Ranger's Handbook December 1993
|
||||
The Complete Paladin's Handbook May 1994
|
||||
The Complete Druid's Handbook August 1994
|
||||
The Complete Book of Necromancers March 1995
|
||||
Player's Option: Combat & Tactics June 1995
|
||||
Player's Option: Skills & Powers July 1995
|
||||
Player's Option: Spells & Magic May 1996
|
||||
@@ -0,0 +1,499 @@
|
||||
<!-- Data lists -->
|
||||
<datalist id="ability-scores">
|
||||
<option value="@{Strength}"></option>
|
||||
<option value="@{Dexterity}"></option>
|
||||
<option value="@{Constitution}"></option>
|
||||
<option value="@{Intelligence}"></option>
|
||||
<option value="@{Wisdom}"></option>
|
||||
<option value="@{Charisma}"></option>
|
||||
</datalist>
|
||||
<datalist id="races">
|
||||
<option value="Dwarf"></option>
|
||||
<option value="Elf"></option>
|
||||
<option value="Gnome"></option>
|
||||
<option value="Half-Elf"></option>
|
||||
<option value="Halfling"></option>
|
||||
<option value="Human"></option>
|
||||
</datalist>
|
||||
<datalist id="class-groups">
|
||||
<option value="Warrior"></option>
|
||||
<option value="Wizard"></option>
|
||||
<option value="Priest"></option>
|
||||
<option value="Rogue"></option>
|
||||
<option value="Psion"></option>
|
||||
</datalist>
|
||||
<datalist id="classes">
|
||||
<option value="Fighter">Warrior</option>
|
||||
<option value="Paladin">Warrior</option>
|
||||
<option value="Ranger">Warrior</option>
|
||||
<option value="Mage">Wizard</option>
|
||||
<option value="Illusionist">Wizard</option>
|
||||
<option value="Cleric">Priest</option>
|
||||
<option value="Druid">Priest</option>
|
||||
<option value="Thief">Rogue</option>
|
||||
<option value="Bard">Rogue</option>
|
||||
</datalist>
|
||||
<datalist id="player-movement">
|
||||
<option value="6">Dwarf/Gnome/Halfling</option>
|
||||
<option value="12">Human/Elf/Half-elf</option>
|
||||
</datalist>
|
||||
<datalist id="mount-movement">
|
||||
<option value="12">Draft Horse/Pony/Mule</option>
|
||||
<option value="15">Heavy Horse</option>
|
||||
<option value="18">Medium Horse</option>
|
||||
<option value="24">Light/Wild/Riding Horse</option>
|
||||
</datalist>
|
||||
<datalist id="level-select">
|
||||
<option value="@{level-class1}"></option>
|
||||
<option value="@{level-class2}"></option>
|
||||
<option value="@{level-class3}"></option>
|
||||
<option value="@{level-class4}"></option>
|
||||
<option value="@{level-class5}"></option>
|
||||
</datalist>
|
||||
<datalist id="rogue-backstab">
|
||||
<option value="2">Level 1-4</option>
|
||||
<option value="3">Level 5-8</option>
|
||||
<option value="4">Level 9-12</option>
|
||||
<option value="5">Level 13+</option>
|
||||
</datalist>
|
||||
<datalist id="rogue-skill-macros">
|
||||
<option value="30+(30*@{level-class1})">Thief</option>
|
||||
<option value="5+(15*@{level-class1})">Bard</option>
|
||||
</datalist>
|
||||
<datalist id="rogue-armor">
|
||||
<option value="Padded Armor">Thief/Bard</option>
|
||||
<option value="Studded Leather">Thief/Bard</option>
|
||||
<option value="Elven Chain Mail">Thief/Bard</option>
|
||||
<option value="Ring Mail">Bard</option>
|
||||
<option value="Hide Armor">Bard</option>
|
||||
<option value="Brigandine Armor">Bard</option>
|
||||
<option value="Scale Mail">Bard</option>
|
||||
<option value="Chain Mail">Bard</option>
|
||||
<option value="Hide Armor (Thief Disguise)"></option>
|
||||
<option value="Ring Mail (Thief Disguise)"></option>
|
||||
<option value="Chain Mail (Thief Disguise)"></option>
|
||||
<option value="Brigandine (Thief Disguise)"></option>
|
||||
<option value="Scale Mail (Thief Disguise)"></option>
|
||||
<option value="Splint Mail (Disguise)"></option>
|
||||
<option value="Banded Armor (Disguise)"></option>
|
||||
<option value="Plate Mail (Disguise)"></option>
|
||||
<option value="Bronze Plate Mail (Disguise)"></option>
|
||||
<option value="Field Plate (Disguise)"></option>
|
||||
<option value="Full Plate (Disguise)"></option>
|
||||
</datalist>
|
||||
<datalist id="weapprof-macros">
|
||||
<option value="(4+floor(@{level-class1}/3))">Warrior</option>
|
||||
<option value="(1+floor(@{level-class1}/6))">Wizard</option>
|
||||
<option value="(2+floor(@{level-class1}/4))">Priest</option>
|
||||
<option value="(2+floor(@{level-class1}/4))">Rogue</option>
|
||||
</datalist>
|
||||
<datalist id="weapprof-penalty">
|
||||
<option value="-2">Warrior</option>
|
||||
<option value="-5">Wizard</option>
|
||||
<option value="-3">Priest</option>
|
||||
<option value="-3">Rogue</option>
|
||||
</datalist>
|
||||
<datalist id="prof-macros">
|
||||
<option value="(3+floor(@{level-class1}/3)+@{intlang})">Warrior</option>
|
||||
<option value="(4+floor(@{level-class1}/3)+@{intlang})">Wizard</option>
|
||||
<option value="(4+floor(@{level-class1}/3)+@{intlang})">Priest</option>
|
||||
<option value="(3+floor(@{level-class1}/4)+@{intlang})">Rogue</option>
|
||||
</datalist>
|
||||
<datalist id="base-thac0">
|
||||
<option value="20"></option>
|
||||
<option value="(21-@{level-class1})">Warrior</option>
|
||||
<option value="(21-ceil(@{level-class1}/3))">Wizard</option>
|
||||
<option value="(22-(ceil(@{level-class1}/3)*2))">Priest</option>
|
||||
<option value="(21-ceil(@{level-class1}/2))">Rogue</option>
|
||||
<option value="(21-ceil(@{level-class1}/2))">Psionic</option>
|
||||
</datalist>
|
||||
<datalist id="weapon-proficiencies">
|
||||
<option value="Arquebus"></option>
|
||||
<option value="Battle axe"></option>
|
||||
<option value="Blowgun"></option>
|
||||
<option value="Short bow"></option>
|
||||
<option value="Long bow"></option>
|
||||
<option value="Composite short bow"></option>
|
||||
<option value="Composite long bow"></option>
|
||||
<option value="Club"></option>
|
||||
<option value="Hand crossbow"></option>
|
||||
<option value="Light crossbow"></option>
|
||||
<option value="Heavy crossbow"></option>
|
||||
<option value="Dagger / Dirk"></option>
|
||||
<option value="Dart"></option>
|
||||
<option value="Footman's flail"></option>
|
||||
<option value="Footman's mace"></option>
|
||||
<option value="Footman's pick"></option>
|
||||
<option value="Hand / Throwing axe"></option>
|
||||
<option value="Harpoon"></option>
|
||||
<option value="Horseman's flail"></option>
|
||||
<option value="Horseman's mace"></option>
|
||||
<option value="Horseman's pick"></option>
|
||||
<option value="Javelin"></option>
|
||||
<option value="Knife"></option>
|
||||
<option value="Heavy horse lance"></option>
|
||||
<option value="Light horse lance"></option>
|
||||
<option value="Jousting lance"></option>
|
||||
<option value="Medium horse lance"></option>
|
||||
<option value="Mancatcher"></option>
|
||||
<option value="Morning star"></option>
|
||||
<option value="Awl pike">Polearm</option>
|
||||
<option value="Bardiche">Polearm</option>
|
||||
<option value="Bec de corbin">Polearm</option>
|
||||
<option value="Bill-guisarme">Polearm</option>
|
||||
<option value="Fauchard">Polearm</option>
|
||||
<option value="Fauchard-fork">Polearm</option>
|
||||
<option value="Glaive">Polearm</option>
|
||||
<option value="Glaive-guisarme">Polearm</option>
|
||||
<option value="Guisarme">Polearm</option>
|
||||
<option value="Guisarme-voulge">Polearm</option>
|
||||
<option value="Halberd">Polearm</option>
|
||||
<option value="Hook fauchard">Polearm</option>
|
||||
<option value="Lucern hammer">Polearm</option>
|
||||
<option value="Military fork">Polearm</option>
|
||||
<option value="Partisan">Polearm</option>
|
||||
<option value="Ranseur">Polearm</option>
|
||||
<option value="Spetum">Polearm</option>
|
||||
<option value="Voulge">Polearm</option>
|
||||
<option value="Quarterstaff"></option>
|
||||
<option value="Scourge"></option>
|
||||
<option value="Sickle"></option>
|
||||
<option value="Sling"></option>
|
||||
<option value="Spear"></option>
|
||||
<option value="Staff sling"></option>
|
||||
<option value="Bastard sword"></option>
|
||||
<option value="Broad sword"></option>
|
||||
<option value="Khopesh">Sword</option>
|
||||
<option value="Long sword"></option>
|
||||
<option value="Scimitar">Sword</option>
|
||||
<option value="Short sword"></option>
|
||||
<option value="Two-handed sword"></option>
|
||||
<option value="Trident"></option>
|
||||
<option value="Warhammer"></option>
|
||||
<option value="Whip"></option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="nonweapon-proficiencies">
|
||||
<option value="Agriculture"></option>
|
||||
<option value="Animal Handling"></option>
|
||||
<option value="Animal Training"></option>
|
||||
<option value="Artistic Ability"></option>
|
||||
<option value="Blacksmithing"></option>
|
||||
<option value="Brewing"></option>
|
||||
<option value="Carpentry"></option>
|
||||
<option value="Cobbling"></option>
|
||||
<option value="Cooking"></option>
|
||||
<option value="Dancing"></option>
|
||||
<option value="Direction Sense"></option>
|
||||
<option value="Etiquette"></option>
|
||||
<option value="Fire-building"></option>
|
||||
<option value="Fishing"></option>
|
||||
<option value="Heraldry"></option>
|
||||
<option value="Languages, Modern"></option>
|
||||
<option value="Leatherworking"></option>
|
||||
<option value="Mining"></option>
|
||||
<option value="Pottery"></option>
|
||||
<option value="Riding, Airborne"></option>
|
||||
<option value="Riding, Land-based"></option>
|
||||
<option value="Rope Use"></option>
|
||||
<option value="Seamanship"></option>
|
||||
<option value="Seamstress/Tailor"></option>
|
||||
<option value="Singing"></option>
|
||||
<option value="Stonemasonry"></option>
|
||||
<option value="Swimming"></option>
|
||||
<option value="Weather Sense"></option>
|
||||
<option value="Weaving"></option>
|
||||
|
||||
<option value="Ancient History">Priest/Rogue/Wizard</option>
|
||||
<option value="Animal Lore">Warrior</option>
|
||||
<option value="Appraising">Rogue</option>
|
||||
<option value="Armorer">Warrior</option>
|
||||
<option value="Astrology">Priest/Wizard</option>
|
||||
<option value="Blind-fighting">Rogue/Warrior</option>
|
||||
<option value="Bowyer/Fletcher">Warrior</option>
|
||||
<option value="Charioteering">Warrior</option>
|
||||
<option value="Disguise">Rogue</option>
|
||||
<option value="Endurance">Warrior</option>
|
||||
<option value="Engineering">Priest/Wizard</option>
|
||||
<option value="Forgery">Rogue</option>
|
||||
<option value="Gaming">Rogue/Warrior</option>
|
||||
<option value="Gem Cutting">Rogue/Wizard</option>
|
||||
<option value="Healing">Priest</option>
|
||||
<option value="Herbalism">Priest/Wizard</option>
|
||||
<option value="Hunting">Warrior</option>
|
||||
<option value="Juggling">Rogue</option>
|
||||
<option value="Jumping">Rogue</option>
|
||||
<option value="Languages, Ancient">Priest/Wizard</option>
|
||||
<option value="Local History">Priest/Rogue</option>
|
||||
<option value="Mountaineering">Warrior</option>
|
||||
<option value="Musical Instrument">Priest/Rogue</option>
|
||||
<option value="Navigation">Priest/Warrior/Wizard</option>
|
||||
<option value="Reading Lips">Rogue</option>
|
||||
<option value="Reading/Writing">Priest/Wizard</option>
|
||||
<option value="Religion">Priest/Wizard</option>
|
||||
<option value="Running">Warrior</option>
|
||||
<option value="Set Snares">Rogue/Warrior</option>
|
||||
<option value="Spellcraft">Priest/Wizard</option>
|
||||
<option value="Survival">Warrior</option>
|
||||
<option value="Tightrope Walking">Rogue</option>
|
||||
<option value="Tracking">Warrior</option>
|
||||
<option value="Tumbling">Rogue</option>
|
||||
<option value="Ventriloquism">Rogue</option>
|
||||
<option value="Weaponsmithing">Warrior</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="languages">
|
||||
<option value="Common">Human/Dwarf/Elf/Gnome/Half-Elf/Halfling</option>
|
||||
<option value="Dwarven">Dwarf/Gnome/Halfling</option>
|
||||
<option value="Elvish">Elf/Half-Elf/Halfling</option>
|
||||
<option value="Gnome">Dwarf/Elf/Gnome/Half-Elf/Halfling</option>
|
||||
<option value="Halfling">Elf/Gnome/Half-Elf/Halfling</option>
|
||||
<option value="Gnoll">Elf/Half-Elf</option>
|
||||
<option value="Goblin">Dwarf/Elf/Gnome/Half-Elf/Halfling</option>
|
||||
<option value="Hobgoblin">Elf/Half-Elf</option>
|
||||
<option value="Kobold">Dwarf/Gnome</option>
|
||||
<option value="Orc">Dwarf/Elf//Half-Elf/Halfling</option>
|
||||
<option value="Common Burrowing mammals">Gnome</option>
|
||||
<option value="Druidic">Druid</option>
|
||||
<option value="Centaurs">Druid</option>
|
||||
<option value="Dryads">Druid</option>
|
||||
<option value="Fauns">Druid</option>
|
||||
<option value="Dragons">Druid</option>
|
||||
<option value="Giants">Druid</option>
|
||||
<option value="Lizard men">Druid</option>
|
||||
<option value="Manticores">Druid</option>
|
||||
<option value="Nixies">Druid</option>
|
||||
<option value="Pixies">Druid</option>
|
||||
<option value="Sprites">Druid</option>
|
||||
<option value="Treants">Druid</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="melee-weapons">
|
||||
<option value="Battle axe"></option>
|
||||
<option value="Club"></option>
|
||||
<option value="Dagger"></option>
|
||||
<option value="Dirk"></option>
|
||||
<option value="Dart"></option>
|
||||
<option value="Footman's flail"></option>
|
||||
<option value="Footman's mace"></option>
|
||||
<option value="Footman's pick"></option>
|
||||
<option value="Hand axe"></option>
|
||||
<option value="Harpoon"></option>
|
||||
<option value="Horseman's flail"></option>
|
||||
<option value="Horseman's mace"></option>
|
||||
<option value="Horseman's pick"></option>
|
||||
<option value="Javelin"></option>
|
||||
<option value="Knife"></option>
|
||||
<option value="Heavy horse lance"></option>
|
||||
<option value="Light horse lance"></option>
|
||||
<option value="Jousting lance"></option>
|
||||
<option value="Medium horse lance"></option>
|
||||
<option value="Mancatcher"></option>
|
||||
<option value="Morning star"></option>
|
||||
<option value="Awl pike">Polearm</option>
|
||||
<option value="Bardiche">Polearm</option>
|
||||
<option value="Bec de corbin">Polearm</option>
|
||||
<option value="Bill-guisarme">Polearm</option>
|
||||
<option value="Fauchard">Polearm</option>
|
||||
<option value="Fauchard-fork">Polearm</option>
|
||||
<option value="Glaive">Polearm</option>
|
||||
<option value="Glaive-guisarme">Polearm</option>
|
||||
<option value="Guisarme">Polearm</option>
|
||||
<option value="Guisarme-voulge">Polearm</option>
|
||||
<option value="Halberd">Polearm</option>
|
||||
<option value="Hook fauchard">Polearm</option>
|
||||
<option value="Lucern hammer">Polearm</option>
|
||||
<option value="Military fork">Polearm</option>
|
||||
<option value="Partisan">Polearm</option>
|
||||
<option value="Ranseur">Polearm</option>
|
||||
<option value="Spetum">Polearm</option>
|
||||
<option value="Voulge">Polearm</option>
|
||||
<option value="Quarterstaff"></option>
|
||||
<option value="Scourge"></option>
|
||||
<option value="Sickle"></option>
|
||||
<option value="Spear"></option>
|
||||
<option value="Bastard sword (One-handed)"></option>
|
||||
<option value="Bastard sword (Two-handed)"></option>
|
||||
<option value="Broad sword"></option>
|
||||
<option value="Khopesh">Sword</option>
|
||||
<option value="Long sword"></option>
|
||||
<option value="Scimitar">Sword</option>
|
||||
<option value="Short sword"></option>
|
||||
<option value="Two-handed sword"></option>
|
||||
<option value="Trident"></option>
|
||||
<option value="Warhammer"></option>
|
||||
<option value="Whip"></option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="ranged-weapons">
|
||||
<option value="Arquebus"></option>
|
||||
<option value="Blowgun (Barbed Dart)"></option>
|
||||
<option value="Blowgun (Needle)"></option>
|
||||
<option value="Short bow (Flight arrow)"></option>
|
||||
<option value="Long bow (Flight arrow)"></option>
|
||||
<option value="Long bow (Sheaf arrow)"></option>
|
||||
<option value="Composite short bow (Flight arrow)"></option>
|
||||
<option value="Composite long bow (Flight arrow)"></option>
|
||||
<option value="Composite long bow (Sheaf arrow)"></option>
|
||||
<option value="Club"></option>
|
||||
<option value="Hand crossbow"></option>
|
||||
<option value="Light crossbow"></option>
|
||||
<option value="Heavy crossbow"></option>
|
||||
<option value="Dagger"></option>
|
||||
<option value="Dirk"></option>
|
||||
<option value="Dart"></option>
|
||||
<option value="Hand axe"></option>
|
||||
<option value="Harpoon"></option>
|
||||
<option value="Javelin"></option>
|
||||
<option value="Knife"></option>
|
||||
<option value="Sling (Bullet)"></option>
|
||||
<option value="Sling (Stone)"></option>
|
||||
<option value="Spear"></option>
|
||||
<option value="Staff sling (Bullet)"></option>
|
||||
<option value="Staff sling (Stone)"></option>
|
||||
<option value="Warhammer"></option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="all-weapons">
|
||||
<option value="Arquebus"></option>
|
||||
<option value="Battle axe"></option>
|
||||
<option value="Blowgun (Barbed Dart)"></option>
|
||||
<option value="Blowgun (Needle)"></option>
|
||||
<option value="Short bow (Flight arrow)"></option>
|
||||
<option value="Long bow (Flight arrow)"></option>
|
||||
<option value="Long bow (Sheaf arrow)"></option>
|
||||
<option value="Composite short bow (Flight arrow)"></option>
|
||||
<option value="Composite long bow (Flight arrow)"></option>
|
||||
<option value="Composite long bow (Sheaf arrow)"></option>
|
||||
<option value="Club"></option>
|
||||
<option value="Hand crossbow"></option>
|
||||
<option value="Light crossbow"></option>
|
||||
<option value="Heavy crossbow"></option>
|
||||
<option value="Dagger"></option>
|
||||
<option value="Dirk"></option>
|
||||
<option value="Dart"></option>
|
||||
<option value="Footman's flail"></option>
|
||||
<option value="Footman's mace"></option>
|
||||
<option value="Footman's pick"></option>
|
||||
<option value="Hand axe"></option>
|
||||
<option value="Harpoon"></option>
|
||||
<option value="Horseman's flail"></option>
|
||||
<option value="Horseman's mace"></option>
|
||||
<option value="Horseman's pick"></option>
|
||||
<option value="Javelin"></option>
|
||||
<option value="Knife"></option>
|
||||
<option value="Heavy horse lance"></option>
|
||||
<option value="Light horse lance"></option>
|
||||
<option value="Jousting lance"></option>
|
||||
<option value="Medium horse lance"></option>
|
||||
<option value="Mancatcher"></option>
|
||||
<option value="Morning star"></option>
|
||||
<option value="Awl pike">Polearm</option>
|
||||
<option value="Bardiche">Polearm</option>
|
||||
<option value="Bec de corbin">Polearm</option>
|
||||
<option value="Bill-guisarme">Polearm</option>
|
||||
<option value="Fauchard">Polearm</option>
|
||||
<option value="Fauchard-fork">Polearm</option>
|
||||
<option value="Glaive">Polearm</option>
|
||||
<option value="Glaive-guisarme">Polearm</option>
|
||||
<option value="Guisarme">Polearm</option>
|
||||
<option value="Guisarme-voulge">Polearm</option>
|
||||
<option value="Halberd">Polearm</option>
|
||||
<option value="Hook fauchard">Polearm</option>
|
||||
<option value="Lucern hammer">Polearm</option>
|
||||
<option value="Military fork">Polearm</option>
|
||||
<option value="Partisan">Polearm</option>
|
||||
<option value="Ranseur">Polearm</option>
|
||||
<option value="Spetum">Polearm</option>
|
||||
<option value="Voulge">Polearm</option>
|
||||
<option value="Quarterstaff"></option>
|
||||
<option value="Scourge"></option>
|
||||
<option value="Sickle"></option>
|
||||
<option value="Sling (Bullet)"></option>
|
||||
<option value="Sling (Stone)"></option>
|
||||
<option value="Spear"></option>
|
||||
<option value="Staff sling (Bullet)"></option>
|
||||
<option value="Staff sling (Stone)"></option>
|
||||
<option value="Bastard sword (One-handed)"></option>
|
||||
<option value="Bastard sword (Two-handed)"></option>
|
||||
<option value="Broad sword"></option>
|
||||
<option value="Khopesh">Sword</option>
|
||||
<option value="Long sword"></option>
|
||||
<option value="Scimitar">Sword</option>
|
||||
<option value="Short sword"></option>
|
||||
<option value="Two-handed sword"></option>
|
||||
<option value="Trident"></option>
|
||||
<option value="Warhammer"></option>
|
||||
<option value="Whip"></option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="sphere-major">
|
||||
<option value="Combat, Divination, Healing, Protection">Paladin</option>
|
||||
<option value="">Ranger</option>
|
||||
<option value="All, Astral, Charm, Combat, Creation, Divination, Guardian, Healing, Necromantic, Protection, Summoning, Sun">Cleric</option>
|
||||
<option value="All, Animal, Elemental (Earth, Air, Fire, Water), Healing, Plant, Weather">Druid</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="sphere-minor">
|
||||
<option value="">Paladin</option>
|
||||
<option value="Animal, Plant">Ranger</option>
|
||||
<option value="Elemental (Earth, Air, Fire, Water)">Cleric</option>
|
||||
<option value="Divination">Druid</option>
|
||||
</datalist>
|
||||
|
||||
<!-- Monster sheet datalists -->
|
||||
<datalist id="monster-frequency">
|
||||
<option value="Very rare (4%)">4% chance</option>
|
||||
<option value="Rare (11%)">11% chance</option>
|
||||
<option value="Uncommon (20%)">20% chance</option>
|
||||
<option value="Common (65%)">65% chance</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="monster-intelligence">
|
||||
<option value="0 (Nonintelligent)">Nonintelligent or not ratable</option>
|
||||
<option value="1 (Animal)">Animal intelligence</option>
|
||||
<option value="2-4 (Semi)">Semi-intelligent</option>
|
||||
<option value="5-7 (Low)">Low intelligence</option>
|
||||
<option value="8-10 (Average)">Average (human) intelligence</option>
|
||||
<option value="11-12 (Very)">Very intelligent</option>
|
||||
<option value="13-14 (High)">High intelligence</option>
|
||||
<option value="15-16 (Exceptional)">Exceptional intelligence</option>
|
||||
<option value="17-18 (Genius)">Genius</option>
|
||||
<option value="19-20 (Supra-genius)">Supra-genius</option>
|
||||
<option value="21+ (Godlike)">Godlike intelligence</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="monster-size">
|
||||
<option value="T">Tiny (2' tall or less)</option>
|
||||
<option value="S">Small (2+' to 4')</option>
|
||||
<option value="M">Medium (4+' to 7')</option>
|
||||
<option value="L">Large (7+' to 12')</option>
|
||||
<option value="H">Huge (12+' to 25')</option>
|
||||
<option value="G">Gargantuan (25+')</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="monster-morale">
|
||||
<option value="2">Unreliable</option>
|
||||
<option value="3">Unreliable</option>
|
||||
<option value="4">Unreliable</option>
|
||||
<option value="5">Unsteady</option>
|
||||
<option value="6">Unsteady</option>
|
||||
<option value="7">Unsteady</option>
|
||||
<option value="8">Average</option>
|
||||
<option value="9">Average</option>
|
||||
<option value="10">Average</option>
|
||||
<option value="11">Steady</option>
|
||||
<option value="12">Steady</option>
|
||||
<option value="13">Elite</option>
|
||||
<option value="14">Elite</option>
|
||||
<option value="15">Champion</option>
|
||||
<option value="16">Champion</option>
|
||||
<option value="17">Fanatic</option>
|
||||
<option value="18">Fanatic</option>
|
||||
<option value="19">Fearless</option>
|
||||
<option value="20">Fearless</option>
|
||||
</datalist>
|
||||
|
||||
<datalist id="monster-level-select">
|
||||
<option value="@{hitdice}"></option>
|
||||
</datalist>
|
||||
@@ -0,0 +1,25 @@
|
||||
<div class="sheet-col">
|
||||
<table class="sheet-table-center">
|
||||
<tr>
|
||||
<td colspan="4"><input type="text" name="attr_spellname#REPLACE0#" title="@{#REPLACE1#spellname#REPLACE0#}" class="sheet-spell" placeholder="Spell name"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>Cast Today: </label></td>
|
||||
<td><input type="number" name="attr_cast-value#REPLACE0#" title="@{#REPLACE1#cast-value#REPLACE0#}" value="0" class="sheet-short"></td>
|
||||
<td class="sheet-centering-padding-2"><label>/</label></td>
|
||||
<td><input type="number" name="attr_cast-max#REPLACE0#" title="@{#REPLACE1#cast-max#REPLACE0#}" class="sheet-short"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>Casting Time: </label></td>
|
||||
<td><input type="text" name="attr_casttime#REPLACE0#" title="@{#REPLACE1#casttime#REPLACE0#}" class="sheet-short"></td>
|
||||
<td></td>
|
||||
<td><button type="roll" style="margin: 0;" name="roll_initspell#REPLACE0#" title="%{#REPLACE1#initspell#REPLACE0#}" value="/gmroll [[{([[1d10]]+@{casttime#REPLACE0#}), 1}kh1]] [Initiative (@{spellname#REPLACE0#})]&{tracker}">Initiative</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><textarea name="attr_cast-macro#REPLACE0#" title="@{#REPLACE1#cast-macro#REPLACE0#}" class="sheet-input-like" placeholder="Insert Spell effects."></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><button type="roll" name="roll_spellcast#REPLACE0#" title="%{#REPLACE1#spellcast#REPLACE0#}" value="@{cast-macro#REPLACE0#}">Roll Spell Effects</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="sheet-col">
|
||||
<fieldset name="repeating_spells#REPLACE0#" class="repeating_spells#REPLACE0#">
|
||||
<table class="sheet-table-center">
|
||||
<tr>
|
||||
<td colspan="4"><input type="text" name="attr_spellname#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_spellname#REPLACE0#}" class="sheet-spell" placeholder="Ability name"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>Uses Today: </label></td>
|
||||
<td><input type="number" name="attr_cast-value#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_cast-value#REPLACE0#}" value="0" class="sheet-short"></td>
|
||||
<td class="sheet-centering-padding-2"><label>/</label></td>
|
||||
<td><input type="number" name="attr_cast-max#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_cast-max#REPLACE0#}" value="0" class="sheet-short"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>Initiative: </label></td>
|
||||
<td><input type="text" name="attr_casttime#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_casttime#REPLACE0#}" class="sheet-short"></td>
|
||||
<td></td>
|
||||
<td><button style="margin: 0;" type="roll" name="roll_initspell#REPLACE0#" title="%{repeating_spells#REPLACE0#_$X_initspell#REPLACE0#}" value="/gmroll [[{([[1d10]]+@{casttime#REPLACE0#}), 1}kh1]] [Initiative (@{spellname#REPLACE0#})]&{tracker}">Initiative</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><textarea name="attr_cast-macro#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_cast-macro#REPLACE0#}" class="sheet-input-like" placeholder="Insert Ability effects."></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><button type="roll" name="roll_spellcast#REPLACE0#" title="%{repeating_spells#REPLACE0#_$X_spellcast#REPLACE0#}" value="@{cast-macro#REPLACE0#}">Roll Ability Effects</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -0,0 +1,779 @@
|
||||
<rolltemplate class="sheet-rolltemplate-2Edefault">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-default-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">{{name}}</th>
|
||||
</tr>
|
||||
{{#subtitle}}
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">{{subtitle}}</th>
|
||||
</tr>
|
||||
{{/subtitle}}
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
{{#allprops() desc desc1 desc2 name subtitle}}
|
||||
<tr>
|
||||
<td class="default-c1">{{key}}</td>
|
||||
<td class="default-c2">{{value}}</td>
|
||||
</tr>
|
||||
{{/allprops() desc desc1 desc2 name subtitle}}
|
||||
{{#desc}}
|
||||
<tr>
|
||||
<td class="default-c3" colspan="2">{{desc}}</td>
|
||||
</tr>
|
||||
{{/desc}}
|
||||
{{#desc1}}
|
||||
<tr>
|
||||
<td class="default-c3" colspan="2">{{desc1}}</td>
|
||||
</tr>
|
||||
{{/desc1}}
|
||||
{{#desc2}}
|
||||
<tr>
|
||||
<td class="default-c3" colspan="2">{{desc2}}</td>
|
||||
</tr>
|
||||
{{/desc2}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Eattack">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-attack-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">{{title}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">{{subtitle}}</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="3"><span class="weapon-used">{{weapon_used}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attack-c1"><b>S/M</b></td>
|
||||
<td class="attack-c2" rowspan="2">{{ac_hit}}</td>
|
||||
<td class="attack-c1"><b>L</b></td>
|
||||
</tr>
|
||||
{{#crit_s}}{{#crit_l}}
|
||||
{{#rollWasCrit() ac_hit}}
|
||||
<tr>
|
||||
<td class="attack-c3" rowspan="2">{{crit_s}}</td>
|
||||
<td class="attack-c3" rowspan="2">{{crit_l}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attack-c4"><b>AC Hit</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" class="attack-c5">CRITICAL HIT!{{#crit}}<br><span class='attack-crit'>{{crit}}</span>{{/crit}}</td>
|
||||
</tr>
|
||||
{{/rollWasCrit() ac_hit }}
|
||||
{{#^rollWasCrit() ac_hit}}
|
||||
<tr>
|
||||
<td class="attack-c3" rowspan="2">{{dmg_s}}</td>
|
||||
<td class="attack-c3" rowspan="2">{{dmg_l}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attack-c4"><b>AC Hit</b></td>
|
||||
</tr>
|
||||
{{/^rollWasCrit() ac_hit}}
|
||||
{{/crit_l}}{{/crit_s}}
|
||||
{{^crit_s}}{{^crit_l}}
|
||||
<tr>
|
||||
<td class="attack-c3" rowspan="2">{{dmg_s}}</td>
|
||||
<td class="attack-c3" rowspan="2">{{dmg_l}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attack-c4"><b>AC Hit</b></td>
|
||||
</tr>
|
||||
{{#rollWasCrit() ac_hit}}
|
||||
<tr>
|
||||
<td colspan="3" class="attack-c5">CRITICAL HIT!{{#crit}}<br><span class='attack-crit'>{{crit}}</span>{{/crit}}</td>
|
||||
</tr>
|
||||
{{/rollWasCrit() ac_hit}}
|
||||
{{/crit_l}}{{/crit_s}}
|
||||
{{#rollWasFumble() ac_hit }}
|
||||
<tr>
|
||||
<td colspan="3" class="attack-c6">FUMBLE!{{#fumble}}<br><span class='attack-fumble'>{{fumble}}</span>{{/fumble}}</td>
|
||||
</tr>
|
||||
{{/rollWasFumble() ac_hit }}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Espell">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-spell-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">{{title}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">{{splevel}} * {{school}}</th>
|
||||
</tr>
|
||||
{{#sphere}}
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">Priest Sphere: {{sphere}}</th>
|
||||
</tr>
|
||||
{{/sphere}}
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="sheet-spell-c1"><span class="sheet-spell-prop">Range</span><br>{{range}}</td>
|
||||
<td class="sheet-spell-c1"><span class="sheet-spell-prop">Components</span><br>{{components}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spell-c1"><span class="sheet-spell-prop">Duration</span><br>{{duration}}</td>
|
||||
<td class="spell-c1"><span class="sheet-spell-prop">Casting Time</span><br>{{time}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="sheet-spell-c1"><span class="sheet-spell-prop">Area of Effect</span><br>{{aoe}}</td>
|
||||
<td class="spell-c1"><span class="sheet-spell-prop">Saving Throw</span><br>{{save}}</td>
|
||||
</tr>
|
||||
{{#damage}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c1"><span class="sheet-spell-prop">Damage: </span>
|
||||
{{damage}}
|
||||
{{#rollGreater() d2t 0}}{{d2}}{{/rollGreater() d2t 0}}
|
||||
{{#rollGreater() d3t 0}}{{d3}}{{/rollGreater() d3t 0}}
|
||||
{{#rollGreater() d4t 0}}{{d4}}{{/rollGreater() d4t 0}}
|
||||
{{#rollGreater() d5t 0}}{{d5}}{{/rollGreater() d5t 0}}
|
||||
{{#rollGreater() d6t 0}}{{d6}}{{/rollGreater() d6t 0}}
|
||||
{{#rollGreater() d7t 0}}{{d7}}{{/rollGreater() d7t 0}}
|
||||
{{#rollGreater() d8t 0}}{{d8}}{{/rollGreater() d8t 0}}
|
||||
{{#rollGreater() d9t 0}}{{d9}}{{/rollGreater() d9t 0}}
|
||||
{{#rollGreater() d10t 0}}{{d10}}{{/rollGreater() d10t 0}}
|
||||
{{#rollGreater() d11t 0}}{{d11}}{{/rollGreater() d11t 0}}
|
||||
{{#rollGreater() d12t 0}}{{d12}}{{/rollGreater() d12t 0}}
|
||||
{{damagetype}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/damage}}
|
||||
{{#healing}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c1"><span class="sheet-spell-prop">Healing: </span>{{healing}}</td>
|
||||
</tr>
|
||||
{{/healing}}
|
||||
{{#reference}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c1"><span class="sheet-spell-prop">Reference: </span>{{reference}}</td>
|
||||
</tr>
|
||||
{{/reference}}
|
||||
{{#materials}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c1"><span class="sheet-spell-prop">Spell Materials: </span>{{materials}}</td>
|
||||
</tr>
|
||||
{{/materials}}
|
||||
{{#effects}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c2">
|
||||
<span class="sheet-spell-prop">Effects:</span>
|
||||
{{effects}}
|
||||
{{#c1-1}}
|
||||
<br>
|
||||
<br>
|
||||
<table class="sheet-spell-table sheet-spell-{{style}}">
|
||||
<tr>
|
||||
<td colspan="{{cs1-1}}" rowspan="{{rs1-1}}" class="sheet-spell-{{cc1-1}}">{{c1-1}}</td>
|
||||
{{#c1-2}}
|
||||
<td colspan="{{cs1-2}}" rowspan="{{rs1-2}}" class="sheet-spell-{{cc1-2}}">{{c1-2}}</td>
|
||||
{{/c1-2}}
|
||||
{{#c1-3}}
|
||||
<td colspan="{{cs1-3}}" rowspan="{{rs1-3}}" class="sheet-spell-{{cc1-3}}">{{c1-3}}</td>
|
||||
{{/c1-3}}
|
||||
{{#c1-4}}
|
||||
<td colspan="{{cs1-4}}" rowspan="{{rs1-4}}" class="sheet-spell-{{cc1-4}}">{{c1-4}}</td>
|
||||
{{/c1-4}}
|
||||
{{#c1-5}}
|
||||
<td colspan="{{cs1-5}}" rowspan="{{rs1-5}}" class="sheet-spell-{{cc1-5}}">{{c1-5}}</td>
|
||||
{{/c1-5}}
|
||||
</tr>
|
||||
<tr>
|
||||
{{#c2-1}}
|
||||
<td colspan="{{cs2-1}}" rowspan="{{rs2-1}}" class="sheet-spell-{{cc2-1}}">{{c2-1}}</td>
|
||||
{{/c2-1}}
|
||||
{{#c2-2}}
|
||||
<td colspan="{{cs2-2}}" rowspan="{{rs2-2}}" class="sheet-spell-{{cc2-2}}">{{c2-2}}</td>
|
||||
{{/c2-2}}
|
||||
{{#c2-3}}
|
||||
<td colspan="{{cs2-3}}" rowspan="{{rs2-3}}" class="sheet-spell-{{cc2-3}}">{{c2-3}}</td>
|
||||
{{/c2-3}}
|
||||
{{#c2-4}}
|
||||
<td colspan="{{cs2-4}}" rowspan="{{rs2-4}}" class="sheet-spell-{{cc2-4}}">{{c2-4}}</td>
|
||||
{{/c2-4}}
|
||||
{{#c2-5}}
|
||||
<td colspan="{{cs2-5}}" rowspan="{{rs2-5}}" class="sheet-spell-{{cc2-5}}">{{c2-5}}</td>
|
||||
{{/c2-5}}
|
||||
</tr>
|
||||
{{#c3-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs3-1}}" rowspan="{{rs3-1}}" class="sheet-spell-{{cc3-1}}">{{c3-1}}</td>
|
||||
{{#c3-2}}
|
||||
<td colspan="{{cs3-2}}" rowspan="{{rs3-2}}" class="sheet-spell-{{cc3-2}}">{{c3-2}}</td>
|
||||
{{/c3-2}}
|
||||
{{#c3-3}}
|
||||
<td colspan="{{cs3-3}}" rowspan="{{rs3-3}}" class="sheet-spell-{{cc3-3}}">{{c3-3}}</td>
|
||||
{{/c3-3}}
|
||||
{{#c3-4}}
|
||||
<td colspan="{{cs3-4}}" rowspan="{{rs3-4}}" class="sheet-spell-{{cc3-4}}">{{c3-4}}</td>
|
||||
{{/c3-4}}
|
||||
{{#c3-5}}
|
||||
<td colspan="{{cs3-5}}" rowspan="{{rs3-5}}" class="sheet-spell-{{cc3-5}}">{{c3-5}}</td>
|
||||
{{/c3-5}}
|
||||
</tr>
|
||||
{{/c3-1}}
|
||||
{{#c4-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs4-1}}" rowspan="{{rs4-1}}" class="sheet-spell-{{cc4-1}}">{{c4-1}}</td>
|
||||
{{#c4-2}}
|
||||
<td colspan="{{cs4-2}}" rowspan="{{rs4-2}}" class="sheet-spell-{{cc4-2}}">{{c4-2}}</td>
|
||||
{{/c4-2}}
|
||||
{{#c4-3}}
|
||||
<td colspan="{{cs4-3}}" rowspan="{{rs4-3}}" class="sheet-spell-{{cc4-3}}">{{c4-3}}</td>
|
||||
{{/c4-3}}
|
||||
{{#c4-4}}
|
||||
<td colspan="{{cs4-4}}" rowspan="{{rs4-4}}" class="sheet-spell-{{cc4-4}}">{{c4-4}}</td>
|
||||
{{/c4-4}}
|
||||
{{#c4-5}}
|
||||
<td colspan="{{cs4-5}}" rowspan="{{rs4-5}}" class="sheet-spell-{{cc4-5}}">{{c4-5}}</td>
|
||||
{{/c4-5}}
|
||||
</tr>
|
||||
{{/c4-1}}
|
||||
{{#c5-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs5-1}}" rowspan="{{rs5-1}}" class="sheet-spell-{{cc5-1}}">{{c5-1}}</td>
|
||||
{{#c5-2}}
|
||||
<td colspan="{{cs5-2}}" rowspan="{{rs5-2}}" class="sheet-spell-{{cc5-2}}">{{c5-2}}</td>
|
||||
{{/c5-2}}
|
||||
{{#c5-3}}
|
||||
<td colspan="{{cs5-3}}" rowspan="{{rs5-3}}" class="sheet-spell-{{cc5-3}}">{{c5-3}}</td>
|
||||
{{/c5-3}}
|
||||
{{#c5-4}}
|
||||
<td colspan="{{cs5-4}}" rowspan="{{rs5-4}}" class="sheet-spell-{{cc5-4}}">{{c5-4}}</td>
|
||||
{{/c5-4}}
|
||||
{{#c5-5}}
|
||||
<td colspan="{{cs5-5}}" rowspan="{{rs5-5}}" class="sheet-spell-{{cc5-5}}">{{c5-5}}</td>
|
||||
{{/c5-5}}
|
||||
</tr>
|
||||
{{/c5-1}}
|
||||
{{#c6-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs6-1}}" rowspan="{{rs6-1}}" class="sheet-spell-{{cc6-1}}">{{c6-1}}</td>
|
||||
{{#c6-2}}
|
||||
<td colspan="{{cs6-2}}" rowspan="{{rs6-2}}" class="sheet-spell-{{cc6-2}}">{{c6-2}}</td>
|
||||
{{/c6-2}}
|
||||
{{#c6-3}}
|
||||
<td colspan="{{cs6-3}}" rowspan="{{rs6-3}}" class="sheet-spell-{{cc6-3}}">{{c6-3}}</td>
|
||||
{{/c6-3}}
|
||||
{{#c6-4}}
|
||||
<td colspan="{{cs6-4}}" rowspan="{{rs6-4}}" class="sheet-spell-{{cc6-4}}">{{c6-4}}</td>
|
||||
{{/c6-4}}
|
||||
{{#c6-5}}
|
||||
<td colspan="{{cs6-5}}" rowspan="{{rs6-5}}" class="sheet-spell-{{cc6-5}}">{{c6-5}}</td>
|
||||
{{/c6-5}}
|
||||
</tr>
|
||||
{{/c6-1}}
|
||||
{{#c7-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs7-1}}" rowspan="{{rs7-1}}" class="sheet-spell-{{cc7-1}}">{{c7-1}}</td>
|
||||
{{#c7-2}}
|
||||
<td colspan="{{cs7-2}}" rowspan="{{rs7-2}}" class="sheet-spell-{{cc7-2}}">{{c7-2}}</td>
|
||||
{{/c7-2}}
|
||||
{{#c7-3}}
|
||||
<td colspan="{{cs7-3}}" rowspan="{{rs7-3}}" class="sheet-spell-{{cc7-3}}">{{c7-3}}</td>
|
||||
{{/c7-3}}
|
||||
{{#c7-4}}
|
||||
<td colspan="{{cs7-4}}" rowspan="{{rs7-4}}" class="sheet-spell-{{cc7-4}}">{{c7-4}}</td>
|
||||
{{/c7-4}}
|
||||
{{#c7-5}}
|
||||
<td colspan="{{cs7-5}}" rowspan="{{rs7-5}}" class="sheet-spell-{{cc7-5}}">{{c7-5}}</td>
|
||||
{{/c7-5}}
|
||||
</tr>
|
||||
{{/c7-1}}
|
||||
{{#c8-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs8-1}}" rowspan="{{rs8-1}}" class="sheet-spell-{{cc8-1}}">{{c8-1}}</td>
|
||||
{{#c8-2}}
|
||||
<td colspan="{{cs8-2}}" rowspan="{{rs8-2}}" class="sheet-spell-{{cc8-2}}">{{c8-2}}</td>
|
||||
{{/c8-2}}
|
||||
{{#c8-3}}
|
||||
<td colspan="{{cs8-3}}" rowspan="{{rs8-3}}" class="sheet-spell-{{cc8-3}}">{{c8-3}}</td>
|
||||
{{/c8-3}}
|
||||
{{#c8-4}}
|
||||
<td colspan="{{cs8-4}}" rowspan="{{rs8-4}}" class="sheet-spell-{{cc8-4}}">{{c8-4}}</td>
|
||||
{{/c8-4}}
|
||||
{{#c8-5}}
|
||||
<td colspan="{{cs8-5}}" rowspan="{{rs8-5}}" class="sheet-spell-{{cc8-5}}">{{c8-5}}</td>
|
||||
{{/c8-5}}
|
||||
</tr>
|
||||
{{/c8-1}}
|
||||
{{#c9-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs9-1}}" rowspan="{{rs9-1}}" class="sheet-spell-{{cc9-1}}">{{c9-1}}</td>
|
||||
{{#c9-2}}
|
||||
<td colspan="{{cs9-2}}" rowspan="{{rs9-2}}" class="sheet-spell-{{cc9-2}}">{{c9-2}}</td>
|
||||
{{/c9-2}}
|
||||
{{#c9-3}}
|
||||
<td colspan="{{cs9-3}}" rowspan="{{rs9-3}}" class="sheet-spell-{{cc9-3}}">{{c9-3}}</td>
|
||||
{{/c9-3}}
|
||||
{{#c9-4}}
|
||||
<td colspan="{{cs9-4}}" rowspan="{{rs9-4}}" class="sheet-spell-{{cc9-4}}">{{c9-4}}</td>
|
||||
{{/c9-4}}
|
||||
{{#c9-5}}
|
||||
<td colspan="{{cs9-5}}" rowspan="{{rs9-5}}" class="sheet-spell-{{cc9-5}}">{{c9-5}}</td>
|
||||
{{/c9-5}}
|
||||
</tr>
|
||||
{{/c9-1}}
|
||||
{{#c10-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs10-1}}" rowspan="{{rs10-1}}" class="sheet-spell-{{cc10-1}}">{{c10-1}}</td>
|
||||
{{#c10-2}}
|
||||
<td colspan="{{cs10-2}}" rowspan="{{rs10-2}}" class="sheet-spell-{{cc10-2}}">{{c10-2}}</td>
|
||||
{{/c10-2}}
|
||||
{{#c10-3}}
|
||||
<td colspan="{{cs10-3}}" rowspan="{{rs10-3}}" class="sheet-spell-{{cc10-3}}">{{c10-3}}</td>
|
||||
{{/c10-3}}
|
||||
{{#c10-4}}
|
||||
<td colspan="{{cs10-4}}" rowspan="{{rs10-4}}" class="sheet-spell-{{cc10-4}}">{{c10-4}}</td>
|
||||
{{/c10-4}}
|
||||
{{#c10-5}}
|
||||
<td colspan="{{cs10-5}}" rowspan="{{rs10-5}}" class="sheet-spell-{{cc10-5}}">{{c10-5}}</td>
|
||||
{{/c10-5}}
|
||||
</tr>
|
||||
{{/c10-1}}
|
||||
{{#c11-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs11-1}}" rowspan="{{rs11-1}}" class="sheet-spell-{{cc11-1}}">{{c11-1}}</td>
|
||||
{{#c11-2}}
|
||||
<td colspan="{{cs11-2}}" rowspan="{{rs11-2}}" class="sheet-spell-{{cc11-2}}">{{c11-2}}</td>
|
||||
{{/c11-2}}
|
||||
{{#c11-3}}
|
||||
<td colspan="{{cs11-3}}" rowspan="{{rs11-3}}" class="sheet-spell-{{cc11-3}}">{{c11-3}}</td>
|
||||
{{/c11-3}}
|
||||
{{#c11-4}}
|
||||
<td colspan="{{cs11-4}}" rowspan="{{rs11-4}}" class="sheet-spell-{{cc11-4}}">{{c11-4}}</td>
|
||||
{{/c11-4}}
|
||||
{{#c11-5}}
|
||||
<td colspan="{{cs11-5}}" rowspan="{{rs11-5}}" class="sheet-spell-{{cc11-5}}">{{c11-5}}</td>
|
||||
{{/c11-5}}
|
||||
</tr>
|
||||
{{/c11-1}}
|
||||
{{#c12-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs12-1}}" rowspan="{{rs12-1}}" class="sheet-spell-{{cc12-1}}">{{c12-1}}</td>
|
||||
{{#c12-2}}
|
||||
<td colspan="{{cs12-2}}" rowspan="{{rs12-2}}" class="sheet-spell-{{cc12-2}}">{{c12-2}}</td>
|
||||
{{/c12-2}}
|
||||
{{#c12-3}}
|
||||
<td colspan="{{cs12-3}}" rowspan="{{rs12-3}}" class="sheet-spell-{{cc12-3}}">{{c12-3}}</td>
|
||||
{{/c12-3}}
|
||||
{{#c12-4}}
|
||||
<td colspan="{{cs12-4}}" rowspan="{{rs12-4}}" class="sheet-spell-{{cc12-4}}">{{c12-4}}</td>
|
||||
{{/c12-4}}
|
||||
{{#c12-5}}
|
||||
<td colspan="{{cs12-5}}" rowspan="{{rs12-5}}" class="sheet-spell-{{cc12-5}}">{{c12-5}}</td>
|
||||
{{/c12-5}}
|
||||
</tr>
|
||||
{{/c12-1}}
|
||||
{{#c13-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs13-1}}" rowspan="{{rs13-1}}" class="sheet-spell-{{cc13-1}}">{{c13-1}}</td>
|
||||
{{#c13-2}}
|
||||
<td colspan="{{cs13-2}}" rowspan="{{rs13-2}}" class="sheet-spell-{{cc13-2}}">{{c13-2}}</td>
|
||||
{{/c13-2}}
|
||||
{{#c13-3}}
|
||||
<td colspan="{{cs13-3}}" rowspan="{{rs13-3}}" class="sheet-spell-{{cc13-3}}">{{c13-3}}</td>
|
||||
{{/c13-3}}
|
||||
{{#c13-4}}
|
||||
<td colspan="{{cs13-4}}" rowspan="{{rs13-4}}" class="sheet-spell-{{cc13-4}}">{{c13-4}}</td>
|
||||
{{/c13-4}}
|
||||
{{#c13-5}}
|
||||
<td colspan="{{cs13-5}}" rowspan="{{rs13-5}}" class="sheet-spell-{{cc13-5}}">{{c13-5}}</td>
|
||||
{{/c13-5}}
|
||||
</tr>
|
||||
{{/c13-1}}
|
||||
{{#c14-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs14-1}}" rowspan="{{rs14-1}}" class="sheet-spell-{{cc14-1}}">{{c14-1}}</td>
|
||||
{{#c14-2}}
|
||||
<td colspan="{{cs14-2}}" rowspan="{{rs14-2}}" class="sheet-spell-{{cc14-2}}">{{c14-2}}</td>
|
||||
{{/c14-2}}
|
||||
{{#c14-3}}
|
||||
<td colspan="{{cs14-3}}" rowspan="{{rs14-3}}" class="sheet-spell-{{cc14-3}}">{{c14-3}}</td>
|
||||
{{/c14-3}}
|
||||
{{#c14-4}}
|
||||
<td colspan="{{cs14-4}}" rowspan="{{rs14-4}}" class="sheet-spell-{{cc14-4}}">{{c14-4}}</td>
|
||||
{{/c14-4}}
|
||||
{{#c14-5}}
|
||||
<td colspan="{{cs14-5}}" rowspan="{{rs14-5}}" class="sheet-spell-{{cc14-5}}">{{c14-5}}</td>
|
||||
{{/c14-5}}
|
||||
</tr>
|
||||
{{/c14-1}}
|
||||
{{#c15-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs15-1}}" rowspan="{{rs15-1}}" class="sheet-spell-{{cc15-1}}">{{c15-1}}</td>
|
||||
{{#c15-2}}
|
||||
<td colspan="{{cs15-2}}" rowspan="{{rs15-2}}" class="sheet-spell-{{cc15-2}}">{{c15-2}}</td>
|
||||
{{/c15-2}}
|
||||
{{#c15-3}}
|
||||
<td colspan="{{cs15-3}}" rowspan="{{rs15-3}}" class="sheet-spell-{{cc15-3}}">{{c15-3}}</td>
|
||||
{{/c15-3}}
|
||||
{{#c15-4}}
|
||||
<td colspan="{{cs15-4}}" rowspan="{{rs15-4}}" class="sheet-spell-{{cc15-4}}">{{c15-4}}</td>
|
||||
{{/c15-4}}
|
||||
{{#c15-5}}
|
||||
<td colspan="{{cs15-5}}" rowspan="{{rs15-5}}" class="sheet-spell-{{cc15-5}}">{{c15-5}}</td>
|
||||
{{/c15-5}}
|
||||
</tr>
|
||||
{{/c15-1}}
|
||||
{{#c16-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs16-1}}" rowspan="{{rs16-1}}" class="sheet-spell-{{cc16-1}}">{{c16-1}}</td>
|
||||
{{#c16-2}}
|
||||
<td colspan="{{cs16-2}}" rowspan="{{rs16-2}}" class="sheet-spell-{{cc16-2}}">{{c16-2}}</td>
|
||||
{{/c16-2}}
|
||||
{{#c16-3}}
|
||||
<td colspan="{{cs16-3}}" rowspan="{{rs16-3}}" class="sheet-spell-{{cc16-3}}">{{c16-3}}</td>
|
||||
{{/c16-3}}
|
||||
{{#c16-4}}
|
||||
<td colspan="{{cs16-4}}" rowspan="{{rs16-4}}" class="sheet-spell-{{cc16-4}}">{{c16-4}}</td>
|
||||
{{/c16-4}}
|
||||
{{#c16-5}}
|
||||
<td colspan="{{cs16-5}}" rowspan="{{rs16-5}}" class="sheet-spell-{{cc16-5}}">{{c16-5}}</td>
|
||||
{{/c16-5}}
|
||||
</tr>
|
||||
{{/c16-1}}
|
||||
{{#c17-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs17-1}}" rowspan="{{rs17-1}}" class="sheet-spell-{{cc17-1}}">{{c17-1}}</td>
|
||||
{{#c17-2}}
|
||||
<td colspan="{{cs17-2}}" rowspan="{{rs17-2}}" class="sheet-spell-{{cc17-2}}">{{c17-2}}</td>
|
||||
{{/c17-2}}
|
||||
{{#c17-3}}
|
||||
<td colspan="{{cs17-3}}" rowspan="{{rs17-3}}" class="sheet-spell-{{cc17-3}}">{{c17-3}}</td>
|
||||
{{/c17-3}}
|
||||
{{#c17-4}}
|
||||
<td colspan="{{cs17-4}}" rowspan="{{rs17-4}}" class="sheet-spell-{{cc17-4}}">{{c17-4}}</td>
|
||||
{{/c17-4}}
|
||||
{{#c17-5}}
|
||||
<td colspan="{{cs17-5}}" rowspan="{{rs17-5}}" class="sheet-spell-{{cc17-5}}">{{c17-5}}</td>
|
||||
{{/c17-5}}
|
||||
</tr>
|
||||
{{/c17-1}}
|
||||
{{#c18-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs18-1}}" rowspan="{{rs18-1}}" class="sheet-spell-{{cc18-1}}">{{c18-1}}</td>
|
||||
{{#c18-2}}
|
||||
<td colspan="{{cs18-2}}" rowspan="{{rs18-2}}" class="sheet-spell-{{cc18-2}}">{{c18-2}}</td>
|
||||
{{/c18-2}}
|
||||
{{#c18-3}}
|
||||
<td colspan="{{cs18-3}}" rowspan="{{rs18-3}}" class="sheet-spell-{{cc18-3}}">{{c18-3}}</td>
|
||||
{{/c18-3}}
|
||||
{{#c18-4}}
|
||||
<td colspan="{{cs18-4}}" rowspan="{{rs18-4}}" class="sheet-spell-{{cc18-4}}">{{c18-4}}</td>
|
||||
{{/c18-4}}
|
||||
{{#c18-5}}
|
||||
<td colspan="{{cs18-5}}" rowspan="{{rs18-5}}" class="sheet-spell-{{cc18-5}}">{{c18-5}}</td>
|
||||
{{/c18-5}}
|
||||
</tr>
|
||||
{{/c18-1}}
|
||||
{{#c19-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs19-1}}" rowspan="{{rs19-1}}" class="sheet-spell-{{cc19-1}}">{{c19-1}}</td>
|
||||
{{#c19-2}}
|
||||
<td colspan="{{cs19-2}}" rowspan="{{rs19-2}}" class="sheet-spell-{{cc19-2}}">{{c19-2}}</td>
|
||||
{{/c19-2}}
|
||||
{{#c19-3}}
|
||||
<td colspan="{{cs19-3}}" rowspan="{{rs19-3}}" class="sheet-spell-{{cc19-3}}">{{c19-3}}</td>
|
||||
{{/c19-3}}
|
||||
{{#c19-4}}
|
||||
<td colspan="{{cs19-4}}" rowspan="{{rs19-4}}" class="sheet-spell-{{cc19-4}}">{{c19-4}}</td>
|
||||
{{/c19-4}}
|
||||
{{#c19-5}}
|
||||
<td colspan="{{cs19-5}}" rowspan="{{rs19-5}}" class="sheet-spell-{{cc19-5}}">{{c19-5}}</td>
|
||||
{{/c19-5}}
|
||||
</tr>
|
||||
{{/c19-1}}
|
||||
{{#c20-1}}
|
||||
<tr>
|
||||
<td colspan="{{cs20-1}}" rowspan="{{rs20-1}}" class="sheet-spell-{{cc20-1}}">{{c20-1}}</td>
|
||||
{{#c20-2}}
|
||||
<td colspan="{{cs20-2}}" rowspan="{{rs20-2}}" class="sheet-spell-{{cc20-2}}">{{c20-2}}</td>
|
||||
{{/c20-2}}
|
||||
{{#c20-3}}
|
||||
<td colspan="{{cs20-3}}" rowspan="{{rs20-3}}" class="sheet-spell-{{cc20-3}}">{{c20-3}}</td>
|
||||
{{/c20-3}}
|
||||
{{#c20-4}}
|
||||
<td colspan="{{cs20-4}}" rowspan="{{rs20-4}}" class="sheet-spell-{{cc20-4}}">{{c20-4}}</td>
|
||||
{{/c20-4}}
|
||||
{{#c20-5}}
|
||||
<td colspan="{{cs20-5}}" rowspan="{{rs20-5}}" class="sheet-spell-{{cc20-5}}">{{c20-5}}</td>
|
||||
{{/c20-5}}
|
||||
</tr>
|
||||
{{/c20-1}}
|
||||
</table>
|
||||
{{/c1-1}}
|
||||
{{#effects2}}
|
||||
<br>
|
||||
{{effects2}}
|
||||
{{/effects2}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/effects}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Eprotscroll">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-protscroll-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">{{title}}</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="spell-c1"><span class="sheet-spell-prop">Reading Time</span><br/>{{time}}</td>
|
||||
<td class="spell-c1"><span class="sheet-spell-prop">Duration</span><br/>{{duration}}</td>
|
||||
</tr>
|
||||
{{#reference}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c1"><span class="sheet-spell-prop">Reference:</span> {{reference}}</td>
|
||||
</tr>
|
||||
{{/reference}}
|
||||
{{#effects}}
|
||||
<tr>
|
||||
<td colspan="2" class="sheet-spell-c2"><span class="sheet-spell-prop">Effects:</span> {{effects}}</td>
|
||||
</tr>
|
||||
{{/effects}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Esave">
|
||||
<div class="sheet-template-container">
|
||||
<div class="save-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">Save vs. {{savevs}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">for {{character}}</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="save-c1">Saving Throw Roll:</td>
|
||||
<td class="save-c2">{{saveroll}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="save-c1">Saving Throw Target:</td>
|
||||
<td class="save-c2">{{savetarget}}</td>
|
||||
</tr>
|
||||
{{#rollTotal() saveroll savetarget}}
|
||||
<tr>
|
||||
<td class="save-c3" colspan="2">Success!</td>
|
||||
</tr>
|
||||
{{/rollTotal() saveroll savetarget}}
|
||||
{{#rollGreater() saveroll savetarget}}
|
||||
<tr>
|
||||
<td class="save-c3" colspan="2">Success!</td>
|
||||
</tr>
|
||||
{{/rollGreater() saveroll savetarget}}
|
||||
{{#rollLess() saveroll savetarget}}
|
||||
<tr>
|
||||
<td class="save-c4" colspan="2">Failed!</td>
|
||||
</tr>
|
||||
{{/rollLess() saveroll savetarget}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Echeck">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-check-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">Check vs. {{checkvs}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">for {{character}}</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="sheet-check-c1">Check Roll:</td>
|
||||
<td class="sheet-check-c2">{{checkroll}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="sheet-check-c1">Check Target:</td>
|
||||
<td class="sheet-check-c2">{{checktarget}}</td>
|
||||
</tr>
|
||||
{{#rollTotal() checkroll checktarget}}
|
||||
<tr>
|
||||
<td class="sheet-check-c3" colspan="2">Success!</td>
|
||||
</tr>
|
||||
{{/rollTotal() checkroll checktarget}}
|
||||
{{#rollLess() checkroll checktarget}}
|
||||
<tr>
|
||||
<td class="sheet-check-c3" colspan="2">Success!</td>
|
||||
</tr>
|
||||
{{/rollLess() checkroll checktarget}}
|
||||
{{#rollGreater() checkroll checktarget}}
|
||||
<tr>
|
||||
<td class="sheet-check-c4" colspan="2">Failed!</td>
|
||||
</tr>
|
||||
{{/rollGreater() checkroll checktarget}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Einversecheck">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-check-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">Check vs. {{checkvs}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="sheet-template-subtitle1">for {{character}}</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="sheet-check-c1">Check Roll:</td>
|
||||
<td class="sheet-check-c2">{{checkroll}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="sheet-check-c1">Check Target:</td>
|
||||
<td class="sheet-check-c2">{{checktarget}}</td>
|
||||
</tr>
|
||||
{{#rollTotal() checkroll checktarget}}
|
||||
<tr>
|
||||
<td class="sheet-check-c3" colspan="2">Fail!</td>
|
||||
</tr>
|
||||
{{/rollTotal() checkroll checktarget}}
|
||||
{{#rollLess() checkroll checktarget}}
|
||||
<tr>
|
||||
<td class="sheet-check-c3" colspan="2">Fail!</td>
|
||||
</tr>
|
||||
{{/rollLess() checkroll checktarget}}
|
||||
{{#rollGreater() checkroll checktarget}}
|
||||
<tr>
|
||||
<td class="sheet-check-c4" colspan="2">Success!</td>
|
||||
</tr>
|
||||
{{/rollGreater() checkroll checktarget}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-2Egrenademiss">
|
||||
<div class="sheet-template-container">
|
||||
<div class="sheet-grenade-head">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="sheet-template-title1">Grenadelike miss for {{name}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
{{#rollTotal() direction 1}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-1.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 1}}
|
||||
{{#rollTotal() direction 2}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-2.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 2}}
|
||||
{{#rollTotal() direction 3}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-3.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 3}}
|
||||
{{#rollTotal() direction 4}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-4.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 4}}
|
||||
{{#rollTotal() direction 5}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-5.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 5}}
|
||||
{{#rollTotal() direction 6}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-6.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 6}}
|
||||
{{#rollTotal() direction 7}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-7.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 7}}
|
||||
{{#rollTotal() direction 8}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-8.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 8}}
|
||||
{{#rollTotal() direction 9}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-9.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 9}}
|
||||
{{#rollTotal() direction 10}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram-10.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/rollTotal() direction 10}}
|
||||
{{#^rollBetween() direction 1 10}}
|
||||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD 2E Revised/img/rolltemplate/scatter-diagram.png" style="width: 100%;" alt="scatter diagram"/>
|
||||
{{/^rollBetween() direction 1 10}}
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sheet-template-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="sheet-grenade-c1">Direction:</td>
|
||||
<td class="sheet-grenade-c2">{{direction}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="sheet-grenade-c1">Distance ({{distancename}}):</td>
|
||||
<td class="sheet-grenade-c2">{{distance}} feet</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="sheet-grenade-c1 sheet-ignore-inlineroll">Direct hit:<br>({{aoe}} feet diameter)</td>
|
||||
{{#^rollBetween() computed::hit 0 0}}
|
||||
<td class="sheet-grenade-c3 sheet-ignore-inlineroll">Hit!<br><span class="sheet-hit-text">{{hitdmg}}</span></td>
|
||||
{{/^rollBetween() computed::hit 0 0}}
|
||||
{{#rollBetween() computed::hit 0 0}}
|
||||
<td class="sheet-grenade-c4 sheet-ignore-inlineroll">Miss!<br><span class="sheet-miss-text">{{hitdmg}}</span></td>
|
||||
{{/rollBetween() computed::hit 0 0}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="sheet-grenade-c1 sheet-ignore-inlineroll">Splash hit:<br>({{aoesplash}} feet diameter)</td>
|
||||
<!-- Direct hit is true -->
|
||||
{{#^rollBetween() computed::hit 0 0}}
|
||||
<td class="sheet-grenade-c5 sheet-ignore-inlineroll sheet-hit-text">Info<br><span class="sheet-miss-text">{{splashdmg}}</span></td>
|
||||
{{/^rollBetween() computed::hit 0 0}}
|
||||
|
||||
<!-- Direct hit is false -->
|
||||
{{#rollBetween() computed::hit 0 0}}
|
||||
{{#^rollBetween() computed::splash 0 0}}
|
||||
<td class="sheet-grenade-c3 sheet-ignore-inlineroll">Hit!<br><span class="sheet-hit-text">{{splashdmg}}</span></td>
|
||||
{{/^rollBetween() computed::splash 0 0}}
|
||||
{{#rollBetween() computed::splash 0 0}}
|
||||
<td class="sheet-grenade-c4 sheet-ignore-inlineroll">Miss!<br><span class="sheet-miss-text">{{splashdmg}}</span></td>
|
||||
{{/rollBetween() computed::splash 0 0}}
|
||||
{{/rollBetween() computed::hit 0 0}}
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
@@ -0,0 +1,34 @@
|
||||
<div class="sheet-col">
|
||||
<fieldset name="repeating_spells#REPLACE0#" class="repeating_spells#REPLACE0#">
|
||||
<table class="sheet-table-center">
|
||||
<tr>
|
||||
<td colspan="4"><input type="text" name="attr_spellname#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_spellname#REPLACE0#}" class="sheet-spell" placeholder="Spell name"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>Cast Today: </label></td>
|
||||
<td><input type="number" name="attr_cast-value#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_cast-value#REPLACE0#}" value="0" class="sheet-short"></td>
|
||||
<td class="sheet-centering-padding-2"><label>/</label></td>
|
||||
<td><input type="number" name="attr_cast-max#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_cast-max#REPLACE0#}" value="0" class="sheet-short"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>SP / #REPLACE1# Used: </label></td>
|
||||
<td><input type="number" name="attr_spell-points#REPLACE3##REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_spell-points#REPLACE3##REPLACE0#}" class="sheet-short" value="0"></td>
|
||||
<td class="sheet-centering-padding-2"><label>/</label></td>
|
||||
<td><input type="number" name="attr_#REPLACE2##REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_#REPLACE2##REPLACE0#}" class="sheet-short" value="0"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>Casting Time: </label></td>
|
||||
<td><input type="text" name="attr_casttime#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_casttime#REPLACE0#}" class="sheet-short"></td>
|
||||
<td></td>
|
||||
<td><button type="roll" style="margin: 0;" name="roll_initspell#REPLACE0#" title="%{repeating_spells#REPLACE0#_$X_initspell#REPLACE0#}" value="/gmroll [[{([[1d10]]+@{casttime#REPLACE0#}), 1}kh1]] [Initiative (@{spellname#REPLACE0#})]&{tracker}">Initiative</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><textarea name="attr_cast-macro#REPLACE0#" title="@{repeating_spells#REPLACE0#_$X_cast-macro#REPLACE0#}" class="sheet-input-like" placeholder="Insert Spell effects."></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><button type="roll" name="roll_spellcast#REPLACE0#" title="%{repeating_spells#REPLACE0#_$X_spellcast#REPLACE0#}" value="@{cast-macro#REPLACE0#}">Roll Spell Effects</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
@@ -1,118 +1,118 @@
|
||||
/* ---- Attributes tables start ---- */
|
||||
const strengthTable = {};
|
||||
strengthTable['strengthhit'] = ['Error','-5','-3','-3','-2','-2','-1','-1','0','0','0','0','0','0','0','0','0','+1','+1','+3','+3','+4','+4','+5','+6','+7'];
|
||||
strengthTable['strengthhit']['18[01-50]'] = '+1';
|
||||
strengthTable['strengthhit']['18[51-75]'] = '+2';
|
||||
strengthTable['strengthhit']['18[76-90]'] = '+2';
|
||||
strengthTable['strengthhit']['18[91-99]'] = '+2';
|
||||
strengthTable['strengthhit']['18[00]'] = '+3';
|
||||
|
||||
strengthTable['strengthdmg'] = ['Error','-4','-2','-1','-1','-1','0','0','0','0','0','0','0','0','0','0','+1','+1','+2','+7','+8','+9','+10','+11','+12','+14'];
|
||||
strengthTable['strengthdmg']['18[01-50]'] = '+3';
|
||||
strengthTable['strengthdmg']['18[51-75]'] = '+3';
|
||||
strengthTable['strengthdmg']['18[76-90]'] = '+4';
|
||||
strengthTable['strengthdmg']['18[91-99]'] = '+5';
|
||||
strengthTable['strengthdmg']['18[00]'] = '+6';
|
||||
|
||||
strengthTable['carryweight'] = ['Error','1','1','5','10','10','20','20','35','35','40','40','45','45','55','55','70','85','110','485','535','635','785','935','1235','1535'];
|
||||
strengthTable['carryweight']['18[01-50]'] = '135';
|
||||
strengthTable['carryweight']['18[51-75]'] = '160';
|
||||
strengthTable['carryweight']['18[76-90]'] = '185';
|
||||
strengthTable['carryweight']['18[91-99]'] = '235';
|
||||
strengthTable['carryweight']['18[00]'] = '335';
|
||||
|
||||
strengthTable['maxpress'] = ['Error','3','5','10','25','25','55','55','90','90','115','115','140','140','170','170','195','220','255','640','700','810','970','1130','1440','1750'];
|
||||
strengthTable['maxpress']['18[01-50]'] = '280';
|
||||
strengthTable['maxpress']['18[51-75]'] = '305';
|
||||
strengthTable['maxpress']['18[76-90]'] = '330';
|
||||
strengthTable['maxpress']['18[91-99]'] = '380';
|
||||
strengthTable['maxpress']['18[00]'] = '480';
|
||||
|
||||
strengthTable['opendoor'] = ['Error','1','1','2','3','3','4','4','5','5','6','6','7','7','8','8','9','10','11','16(8)','17(10)','17(12)','18(14)','18(16)','19(17)','19(18)'];
|
||||
strengthTable['opendoor']['18[01-50]'] = '12';
|
||||
strengthTable['opendoor']['18[51-75]'] = '13';
|
||||
strengthTable['opendoor']['18[76-90]'] = '14';
|
||||
strengthTable['opendoor']['18[91-99]'] = '15(3)';
|
||||
strengthTable['opendoor']['18[00]'] = '16(6)';
|
||||
|
||||
strengthTable['bendbar'] = ['Error','0','0','0','0','0','0','0','1','1','2','2','4','4','7','7','10','13','16','50','60','70','80','90','95','99'];
|
||||
strengthTable['bendbar']['18[01-50]'] = '20';
|
||||
strengthTable['bendbar']['18[51-75]'] = '25';
|
||||
strengthTable['bendbar']['18[76-90]'] = '30';
|
||||
strengthTable['bendbar']['18[91-99]'] = '35';
|
||||
strengthTable['bendbar']['18[00]'] = '40';
|
||||
|
||||
strengthTable['strnotes'] = ['INVALID STRENGTH','','','','','','','','','','','','','','','','','','','Hill Giant','Stone Giant','Frost Giant','Fire Giant','Cloud Giant','Storm Giant','Titan Giant'];
|
||||
strengthTable['strnotes']['18[01-50]'] = '';
|
||||
strengthTable['strnotes']['18[51-75]'] = '';
|
||||
strengthTable['strnotes']['18[76-90]'] = '';
|
||||
strengthTable['strnotes']['18[91-99]'] = '';
|
||||
strengthTable['strnotes']['18[00]'] = '';
|
||||
|
||||
strengthTable['str2notes'] = ['INVALID STRENGTH','','','','','','','','','','','','','','','','','','','(8) Locked, barred, or magical door. Only one attempt','(10) Locked, barred, or magical door. Only one attempt','(12) Locked, barred, or magical door. Only one attempt','(14) Locked, barred, or magical door. Only one attempt','(16) Locked, barred, or magical door. Only one attempt','(17) Locked, barred, or magical door. Only one attempt','(18) Locked, barred, or magical door. Only one attempt'];
|
||||
strengthTable['str2notes']['18[01-50]'] = '';
|
||||
strengthTable['str2notes']['18[51-75]'] = '';
|
||||
strengthTable['str2notes']['18[76-90]'] = '';
|
||||
strengthTable['str2notes']['18[91-99]'] = '(3) Locked, barred, or magical door. Only one attempt';
|
||||
strengthTable['str2notes']['18[00]'] = '(6) Locked, barred, or magical door. Only one attempt';
|
||||
|
||||
const dexterityTable = {};
|
||||
dexterityTable['dexreact'] = ['Error','-6','-4','-3','-2','-1','0','0','0','0','0','0','0','0','0','0','+1','+2','+2','+3','+3','+4','+4','+4','+5','+5'];
|
||||
dexterityTable['dexmissile'] = ['Error','-6','-4','-3','-2','-1','0','0','0','0','0','0','0','0','0','0','+1','+2','+2','+3','+3','+4','+4','+4','+5','+5'];
|
||||
dexterityTable['dexdefense'] = ['Error','+5','+5','+4','+3','+2','+1','0','0','0','0','0','0','0','0','-1','-2','-3','-4','-4','-4','-5','-5','-5','-6','-6'];
|
||||
|
||||
dexterityTable['dex-pickpocket'] = ['0','0','0','0','0','0','0','0','0','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-openlocks'] = ['0','0','0','0','0','0','0','0','0','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+35','+35','+35','+35'];
|
||||
dexterityTable['dex-findtraps'] = ['0','0','0','0','0','0','0','0','0','-10','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+25','+25','+25','+25'];
|
||||
dexterityTable['dex-movesilently'] = ['0','0','0','0','0','0','0','0','0','-20','-15','-10','-5','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-hideinshadows'] = ['0','0','0','0','0','0','0','0','0','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-climbwalls'] = ['0','0','0','0','0','0','0','0','0','-10','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+25','+25','+25','+25'];
|
||||
dexterityTable['dex-tunneling'] = ['0','0','0','0','0','0','0','0','0','-10','-5','-0','0','0','0','0','0','0','+5','+10','+15','+20','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-escapebonds'] = ['0','0','0','0','0','0','0','0','0','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
|
||||
dexterityTable['aim-pickpocket'] = ['0','0','0','-30','-25','-25','-20','-20','-15','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+20','+25','+25','+30','+30'];
|
||||
dexterityTable['aim-openlocks'] = ['0','0','0','-30','-25','-20','-20','-15','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+20','+25','+25','+30','+30','+35'];
|
||||
|
||||
dexterityTable['balance-movesilently'] = ['0','0','0','-30','-30','-30','-25','-25','-20','-20','-15','-10','-5','0','0','0','0','+5','+10','+15','+15','+20','+20','+25','+25','+30'];
|
||||
dexterityTable['balance-climbwalls'] = ['0','0','0','-30','-25','-20','-20','-15','-15','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+20','+25','+25','+30','+30'];
|
||||
|
||||
dexterityTable['dexnotes'] = ['INVALID DEXTERITY','','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
|
||||
const constitutionTable = {};
|
||||
constitutionTable['conadj'] = ['Error','-3','-2','-2','-1','-1','-1','0','0','0','0','0','0','0','0','+1','+2','+2(+3)','+2(+4)','+2(+5)','+2(+5)','+2(+6)','+2(+6)','+2(+6)','+2(+7)','+2(+7)'];
|
||||
constitutionTable['conshock'] = ['Error','25','30','35','40','45','50','55','60','65','70','75','80','85','88','90','95','97','99','99','99','99','99','99','99','100'];
|
||||
constitutionTable['conres'] = ['Error','30','35','40','45','50','55','60','65','70','75','80','85','90','92','94','96','98','100','100','100','100','100','100','100','100'];
|
||||
constitutionTable['conpoisonsave'] = ['Error','-2','-1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','+1','+1','+2','+2','+3','+3','+4'];
|
||||
constitutionTable['conregen'] = ['Error','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1/6','1/5','1/4','1/3','1/2','1/1'];
|
||||
constitutionTable['connotes'] = ['INVALID CONSTITUTION','','','','','','','','','','','','','','','','','','','','1 hp/6 turns - not acid/fire','1 hp/5 turns - not acid/fire','1 hp/4 turns - not acid/fire','1 hp/3 turns - not acid/fire','1 hp/2 turns - not acid/fire','1 hp/turn - not acid/fire'];
|
||||
constitutionTable['con2notes'] = ['INVALID CONSTITUTION','','','','','','','','','','','','','','','','','(+3) Warriors only','(+4) Warriors only','(+5) Warriors only','(+5) Warriors only','(+6) Warriors only','(+6) Warriors only','(+6) Warriors only','(+7) Warriors only','(+7) Warriors only'];
|
||||
|
||||
const intelligenceTable = {};
|
||||
intelligenceTable['intlang'] = ['Error','0','1','1','1','1','1','1','1','2','2','2','3','3','4','4','5','6','7','8','9','10','11','12','15','20'];
|
||||
intelligenceTable['intlvl'] = ['Error','—','—','—','—','—','—','—','—','4th','5th','5th','6th','6th','7th','7th','8th','8th','9th','9th','9th','9th','9th','9th','9th','9th'];
|
||||
intelligenceTable['intchance'] = ['Error','0','0','0','0','0','0','0','0','35','40','45','50','55','60','65','70','75','85','95','96','97','98','99','100','100'];
|
||||
intelligenceTable['intmax'] = ['Error','—','—','—','—','—','—','—','—','6','7','7','7','9','9','11','11','14','18','All','All','All','All','All','All','All'];
|
||||
intelligenceTable['intimm1st'] = ['Error','','','','','','','','','','','','','','','','','','','1st-level','1st-level','1st-level','1st-level','1st-level','1st-level','1st-level'];
|
||||
intelligenceTable['intimm2nd'] = ['Error','','','','','','','','','','','','','','','','','','','','2nd-level','2nd-level','2nd-level','2nd-level','2nd-level','2nd-level'];
|
||||
intelligenceTable['intimm3rd'] = ['Error','','','','','','','','','','','','','','','','','','','','','3rd-level','3rd-level','3rd-level','3rd-level','3rd-level'];
|
||||
intelligenceTable['intimm4th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','4th-level','4th-level','4th-level','4th-level'];
|
||||
intelligenceTable['intimm5th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','','5th-level','5th-level','5th-level'];
|
||||
intelligenceTable['intimm6th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','','','6th-level','6th-level'];
|
||||
intelligenceTable['intimm7th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','','','','7th-level'];
|
||||
intelligenceTable['intnotes'] = ['INVALID INTELLIGENCE','Communicate by Grunts & Gestures','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
|
||||
const wisdomTable = {};
|
||||
wisdomTable['wisdef'] = ['Error','-6','-4','-3','-2','-1','-1','-1','0','0','0','0','0','0','0','+1','+2','+3','+4','+4','+4','+4','+4','+4','+4','+4'];
|
||||
wisdomTable['wisbonus'] = ['Error','—','—','—','—','—','—','—','—','0','0','0','0','1st','1st','2nd','2nd','3rd','4th','1st,3rd','2nd,4th','3rd,5th','4th,5th','1st,6th','5th,6th','6th,7th'];
|
||||
wisdomTable['wisbonus-prime'] = ['Error','','','','','','','','','','','','','1st','2x1st','2x1st, 2nd','2x1st, 2x2nd','2x1st, 2x2nd, 3rd','2x1st, 2x2nd, 3rd, 4th','3x1st, 2x2nd, 2x3rd, 4th','3x1st, 3x2nd, 2x3rd, 2x4th','3x1st, 3x2nd, 3x3rd, 2x4th','3x1st, 3x2nd, 3x3rd, 3x4th','4x1st, 3x2nd, 3x3rd, 3x4th','4x1st, 3x2nd, 3x3rd, 3x4th','4x1st, 3x2nd, 3x3rd, 3x4th'];
|
||||
wisdomTable['wisbonus-extra'] = ['Error','','','','','','','','','','','','','','','','','','','','','5th','2x5th','2x5th, 6th','3x5th, 2x6th','3x5th, 3x6th, 7th'];
|
||||
wisdomTable['wisfail'] = ['Error','80','60','50','45','40','35','30','25','20','15','10','5','0','0','0','0','0','0','0','0','0','0','0','0','0'];
|
||||
wisdomTable['wisimmune'] = ['Error','','','','','','','','','','','','','','','','','','','cause fear, charm person, command, friends, hypnotism','forget, hold person, ray of enfeeblement, scare','fear','charm monster, confusion, emotion, fumble, suggestion','chaos, feeblemind, hold monster, magic jar, quest','geas, mass suggestion, rod of rulership','antipathy/sympathy, death spell, mass charm'];
|
||||
wisdomTable['wisnotes'] = ['INVALID WISDOM','','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
|
||||
const charismaTable = {};
|
||||
charismaTable['chamax'] = ['Error','0','1','1','1','2','2','3','3','4','4','4','5','5','6','7','8','10','15','20','25','30','35','40','45','50'];
|
||||
charismaTable['chaloy'] = ['Error','-8','-7','-6','-5','-4','-3','-2','-1','0','0','0','0','0','+1','+3','+4','+6','+8','+10','+12','+14','+16','+18','+20','+20'];
|
||||
charismaTable['chareact'] = ['Error','-7','-6','-5','-4','-3','-2','-1','0','0','0','0','0','+1','+2','+3','+5','+6','+7','+8','+9','+10','+11','+12','+13','+14'];
|
||||
charismaTable['chanotes'] = ['INVALID CHARISMA','','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
/* ---- Attributes tables start ---- */
|
||||
const strengthTable = {};
|
||||
strengthTable['strengthhit'] = ['Error','-5','-3','-3','-2','-2','-1','-1','0','0','0','0','0','0','0','0','0','+1','+1','+3','+3','+4','+4','+5','+6','+7'];
|
||||
strengthTable['strengthhit']['18[01-50]'] = '+1';
|
||||
strengthTable['strengthhit']['18[51-75]'] = '+2';
|
||||
strengthTable['strengthhit']['18[76-90]'] = '+2';
|
||||
strengthTable['strengthhit']['18[91-99]'] = '+2';
|
||||
strengthTable['strengthhit']['18[00]'] = '+3';
|
||||
|
||||
strengthTable['strengthdmg'] = ['Error','-4','-2','-1','-1','-1','0','0','0','0','0','0','0','0','0','0','+1','+1','+2','+7','+8','+9','+10','+11','+12','+14'];
|
||||
strengthTable['strengthdmg']['18[01-50]'] = '+3';
|
||||
strengthTable['strengthdmg']['18[51-75]'] = '+3';
|
||||
strengthTable['strengthdmg']['18[76-90]'] = '+4';
|
||||
strengthTable['strengthdmg']['18[91-99]'] = '+5';
|
||||
strengthTable['strengthdmg']['18[00]'] = '+6';
|
||||
|
||||
strengthTable['carryweight'] = ['Error','1','1','5','10','10','20','20','35','35','40','40','45','45','55','55','70','85','110','485','535','635','785','935','1235','1535'];
|
||||
strengthTable['carryweight']['18[01-50]'] = '135';
|
||||
strengthTable['carryweight']['18[51-75]'] = '160';
|
||||
strengthTable['carryweight']['18[76-90]'] = '185';
|
||||
strengthTable['carryweight']['18[91-99]'] = '235';
|
||||
strengthTable['carryweight']['18[00]'] = '335';
|
||||
|
||||
strengthTable['maxpress'] = ['Error','3','5','10','25','25','55','55','90','90','115','115','140','140','170','170','195','220','255','640','700','810','970','1130','1440','1750'];
|
||||
strengthTable['maxpress']['18[01-50]'] = '280';
|
||||
strengthTable['maxpress']['18[51-75]'] = '305';
|
||||
strengthTable['maxpress']['18[76-90]'] = '330';
|
||||
strengthTable['maxpress']['18[91-99]'] = '380';
|
||||
strengthTable['maxpress']['18[00]'] = '480';
|
||||
|
||||
strengthTable['opendoor'] = ['Error','1','1','2','3','3','4','4','5','5','6','6','7','7','8','8','9','10','11','16(8)','17(10)','17(12)','18(14)','18(16)','19(17)','19(18)'];
|
||||
strengthTable['opendoor']['18[01-50]'] = '12';
|
||||
strengthTable['opendoor']['18[51-75]'] = '13';
|
||||
strengthTable['opendoor']['18[76-90]'] = '14';
|
||||
strengthTable['opendoor']['18[91-99]'] = '15(3)';
|
||||
strengthTable['opendoor']['18[00]'] = '16(6)';
|
||||
|
||||
strengthTable['bendbar'] = ['Error','0','0','0','0','0','0','0','1','1','2','2','4','4','7','7','10','13','16','50','60','70','80','90','95','99'];
|
||||
strengthTable['bendbar']['18[01-50]'] = '20';
|
||||
strengthTable['bendbar']['18[51-75]'] = '25';
|
||||
strengthTable['bendbar']['18[76-90]'] = '30';
|
||||
strengthTable['bendbar']['18[91-99]'] = '35';
|
||||
strengthTable['bendbar']['18[00]'] = '40';
|
||||
|
||||
strengthTable['strnotes'] = ['INVALID STRENGTH','','','','','','','','','','','','','','','','','','','Hill Giant','Stone Giant','Frost Giant','Fire Giant','Cloud Giant','Storm Giant','Titan Giant'];
|
||||
strengthTable['strnotes']['18[01-50]'] = '';
|
||||
strengthTable['strnotes']['18[51-75]'] = '';
|
||||
strengthTable['strnotes']['18[76-90]'] = '';
|
||||
strengthTable['strnotes']['18[91-99]'] = '';
|
||||
strengthTable['strnotes']['18[00]'] = '';
|
||||
|
||||
strengthTable['str2notes'] = ['INVALID STRENGTH','','','','','','','','','','','','','','','','','','','(8) Locked, barred, or magical door. Only one attempt','(10) Locked, barred, or magical door. Only one attempt','(12) Locked, barred, or magical door. Only one attempt','(14) Locked, barred, or magical door. Only one attempt','(16) Locked, barred, or magical door. Only one attempt','(17) Locked, barred, or magical door. Only one attempt','(18) Locked, barred, or magical door. Only one attempt'];
|
||||
strengthTable['str2notes']['18[01-50]'] = '';
|
||||
strengthTable['str2notes']['18[51-75]'] = '';
|
||||
strengthTable['str2notes']['18[76-90]'] = '';
|
||||
strengthTable['str2notes']['18[91-99]'] = '(3) Locked, barred, or magical door. Only one attempt';
|
||||
strengthTable['str2notes']['18[00]'] = '(6) Locked, barred, or magical door. Only one attempt';
|
||||
|
||||
const dexterityTable = {};
|
||||
dexterityTable['dexreact'] = ['Error','-6','-4','-3','-2','-1','0','0','0','0','0','0','0','0','0','0','+1','+2','+2','+3','+3','+4','+4','+4','+5','+5'];
|
||||
dexterityTable['dexmissile'] = ['Error','-6','-4','-3','-2','-1','0','0','0','0','0','0','0','0','0','0','+1','+2','+2','+3','+3','+4','+4','+4','+5','+5'];
|
||||
dexterityTable['dexdefense'] = ['Error','+5','+5','+4','+3','+2','+1','0','0','0','0','0','0','0','0','-1','-2','-3','-4','-4','-4','-5','-5','-5','-6','-6'];
|
||||
|
||||
dexterityTable['dex-pickpocket'] = ['0','0','0','0','0','0','0','0','0','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-openlocks'] = ['0','0','0','0','0','0','0','0','0','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+35','+35','+35','+35'];
|
||||
dexterityTable['dex-findtraps'] = ['0','0','0','0','0','0','0','0','0','-10','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+25','+25','+25','+25'];
|
||||
dexterityTable['dex-movesilently'] = ['0','0','0','0','0','0','0','0','0','-20','-15','-10','-5','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-hideinshadows'] = ['0','0','0','0','0','0','0','0','0','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-climbwalls'] = ['0','0','0','0','0','0','0','0','0','-10','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+25','+25','+25','+25'];
|
||||
dexterityTable['dex-tunneling'] = ['0','0','0','0','0','0','0','0','0','-10','-5','-0','0','0','0','0','0','0','+5','+10','+15','+20','+30','+30','+30','+30'];
|
||||
dexterityTable['dex-escapebonds'] = ['0','0','0','0','0','0','0','0','0','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+25','+30','+30','+30','+30'];
|
||||
|
||||
dexterityTable['aim-pickpocket'] = ['0','0','0','-30','-25','-25','-20','-20','-15','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+20','+25','+25','+30','+30'];
|
||||
dexterityTable['aim-openlocks'] = ['0','0','0','-30','-25','-20','-20','-15','-15','-10','-5','0','0','0','0','0','+5','+10','+15','+20','+20','+25','+25','+30','+30','+35'];
|
||||
|
||||
dexterityTable['balance-movesilently'] = ['0','0','0','-30','-30','-30','-25','-25','-20','-20','-15','-10','-5','0','0','0','0','+5','+10','+15','+15','+20','+20','+25','+25','+30'];
|
||||
dexterityTable['balance-climbwalls'] = ['0','0','0','-30','-25','-20','-20','-15','-15','-10','-5','0','0','0','0','0','0','+5','+10','+15','+20','+20','+25','+25','+30','+30'];
|
||||
|
||||
dexterityTable['dexnotes'] = ['INVALID DEXTERITY','','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
|
||||
const constitutionTable = {};
|
||||
constitutionTable['conadj'] = ['Error','-3','-2','-2','-1','-1','-1','0','0','0','0','0','0','0','0','+1','+2','+2(+3)','+2(+4)','+2(+5)','+2(+5)','+2(+6)','+2(+6)','+2(+6)','+2(+7)','+2(+7)'];
|
||||
constitutionTable['conshock'] = ['Error','25','30','35','40','45','50','55','60','65','70','75','80','85','88','90','95','97','99','99','99','99','99','99','99','100'];
|
||||
constitutionTable['conres'] = ['Error','30','35','40','45','50','55','60','65','70','75','80','85','90','92','94','96','98','100','100','100','100','100','100','100','100'];
|
||||
constitutionTable['conpoisonsave'] = ['Error','-2','-1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','+1','+1','+2','+2','+3','+3','+4'];
|
||||
constitutionTable['conregen'] = ['Error','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1/6','1/5','1/4','1/3','1/2','1/1'];
|
||||
constitutionTable['connotes'] = ['INVALID CONSTITUTION','','','','','','','','','','','','','','','','','','','','1 hp/6 turns - not acid/fire','1 hp/5 turns - not acid/fire','1 hp/4 turns - not acid/fire','1 hp/3 turns - not acid/fire','1 hp/2 turns - not acid/fire','1 hp/turn - not acid/fire'];
|
||||
constitutionTable['con2notes'] = ['INVALID CONSTITUTION','','','','','','','','','','','','','','','','','(+3) Warriors only','(+4) Warriors only','(+5) Warriors only','(+5) Warriors only','(+6) Warriors only','(+6) Warriors only','(+6) Warriors only','(+7) Warriors only','(+7) Warriors only'];
|
||||
|
||||
const intelligenceTable = {};
|
||||
intelligenceTable['intlang'] = ['Error','0','1','1','1','1','1','1','1','2','2','2','3','3','4','4','5','6','7','8','9','10','11','12','15','20'];
|
||||
intelligenceTable['intlvl'] = ['Error','—','—','—','—','—','—','—','—','4th','5th','5th','6th','6th','7th','7th','8th','8th','9th','9th','9th','9th','9th','9th','9th','9th'];
|
||||
intelligenceTable['intchance'] = ['Error','0','0','0','0','0','0','0','0','35','40','45','50','55','60','65','70','75','85','95','96','97','98','99','100','100'];
|
||||
intelligenceTable['intmax'] = ['Error','—','—','—','—','—','—','—','—','6','7','7','7','9','9','11','11','14','18','All','All','All','All','All','All','All'];
|
||||
intelligenceTable['intimm1st'] = ['Error','','','','','','','','','','','','','','','','','','','1st-level','1st-level','1st-level','1st-level','1st-level','1st-level','1st-level'];
|
||||
intelligenceTable['intimm2nd'] = ['Error','','','','','','','','','','','','','','','','','','','','2nd-level','2nd-level','2nd-level','2nd-level','2nd-level','2nd-level'];
|
||||
intelligenceTable['intimm3rd'] = ['Error','','','','','','','','','','','','','','','','','','','','','3rd-level','3rd-level','3rd-level','3rd-level','3rd-level'];
|
||||
intelligenceTable['intimm4th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','4th-level','4th-level','4th-level','4th-level'];
|
||||
intelligenceTable['intimm5th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','','5th-level','5th-level','5th-level'];
|
||||
intelligenceTable['intimm6th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','','','6th-level','6th-level'];
|
||||
intelligenceTable['intimm7th'] = ['Error','','','','','','','','','','','','','','','','','','','','','','','','','7th-level'];
|
||||
intelligenceTable['intnotes'] = ['INVALID INTELLIGENCE','Communicate by Grunts & Gestures','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
|
||||
const wisdomTable = {};
|
||||
wisdomTable['wisdef'] = ['Error','-6','-4','-3','-2','-1','-1','-1','0','0','0','0','0','0','0','+1','+2','+3','+4','+4','+4','+4','+4','+4','+4','+4'];
|
||||
wisdomTable['wisbonus'] = ['Error','—','—','—','—','—','—','—','—','0','0','0','0','1st','1st','2nd','2nd','3rd','4th','1st,3rd','2nd,4th','3rd,5th','4th,5th','1st,6th','5th,6th','6th,7th'];
|
||||
wisdomTable['wisbonus-prime'] = ['Error','','','','','','','','','','','','','1st','2x1st','2x1st, 2nd','2x1st, 2x2nd','2x1st, 2x2nd, 3rd','2x1st, 2x2nd, 3rd, 4th','3x1st, 2x2nd, 2x3rd, 4th','3x1st, 3x2nd, 2x3rd, 2x4th','3x1st, 3x2nd, 3x3rd, 2x4th','3x1st, 3x2nd, 3x3rd, 3x4th','4x1st, 3x2nd, 3x3rd, 3x4th','4x1st, 3x2nd, 3x3rd, 3x4th','4x1st, 3x2nd, 3x3rd, 3x4th'];
|
||||
wisdomTable['wisbonus-extra'] = ['Error','','','','','','','','','','','','','','','','','','','','','5th','2x5th','2x5th, 6th','3x5th, 2x6th','3x5th, 3x6th, 7th'];
|
||||
wisdomTable['wisfail'] = ['Error','80','60','50','45','40','35','30','25','20','15','10','5','0','0','0','0','0','0','0','0','0','0','0','0','0'];
|
||||
wisdomTable['wisimmune'] = ['Error','','','','','','','','','','','','','','','','','','','cause fear, charm person, command, friends, hypnotism','forget, hold person, ray of enfeeblement, scare','fear','charm monster, confusion, emotion, fumble, suggestion','chaos, feeblemind, hold monster, magic jar, quest','geas, mass suggestion, rod of rulership','antipathy/sympathy, death spell, mass charm'];
|
||||
wisdomTable['wisnotes'] = ['INVALID WISDOM','','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
|
||||
const charismaTable = {};
|
||||
charismaTable['chamax'] = ['Error','0','1','1','1','2','2','3','3','4','4','4','5','5','6','7','8','10','15','20','25','30','35','40','45','50'];
|
||||
charismaTable['chaloy'] = ['Error','-8','-7','-6','-5','-4','-3','-2','-1','0','0','0','0','0','+1','+3','+4','+6','+8','+10','+12','+14','+16','+18','+20','+20'];
|
||||
charismaTable['chareact'] = ['Error','-7','-6','-5','-4','-3','-2','-1','0','0','0','0','0','+1','+2','+3','+5','+6','+7','+8','+9','+10','+11','+12','+13','+14'];
|
||||
charismaTable['chanotes'] = ['INVALID CHARISMA','','','','','','','','','','','','','','','','','','','','','','','','','',''];
|
||||
/* ---- Attributes tables end ---- */
|
||||
@@ -1,152 +1,257 @@
|
||||
// --- Version change start --- //
|
||||
|
||||
const sheetName = 'AD&D 2E Revised';
|
||||
const sheetVersion = '4.2.0';
|
||||
|
||||
on('sheet:opened', function(){
|
||||
getAttrs(['character_sheet'],function(attrs){
|
||||
let cs=(attrs.character_sheet||'').match(/(.*)\s+v(.*)/) || [];
|
||||
let sheet_name=cs[1] || '';
|
||||
let sheet_version=cs[2] || '0.0.0';
|
||||
|
||||
// do something with sheet_name and sheet_version, if you might be converting
|
||||
|
||||
if(sheet_name !== sheetName || sheet_version !== sheetVersion) {
|
||||
console.log(`Updating character sheet from ${sheet_version} to ${sheetVersion}`);
|
||||
setAttrs({
|
||||
character_sheet: `${sheetName} v${sheetVersion}`,
|
||||
version: `v${sheetVersion}`,
|
||||
announcement: 1
|
||||
},{silent:true});
|
||||
|
||||
//#region Migrations
|
||||
|
||||
let oldSheetVersion = new SheetVersion(sheet_version);
|
||||
|
||||
// Starting with the oldest version, just in case some field has been moved from A -> B, B -> C
|
||||
if (oldSheetVersion.isBelowMigrate(3, 3, 0))
|
||||
migrate3_3_0();
|
||||
|
||||
if (oldSheetVersion.isBelowMigrate(3, 3, 2))
|
||||
migrate3_3_2();
|
||||
|
||||
if (oldSheetVersion.isBelowMigrate(3, 4, 0))
|
||||
migrate3_4_0();
|
||||
|
||||
//#endregion
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// --- Version change end --- //
|
||||
|
||||
//#region Helpers
|
||||
function SheetVersion(sheetVersionString) {
|
||||
let splitVersions = sheetVersionString.match(/(\d+)\.(\d+)\.(\d+)/) || [];
|
||||
this.major = parseInt(splitVersions[1]) || 0;
|
||||
this.minor = parseInt(splitVersions[2]) || 0;
|
||||
this.bug = parseInt(splitVersions[3]) || 0;
|
||||
this.isBelowMigrate = function (migrateMajor, migrateMinor, migrateBug) {
|
||||
if (this.major < migrateMajor)
|
||||
return true;
|
||||
if (this.major > migrateMajor)
|
||||
return false;
|
||||
|
||||
if (this.minor < migrateMinor)
|
||||
return true;
|
||||
if (this.minor > migrateMinor)
|
||||
return false;
|
||||
|
||||
return this.bug < migrateBug;
|
||||
}
|
||||
}
|
||||
|
||||
function moveStaticToRepeating(section, fieldsToMove) {
|
||||
getAttrs(fieldsToMove, function (values) {
|
||||
if (values[fieldsToMove[0]]) {
|
||||
|
||||
console.log(`${fieldsToMove[0]} has a value. Moving static to repeating`);
|
||||
|
||||
let newrowid = generateRowID();
|
||||
let newValue = {};
|
||||
|
||||
for (const [field, value] of Object.entries(values)) {
|
||||
newValue[`repeating_${section}_${newrowid}_${field}`] = value;
|
||||
newValue[field] = '';
|
||||
}
|
||||
|
||||
setAttrs(newValue);
|
||||
}
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 3.4.0
|
||||
function migrate3_4_0() {
|
||||
console.log('Migrating to v3.4.0');
|
||||
getAttrs(['nonprof-penalty'], function(values) {
|
||||
let nonprof = Math.abs(parseInt(values['nonprof-penalty']) || 0) * -1;
|
||||
let famil = Math.floor(nonprof / 2)
|
||||
setAttrs({
|
||||
['nonprof-penalty']: nonprof,
|
||||
['famil-penalty']: famil
|
||||
});
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 3.3.2
|
||||
function migrate3_3_2() {
|
||||
console.log('Migrating to v3.3.2');
|
||||
moveStaticToRepeating('weaponprofs', ['weapprofname', 'weapprofnum', 'expert', 'specialist', 'mastery', 'high-mastery', 'grand-mastery', 'chosen-weapon']);
|
||||
moveStaticToRepeating('profs', ['profname', 'profslots', 'profstatnum', 'profmod']);
|
||||
moveStaticToRepeating('langs', ['langname', 'lang-rw']);
|
||||
moveStaticToRepeating('gear', ['geardesc', 'gearweight', 'gearqty', 'gearloc']);
|
||||
moveStaticToRepeating('gear-stored', ['gear-stored-desc', 'gear-stored-weight', 'gear-stored-qty', 'gear-stored-loc', 'on-mount']);
|
||||
moveStaticToRepeating('magicres', ['magresname', 'magrestar', 'magresmod', 'magresnotes']);
|
||||
|
||||
//ranged weapons
|
||||
moveStaticToRepeating('weapons2', ['weaponname2', 'strbonus2', 'dexbonus2', 'prof-level2', 'range-mod-attack', 'attacknum2', 'attackadj2', 'ThAC02', 'crit-thresh2', 'range2', 'size2', 'weaptype-slash2', 'weaptype-pierce2', 'weaptype-blunt2', 'weapspeed2']);
|
||||
moveStaticToRepeating('ammo', ['ammoname', 'strbonus3', 'dexbonus3', 'specialist-damage2', 'mastery-damage2', 'damadj2', 'damsm2', 'daml2', 'knockdown2', 'ammoremain']);
|
||||
|
||||
//melee damage weapons
|
||||
moveStaticToRepeating('weapons', ['weaponname', 'strbonus', 'dexbonus', 'prof-level', 'attacknum', 'attackadj', 'ThAC0', 'crit-thresh', 'range', 'size', 'weaptype-slash', 'weaptype-pierce', 'weaptype-blunt', 'weapspeed']);
|
||||
moveStaticToRepeating('weapons-damage', ['weaponname1', 'strbonus1', 'dexbonus1', 'specialist-damage', 'mastery-damage', 'damadj', 'damsm', 'daml', 'knockdown1']);
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 3.3.0
|
||||
function migrate3_3_0() {
|
||||
console.log('Migrating to v3.3.0');
|
||||
getAttrs(['spell-points', 'spell-points-priest'], function(values) {
|
||||
let sp = parseInt(values['spell-points']) || 0;
|
||||
let psp = parseInt(values['spell-points-priest']) || 0;
|
||||
|
||||
let newValue = {};
|
||||
if (sp > 0) {
|
||||
console.log(`Old spell points: ${sp}`);
|
||||
newValue['spell-points-lvl'] = sp;
|
||||
newValue['spell-points'] = '';
|
||||
}
|
||||
|
||||
if (psp > 0) {
|
||||
console.log(`Old spell points priest: ${psp}`);
|
||||
newValue['spell-points-priest-lvl'] = psp;
|
||||
newValue['spell-points-priest'] = '';
|
||||
}
|
||||
|
||||
setAttrs(newValue);
|
||||
});
|
||||
|
||||
TAS.repeating('spells')
|
||||
.fields('spell-points', 'spell-points1', 'arc', 'arc1')
|
||||
.each(function (r) {
|
||||
console.log('Updating repeating spells-points and arc');
|
||||
r['spell-points'] = (r.I['spell-points1']);
|
||||
r['spell-points1'] = '';
|
||||
r['arc'] = (r.I['arc1']);
|
||||
r['arc1'] = '';
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
// --- Version change start --- //
|
||||
|
||||
const sheetName = 'AD&D 2E Revised';
|
||||
const sheetVersion = '4.4.0';
|
||||
|
||||
on('sheet:opened', function(){
|
||||
getAttrs(['character_sheet'],function(attrs){
|
||||
let cs=(attrs.character_sheet||'').match(/(.*)\s+v(.*)/) || [];
|
||||
let sheet_name=cs[1] || '';
|
||||
let sheet_version=cs[2] || '0.0.0';
|
||||
|
||||
// do something with sheet_name and sheet_version, if you might be converting
|
||||
|
||||
if(sheet_name !== sheetName || sheet_version !== sheetVersion) {
|
||||
console.log(`Updating character sheet from ${sheet_version} to ${sheetVersion}`);
|
||||
setAttrs({
|
||||
character_sheet: `${sheetName} v${sheetVersion}`,
|
||||
version: `v${sheetVersion}`,
|
||||
announcement: 1
|
||||
},{silent:true});
|
||||
|
||||
//#region Migrations
|
||||
|
||||
let oldSheetVersion = new SheetVersion(sheet_version);
|
||||
|
||||
// Starting with the oldest version, just in case some field has been moved from A -> B, B -> C
|
||||
if (oldSheetVersion.isBelowMigrate(3, 3, 0))
|
||||
migrate3_3_0();
|
||||
|
||||
if (oldSheetVersion.isBelowMigrate(3, 3, 2))
|
||||
migrate3_3_2();
|
||||
|
||||
if (oldSheetVersion.isBelowMigrate(3, 4, 0))
|
||||
migrate3_4_0();
|
||||
|
||||
if (oldSheetVersion.isBelowMigrate(4, 3, 0))
|
||||
migrate4_3_0();
|
||||
|
||||
//#endregion
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// --- Version change end --- //
|
||||
|
||||
//#region Helpers
|
||||
function SheetVersion(sheetVersionString) {
|
||||
let splitVersions = sheetVersionString.match(/(\d+)\.(\d+)\.(\d+)/) || [];
|
||||
this.major = parseInt(splitVersions[1]) || 0;
|
||||
this.minor = parseInt(splitVersions[2]) || 0;
|
||||
this.bug = parseInt(splitVersions[3]) || 0;
|
||||
this.isBelowMigrate = function (migrateMajor, migrateMinor, migrateBug) {
|
||||
if (this.major < migrateMajor)
|
||||
return true;
|
||||
if (this.major > migrateMajor)
|
||||
return false;
|
||||
|
||||
if (this.minor < migrateMinor)
|
||||
return true;
|
||||
if (this.minor > migrateMinor)
|
||||
return false;
|
||||
|
||||
return this.bug < migrateBug;
|
||||
}
|
||||
}
|
||||
|
||||
function moveStaticToRepeating(section, fieldsToMove) {
|
||||
getAttrs(fieldsToMove, function (values) {
|
||||
if (values[fieldsToMove[0]]) {
|
||||
|
||||
console.log(`${fieldsToMove[0]} has a value. Moving static to repeating`);
|
||||
|
||||
let newrowid = generateRowID();
|
||||
let newValue = {};
|
||||
|
||||
for (const [field, value] of Object.entries(values)) {
|
||||
newValue[`repeating_${section}_${newrowid}_${field}`] = value;
|
||||
newValue[field] = '';
|
||||
}
|
||||
|
||||
setAttrs(newValue);
|
||||
}
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 4.3.0
|
||||
let oldCurrencySections = [['2', 'Dragonlance'], ['3', 'Dark Sun'], ['4', 'Ravenloft'], ['5', 'Maztica'], ['6', 'BirthRight']];
|
||||
let fieldArray = ['gemdesc', 'gemvalue', 'gemqty', 'gemsizecut'];
|
||||
function migrate4_3_0() {
|
||||
console.log('Migrating to v4.3.0');
|
||||
migrateGems();
|
||||
migrateOtherValuables();
|
||||
}
|
||||
|
||||
function migrateGems() {
|
||||
moveStaticToRepeating('gem', fieldArray) // Move Standard static gem
|
||||
oldCurrencySections.forEach(section => {
|
||||
let index = section[0];
|
||||
let name = section[1];
|
||||
let oldGemFields = fieldArray.map(s => `${s}${index}`);
|
||||
let sectionName = `gem${index}`;
|
||||
let gemdesc = `gemdesc${index}`;
|
||||
let gemsizecut = `gemsizecut${index}`;
|
||||
let gemvalue = `gemvalue${index}`;
|
||||
let gemqty = `gemqty${index}`;
|
||||
TAS.repeating(sectionName)
|
||||
.attrs(oldGemFields)
|
||||
.fields(oldGemFields)
|
||||
.reduce(function (memo, row) {
|
||||
if ((row.hasOwnProperty(gemdesc) && row.S[gemdesc]) ||
|
||||
(row.hasOwnProperty(gemsizecut) && row.S[gemsizecut]) ||
|
||||
(row.hasOwnProperty(gemvalue) && row.F[gemvalue]) ||
|
||||
(row.hasOwnProperty(gemqty) && row.F[gemqty])) {
|
||||
console.log(`Moving repeating gem: '${row[gemdesc]}'`)
|
||||
|
||||
memo.push(oldGemFields.map(field => row[field] || ''));
|
||||
removeRepeatingRow(`repeating_${sectionName}_${row.id}`);
|
||||
}
|
||||
return memo;
|
||||
}, [], function (memo, rowSet, attrSet) {
|
||||
let newValue = {};
|
||||
if ((attrSet.hasOwnProperty(gemdesc) && attrSet.S[gemdesc]) ||
|
||||
(attrSet.hasOwnProperty(gemsizecut) && attrSet.S[gemsizecut]) ||
|
||||
(attrSet.hasOwnProperty(gemvalue) && attrSet.F[gemvalue]) ||
|
||||
(attrSet.hasOwnProperty(gemqty) && attrSet.F[gemqty])) {
|
||||
console.log(`Moving static gem: '${attrSet[gemdesc]}'`)
|
||||
|
||||
memo.splice(0, 0, oldGemFields.map(field => attrSet[field]));
|
||||
newValue[gemdesc] = '';
|
||||
newValue[gemvalue] = '';
|
||||
newValue[gemqty] = '';
|
||||
newValue[gemsizecut] = '';
|
||||
}
|
||||
if (memo.length > 0) {
|
||||
memo.splice(0, 0, [`--${name}--`, '', '', '---------']);
|
||||
}
|
||||
memo.forEach(gem => {
|
||||
let newrowid = generateRowID();
|
||||
newValue[`repeating_gem_${newrowid}_gemdesc`] = gem[0];
|
||||
newValue[`repeating_gem_${newrowid}_gemvalue`] = gem[1];
|
||||
newValue[`repeating_gem_${newrowid}_gemqty`] = gem[2];
|
||||
newValue[`repeating_gem_${newrowid}_gemsizecut`] = gem[3];
|
||||
})
|
||||
setAttrs(newValue);
|
||||
})
|
||||
.execute();
|
||||
})
|
||||
}
|
||||
|
||||
function migrateOtherValuables() {
|
||||
let newValue = {};
|
||||
let allCurrencySections = [['']].concat(oldCurrencySections);
|
||||
let valuablesFields = allCurrencySections.map(s => `otherval${s[0]}`);
|
||||
let gpFields = allCurrencySections.map(s => `othervalue${s[0]}`);
|
||||
getAttrs(gpFields.concat(valuablesFields), function(values) {
|
||||
let total = 0;
|
||||
let valuablesString = '';
|
||||
gpFields.forEach(field => {
|
||||
total += parseInt(values[field]) || 0;
|
||||
newValue[field] = '';
|
||||
});
|
||||
newValue['othervalue'] = total;
|
||||
|
||||
valuablesFields.forEach(field => {
|
||||
let oldValue = values[field] || '';
|
||||
if (oldValue) {
|
||||
if (valuablesString) {
|
||||
valuablesString += '\n\n';
|
||||
}
|
||||
|
||||
if (field === 'otherval') { // Standard case, no name needed
|
||||
valuablesString += oldValue;
|
||||
} else {
|
||||
let index = field.slice(-1);
|
||||
let array = oldCurrencySections.find(arr => arr[0] === index);
|
||||
valuablesString += `--- ${array[1]} ---\n${oldValue}`;
|
||||
newValue[field] = '';
|
||||
}
|
||||
}
|
||||
});
|
||||
newValue['otherval'] = valuablesString;
|
||||
|
||||
setAttrs(newValue);
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 3.4.0
|
||||
function migrate3_4_0() {
|
||||
console.log('Migrating to v3.4.0');
|
||||
getAttrs(['nonprof-penalty'], function(values) {
|
||||
let nonprof = Math.abs(parseInt(values['nonprof-penalty']) || 0) * -1;
|
||||
let famil = Math.floor(nonprof / 2)
|
||||
setAttrs({
|
||||
['nonprof-penalty']: nonprof,
|
||||
['famil-penalty']: famil
|
||||
});
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 3.3.2
|
||||
function migrate3_3_2() {
|
||||
console.log('Migrating to v3.3.2');
|
||||
moveStaticToRepeating('weaponprofs', ['weapprofname', 'weapprofnum', 'expert', 'specialist', 'mastery', 'high-mastery', 'grand-mastery', 'chosen-weapon']);
|
||||
moveStaticToRepeating('profs', ['profname', 'profslots', 'profstatnum', 'profmod']);
|
||||
moveStaticToRepeating('langs', ['langname', 'lang-rw']);
|
||||
moveStaticToRepeating('gear', ['geardesc', 'gearweight', 'gearqty', 'gearloc']);
|
||||
moveStaticToRepeating('gear-stored', ['gear-stored-desc', 'gear-stored-weight', 'gear-stored-qty', 'gear-stored-loc', 'on-mount']);
|
||||
moveStaticToRepeating('magicres', ['magresname', 'magrestar', 'magresmod', 'magresnotes']);
|
||||
|
||||
//ranged weapons
|
||||
moveStaticToRepeating('weapons2', ['weaponname2', 'strbonus2', 'dexbonus2', 'prof-level2', 'range-mod-attack', 'attacknum2', 'attackadj2', 'ThAC02', 'crit-thresh2', 'range2', 'size2', 'weaptype-slash2', 'weaptype-pierce2', 'weaptype-blunt2', 'weapspeed2']);
|
||||
moveStaticToRepeating('ammo', ['ammoname', 'strbonus3', 'dexbonus3', 'specialist-damage2', 'mastery-damage2', 'damadj2', 'damsm2', 'daml2', 'knockdown2', 'ammoremain']);
|
||||
|
||||
//melee damage weapons
|
||||
moveStaticToRepeating('weapons', ['weaponname', 'strbonus', 'dexbonus', 'prof-level', 'attacknum', 'attackadj', 'ThAC0', 'crit-thresh', 'range', 'size', 'weaptype-slash', 'weaptype-pierce', 'weaptype-blunt', 'weapspeed']);
|
||||
moveStaticToRepeating('weapons-damage', ['weaponname1', 'strbonus1', 'dexbonus1', 'specialist-damage', 'mastery-damage', 'damadj', 'damsm', 'daml', 'knockdown1']);
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region version 3.3.0
|
||||
function migrate3_3_0() {
|
||||
console.log('Migrating to v3.3.0');
|
||||
getAttrs(['spell-points', 'spell-points-priest'], function(values) {
|
||||
let sp = parseInt(values['spell-points']) || 0;
|
||||
let psp = parseInt(values['spell-points-priest']) || 0;
|
||||
|
||||
let newValue = {};
|
||||
if (sp > 0) {
|
||||
console.log(`Old spell points: ${sp}`);
|
||||
newValue['spell-points-lvl'] = sp;
|
||||
newValue['spell-points'] = '';
|
||||
}
|
||||
|
||||
if (psp > 0) {
|
||||
console.log(`Old spell points priest: ${psp}`);
|
||||
newValue['spell-points-priest-lvl'] = psp;
|
||||
newValue['spell-points-priest'] = '';
|
||||
}
|
||||
|
||||
setAttrs(newValue);
|
||||
});
|
||||
|
||||
TAS.repeating('spells')
|
||||
.fields('spell-points', 'spell-points1', 'arc', 'arc1')
|
||||
.each(function (r) {
|
||||
console.log('Updating repeating spells-points and arc');
|
||||
r['spell-points'] = (r.I['spell-points1']);
|
||||
r['spell-points1'] = '';
|
||||
r['arc'] = (r.I['arc1']);
|
||||
r['arc1'] = '';
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
//#endregion
|
||||
@@ -114,7 +114,7 @@ weapons['club'] = {
|
||||
'size': 'M',
|
||||
'type': 'B',
|
||||
'speed': 4,
|
||||
'small-medium': ' 1d6',
|
||||
'small-medium': '1d6',
|
||||
'large': '1d3',
|
||||
'knockdown': 'd8'
|
||||
};
|
||||
@@ -0,0 +1,325 @@
|
||||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.15.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
|
||||
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w=="
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.16.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz",
|
||||
"integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng=="
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
|
||||
"integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.15.7",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"acorn": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
|
||||
},
|
||||
"asap": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
|
||||
},
|
||||
"assert-never": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
|
||||
"integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw=="
|
||||
},
|
||||
"babel-walk": {
|
||||
"version": "3.0.0-canary-5",
|
||||
"resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
|
||||
"integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.9.6"
|
||||
}
|
||||
},
|
||||
"call-bind": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
||||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1",
|
||||
"get-intrinsic": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"character-parser": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
|
||||
"integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
|
||||
"requires": {
|
||||
"is-regex": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"constantinople": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
|
||||
"integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
|
||||
"requires": {
|
||||
"@babel/parser": "^7.6.0",
|
||||
"@babel/types": "^7.6.1"
|
||||
}
|
||||
},
|
||||
"doctypes": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
|
||||
"integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk="
|
||||
},
|
||||
"function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||
},
|
||||
"get-intrinsic": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
|
||||
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-symbols": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"has-symbols": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
|
||||
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
|
||||
},
|
||||
"has-tostringtag": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
|
||||
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
|
||||
"requires": {
|
||||
"has-symbols": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
|
||||
"integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"is-expression": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
|
||||
"integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
|
||||
"requires": {
|
||||
"acorn": "^7.1.1",
|
||||
"object-assign": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"is-promise": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
||||
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
||||
},
|
||||
"is-regex": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
|
||||
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.2",
|
||||
"has-tostringtag": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"js-stringify": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
|
||||
"integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
|
||||
},
|
||||
"jstransformer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
|
||||
"integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
|
||||
"requires": {
|
||||
"is-promise": "^2.0.0",
|
||||
"promise": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||
},
|
||||
"promise": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
|
||||
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
|
||||
"requires": {
|
||||
"asap": "~2.0.3"
|
||||
}
|
||||
},
|
||||
"pug": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz",
|
||||
"integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==",
|
||||
"requires": {
|
||||
"pug-code-gen": "^3.0.2",
|
||||
"pug-filters": "^4.0.0",
|
||||
"pug-lexer": "^5.0.1",
|
||||
"pug-linker": "^4.0.0",
|
||||
"pug-load": "^3.0.0",
|
||||
"pug-parser": "^6.0.0",
|
||||
"pug-runtime": "^3.0.1",
|
||||
"pug-strip-comments": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pug-attrs": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
|
||||
"integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
|
||||
"requires": {
|
||||
"constantinople": "^4.0.1",
|
||||
"js-stringify": "^1.0.2",
|
||||
"pug-runtime": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"pug-code-gen": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz",
|
||||
"integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==",
|
||||
"requires": {
|
||||
"constantinople": "^4.0.1",
|
||||
"doctypes": "^1.1.0",
|
||||
"js-stringify": "^1.0.2",
|
||||
"pug-attrs": "^3.0.0",
|
||||
"pug-error": "^2.0.0",
|
||||
"pug-runtime": "^3.0.0",
|
||||
"void-elements": "^3.1.0",
|
||||
"with": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"pug-error": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz",
|
||||
"integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ=="
|
||||
},
|
||||
"pug-filters": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
|
||||
"integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
|
||||
"requires": {
|
||||
"constantinople": "^4.0.1",
|
||||
"jstransformer": "1.0.0",
|
||||
"pug-error": "^2.0.0",
|
||||
"pug-walk": "^2.0.0",
|
||||
"resolve": "^1.15.1"
|
||||
}
|
||||
},
|
||||
"pug-lexer": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
|
||||
"integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
|
||||
"requires": {
|
||||
"character-parser": "^2.2.0",
|
||||
"is-expression": "^4.0.0",
|
||||
"pug-error": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pug-linker": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
|
||||
"integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
|
||||
"requires": {
|
||||
"pug-error": "^2.0.0",
|
||||
"pug-walk": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pug-load": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
|
||||
"integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
|
||||
"requires": {
|
||||
"object-assign": "^4.1.1",
|
||||
"pug-walk": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pug-parser": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
|
||||
"integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
|
||||
"requires": {
|
||||
"pug-error": "^2.0.0",
|
||||
"token-stream": "1.0.0"
|
||||
}
|
||||
},
|
||||
"pug-runtime": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
|
||||
"integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="
|
||||
},
|
||||
"pug-strip-comments": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
|
||||
"integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
|
||||
"requires": {
|
||||
"pug-error": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pug-walk": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
|
||||
"integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
||||
"requires": {
|
||||
"is-core-module": "^2.2.0",
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
|
||||
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
|
||||
},
|
||||
"token-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ="
|
||||
},
|
||||
"void-elements": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
|
||||
"integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk="
|
||||
},
|
||||
"with": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
|
||||
"integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
|
||||
"requires": {
|
||||
"@babel/parser": "^7.9.6",
|
||||
"@babel/types": "^7.9.6",
|
||||
"assert-never": "^1.2.1",
|
||||
"babel-walk": "3.0.0-canary-5"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
each levelObject, level in data
|
||||
datalist(id=`${level}-spells`)
|
||||
each spell, spellName in levelObject
|
||||
- let book = ''
|
||||
- let displayLevel = ''
|
||||
if (spell.book !== 'PHB')
|
||||
- book = spell.book
|
||||
if level.endsWith('monster')
|
||||
case spell.level
|
||||
when '1': - displayLevel = `${spell.level}st level`
|
||||
when '2': - displayLevel = `${spell.level}nd level`
|
||||
when '3': - displayLevel = `${spell.level}rd level`
|
||||
default: - displayLevel = `${spell.level}th level`
|
||||
|
||||
if (book)
|
||||
- displayLevel += `, ${book}`
|
||||
option(value!=spellName)= displayLevel
|
||||
else
|
||||
option(value!=spellName)= book
|
||||
@@ -7,6 +7,26 @@
|
||||
"instructions": "#Message from current Author Peter B.(2020)\rThe sheet has been updated with more options for players to choose between rule sets such as the standard rule set from the Player's Handbook and the additional material from the Player's Option.\rTo follow current development or for any future development request please write a post on https://app.roll20.net/forum/post/9311682/official-ad-and-d-2e-revised-update-thread.\rThe full change log is always available at https://wiki.roll20.net/ADnD_2nd_Edition_Character_sheet#Changelog\r\r#Message from Original Author Seth (2017)\rThis sheet supports Advanced Dungeons and Dragons 2nd Edition Revised for both Player Characters and Monsters. This sheet has full integration for macro support within many fields of the sheet. Many fields are now auto-calculating fields. Please update these trackers by changing a quantity value and then changing it back.",
|
||||
"legacy": false,
|
||||
"useroptions": [
|
||||
{
|
||||
"displayname": "*** General settings ***"
|
||||
},
|
||||
{
|
||||
"displayname": "In addition to the Player's Handbook, the following books can be added for more spells, weapons, and equipment"
|
||||
},
|
||||
{
|
||||
"attribute": "book-tcwhb",
|
||||
"displayname": "The Complete Wizard's Handbook",
|
||||
"type": "checkbox",
|
||||
"value": "The Complete Wizard's Handbook",
|
||||
"checked": false,
|
||||
"description": "Allows spells from The Complete Wizard's Handbook to autofill"
|
||||
},
|
||||
{
|
||||
"displayname": " "
|
||||
},
|
||||
{
|
||||
"displayname": "*** Monster Sheet ***"
|
||||
},
|
||||
{
|
||||
"attribute": "wtype",
|
||||
"displayname": "Should Monster attacks be public to players or private (Only send to the GM)?",
|
||||
@@ -15,8 +35,8 @@
|
||||
"Public|@{character_name}",
|
||||
"To GM|/w gm @{character_name}"
|
||||
],
|
||||
"default": "",
|
||||
"description": "By default all monster attacks are public. These attacks include the static buttons ThAC0, Attack 1-3, Special attack. It also include the repeating buttons Hit, Damage, Special damage, and Spell. To GM rolls will send the mentioned buttons only to yourself and the GM. Thus is a GM clicks the button, only the GM can see it."
|
||||
"default": "@{character_name}",
|
||||
"description": "By default all monster attacks are public. These attacks include the static buttons ThAC0, Attack 1-3, Special attack. It also include the repeating buttons Hit, Dam S/M, Dam L, Special damage, and Spell. To GM rolls will send the mentioned buttons only to yourself and the GM. Thus is a GM clicks the button, only the GM can see it."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -243,8 +243,8 @@
|
||||
"lower-class": "Basse classe",
|
||||
"middle-class": "Classe moyenne",
|
||||
"upper-class": "Classe favorisée",
|
||||
"main-roll-button-title": "This is the roll-builder. You can click it, answer four questions, and then it will roll the dice for you.",
|
||||
"damage": "Damage",
|
||||
"main-roll-button-title": "C'est le constructeur de jets. Vous pouvez cliquer dessus, répondre à quatre questions, puis il lancera les dés pour vous.",
|
||||
"damage": "Dégâts",
|
||||
"total": "Total",
|
||||
"target_number": "Target Number",
|
||||
"stunt_points": "Stunt Points",
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# ARC: Doom Tabletop RPG Roll20 Character Sheet
|
||||
- [ARC](https://arc-rpg.com) by momatoes
|
||||
|
||||
## Prerequisites
|
||||
- [Nodejs](https://nodejs.org/en/) installed
|
||||
- [git](https://git-scm.com/) installed
|
||||
|
||||
## References
|
||||
- [gulp](https://gulpjs.com/)
|
||||
- [pugjs](https://pugjs.org/api/getting-started.html)
|
||||
- [sass](https://sass-lang.com/)
|
||||
- [Building Character Sheets](https://wiki.roll20.net/Building_Character_Sheets)
|
||||
|
||||
## Setup
|
||||
- clone this repository
|
||||
- clone roll20-character-sheets
|
||||
- copy all files into the roll20-character-sheets directory (aside from the `.git/` files), under a folder of the sheet name
|
||||
- Run the following commands from either the terminal or command line:
|
||||
```bash
|
||||
# Go to the source for your sheet
|
||||
$ cd /<path_to>/roll20-character-sheets/ARC/source
|
||||
|
||||
# Install all of the npm packages
|
||||
$ npm install
|
||||
|
||||
# Run the build process
|
||||
$ npm run gulp:watch
|
||||
```
|
||||
This will create 2 files ARC.html and ARC.css. The watch command allows for any saved changes to automatically build the html and css from the pug and stylus files.
|
||||
|
After Width: | Height: | Size: 292 KiB |
@@ -0,0 +1 @@
|
||||
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m453.332031 0h-394.664062c-32.363281 0-58.667969 26.304688-58.667969 58.667969v394.664062c0 32.363281 26.304688 58.667969 58.667969 58.667969h394.664062c32.363281 0 58.667969-26.304688 58.667969-58.667969v-394.664062c0-32.363281-26.304688-58.667969-58.667969-58.667969zm-85.332031 277.332031h-90.667969v90.667969c0 11.777344-9.535156 21.332031-21.332031 21.332031s-21.332031-9.554687-21.332031-21.332031v-90.667969h-90.667969c-11.796875 0-21.332031-9.554687-21.332031-21.332031s9.535156-21.332031 21.332031-21.332031h90.667969v-90.667969c0-11.777344 9.535156-21.332031 21.332031-21.332031s21.332031 9.554687 21.332031 21.332031v90.667969h90.667969c11.796875 0 21.332031 9.554687 21.332031 21.332031s-9.535156 21.332031-21.332031 21.332031zm0 0"/></svg>
|
||||
|
After Width: | Height: | Size: 852 B |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 345 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 38 KiB |
@@ -0,0 +1 @@
|
||||
<svg id="bold" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m23.525 5.054c-.705-.778-1.724-1.243-2.525-1.516v-1.538c0-.552-.448-1-1-1h-4c-1.634 0-3.087.788-4 2.003-.913-1.215-2.366-2.003-4-2.003h-4c-.552 0-1 .448-1 1v1.538c-.801.273-1.82.738-2.526 1.517-.306.338-.474.797-.474 1.291l.002 10.471c.001 5.737.001 5.737.477 6.03.359.221.815.195 1.146-.065 3.021-2.385 6.144-2.367 9.827.053.165.11.357.165.548.165s.383-.055.549-.165c3.683-2.42 6.805-2.437 9.827-.053.331.262.787.287 1.146.065.475-.293.475-.293.477-6.03l.001-10.471c0-.494-.168-.953-.475-1.292zm-7.525-2.054h3v12.89c-2.374-.1-4.333.811-6 2.769v-12.659c0-1.654 1.346-3 3-3zm-11 0h3c1.654 0 3 1.346 3 3v12.659c-1.584-1.859-3.429-2.777-5.641-2.777-.119 0-.238.002-.359.008zm-2.997 17.135c-.001-2.931-.002-8.628-.003-11.821l-.043-1.917c.228-.252.598-.493 1.043-.704v11.307c0 .294.129.573.354.763.225.189.522.273.811.223 1.503-.251 3.189-.188 4.874 1.487-2.462-.761-4.816-.551-7.036.662zm19.997-11.821c0 3.193-.001 8.89-.002 11.821-2.22-1.213-4.574-1.421-7.035-.661 1.686-1.675 3.372-1.738 4.874-1.487.288.049.586-.034.811-.223.223-.191.352-.47.352-.764v-11.309c.441.207.8.436 1 .655z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<svg height="365.696pt" viewBox="0 0 365.696 365.696" width="365.696pt" xmlns="http://www.w3.org/2000/svg"><path d="m243.1875 182.859375 113.132812-113.132813c12.5-12.5 12.5-32.765624 0-45.246093l-15.082031-15.082031c-12.503906-12.503907-32.769531-12.503907-45.25 0l-113.128906 113.128906-113.132813-113.152344c-12.5-12.5-32.765624-12.5-45.246093 0l-15.105469 15.082031c-12.5 12.503907-12.5 32.769531 0 45.25l113.152344 113.152344-113.128906 113.128906c-12.503907 12.503907-12.503907 32.769531 0 45.25l15.082031 15.082031c12.5 12.5 32.765625 12.5 45.246093 0l113.132813-113.132812 113.128906 113.132812c12.503907 12.5 32.769531 12.5 45.25 0l15.082031-15.082031c12.5-12.503906 12.5-32.769531 0-45.25zm0 0"/></svg>
|
||||
|
After Width: | Height: | Size: 712 B |
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m21.25 4h-12.88c-.761 0-1.494.319-2.012.876l-6.157 6.613c-.269.288-.269.734 0 1.022l6.157 6.612c.518.558 1.251.877 2.012.877h12.88c1.517 0 2.75-1.233 2.75-2.75v-10.5c0-1.517-1.233-2.75-2.75-2.75zm-1.768 10.819c.376.405.353 1.038-.052 1.414-.192.179-.437.267-.681.267-.269 0-.536-.107-.732-.319l-2.517-2.712-2.518 2.711c-.196.212-.464.319-.732.319-.244 0-.488-.088-.681-.267-.404-.376-.428-1.009-.052-1.414l2.619-2.818-2.618-2.819c-.376-.405-.353-1.038.052-1.414.403-.376 1.038-.354 1.413.052l2.518 2.711 2.518-2.711c.374-.406 1.009-.428 1.413-.052s.428 1.009.052 1.414l-2.62 2.819z"/></svg>
|
||||
|
After Width: | Height: | Size: 718 B |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1 @@
|
||||
<svg id="bold" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m12 16c-.205 0-.401-.084-.542-.232l-5.25-5.5c-.455-.476-.117-1.268.542-1.268h2.75v-5.75c0-.689.561-1.25 1.25-1.25h2.5c.689 0 1.25.561 1.25 1.25v5.75h2.75c.659 0 .997.792.542 1.268l-5.25 5.5c-.141.148-.337.232-.542.232z"/><path d="m22.25 22h-20.5c-.965 0-1.75-.785-1.75-1.75v-.5c0-.965.785-1.75 1.75-1.75h20.5c.965 0 1.75.785 1.75 1.75v.5c0 .965-.785 1.75-1.75 1.75z"/></svg>
|
||||
|
After Width: | Height: | Size: 512 B |
@@ -0,0 +1 @@
|
||||
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m304 0h-266.667969c-20.585937 0-37.332031 16.746094-37.332031 37.332031v53.335938c0 20.585937 16.746094 37.332031 37.332031 37.332031h266.667969c20.585938 0 37.332031-16.746094 37.332031-37.332031v-53.335938c0-20.585937-16.746093-37.332031-37.332031-37.332031zm0 0"/><path d="m304 192h-266.667969c-20.585937 0-37.332031 16.746094-37.332031 37.332031v53.335938c0 20.585937 16.746094 37.332031 37.332031 37.332031h266.667969c20.585938 0 37.332031-16.746094 37.332031-37.332031v-53.335938c0-20.585937-16.746093-37.332031-37.332031-37.332031zm0 0"/><path d="m304 384h-266.667969c-20.585937 0-37.332031 16.746094-37.332031 37.332031v53.335938c0 20.585937 16.746094 37.332031 37.332031 37.332031h266.667969c20.585938 0 37.332031-16.746094 37.332031-37.332031v-53.335938c0-20.585937-16.746093-37.332031-37.332031-37.332031zm0 0"/><path d="m506.902344 244.265625-74.667969-69.332031c-3.027344-2.796875-6.933594-4.265625-10.902344-4.265625-2.175781 0-4.328125.445312-6.398437 1.320312-5.824219 2.5625-9.601563 8.320313-9.601563 14.679688v138.664062c0 6.359375 3.777344 12.117188 9.601563 14.679688 5.824218 2.515625 12.628906 1.386719 17.300781-2.945313l74.667969-69.332031c3.242187-3.03125 5.097656-7.277344 5.097656-11.734375s-1.855469-8.683594-5.097656-11.734375zm0 0"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<svg id="bold" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m23 22h-13c-.552 0-1-.448-1-1s.448-1 1-1h13c.552 0 1 .448 1 1s-.448 1-1 1z"/></g><g><path d="m20.268 4.146-1.414-1.414c-.756-.756-2.073-.755-2.828 0l-2.068 2.068 4.242 4.242 2.068-2.068c.378-.377.586-.879.586-1.414 0-.534-.208-1.036-.586-1.414z"/><path d="m12.543 6.215-10.306 10.306c-.066.065-.112.148-.133.239l-1.09 4.625c-.04.168.011.346.133.468.094.095.222.147.353.147.038 0 .077-.004.115-.013l4.625-1.09c.09-.021.173-.067.239-.133l10.306-10.306z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 604 B |
@@ -0,0 +1 @@
|
||||
<svg id="bold" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="3"/><circle cx="3" cy="12" r="3"/><circle cx="21" cy="12" r="3"/></svg>
|
||||
|
After Width: | Height: | Size: 227 B |
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M352,288.994v127.008H64v-288h96v-64H32c-17.664,0-32,14.336-32,32v352c0,17.696,14.336,32,32,32h352
|
||||
c17.696,0,32-14.304,32-32V288.994H352z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M505.6,131.202l-128-96c-4.8-3.648-11.328-4.224-16.736-1.504c-5.44,2.72-8.864,8.256-8.864,14.304v48h-48
|
||||
c-97.056,0-176,78.944-176,176c0,7.424,5.12,13.888,12.32,15.584c1.216,0.288,2.464,0.416,3.68,0.416
|
||||
c5.952,0,11.552-3.328,14.304-8.832l3.776-7.52c24.544-49.12,73.888-79.648,128.8-79.648H352v48
|
||||
c0,6.048,3.424,11.584,8.832,14.304c5.408,2.72,11.936,2.144,16.768-1.504l128-96c4.032-3.008,6.4-7.776,6.4-12.8
|
||||
S509.632,134.21,505.6,131.202z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1 @@
|
||||
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m256 0c-141.164062 0-256 114.835938-256 256s114.835938 256 256 256 256-114.835938 256-256-114.835938-256-256-256zm0 405.332031c-11.777344 0-21.332031-9.554687-21.332031-21.332031s9.554687-21.332031 21.332031-21.332031 21.332031 9.554687 21.332031 21.332031-9.554687 21.332031-21.332031 21.332031zm33.769531-135.636719c-7.550781 3.476563-12.4375 11.09375-12.4375 19.394532v9.578125c0 11.773437-9.535156 21.332031-21.332031 21.332031s-21.332031-9.558594-21.332031-21.332031v-9.578125c0-24.898438 14.632812-47.722656 37.226562-58.15625 21.738281-10.003906 37.4375-36.566406 37.4375-49.601563 0-29.394531-23.914062-53.332031-53.332031-53.332031s-53.332031 23.9375-53.332031 53.332031c0 11.777344-9.539063 21.335938-21.335938 21.335938s-21.332031-9.558594-21.332031-21.335938c0-52.925781 43.070312-96 96-96s96 43.074219 96 96c0 28.824219-25.003906 71.191407-62.230469 88.363281zm0 0"/></svg>
|
||||
|
After Width: | Height: | Size: 986 B |
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M394.667,214.421v-75.755C394.667,62.208,332.459,0,256,0S117.333,62.208,117.333,138.667v75.755
|
||||
c-24.32,4.949-42.667,26.496-42.667,52.245v192C74.667,488.064,98.581,512,128,512h256c29.419,0,53.333-23.936,53.333-53.333v-192
|
||||
C437.333,240.917,418.987,219.371,394.667,214.421z M279.659,378.24l8.235,57.579c0.448,3.072-0.469,6.165-2.496,8.491
|
||||
c-2.027,2.325-4.971,3.691-8.064,3.691h-42.667c-3.093,0-6.037-1.344-8.064-3.669s-2.944-5.44-2.496-8.491l8.235-57.579
|
||||
c-17.835-8.917-29.675-27.328-29.675-47.595c0-29.397,23.915-53.333,53.333-53.333s53.333,23.936,53.333,53.333
|
||||
C309.333,350.933,297.493,369.344,279.659,378.24z M330.667,213.333H181.333v-74.667C181.333,97.493,214.827,64,256,64
|
||||
s74.667,33.493,74.667,74.667V213.333z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
||||
<svg height="384pt" viewBox="0 -21 384 384" width="384pt" xmlns="http://www.w3.org/2000/svg"><path d="m362.667969 0h-341.335938c-11.753906 0-21.332031 9.578125-21.332031 21.332031v42.667969c0 11.753906 9.578125 21.332031 21.332031 21.332031h341.335938c11.753906 0 21.332031-9.578125 21.332031-21.332031v-42.667969c0-11.753906-9.578125-21.332031-21.332031-21.332031zm0 0"/><path d="m362.667969 128h-341.335938c-11.753906 0-21.332031 9.578125-21.332031 21.332031v42.667969c0 11.753906 9.578125 21.332031 21.332031 21.332031h341.335938c11.753906 0 21.332031-9.578125 21.332031-21.332031v-42.667969c0-11.753906-9.578125-21.332031-21.332031-21.332031zm0 0"/><path d="m362.667969 256h-341.335938c-11.753906 0-21.332031 9.578125-21.332031 21.332031v42.667969c0 11.753906 9.578125 21.332031 21.332031 21.332031h341.335938c11.753906 0 21.332031-9.578125 21.332031-21.332031v-42.667969c0-11.753906-9.578125-21.332031-21.332031-21.332031zm0 0"/></svg>
|
||||
|
After Width: | Height: | Size: 940 B |
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512.016 512.016" style="enable-background:new 0 0 512.016 512.016;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M507.336,244.68l-96-96c-4.576-4.576-11.456-5.952-17.44-3.456c-5.984,2.496-9.888,8.32-9.888,14.784v48h-80v-80h48
|
||||
c6.464,0,12.32-3.904,14.784-9.888s1.088-12.864-3.456-17.44l-96-96c-6.24-6.24-16.384-6.24-22.624,0l-96,96
|
||||
c-4.576,4.608-5.952,11.456-3.488,17.44s8.32,9.888,14.784,9.888h48v80h-80v-48c0-6.464-3.904-12.32-9.888-14.784
|
||||
s-12.832-1.088-17.44,3.456l-96,96c-6.24,6.24-6.24,16.384,0,22.624l96,96c4.576,4.576,11.456,5.952,17.44,3.456
|
||||
c5.984-2.432,9.888-8.288,9.888-14.752v-48h80v80h-48c-6.464,0-12.32,3.904-14.784,9.888c-2.496,5.984-1.12,12.864,3.456,17.44
|
||||
l96,96c6.24,6.24,16.384,6.24,22.624,0l96-96c4.576-4.576,5.952-11.456,3.456-17.44c-2.496-5.984-8.288-9.888-14.752-9.888h-48
|
||||
v-80h80v48c0,6.464,3.904,12.32,9.888,14.784c5.984,2.496,12.864,1.12,17.44-3.456l96-96
|
||||
C513.576,261.064,513.576,250.952,507.336,244.68z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1 @@
|
||||
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m486.996094 64.382812-39.378906-39.378906c-16-16.023437-37.695313-25.003906-60.332032-25.003906h-328.617187c-32.40625 0-58.667969 26.261719-58.667969 58.667969v394.664062c0 32.40625 26.261719 58.667969 58.667969 58.667969h394.664062c32.40625 0 58.667969-26.261719 58.667969-58.667969v-328.617187c0-22.636719-8.980469-44.332032-25.003906-60.332032zm-401.664063 68.949219v-53.332031c0-8.832031 7.167969-16 16-16h224c8.832031 0 16 7.167969 16 16v53.332031c0 8.832031-7.167969 16-16 16h-224c-8.832031 0-16-7.167969-16-16zm170.667969 293.335938c-53.011719 0-96-42.988281-96-96 0-53.015625 42.988281-96 96-96s96 42.984375 96 96c0 53.011719-42.988281 96-96 96zm0 0"/></svg>
|
||||
|
After Width: | Height: | Size: 766 B |
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M496.659,312.107l-47.061-36.8c0.597-5.675,1.109-12.309,1.109-19.328c0-7.019-0.491-13.653-1.109-19.328l47.104-36.821
|
||||
c8.747-6.912,11.136-19.179,5.568-29.397L453.331,85.76c-5.227-9.557-16.683-14.464-28.309-10.176l-55.531,22.293
|
||||
c-10.645-7.68-21.803-14.165-33.344-19.349l-8.448-58.901C326.312,8.448,316.584,0,305.086,0h-98.133
|
||||
c-11.499,0-21.205,8.448-22.571,19.456l-8.469,59.115c-11.179,5.035-22.165,11.435-33.28,19.349l-55.68-22.357
|
||||
C76.52,71.531,64.04,76.053,58.856,85.568L9.854,170.347c-5.781,9.771-3.392,22.464,5.547,29.547l47.061,36.8
|
||||
c-0.747,7.189-1.109,13.44-1.109,19.307s0.363,12.117,1.109,19.328l-47.104,36.821c-8.747,6.933-11.115,19.2-5.547,29.397
|
||||
l48.939,84.672c5.227,9.536,16.576,14.485,28.309,10.176l55.531-22.293c10.624,7.659,21.781,14.144,33.323,19.349l8.448,58.88
|
||||
C185.747,503.552,195.454,512,206.974,512h98.133c11.499,0,21.227-8.448,22.592-19.456l8.469-59.093
|
||||
c11.179-5.056,22.144-11.435,33.28-19.371l55.68,22.357c2.688,1.045,5.483,1.579,8.363,1.579c8.277,0,15.893-4.523,19.733-11.563
|
||||
l49.152-85.12C507.838,331.349,505.448,319.083,496.659,312.107z M256.019,341.333c-47.061,0-85.333-38.272-85.333-85.333
|
||||
s38.272-85.333,85.333-85.333s85.333,38.272,85.333,85.333S303.08,341.333,256.019,341.333z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg version="1.2" baseProfile="tiny-ps" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 880 128" width="880" height="128">
|
||||
<style>
|
||||
tspan { white-space:pre }
|
||||
</style>
|
||||
<path fill="#ffffff" aria-label="careful" d="M81.84 72.19L85.04 72.19Q85.04 92.67 76.08 103.68Q67.25 114.56 51.25 114.56Q30 114.56 19.76 101.76Q9.52 88.96 9.52 64.9Q9.52 40.19 19.38 26.88Q29.36 13.44 50.48 13.44Q61.23 13.44 68.53 19.07Q75.82 24.7 79.28 35.2L79.28 16L82.48 16L82.48 58.11L79.28 58.11Q79.28 38.27 72.11 27.65Q65.07 16.9 50.61 16.9Q37.3 16.9 32.3 27.9Q27.44 38.91 27.44 65.02Q27.44 89.6 32.56 100.22Q37.68 110.85 51.25 110.85Q65.33 110.85 73.52 101.38Q81.84 91.9 81.84 72.19ZM178.61 44.54L178.61 96.77Q178.61 103.04 179.89 106.37Q181.3 109.7 183.73 109.7Q187.57 109.7 188.72 106.75Q190 103.81 190 96.51L190 87.04L193.2 87.04L193.2 96.77Q193.2 107.01 190.38 110.85Q187.7 114.56 179.25 114.56Q170.42 114.56 166.32 109.95Q162.22 105.34 162.22 96.51L162.22 91.26Q160.43 95.74 157.36 100.1Q154.29 104.32 150.45 107.52Q146.61 110.72 142.13 112.64Q137.78 114.56 133.17 114.56Q121.14 114.56 115.76 108.03Q110.38 101.38 110.38 92.03Q110.38 85.89 113.46 81.15Q116.53 76.42 121.14 72.7Q125.87 68.86 131.63 65.79Q137.52 62.72 142.9 59.9Q146.61 57.98 150.06 56.19Q153.65 54.27 156.34 52.22Q159.02 50.18 160.56 47.74Q162.22 45.31 162.22 42.24L162.22 41.98Q162.22 28.54 159.28 22.78Q156.34 16.9 147.5 16.9Q141.49 16.9 135.86 19.58Q130.35 22.27 126.13 27.52Q121.9 32.64 119.34 40.45Q116.78 48.26 116.78 58.37L116.78 61.18L113.58 61.18L113.58 16L116.78 16L116.78 37.76Q120.75 26.24 128.94 19.84Q137.26 13.44 147.76 13.44Q163.76 13.44 171.18 22.02Q178.61 30.46 178.61 44.54ZM128.3 86.14Q128.3 96.64 129.84 103.17Q131.5 109.57 137.01 109.57Q141.74 109.57 146.35 106.5Q150.96 103.42 154.42 98.82Q157.87 94.21 160.05 88.7Q162.22 83.07 162.22 77.95L162.22 50.43Q159.79 53.76 155.31 56.58Q150.96 59.39 144.05 62.98Q135.98 67.2 132.14 71.94Q128.3 76.54 128.3 86.14ZM245.81 108.8L264.11 108.8L264.11 112L214.32 112L214.32 108.8L229.42 108.8L229.42 19.2L214.32 19.2L214.32 16L244.53 16L244.53 30.72Q246.7 21.12 251.06 17.28Q255.41 13.44 261.68 13.44Q266.93 13.44 270.64 15.87Q274.35 18.3 276.4 24.19L276.4 16L279.6 16L279.6 56.06L276.4 56.06L276.4 52.35Q276.4 41.73 275.5 34.94Q274.61 28.03 272.82 24.19Q271.02 20.22 268.21 18.69Q265.39 17.15 261.68 17.15Q252.59 17.15 249.14 26.62Q245.81 36.1 245.81 56.83L245.81 108.8ZM374.96 75.9L378.42 75.9Q378.42 94.59 369.07 104.58Q359.86 114.56 343.34 114.56Q321.46 114.56 310.83 101.76Q300.34 88.96 300.34 64.9Q300.34 40.19 309.94 26.88Q319.66 13.44 338.86 13.44Q358.96 13.44 368.69 27.39Q378.54 41.34 378.42 67.07L318.26 67.07Q318.38 90.5 323.76 100.74Q329.26 110.85 343.34 110.85Q358.06 110.85 366.51 102.27Q374.96 93.7 374.96 75.9ZM338.99 16.9Q327.6 16.9 322.99 27.65Q318.38 38.27 318.26 63.62L360.5 63.62Q360.37 38.4 355.63 27.65Q350.9 16.9 338.99 16.9ZM456.5 112L399.02 112L399.02 108.8L411.7 108.8L411.7 87.81L398.9 87.81L398.9 84.61L411.7 84.61L411.7 55.3Q411.7 34.3 419.63 23.94Q427.7 13.44 443.82 13.44Q454.06 13.44 459.82 19.71Q465.58 25.86 465.58 36.99Q465.58 47.23 460.08 52.61Q454.58 57.98 447.79 61.95Q441.01 65.92 434.99 70.53Q428.98 75.01 428.08 83.58L428.08 84.61L456.5 84.61L456.5 87.81L428.08 87.81L428.08 108.8L456.5 108.8L456.5 112ZM462 36.99Q462 26.62 456.75 21.76Q451.63 16.9 444.08 16.9Q434.99 16.9 431.54 25.34Q428.08 33.79 428.08 55.3L428.08 74.75Q431.02 68.74 436.66 65.02Q442.42 61.31 447.92 57.86Q453.55 54.27 457.78 49.66Q462 45.06 462 36.99ZM496.82 75.78L496.82 19.2L483.5 19.2L483.5 16L560.43 16L560.43 96.77Q560.43 103.42 561.84 106.62Q563.25 109.7 566.06 109.7Q569.14 109.7 570.16 106.75Q571.18 103.81 571.18 96.51L571.18 87.04L574.38 87.04L574.38 96.77Q574.38 107.01 571.7 110.85Q569.14 114.56 561.2 114.56Q553.39 114.56 549.3 110.59Q545.33 106.62 545.33 94.34L545.33 94.21Q543.02 104.96 537.52 109.82Q532.02 114.56 524.34 114.56Q517.3 114.56 512.05 112.77Q506.93 110.85 503.47 106.5Q500.14 102.02 498.48 94.59Q496.82 87.04 496.82 75.78ZM513.2 19.2L513.2 70.53Q513.2 82.56 513.71 90.37Q514.35 98.05 515.89 102.53Q517.42 106.88 519.98 108.67Q522.54 110.34 526.38 110.34Q536.24 110.34 540.08 100.99Q544.05 91.65 544.05 71.17L544.05 19.2L513.2 19.2ZM625.07 108.8L643.63 108.8L643.38 112L595.12 112L595.12 108.8L608.69 108.8L608.69 47.62Q608.69 29.31 614.83 21.38Q621.1 13.44 634.42 13.44Q640.82 13.44 644.14 17.92Q647.6 22.4 647.6 29.82Q647.6 38.91 644.14 46.21Q640.82 53.5 636.59 61.31Q632.5 69.12 628.91 78.85Q625.46 88.45 625.07 102.4L625.07 108.8ZM625.07 47.62L625.07 82.3Q627.5 72.7 630.7 65.92Q634.03 59.01 636.98 53.38Q639.92 47.62 641.97 42.11Q644.14 36.61 644.14 29.82Q644.14 23.3 641.33 20.1Q638.64 16.9 634.29 16.9Q631.47 16.9 629.68 18.3Q627.89 19.58 626.86 23.04Q625.84 26.37 625.46 32.38Q625.07 38.4 625.07 47.62Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg version="1.2" baseProfile="tiny-ps" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 880 128" width="880" height="128">
|
||||
<style>
|
||||
tspan { white-space:pre }
|
||||
</style>
|
||||
<path fill="#ffffff" aria-label="concerted" d="M81.84 72.19L85.04 72.19Q85.04 92.67 76.08 103.68Q67.25 114.56 51.25 114.56Q30 114.56 19.76 101.76Q9.52 88.96 9.52 64.9Q9.52 40.19 19.38 26.88Q29.36 13.44 50.48 13.44Q61.23 13.44 68.53 19.07Q75.82 24.7 79.28 35.2L79.28 16L82.48 16L82.48 58.11L79.28 58.11Q79.28 38.27 72.11 27.65Q65.07 16.9 50.61 16.9Q37.3 16.9 32.3 27.9Q27.44 38.91 27.44 65.02Q27.44 89.6 32.56 100.22Q37.68 110.85 51.25 110.85Q65.33 110.85 73.52 101.38Q81.84 91.9 81.84 72.19ZM149.55 13.44Q170.29 13.44 180.78 26.88Q191.28 40.19 191.28 64.9Q191.28 88.83 180.53 101.76Q169.78 114.56 149.55 114.56Q129.33 114.56 118.7 101.76Q108.08 88.83 108.08 64.9Q108.08 40.19 118.58 26.88Q129.07 13.44 149.55 13.44ZM149.55 16.64Q136.24 16.64 131.12 27.78Q126 38.91 126 65.02Q126 89.73 131.25 100.61Q136.5 111.36 149.55 111.36Q162.61 111.36 167.98 100.61Q173.36 89.73 173.36 65.02Q173.36 38.91 168.11 27.78Q162.86 16.64 149.55 16.64ZM244.02 108.8L254.64 108.8L254.64 112L214.32 112L214.32 108.8L227.63 108.8L227.63 19.2L214.32 19.2L214.32 16L242.74 16L242.74 33.79Q245.04 23.04 250.54 18.3Q256.05 13.44 263.73 13.44Q270.77 13.44 275.89 15.36Q281.14 17.15 284.46 21.63Q287.92 25.98 289.58 33.54Q291.25 40.96 291.25 52.22L291.25 108.8L304.56 108.8L304.56 112L263.6 112L263.6 108.8L274.86 108.8L274.86 57.47Q274.86 45.44 274.22 37.76Q273.71 29.95 272.18 25.6Q270.64 21.12 268.08 19.46Q265.52 17.66 261.68 17.66Q251.82 17.66 247.86 27.01Q244.02 36.35 244.02 56.83L244.02 108.8ZM399.28 72.19L402.48 72.19Q402.48 92.67 393.52 103.68Q384.69 114.56 368.69 114.56Q347.44 114.56 337.2 101.76Q326.96 88.96 326.96 64.9Q326.96 40.19 336.82 26.88Q346.8 13.44 367.92 13.44Q378.67 13.44 385.97 19.07Q393.26 24.7 396.72 35.2L396.72 16L399.92 16L399.92 58.11L396.72 58.11Q396.72 38.27 389.55 27.65Q382.51 16.9 368.05 16.9Q354.74 16.9 349.74 27.9Q344.88 38.91 344.88 65.02Q344.88 89.6 350 100.22Q355.12 110.85 368.69 110.85Q382.77 110.85 390.96 101.38Q399.28 91.9 399.28 72.19ZM500.14 75.9L503.6 75.9Q503.6 94.59 494.26 104.58Q485.04 114.56 468.53 114.56Q446.64 114.56 436.02 101.76Q425.52 88.96 425.52 64.9Q425.52 40.19 435.12 26.88Q444.85 13.44 464.05 13.44Q484.14 13.44 493.87 27.39Q503.73 41.34 503.6 67.07L443.44 67.07Q443.57 90.5 448.94 100.74Q454.45 110.85 468.53 110.85Q483.25 110.85 491.7 102.27Q500.14 93.7 500.14 75.9ZM464.18 16.9Q452.78 16.9 448.18 27.65Q443.57 38.27 443.44 63.62L485.68 63.62Q485.55 38.4 480.82 27.65Q476.08 16.9 464.18 16.9ZM558.13 108.8L576.43 108.8L576.43 112L526.64 112L526.64 108.8L541.74 108.8L541.74 19.2L526.64 19.2L526.64 16L556.85 16L556.85 30.72Q559.02 21.12 563.38 17.28Q567.73 13.44 574 13.44Q579.25 13.44 582.96 15.87Q586.67 18.3 588.72 24.19L588.72 16L591.92 16L591.92 56.06L588.72 56.06L588.72 52.35Q588.72 41.73 587.82 34.94Q586.93 28.03 585.14 24.19Q583.34 20.22 580.53 18.69Q577.71 17.15 574 17.15Q564.91 17.15 561.46 26.62Q558.13 36.1 558.13 56.83L558.13 108.8ZM622.38 83.07L622.38 36.48L606.26 36.48L606.26 33.02L616.11 33.02L635.44 13.44L638.64 13.44L638.64 33.02L666.8 33.02L666.8 36.48L638.64 36.48L638.64 83.07Q638.64 97.79 640.94 103.81Q643.25 109.82 649.39 109.82Q651.57 109.82 653.87 108.67Q656.18 107.52 657.97 105.09Q659.89 102.66 661.04 98.69Q662.19 94.72 662.19 89.09L665.52 89.09Q665.52 96 663.86 100.99Q662.32 105.86 659.63 108.93Q656.94 111.87 653.36 113.28Q649.9 114.56 646.06 114.56Q634.03 114.56 628.14 106.62Q622.38 98.56 622.38 83.07ZM759.98 75.9L763.44 75.9Q763.44 94.59 754.1 104.58Q744.88 114.56 728.37 114.56Q706.48 114.56 695.86 101.76Q685.36 88.96 685.36 64.9Q685.36 40.19 694.96 26.88Q704.69 13.44 723.89 13.44Q743.98 13.44 753.71 27.39Q763.57 41.34 763.44 67.07L703.28 67.07Q703.41 90.5 708.78 100.74Q714.29 110.85 728.37 110.85Q743.09 110.85 751.54 102.27Q759.98 93.7 759.98 75.9ZM724.02 16.9Q712.62 16.9 708.02 27.65Q703.41 38.27 703.28 63.62L745.52 63.62Q745.39 38.4 740.66 27.65Q735.92 16.9 724.02 16.9ZM842.03 19.2L793.26 19.2L793.26 16L871.09 16L871.09 19.2L858.42 19.2L858.42 99.46Q858.42 105.73 859.44 107.78Q860.46 109.7 862.64 109.7Q865.46 109.7 866.35 106.75Q867.38 103.81 867.38 96.64L867.38 87.17L870.58 87.17L870.58 96.9Q870.58 107.01 868.27 110.85Q866.1 114.56 859.18 114.56Q851.25 114.56 846.77 112Q842.29 109.31 842.29 100.61Q839.6 107.78 834.61 111.23Q829.74 114.56 823.34 114.56Q805.81 114.56 796.85 103.04Q788.02 91.52 788.02 70.27Q788.02 49.02 796.85 37.63Q805.81 26.11 823.34 26.11Q828.21 26.11 831.54 27.52Q834.86 28.8 837.04 30.72Q839.22 32.51 840.37 34.69Q841.52 36.74 842.03 38.14L842.03 19.2ZM823.22 111.1Q828.98 111.1 832.56 108.8Q836.27 106.5 838.32 102.53Q840.5 98.43 841.26 92.93Q842.03 87.42 842.03 81.02L842.03 53.5Q842.03 39.42 836.53 34.56Q831.02 29.57 823.09 29.57Q817.84 29.57 814.38 31.23Q811.06 32.9 809.14 37.38Q807.34 41.73 806.58 49.66Q805.94 57.6 805.94 69.89Q805.94 81.92 806.7 89.86Q807.6 97.79 809.52 102.53Q811.57 107.26 814.9 109.18Q818.22 111.1 823.22 111.1Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M384,213.333H181.333v-74.667C181.333,97.493,214.827,64,256,64s74.667,33.493,74.667,74.667v42.667
|
||||
c0,5.888,4.779,10.667,10.667,10.667H384c5.888,0,10.667-4.779,10.667-10.667v-42.667C394.667,62.208,332.459,0,256,0
|
||||
S117.333,62.208,117.333,138.667v75.755c-24.32,4.949-42.667,26.517-42.667,52.245v192C74.667,488.064,98.581,512,128,512h256
|
||||
c29.419,0,53.333-23.936,53.333-53.333v-192C437.333,237.269,413.419,213.333,384,213.333z M279.659,378.24l8.235,57.579
|
||||
c0.448,3.072-0.469,6.165-2.496,8.491c-2.027,2.325-4.971,3.691-8.064,3.691h-42.667c-3.093,0-6.037-1.344-8.064-3.669
|
||||
s-2.944-5.44-2.496-8.491l8.235-57.579c-17.835-8.917-29.675-27.328-29.675-47.595c0-29.397,23.915-53.333,53.333-53.333
|
||||
s53.333,23.936,53.333,53.333C309.333,350.933,297.493,369.344,279.659,378.24z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"html": "arc.html",
|
||||
"css": "arc.css",
|
||||
"authors": "Morgdalaine",
|
||||
"roll20userid": "61327",
|
||||
"preview": "arc.png",
|
||||
"patreon": "https://www.patreon.com/morgdalaine",
|
||||
"instructions": "Don't forget to install the Doomsday Clock API!"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
const gulp = require("gulp");
|
||||
const pug = require("gulp-pug");
|
||||
const sass = require('gulp-sass')(require('sass'));
|
||||
|
||||
gulp.task("scss", () => {
|
||||
return gulp.src("./scss/arc.scss")
|
||||
.pipe(sass({
|
||||
outputStyle: "expanded"
|
||||
}).on("error", sass.logError))
|
||||
.pipe(gulp.dest("../"))
|
||||
})
|
||||
|
||||
gulp.task("html", function () {
|
||||
return gulp.src("./pug/arc.pug")
|
||||
.pipe(pug({
|
||||
pretty: true,
|
||||
locals: require("../translation.json")
|
||||
}))
|
||||
.pipe(gulp.dest("../"))
|
||||
})
|
||||
|
||||
gulp.task("watch", gulp.series(["scss", "html"], () => {
|
||||
gulp.watch("./scss/**/*.scss", gulp.series(["scss"]))
|
||||
gulp.watch(["./pug/**/*.pug","./js/**/*.js"], gulp.series(["html"]))
|
||||
}))
|
||||
|
||||
gulp.task("build", gulp.series(["scss", "html"]))
|
||||
@@ -0,0 +1,125 @@
|
||||
|
||||
on("sheet:opened", () => {
|
||||
getAttrs(["sheet_type"], (updateAttrs) => {
|
||||
if (!updateAttrs.sheet_type) {
|
||||
updateAttrs.sheet_type = "character";
|
||||
}
|
||||
|
||||
setAttrs(updateAttrs);
|
||||
});
|
||||
});
|
||||
|
||||
// NOTE: The API sets export_show to "on";
|
||||
// it does not trigger the event handler
|
||||
on("sheet:opened change:export", (eventInfo) => {
|
||||
getAttrs(["export"], (val) => {
|
||||
const updateAttrs = {};
|
||||
updateAttrs.export_show = val.export ? "on" : "0";
|
||||
setAttrs(updateAttrs);
|
||||
});
|
||||
});
|
||||
|
||||
[1, 2, 3].forEach((l) => {
|
||||
on(`change:repeating_bonds:level_${l}`, (eventInfo) => {
|
||||
if (eventInfo.sourceType == "player") {
|
||||
|
||||
let updateAttrs = {};
|
||||
let changed = parseInt(eventInfo.sourceAttribute.slice(-1));
|
||||
|
||||
// fill major bonds below
|
||||
for (let f = changed - 1; f > 0; f--) {
|
||||
updateAttrs[`repeating_bonds_level_${f}`] = 4;
|
||||
}
|
||||
|
||||
// clear major bonds above
|
||||
for (let c = changed + 1; c <= 3; c++) {
|
||||
updateAttrs[`repeating_bonds_level_${c}`] = 0;
|
||||
}
|
||||
|
||||
setAttrs(updateAttrs);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
GLOBAL__HEALTH.forEach(s => on(`change:${s} change:${s}_max`, eventInfo =>
|
||||
currentMax(s, eventInfo)));
|
||||
|
||||
const currentMax = (attr, eventInfo) => {
|
||||
if (eventInfo.sourceType == "player") {
|
||||
let updateAttrs = {};
|
||||
let attr_max = `${attr}_max`;
|
||||
getAttrs([attr, attr_max], val => {
|
||||
const current = parseInt(val[attr]) || 0;
|
||||
const maximum = parseInt(val[attr_max]) || 0;
|
||||
const newCurr = (current > maximum)
|
||||
? maximum
|
||||
: Math.max(0, current);
|
||||
updateAttrs[attr] = newCurr;
|
||||
updateAttrs[attr_max] = Math.max(0, maximum);
|
||||
setAttrs(updateAttrs);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
on("change:repeating_inventory:name", (eventInfo) => {
|
||||
const id = eventInfo.sourceAttribute.split("_")[2];
|
||||
const updateAttrs = {};
|
||||
const name = eventInfo.newValue.trim();
|
||||
let translation = getTranslationByKey(name)
|
||||
if (translation) {
|
||||
updateAttrs[`repeating_inventory_${id}_name`] = translation;
|
||||
|
||||
const searchInputs = _.difference(GLOBAL__INVENTORY_INPUTS, ["name"]);
|
||||
_.each(searchInputs, (key) => {
|
||||
const attr = `repeating_inventory_${id}_${key}`;
|
||||
const i18n = `${name}_${key}`;
|
||||
|
||||
// check if property exists in global
|
||||
if (GLOBAL__INVENTORY[name][key]) {
|
||||
updateAttrs[attr] = GLOBAL__INVENTORY[name][key];
|
||||
}
|
||||
// check if translation exists
|
||||
else if (getTranslationByKey(i18n)) {
|
||||
updateAttrs[attr] = getTranslationByKey(i18n);
|
||||
}
|
||||
});
|
||||
|
||||
log(updateAttrs)
|
||||
setAttrs(updateAttrs, { silent: true });
|
||||
}
|
||||
});
|
||||
|
||||
on("clicked:repeating_inventory:item-expand-toggle", (eventInfo) => {
|
||||
const id = eventInfo.sourceAttribute.split("_")[2];
|
||||
getAttrs([`repeating_inventory_${id}_item_expand`], (val) => {
|
||||
setAttrs({
|
||||
[`repeating_inventory_${id}_item_expand`]: val[`repeating_inventory_${id}_item_expand`] === "0" ? "on" : "0"
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
GLOBAL__SKILLS.forEach((skill) => {
|
||||
on(`clicked:${skill}`, initiateSkillRoll);
|
||||
});
|
||||
|
||||
on("sheet:opened", () => {
|
||||
getAttrs(["version"], (updateAttrs) => {
|
||||
// Logic to determine what updates need to be done
|
||||
if (!updateAttrs.version) {
|
||||
// set sheet version if it doesn't exist
|
||||
updateAttrs.version = "1.0";
|
||||
}
|
||||
|
||||
setAttrs(updateAttrs);
|
||||
});
|
||||
});
|
||||
|
||||
on("sheet:opened", () => {
|
||||
var updateAttrs = {}
|
||||
for (i = 0; i < GLOBAL__HEALTH.length; i++) {
|
||||
var key = `${GLOBAL__HEALTH[i]}`;
|
||||
var translation = `${key}_i18n`;
|
||||
updateAttrs[translation] = getTranslationByKey(key);
|
||||
}
|
||||
setAttrs(updateAttrs);
|
||||
});
|
||||
@@ -0,0 +1,418 @@
|
||||
const GLOBAL__HEALTH = [ "blood", "guts" ];
|
||||
|
||||
const GLOBAL__APPROACHES = [ "creative", "careful", "concerted" ];
|
||||
|
||||
const GLOBAL__SKILLS = [
|
||||
"academic", "culture", "observe", "tactics",
|
||||
"charisma", "guile", "impose", "insight",
|
||||
"acrobatics", "coordination", "physique", "weaponry",
|
||||
"artistry", "survival", "tinker", "trade",
|
||||
"arcana", "focus"
|
||||
];
|
||||
|
||||
const GLOBAL__DIFFICULTIES = [ "tn_modifier+0", "tn_modifier-1", "tn_modifier-2", "tn_modifier-3", "tn_modifier+1", "tn_modifier+2", "tn_modifier+3" ];
|
||||
|
||||
const GLOBAL__APPROACH_QUERY = `[[?{Approach|${GLOBAL__APPROACHES.map((app, i) => `${getTranslationByKey(app)}, ${i}`).join("|")}}]]`;
|
||||
|
||||
const GLOBAL__DIFFICULTY_QUERY = `[[?{Modifiers|${GLOBAL__DIFFICULTIES.map((dif, i) => `${getTranslationByKey(dif)}, ${i}`).join("|")}}]]`;
|
||||
|
||||
const GLOBAL__DIFFICULTY_EFFECTS = {
|
||||
"tn_modifier+0": +0,
|
||||
"tn_modifier-1": -1,
|
||||
"tn_modifier-2": -2,
|
||||
"tn_modifier-3": -3,
|
||||
"tn_modifier+1": +1,
|
||||
"tn_modifier+2": +2,
|
||||
"tn_modifier+3": +3,
|
||||
};
|
||||
|
||||
const GLOBAL__INVENTORY_INPUTS = [
|
||||
"name",
|
||||
"type",
|
||||
"description",
|
||||
"first_boon",
|
||||
"second_boon",
|
||||
"complexity",
|
||||
"base_effect",
|
||||
"enhanced",
|
||||
"ritual"
|
||||
];
|
||||
|
||||
const GLOBAL__INVENTORY = {
|
||||
combat_scowling_face: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_pitchfork: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_memories_of_hardship: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_iron_briefs: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_booming_voice: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_well_rounded_education: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_darts: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_dagger: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_self_esteem: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_studden_leather_armor: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_devastating_vocabulary: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_critical_thinking: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_sturdy_sword: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_crossbow: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_plate_armor: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_love_letter: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_cunning_wit: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
combat_flaming_sword: {
|
||||
type: "damage_and_defense",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_rations: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_artisans_tools: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_crowbar_and_lantern: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_rope_and_carpet: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_bedroll: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_backpack: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_thieves_tools: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_fine_clothes: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_traps: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_tent: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_fishing_pole: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_live_hen: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_board_games: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_alchemists_tools: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_encyclopeida: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_spyglass: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_coded_letters: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
supplies_horse: {
|
||||
type: "supplies_and_sundries",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_seashell_horn: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_dead_donkey: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_ancient_ring: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_songbird: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_human_teeth: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_hat: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_monkey_head: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_heavy_crown: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_giant_serpent_scales: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_silk_dress: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_tyrant_pants: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_shadow_mirror: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_darkvision_glasses: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_divine_blood: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_seeds: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_potion_brawn: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_troll_flesh: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
oddities_telepathic_yak: {
|
||||
type: "oddities_and_valuables",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_trinket: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_trick_of_the_light: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_soundshift: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_lifebringer: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_whisper: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_bind_weapon: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_unmask_the_self: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_secret_door: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_burn_the_past: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_master_of_elements: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_little_escapologist: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_pierce_the_veil: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_manic_hands: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_shadowbind: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_compel: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_windstep: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_blackout: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_spirit_pact: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_from_dust_to_dust: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
spells_true_miracle: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_only_ones_who_know: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_uncanny_alarm: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_weave_through_water: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_memory_seed: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_flowmotion: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_saving_grace: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_inspiration: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_bind_magic: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_stonewall: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_heartpiercer: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_deadly_focus: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_redo: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_turn_the_tide: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_dispel: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_interdiction: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_fluorescent_transcendence: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_netherwave: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_become_one: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_defy_the_fates: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
techniques_doompause: {
|
||||
type: "spells_and_techniques",
|
||||
complexity: 0,
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,81 @@
|
||||
// thank you Scott C!
|
||||
const initiateSkillRoll = async function (event) {
|
||||
let skill = event.triggerName.replace(/clicked:/, "");
|
||||
|
||||
// figure out which approach to use -- so ask
|
||||
let approachRoll = await startRoll(`!&template:default} {{query=${GLOBAL__APPROACH_QUERY}}}`);
|
||||
// note that values for the query options above line up with their indexes in GLOBAL__APPROACHES
|
||||
// also, this is an API message: it won't be visible to any user
|
||||
// because it's so generic, it shouldn't trigger any API scripts
|
||||
|
||||
// finish approachRoll immediately vecause we aren't going to computee
|
||||
// any values from it -- it's just a dummy roll
|
||||
finishRoll(approachRoll.rollId);
|
||||
|
||||
// same song for difficulty
|
||||
let difficultyRoll = await startRoll(`!&template:default} {{query=${GLOBAL__DIFFICULTY_QUERY}}}`);
|
||||
finishRoll(difficultyRoll.rollId);
|
||||
|
||||
// parse the results
|
||||
let approachValue = approachRoll.results.query.result;
|
||||
let approach = GLOBAL__APPROACHES[approachValue];
|
||||
|
||||
let difficultyValue = difficultyRoll.results.query.result;
|
||||
let difficulty = GLOBAL__DIFFICULTIES[difficultyValue];
|
||||
|
||||
let i18nApproach = getTranslationByKey(approach);
|
||||
let i18nSkill = getTranslationByKey(skill);
|
||||
let i18nDifficulty = getTranslationByKey("difficulty");
|
||||
let i18nModifier = getTranslationByKey("modifier");
|
||||
let finalTemplate = [
|
||||
`&{template:skills}`,
|
||||
`{{character_name=@{character_name}}}`,
|
||||
`{{verb=^{tests}}}`,
|
||||
`{{type=skill-test}}`,
|
||||
`{{skill=${skill}}}`,
|
||||
`{{roll=[[1d6]]}}`,
|
||||
`{{flawless=[[1d6]]}}`,
|
||||
`{{flawless=[[1d6]]}}`,
|
||||
`{{TN=[[@{${skill}}[${i18nSkill}] + @{${approach}}[${i18nApproach}] +`,
|
||||
`${GLOBAL__DIFFICULTY_EFFECTS[difficulty]}[${i18nModifier}]]]}}`,
|
||||
`{{title=${approach}}}`,
|
||||
`{{difficulty=${difficulty}}}`
|
||||
].join("");
|
||||
|
||||
// now that we have all the helprmation, make the roll
|
||||
let finalRoll = await startRoll(finalTemplate);
|
||||
finishRoll(finalRoll.rollId);
|
||||
};
|
||||
|
||||
// Functions added for code to make sense, not needed for getting regular and repeating sections.
|
||||
// converts a value to a number, it's default value, or 0.
|
||||
const value = function(val, def) {
|
||||
return (+val||def||0);
|
||||
};
|
||||
|
||||
// ===== PARAMETERS ==========
|
||||
// destinations : the name of the attribute that stores the total quantity
|
||||
// can be a single attribute, or an array: ["total_cost", "total_weight"]
|
||||
// If more than one, the matching fields must be in the same order.
|
||||
//
|
||||
// section : name of repeating fieldset, without the repeating_
|
||||
//
|
||||
// fields : the name of the attribute field to be summed
|
||||
// destination and fields both can be a single attribute: "weight"
|
||||
// or an array of attributes: ["weight","number","equipped"]
|
||||
const repeatingSum = (destinations, section, fields) => {
|
||||
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, "").split(",")];
|
||||
if (!Array.isArray(fields)) fields = [fields.replace(/\s/g, "").split(",")];
|
||||
getSectionIDs(`repeating_${section}`, idArray => {
|
||||
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
|
||||
getAttrs([...attrArray], v => {
|
||||
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === "on" ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
|
||||
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
|
||||
const output = {};
|
||||
destinations.forEach((destination, index) => {
|
||||
output[destination] = idArray.reduce((total, id) => total + getValue(section, id, fields[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * getValue(section, id, mult), 1), 0);
|
||||
});
|
||||
setAttrs(output);
|
||||
});
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "arc",
|
||||
"version": "1.0.0",
|
||||
"description": "Roll20 character sheet for ARC: Doom Tabletop RPG",
|
||||
"main": "arc.html",
|
||||
"scripts": {
|
||||
"build": "gulp build",
|
||||
"watch": "gulp watch"
|
||||
},
|
||||
"author": "Morgdalaine",
|
||||
"funding": [
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/morgdalaine"
|
||||
},
|
||||
{
|
||||
"type": "ko-fi",
|
||||
"url": "https://ko-fi.com/morgdalaine"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/morgdalaine/",
|
||||
"directory": "ARC"
|
||||
},
|
||||
"keywords": [
|
||||
"Roll20"
|
||||
],
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"gulp": "4.0.2",
|
||||
"gulp-pug": "5.0.0",
|
||||
"gulp-sass": "5.0.0",
|
||||
"pug": "3.0.2",
|
||||
"sass": "1.37.0"
|
||||
}
|
||||
}
|
||||