Compare commits

...

3 Commits

40 changed files with 175 additions and 108 deletions

View File

@ -1,10 +1,12 @@
# Ecryme v2 system for FoundryVTT (French RPG, Open Sesam Games, Official) # 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. 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 You can join the kickstarter and obtain the base books here : https://www.kickstarter.com/projects/osg-us/ecryme
# System overview # System overview
The game system in Foundry offers the following features : The game system in Foundry offers the following features :
- PC/NPC sheet - PC/NPC sheet
- Skill rolls - Skill rolls

View File

@ -1,3 +1,9 @@
v11.0.36
- Enable deletion specialization
- Custome bonus for specializations
- Specialization direct rolls
v11.0.31 v11.0.31
Add profession, fix equipment tab and add missing translation Add profession, fix equipment tab and add missing translation

View File

@ -33,7 +33,9 @@
"traitbonus": "Bonus trait", "traitbonus": "Bonus trait",
"traitmalus": "Malus trait", "traitmalus": "Malus trait",
"bonusmalustraits": "Traits Bonus/Malus", "bonusmalustraits": "Traits Bonus/Malus",
"spectranscend": "Self-Transcend : " "spectranscend": "Self-Transcend : ",
"confrontselect": "Selected for confrontation",
"sentogm": "Confrontation has been sent to GM"
}, },
"rule": { "rule": {
"cephaly-success-2": "Duration : 1 scene - Impact : Superficial - Bonus : 1 - Elegy : 1", "cephaly-success-2": "Duration : 1 scene - Impact : Superficial - Bonus : 1 - Elegy : 1",
@ -165,7 +167,8 @@
"bornplace": "Born place", "bornplace": "Born place",
"residence": "Residence", "residence": "Residence",
"origin": "Origin", "origin": "Origin",
"childhood": "Childhood" "childhood": "Childhood",
"bonus": "Bonus"
} }
} }
} }

View File

@ -33,7 +33,9 @@
"traitbonus": "Trait bonus", "traitbonus": "Trait bonus",
"traitmalus": "Trait malus", "traitmalus": "Trait malus",
"bonusmalustraits": "Bonus/Malus des Traits", "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": { "rule": {
"cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1", "cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1",
@ -166,7 +168,8 @@
"bornplace": "Lieu de naissance", "bornplace": "Lieu de naissance",
"residence": "Résidence", "residence": "Résidence",
"origin": "Origine", "origin": "Origine",
"childhood": "Enfance" "childhood": "Enfance",
"bonus": "Bonus"
} }
} }
} }

View File

@ -129,6 +129,12 @@ export class EcrymeActorSheet extends ActorSheet {
let skillKey = $(event.currentTarget).data("skill-key") let skillKey = $(event.currentTarget).data("skill-key")
this.actor.rollSkill(categKey, skillKey) this.actor.rollSkill(categKey, skillKey)
}); });
html.find('.roll-spec').click((event) => {
let categKey = $(event.currentTarget).data("category-key")
let skillKey = $(event.currentTarget).data("skill-key")
let specId = $(event.currentTarget).data("spec-id")
this.actor.rollSpec(categKey, skillKey, specId)
});
html.find('.roll-skill-confront').click((event) => { html.find('.roll-skill-confront').click((event) => {
let categKey = $(event.currentTarget).data("category-key") let categKey = $(event.currentTarget).data("category-key")
let skillKey = $(event.currentTarget).data("skill-key") let skillKey = $(event.currentTarget).data("skill-key")

View File

@ -410,6 +410,17 @@ export class EcrymeActor extends Actor {
this.startRoll(rollData).catch("Error on startRoll") this.startRoll(rollData).catch("Error on startRoll")
} }
/* -------------------------------------------- */
rollSpec(categKey, skillKey, specId) {
let rollData = this.getCommonSkill(categKey, skillKey)
let spec = this.items.find(it => it.type == "specialization" && it.id == specId)
rollData.mode = "skill"
rollData.selectedSpecs = [spec.id]
rollData.forcedSpec = duplicate(spec)
rollData.title = game.i18n.localize(rollData.skill.name)
this.startRoll(rollData).catch("Error on startRoll")
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollSkillConfront(categKey, skillKey) { async rollSkillConfront(categKey, skillKey) {
let rollData = this.getCommonSkill(categKey, skillKey) let rollData = this.getCommonSkill(categKey, skillKey)

View File

@ -300,6 +300,7 @@ export class EcrymeUtility {
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"))
EcrymeUtility.manageConfrontation(rollData) EcrymeUtility.manageConfrontation(rollData)
}) })
html.on("click", '.button-apply-cephaly-difficulty', event => { html.on("click", '.button-apply-cephaly-difficulty', event => {
@ -409,10 +410,15 @@ export class EcrymeUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async onSocketMesssage(msg) { static async onSocketMesssage(msg) {
console.log("SOCKET MESSAGE", msg.name) console.log("SOCKET MESSAGE", msg)
if (msg.name == "msg-draw-card") { if (msg.name == "msg_gm_chat_message") {
if (game.user.isGM && game.system.ecryme.currentTirage) { let rollData = msg.data.rollData
game.system.ecryme.currentTirage.addCard(msg.data.msgId) 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)
} }
} }
} }
@ -516,7 +522,7 @@ export class EcrymeUtility {
} }
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) { if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
rollData.spec = actor.getSpecialization(rollData.selectedSpecs[0]) rollData.spec = actor.getSpecialization(rollData.selectedSpecs[0])
diceFormula += "+2" diceFormula += "+" + (String(rollData.spec.system?.bonus) || "2")
} }
rollData.bonusMalusTraits = 0 rollData.bonusMalusTraits = 0
if (rollData.traitsBonus && rollData.traitsBonus.length > 0) { if (rollData.traitsBonus && rollData.traitsBonus.length > 0) {
@ -631,12 +637,10 @@ export class EcrymeUtility {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static blindMessageToGM(chatOptions) { static blindMessageToGM(chatData) {
let chatGM = duplicate(chatOptions); chatData.whisper = this.getUsers(user => user.isGM);
chatGM.whisper = this.getUsers(user => user.isGM); console.log("blindMessageToGM", chatData);
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content; game.socket.emit("system.fvtt-ecryme", { name: "msg_gm_chat_message", data: chatData });
console.log("blindMessageToGM", chatGM);
game.socket.emit("system.fvtt-ecryme", { msg: "msg_gm_chat_message", data: chatGM });
} }
@ -662,12 +666,8 @@ export class EcrymeUtility {
switch (rollMode) { switch (rollMode) {
case "blindroll": // GM only case "blindroll": // GM only
if (!game.user.isGM) { if (!game.user.isGM) {
this.blindMessageToGM(chatOptions);
chatOptions.whisper = [game.user.id]; chatOptions.whisper = [game.user.id];
chatOptions.content = "Message only to the GM"; } else {
}
else {
chatOptions.whisper = this.getUsers(user => user.isGM); chatOptions.whisper = this.getUsers(user => user.isGM);
} }
break; break;

View File

@ -50,6 +50,7 @@ export class EcrymeConfrontDialog extends Dialog {
let msg = await EcrymeUtility.createChatMessage(this.rollData.alias, "blindroll", { let msg = await EcrymeUtility.createChatMessage(this.rollData.alias, "blindroll", {
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-confrontation-pending.hbs`, this.rollData) 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) console.log("MSG", this.rollData)
msg.setFlag("world", "ecryme-rolldata", this.rollData) msg.setFlag("world", "ecryme-rolldata", this.rollData)
} }
@ -83,12 +84,23 @@ export class EcrymeConfrontDialog extends Dialog {
setTimeout(function () { $(".launchConfront").attr("disabled", button) }, 180) 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) { _onDragStart(event) {
console.log("DRAGSTART::::", event)
super._onDragStart(event) super._onDragStart(event)
let dragType = $(event.srcElement).data("drag-type") let dragType = $(event.srcElement).data("drag-type")
let diceData = {} let diceData = {}
//console.log("DRAGTYPE", dragType) console.log("DRAGTYPE", dragType)
if (dragType == "dice") { if (dragType == "dice") {
diceData = { diceData = {
dragType: "dice", dragType: "dice",
@ -111,7 +123,7 @@ export class EcrymeConfrontDialog extends Dialog {
let data = JSON.parse(dataJSON) let data = JSON.parse(dataJSON)
if ( data.dragType == "dice") { if ( data.dragType == "dice") {
let idx = Number(data.diceIndex) 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") && if (event.srcElement.className.includes("execution") &&
this.rollData.availableDices.filter(d => d.location == "execution").length < 2) { this.rollData.availableDices.filter(d => d.location == "execution").length < 2) {
this.rollData.availableDices[idx].location = "execution" this.rollData.availableDices[idx].location = "execution"

View File

@ -1 +1 @@
MANIFEST-000090 MANIFEST-000110

View File

@ -1,7 +1,7 @@
2023/08/25-09:06:43.291745 7f42affff6c0 Recovering log #88 2023/10/11-23:48:51.541808 7ffafd7f96c0 Recovering log #108
2023/08/25-09:06:43.308894 7f42affff6c0 Delete type=3 #86 2023/10/11-23:48:51.552684 7ffafd7f96c0 Delete type=3 #106
2023/08/25-09:06:43.308951 7f42affff6c0 Delete type=0 #88 2023/10/11-23:48:51.552736 7ffafd7f96c0 Delete type=0 #108
2023/08/25-09:09:02.388289 7f42ae7fc6c0 Level-0 table #93: started 2023/10/12-08:26:09.141923 7ff865e026c0 Level-0 table #113: started
2023/08/25-09:09:02.388354 7f42ae7fc6c0 Level-0 table #93: 0 bytes OK 2023/10/12-08:26:09.141979 7ff865e026c0 Level-0 table #113: 0 bytes OK
2023/08/25-09:09:02.396757 7f42ae7fc6c0 Delete type=0 #91 2023/10/12-08:26:09.148564 7ff865e026c0 Delete type=0 #111
2023/08/25-09:09:02.413788 7f42ae7fc6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end) 2023/10/12-08:26:09.156649 7ff865e026c0 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/08/25-08:56:40.355200 7f45449ff6c0 Recovering log #84 2023/10/10-15:44:15.214470 7fb8baffd6c0 Recovering log #104
2023/08/25-08:56:40.368438 7f45449ff6c0 Delete type=3 #82 2023/10/10-15:44:15.228942 7fb8baffd6c0 Delete type=3 #102
2023/08/25-08:56:40.368595 7f45449ff6c0 Delete type=0 #84 2023/10/10-15:44:15.229018 7fb8baffd6c0 Delete type=0 #104
2023/08/25-09:05:19.712351 7f42ae7fc6c0 Level-0 table #89: started 2023/10/10-16:47:17.816560 7fb8b97fa6c0 Level-0 table #109: started
2023/08/25-09:05:19.712385 7f42ae7fc6c0 Level-0 table #89: 0 bytes OK 2023/10/10-16:47:17.816585 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/08/25-09:05:19.719168 7f42ae7fc6c0 Delete type=0 #87 2023/10/10-16:47:17.822797 7fb8b97fa6c0 Delete type=0 #107
2023/08/25-09:05:19.719526 7f42ae7fc6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end) 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)

View File

@ -1 +1 @@
MANIFEST-000026 MANIFEST-000046

View File

@ -1,8 +1,8 @@
2023/08/25-09:06:43.332086 7f42affff6c0 Recovering log #24 2023/10/11-23:48:51.581592 7ffafdffa6c0 Recovering log #44
2023/08/25-09:06:43.343333 7f42affff6c0 Delete type=3 #22 2023/10/11-23:48:51.591855 7ffafdffa6c0 Delete type=3 #42
2023/08/25-09:06:43.343425 7f42affff6c0 Delete type=0 #24 2023/10/11-23:48:51.591921 7ffafdffa6c0 Delete type=0 #44
2023/08/25-09:09:02.413816 7f42ae7fc6c0 Level-0 table #29: started 2023/10/12-08:26:09.156682 7ff865e026c0 Level-0 table #49: started
2023/08/25-09:09:02.413868 7f42ae7fc6c0 Level-0 table #29: 0 bytes OK 2023/10/12-08:26:09.156770 7ff865e026c0 Level-0 table #49: 0 bytes OK
2023/08/25-09:09:02.420658 7f42ae7fc6c0 Delete type=0 #27 2023/10/12-08:26:09.164722 7ff865e026c0 Delete type=0 #47
2023/08/25-09:09:02.420945 7f42ae7fc6c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2023/10/12-08:26:09.174057 7ff865e026c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2023/08/25-09:09:02.420984 7f42ae7fc6c0 Manual compaction at level-1 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2023/10/12-08:26:09.174129 7ff865e026c0 Manual compaction at level-1 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/25-08:56:40.391655 7f45449ff6c0 Recovering log #20 2023/10/10-15:44:15.264794 7fb8bb7fe6c0 Recovering log #40
2023/08/25-08:56:40.402088 7f45449ff6c0 Delete type=3 #18 2023/10/10-15:44:15.274945 7fb8bb7fe6c0 Delete type=3 #38
2023/08/25-08:56:40.402156 7f45449ff6c0 Delete type=0 #20 2023/10/10-15:44:15.275026 7fb8bb7fe6c0 Delete type=0 #40
2023/08/25-09:05:19.719759 7f42ae7fc6c0 Level-0 table #25: started 2023/10/10-16:47:17.838950 7fb8b97fa6c0 Level-0 table #45: started
2023/08/25-09:05:19.719808 7f42ae7fc6c0 Level-0 table #25: 0 bytes OK 2023/10/10-16:47:17.838969 7fb8b97fa6c0 Level-0 table #45: 0 bytes OK
2023/08/25-09:05:19.726375 7f42ae7fc6c0 Delete type=0 #23 2023/10/10-16:47:17.846123 7fb8b97fa6c0 Delete type=0 #43
2023/08/25-09:05:19.739729 7f42ae7fc6c0 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.846349 7fb8b97fa6c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2023/08/25-09:05:19.739776 7f42ae7fc6c0 Manual compaction at level-1 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)

View File

@ -1 +1 @@
MANIFEST-000090 MANIFEST-000110

View File

@ -1,7 +1,7 @@
2023/08/25-09:06:43.313751 7f45449ff6c0 Recovering log #88 2023/10/11-23:48:51.568912 7ff867fff6c0 Recovering log #108
2023/08/25-09:06:43.332919 7f45449ff6c0 Delete type=3 #86 2023/10/11-23:48:51.579440 7ff867fff6c0 Delete type=3 #106
2023/08/25-09:06:43.332977 7f45449ff6c0 Delete type=0 #88 2023/10/11-23:48:51.579511 7ff867fff6c0 Delete type=0 #108
2023/08/25-09:09:02.396939 7f42ae7fc6c0 Level-0 table #93: started 2023/10/12-08:26:09.164906 7ff865e026c0 Level-0 table #113: started
2023/08/25-09:09:02.396976 7f42ae7fc6c0 Level-0 table #93: 0 bytes OK 2023/10/12-08:26:09.164969 7ff865e026c0 Level-0 table #113: 0 bytes OK
2023/08/25-09:09:02.405091 7f42ae7fc6c0 Delete type=0 #91 2023/10/12-08:26:09.173679 7ff865e026c0 Delete type=0 #111
2023/08/25-09:09:02.420883 7f42ae7fc6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end) 2023/10/12-08:26:09.174093 7ff865e026c0 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/08/25-08:56:40.374817 7f42aeffd6c0 Recovering log #84 2023/10/10-15:44:15.251468 7fb8ba7fc6c0 Recovering log #104
2023/08/25-08:56:40.392507 7f42aeffd6c0 Delete type=3 #82 2023/10/10-15:44:15.263005 7fb8ba7fc6c0 Delete type=3 #102
2023/08/25-08:56:40.392560 7f42aeffd6c0 Delete type=0 #84 2023/10/10-15:44:15.263083 7fb8ba7fc6c0 Delete type=0 #104
2023/08/25-09:05:19.732932 7f42ae7fc6c0 Level-0 table #89: started 2023/10/10-16:47:17.832601 7fb8b97fa6c0 Level-0 table #109: started
2023/08/25-09:05:19.732977 7f42ae7fc6c0 Level-0 table #89: 0 bytes OK 2023/10/10-16:47:17.832642 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/08/25-09:05:19.739465 7f42ae7fc6c0 Delete type=0 #87 2023/10/10-16:47:17.838860 7fb8b97fa6c0 Delete type=0 #107
2023/08/25-09:05:19.739765 7f42ae7fc6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end) 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)

View File

@ -1 +1 @@
MANIFEST-000090 MANIFEST-000110

View File

@ -1,7 +1,7 @@
2023/08/25-09:06:43.291938 7f42aeffd6c0 Recovering log #88 2023/10/11-23:48:51.528323 7ffafdffa6c0 Recovering log #108
2023/08/25-09:06:43.311799 7f42aeffd6c0 Delete type=3 #86 2023/10/11-23:48:51.539236 7ffafdffa6c0 Delete type=3 #106
2023/08/25-09:06:43.311854 7f42aeffd6c0 Delete type=0 #88 2023/10/11-23:48:51.539371 7ffafdffa6c0 Delete type=0 #108
2023/08/25-09:09:02.334209 7f42ae7fc6c0 Level-0 table #93: started 2023/10/12-08:26:09.134584 7ff865e026c0 Level-0 table #113: started
2023/08/25-09:09:02.334296 7f42ae7fc6c0 Level-0 table #93: 0 bytes OK 2023/10/12-08:26:09.134646 7ff865e026c0 Level-0 table #113: 0 bytes OK
2023/08/25-09:09:02.346293 7f42ae7fc6c0 Delete type=0 #91 2023/10/12-08:26:09.141658 7ff865e026c0 Delete type=0 #111
2023/08/25-09:09:02.364301 7f42ae7fc6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end) 2023/10/12-08:26:09.148759 7ff865e026c0 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/08/25-08:56:40.355478 7f42affff6c0 Recovering log #84 2023/10/10-15:44:15.196298 7fb8bb7fe6c0 Recovering log #104
2023/08/25-08:56:40.372234 7f42affff6c0 Delete type=3 #82 2023/10/10-15:44:15.211750 7fb8bb7fe6c0 Delete type=3 #102
2023/08/25-08:56:40.372332 7f42affff6c0 Delete type=0 #84 2023/10/10-15:44:15.211839 7fb8bb7fe6c0 Delete type=0 #104
2023/08/25-09:05:19.704735 7f42ae7fc6c0 Level-0 table #89: started 2023/10/10-16:47:17.809484 7fb8b97fa6c0 Level-0 table #109: started
2023/08/25-09:05:19.704765 7f42ae7fc6c0 Level-0 table #89: 0 bytes OK 2023/10/10-16:47:17.809511 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/08/25-09:05:19.712218 7f42ae7fc6c0 Delete type=0 #87 2023/10/10-16:47:17.816437 7fb8b97fa6c0 Delete type=0 #107
2023/08/25-09:05:19.719509 7f42ae7fc6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end) 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)

View File

@ -1 +1 @@
MANIFEST-000090 MANIFEST-000110

View File

@ -1,7 +1,7 @@
2023/08/25-09:06:43.312129 7f42af7fe6c0 Recovering log #88 2023/10/11-23:48:51.555605 7ffafcff86c0 Recovering log #108
2023/08/25-09:06:43.329832 7f42af7fe6c0 Delete type=3 #86 2023/10/11-23:48:51.566715 7ffafcff86c0 Delete type=3 #106
2023/08/25-09:06:43.329881 7f42af7fe6c0 Delete type=0 #88 2023/10/11-23:48:51.566824 7ffafcff86c0 Delete type=0 #108
2023/08/25-09:09:02.405626 7f42ae7fc6c0 Level-0 table #93: started 2023/10/12-08:26:09.148992 7ff865e026c0 Level-0 table #113: started
2023/08/25-09:09:02.405697 7f42ae7fc6c0 Level-0 table #93: 0 bytes OK 2023/10/12-08:26:09.149043 7ff865e026c0 Level-0 table #113: 0 bytes OK
2023/08/25-09:09:02.413585 7f42ae7fc6c0 Delete type=0 #91 2023/10/12-08:26:09.156386 7ff865e026c0 Delete type=0 #111
2023/08/25-09:09:02.420919 7f42ae7fc6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end) 2023/10/12-08:26:09.173997 7ff865e026c0 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/08/25-08:56:40.373273 7f42af7fe6c0 Recovering log #84 2023/10/10-15:44:15.233698 7fb8b9ffb6c0 Recovering log #104
2023/08/25-08:56:40.389363 7f42af7fe6c0 Delete type=3 #82 2023/10/10-15:44:15.249165 7fb8b9ffb6c0 Delete type=3 #102
2023/08/25-08:56:40.389459 7f42af7fe6c0 Delete type=0 #84 2023/10/10-15:44:15.249275 7fb8b9ffb6c0 Delete type=0 #104
2023/08/25-09:05:19.726495 7f42ae7fc6c0 Level-0 table #89: started 2023/10/10-16:47:17.823003 7fb8b97fa6c0 Level-0 table #109: started
2023/08/25-09:05:19.726528 7f42ae7fc6c0 Level-0 table #89: 0 bytes OK 2023/10/10-16:47:17.823041 7fb8b97fa6c0 Level-0 table #109: 0 bytes OK
2023/08/25-09:05:19.732766 7f42ae7fc6c0 Delete type=0 #87 2023/10/10-16:47:17.832350 7fb8b97fa6c0 Delete type=0 #107
2023/08/25-09:05:19.739752 7f42ae7fc6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end) 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)

View File

@ -111,7 +111,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": "11.0.35", "version": "11.0.37",
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v11.0.35.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v11.0.37.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

@ -267,6 +267,7 @@
"effect": 0 "effect": 0
}, },
"specialization": { "specialization": {
"bonus": 2,
"templates": [ "templates": [
"common" "common"
], ],

View File

@ -102,15 +102,15 @@
<ul class="ul-level1"> <ul class="ul-level1">
{{#each skill.spec as |spec idx|}} {{#each skill.spec as |spec idx|}}
<li class="item flexrow list-item" data-item-id="{{spec._id}}" data-item-type="specialization"> <li class="item flexrow list-item" data-item-id="{{spec._id}}" data-item-type="specialization">
<a class="roll-spec" 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> <i class="fa-solid fa-dice-d6"></i>
{{spec.name}} {{spec.name}}
</a> </a>
<div class="item-controls item-controls-fixed"> <div class="item-controls item-controls-fixed">
<a class="item-control item-edit" data-type="specialization" title="Edit Item"><i <a class="item-control item-edit" data-type="specialization" title="Edit Item"><i
class="fas fa-edit"></i></a> class="fas fa-edit"></i></a>
<a class="item-control item-add" data-type="specialization" title="Delete Item"><i <a class="item-control item-delete" data-type="specialization" title="Delete Item"><i
class="fas fa-plus"></i></a> class="fas fa-trash"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@ -23,7 +23,7 @@
<li>{{localize skill.name}}: {{skill.value}} </li> <li>{{localize skill.name}}: {{skill.value}} </li>
{{#if spec}} {{#if spec}}
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+2) </li> <li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+{{spec.system.bonus}}) </li>
{{/if}} {{/if}}
{{#each traitsBonus as |trait idx|}} {{#each traitsBonus as |trait idx|}}
@ -40,7 +40,14 @@
<li>{{localize "ECRY.chat.bonusmalustraits"}}: {{bonusMalusTraits}} </li> <li>{{localize "ECRY.chat.bonusmalustraits"}}: {{bonusMalusTraits}} </li>
{{/if}} {{/if}}
{{#if (isGM)}}
{{else}}
<li>{{localize "ECRY.ui.execution"}} : {{executionTotal}}</li>
<li>{{localize "ECRY.ui.preservation"}} : {{preservationTotal}}</li>
{{/if}}
</ul> </ul>
{{#if (isGM)}} {{#if (isGM)}}
{{#if (eq mode "cephaly")}} {{#if (eq mode "cephaly")}}
<div> <div>
@ -55,6 +62,10 @@
{{else}} {{else}}
<button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button> <button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button>
{{/if}} {{/if}}
{{else}}
<div>
{{localize "ECRY.chat.sentogm"}}
</div>
{{/if}} {{/if}}
</div> </div>

View File

@ -21,7 +21,7 @@
{{#if skill}} {{#if skill}}
<li>{{localize skill.name}}: {{skill.value}} </li> <li>{{localize skill.name}}: {{skill.value}} </li>
{{#if spec}} {{#if spec}}
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+2) </li> <li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+{{spec.system.bonus}}) </li>
{{/if}} {{/if}}
{{/if}} {{/if}}

View File

@ -22,14 +22,21 @@
</select> </select>
</div> </div>
{{#if forcedSpec}}
<div class="flexrow">
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
<span class="roll-dialog-label">{{forcedSpec.name}} (+{{forcedSpec.system.bonus}})</span>
</div>
{{else}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span> <span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
<select class="" id="roll-specialization" data-type="String" multiple> <select class="" id="roll-specialization" data-type="String" multiple>
{{#each skill.spec as |spec idx|}} {{#each skill.spec as |spec idx|}}
<option value="{{spec.id}}">{{spec.name}}</option> <option value="{{spec.id}}">{{spec.name}} (+{{spec.system.bonus}})</option>
{{/each}} {{/each}}
</select> </select>
</div> </div>
{{/if}}
{{#if spleen}} {{#if spleen}}
<div class="flexrow"> <div class="flexrow">

View File

@ -30,6 +30,11 @@
</select> </select>
</li> </li>
<li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.bonus"}}</label>
<input type="text" class="item-field-label-short" name="system.bonus" value="{{system.bonus}}" data-dtype="Number"/>
</li>
</ul> </ul>
</div> </div>
</div> </div>