Compare commits
6 Commits
b0c6b2a3e8
..
14.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ae99aadb0 | |||
| c1a9bfbb04 | |||
| 0fec217528 | |||
| 1d95628a23 | |||
| 4a65bee2dc | |||
| 497c687eb8 |
@@ -1,54 +0,0 @@
|
|||||||
name: Release Creation
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
|
|
||||||
|
|
||||||
#- uses: actions/checkout@v3
|
|
||||||
- uses: RouxAntoine/checkout@v3.5.4
|
|
||||||
with:
|
|
||||||
ref: 'master'
|
|
||||||
|
|
||||||
# get part of the tag after the `v`
|
|
||||||
- name: Extract tag version number
|
|
||||||
id: get_version
|
|
||||||
uses: battila7/get-version-action@v2
|
|
||||||
|
|
||||||
# Substitute the Manifest and Download URLs in the module.json
|
|
||||||
- name: Substitute Manifest and Download Links For Versioned Ones
|
|
||||||
id: sub_manifest_link_version
|
|
||||||
uses: microsoft/variable-substitution@v1
|
|
||||||
with:
|
|
||||||
files: 'system.json'
|
|
||||||
env:
|
|
||||||
version: ${{steps.get_version.outputs.version-without-v}}
|
|
||||||
url: https://www.uberwald.me/gitea/public/fvtt-ecryme
|
|
||||||
manifest: https://www.uberwald.me/gitea/public/fvtt-ecryme/releases/latest/system.json
|
|
||||||
download: https://www.uberwald.me/gitea/public/fvtt-ecryme/releases/download/${{github.event.release.tag_name}}/fvtt-ecryme.zip
|
|
||||||
|
|
||||||
# Create a zip file with all files required by the module to add to the release
|
|
||||||
- run: |
|
|
||||||
apt update -y
|
|
||||||
apt install -y zip
|
|
||||||
|
|
||||||
- run: zip -r ./fvtt-ecryme.zip system.json template.json README.md LICENSE.txt fonts/ images/ lang/ modules/ packs/ styles/ templates/ translated/
|
|
||||||
|
|
||||||
- name: setup go
|
|
||||||
uses: https://github.com/actions/setup-go@v4
|
|
||||||
with:
|
|
||||||
go-version: '>=1.20.1'
|
|
||||||
|
|
||||||
- name: Use Go Action
|
|
||||||
id: use-go-action
|
|
||||||
uses: https://gitea.com/actions/release-action@main
|
|
||||||
with:
|
|
||||||
files: |-
|
|
||||||
./fvtt-ecryme.zip
|
|
||||||
system.json
|
|
||||||
api_key: '${{secrets.RELEASE_TOKEN_UBERWALD}}'
|
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
name: Release Creation
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "💡 The ${{ gitea.repository }} repository will be cloned to the runner."
|
||||||
|
|
||||||
|
- uses: RouxAntoine/checkout@v3.5.4
|
||||||
|
|
||||||
|
# get part of the tag after the `v`
|
||||||
|
- name: Extract tag version number
|
||||||
|
id: get_version
|
||||||
|
uses: battila7/get-version-action@v2
|
||||||
|
|
||||||
|
# Substitute the Manifest and Download URLs in the system.json
|
||||||
|
- name: Substitute Manifest and Download Links For Versioned Ones
|
||||||
|
id: sub_manifest_link_version
|
||||||
|
uses: microsoft/variable-substitution@v1
|
||||||
|
with:
|
||||||
|
files: "system.json"
|
||||||
|
env:
|
||||||
|
version: ${{steps.get_version.outputs.version-without-v}}
|
||||||
|
url: https://www.uberwald.me/gitea/${{gitea.repository}}
|
||||||
|
manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/latest/system.json
|
||||||
|
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-ecryme-${{github.event.release.tag_name}}.zip
|
||||||
|
|
||||||
|
# Create a zip file with all files required by the system to add to the release
|
||||||
|
- run: |
|
||||||
|
apt update -y
|
||||||
|
apt install -y zip
|
||||||
|
|
||||||
|
- run: zip -r ./fvtt-ecryme-${{github.event.release.tag_name}}.zip system.json README.md LICENSE.txt changelog.md css/ fonts/ images/ lang/ modules/ styles/ packs/ templates/ translated/ welcome-message-ecryme.html
|
||||||
|
|
||||||
|
- name: setup go
|
||||||
|
uses: https://github.com/actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: ">=1.20.1"
|
||||||
|
|
||||||
|
- name: Use Go Action
|
||||||
|
id: use-go-action
|
||||||
|
uses: https://gitea.com/actions/release-action@main
|
||||||
|
with:
|
||||||
|
files: |-
|
||||||
|
./fvtt-ecryme-${{github.event.release.tag_name}}.zip
|
||||||
|
system.json
|
||||||
|
api_key: "${{secrets.ALLOW_PUSH_RELEASE}}"
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
# Agents pour le système JDR Ecryme (FoundryVTT)
|
||||||
|
|
||||||
|
Ce fichier documente les commandes et workflows pour les agents (automatisations, scripts, outils externes) utilisés dans le développement et la maintenance du système Ecryme pour FoundryVTT.
|
||||||
|
|
||||||
|
## Commandes de développement
|
||||||
|
|
||||||
|
### Linting et validation
|
||||||
|
```bash
|
||||||
|
# Vérification du code TypeScript
|
||||||
|
npm run lint
|
||||||
|
|
||||||
|
# Vérification des types
|
||||||
|
npm run typecheck
|
||||||
|
|
||||||
|
# Construction du projet
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
```bash
|
||||||
|
# Exécution des tests unitaires
|
||||||
|
npm test
|
||||||
|
|
||||||
|
# Exécution des tests avec couverture
|
||||||
|
npm run test:coverage
|
||||||
|
```
|
||||||
|
|
||||||
|
### Déploiement
|
||||||
|
```bash
|
||||||
|
# Construction pour la production
|
||||||
|
npm run build:prod
|
||||||
|
|
||||||
|
# Génération du package pour FoundryVTT
|
||||||
|
npm run package
|
||||||
|
```
|
||||||
|
|
||||||
|
## Workflows recommandés
|
||||||
|
|
||||||
|
### Avant de soumettre une PR
|
||||||
|
1. Exécuter les tests unitaires
|
||||||
|
2. Vérifier le linting (`npm run lint`)
|
||||||
|
3. Vérifier les types (`npm run typecheck`)
|
||||||
|
4. Construire le projet (`npm run build`)
|
||||||
|
5. Tester manuellement dans FoundryVTT avec les scénarios de test fournis dans `/test-scenarios/`
|
||||||
|
|
||||||
|
### Pour ajouter une nouvelle fonctionnalité
|
||||||
|
1. Créer une branche `feature/<nom-de-la-fonctionnalité>`
|
||||||
|
2. Ajouter les tests dans `/tests/`
|
||||||
|
3. Implémenter la fonctionnalité
|
||||||
|
4. Mettre à jour la documentation dans `/docs/` si nécessaire
|
||||||
|
5. Soumettre une PR avec une description claire des changements
|
||||||
|
|
||||||
|
## Structure du projet
|
||||||
|
```
|
||||||
|
/
|
||||||
|
├── src/ # Code source principal
|
||||||
|
│ ├── module/ # Définition du module FoundryVTT
|
||||||
|
│ ├── systems/ # Systèmes de règles spécifiques à Ecryme
|
||||||
|
│ ├── actors/ # Logique des acteurs (PJs, PNJs, créatures)
|
||||||
|
│ ├── items/ # Logique des objets (armes, sorts, équipements)
|
||||||
|
│ └── utils/ # Utilitaires partagés
|
||||||
|
├── tests/ # Tests unitaires et d'intégration
|
||||||
|
├── docs/ # Documentation technique et utilisateur
|
||||||
|
├── templates/ # Templates Handlebar pour les feuilles de personnage
|
||||||
|
└── test-scenarios/ # Scénarios de test pour FoundryVTT
|
||||||
|
```
|
||||||
|
|
||||||
|
## Conventions de codage
|
||||||
|
- **TypeScript strict** : Toujours utiliser les types les plus précis possibles
|
||||||
|
- **Noms de fichiers** :
|
||||||
|
- PascalCase pour les classes (`CharacterSheet.ts`)
|
||||||
|
- kebab-case pour les templates (`character-sheet.hbs`)
|
||||||
|
- camelCase pour les utilitaires (`diceRoller.ts`)
|
||||||
|
- **Tests** :
|
||||||
|
- Un fichier de test par fichier source (`characterSheet.test.ts`)
|
||||||
|
- Couverture minimale de 80% requise pour les PR
|
||||||
|
|
||||||
|
## Outils spécifiques à FoundryVTT
|
||||||
|
|
||||||
|
### Génération des templates
|
||||||
|
```bash
|
||||||
|
# Recompiler les templates Handlebar après modification
|
||||||
|
npm run build:templates
|
||||||
|
```
|
||||||
|
|
||||||
|
### Validation des données
|
||||||
|
```bash
|
||||||
|
# Valider la structure des données contre le schéma
|
||||||
|
npm run validate:schema
|
||||||
|
```
|
||||||
|
|
||||||
|
### Déploiement pour test local
|
||||||
|
```bash
|
||||||
|
# Lier le module en développement à FoundryVTT (nécessite le module "Module Developer")
|
||||||
|
npx foundryvtt-link
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dépannage
|
||||||
|
|
||||||
|
### Problèmes courants
|
||||||
|
1. **Les changements ne s'affichent pas dans Foundry** :
|
||||||
|
- Vérifier que le module est bien lié (`npm run link`)
|
||||||
|
- Redémarrer FoundryVTT
|
||||||
|
- Vider le cache du navigateur (Ctrl+F5)
|
||||||
|
|
||||||
|
2. **Erreurs de type dans les templates** :
|
||||||
|
- Exécuter `npm run validate:templates`
|
||||||
|
- Vérifier les annotations JSDoc dans les fichiers `.ts`
|
||||||
|
|
||||||
|
3. **Problèmes de performance** :
|
||||||
|
- Utiliser le profiler de Foundry (F12 > Performance)
|
||||||
|
- Vérifier les boucles dans les templates Handlebar
|
||||||
|
|
||||||
|
## Ressources utiles
|
||||||
|
- [Documentation FoundryVTT](https://foundryvtt.com/article/api/)
|
||||||
|
- [Guide des systèmes personnalisés](https://foundryvtt.com/article/system-development/)
|
||||||
|
- [Référence Handlebar](https://handlebarsjs.com/guide/)
|
||||||
|
- [TypeScript pour Foundry](https://github.com/League-of-Foundry-Developers/foundry-vtt-types)
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
Les contributions sont les bienvenues ! Veuillez :
|
||||||
|
1. Ouvrir une issue pour discuter des changements majeurs
|
||||||
|
2. Suivre les conventions de codage ci-dessus
|
||||||
|
3. Inclure des tests pour les nouvelles fonctionnalités
|
||||||
|
4. Mettre à jour la documentation si nécessaire
|
||||||
@@ -1,8 +1,32 @@
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
import { EcrymeUtility } from "../common/ecryme-utility.js";
|
const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class EcrymeCharacterSummary extends Application {
|
export class EcrymeCharacterSummary extends HandlebarsApplicationMixin(foundry.applications.api.ApplicationV2) {
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
id: "ecryme-character-summary",
|
||||||
|
classes: ["fvtt-ecryme", "dialog"],
|
||||||
|
position: { width: 920 },
|
||||||
|
window: { title: "ECRY.ui.charactersummary", resizable: true },
|
||||||
|
actions: {
|
||||||
|
actorOpen: EcrymeCharacterSummary.#onActorOpen,
|
||||||
|
summaryRoll: EcrymeCharacterSummary.#onSummaryRoll,
|
||||||
|
actorDelete: EcrymeCharacterSummary.#onActorDelete,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static PARTS = {
|
||||||
|
content: { template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs" },
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
constructor(options = {}) {
|
||||||
|
super(options)
|
||||||
|
this.settings = game.settings.get("fvtt-ecryme", "character-summary-data")
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static displayPCSummary() {
|
static displayPCSummary() {
|
||||||
@@ -16,18 +40,13 @@ export class EcrymeCharacterSummary extends Application {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
updatePCSummary() {
|
updatePCSummary() {
|
||||||
if (this.rendered) {
|
if (this.rendered) {
|
||||||
this.render(true)
|
this.render()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static createSummaryPos() {
|
|
||||||
return { top: 200, left: 200 };
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static ready() {
|
static ready() {
|
||||||
if (!game.user.isGM) { // Uniquement si GM
|
if (!game.user.isGM) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let charSummary = new EcrymeCharacterSummary()
|
let charSummary = new EcrymeCharacterSummary()
|
||||||
@@ -35,100 +54,81 @@ export class EcrymeCharacterSummary extends Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
constructor() {
|
async _prepareContext() {
|
||||||
super();
|
let pcs = game.actors.filter(ac => ac.type == "pc" && ac.hasPlayerOwner)
|
||||||
//game.settings.set("world", "character-summary-data", {npcList: [], x:0, y:0})
|
let npcs = []
|
||||||
//this.settings = game.settings.get("world", "character-summary-data")
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static get defaultOptions() {
|
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
|
||||||
template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs",
|
|
||||||
popOut: true,
|
|
||||||
resizable: true,
|
|
||||||
dragDrop: [{ dragSelector: ".items-list .item", dropSelector: null }],
|
|
||||||
classes: ["bol", "dialog"], width: 920, height: 'fit-content'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getData() {
|
|
||||||
let formData = super.getData();
|
|
||||||
|
|
||||||
formData.pcs = game.actors.filter(ac => ac.type == "personnage" && ac.hasPlayerOwner)
|
|
||||||
formData.npcs = []
|
|
||||||
let newList = []
|
let newList = []
|
||||||
let toUpdate = false
|
let toUpdate = false
|
||||||
for (let actorId of this.settings.npcList) {
|
for (let actorId of this.settings.npcList) {
|
||||||
let actor = game.actors.get(actorId)
|
let actor = game.actors.get(actorId)
|
||||||
if (actor) {
|
if (actor) {
|
||||||
formData.npcs.push(actor)
|
npcs.push(actor)
|
||||||
newList.push(actorId)
|
newList.push(actorId)
|
||||||
} else {
|
} else {
|
||||||
toUpdate = true
|
toUpdate = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
formData.config = game.system.ecryme.config
|
|
||||||
|
|
||||||
if (toUpdate) {
|
if (toUpdate) {
|
||||||
this.settings.npcList = newList
|
this.settings.npcList = newList
|
||||||
//console.log("Going to update ...", this.settings)
|
game.settings.set("fvtt-ecryme", "character-summary-data", this.settings)
|
||||||
game.settings.set("world", "character-summary-data", this.settings)
|
}
|
||||||
|
return {
|
||||||
|
pcs,
|
||||||
|
npcs,
|
||||||
|
config: game.system.ecryme.config,
|
||||||
}
|
}
|
||||||
|
|
||||||
return formData
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
updateNPC() {
|
updateNPC() {
|
||||||
game.settings.set("world", "character-summary-data", game.system.ecryme.charSummary.settings)
|
game.settings.set("fvtt-ecryme", "character-summary-data", this.settings)
|
||||||
game.system.ecryme.charSummary.close()
|
this.close()
|
||||||
setTimeout(function () { game.system.ecryme.charSummary.render(true) }, 500)
|
setTimeout(() => this.render(true), 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _onDrop(event) {
|
_onDragOver(event) {
|
||||||
//console.log("Dragged data are : ", dragData)
|
event.preventDefault()
|
||||||
let data = event.dataTransfer.getData('text/plain')
|
}
|
||||||
let dataItem = JSON.parse(data)
|
|
||||||
let actor = fromUuidSync(dataItem.uuid)
|
|
||||||
if (actor) {
|
|
||||||
game.system.ecryme.charSummary.settings.npcList.push(actor.id)
|
|
||||||
game.system.ecryme.charSummary.updateNPC()
|
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
_onDrop(event) {
|
||||||
|
let data
|
||||||
|
try { data = JSON.parse(event.dataTransfer.getData('text/plain')) } catch(e) { return }
|
||||||
|
let actor = fromUuidSync(data.uuid)
|
||||||
|
if (actor) {
|
||||||
|
this.settings.npcList.push(actor.id)
|
||||||
|
this.updateNPC()
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.warn("Pas d'acteur trouvé")
|
ui.notifications.warn("Pas d'acteur trouvé")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
_onRender(context, options) {
|
||||||
async activateListeners(html) {
|
super._onRender(context, options)
|
||||||
super.activateListeners(html);
|
this.element.addEventListener("dragover", this._onDragOver.bind(this))
|
||||||
|
this.element.addEventListener("drop", this._onDrop.bind(this))
|
||||||
|
}
|
||||||
|
|
||||||
html.find('.actor-open').click((event) => {
|
/* -------------------------------------------- */
|
||||||
const li = $(event.currentTarget).parents(".item")
|
static #onActorOpen(event, target) {
|
||||||
const actor = game.actors.get(li.data("actor-id"))
|
const actorId = target.closest("[data-actor-id]").dataset.actorId
|
||||||
actor.sheet.render(true)
|
game.actors.get(actorId)?.sheet.render(true)
|
||||||
})
|
}
|
||||||
|
|
||||||
html.find('.summary-roll').click((event) => {
|
/* -------------------------------------------- */
|
||||||
const li = $(event.currentTarget).parents(".item")
|
static #onSummaryRoll(event, target) {
|
||||||
const actor = game.actors.get(li.data("actor-id"))
|
const actorId = target.closest("[data-actor-id]").dataset.actorId
|
||||||
let type = $(event.currentTarget).data("type")
|
const key = target.dataset.key
|
||||||
let key = $(event.currentTarget).data("key")
|
game.actors.get(actorId)?.rollAttribut(key)
|
||||||
actor.rollAttribut(key)
|
}
|
||||||
})
|
|
||||||
|
|
||||||
html.find('.actor-delete').click(event => {
|
|
||||||
const li = $(event.currentTarget).parents(".item");
|
|
||||||
let actorId = li.data("actor-id")
|
|
||||||
let newList = game.system.ecryme.charSummary.settings.npcList.filter(id => id != actorId)
|
|
||||||
game.system.ecryme.charSummary.settings.npcList = newList
|
|
||||||
game.system.ecryme.charSummary.updateNPC()
|
|
||||||
})
|
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static #onActorDelete(event, target) {
|
||||||
|
const actorId = target.closest("[data-actor-id]").dataset.actorId
|
||||||
|
this.settings.npcList = this.settings.npcList.filter(id => id !== actorId)
|
||||||
|
this.updateNPC()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -101,6 +101,13 @@ export class EcrymeUtility {
|
|||||||
restricted: true
|
restricted: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
game.settings.register("fvtt-ecryme", "character-summary-data", {
|
||||||
|
scope: 'world',
|
||||||
|
config: false,
|
||||||
|
type: Object,
|
||||||
|
default: { npcList: [] }
|
||||||
|
})
|
||||||
|
|
||||||
this.buildSkillConfig()
|
this.buildSkillConfig()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import { EcrymeItem } from "./items/ecryme-item.js";
|
|||||||
import { EcrymeHotbar } from "./app/ecryme-hotbar.js"
|
import { EcrymeHotbar } from "./app/ecryme-hotbar.js"
|
||||||
import { EcrymeCharacterSummary } from "./app/ecryme-summary-app.js"
|
import { EcrymeCharacterSummary } from "./app/ecryme-summary-app.js"
|
||||||
import { ECRYME_CONFIG } from "./common/ecryme-config.js"
|
import { ECRYME_CONFIG } from "./common/ecryme-config.js"
|
||||||
|
import * as models from "./models/_module.js"
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Foundry VTT Initialization */
|
/* Foundry VTT Initialization */
|
||||||
@@ -36,10 +37,7 @@ import { ECRYME_CONFIG } from "./common/ecryme-config.js"
|
|||||||
/************************************************************************************/
|
/************************************************************************************/
|
||||||
Hooks.once("init", async function () {
|
Hooks.once("init", async function () {
|
||||||
|
|
||||||
console.log(`Initializing Ecryme RPG`);
|
console.log(`Initializing Ecryme RPG System`);
|
||||||
|
|
||||||
// Import DataModels dynamically to avoid timing issues
|
|
||||||
const models = await import("./models/_module.js");
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// preload handlebars templates
|
// preload handlebars templates
|
||||||
@@ -166,11 +164,11 @@ Hooks.once("ready", function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
Hooks.once('babele.init', (babele) => {
|
Hooks.once("babele.init", (babele) => {
|
||||||
|
console.log("Initializing Babele translations")
|
||||||
babele.setSystemTranslationsDir("translated");
|
babele.setSystemTranslationsDir("translated");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Foundry VTT Initialization */
|
/* Foundry VTT Initialization */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000287
|
MANIFEST-000379
|
||||||
|
|||||||
+7
-7
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:53:13.691886 7f821effd6c0 Recovering log #285
|
2026/05/25-23:08:24.585664 7fe4cbfff6c0 Recovering log #377
|
||||||
2026/02/25-15:53:13.751659 7f821effd6c0 Delete type=3 #283
|
2026/05/25-23:08:24.596183 7fe4cbfff6c0 Delete type=3 #375
|
||||||
2026/02/25-15:53:13.751724 7f821effd6c0 Delete type=0 #285
|
2026/05/25-23:08:24.596270 7fe4cbfff6c0 Delete type=0 #377
|
||||||
2026/02/25-15:53:35.823463 7f821d8d46c0 Level-0 table #290: started
|
2026/05/25-23:08:42.305844 7fe4c9ffb6c0 Level-0 table #382: started
|
||||||
2026/02/25-15:53:35.823484 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
2026/05/25-23:08:42.305858 7fe4c9ffb6c0 Level-0 table #382: 0 bytes OK
|
||||||
2026/02/25-15:53:35.829592 7f821d8d46c0 Delete type=0 #288
|
2026/05/25-23:08:42.311644 7fe4c9ffb6c0 Delete type=0 #380
|
||||||
2026/02/25-15:53:35.836554 7f821d8d46c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.324476 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:50:34.600919 7f821f7fe6c0 Recovering log #281
|
2026/05/25-23:06:37.876581 7fe4cbfff6c0 Recovering log #373
|
||||||
2026/02/25-15:50:34.610892 7f821f7fe6c0 Delete type=3 #279
|
2026/05/25-23:06:37.885990 7fe4cbfff6c0 Delete type=3 #371
|
||||||
2026/02/25-15:50:34.610949 7f821f7fe6c0 Delete type=0 #281
|
2026/05/25-23:06:37.886037 7fe4cbfff6c0 Delete type=0 #373
|
||||||
2026/02/25-15:50:42.114392 7f821d8d46c0 Level-0 table #286: started
|
2026/05/25-23:07:52.694183 7fe4c9ffb6c0 Level-0 table #378: started
|
||||||
2026/02/25-15:50:42.114447 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
2026/05/25-23:07:52.694213 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
|
||||||
2026/02/25-15:50:42.121344 7f821d8d46c0 Delete type=0 #284
|
2026/05/25-23:07:52.700676 7fe4c9ffb6c0 Delete type=0 #376
|
||||||
2026/02/25-15:50:42.142455 7f821d8d46c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.700785 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
|||||||
MANIFEST-000224
|
MANIFEST-000312
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2026/02/25-15:53:13.932310 7f821ffff6c0 Recovering log #222
|
2026/05/25-23:08:24.638383 7fe4cb7fe6c0 Recovering log #310
|
||||||
2026/02/25-15:53:13.985670 7f821ffff6c0 Delete type=3 #220
|
2026/05/25-23:08:24.648627 7fe4cb7fe6c0 Delete type=3 #308
|
||||||
2026/02/25-15:53:13.985727 7f821ffff6c0 Delete type=0 #222
|
2026/05/25-23:08:24.648688 7fe4cb7fe6c0 Delete type=0 #310
|
||||||
2026/02/25-15:53:35.850326 7f821d8d46c0 Level-0 table #227: started
|
2026/05/25-23:08:42.324943 7fe4c9ffb6c0 Level-0 table #315: started
|
||||||
2026/02/25-15:53:35.850379 7f821d8d46c0 Level-0 table #227: 0 bytes OK
|
2026/05/25-23:08:42.324976 7fe4c9ffb6c0 Level-0 table #315: 0 bytes OK
|
||||||
2026/02/25-15:53:35.856311 7f821d8d46c0 Delete type=0 #225
|
2026/05/25-23:08:42.331359 7fe4c9ffb6c0 Delete type=0 #313
|
||||||
2026/02/25-15:53:35.863092 7f821d8d46c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.359806 7fe4c9ffb6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
2026/02/25-15:53:35.863120 7f821d8d46c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.380057 7fe4c9ffb6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2026/02/25-15:50:34.651524 7f821e7fc6c0 Recovering log #218
|
2026/05/25-23:06:37.927773 7fe4cb7fe6c0 Recovering log #306
|
||||||
2026/02/25-15:50:34.661646 7f821e7fc6c0 Delete type=3 #216
|
2026/05/25-23:06:37.937509 7fe4cb7fe6c0 Delete type=3 #304
|
||||||
2026/02/25-15:50:34.661750 7f821e7fc6c0 Delete type=0 #218
|
2026/05/25-23:06:37.937560 7fe4cb7fe6c0 Delete type=0 #306
|
||||||
2026/02/25-15:50:42.142608 7f821d8d46c0 Level-0 table #223: started
|
2026/05/25-23:07:52.707381 7fe4c9ffb6c0 Level-0 table #311: started
|
||||||
2026/02/25-15:50:42.142633 7f821d8d46c0 Level-0 table #223: 0 bytes OK
|
2026/05/25-23:07:52.707409 7fe4c9ffb6c0 Level-0 table #311: 0 bytes OK
|
||||||
2026/02/25-15:50:42.148721 7f821d8d46c0 Delete type=0 #221
|
2026/05/25-23:07:52.713201 7fe4c9ffb6c0 Delete type=0 #309
|
||||||
2026/02/25-15:50:42.168777 7f821d8d46c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.733614 7fe4c9ffb6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
2026/02/25-15:50:42.168835 7f821d8d46c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.733638 7fe4c9ffb6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000287
|
MANIFEST-000377
|
||||||
|
|||||||
+7
-7
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:53:13.876847 7f821e7fc6c0 Recovering log #285
|
2026/05/25-23:08:24.625469 7fe4cbfff6c0 Recovering log #375
|
||||||
2026/02/25-15:53:13.930449 7f821e7fc6c0 Delete type=3 #283
|
2026/05/25-23:08:24.635881 7fe4cbfff6c0 Delete type=3 #373
|
||||||
2026/02/25-15:53:13.930523 7f821e7fc6c0 Delete type=0 #285
|
2026/05/25-23:08:24.635933 7fe4cbfff6c0 Delete type=0 #375
|
||||||
2026/02/25-15:53:35.829708 7f821d8d46c0 Level-0 table #290: started
|
2026/05/25-23:08:42.317961 7fe4c9ffb6c0 Level-0 table #380: started
|
||||||
2026/02/25-15:53:35.829729 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
2026/05/25-23:08:42.317972 7fe4c9ffb6c0 Level-0 table #380: 0 bytes OK
|
||||||
2026/02/25-15:53:35.836306 7f821d8d46c0 Delete type=0 #288
|
2026/05/25-23:08:42.324427 7fe4c9ffb6c0 Delete type=0 #378
|
||||||
2026/02/25-15:53:35.836570 7f821d8d46c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.324891 7fe4c9ffb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:50:34.639642 7f821effd6c0 Recovering log #281
|
2026/05/25-23:06:37.915238 7fe4ca7fc6c0 Recovering log #371
|
||||||
2026/02/25-15:50:34.649510 7f821effd6c0 Delete type=3 #279
|
2026/05/25-23:06:37.925308 7fe4ca7fc6c0 Delete type=3 #369
|
||||||
2026/02/25-15:50:34.649589 7f821effd6c0 Delete type=0 #281
|
2026/05/25-23:06:37.925365 7fe4ca7fc6c0 Delete type=0 #371
|
||||||
2026/02/25-15:50:42.134887 7f821d8d46c0 Level-0 table #286: started
|
2026/05/25-23:07:52.700870 7fe4c9ffb6c0 Level-0 table #376: started
|
||||||
2026/02/25-15:50:42.134921 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
2026/05/25-23:07:52.701331 7fe4c9ffb6c0 Level-0 table #376: 0 bytes OK
|
||||||
2026/02/25-15:50:42.142305 7f821d8d46c0 Delete type=0 #284
|
2026/05/25-23:07:52.707294 7fe4c9ffb6c0 Delete type=0 #374
|
||||||
2026/02/25-15:50:42.142488 7f821d8d46c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.733595 7fe4c9ffb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000173
|
MANIFEST-000264
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2026/02/25-15:53:13.816260 7f821ffff6c0 Recovering log #171
|
2026/05/25-23:08:24.610750 7fe4ca7fc6c0 Recovering log #262
|
||||||
2026/02/25-15:53:13.873719 7f821ffff6c0 Delete type=3 #169
|
2026/05/25-23:08:24.621300 7fe4ca7fc6c0 Delete type=3 #260
|
||||||
2026/02/25-15:53:13.873802 7f821ffff6c0 Delete type=0 #171
|
2026/05/25-23:08:24.621336 7fe4ca7fc6c0 Delete type=0 #262
|
||||||
2026/02/25-15:53:35.810175 7f821d8d46c0 Level-0 table #176: started
|
2026/05/25-23:08:42.311679 7fe4c9ffb6c0 Level-0 table #267: started
|
||||||
2026/02/25-15:53:35.810225 7f821d8d46c0 Level-0 table #176: 0 bytes OK
|
2026/05/25-23:08:42.311691 7fe4c9ffb6c0 Level-0 table #267: 0 bytes OK
|
||||||
2026/02/25-15:53:35.817237 7f821d8d46c0 Delete type=0 #174
|
2026/05/25-23:08:42.317830 7fe4c9ffb6c0 Delete type=0 #265
|
||||||
2026/02/25-15:53:35.836504 7f821d8d46c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.324483 7fe4c9ffb6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||||
2026/02/25-15:53:35.836580 7f821d8d46c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.324930 7fe4c9ffb6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/02/25-15:50:34.626081 7f821e7fc6c0 Recovering log #167
|
2026/05/25-23:06:37.900889 7fe4caffd6c0 Recovering log #258
|
||||||
2026/02/25-15:50:34.636822 7f821e7fc6c0 Delete type=3 #165
|
2026/05/25-23:06:37.911257 7fe4caffd6c0 Delete type=3 #256
|
||||||
2026/02/25-15:50:34.636891 7f821e7fc6c0 Delete type=0 #167
|
2026/05/25-23:06:37.911321 7fe4caffd6c0 Delete type=0 #258
|
||||||
2026/02/25-15:50:42.162300 7f821d8d46c0 Level-0 table #172: started
|
2026/05/25-23:07:52.688262 7fe4c9ffb6c0 Level-0 table #263: started
|
||||||
2026/02/25-15:50:42.162331 7f821d8d46c0 Level-0 table #172: 0 bytes OK
|
2026/05/25-23:07:52.688293 7fe4c9ffb6c0 Level-0 table #263: 0 bytes OK
|
||||||
2026/02/25-15:50:42.168591 7f821d8d46c0 Delete type=0 #170
|
2026/05/25-23:07:52.694093 7fe4c9ffb6c0 Delete type=0 #261
|
||||||
2026/02/25-15:50:42.168824 7f821d8d46c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.700777 7fe4c9ffb6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||||
2026/02/25-15:50:42.168857 7f821d8d46c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.700805 7fe4c9ffb6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000287
|
MANIFEST-000375
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:53:13.612255 7f821ffff6c0 Recovering log #285
|
2026/05/25-23:08:24.571661 7fe4cb7fe6c0 Recovering log #373
|
||||||
2026/02/25-15:53:13.689314 7f821ffff6c0 Delete type=3 #283
|
2026/05/25-23:08:24.583242 7fe4cb7fe6c0 Delete type=3 #371
|
||||||
2026/02/25-15:53:13.689394 7f821ffff6c0 Delete type=0 #285
|
2026/05/25-23:08:24.583309 7fe4cb7fe6c0 Delete type=0 #373
|
||||||
2026/02/25-15:53:35.836645 7f821d8d46c0 Level-0 table #290: started
|
2026/05/25-23:08:42.299898 7fe4c9ffb6c0 Level-0 table #378: started
|
||||||
2026/02/25-15:53:35.836668 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
2026/05/25-23:08:42.299954 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
|
||||||
2026/02/25-15:53:35.843158 7f821d8d46c0 Delete type=0 #288
|
2026/05/25-23:08:42.305788 7fe4c9ffb6c0 Delete type=0 #376
|
||||||
2026/02/25-15:53:35.863066 7f821d8d46c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.324469 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:50:34.587424 7f821e7fc6c0 Recovering log #281
|
2026/05/25-23:06:37.865486 7fe4cbfff6c0 Recovering log #369
|
||||||
2026/02/25-15:50:34.597587 7f821e7fc6c0 Delete type=3 #279
|
2026/05/25-23:06:37.874724 7fe4cbfff6c0 Delete type=3 #367
|
||||||
2026/02/25-15:50:34.597685 7f821e7fc6c0 Delete type=0 #281
|
2026/05/25-23:06:37.874744 7fe4cbfff6c0 Delete type=0 #369
|
||||||
2026/02/25-15:50:42.121525 7f821d8d46c0 Level-0 table #286: started
|
2026/05/25-23:07:52.682178 7fe4c9ffb6c0 Level-0 table #374: started
|
||||||
2026/02/25-15:50:42.121550 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
2026/05/25-23:07:52.682203 7fe4c9ffb6c0 Level-0 table #374: 0 bytes OK
|
||||||
2026/02/25-15:50:42.128357 7f821d8d46c0 Delete type=0 #284
|
2026/05/25-23:07:52.688174 7fe4c9ffb6c0 Delete type=0 #372
|
||||||
2026/02/25-15:50:42.142466 7f821d8d46c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.700766 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000002
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
2026/05/06-14:41:23.043596 7f0aceffd6c0 Delete type=3 #1
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000287
|
MANIFEST-000379
|
||||||
|
|||||||
+7
-7
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:53:13.754329 7f821e7fc6c0 Recovering log #285
|
2026/05/25-23:08:24.598700 7fe4caffd6c0 Recovering log #377
|
||||||
2026/02/25-15:53:13.814025 7f821e7fc6c0 Delete type=3 #283
|
2026/05/25-23:08:24.608566 7fe4caffd6c0 Delete type=3 #375
|
||||||
2026/02/25-15:53:13.814092 7f821e7fc6c0 Delete type=0 #285
|
2026/05/25-23:08:24.608604 7fe4caffd6c0 Delete type=0 #377
|
||||||
2026/02/25-15:53:35.817353 7f821d8d46c0 Level-0 table #290: started
|
2026/05/25-23:08:42.331497 7fe4c9ffb6c0 Level-0 table #382: started
|
||||||
2026/02/25-15:53:35.817380 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
2026/05/25-23:08:42.331525 7fe4c9ffb6c0 Level-0 table #382: 0 bytes OK
|
||||||
2026/02/25-15:53:35.823347 7f821d8d46c0 Delete type=0 #288
|
2026/05/25-23:08:42.338312 7fe4c9ffb6c0 Delete type=0 #380
|
||||||
2026/02/25-15:53:35.836533 7f821d8d46c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
2026/05/25-23:08:42.359828 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/02/25-15:50:34.614119 7f821ffff6c0 Recovering log #281
|
2026/05/25-23:06:37.888245 7fe4cb7fe6c0 Recovering log #373
|
||||||
2026/02/25-15:50:34.623965 7f821ffff6c0 Delete type=3 #279
|
2026/05/25-23:06:37.898117 7fe4cb7fe6c0 Delete type=3 #371
|
||||||
2026/02/25-15:50:34.624023 7f821ffff6c0 Delete type=0 #281
|
2026/05/25-23:06:37.898159 7fe4cb7fe6c0 Delete type=0 #373
|
||||||
2026/02/25-15:50:42.128491 7f821d8d46c0 Level-0 table #286: started
|
2026/05/25-23:07:52.675131 7fe4c9ffb6c0 Level-0 table #378: started
|
||||||
2026/02/25-15:50:42.128510 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
2026/05/25-23:07:52.675198 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
|
||||||
2026/02/25-15:50:42.134699 7f821d8d46c0 Delete type=0 #284
|
2026/05/25-23:07:52.682088 7fe4c9ffb6c0 Delete type=0 #376
|
||||||
2026/02/25-15:50:42.142479 7f821d8d46c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
2026/05/25-23:07:52.700749 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000002
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
2026/05/06-14:41:23.014318 7f0acffff6c0 Delete type=3 #1
|
||||||
Binary file not shown.
+1
-2
@@ -73,8 +73,7 @@ button,
|
|||||||
background: rgba(0, 0, 0, 0.75);
|
background: rgba(0, 0, 0, 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content,
|
.fvtt-ecryme .window-content {
|
||||||
.application.sheet .window-content {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
overflow: hidden auto;
|
overflow: hidden auto;
|
||||||
|
|||||||
+21
-26
@@ -1,30 +1,35 @@
|
|||||||
// ============================================================
|
// ============================================================
|
||||||
// Sheet styles (actor + item, AppV1 + AppV2)
|
// Sheet styles (actor + item, AppV1 + AppV2)
|
||||||
|
// Scoped to .fvtt-ecryme to avoid overriding core Foundry UI
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// Sheet header background
|
// Sheet window-content + header background
|
||||||
.window-app.sheet .window-content .sheet-header,
|
.fvtt-ecryme .window-content,
|
||||||
.application.sheet .window-content .sheet-header {
|
.fvtt-ecryme .window-content .sheet-body {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
background: @background-image;
|
||||||
|
color: @color-text-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fvtt-ecryme .window-content .sheet-header {
|
||||||
color: @color-text-dark;
|
color: @color-text-dark;
|
||||||
background: @background-image;
|
background: @background-image;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Input / select base (light background)
|
// Inputs & selects inside Ecryme sheets
|
||||||
input[type="text"],
|
.fvtt-ecryme .window-content {
|
||||||
input[type="number"],
|
input[type="text"],
|
||||||
select[type="text"] {
|
input[type="number"],
|
||||||
|
select[type="text"] {
|
||||||
background: @color-input-bg;
|
background: @color-input-bg;
|
||||||
color: @color-input-text;
|
color: @color-input-text;
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
background: @color-input-bg;
|
background: @color-input-bg;
|
||||||
color: @color-input-text;
|
color: @color-input-text;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sheet content inputs & selects — dark text
|
|
||||||
.window-app.sheet .window-content,
|
|
||||||
.application.sheet .window-content {
|
|
||||||
.sheet-header,
|
.sheet-header,
|
||||||
.sheet-body {
|
.sheet-body {
|
||||||
select[type="text"],
|
select[type="text"],
|
||||||
@@ -53,16 +58,6 @@ select {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sheet body + window-content background
|
|
||||||
.window-app .window-content,
|
|
||||||
.window-app.sheet .window-content .sheet-body,
|
|
||||||
.application .window-content,
|
|
||||||
.application.sheet .window-content .sheet-body {
|
|
||||||
font-size: 0.8rem;
|
|
||||||
background: @background-image;
|
|
||||||
color: @color-text-dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
section.sheet-body {
|
section.sheet-body {
|
||||||
padding: 0.25rem 0.5rem;
|
padding: 0.25rem 0.5rem;
|
||||||
|
|
||||||
@@ -73,7 +68,7 @@ section.sheet-body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sheet {
|
.fvtt-ecryme {
|
||||||
header.sheet-header {
|
header.sheet-header {
|
||||||
.profile-img {
|
.profile-img {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
@@ -135,8 +130,8 @@ nav.sheet-tabs {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tooltip
|
// Tooltip (scoped to Ecryme sheets)
|
||||||
.window-app.sheet .window-content {
|
.fvtt-ecryme .window-content {
|
||||||
.tooltip:hover .tooltiptext {
|
.tooltip:hover .tooltiptext {
|
||||||
top: 2rem;
|
top: 2rem;
|
||||||
left: 2rem;
|
left: 2rem;
|
||||||
|
|||||||
+22
-2
@@ -100,8 +100,22 @@
|
|||||||
"license": "LICENSE.txt",
|
"license": "LICENSE.txt",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-ecryme/raw/branch/master/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-ecryme/raw/branch/master/system.json",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "11",
|
"minimum": "13",
|
||||||
"verified": "13"
|
"verified": "14"
|
||||||
|
},
|
||||||
|
"documentTypes": {
|
||||||
|
"Actor": {
|
||||||
|
"pc": {"htmlFields": ["description", "gmnotes"]},
|
||||||
|
"npc": {"htmlFields": ["description", "gmnotes"]},
|
||||||
|
"annency": {"htmlFields": ["description", "enhancements"]}
|
||||||
|
},
|
||||||
|
"Item": {
|
||||||
|
"equipment": {"htmlFields": ["description"]},
|
||||||
|
"trait": {"htmlFields": ["description"]},
|
||||||
|
"weapon": {"htmlFields": ["description"]},
|
||||||
|
"specialization": {"htmlFields": ["description"]},
|
||||||
|
"maneuver": {"htmlFields": ["description"]}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"id": "fvtt-ecryme",
|
"id": "fvtt-ecryme",
|
||||||
"primaryTokenAttribute": "secondary.health",
|
"primaryTokenAttribute": "secondary.health",
|
||||||
@@ -116,7 +130,13 @@
|
|||||||
"id": "babele",
|
"id": "babele",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"compatibility": {}
|
"compatibility": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "lib-wrapper",
|
||||||
|
"type": "module",
|
||||||
|
"compatibility": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"title": "Ecryme, le Jeu de Rôles",
|
"title": "Ecryme, le Jeu de Rôles",
|
||||||
|
|||||||
@@ -0,0 +1,331 @@
|
|||||||
|
{
|
||||||
|
"_comment": "DEPRECATED - This template.json is kept for reference only. The system now uses DataModels (see modules/models/). Do not edit this file.",
|
||||||
|
"Actor": {
|
||||||
|
"types": [
|
||||||
|
"pc","annency", "npc"
|
||||||
|
],
|
||||||
|
"templates": {
|
||||||
|
"biodata": {
|
||||||
|
"biodata": {
|
||||||
|
"age": "",
|
||||||
|
"size": "",
|
||||||
|
"lieunaissance": "",
|
||||||
|
"nationalite": "",
|
||||||
|
"profession": "",
|
||||||
|
"residence": "",
|
||||||
|
"milieusocial": "",
|
||||||
|
"poids": "",
|
||||||
|
"cheveux": "",
|
||||||
|
"sexe": "",
|
||||||
|
"yeux": "",
|
||||||
|
"enfance": "",
|
||||||
|
"description": "",
|
||||||
|
"gmnotes": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"core": {
|
||||||
|
"subactors": [],
|
||||||
|
"equipmentfree": "",
|
||||||
|
"skills": {
|
||||||
|
"physical": {
|
||||||
|
"name": "ECRY.ui.physical",
|
||||||
|
"pnjvalue": 0,
|
||||||
|
"skilllist": {
|
||||||
|
"athletics": {
|
||||||
|
"key": "athletics",
|
||||||
|
"name": "ECRY.ui.athletics",
|
||||||
|
"max": 0,
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"driving": {
|
||||||
|
"key": "driving",
|
||||||
|
"name": "ECRY.ui.driving",
|
||||||
|
"max": 0,
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"fencing": {
|
||||||
|
"key": "fencing",
|
||||||
|
"name": "ECRY.ui.fencing",
|
||||||
|
"max": 0,
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"brawling": {
|
||||||
|
"key": "brawling",
|
||||||
|
"name": "ECRY.ui.brawling",
|
||||||
|
"max": 0,
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"shooting": {
|
||||||
|
"key": "shooting",
|
||||||
|
"name": "ECRY.ui.shooting",
|
||||||
|
"max": 0,
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mental": {
|
||||||
|
"name": "ECRY.ui.mental",
|
||||||
|
"pnjvalue": 0,
|
||||||
|
"skilllist": {
|
||||||
|
"anthropomecanology": {
|
||||||
|
"key": "anthropomecanology",
|
||||||
|
"name": "ECRY.ui.anthropomecanology",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"ecrymology": {
|
||||||
|
"key": "ecrymology",
|
||||||
|
"name": "ECRY.ui.ecrymology",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"traumatology": {
|
||||||
|
"key": "traumatology",
|
||||||
|
"name": "ECRY.ui.traumatology",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"traversology": {
|
||||||
|
"key": "traversology",
|
||||||
|
"name": "ECRY.ui.traversology",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"urbatechnology": {
|
||||||
|
"key": "urbatechnology",
|
||||||
|
"name": "ECRY.ui.urbatechnology",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"social": {
|
||||||
|
"name": "ECRY.ui.social",
|
||||||
|
"pnjvalue": 0,
|
||||||
|
"skilllist": {
|
||||||
|
"quibbling": {
|
||||||
|
"key": "quibbling",
|
||||||
|
"name": "ECRY.ui.quibbling",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"creativity": {
|
||||||
|
"key": "creativity",
|
||||||
|
"name": "ECRY.ui.creativity",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"loquacity": {
|
||||||
|
"key": "loquacity",
|
||||||
|
"name": "ECRY.ui.loquacity",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"guile": {
|
||||||
|
"key": "guile",
|
||||||
|
"name": "ECRY.ui.guile",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"performance": {
|
||||||
|
"key": "performance",
|
||||||
|
"name": "ECRY.ui.performance",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"impacts": {
|
||||||
|
"physical": {
|
||||||
|
"superficial": 0,
|
||||||
|
"light": 0,
|
||||||
|
"serious": 0,
|
||||||
|
"major": 0
|
||||||
|
},
|
||||||
|
"mental": {
|
||||||
|
"superficial": 0,
|
||||||
|
"light": 0,
|
||||||
|
"serious": 0,
|
||||||
|
"major": 0
|
||||||
|
},
|
||||||
|
"social": {
|
||||||
|
"superficial": 0,
|
||||||
|
"light": 0,
|
||||||
|
"serious": 0,
|
||||||
|
"major": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cephaly": {
|
||||||
|
"name": "ECRY.ui.cephaly",
|
||||||
|
"skilllist": {
|
||||||
|
"elegy": {
|
||||||
|
"name": "ECRY.ui.elegy",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"entelechy": {
|
||||||
|
"name": "ECRY.ui.entelechy",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"mekany": {
|
||||||
|
"name": "ECRY.ui.mekany",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"psyche": {
|
||||||
|
"name": "ECRY.ui.psyche",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
"scoria": {
|
||||||
|
"name": "ECRY.ui.scoria",
|
||||||
|
"value": 0,
|
||||||
|
"max": 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internals": {
|
||||||
|
"confrontbonus": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"npccore": {
|
||||||
|
"npctype": "",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"annency": {
|
||||||
|
"base": {
|
||||||
|
"iscollective": false,
|
||||||
|
"ismultiple": false,
|
||||||
|
"characters": [],
|
||||||
|
"location": {"1": "", "2": "", "3":"", "4":"", "5":"" },
|
||||||
|
"description": "",
|
||||||
|
"enhancements": ""
|
||||||
|
},
|
||||||
|
"boheme": {
|
||||||
|
"name": "",
|
||||||
|
"ideals": "",
|
||||||
|
"politic": "",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"annency": {
|
||||||
|
"templates": [
|
||||||
|
"annency"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"npc": {
|
||||||
|
"templates": [
|
||||||
|
"biodata",
|
||||||
|
"core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pc": {
|
||||||
|
"templates": [
|
||||||
|
"biodata",
|
||||||
|
"core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Item": {
|
||||||
|
"types": [
|
||||||
|
"equipment",
|
||||||
|
"trait",
|
||||||
|
"weapon",
|
||||||
|
"specialization",
|
||||||
|
"maneuver"
|
||||||
|
],
|
||||||
|
"templates": {
|
||||||
|
"common": {
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"equipement": {
|
||||||
|
"weight": 0,
|
||||||
|
"cost": 0,
|
||||||
|
"costunit": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"maneuver": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"confrontation": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"attackerId": "",
|
||||||
|
"defenserId": "",
|
||||||
|
"rolllist": [],
|
||||||
|
"bonusexecution": 0,
|
||||||
|
"bonuspreservation": 0
|
||||||
|
},
|
||||||
|
"equipment": {
|
||||||
|
"templates": [
|
||||||
|
"common",
|
||||||
|
"equipement"
|
||||||
|
],
|
||||||
|
"quantity": 1,
|
||||||
|
"weight": 0
|
||||||
|
},
|
||||||
|
"trait": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"traitype": "normal",
|
||||||
|
"level": 1
|
||||||
|
},
|
||||||
|
"weapon": {
|
||||||
|
"templates": [
|
||||||
|
"common",
|
||||||
|
"equipement"
|
||||||
|
],
|
||||||
|
"weapontype": "melee",
|
||||||
|
"effect": 0
|
||||||
|
},
|
||||||
|
"specialization": {
|
||||||
|
"bonus": 2,
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"skillkey": ""
|
||||||
|
},
|
||||||
|
"scar": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"skillcategory": [
|
||||||
|
"physical",
|
||||||
|
"mental",
|
||||||
|
"social",
|
||||||
|
"cephalie"
|
||||||
|
],
|
||||||
|
"scarLevel": 1
|
||||||
|
},
|
||||||
|
"annency": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"collective": false,
|
||||||
|
"multiple": false,
|
||||||
|
"improvements": ""
|
||||||
|
},
|
||||||
|
"boheme": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"ideals": "",
|
||||||
|
"political": ""
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
],
|
||||||
|
"attitude": "neutral",
|
||||||
|
"organization": "",
|
||||||
|
"location": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,24 +17,24 @@
|
|||||||
{{#each pcs as |pc key|}}
|
{{#each pcs as |pc key|}}
|
||||||
<li class="item flexrow" data-actor-id="{{pc.id}}">
|
<li class="item flexrow" data-actor-id="{{pc.id}}">
|
||||||
<div class="item-field item-name item-name-label-long">
|
<div class="item-field item-name item-name-label-long">
|
||||||
<a class="actor-open character-summary-rollable">{{pc.name}}</a>
|
<a data-action="actorOpen" class="character-summary-rollable">{{pc.name}}</a>
|
||||||
</div>
|
</div>
|
||||||
{{#each pc.system.attributs as |attr key|}}
|
{{#each pc.system.attributs as |attr key|}}
|
||||||
<div class="item-field flex2 item-name-label-short">
|
<div class="item-field flex2 item-name-label-short">
|
||||||
<a class="summary-roll character-summary-rollable" data-type="attribut" data-key="{{key}}">{{attr.value}}</a>
|
<a data-action="summaryRoll" class="character-summary-rollable" data-type="attribut" data-key="{{key}}">{{attr.value}}</a>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
<a data-action="summaryRoll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
<a data-action="summaryRoll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
<a data-action="summaryRoll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
<a data-action="summaryRoll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@@ -55,28 +55,28 @@
|
|||||||
{{#each npcs as |pc key|}}
|
{{#each npcs as |pc key|}}
|
||||||
<li class="item flexrow" data-actor-id="{{pc.id}}">
|
<li class="item flexrow" data-actor-id="{{pc.id}}">
|
||||||
<div class="item-field item-name item-name-label-long">
|
<div class="item-field item-name item-name-label-long">
|
||||||
<a class="actor-open character-summary-rollable">{{pc.name}}</a>
|
<a data-action="actorOpen" class="character-summary-rollable">{{pc.name}}</a>
|
||||||
</div>
|
</div>
|
||||||
{{#each pc.system.attributs as |attr key|}}
|
{{#each pc.system.attributs as |attr key|}}
|
||||||
<div class="item-field flex2 item-name-label-short">
|
<div class="item-field flex2 item-name-label-short">
|
||||||
<a class="summary-roll character-summary-rollable" data-type="attribute" data-key="{{key}}">{{attr.value}}</a>
|
<a data-action="summaryRoll" class="character-summary-rollable" data-type="attribute" data-key="{{key}}">{{attr.value}}</a>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
<a data-action="summaryRoll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
<a data-action="summaryRoll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
<a data-action="summaryRoll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex item-name-label-short">
|
<div class="item-field flex item-name-label-short">
|
||||||
<a class="summary-roll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
<a data-action="summaryRoll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-field flex1 right">
|
<div class="item-field flex1 right">
|
||||||
<a class="item-control actor-delete" title="{{localize "BOL.ui.delete"}}"><i class="fas fa-trash"></i></a>
|
<a data-action="actorDelete" class="item-control" title="{{localize "BOL.ui.delete"}}"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|||||||
+11
-22
@@ -1,31 +1,19 @@
|
|||||||
<div class="chat-message-header">
|
<div class="chat-message-header">
|
||||||
<img class="actor-icon" src="systems/fvtt-ecryme/images/icons/logo-ecryme.webp" alt="Écryme" />
|
<img
|
||||||
|
class="actor-icon"
|
||||||
|
src="systems/fvtt-ecryme/images/icons/logo-ecryme.webp"
|
||||||
|
alt="Écryme"
|
||||||
|
/>
|
||||||
<h4 class="chat-actor-name">Écryme RPG</h4>
|
<h4 class="chat-actor-name">Écryme RPG</h4>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ecryme-chat-body">
|
<div class="ecryme-chat-body">
|
||||||
|
|
||||||
<h3 class="welcome-message-h3">⚙ Bonjour à tous !</h3>
|
<h3 class="welcome-message-h3">⚙ Bonjour à tous !</h3>
|
||||||
|
|
||||||
<div class="welcome-section">
|
|
||||||
👋 Juste un petit message pour vous informer que :
|
|
||||||
<br />
|
|
||||||
<strong>⚠️ Le nouveau financement participatif pour la prochaine extension
|
|
||||||
d'Écryme, LES SECRETS DE L'ÉCRYME ouvre le 21 octobre !</strong>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="welcome-section">
|
|
||||||
⚠️ Suivez la page de pré-lancement ici pour être sûr de ne pas manquer le
|
|
||||||
lancement :<br />
|
|
||||||
<a href="https://shorturl.at/qDjg7">https://shorturl.at/qDjg7</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<div class="welcome-section">
|
<div class="welcome-section">
|
||||||
Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient
|
Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient
|
||||||
participer plus activement à la communauté des jeux d'Open Sesame Games, avec
|
participer plus activement à la communauté des jeux d'Open Sesame Games,
|
||||||
un espace dédié aux écrymiens !<br />
|
avec un espace dédié aux écrymiens !<br />
|
||||||
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
|
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
|
||||||
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
|
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
|
||||||
directement.<br />
|
directement.<br />
|
||||||
@@ -35,13 +23,14 @@
|
|||||||
<div class="welcome-section">
|
<div class="welcome-section">
|
||||||
Ce système vous est proposé par <strong>Open Sesame Games</strong>.<br />
|
Ce système vous est proposé par <strong>Open Sesame Games</strong>.<br />
|
||||||
Vous trouverez de l'aide dans
|
Vous trouverez de l'aide dans
|
||||||
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour Écryme}<br />
|
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour
|
||||||
|
Écryme}<br />
|
||||||
ainsi que sur le Discord de Foundry FR :<br />
|
ainsi que sur le Discord de Foundry FR :<br />
|
||||||
<a href="https://discord.gg/pPSDNJk">Discord Foundry FR</a>
|
<a href="https://discord.gg/pPSDNJk">Discord Foundry FR</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="welcome-footer">
|
<div class="welcome-footer">
|
||||||
⚙ Merci pour votre attention et à très bientôt ! — L'équipe Open Sesame Games
|
⚙ Merci pour votre attention et à très bientôt ! — L'équipe Open Sesame
|
||||||
|
Games
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user