Compare commits

...

9 Commits

65 changed files with 343 additions and 146 deletions

View File

@ -1,10 +1,12 @@
# Ecryme v2 system for FoundryVTT (French RPG, Open Sesam Games, Official)
This is a base game system with functionnal character sheets for the game Ecryme, powered by the Engrenage system.
You can join the kickstarter and obtain the base books here : https://www.kickstarter.com/projects/osg-us/ecryme
# System overview
The game system in Foundry offers the following features :
- PC/NPC sheet
- Skill rolls

View File

@ -1,3 +1,20 @@
v11.0.39
- Modification sur la prise en compte des traits en bonus/malus
- Correction sur les images de l'aide intégrée FR
v11.0.38
- Corrections sur les champs background/notes/equipement libre
- Taduction des répertoires
- Ajout de 2 landing pages
v11.0.36
- Enable deletion specialization
- Custome bonus for specializations
- Specialization direct rolls
v11.0.31
Add profession, fix equipment tab and add missing translation

4
images/.directory Normal file
View File

@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2024,3,15,11,30,15.103
Version=4
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

4
images/assets/.directory Normal file
View File

@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2024,3,15,11,30,26.235
Version=4
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

4
images/ui/.directory Normal file
View File

@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2024,3,15,11,30,19.681
Version=4
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

View File

@ -33,7 +33,9 @@
"traitbonus": "Bonus trait",
"traitmalus": "Malus trait",
"bonusmalustraits": "Traits Bonus/Malus",
"spectranscend": "Self-Transcend : "
"spectranscend": "Self-Transcend : ",
"confrontselect": "Selected for confrontation",
"sentogm": "Confrontation has been sent to GM"
},
"rule": {
"cephaly-success-2": "Duration : 1 scene - Impact : Superficial - Bonus : 1 - Elegy : 1",

View File

@ -33,7 +33,9 @@
"traitbonus": "Trait bonus",
"traitmalus": "Trait malus",
"bonusmalustraits": "Bonus/Malus des Traits",
"spectranscend": "Dépassement de soi : "
"spectranscend": "Dépassement de soi : ",
"confrontselected": "Confrontation selectionnée",
"sentogm": "La confrontation a été envoyée au MJ"
},
"rule": {
"cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1",

View File

@ -53,9 +53,9 @@ export class EcrymeActorSheet extends ActorSheet {
cephalySkills: this.actor.getCephalySkills(),
subActors: duplicate(this.actor.getSubActors()),
annency: this.actor.getAnnency(),
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
equipementlibre: await TextEditor.enrichHTML(this.object.system.equipementlibre, { async: true }),
description: await TextEditor.enrichHTML(this.object.system.biodata.description, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.biodata.notes, { async: true }),
equipementlibre: await TextEditor.enrichHTML(this.object.system.equipmentfree, { async: true }),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
@ -90,6 +90,9 @@ export class EcrymeActorSheet extends ActorSheet {
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
if (!itemId) {
itemId = $(ev.currentTarget).data("item-id")
}
const item = this.actor.items.get( itemId );
item.sheet.render(true);
});

View File

@ -387,14 +387,25 @@ export class EcrymeActor extends Actor {
/* -------------------------------------------- */
getCommonSkill(categKey, skillKey) {
let skill = this.system.skills[categKey].skilllist[skillKey]
let rollData = this.getCommonRollData()
skill = duplicate(skill)
// Specific NPC case
let skill
if (skillKey == "rawnpc") {
skill = {
name: "ECRY.ui." + categKey,
max: 10,
value: this.system.skills[categKey].pnjvalue,
spec: []
}
} else {
skill = this.system.skills[categKey].skilllist[skillKey]
skill = duplicate(skill)
skill.spec = this.getSpecializations(skillKey)
}
skill.categKey = categKey
skill.skillKey = skillKey
skill.spec = this.getSpecializations(skillKey)
rollData.skill = skill
rollData.img = skill.img
rollData.impactMalus = this.getImpactMalus(categKey)

View File

@ -275,7 +275,7 @@ export class EcrymeUtility {
let message = game.messages.get(li.attr("data-message-id"))
let rollData = message.getFlag("world", "rolldata")
//console.log(">>>>>>>>>>>>>>>>>>>>>>>>>> Menu !!!!", rollData)
if (rollData.skill && i <= rollData.skill.value && !rollData.transcendUsed && rollData.spec) {
if (rollData.skill && rollData.skill.value >= i && !rollData.transcendUsed && rollData.spec) {
return true
}
return false
@ -300,6 +300,7 @@ export class EcrymeUtility {
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "ecryme-rolldata")
ui.notifications.info( game.i18n.localize("ECRY.chat.confrontselect"))
EcrymeUtility.manageConfrontation(rollData)
})
html.on("click", '.button-apply-cephaly-difficulty', event => {
@ -409,10 +410,15 @@ export class EcrymeUtility {
/* -------------------------------------------- */
static async onSocketMesssage(msg) {
console.log("SOCKET MESSAGE", msg.name)
if (msg.name == "msg-draw-card") {
if (game.user.isGM && game.system.ecryme.currentTirage) {
game.system.ecryme.currentTirage.addCard(msg.data.msgId)
console.log("SOCKET MESSAGE", msg)
if (msg.name == "msg_gm_chat_message") {
let rollData = msg.data.rollData
if ( game.user.isGM ) {
let chatMsg = await this.createChatMessage(rollData.alias, "blindroll", {
content: await renderTemplate(msg.data.template, rollData),
whisper: game.user.id
})
chatMsg.setFlag("world", "ecryme-rolldata", rollData)
}
}
}
@ -525,7 +531,7 @@ export class EcrymeUtility {
let trait = actor.getTrait(id)
console.log(trait, id)
rollData.traitsBonusList.push(trait)
rollData.bonusMalusTraits += trait.system.level
rollData.bonusMalusTraits += Math.abs(trait.system.level)
}
}
if (rollData.traitsMalus && rollData.traitsMalus.length > 0) {
@ -533,7 +539,7 @@ export class EcrymeUtility {
for (let id of rollData.traitsMalus) {
let trait = actor.getTrait(id)
rollData.traitsMalusList.push(trait)
rollData.bonusMalusTraits -= trait.system.level
rollData.bonusMalusTraits -= Math.abs(trait.system.level)
}
}
diceFormula += "+" + rollData.bonusMalusTraits
@ -631,12 +637,10 @@ export class EcrymeUtility {
}
/* -------------------------------------------- */
static blindMessageToGM(chatOptions) {
let chatGM = duplicate(chatOptions);
chatGM.whisper = this.getUsers(user => user.isGM);
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
console.log("blindMessageToGM", chatGM);
game.socket.emit("system.fvtt-ecryme", { msg: "msg_gm_chat_message", data: chatGM });
static blindMessageToGM(chatData) {
chatData.whisper = this.getUsers(user => user.isGM);
console.log("blindMessageToGM", chatData);
game.socket.emit("system.fvtt-ecryme", { name: "msg_gm_chat_message", data: chatData });
}
@ -656,18 +660,14 @@ export class EcrymeUtility {
}
return array;
}
/* -------------------------------------------- */
static async createChatMessage(name, rollMode, chatOptions) {
switch (rollMode) {
case "blindroll": // GM only
if (!game.user.isGM) {
this.blindMessageToGM(chatOptions);
chatOptions.whisper = [game.user.id];
chatOptions.content = "Message only to the GM";
}
else {
} else {
chatOptions.whisper = this.getUsers(user => user.isGM);
}
break;

View File

@ -50,6 +50,7 @@ export class EcrymeConfrontDialog extends Dialog {
let msg = await EcrymeUtility.createChatMessage(this.rollData.alias, "blindroll", {
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-confrontation-pending.hbs`, this.rollData)
})
EcrymeUtility.blindMessageToGM( { rollData: this.rollData, template: "systems/fvtt-ecryme/templates/chat/chat-confrontation-pending.hbs" })
console.log("MSG", this.rollData)
msg.setFlag("world", "ecryme-rolldata", this.rollData)
}
@ -82,13 +83,24 @@ export class EcrymeConfrontDialog extends Dialog {
let button = this.buttonDisabled
setTimeout(function () { $(".launchConfront").attr("disabled", button) }, 180)
}
/* ------------------ -------------------------- */
_canDragStart(selector) {
console.log("CAN DRAG START", selector, super._canDragStart(selector) )
return true
}
_canDragDrop(selector) {
console.log("CAN DRAG DROP", selector, super._canDragDrop(selector) )
return true
}
/* ------------------ -------------------------- */
_onDragStart(event) {
console.log("DRAGSTART::::", event)
super._onDragStart(event)
let dragType = $(event.srcElement).data("drag-type")
let diceData = {}
//console.log("DRAGTYPE", dragType)
console.log("DRAGTYPE", dragType)
if (dragType == "dice") {
diceData = {
dragType: "dice",
@ -111,7 +123,7 @@ export class EcrymeConfrontDialog extends Dialog {
let data = JSON.parse(dataJSON)
if ( data.dragType == "dice") {
let idx = Number(data.diceIndex)
//console.log("DATA", data, event, event.srcElement.className)
console.log("DATA", data, event, event.srcElement.className)
if (event.srcElement.className.includes("execution") &&
this.rollData.availableDices.filter(d => d.location == "execution").length < 2) {
this.rollData.availableDices[idx].location = "execution"

View File

@ -67,7 +67,6 @@ Hooks.once("init", async function () {
EcrymeUtility.init()
console.log("Babele INIT!")
Babele.get().setSystemTranslationsDir("translated")
});
@ -84,28 +83,13 @@ function welcomeMessage() {
}
/* -------------------------------------------- */
// Register world usage statistics
function registerUsageCount(registerKey) {
if (game.user.isGM) {
game.settings.register(registerKey, "world-key", {
name: "Unique world key",
scope: "world",
config: false,
default: "",
type: String
});
let worldKey = game.settings.get(registerKey, "world-key")
if (worldKey == undefined || worldKey == "") {
worldKey = randomID(32)
game.settings.set(registerKey, "world-key", worldKey)
}
// Simple API counter
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
//$.ajaxSetup({
//headers: { 'Access-Control-Allow-Origin': '*' }
//})
$.ajax(regURL)
async function importDefaultScene() {
let exists = game.scenes.find(j => j.name == "Landing page 1");
if (!exists) {
const scenes = await EcrymeUtility.loadCompendium("fvtt-ecryme.scenes")
let newDocuments = scenes.filter(i => i.name == "Landing page 1");
await game.scenes.documentClass.create(newDocuments);
game.scenes.find(i => i.name == "Landing page 1").activate();
}
}
@ -123,10 +107,17 @@ Hooks.once("ready", function () {
});
}
registerUsageCount(game.system.id)
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=>
console.log("No stats available, giving up.")
)
welcomeMessage();
EcrymeUtility.ready()
EcrymeCharacterSummary.ready()
EcrymeUtility.ready();
EcrymeCharacterSummary.ready();
importDefaultScene();
})

View File

@ -1 +1 @@
MANIFEST-000106
MANIFEST-000146

View File

@ -1,7 +1,7 @@
2023/10/10-15:44:15.214470 7fb8baffd6c0 Recovering log #104
2023/10/10-15:44:15.228942 7fb8baffd6c0 Delete type=3 #102
2023/10/10-15:44:15.229018 7fb8baffd6c0 Delete type=0 #104
2023/10/10-16:47:17.816560 7fb8b97fa6c0 Level-0 table #109: started
2023/10/10-16:47:17.816585 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/10/10-16:47:17.822797 7fb8b97fa6c0 Delete type=0 #107
2023/10/10-16:47:17.832584 7fb8b97fa6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
2024/03/19-08:59:49.412009 7fe1974006c0 Recovering log #144
2024/03/19-08:59:49.422002 7fe1974006c0 Delete type=3 #142
2024/03/19-08:59:49.422641 7fe1974006c0 Delete type=0 #144
2024/03/19-09:13:11.433053 7fe18fe006c0 Level-0 table #149: started
2024/03/19-09:13:11.433076 7fe18fe006c0 Level-0 table #149: 0 bytes OK
2024/03/19-09:13:11.439309 7fe18fe006c0 Delete type=0 #147
2024/03/19-09:13:11.449116 7fe18fe006c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/10/10-14:47:37.319172 7fb8b9ffb6c0 Recovering log #100
2023/10/10-14:47:37.374764 7fb8b9ffb6c0 Delete type=3 #98
2023/10/10-14:47:37.374842 7fb8b9ffb6c0 Delete type=0 #100
2023/10/10-15:44:02.360675 7fb8b97fa6c0 Level-0 table #105: started
2023/10/10-15:44:02.360734 7fb8b97fa6c0 Level-0 table #105: 0 bytes OK
2023/10/10-15:44:02.452513 7fb8b97fa6c0 Delete type=0 #103
2023/10/10-15:44:02.600640 7fb8b97fa6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
2024/03/19-08:26:23.599709 7fe196a006c0 Recovering log #140
2024/03/19-08:26:23.609740 7fe196a006c0 Delete type=3 #138
2024/03/19-08:26:23.610001 7fe196a006c0 Delete type=0 #140
2024/03/19-08:59:38.616836 7fe18fe006c0 Level-0 table #145: started
2024/03/19-08:59:38.616860 7fe18fe006c0 Level-0 table #145: 0 bytes OK
2024/03/19-08:59:38.622855 7fe18fe006c0 Delete type=0 #143
2024/03/19-08:59:38.629513 7fe18fe006c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/help/000074.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000042
MANIFEST-000083

View File

@ -1,8 +1,8 @@
2023/10/10-15:44:15.264794 7fb8bb7fe6c0 Recovering log #40
2023/10/10-15:44:15.274945 7fb8bb7fe6c0 Delete type=3 #38
2023/10/10-15:44:15.275026 7fb8bb7fe6c0 Delete type=0 #40
2023/10/10-16:47:17.838950 7fb8b97fa6c0 Level-0 table #45: started
2023/10/10-16:47:17.838969 7fb8b97fa6c0 Level-0 table #45: 0 bytes OK
2023/10/10-16:47:17.846123 7fb8b97fa6c0 Delete type=0 #43
2023/10/10-16:47:17.846349 7fb8b97fa6c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2023/10/10-16:47:17.846379 7fb8b97fa6c0 Manual compaction at level-1 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2024/03/19-08:59:49.466407 7fe1956006c0 Recovering log #81
2024/03/19-08:59:49.476751 7fe1956006c0 Delete type=3 #79
2024/03/19-08:59:49.476810 7fe1956006c0 Delete type=0 #81
2024/03/19-09:13:11.469451 7fe18fe006c0 Level-0 table #86: started
2024/03/19-09:13:11.469477 7fe18fe006c0 Level-0 table #86: 0 bytes OK
2024/03/19-09:13:11.476330 7fe18fe006c0 Delete type=0 #84
2024/03/19-09:13:11.476450 7fe18fe006c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2024/03/19-09:13:11.476467 7fe18fe006c0 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 @@
2023/10/10-14:47:37.522181 7fb8ba7fc6c0 Recovering log #36
2023/10/10-14:47:37.575247 7fb8ba7fc6c0 Delete type=3 #34
2023/10/10-14:47:37.575386 7fb8ba7fc6c0 Delete type=0 #36
2023/10/10-15:44:02.669413 7fb8b97fa6c0 Level-0 table #41: started
2023/10/10-15:44:02.669471 7fb8b97fa6c0 Level-0 table #41: 0 bytes OK
2023/10/10-15:44:02.803436 7fb8b97fa6c0 Delete type=0 #39
2023/10/10-15:44:02.803585 7fb8b97fa6c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2023/10/10-15:44:02.803610 7fb8b97fa6c0 Manual compaction at level-1 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2024/03/19-08:26:23.652790 7fe1974006c0 Recovering log #77
2024/03/19-08:26:23.662568 7fe1974006c0 Delete type=3 #75
2024/03/19-08:26:23.662632 7fe1974006c0 Delete type=0 #77
2024/03/19-08:59:38.642890 7fe18fe006c0 Level-0 table #82: started
2024/03/19-08:59:38.642925 7fe18fe006c0 Level-0 table #82: 0 bytes OK
2024/03/19-08:59:38.649550 7fe18fe006c0 Delete type=0 #80
2024/03/19-08:59:38.649669 7fe18fe006c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2024/03/19-08:59:38.649688 7fe18fe006c0 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-000083 Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000106
MANIFEST-000146

View File

@ -1,7 +1,7 @@
2023/10/10-15:44:15.251468 7fb8ba7fc6c0 Recovering log #104
2023/10/10-15:44:15.263005 7fb8ba7fc6c0 Delete type=3 #102
2023/10/10-15:44:15.263083 7fb8ba7fc6c0 Delete type=0 #104
2023/10/10-16:47:17.832601 7fb8b97fa6c0 Level-0 table #109: started
2023/10/10-16:47:17.832642 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/10/10-16:47:17.838860 7fb8b97fa6c0 Delete type=0 #107
2023/10/10-16:47:17.846327 7fb8b97fa6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
2024/03/19-08:59:49.453929 7fe1974006c0 Recovering log #144
2024/03/19-08:59:49.464351 7fe1974006c0 Delete type=3 #142
2024/03/19-08:59:49.464411 7fe1974006c0 Delete type=0 #144
2024/03/19-09:13:11.463206 7fe18fe006c0 Level-0 table #149: started
2024/03/19-09:13:11.463229 7fe18fe006c0 Level-0 table #149: 0 bytes OK
2024/03/19-09:13:11.469351 7fe18fe006c0 Delete type=0 #147
2024/03/19-09:13:11.476419 7fe18fe006c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/10/10-14:47:37.452515 7fb8baffd6c0 Recovering log #100
2023/10/10-14:47:37.516010 7fb8baffd6c0 Delete type=3 #98
2023/10/10-14:47:37.516087 7fb8baffd6c0 Delete type=0 #100
2023/10/10-15:44:02.600756 7fb8b97fa6c0 Level-0 table #105: started
2023/10/10-15:44:02.600790 7fb8b97fa6c0 Level-0 table #105: 0 bytes OK
2023/10/10-15:44:02.669263 7fb8b97fa6c0 Delete type=0 #103
2023/10/10-15:44:02.803564 7fb8b97fa6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
2024/03/19-08:26:23.639789 7fe196a006c0 Recovering log #140
2024/03/19-08:26:23.649226 7fe196a006c0 Delete type=3 #138
2024/03/19-08:26:23.649311 7fe196a006c0 Delete type=0 #140
2024/03/19-08:59:38.636120 7fe18fe006c0 Level-0 table #145: started
2024/03/19-08:59:38.636145 7fe18fe006c0 Level-0 table #145: 0 bytes OK
2024/03/19-08:59:38.642769 7fe18fe006c0 Delete type=0 #143
2024/03/19-08:59:38.649658 7fe18fe006c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)

BIN
packs/scenes/000005.ldb Normal file

Binary file not shown.

1
packs/scenes/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000030

8
packs/scenes/LOG Normal file
View File

@ -0,0 +1,8 @@
2024/03/19-08:59:49.439960 7fe1974006c0 Recovering log #28
2024/03/19-08:59:49.450519 7fe1974006c0 Delete type=3 #26
2024/03/19-08:59:49.450564 7fe1974006c0 Delete type=0 #28
2024/03/19-09:13:11.449133 7fe18fe006c0 Level-0 table #33: started
2024/03/19-09:13:11.449161 7fe18fe006c0 Level-0 table #33: 0 bytes OK
2024/03/19-09:13:11.455581 7fe18fe006c0 Delete type=0 #31
2024/03/19-09:13:11.469432 7fe18fe006c0 Manual compaction at level-0 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)
2024/03/19-09:13:11.476429 7fe18fe006c0 Manual compaction at level-1 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)

8
packs/scenes/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2024/03/19-08:26:23.626739 7fe196a006c0 Recovering log #24
2024/03/19-08:26:23.637137 7fe196a006c0 Delete type=3 #22
2024/03/19-08:26:23.637185 7fe196a006c0 Delete type=0 #24
2024/03/19-08:59:38.629525 7fe18fe006c0 Level-0 table #29: started
2024/03/19-08:59:38.629567 7fe18fe006c0 Level-0 table #29: 0 bytes OK
2024/03/19-08:59:38.635979 7fe18fe006c0 Delete type=0 #27
2024/03/19-08:59:38.649644 7fe18fe006c0 Manual compaction at level-0 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)
2024/03/19-08:59:38.649696 7fe18fe006c0 Manual compaction at level-1 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

View File

@ -1 +1 @@
MANIFEST-000106
MANIFEST-000146

View File

@ -1,7 +1,7 @@
2023/10/10-15:44:15.196298 7fb8bb7fe6c0 Recovering log #104
2023/10/10-15:44:15.211750 7fb8bb7fe6c0 Delete type=3 #102
2023/10/10-15:44:15.211839 7fb8bb7fe6c0 Delete type=0 #104
2023/10/10-16:47:17.809484 7fb8b97fa6c0 Level-0 table #109: started
2023/10/10-16:47:17.809511 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/10/10-16:47:17.816437 7fb8b97fa6c0 Delete type=0 #107
2023/10/10-16:47:17.832558 7fb8b97fa6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
2024/03/19-08:59:49.399329 7fe1956006c0 Recovering log #144
2024/03/19-08:59:49.409751 7fe1956006c0 Delete type=3 #142
2024/03/19-08:59:49.409855 7fe1956006c0 Delete type=0 #144
2024/03/19-09:13:11.426894 7fe18fe006c0 Level-0 table #149: started
2024/03/19-09:13:11.426924 7fe18fe006c0 Level-0 table #149: 0 bytes OK
2024/03/19-09:13:11.432936 7fe18fe006c0 Delete type=0 #147
2024/03/19-09:13:11.439402 7fe18fe006c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/10/10-14:47:37.259593 7fb8ba7fc6c0 Recovering log #100
2023/10/10-14:47:37.309331 7fb8ba7fc6c0 Delete type=3 #98
2023/10/10-14:47:37.309445 7fb8ba7fc6c0 Delete type=0 #100
2023/10/10-15:44:02.452840 7fb8b97fa6c0 Level-0 table #105: started
2023/10/10-15:44:02.452904 7fb8b97fa6c0 Level-0 table #105: 0 bytes OK
2023/10/10-15:44:02.530099 7fb8b97fa6c0 Delete type=0 #103
2023/10/10-15:44:02.600658 7fb8b97fa6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
2024/03/19-08:26:23.586366 7fe1974006c0 Recovering log #140
2024/03/19-08:26:23.596561 7fe1974006c0 Delete type=3 #138
2024/03/19-08:26:23.596616 7fe1974006c0 Delete type=0 #140
2024/03/19-08:59:38.610581 7fe18fe006c0 Level-0 table #145: started
2024/03/19-08:59:38.610610 7fe18fe006c0 Level-0 table #145: 0 bytes OK
2024/03/19-08:59:38.616719 7fe18fe006c0 Delete type=0 #143
2024/03/19-08:59:38.629493 7fe18fe006c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)

0
packs/traits/000148.log Normal file
View File

View File

@ -1 +1 @@
MANIFEST-000106
MANIFEST-000146

View File

@ -1,7 +1,7 @@
2023/10/10-15:44:15.233698 7fb8b9ffb6c0 Recovering log #104
2023/10/10-15:44:15.249165 7fb8b9ffb6c0 Delete type=3 #102
2023/10/10-15:44:15.249275 7fb8b9ffb6c0 Delete type=0 #104
2023/10/10-16:47:17.823003 7fb8b97fa6c0 Level-0 table #109: started
2023/10/10-16:47:17.823041 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/10/10-16:47:17.832350 7fb8b97fa6c0 Delete type=0 #107
2023/10/10-16:47:17.838938 7fb8b97fa6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
2024/03/19-08:59:49.425377 7fe1956006c0 Recovering log #144
2024/03/19-08:59:49.436099 7fe1956006c0 Delete type=3 #142
2024/03/19-08:59:49.436163 7fe1956006c0 Delete type=0 #144
2024/03/19-09:13:11.455720 7fe18fe006c0 Level-0 table #149: started
2024/03/19-09:13:11.455760 7fe18fe006c0 Level-0 table #149: 0 bytes OK
2024/03/19-09:13:11.463106 7fe18fe006c0 Delete type=0 #147
2024/03/19-09:13:11.469442 7fe18fe006c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/10/10-14:47:37.382454 7fb8bb7fe6c0 Recovering log #100
2023/10/10-14:47:37.442416 7fb8bb7fe6c0 Delete type=3 #98
2023/10/10-14:47:37.442914 7fb8bb7fe6c0 Delete type=0 #100
2023/10/10-15:44:02.530318 7fb8b97fa6c0 Level-0 table #105: started
2023/10/10-15:44:02.530361 7fb8b97fa6c0 Level-0 table #105: 0 bytes OK
2023/10/10-15:44:02.600527 7fb8b97fa6c0 Delete type=0 #103
2023/10/10-15:44:02.600692 7fb8b97fa6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
2024/03/19-08:26:23.614041 7fe1974006c0 Recovering log #140
2024/03/19-08:26:23.624059 7fe1974006c0 Delete type=3 #138
2024/03/19-08:26:23.624114 7fe1974006c0 Delete type=0 #140
2024/03/19-08:59:38.622981 7fe18fe006c0 Level-0 table #145: started
2024/03/19-08:59:38.623003 7fe18fe006c0 Level-0 table #145: 0 bytes OK
2024/03/19-08:59:38.629342 7fe18fe006c0 Delete type=0 #143
2024/03/19-08:59:38.636106 7fe18fe006c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)

View File

@ -1265,6 +1265,7 @@ ul, li {
min-width: 12rem;
}
.item-name-label-short {
margin-top: 4px;
flex-grow:1;
max-width: 4rem;
min-width: 4rem;
@ -1275,6 +1276,16 @@ ul, li {
max-width: 6rem;
min-width: 6rem;
}
.item-name-label-medium2 {
margin-top: 4px;
flex-grow:0;
max-width: 10rem;
min-width: 10rem;
}
.item-name-label-free {
margin-top: 4px;
align-self: flex-start;
}
.item-name-label-long2 {
margin-top: 4px;
flex-grow:2;
@ -1287,10 +1298,17 @@ ul, li {
min-width: 9rem;
}
.item-field-label-short {
margin-top: 4px;
flex-grow:1;
max-width: 4rem;
min-width: 4rem;
}
.item-field-label-short-header {
margin-top: 4px;
flex-grow:1;
max-width: 2.2rem;
min-width: 2.2rem;
}
.item-field-label-medium {
flex-grow:1;
max-width: 6rem;
@ -1331,6 +1349,11 @@ ul, li {
.flexrow-no-expand {
flex-grow: 0;
}
.flexrow-start {
justify-content: flex-start;
align-content: flex-start;
align-self: flex-start;
}
.item-input-small {
max-width: 16px;
max-height: 12px;

View File

@ -1245,6 +1245,7 @@ ul, li {
min-width: 12rem;
}
.item-name-label-short {
margin-top: 4px;
flex-grow:1;
max-width: 4rem;
min-width: 4rem;
@ -1255,6 +1256,16 @@ ul, li {
max-width: 6rem;
min-width: 6rem;
}
.item-name-label-medium2 {
margin-top: 4px;
flex-grow:0;
max-width: 10rem;
min-width: 10rem;
}
.item-name-label-free {
margin-top: 4px;
align-self: flex-start;
}
.item-name-label-long2 {
margin-top: 4px;
flex-grow:2;
@ -1267,10 +1278,17 @@ ul, li {
min-width: 9rem;
}
.item-field-label-short {
margin-top: 4px;
flex-grow:1;
max-width: 4rem;
min-width: 4rem;
}
.item-field-label-short-header {
margin-top: 4px;
flex-grow:1;
max-width: 2.2rem;
min-width: 2.2rem;
}
.item-field-label-medium {
flex-grow:1;
max-width: 6rem;
@ -1311,6 +1329,11 @@ ul, li {
.flexrow-no-expand {
flex-grow: 0;
}
.flexrow-start {
justify-content: flex-start;
align-content: flex-start;
align-self: flex-start;
}
.item-input-small {
max-width: 16px;
max-height: 12px;

View File

@ -62,6 +62,18 @@
"ASSISTANT": "OWNER"
}
},
{
"label": "Scenes",
"type": "Scene",
"name": "scenes",
"path": "packs/scenes",
"system": "fvtt-ecryme",
"flags": {},
"ownership": {
"PLAYER": "OBSERVER",
"ASSISTANT": "OWNER"
}
},
{
"label": "Maneuvers",
"type": "Item",
@ -111,7 +123,7 @@
},
"title": "Ecryme, le Jeu de Rôles",
"url": "https://www.uberwald.me/gitea/public/fvtt-ecryme",
"version": "11.0.36",
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v11.0.36.zip",
"version": "11.1.0",
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v11.1.0.zip",
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
}

View File

@ -28,6 +28,7 @@
"skills": {
"physical": {
"name": "ECRY.ui.physical",
"pnjvalue": 0,
"skilllist": {
"athletics": {
"name": "ECRY.ui.athletics",
@ -58,6 +59,7 @@
},
"mental": {
"name": "ECRY.ui.mental",
"pnjvalue": 0,
"skilllist": {
"anthropomecanology": {
"name": "ECRY.ui.anthropomecanology",
@ -88,6 +90,7 @@
},
"social": {
"name": "ECRY.ui.social",
"pnjvalue": 0,
"skilllist": {
"quibbling": {
"name": "ECRY.ui.quibbling",

View File

@ -15,29 +15,40 @@
<div class="flexrow">
<ul>
<li class="flexrow item" data-item-id="{{spleen.id}}">
<label class="item-name-label-medium">Spleen :</label>
<label class="item-field-label-short">Spleen :</label>
<label class="item-name-label-long">{{spleen.name}}</label>
<div class="item-filler">&nbsp;</div>
{{#if spleen}}
<div class="item-controls item-controls-fixed-full">
<a class="item-control item-add" data-type="trait" title="Create Trait"><i class="fas fa-plus"></i></a>
<a class="item-control item-add" data-type="trait" title="Create Trait"><i
class="fas fa-plus"></i></a>
<a class="item-control item-edit" data-type="trait" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-add" data-type="trait" title="Delete Item"><i class="fas fa-trash"></i></a>
<a class="item-control item-add" data-type="trait" title="Delete Item"><i
class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
<li class="item flexrow" data-item-id="{{ideal.id}}">
<label class="item-name-label-medium">Ideal :</label>
<label class="item-field-label-short">Ideal :</label>
<label class="item-name-label-long">{{ideal.name}}</label>
<div class="item-filler">&nbsp;</div>
{{#if ideal}}
<div class="item-controls item-controls-fixed-full">
<a class="item-control item-add" data-type="trait" title="Create Trait"><i class="fas fa-plus"></i></a>
<a class="item-control item-add" data-type="trait" title="Create Trait"><i
class="fas fa-plus"></i></a>
<a class="item-control item-edit" data-type="trait" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-add" data-type="trait" title="Delete Item"><i class="fas fa-trash"></i></a>
<a class="item-control item-add" data-type="trait" title="Delete Item"><i
class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
<li class="item flexrow flexrow-no-expand flexrow-start ">
<label class="item-name-label-short">Traits :</label>
{{#each traits as |trait key|}}
<label class="item-name-label-free"><a data-item-id="{{trait._id}}" class="item-edit">{{trait.name}}</a>,&nbsp;</label>
{{/each}}
</li>
</ul>
</div>
@ -74,10 +85,33 @@
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header impact-title">
<h3><label class="items-title-text">{{localize category.name}} ({{valueAtIndex @root.impactsMalus
categkey}})</label></h3>
<h3>
{{#if (eq @root.type "npc")}}
<a class="roll-skill-confront" data-category-key="{{categkey}}" data-skill-key="rawnpc">
<i class="fa-regular fa-swords"></i>
</a>
<a class="roll-skill" data-category-key="{{categkey}}" data-skill-key="rawnpc">
<i class="fa-solid fa-dice-d6"></i>
{{/if}}
<label class="items-title-text">{{localize category.name}} ({{valueAtIndex @root.impactsMalus
categkey}})</label>
{{#if (eq @root.type "npc")}}
</a>
<select class="item-field-label-short-header" type="text"
name="system.skills.{{categkey}}.pnjvalue" value="{{category.pnjvalue}}"
data-dtype="Number">
{{#select category.pnjvalue}}
{{#each @root.config.skillLevel as |level key| }}
<option value="{{level}}">{{level}}</option>
{{/each}}
{{/select}}
</select>
{{/if}}
</h3>
</span>
</li>
{{#each category.skilllist as |skill skillkey|}}
<li class="item flexrow list-item">
<span class="item-name-label-long">
@ -102,7 +136,8 @@
<ul class="ul-level1">
{{#each skill.spec as |spec idx|}}
<li class="item flexrow list-item" data-item-id="{{spec._id}}" data-item-type="specialization">
<a class="roll-spec" data-category-key="{{categkey}}" data-skill-key="{{skillkey}}" data-spec-id="{{spec._id}}">
<a class="roll-spec" data-category-key="{{categkey}}" data-skill-key="{{skillkey}}"
data-spec-id="{{spec._id}}">
<i class="fa-solid fa-dice-d6"></i>
{{spec.name}}
</a>
@ -157,7 +192,8 @@
<div>
{{#if annency}}
<h3>{{localize "ECRY.ui.annency"}} : <a class="open-annency" data-annency-id="{{annency.id}}">{{annency.name}}<i class="fas fa-edit"></i></a></h3>
<h3>{{localize "ECRY.ui.annency"}} : <a class="open-annency"
data-annency-id="{{annency.id}}">{{annency.name}}<i class="fas fa-edit"></i></a></h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-long">

View File

@ -40,7 +40,14 @@
<li>{{localize "ECRY.chat.bonusmalustraits"}}: {{bonusMalusTraits}} </li>
{{/if}}
{{#if (isGM)}}
{{else}}
<li>{{localize "ECRY.ui.execution"}} : {{executionTotal}}</li>
<li>{{localize "ECRY.ui.preservation"}} : {{preservationTotal}}</li>
{{/if}}
</ul>
{{#if (isGM)}}
{{#if (eq mode "cephaly")}}
<div>
@ -55,6 +62,10 @@
{{else}}
<button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button>
{{/if}}
{{else}}
<div>
{{localize "ECRY.chat.sentogm"}}
</div>
{{/if}}
</div>

View File

@ -2,6 +2,18 @@
"label": "Equipement",
"mapping": {
"description": "system.description"
},
"folders": {
"Armor": "Armure",
"Weapons": "Armes",
"Clothing": "Vêtements",
"Food": "Nourriture",
"Lighting": "Eclairage",
"Miscellany" : "Divers",
"Musical instruments": "Instruments de musique",
"Reading, writing, recording": "Lecture, écriture, enregistrement",
"Travel equipment": "Equipement de voyage",
"Vehicle": "Véhicule"
},
"entries": {
"Absinthe": {

View File

@ -2,6 +2,11 @@
"label": "Spécialisation",
"mapping": {
"description": "system.description"
},
"folders": {
"Mental": "Mentale",
"Physical": "Physique",
"Spocial": "Sociale"
},
"entries": {
"Aircraft": {

View File

@ -2,6 +2,9 @@
"label": "Traits",
"mapping": {
"description": "system.description"
},
"folders": {
"Maneuvers": "Manoeuvres"
},
"entries": {
"Ability to stay calm": {