Compare commits

...

2 commits

Author SHA1 Message Date
a1be0791a0 start spell.js 2023-03-05 02:03:48 +01:00
2562801dcf Add test spells + doc 2023-03-05 02:02:43 +01:00
10 changed files with 289 additions and 145 deletions

15
.vscode/launch.json vendored Normal file
View 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
View file

@ -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_ | |
| | | |

View 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 adders 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": ["", ""]
}
]
}

View file

@ -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 larroser dacide."
                                "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": ["", ""]
}
]
} }

View file

@ -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"
                        ]
                },
}
]
}

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -3,10 +3,10 @@
"desc": "Une gamme d'outils pour les joueurs et les meneurs de Dragons.", "desc": "Une gamme d'outils pour les joueurs et les meneurs de Dragons.",
"terms": { "terms": {
"Fateforge": "Dragons" "Fateforge": "Dragons"
}, },
"btn-spells": "Sorts", "btn-spells": "Sorts",
"btn-monsters": "Créatures", "btn-monsters": "Créatures",
"btn-items": "Objets Magiques", "btn-items": "Objets Magiques",
"CUVD": "Site non-officiel pour Dragons créé(e). Utilise des contenus protégés par la propriété intellectuelle © Agate RPG, avec laimable permission de léditeur dans le cadre de la licence CUVD.", "CUVD": "Site non-officiel pour Dragons créé(e). Utilise des contenus protégés par la propriété intellectuelle © Agate RPG, avec laimable permission de léditeur dans le cadre de la licence CUVD.",
"link": "Rejoignez la communauté : <a href='www.dragons-rpg.com'>www.dragons-rpg.com</a>" "link": "Rejoignez la communauté : <a href='www.dragons-rpg.com'>www.dragons-rpg.com</a>"
} }

View file

@ -1,4 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
@ -14,15 +15,43 @@
<button onclick="changeLangFR()">French</button> <button onclick="changeLangFR()">French</button>
<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>