Compare commits
2 commits
d11e457200
...
a1be0791a0
Author | SHA1 | Date | |
---|---|---|---|
a1be0791a0 | |||
2562801dcf |
10 changed files with 289 additions and 145 deletions
15
.vscode/launch.json
vendored
Normal file
15
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Launch Chrome against localhost",
|
||||||
|
"url": "http://127.0.0.1:5500",
|
||||||
|
"webRoot": "${workspaceFolder}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
37
README
37
README
|
@ -0,0 +1,37 @@
|
||||||
|
## Spells
|
||||||
|
|
||||||
|
### JSON structure
|
||||||
|
|
||||||
|
| field | type | value |
|
||||||
|
| ------------------------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| id | _number_ | unique id for the spell, for localization purpose |
|
||||||
|
| name | _string_ | spell's name |
|
||||||
|
| source | _number_ | where the spell is coming from |
|
||||||
|
| page | _number_ | page source |
|
||||||
|
| srd | _boolean_ | is this a srd or a creation |
|
||||||
|
| level | _number_ | spell's level |
|
||||||
|
| school | _string_ | spell school : "A" : Abjuration,"C" : Conjuration, "D": Divination, "E": Enchantment, "N": Necromancy, "T" : Transmutation, "I" : Illusion, "V" : Evocation |
|
||||||
|
| time | _array_ | incantation time |
|
||||||
|
| time.number | _number_ | |
|
||||||
|
| time.unit | _string_ | |
|
||||||
|
| range | _module_ | |
|
||||||
|
| range.type | _string_ | point by default, but can be cone, sphere, cylinder, special |
|
||||||
|
| range.distance | _module_ | |
|
||||||
|
| range.distance.type | _string_ | feet or meter or other unit measure |
|
||||||
|
| range.distance.amount | _number_ | amount of distance in `range.distance.type` |
|
||||||
|
| components | _module_ | |
|
||||||
|
| components.v | _boolean_ | verbal component |
|
||||||
|
| components.s | _boolean_ | somatic component |
|
||||||
|
| components.m | _string_ | materials components |
|
||||||
|
| duration | _array_ | |
|
||||||
|
| duration.type | _string_ | timed, permanent, special or instant |
|
||||||
|
| duration.duration | _module_ | |
|
||||||
|
| duration.duration.type | _string_ | minute or hours |
|
||||||
|
| duration.duration.amount | _number_ | amount of `duration.duration.type` |
|
||||||
|
| concentration | _boolena_ | does spell need concentration ? |
|
||||||
|
| desc | _array_ | markdown description of the spell |
|
||||||
|
| damageInflict | _string_ | |
|
||||||
|
| conditionInflict | _string_ | |
|
||||||
|
| savingThrow | _array_ | array of string of saving Throw available |
|
||||||
|
| miscTags | _array_ | |
|
||||||
|
| | | |
|
81
data/spells/spells-grimoire-en.json
Normal file
81
data/spells/spells-grimoire-en.json
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
"spell": [
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"name": "Acid Arrow",
|
||||||
|
"source": "GRI",
|
||||||
|
"page": 110,
|
||||||
|
"srd": true,
|
||||||
|
"level": 2,
|
||||||
|
"school": "E",
|
||||||
|
"time": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"unit": "action"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"range": {
|
||||||
|
"type": "point",
|
||||||
|
"distance": {
|
||||||
|
"type": "feet",
|
||||||
|
"amount": 90
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"v": true,
|
||||||
|
"s": true,
|
||||||
|
"m": "powdered rhubarb leaf and an adder’s stomach"
|
||||||
|
},
|
||||||
|
"duration": [
|
||||||
|
{
|
||||||
|
"type": "instant"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"desc": [
|
||||||
|
"A shimmering green arrow streaks toward a target within range and bursts in a spray of acid."
|
||||||
|
],
|
||||||
|
"damageInflict": ["acid"],
|
||||||
|
"savingThrow": [""],
|
||||||
|
"miscTags": ["", ""],
|
||||||
|
"areaTags": ["", ""]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Acid Blob",
|
||||||
|
"source": "GRI",
|
||||||
|
"page": 110,
|
||||||
|
"srd": false,
|
||||||
|
"level": 1,
|
||||||
|
"school": "E",
|
||||||
|
"time": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"unit": "action"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"range": {
|
||||||
|
"type": "point",
|
||||||
|
"distance": {
|
||||||
|
"type": "feet",
|
||||||
|
"amount": 90
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"v": true,
|
||||||
|
"s": true
|
||||||
|
},
|
||||||
|
"duration": [
|
||||||
|
{
|
||||||
|
"type": "instant"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"desc": [
|
||||||
|
"A yellowish bubble shoots from your pointed finger toward a creature of your choice within range"
|
||||||
|
],
|
||||||
|
"damageInflict": ["acid"],
|
||||||
|
"savingThrow": [""],
|
||||||
|
"miscTags": ["", ""],
|
||||||
|
"areaTags": ["", ""]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,64 +1,81 @@
|
||||||
{ "spell": [ {
|
{
|
||||||
"name": "Acid Splash",
|
"spell": [
|
||||||
"source": "PHB",
|
{
|
||||||
"page": 211,
|
"id": 0,
|
||||||
"srd": true,
|
"name": "Flèche Acide",
|
||||||
"basicRules": true,
|
"source": "GRI",
|
||||||
"level": 0,
|
"page": 188,
|
||||||
"school": "C",
|
"srd": true,
|
||||||
"time": [
|
"level": 2,
|
||||||
{
|
"school": "V",
|
||||||
"number": 1,
|
"time": [
|
||||||
"unit": "action"
|
{
|
||||||
}
|
"number": 1,
|
||||||
],
|
"unit": "action"
|
||||||
"range": {
|
}
|
||||||
"type": "point",
|
],
|
||||||
"distance": {
|
"range": {
|
||||||
"type": "feet",
|
"type": "point",
|
||||||
"amount": 60
|
"distance": {
|
||||||
}
|
"type": "m",
|
||||||
},
|
"amount": 27
|
||||||
"components": {
|
}
|
||||||
"v": true,
|
},
|
||||||
"s": true
|
"components": {
|
||||||
},
|
"v": true,
|
||||||
"duration": [
|
"s": true,
|
||||||
{
|
"m": "de la poudre de feuille de rhubarbe et un estomac de vipère"
|
||||||
"type": "instant"
|
},
|
||||||
}
|
"duration": [
|
||||||
],
|
{
|
||||||
"entries": [
|
"type": "instant"
|
||||||
"You hurl a bubble of acid. Choose one creature you can see within range, or choose two creatures you can see within range that are within 5 feet of each other. A target must succeed on a Dexterity saving throw or take {@damage 1d6} acid damage.",
|
}
|
||||||
"This spell's damage increases by {@dice 1d6} when you reach 5th level ({@damage 2d6}), 11th level ({@damage 3d6}), and 17th level ({@damage 4d6})."
|
],
|
||||||
],
|
"desc": [
|
||||||
"scalingLevelDice": {
|
"Une flèche verte et chatoyante file droit vers une cible située à portée avant d’éclater et de l’arroser d’acide."
|
||||||
"label": "acid damage",
|
],
|
||||||
"scaling": {
|
"damageInflict": ["acid"],
|
||||||
"1": "1d6",
|
"savingThrow": [""],
|
||||||
"5": "2d6",
|
"miscTags": ["", ""],
|
||||||
"11": "3d6",
|
"areaTags": ["", ""]
|
||||||
"17": "4d6"
|
},
|
||||||
}
|
{
|
||||||
},
|
"id": 1,
|
||||||
"damageInflict": [
|
"name": "Bille Acide",
|
||||||
"acid"
|
"source": "GRI",
|
||||||
],
|
"page": 134,
|
||||||
"savingThrow": [
|
"srd": false,
|
||||||
"dexterity"
|
"level": 1,
|
||||||
],
|
"school": "V",
|
||||||
"miscTags": [
|
"time": [
|
||||||
"SCL",
|
{
|
||||||
"SGT"
|
"number": 1,
|
||||||
],
|
"unit": "action"
|
||||||
"areaTags": [
|
}
|
||||||
"ST",
|
],
|
||||||
"MT"
|
"range": {
|
||||||
]
|
"type": "point",
|
||||||
},
|
"distance": {
|
||||||
|
"type": "m",
|
||||||
|
"amount": 27
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"v": true,
|
||||||
|
"s": true
|
||||||
|
},
|
||||||
|
"duration": [
|
||||||
|
{
|
||||||
|
"type": "instant"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"desc": [
|
||||||
|
"Vous fixez du regard une cible à portée en tendant un doigt vers elle, et une bille jaunâtre jaillit dans sa direction"
|
||||||
|
],
|
||||||
|
"damageInflict": ["acid"],
|
||||||
|
"savingThrow": ["Constitution"],
|
||||||
|
"miscTags": ["", ""],
|
||||||
|
"areaTags": ["", ""]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,64 +0,0 @@
|
||||||
{ "spell": [ {
|
|
||||||
"name": "Acid Splash",
|
|
||||||
"source": "PHB",
|
|
||||||
"page": 211,
|
|
||||||
"srd": true,
|
|
||||||
"basicRules": true,
|
|
||||||
"level": 0,
|
|
||||||
"school": "C",
|
|
||||||
"time": [
|
|
||||||
{
|
|
||||||
"number": 1,
|
|
||||||
"unit": "action"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"range": {
|
|
||||||
"type": "point",
|
|
||||||
"distance": {
|
|
||||||
"type": "feet",
|
|
||||||
"amount": 60
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"components": {
|
|
||||||
"v": true,
|
|
||||||
"s": true
|
|
||||||
},
|
|
||||||
"duration": [
|
|
||||||
{
|
|
||||||
"type": "instant"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"entries": [
|
|
||||||
"You hurl a bubble of acid. Choose one creature you can see within range, or choose two creatures you can see within range that are within 5 feet of each other. A target must succeed on a Dexterity saving throw or take {@damage 1d6} acid damage.",
|
|
||||||
"This spell's damage increases by {@dice 1d6} when you reach 5th level ({@damage 2d6}), 11th level ({@damage 3d6}), and 17th level ({@damage 4d6})."
|
|
||||||
],
|
|
||||||
"scalingLevelDice": {
|
|
||||||
"label": "acid damage",
|
|
||||||
"scaling": {
|
|
||||||
"1": "1d6",
|
|
||||||
"5": "2d6",
|
|
||||||
"11": "3d6",
|
|
||||||
"17": "4d6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"damageInflict": [
|
|
||||||
"acid"
|
|
||||||
],
|
|
||||||
"savingThrow": [
|
|
||||||
"dexterity"
|
|
||||||
],
|
|
||||||
"miscTags": [
|
|
||||||
"SCL",
|
|
||||||
"SGT"
|
|
||||||
],
|
|
||||||
"areaTags": [
|
|
||||||
"ST",
|
|
||||||
"MT"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
|
@ -24,11 +24,11 @@
|
||||||
<div><i class="fa-solid fa-wand-sparkles"></i></div>
|
<div><i class="fa-solid fa-wand-sparkles"></i></div>
|
||||||
<div data-localize="btn-spells">spells</div>
|
<div data-localize="btn-spells">spells</div>
|
||||||
</button>
|
</button>
|
||||||
<button onclick="window.location.href='monsters.html';">
|
<button onclick="window.location.href='monsters.html';" disabled>
|
||||||
<div><i class="fa-solid fa-dragon"></i></div>
|
<div><i class="fa-solid fa-dragon"></i></div>
|
||||||
<div data-localize="btn-monsters">monsters</div>
|
<div data-localize="btn-monsters">monsters</div>
|
||||||
</button>
|
</button>
|
||||||
<button onclick="window.location.href='items.html';">
|
<button onclick="window.location.href='items.html';" disabled>
|
||||||
<div><i class="fa-solid fa-hand-sparkles"></i></div>
|
<div><i class="fa-solid fa-hand-sparkles"></i></div>
|
||||||
<div data-localize="btn-items">items</div>
|
<div data-localize="btn-items">items</div>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// In a browser where the language is set to French
|
|
||||||
$("[data-localize]").localize("main", { pathPrefix: "lang" });
|
$("[data-localize]").localize("main", { pathPrefix: "lang" });
|
||||||
|
|
||||||
// You can also override the language detection, and pass in a language code
|
// You can also override the language detection, and pass in a language code
|
||||||
|
|
29
js/spells.js
29
js/spells.js
|
@ -0,0 +1,29 @@
|
||||||
|
var normaliseLang;
|
||||||
|
normaliseLang = function (lang) {
|
||||||
|
lang = lang.replace(/_/, "-").toLowerCase();
|
||||||
|
if (lang.length > 3) {
|
||||||
|
lang = lang.substring(0, 3) + lang.substring(3).toUpperCase();
|
||||||
|
}
|
||||||
|
return lang;
|
||||||
|
};
|
||||||
|
|
||||||
|
$.defaultLanguage = normaliseLang(
|
||||||
|
navigator.languages && navigator.languages.length > 0
|
||||||
|
? navigator.languages[0]
|
||||||
|
: navigator.language || navigator.userLanguage
|
||||||
|
);
|
||||||
|
var lang = normaliseLang( $.defaultLanguage);
|
||||||
|
|
||||||
|
fetch('data/spells/spells-grimoire-fr.json')
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((json) => JSON.parse(json));
|
||||||
|
|
||||||
|
|
||||||
|
var string jsonsource = ''.concat("../data/spells/spells-grimoire-",navigator.languages[0].slice(0,2),".json");
|
||||||
|
|
||||||
|
import data from jsonsource assert { type: 'json' };
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
var yourHtml = JSON;
|
||||||
|
|
||||||
|
document.getElementById("spell-list").innerHTML = yourHtml;
|
31
spells.html
31
spells.html
|
@ -1,4 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
@ -16,13 +17,41 @@
|
||||||
<h1>FateforgeTools</h1>
|
<h1>FateforgeTools</h1>
|
||||||
<h2 data-localize="btn-spells">Spells</h2>
|
<h2 data-localize="btn-spells">Spells</h2>
|
||||||
|
|
||||||
|
<div class="container" style="display: flex;">
|
||||||
|
|
||||||
|
<div class="view-col" id="list">
|
||||||
|
<div id="sublistcontainer" class="sublist sublist--resizable">
|
||||||
|
<div id="sublistsort" class="btn-group">
|
||||||
|
<button class="btn-xs" data-sort="name" data-localize="spell-name">Name</button>
|
||||||
|
<button class="btn-xs" data-sort="level" data-localize="spell-level">Level</button>
|
||||||
|
<button class="btn-xs" data-sort="time" data-localize="spell-time">Time</button>
|
||||||
|
<button class="btn-xs" data-sort="school" data-localize="spell-school">School</button>
|
||||||
|
<button class="btn-xs" data-sort="concentration" title="Concentration" data-localize="spell-concentration">C.</button>
|
||||||
|
<button class="btn-xs" data-sort="range">Range</button>
|
||||||
|
</div>
|
||||||
|
<div id="spell-list" class="list subspells">
|
||||||
|
<!-- populate with JS -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="view-col" id="content">
|
||||||
|
<table id="pagecontent" class="w-100 stats">
|
||||||
|
<tr><th class="border" colspan="6"></th></tr>
|
||||||
|
<tr><td colspan="6" class="initial-message">Select a spell from the list to view it here</td></tr>
|
||||||
|
<tr><th class="border" colspan="6"></th></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="lib/jquery.min.js"></script>
|
<script type="text/javascript" src="lib/jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="lib/jquery.localize.js"></script>
|
<script type="text/javascript" src="lib/jquery.localize-dev.js"></script>
|
||||||
<script type="text/javascript" src="js/language.js"></script>
|
<script type="text/javascript" src="js/language.js"></script>
|
||||||
|
<script type="module" src="js/spells.js"></script>
|
||||||
|
|
||||||
<script src="https://kit.fontawesome.com/126cdd0e29.js" crossorigin="anonymous"></script>
|
<script src="https://kit.fontawesome.com/126cdd0e29.js" crossorigin="anonymous"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
Loading…
Reference in a new issue