Compare commits

...

20 Commits

Author SHA1 Message Date
bda88c067e Release with specific message 2025-10-17 22:50:39 +02:00
4003e0e42b Release with specific message 2025-10-17 22:50:04 +02:00
a6d811bcda Sync message 2025-10-17 15:32:44 +02:00
94eb637637 Sync message 2025-10-17 15:32:22 +02:00
8c58367cdc Sync message 2025-10-17 15:31:53 +02:00
c439ca978c Update internal system with dynamic message 2025-10-17 15:17:04 +02:00
ffe1144f2a Update internal system with dynamic message 2025-10-17 15:16:00 +02:00
38ef07d17b Update internal system with dynamic message 2025-10-17 15:15:03 +02:00
a8cc2dce4b Update internal system with dynamic message 2025-10-17 15:14:29 +02:00
0fadd0783c Update internal system with dynamic message 2025-10-17 15:12:19 +02:00
a55a038d32 Update internal system with dynamic message 2025-10-17 15:01:42 +02:00
d012f78881 Update internal system with dynamic message 2025-10-17 14:59:37 +02:00
01e13da234 Correction sur application tokens acteurs 2025-10-17 00:33:24 +02:00
bc09b5050d Correction sur application tokens acteurs 2025-10-17 00:32:42 +02:00
d68001b376 Fix token/actor 2025-10-02 22:53:09 +02:00
6b22dade9c Foundry v13 migration 2025-05-01 23:27:51 +02:00
965fc02eb3 Foundry v13 migration 2025-05-01 23:23:29 +02:00
0ef689bf1b Fix specialization again 2025-03-11 23:47:08 +01:00
c6dcc187d8 Fix babele 2025-03-11 22:29:24 +01:00
e2f24405af Fix waring about grid 2025-02-14 13:36:52 +01:00
62 changed files with 3189 additions and 2804 deletions

View File

@@ -6,7 +6,7 @@
import { EcrymeUtility } from "../common/ecryme-utility.js"; import { EcrymeUtility } from "../common/ecryme-utility.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
export class EcrymeActorSheet extends ActorSheet { export class EcrymeActorSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -53,9 +53,9 @@ export class EcrymeActorSheet extends ActorSheet {
cephalySkills: this.actor.getCephalySkills(), cephalySkills: this.actor.getCephalySkills(),
subActors: foundry.utils.duplicate(this.actor.getSubActors()), subActors: foundry.utils.duplicate(this.actor.getSubActors()),
annency: this.actor.getAnnency(), annency: this.actor.getAnnency(),
description: await TextEditor.enrichHTML(this.object.system.biodata.description, { async: true }), description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.biodata.notes, { async: true }), notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.notes, { async: true }),
equipementlibre: await TextEditor.enrichHTML(this.object.system.equipmentfree, { async: true }), equipementlibre: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.equipmentfree, { async: true }),
options: this.options, options: this.options,
owner: this.document.isOwner, owner: this.document.isOwner,
editScore: this.options.editScore, editScore: this.options.editScore,
@@ -63,7 +63,7 @@ export class EcrymeActorSheet extends ActorSheet {
} }
this.formData = formData; this.formData = formData;
console.log("PC : ", formData, this.object); //console.log("PC : ", formData, this.object);
return formData; return formData;
} }

View File

@@ -6,7 +6,7 @@
import { EcrymeUtility } from "../common/ecryme-utility.js"; import { EcrymeUtility } from "../common/ecryme-utility.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
export class EcrymeAnnencySheet extends ActorSheet { export class EcrymeAnnencySheet extends foundry.appv1.sheets.ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {

View File

@@ -36,7 +36,7 @@ export class EcrymeUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async init() { static async init() {
Hooks.on('renderChatLog', (log, html, data) => EcrymeUtility.chatListeners(html)); Hooks.on('renderChatLog', (log, html, data) => EcrymeUtility.chatListeners(html));
Hooks.on("getChatLogEntryContext", (html, options) => EcrymeUtility.chatMenuManager(html, options)); Hooks.on("getChatMessageContextOptions", (html, options) => EcrymeUtility.chatMenuManager(html, options));
this.rollDataStore = {} this.rollDataStore = {}
this.defenderStore = {} this.defenderStore = {}
@@ -155,8 +155,8 @@ export class EcrymeUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static getActorFromRollData(rollData) { static getActorFromRollData(rollData) {
let actor = game.actors.get(rollData.actorId) let actor = game.actors.get(rollData.actorId)
if (rollData.tokenId) { if (rollData.defenderTokenId) {
let token = canvas.tokens.placeables.find(t => t.id == rollData.tokenId) let token = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
if (token) { if (token) {
actor = token.actor actor = token.actor
} }
@@ -273,20 +273,17 @@ export class EcrymeUtility {
let canTranscendRoll = [] let canTranscendRoll = []
for (let i = 1; i <= 10; i++) { for (let i = 1; i <= 10; i++) {
canTranscendRoll[i] = function (li) { canTranscendRoll[i] = function (li) {
let message = game.messages.get(li.attr("data-message-id")) let message = game.messages.get($(li).attr("data-message-id"))
let rollData = message.getFlag("world", "rolldata") let rollData = message.getFlag("world", "rolldata")
//console.log(">>>>>>>>>>>>>>>>>>>>>>>>>> Menu !!!!", rollData) //console.log(">>>>>>>>>>>>>>>>>>>>>>>>>> Menu !!!!", rollData)
if (rollData.skill && rollData.skill.value >= i && !rollData.transcendUsed && rollData.spec) { return (rollData?.skill?.value >= i && !rollData.transcendUsed && rollData.spec)
return true
}
return false
} }
options.push({ options.push({
name: game.i18n.localize("ECRY.chat.spectranscend") + i, name: game.i18n.localize("ECRY.chat.spectranscend") + i,
icon: '<i class="fas fa-plus-square"></i>', icon: '<i class="fas fa-plus-square"></i>',
condition: canTranscendRoll[i], condition: canTranscendRoll[i],
callback: li => { callback: li => {
let message = game.messages.get(li.attr("data-message-id")) let message = game.messages.get($(li).attr("data-message-id"))
let rollData = message.getFlag("world", "rolldata") let rollData = message.getFlag("world", "rolldata")
EcrymeUtility.transcendFromSpec(rollData, i).catch("Error on Transcend") EcrymeUtility.transcendFromSpec(rollData, i).catch("Error on Transcend")
} }
@@ -297,27 +294,35 @@ export class EcrymeUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async chatListeners(html) { static async chatListeners(html) {
html.on("click", '.button-select-confront', event => { $(html).on("click", '.button-select-confront', event => {
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget) let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "ecryme-rolldata") let rollData = message.getFlag("world", "ecryme-rolldata")
ui.notifications.info( game.i18n.localize("ECRY.chat.confrontselect")) ui.notifications.info(game.i18n.localize("ECRY.chat.confrontselect"))
EcrymeUtility.manageConfrontation(rollData) EcrymeUtility.manageConfrontation(rollData)
}) })
html.on("click", '.button-apply-cephaly-difficulty', event => { $(html).on("click", '.button-apply-cephaly-difficulty', event => {
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget) let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "ecryme-rolldata") let rollData = message.getFlag("world", "ecryme-rolldata")
let difficulty = $("#" + rollData.rollId + "-cephaly-difficulty").val() let difficulty = $("#" + rollData.rollId + "-cephaly-difficulty").val()
EcrymeUtility.manageCephalyDifficulty(rollData, difficulty) EcrymeUtility.manageCephalyDifficulty(rollData, difficulty)
}) })
html.on("click", '.button-apply-impact', event => { $(html).on("click", '.button-apply-impact', event => {
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget) let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let actor = game.actors.get($(event.currentTarget).data("actor-id")) let tokenId = $(event.currentTarget).data("token-id")
let actor
if (!tokenId) {
actorId = $(event.currentTarget).data("actor-id")
actor = game.actors.get(actorId)
} else {
let token = canvas.tokens.placeables.find(t => t.id == tokenId)
actor = token?.actor
}
actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1) actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1)
}) })
html.on("click", '.button-apply-bonus', event => { $(html).on("click", '.button-apply-bonus', event => {
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget) let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let actor = game.actors.get($(event.currentTarget).data("actor-id")) let actor = game.actors.get($(event.currentTarget).data("actor-id"))
@@ -339,7 +344,7 @@ export class EcrymeUtility {
'systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs', 'systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs',
'systems/fvtt-ecryme/templates/actors/partial-impacts.hbs', 'systems/fvtt-ecryme/templates/actors/partial-impacts.hbs',
] ]
return loadTemplates(templatePaths); return foundry.applications.handlebars.loadTemplates(templatePaths);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -414,7 +419,7 @@ export class EcrymeUtility {
console.log("SOCKET MESSAGE", msg) console.log("SOCKET MESSAGE", msg)
if (msg.name == "msg_gm_chat_message") { if (msg.name == "msg_gm_chat_message") {
let rollData = msg.data.rollData let rollData = msg.data.rollData
if ( game.user.isGM ) { if (game.user.isGM) {
let chatMsg = await this.createChatMessage(rollData.alias, "blindroll", { let chatMsg = await this.createChatMessage(rollData.alias, "blindroll", {
content: await renderTemplate(msg.data.template, rollData), content: await renderTemplate(msg.data.template, rollData),
whisper: game.user.id whisper: game.user.id
@@ -575,7 +580,7 @@ export class EcrymeUtility {
this.computeResults(rollData) this.computeResults(rollData)
let msg = await this.createChatWithRollMode(rollData.alias, { let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-generic-result.hbs`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-generic-result.hbs`, rollData)
}) })
await msg.setFlag("world", "ecryme-rolldata", rollData) await msg.setFlag("world", "ecryme-rolldata", rollData)
console.log("Rolldata result", rollData) console.log("Rolldata result", rollData)
@@ -718,11 +723,11 @@ export class EcrymeUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async confirmDelete(actorSheet, li) { static async confirmDelete(actorSheet, li) {
let itemId = li.data("item-id"); let itemId = li.data("item-id");
let msgTxt = "<p>Are you sure to remove this Item ?"; let msgTxt = "<p>Etes vous certain de souhaiter envoyer cet item dans les limbes ?";
let buttons = { let buttons = {
delete: { delete: {
icon: '<i class="fas fa-check"></i>', icon: '<i class="fas fa-check"></i>',
label: "Yes, remove it", label: "Oui, retirez-le",
callback: () => { callback: () => {
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]); actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
li.slideUp(200, () => actorSheet.render(false)); li.slideUp(200, () => actorSheet.render(false));
@@ -730,7 +735,7 @@ export class EcrymeUtility {
}, },
cancel: { cancel: {
icon: '<i class="fas fa-times"></i>', icon: '<i class="fas fa-times"></i>',
label: "Cancel" label: "Annuler"
} }
} }
msgTxt += "</p>"; msgTxt += "</p>";

View File

@@ -12,7 +12,7 @@ export class EcrymeConfrontDialog extends Dialog {
width: 620, height: 'fit-content', 'z-index': 99999 width: 620, height: 'fit-content', 'z-index': 99999
}); });
let html = await renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs', rollData); let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs', rollData);
return new EcrymeConfrontDialog(actor, rollData, html, options); return new EcrymeConfrontDialog(actor, rollData, html, options);
} }

View File

@@ -1,13 +1,16 @@
import { EcrymeUtility } from "../common/ecryme-utility.js"; import { EcrymeUtility } from "../common/ecryme-utility.js";
import {EcrymeConfrontDialog } from "./ecryme-confront-dialog.js"; import { EcrymeConfrontDialog } from "./ecryme-confront-dialog.js";
export class EcrymeConfrontStartDialog extends Dialog { export class EcrymeConfrontStartDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async create(actor, rollData) { static async create(actor, rollData) {
if (!actor) throw new Error("Ecryme | No actor provided for confront dialog");
if (!rollData) throw new Error("Ecryme | No roll data provided for confront dialog");
if (actor?.token) rollData.tokenId = actor.token.id;
let options = { classes: ["fvtt-ecryme ecryme-confront-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 } let options = { classes: ["fvtt-ecryme ecryme-confront-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-start-dialog.hbs', rollData); let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-start-dialog.hbs', rollData);
return new EcrymeConfrontStartDialog(actor, rollData, html, options); return new EcrymeConfrontStartDialog(actor, rollData, html, options);
} }
@@ -43,12 +46,12 @@ export class EcrymeConfrontStartDialog extends Dialog {
super(conf, options); super(conf, options);
this.actor = actor; this.actor = actor?.token?.actor || actor;
this.rollData = rollData; this.rollData = rollData;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollConfront( diceFormula ) { async rollConfront(diceFormula) {
// Do the initial roll // Do the initial roll
let myRoll = await new Roll(diceFormula).roll() let myRoll = await new Roll(diceFormula).roll()
await EcrymeUtility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) await EcrymeUtility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
@@ -57,7 +60,7 @@ export class EcrymeConfrontStartDialog extends Dialog {
rollData.roll = foundry.utils.duplicate(myRoll) rollData.roll = foundry.utils.duplicate(myRoll)
rollData.availableDices = [] rollData.availableDices = []
for (let result of myRoll.terms[0].results) { for (let result of myRoll.terms[0].results) {
if ( !result.discarded) { if (!result.discarded) {
let resultDup = foundry.utils.duplicate(result) let resultDup = foundry.utils.duplicate(result)
resultDup.location = "mainpool" resultDup.location = "mainpool"
rollData.availableDices.push(resultDup) rollData.availableDices.push(resultDup)

View File

@@ -6,7 +6,7 @@ export class EcrymeRollDialog extends Dialog {
static async create(actor, rollData) { static async create(actor, rollData) {
let options = { classes: ["ecryme-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 } let options = { classes: ["ecryme-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-ecryme/templates/dialogs/roll-dialog-generic.hbs', rollData); let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-ecryme/templates/dialogs/roll-dialog-generic.hbs', rollData);
return new EcrymeRollDialog(actor, rollData, html, options); return new EcrymeRollDialog(actor, rollData, html, options);
} }
@@ -52,7 +52,6 @@ export class EcrymeRollDialog extends Dialog {
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
var dialog = this;
function onLoad() { function onLoad() {
} }
$(function () { onLoad(); }); $(function () { onLoad(); });

View File

@@ -5,6 +5,7 @@
*/ */
/* -------------------------------------------- */ /* -------------------------------------------- */
const ECRYME_WELCOME_MESSAGE_URL = "https://www.uberwald.me/gitea/public/fvtt-ecryme/raw/branch/master/welcome-message-ecryme.html"
/* -------------------------------------------- */ /* -------------------------------------------- */
// Import Modules // Import Modules
@@ -57,28 +58,40 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */ /* -------------------------------------------- */
// Register sheet application classes // Register sheet application classes
Actors.unregisterSheet("core", ActorSheet); foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true }); foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["npc"], makeDefault: true }); foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["npc"], makeDefault: true });
Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false }); foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false });
Items.unregisterSheet("core", ItemSheet); foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
EcrymeUtility.init() EcrymeUtility.init()
Babele.get().setSystemTranslationsDir("translated")
}); });
/* -------------------------------------------- */ /* -------------------------------------------- */
function welcomeMessage() { function welcomeMessage() {
if (game.user.isGM) { if (game.user.isGM) {
ChatMessage.create({ // Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
user: game.user.id, fetch(ECRYME_WELCOME_MESSAGE_URL)
whisper: [game.user.id], .then(response => response.text())
content: `<div id="welcome-message-ecryme"><span class="rdd-roll-part"> .then(html => {
<strong>Bienvenu dans Ecryme !</strong>` }); console.log("Fetched welcome message:", html);
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: html
});
})
.catch(error => {
console.error("Error fetching welcome message:", error);
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: "<b>Bienvenue dans Ecryme RPG !</b><br>Visitez le site officiel pour plus d'informations."
});
});
} }
} }
@@ -91,6 +104,7 @@ async function importDefaultScene() {
await game.scenes.documentClass.create(newDocuments); await game.scenes.documentClass.create(newDocuments);
game.scenes.find(i => i.name == "Landing page 1").activate(); game.scenes.find(i => i.name == "Landing page 1").activate();
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -107,10 +121,10 @@ Hooks.once("ready", function () {
}); });
} }
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{ import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter => {
console.log("ClassCounter loaded", moduleCounter) console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount() moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=> }).catch(err =>
console.log("No stats available, giving up.") console.log("No stats available, giving up.")
) )
@@ -119,6 +133,9 @@ Hooks.once("ready", function () {
EcrymeCharacterSummary.ready(); EcrymeCharacterSummary.ready();
importDefaultScene(); importDefaultScene();
// Load translations
Babele.get().setSystemTranslationsDir("translated")
}) })
@@ -135,4 +152,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
} }
return true; return true;
}); });

View File

@@ -4,7 +4,7 @@ import { EcrymeUtility } from "../common/ecryme-utility.js";
* Extend the basic ItemSheet with some very simple modifications * Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet} * @extends {ItemSheet}
*/ */
export class EcrymeItemSheet extends ItemSheet { export class EcrymeItemSheet extends foundry.appv1.sheets.ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -61,8 +61,8 @@ export class EcrymeItemSheet extends ItemSheet {
limited: this.object.limited, limited: this.object.limited,
options: this.options, options: this.options,
owner: this.document.isOwner, owner: this.document.isOwner,
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }), description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }), notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.notes, { async: true }),
isGM: game.user.isGM isGM: game.user.isGM
} }

Binary file not shown.

BIN
packs/equipment/000192.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000163 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/04/27-08:47:55.410828 7fc5c4c006c0 Recovering log #161 2025/10/17-15:30:30.745305 7f7b753f96c0 Recovering log #239
2024/04/27-08:47:55.422094 7fc5c4c006c0 Delete type=3 #159 2025/10/17-15:30:30.799430 7f7b753f96c0 Delete type=3 #237
2024/04/27-08:47:55.422190 7fc5c4c006c0 Delete type=0 #161 2025/10/17-15:30:30.799501 7f7b753f96c0 Delete type=0 #239
2024/04/27-09:26:42.196858 7fc5bfe006c0 Level-0 table #166: started 2025/10/17-15:38:10.264480 7f7b6f3ff6c0 Level-0 table #244: started
2024/04/27-09:26:42.196924 7fc5bfe006c0 Level-0 table #166: 0 bytes OK 2025/10/17-15:38:10.264510 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/04/27-09:26:42.203539 7fc5bfe006c0 Delete type=0 #164 2025/10/17-15:38:10.271838 7f7b6f3ff6c0 Delete type=0 #242
2024/04/27-09:26:42.227249 7fc5bfe006c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.286239 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2024/04/26-19:22:08.707793 7f89060006c0 Recovering log #156 2025/10/17-15:00:21.595853 7f7b75bfa6c0 Recovering log #235
2024/04/26-19:22:08.718085 7f89060006c0 Delete type=3 #154 2025/10/17-15:00:21.649813 7f7b75bfa6c0 Delete type=3 #233
2024/04/26-19:22:08.718160 7f89060006c0 Delete type=0 #156 2025/10/17-15:00:21.649870 7f7b75bfa6c0 Delete type=0 #235
2024/04/26-19:25:18.674002 7f88ffe006c0 Level-0 table #162: started 2025/10/17-15:19:41.013969 7f7b6f3ff6c0 Level-0 table #240: started
2024/04/26-19:25:18.674046 7f88ffe006c0 Level-0 table #162: 0 bytes OK 2025/10/17-15:19:41.014009 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/04/26-19:25:18.715930 7f88ffe006c0 Delete type=0 #160 2025/10/17-15:19:41.021013 7f7b6f3ff6c0 Delete type=0 #238
2024/04/26-19:25:18.747436 7f88ffe006c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.041182 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/help/000129.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000100 MANIFEST-000178

View File

@@ -1,8 +1,8 @@
2024/04/27-08:47:55.474153 7fc5c56006c0 Recovering log #98 2025/10/17-15:30:30.971906 7f7b75bfa6c0 Recovering log #176
2024/04/27-08:47:55.484458 7fc5c56006c0 Delete type=3 #96 2025/10/17-15:30:31.026021 7f7b75bfa6c0 Delete type=3 #174
2024/04/27-08:47:55.484547 7fc5c56006c0 Delete type=0 #98 2025/10/17-15:30:31.026086 7f7b75bfa6c0 Delete type=0 #176
2024/04/27-09:26:42.227493 7fc5bfe006c0 Level-0 table #103: started 2025/10/17-15:38:10.306636 7f7b6f3ff6c0 Level-0 table #181: started
2024/04/27-09:26:42.227557 7fc5bfe006c0 Level-0 table #103: 0 bytes OK 2025/10/17-15:38:10.306674 7f7b6f3ff6c0 Level-0 table #181: 0 bytes OK
2024/04/27-09:26:42.234320 7fc5bfe006c0 Delete type=0 #101 2025/10/17-15:38:10.313150 7f7b6f3ff6c0 Delete type=0 #179
2024/04/27-09:26:42.234536 7fc5bfe006c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.313296 7f7b6f3ff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2024/04/27-09:26:42.234577 7fc5bfe006c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.313313 7f7b6f3ff6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/04/26-19:22:08.762783 7f89074006c0 Recovering log #93 2025/10/17-15:00:21.833480 7f7b74bf86c0 Recovering log #172
2024/04/26-19:22:08.773921 7f89074006c0 Delete type=3 #91 2025/10/17-15:00:21.882268 7f7b74bf86c0 Delete type=3 #170
2024/04/26-19:22:08.774007 7f89074006c0 Delete type=0 #93 2025/10/17-15:00:21.882323 7f7b74bf86c0 Delete type=0 #172
2024/04/26-19:25:18.785678 7f88ffe006c0 Level-0 table #99: started 2025/10/17-15:19:41.054674 7f7b6f3ff6c0 Level-0 table #177: started
2024/04/26-19:25:18.785720 7f88ffe006c0 Level-0 table #99: 0 bytes OK 2025/10/17-15:19:41.054706 7f7b6f3ff6c0 Level-0 table #177: 0 bytes OK
2024/04/26-19:25:18.821605 7f88ffe006c0 Delete type=0 #97 2025/10/17-15:19:41.060762 7f7b6f3ff6c0 Delete type=0 #175
2024/04/26-19:25:18.901806 7f88ffe006c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.066886 7f7b6f3ff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2024/04/26-19:25:18.901870 7f88ffe006c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.066920 7f7b6f3ff6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/help/MANIFEST-000178 Normal file

Binary file not shown.

Binary file not shown.

BIN
packs/maneuvers/000192.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000163 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/04/27-08:47:55.459426 7fc5c4c006c0 Recovering log #161 2025/10/17-15:30:30.916441 7f7b6ffff6c0 Recovering log #239
2024/04/27-08:47:55.470519 7fc5c4c006c0 Delete type=3 #159 2025/10/17-15:30:30.969161 7f7b6ffff6c0 Delete type=3 #237
2024/04/27-08:47:55.470616 7fc5c4c006c0 Delete type=0 #161 2025/10/17-15:30:30.969226 7f7b6ffff6c0 Delete type=0 #239
2024/04/27-09:26:42.211453 7fc5bfe006c0 Level-0 table #166: started 2025/10/17-15:38:10.293308 7f7b6f3ff6c0 Level-0 table #244: started
2024/04/27-09:26:42.211516 7fc5bfe006c0 Level-0 table #166: 0 bytes OK 2025/10/17-15:38:10.293344 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/04/27-09:26:42.218445 7fc5bfe006c0 Delete type=0 #164 2025/10/17-15:38:10.299936 7f7b6f3ff6c0 Delete type=0 #242
2024/04/27-09:26:42.227295 7fc5bfe006c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.313277 7f7b6f3ff6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2024/04/26-19:22:08.749669 7f8906a006c0 Recovering log #156 2025/10/17-15:00:21.772351 7f7b753f96c0 Recovering log #235
2024/04/26-19:22:08.759716 7f8906a006c0 Delete type=3 #154 2025/10/17-15:00:21.831028 7f7b753f96c0 Delete type=3 #233
2024/04/26-19:22:08.759885 7f8906a006c0 Delete type=0 #156 2025/10/17-15:00:21.831106 7f7b753f96c0 Delete type=0 #235
2024/04/26-19:25:18.747562 7f88ffe006c0 Level-0 table #162: started 2025/10/17-15:19:41.021157 7f7b6f3ff6c0 Level-0 table #240: started
2024/04/26-19:25:18.747596 7f88ffe006c0 Level-0 table #162: 0 bytes OK 2025/10/17-15:19:41.021192 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/04/26-19:25:18.785476 7f88ffe006c0 Delete type=0 #160 2025/10/17-15:19:41.028272 7f7b6f3ff6c0 Delete type=0 #238
2024/04/26-19:25:18.901779 7f88ffe006c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.041197 7f7b6f3ff6c0 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.

BIN
packs/scenes/000090.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000047 MANIFEST-000127

View File

@@ -1,8 +1,8 @@
2024/04/27-08:47:55.443420 7fc5c4c006c0 Recovering log #45 2025/10/17-15:30:30.864236 7f7b75bfa6c0 Recovering log #125
2024/04/27-08:47:55.454090 7fc5c4c006c0 Delete type=3 #43 2025/10/17-15:30:30.913603 7f7b75bfa6c0 Delete type=3 #123
2024/04/27-08:47:55.454232 7fc5c4c006c0 Delete type=0 #45 2025/10/17-15:30:30.913658 7f7b75bfa6c0 Delete type=0 #125
2024/04/27-09:26:42.203748 7fc5bfe006c0 Level-0 table #50: started 2025/10/17-15:38:10.278555 7f7b6f3ff6c0 Level-0 table #130: started
2024/04/27-09:26:42.203807 7fc5bfe006c0 Level-0 table #50: 0 bytes OK 2025/10/17-15:38:10.278587 7f7b6f3ff6c0 Level-0 table #130: 0 bytes OK
2024/04/27-09:26:42.211166 7fc5bfe006c0 Delete type=0 #48 2025/10/17-15:38:10.286086 7f7b6f3ff6c0 Delete type=0 #128
2024/04/27-09:26:42.227275 7fc5bfe006c0 Manual compaction at level-0 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.286263 7f7b6f3ff6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
2024/04/27-09:26:42.227330 7fc5bfe006c0 Manual compaction at level-1 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.286292 7f7b6f3ff6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/04/26-19:22:08.735377 7f89074006c0 Recovering log #40 2025/10/17-15:00:21.717758 7f7b74bf86c0 Recovering log #121
2024/04/26-19:22:08.745776 7f89074006c0 Delete type=3 #38 2025/10/17-15:00:21.769008 7f7b74bf86c0 Delete type=3 #119
2024/04/26-19:22:08.745887 7f89074006c0 Delete type=0 #40 2025/10/17-15:00:21.769070 7f7b74bf86c0 Delete type=0 #121
2024/04/26-19:25:18.595904 7f88ffe006c0 Level-0 table #46: started 2025/10/17-15:19:41.060844 7f7b6f3ff6c0 Level-0 table #126: started
2024/04/26-19:25:18.595980 7f88ffe006c0 Level-0 table #46: 0 bytes OK 2025/10/17-15:19:41.060869 7f7b6f3ff6c0 Level-0 table #126: 0 bytes OK
2024/04/26-19:25:18.630930 7f88ffe006c0 Delete type=0 #44 2025/10/17-15:19:41.066791 7f7b6f3ff6c0 Delete type=0 #124
2024/04/26-19:25:18.747411 7f88ffe006c0 Manual compaction at level-0 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.066893 7f7b6f3ff6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
2024/04/26-19:25:18.747487 7f88ffe006c0 Manual compaction at level-1 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.066927 7f7b6f3ff6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000163 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/04/27-08:47:55.395447 7fc5c56006c0 Recovering log #161 2025/10/17-15:30:30.682022 7f7b75bfa6c0 Recovering log #239
2024/04/27-08:47:55.406766 7fc5c56006c0 Delete type=3 #159 2025/10/17-15:30:30.742602 7f7b75bfa6c0 Delete type=3 #237
2024/04/27-08:47:55.406871 7fc5c56006c0 Delete type=0 #161 2025/10/17-15:30:30.742693 7f7b75bfa6c0 Delete type=0 #239
2024/04/27-09:26:42.188991 7fc5bfe006c0 Level-0 table #166: started 2025/10/17-15:38:10.271948 7f7b6f3ff6c0 Level-0 table #244: started
2024/04/27-09:26:42.189072 7fc5bfe006c0 Level-0 table #166: 0 bytes OK 2025/10/17-15:38:10.271975 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/04/27-09:26:42.196426 7fc5bfe006c0 Delete type=0 #164 2025/10/17-15:38:10.278425 7f7b6f3ff6c0 Delete type=0 #242
2024/04/27-09:26:42.196728 7fc5bfe006c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.286252 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2024/04/26-19:22:08.694940 7f89056006c0 Recovering log #156 2025/10/17-15:00:21.537451 7f7b74bf86c0 Recovering log #235
2024/04/26-19:22:08.705096 7f89056006c0 Delete type=3 #154 2025/10/17-15:00:21.591584 7f7b74bf86c0 Delete type=3 #233
2024/04/26-19:22:08.705158 7f89056006c0 Delete type=0 #156 2025/10/17-15:00:21.591645 7f7b74bf86c0 Delete type=0 #235
2024/04/26-19:25:18.631092 7f88ffe006c0 Level-0 table #162: started 2025/10/17-15:19:41.028380 7f7b6f3ff6c0 Level-0 table #240: started
2024/04/26-19:25:18.631157 7f88ffe006c0 Level-0 table #162: 0 bytes OK 2025/10/17-15:19:41.028403 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/04/26-19:25:18.673806 7f88ffe006c0 Delete type=0 #160 2025/10/17-15:19:41.034791 7f7b6f3ff6c0 Delete type=0 #238
2024/04/26-19:25:18.747426 7f88ffe006c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.041211 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/traits/000192.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000163 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/04/27-08:47:55.428744 7fc5c56006c0 Recovering log #161 2025/10/17-15:30:30.802095 7f7b6ffff6c0 Recovering log #239
2024/04/27-08:47:55.439052 7fc5c56006c0 Delete type=3 #159 2025/10/17-15:30:30.861659 7f7b6ffff6c0 Delete type=3 #237
2024/04/27-08:47:55.439149 7fc5c56006c0 Delete type=0 #161 2025/10/17-15:30:30.861731 7f7b6ffff6c0 Delete type=0 #239
2024/04/27-09:26:42.218635 7fc5bfe006c0 Level-0 table #166: started 2025/10/17-15:38:10.258105 7f7b6f3ff6c0 Level-0 table #244: started
2024/04/27-09:26:42.218676 7fc5bfe006c0 Level-0 table #166: 0 bytes OK 2025/10/17-15:38:10.258177 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/04/27-09:26:42.227027 7fc5bfe006c0 Delete type=0 #164 2025/10/17-15:38:10.264342 7f7b6f3ff6c0 Delete type=0 #242
2024/04/27-09:26:42.227313 7fc5bfe006c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end) 2025/10/17-15:38:10.286223 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2024/04/26-19:22:08.721470 7f8906a006c0 Recovering log #156 2025/10/17-15:00:21.652305 7f7b753f96c0 Recovering log #235
2024/04/26-19:22:08.732531 7f8906a006c0 Delete type=3 #154 2025/10/17-15:00:21.715259 7f7b753f96c0 Delete type=3 #233
2024/04/26-19:22:08.732624 7f8906a006c0 Delete type=0 #156 2025/10/17-15:00:21.715340 7f7b753f96c0 Delete type=0 #235
2024/04/26-19:25:18.716069 7f88ffe006c0 Level-0 table #162: started 2025/10/17-15:19:41.034921 7f7b6f3ff6c0 Level-0 table #240: started
2024/04/26-19:25:18.716099 7f88ffe006c0 Level-0 table #162: 0 bytes OK 2025/10/17-15:19:41.034948 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/04/26-19:25:18.747273 7f88ffe006c0 Delete type=0 #160 2025/10/17-15:19:41.041045 7f7b6f3ff6c0 Delete type=0 #238
2024/04/26-19:25:18.747446 7f88ffe006c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end) 2025/10/17-15:19:41.041223 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,8 +3,10 @@
"esmodules": [ "esmodules": [
"modules/ecryme-main.js" "modules/ecryme-main.js"
], ],
"gridDistance": 1, "grid": {
"gridUnits": "m", "distance": 2,
"units": "m"
},
"languages": [ "languages": [
{ {
"lang": "fr", "lang": "fr",
@@ -102,8 +104,8 @@
"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": "12" "verified": "13"
}, },
"id": "fvtt-ecryme", "id": "fvtt-ecryme",
"primaryTokenAttribute": "secondary.health", "primaryTokenAttribute": "secondary.health",
@@ -123,7 +125,7 @@
}, },
"title": "Ecryme, le Jeu de Rôles", "title": "Ecryme, le Jeu de Rôles",
"url": "https://www.uberwald.me/gitea/public/fvtt-ecryme", "url": "https://www.uberwald.me/gitea/public/fvtt-ecryme",
"version": "12.0.1", "version": "13.0.3",
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v12.0.1.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v13.0.3.zip",
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp" "background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
} }

View File

@@ -31,26 +31,31 @@
"pnjvalue": 0, "pnjvalue": 0,
"skilllist": { "skilllist": {
"athletics": { "athletics": {
"key": "athletics",
"name": "ECRY.ui.athletics", "name": "ECRY.ui.athletics",
"max": 0, "max": 0,
"value": 0 "value": 0
}, },
"driving": { "driving": {
"key": "driving",
"name": "ECRY.ui.driving", "name": "ECRY.ui.driving",
"max": 0, "max": 0,
"value": 0 "value": 0
}, },
"fencing": { "fencing": {
"key": "fencing",
"name": "ECRY.ui.fencing", "name": "ECRY.ui.fencing",
"max": 0, "max": 0,
"value": 0 "value": 0
}, },
"brawling": { "brawling": {
"key": "brawling",
"name": "ECRY.ui.brawling", "name": "ECRY.ui.brawling",
"max": 0, "max": 0,
"value": 0 "value": 0
}, },
"shooting": { "shooting": {
"key": "shooting",
"name": "ECRY.ui.shooting", "name": "ECRY.ui.shooting",
"max": 0, "max": 0,
"value": 0 "value": 0
@@ -62,26 +67,31 @@
"pnjvalue": 0, "pnjvalue": 0,
"skilllist": { "skilllist": {
"anthropomecanology": { "anthropomecanology": {
"key": "anthropomecanology",
"name": "ECRY.ui.anthropomecanology", "name": "ECRY.ui.anthropomecanology",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"ecrymology": { "ecrymology": {
"key": "ecrymology",
"name": "ECRY.ui.ecrymology", "name": "ECRY.ui.ecrymology",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"traumatology": { "traumatology": {
"key": "traumatology",
"name": "ECRY.ui.traumatology", "name": "ECRY.ui.traumatology",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"traversology": { "traversology": {
"key": "traversology",
"name": "ECRY.ui.traversology", "name": "ECRY.ui.traversology",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"urbatechnology": { "urbatechnology": {
"key": "urbatechnology",
"name": "ECRY.ui.urbatechnology", "name": "ECRY.ui.urbatechnology",
"value": 0, "value": 0,
"max": 10 "max": 10
@@ -93,26 +103,31 @@
"pnjvalue": 0, "pnjvalue": 0,
"skilllist": { "skilllist": {
"quibbling": { "quibbling": {
"key": "quibbling",
"name": "ECRY.ui.quibbling", "name": "ECRY.ui.quibbling",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"creativity": { "creativity": {
"key": "creativity",
"name": "ECRY.ui.creativity", "name": "ECRY.ui.creativity",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"loquacity": { "loquacity": {
"key": "loquacity",
"name": "ECRY.ui.loquacity", "name": "ECRY.ui.loquacity",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"guile": { "guile": {
"key": "guile",
"name": "ECRY.ui.guile", "name": "ECRY.ui.guile",
"value": 0, "value": 0,
"max": 10 "max": 10
}, },
"performance": { "performance": {
"key": "performance",
"name": "ECRY.ui.performance", "name": "ECRY.ui.performance",
"value": 0, "value": 0,
"max": 10 "max": 10

View File

@@ -15,7 +15,7 @@
<div> <div>
<ul> <ul>
<li>Confrontation : {{rollData1.alias}} vs {{rollData2.alias}}</li> <li><strong>Confrontation</strong> : {{rollData1.alias}} vs {{rollData2.alias}}</li>
<li>{{localize rollData1.skill.name}} ({{rollData1.skill.value}}) vs {{localize rollData2.skill.name}} ({{rollData2.skill.value}}) </li> <li>{{localize rollData1.skill.name}} ({{rollData1.skill.value}}) vs {{localize rollData2.skill.name}} ({{rollData2.skill.value}}) </li>
<li>{{rollData1.executionTotal}} vs {{rollData2.preservationTotal}} : {{marginExecution}}</li> <li>{{rollData1.executionTotal}} vs {{rollData2.preservationTotal}} : {{marginExecution}}</li>
<li>{{rollData1.preservationTotal}} vs {{rollData2.executionTotal}} : {{marginPreservation}}</li> <li>{{rollData1.preservationTotal}} vs {{rollData2.executionTotal}} : {{marginPreservation}}</li>
@@ -32,21 +32,21 @@
<li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.execution"}} : {{effectExecution}}</li> <li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.execution"}} : {{effectExecution}}</li>
{{#if impactExecution}} {{#if impactExecution}}
<li>Impact {{rollData2.alias}} : 1 {{localize (concat "ECRY.ui." impactExecution)}}</li> <li>Impact {{rollData2.alias}} : 1 {{localize (concat "ECRY.ui." impactExecution)}}</li>
<button class="button-apply-impact" data-actor-id="{{rollData2.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactExecution}}">{{localize "ECRY.ui.applyimpact"}}</button> <button class="button-apply-impact" data-token-id="{{rollData2.tokenId}}" data-actor-id="{{rollData2.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactExecution}}">{{localize "ECRY.ui.applyimpact"}}</button>
{{/if}} {{/if}}
{{#if bonus2}} {{#if bonus2}}
<li>Bonus {{rollData2.alias}} : {{bonus2}}</li> <li>Bonus {{rollData2.alias}} : {{bonus2}}</li>
<button class="button-apply-bonus" data-actor-id="{{rollData2.actorId}}" data-bonus="{{bonus2}}">{{localize "ECRY.ui.applybonus"}}</button> <button class="button-apply-bonus" data-token-id="{{rollData2.tokenId}}" data-actor-id="{{rollData2.actorId}}" data-bonus="{{bonus2}}">{{localize "ECRY.ui.applybonus"}}</button>
{{/if}} {{/if}}
<li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.preservation"}} : {{effectPreservation}}</li> <li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.preservation"}} : {{effectPreservation}}</li>
{{#if impactPreservation}} {{#if impactPreservation}}
<li>Impact {{rollData1.alias}} : 1 {{localize (concat "ECRY.ui." impactPreservation)}}</li> <li>Impact {{rollData1.alias}} : 1 {{localize (concat "ECRY.ui." impactPreservation)}}</li>
<button class="button-apply-impact" data-actor-id="{{rollData1.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactPreservation}}">{{localize "ECRY.ui.applyimpact"}}</button> <button class="button-apply-impact" data-token-id="{{rollData1.tokenId}}" data-actor-id="{{rollData1.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactPreservation}}">{{localize "ECRY.ui.applyimpact"}}</button>
{{/if}} {{/if}}
{{#if bonus1}} {{#if bonus1}}
<li>Bonus {{rollData1.alias}} : {{bonus1}}</li> <li>Bonus {{rollData1.alias}} : {{bonus1}}</li>
<button class="button-apply-bonus" data-actor-id="{{rollData1.actorId}}" data-bonus="{{bonus1}}">{{localize "ECRY.ui.applybonus"}}</button> <button class="button-apply-bonus" data-token-id="{{rollData1.tokenId}}" data-actor-id="{{rollData1.actorId}}" data-bonus="{{bonus1}}">{{localize "ECRY.ui.applybonus"}}</button>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>

View File

@@ -0,0 +1,42 @@
<h3 class="welcome-message-h3">Bonjour à tous !</h3>
<div class="message-chat-center">
👋 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="message-chat-center">
⚠️ 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>
<div class="message-chat-center">
Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient
participer plus activement à la communauté des jeux d'Open Sesame Games, avec
un espace dédié aux écrymiens ! <br />
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
directement. Cliquez ici :<br />
<a href="https://discord.gg/dUPhNfJdaD">https://discord.gg/dUPhNfJdaD</a
><br />
</div>
<div class="message-chat-center">
Ce système vous est proposé par Open Sesame Games.<br />
Vous trouverez de l'aide dans
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour
Ecryme}<br />
ainsi que sur le Discord de Foundry FR :<br>
<a href="https://discord.gg/pPSDNJk">https://discord.gg/pPSDNJk</a>
</div>
</div>
Merci pour votre attention et à très bientôt pour la suite ! L'équipe Open
Sesame Games
</div>