Compare commits

..

24 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
0487893f47 Fix v12 issue + remove warnings 2024-04-27 09:33:22 +02:00
d7b7bccbdf Update v11/v12 et correction sur le niveau de jeu 2024-04-26 19:31:30 +02:00
dbf4b17afb Update v11/v12 et correction sur le niveau de jeu 2024-04-26 19:28:57 +02:00
51e5a409c4 Update v11/v12 et correction sur le niveau de jeu 2024-04-26 19:28:28 +02:00
75 changed files with 3309 additions and 2970 deletions

View File

@@ -1,3 +1,8 @@
v12.0.0
- Support Foundry v11/v12
- Correction sur le niveau de jeu par défaut
v11.0.39 v11.0.39
- Modification sur la prise en compte des traits en bonus/malus - Modification sur la prise en compte des traits en bonus/malus

View File

@@ -6,12 +6,12 @@
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() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme", "sheet", "actor"], classes: ["fvtt-ecryme", "sheet", "actor"],
template: "systems/fvtt-ecryme/templates/actors/actor-sheet.hbs", template: "systems/fvtt-ecryme/templates/actors/actor-sheet.hbs",
width: 860, width: 860,
@@ -33,7 +33,7 @@ export class EcrymeActorSheet extends ActorSheet {
name: this.actor.name, name: this.actor.name,
editable: this.isEditable, editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",
system: duplicate(this.object.system), system: foundry.utils.duplicate(this.object.system),
limited: this.object.limited, limited: this.object.limited,
skills: this.actor.prepareSkills(), skills: this.actor.prepareSkills(),
traits: this.actor.getRollTraits(), traits: this.actor.getRollTraits(),
@@ -41,21 +41,21 @@ export class EcrymeActorSheet extends ActorSheet {
ideal: this.actor.getIdeal(), ideal: this.actor.getIdeal(),
spleen: this.actor.getSpleen(), spleen: this.actor.getSpleen(),
impacts: this.object.getImpacts(), impacts: this.object.getImpacts(),
config: duplicate(game.system.ecryme.config), config: foundry.utils.duplicate(game.system.ecryme.config),
weapons: this.actor.getWeapons(), weapons: this.actor.getWeapons(),
maneuvers: this.actor.getManeuvers(), maneuvers: this.actor.getManeuvers(),
impactsMalus: this.actor.getImpactsMalus(), impactsMalus: this.actor.getImpactsMalus(),
archetype: duplicate(this.actor.getArchetype()), archetype: foundry.utils.duplicate(this.actor.getArchetype()),
equipments: this.actor.getEquipments(), equipments: this.actor.getEquipments(),
hasCephaly: EcrymeUtility.hasCephaly(), hasCephaly: EcrymeUtility.hasCephaly(),
hasBoheme: EcrymeUtility.hasBoheme(), hasBoheme: EcrymeUtility.hasBoheme(),
hasAmertume: EcrymeUtility.hasAmertume(), hasAmertume: EcrymeUtility.hasAmertume(),
cephalySkills: this.actor.getCephalySkills(), cephalySkills: this.actor.getCephalySkills(),
subActors: 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

@@ -29,7 +29,7 @@ export class EcrymeActor extends Actor {
if (data instanceof Array) { if (data instanceof Array) {
return super.create(data, options); return super.create(data, options);
} }
// If the created actor has items (only applicable to duplicated actors) bypass the new actor creation logic // If the created actor has items (only applicable to foundry.utils.duplicated actors) bypass the new actor creation logic
if (data.items) { if (data.items) {
let actor = super.create(data, options); let actor = super.create(data, options);
return actor; return actor;
@@ -73,7 +73,7 @@ export class EcrymeActor extends Actor {
return comp; return comp;
} }
getArchetype() { getArchetype() {
let comp = duplicate(this.items.find(item => item.type == 'archetype') || { name: "Pas d'archetype" }) let comp = foundry.utils.duplicate(this.items.find(item => item.type == 'archetype') || { name: "Pas d'archetype" })
if (comp?.system) { if (comp?.system) {
comp.tarot = EcrymeUtility.getTarot(comp.system.lametutelaire) comp.tarot = EcrymeUtility.getTarot(comp.system.lametutelaire)
} }
@@ -92,7 +92,7 @@ export class EcrymeActor extends Actor {
} }
/* ----------------------- --------------------- */ /* ----------------------- --------------------- */
addAnnencyActor(actorId) { addAnnencyActor(actorId) {
let members = duplicate(this.system.base.characters) let members = foundry.utils.duplicate(this.system.base.characters)
members.push(actorId) members.push(actorId)
this.update({ 'system.base.characters': members }) this.update({ 'system.base.characters': members })
} }
@@ -103,7 +103,8 @@ export class EcrymeActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
getAnnency() { getAnnency() {
return game.actors.find(a => a.type == 'annency' && a.system.base.characters.includes(this.id)) let annency = game.actors.find(a => a.type == 'annency' && a.system.base.characters.includes(this.id))
return annency || {}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getConfrontations() { getConfrontations() {
@@ -135,7 +136,7 @@ export class EcrymeActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareSkills() { prepareSkills() {
let skills = duplicate(this.system.skills) let skills = foundry.utils.duplicate(this.system.skills)
for (let categKey in skills) { for (let categKey in skills) {
let category = skills[categKey] let category = skills[categKey]
for (let skillKey in category.skilllist) { for (let skillKey in category.skilllist) {
@@ -147,22 +148,22 @@ export class EcrymeActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getCephalySkills() { getCephalySkills() {
let skills = duplicate(this.system.cephaly.skilllist) let skills = foundry.utils.duplicate(this.system.cephaly.skilllist)
return skills return skills
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getImpacts() { getImpacts() {
let comp = duplicate(this.items.filter(item => item.type == 'impact') || []) let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'impact') || [])
return comp; return comp;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getWeapons() { getWeapons() {
let comp = duplicate(this.items.filter(item => item.type == 'weapon') || []) let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'weapon') || [])
EcrymeUtility.sortArrayObjectsByName(comp) EcrymeUtility.sortArrayObjectsByName(comp)
return comp; return comp;
} }
getManeuvers() { getManeuvers() {
let comp = duplicate(this.items.filter(item => item.type == 'maneuver') || []) let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'maneuver') || [])
EcrymeUtility.sortArrayObjectsByName(comp) EcrymeUtility.sortArrayObjectsByName(comp)
return comp; return comp;
} }
@@ -170,7 +171,7 @@ export class EcrymeActor extends Actor {
getItemById(id) { getItemById(id) {
let item = this.items.find(item => item.id == id); let item = this.items.find(item => item.id == id);
if (item) { if (item) {
item = duplicate(item) item = foundry.utils.duplicate(item)
} }
return item; return item;
} }
@@ -205,7 +206,7 @@ export class EcrymeActor extends Actor {
/* ------------------------------------------- */ /* ------------------------------------------- */
async buildContainerTree() { async buildContainerTree() {
let equipments = duplicate(this.items.filter(item => item.type == "equipment") || []) let equipments = foundry.utils.duplicate(this.items.filter(item => item.type == "equipment") || [])
for (let equip1 of equipments) { for (let equip1 of equipments) {
if (equip1.system.iscontainer) { if (equip1.system.iscontainer) {
equip1.system.contents = [] equip1.system.contents = []
@@ -300,13 +301,13 @@ export class EcrymeActor extends Actor {
getSubActors() { getSubActors() {
let subActors = []; let subActors = [];
for (let id of this.system.subactors) { for (let id of this.system.subactors) {
subActors.push(duplicate(game.actors.get(id))) subActors.push(foundry.utils.duplicate(game.actors.get(id)))
} }
return subActors; return subActors;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async addSubActor(subActorId) { async addSubActor(subActorId) {
let subActors = duplicate(this.system.subactors); let subActors = foundry.utils.duplicate(this.system.subactors);
subActors.push(subActorId); subActors.push(subActorId);
await this.update({ 'system.subactors': subActors }); await this.update({ 'system.subactors': subActors });
} }
@@ -377,9 +378,10 @@ export class EcrymeActor extends Actor {
rollData.actorId = this.id rollData.actorId = this.id
rollData.img = this.img rollData.img = this.img
rollData.isReroll = false rollData.isReroll = false
rollData.traits = duplicate(this.getRollTraits()) rollData.config = game.system.ecryme.config
rollData.spleen = duplicate(this.getSpleen() || {}) rollData.traits = foundry.utils.duplicate(this.getRollTraits())
rollData.ideal = duplicate(this.getIdeal() || {}) rollData.spleen = foundry.utils.duplicate(this.getSpleen() || {})
rollData.ideal = foundry.utils.duplicate(this.getIdeal() || {})
rollData.confrontBonus = this.getBonusList() rollData.confrontBonus = this.getBonusList()
return rollData return rollData
@@ -400,10 +402,15 @@ export class EcrymeActor extends Actor {
} }
} else { } else {
skill = this.system.skills[categKey].skilllist[skillKey] skill = this.system.skills[categKey].skilllist[skillKey]
skill = duplicate(skill) skill = foundry.utils.duplicate(skill)
skill.spec = this.getSpecializations(skillKey) skill.spec = this.getSpecializations(skillKey)
} }
rollData.skillLevelOptions = [];
for (let i=0; i<=skill.value; i++) {
rollData.skillLevelOptions[i] = `${i}`
}
skill.categKey = categKey skill.categKey = categKey
skill.skillKey = skillKey skill.skillKey = skillKey
rollData.skill = skill rollData.skill = skill
@@ -427,7 +434,7 @@ export class EcrymeActor extends Actor {
let spec = this.items.find(it => it.type == "specialization" && it.id == specId) let spec = this.items.find(it => it.type == "specialization" && it.id == specId)
rollData.mode = "skill" rollData.mode = "skill"
rollData.selectedSpecs = [spec.id] rollData.selectedSpecs = [spec.id]
rollData.forcedSpec = duplicate(spec) rollData.forcedSpec = foundry.utils.duplicate(spec)
rollData.title = game.i18n.localize(rollData.skill.name) rollData.title = game.i18n.localize(rollData.skill.name)
this.startRoll(rollData).catch("Error on startRoll") this.startRoll(rollData).catch("Error on startRoll")
} }
@@ -440,8 +447,9 @@ export class EcrymeActor extends Actor {
rollData.executionTotal = rollData.skill.value rollData.executionTotal = rollData.skill.value
rollData.preservationTotal = rollData.skill.value rollData.preservationTotal = rollData.skill.value
rollData.applyTranscendence = "execution" rollData.applyTranscendence = "execution"
rollData.traitsBonus = duplicate(rollData.traits) rollData.traitsBonus = foundry.utils.duplicate(rollData.traits)
rollData.traitsMalus = duplicate(rollData.traits) rollData.traitsMalus = foundry.utils.duplicate(rollData.traits)
console.log("ROLLDATA", rollData)
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData) let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
confrontStartDialog.render(true) confrontStartDialog.render(true)
} }
@@ -449,17 +457,16 @@ export class EcrymeActor extends Actor {
async rollCephalySkillConfront(skillKey) { async rollCephalySkillConfront(skillKey) {
let rollData = this.getCommonRollData() let rollData = this.getCommonRollData()
rollData.mode = "cephaly" rollData.mode = "cephaly"
rollData.skill = duplicate(this.system.cephaly.skilllist[skillKey]) rollData.skill = foundry.utils.duplicate(this.system.cephaly.skilllist[skillKey])
rollData.annency = duplicate(this.getAnnency()) rollData.annency = foundry.utils.duplicate(this.getAnnency())
rollData.img = rollData.skill.img rollData.img = rollData.skill.img
rollData.skill.categKey = "cephaly" rollData.skill.categKey = "cephaly"
rollData.skill.skillKey = skillKey rollData.skill.skillKey = skillKey
//rollData.impactMalus = this.getImpactMalus(categKey)
rollData.title = game.i18n.localize("ECRY.ui.cephaly") + " : " + game.i18n.localize(rollData.skill.name) rollData.title = game.i18n.localize("ECRY.ui.cephaly") + " : " + game.i18n.localize(rollData.skill.name)
rollData.executionTotal = rollData.skill.value rollData.executionTotal = rollData.skill.value
rollData.preservationTotal = rollData.skill.value rollData.preservationTotal = rollData.skill.value
rollData.traitsBonus = duplicate(rollData.traits) rollData.traitsBonus = foundry.utils.duplicate(rollData.traits)
rollData.traitsMalus = duplicate(rollData.traits) rollData.traitsMalus = foundry.utils.duplicate(rollData.traits)
rollData.applyTranscendence = "execution" rollData.applyTranscendence = "execution"
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData) let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
confrontStartDialog.render(true) confrontStartDialog.render(true)
@@ -475,12 +482,12 @@ export class EcrymeActor extends Actor {
rollData = this.getCommonSkill("physical", "shooting") rollData = this.getCommonSkill("physical", "shooting")
} }
rollData.mode = "weapon" rollData.mode = "weapon"
rollData.weapon = duplicate(weapon) rollData.weapon = foundry.utils.duplicate(weapon)
rollData.title = game.i18n.localize("ECRY.ui.confrontation") + " : " + game.i18n.localize(rollData.skill.name) rollData.title = game.i18n.localize("ECRY.ui.confrontation") + " : " + game.i18n.localize(rollData.skill.name)
rollData.executionTotal = rollData.skill.value rollData.executionTotal = rollData.skill.value
rollData.preservationTotal = rollData.skill.value rollData.preservationTotal = rollData.skill.value
rollData.traitsBonus = duplicate(rollData.traits) rollData.traitsBonus = foundry.utils.duplicate(rollData.traits)
rollData.traitsMalus = duplicate(rollData.traits) rollData.traitsMalus = foundry.utils.duplicate(rollData.traits)
rollData.applyTranscendence = "execution" rollData.applyTranscendence = "execution"
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData) let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
confrontStartDialog.render(true) confrontStartDialog.render(true)
@@ -490,12 +497,12 @@ export class EcrymeActor extends Actor {
rollWeapon(weaponId) { rollWeapon(weaponId) {
let weapon = this.items.get(weaponId) let weapon = this.items.get(weaponId)
if (weapon) { if (weapon) {
weapon = duplicate(weapon) weapon = foundry.utils.duplicate(weapon)
let rollData = this.getCommonRollData() let rollData = this.getCommonRollData()
if (weapon.system.armetype == "mainsnues" || weapon.system.armetype == "epee") { if (weapon.system.armetype == "mainsnues" || weapon.system.armetype == "epee") {
rollData.attr = { label: "(Physique+Habilité)/2", value: Math.floor((this.getPhysiqueMalus() + this.system.attributs.physique.value + this.system.attributs.habilite.value) / 2) } rollData.attr = { label: "(Physique+Habilité)/2", value: Math.floor((this.getPhysiqueMalus() + this.system.attributs.physique.value + this.system.attributs.habilite.value) / 2) }
} else { } else {
rollData.attr = duplicate(this.system.attributs.habilite) rollData.attr = foundry.utils.duplicate(this.system.attributs.habilite)
} }
rollData.mode = "weapon" rollData.mode = "weapon"
rollData.weapon = weapon rollData.weapon = weapon

View File

@@ -6,12 +6,12 @@
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() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme", "sheet", "actor"], classes: ["fvtt-ecryme", "sheet", "actor"],
template: "systems/fvtt-ecryme/templates/actors/annency-sheet.hbs", template: "systems/fvtt-ecryme/templates/actors/annency-sheet.hbs",
width: 640, width: 640,
@@ -33,9 +33,9 @@ export class EcrymeAnnencySheet extends ActorSheet {
name: this.actor.name, name: this.actor.name,
editable: this.isEditable, editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",
system: duplicate(this.object.system), system: foundry.utils.duplicate(this.object.system),
limited: this.object.limited, limited: this.object.limited,
config: duplicate(game.system.ecryme.config), config: foundry.utils.duplicate(game.system.ecryme.config),
hasCephaly: EcrymeUtility.hasCephaly(), hasCephaly: EcrymeUtility.hasCephaly(),
hasBoheme: EcrymeUtility.hasBoheme(), hasBoheme: EcrymeUtility.hasBoheme(),
hasAmertume: EcrymeUtility.hasAmertume(), hasAmertume: EcrymeUtility.hasAmertume(),

View File

@@ -43,7 +43,7 @@ export class EcrymeCharacterSummary extends Application {
/* -------------------------------------------- */ /* -------------------------------------------- */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs", template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs",
popOut: true, popOut: true,
resizable: true, resizable: true,

View File

@@ -10,14 +10,14 @@ export const ECRYME_CONFIG = {
"melee": "ECRY.ui.melee", "melee": "ECRY.ui.melee",
"ranged": "ECRY.ui.ranged" "ranged": "ECRY.ui.ranged"
}, },
traitLevel: [ traitLevel: {
{value: -3, text: "-3"}, "-3":{value: "-3", text: "-3"},
{value: -2, text: "-2"}, "-2":{value: "-2", text: "-2"},
{value: -1, text: "-1"}, "-1":{value: "-1", text: "-1"},
{value: +1, text: "+1"}, "+1":{value: "+1", text: "+1"},
{value: +2, text: "+2"}, "+2":{value: "+2", text: "+2"},
{value: +3, text: "+3"} "+3":{value: "+3", text: "+3"}
], },
impactTypes: { impactTypes: {
physical: "ECRY.ui.physical", physical: "ECRY.ui.physical",
mental: "ECRY.ui.mental", mental: "ECRY.ui.mental",
@@ -30,7 +30,7 @@ export const ECRYME_CONFIG = {
major: "ECRY.ui.major" major: "ECRY.ui.major"
}, },
difficulty: { difficulty: {
"-1": {difficulty: "ECRY.ui.none", frequency: "ECRY.ui.none", value: "-"}, "-1": {difficulty: "ECRY.ui.none", frequency: "ECRY.ui.none", value: "-1"},
"8": { difficulty: "ECRY.ui.troublesome", frequency: "ECRY.ui.occasional", value: 8 }, "8": { difficulty: "ECRY.ui.troublesome", frequency: "ECRY.ui.occasional", value: 8 },
"10": { difficulty: "ECRY.ui.difficult", frequency: "ECRY.ui.uncommon", value: 10 }, "10": { difficulty: "ECRY.ui.difficult", frequency: "ECRY.ui.uncommon", value: 10 },
"12": { difficulty: "ECRY.ui.verydifficult", frequency: "ECRY.ui.rare", value: 12 }, "12": { difficulty: "ECRY.ui.verydifficult", frequency: "ECRY.ui.rare", value: 12 },
@@ -57,6 +57,19 @@ export const ECRYME_CONFIG = {
"lige": {name: "ECRY.ui.lige", value: 100 }, "lige": {name: "ECRY.ui.lige", value: 100 },
"hurle": {name: "ECRY.ui.hurle", value: 10 }, "hurle": {name: "ECRY.ui.hurle", value: 10 },
"coin": {name: "ECRY.ui.coin", value: 1 } "coin": {name: "ECRY.ui.coin", value: 1 }
},
transcendanceOptions: {
"execution": "ECRY.ui.execution",
"preservation": "ECRY.ui.preservation"
},
bonusMalusPersoOptions: {
"-3": {value: "-3", label: "-3"},
"-2": {value: "-2", label: "-2"},
"-1": {value: "-1", label: "-1"},
"0": {value: "0", label: "0"},
"+1": {value: "1", label: "+1"},
"+2": {value: "2", label: "+2"},
"+3": {value: "3", label: "+3"}
} }
} }

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 = {}
@@ -97,6 +97,7 @@ export class EcrymeUtility {
"level_b": game.i18n.localize("ECRY.settings.boheme"), "level_b": game.i18n.localize("ECRY.settings.boheme"),
"level_a": game.i18n.localize("ECRY.settings.amertume"), "level_a": game.i18n.localize("ECRY.settings.amertume"),
}, },
default: "level_a",
restricted: true restricted: true
}) })
@@ -126,7 +127,7 @@ export class EcrymeUtility {
for (let categKey in game.data.template.Actor.templates.core.skills) { for (let categKey in game.data.template.Actor.templates.core.skills) {
let category = game.data.template.Actor.templates.core.skills[categKey] let category = game.data.template.Actor.templates.core.skills[categKey]
for (let skillKey in category.skilllist) { for (let skillKey in category.skilllist) {
let skill = duplicate(category.skilllist[skillKey]) let skill = foundry.utils.duplicate(category.skilllist[skillKey])
skill.categKey = categKey // Auto reference the category skill.categKey = categKey // Auto reference the category
game.system.ecryme.config.skills[skillKey] = skill game.system.ecryme.config.skills[skillKey] = skill
} }
@@ -154,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
} }
@@ -215,7 +216,7 @@ export class EcrymeUtility {
confront.impactPreservation = this.getImpactFromEffect(Math.abs(confront.effectPreservation)) confront.impactPreservation = this.getImpactFromEffect(Math.abs(confront.effectPreservation))
} }
if (confront.marginPreservation > 0) { if (confront.marginPreservation > 0) {
confront.bonus1 = -confront.marginPreservation confront.bonus1 = confront.marginPreservation
} }
let msg = await this.createChatWithRollMode(this.confrontData1.alias, { let msg = await this.createChatWithRollMode(this.confrontData1.alias, {
@@ -272,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")
} }
@@ -296,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"))
@@ -338,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);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -404,7 +410,7 @@ export class EcrymeUtility {
let id = rollData.rollId let id = rollData.rollId
let oldRollData = this.rollDataStore[id] || {} let oldRollData = this.rollDataStore[id] || {}
let newRollData = mergeObject(oldRollData, rollData) let newRollData = foundry.utils.mergeObject(oldRollData, rollData)
this.rollDataStore[id] = newRollData this.rollDataStore[id] = newRollData
} }
@@ -557,7 +563,7 @@ export class EcrymeUtility {
let actor = game.actors.get(rollData.actorId) let actor = game.actors.get(rollData.actorId)
// Fix difficulty // Fix difficulty
if (!rollData.difficulty || rollData.difficulty == "-") { if (!rollData.difficulty || rollData.difficulty == "-1") {
rollData.difficulty = 0 rollData.difficulty = 0
} }
rollData.difficulty = Number(rollData.difficulty) rollData.difficulty = Number(rollData.difficulty)
@@ -565,16 +571,16 @@ export class EcrymeUtility {
let diceFormula = this.computeRollFormula(rollData, actor) let diceFormula = this.computeRollFormula(rollData, actor)
// Performs roll // Performs roll
let myRoll = new Roll(diceFormula).roll({ async: false }) let myRoll = await new Roll(diceFormula).roll()
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = duplicate(myRoll) rollData.roll = foundry.utils.duplicate(myRoll)
rollData.total = myRoll.total rollData.total = myRoll.total
rollData.diceSum = myRoll.terms[0].total rollData.diceSum = myRoll.terms[0].total
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)
@@ -682,20 +688,20 @@ export class EcrymeUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static getBasicRollData() { static getBasicRollData() {
let rollData = { let rollData = {
rollId: randomID(16), rollId: foundry.utils.randomID(16),
type: "roll-data", type: "roll-data",
bonusMalusPerso: 0, bonusMalusPerso: "0",
bonusMalusSituation: 0, bonusMalusSituation: 0,
bonusMalusDef: 0, bonusMalusDef: 0,
annencyBonus: 0, annencyBonus: 0,
bonusMalusPortee: 0, bonusMalusPortee: 0,
skillTranscendence: 0, skillTranscendence: 0,
rollMode: game.settings.get("core", "rollMode"), rollMode: game.settings.get("core", "rollMode"),
difficulty: "-", difficulty: "-1",
useSpleen: false, useSpleen: false,
useIdeal: false, useIdeal: false,
impactMalus: 0, impactMalus: 0,
config: duplicate(game.system.ecryme.config) config: foundry.utils.duplicate(game.system.ecryme.config)
} }
EcrymeUtility.updateWithTarget(rollData) EcrymeUtility.updateWithTarget(rollData)
return rollData return rollData
@@ -717,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));
@@ -729,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

@@ -6,13 +6,13 @@ export class EcrymeConfrontDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async create(actor, rollData) { static async create(actor, rollData) {
let options = mergeObject(super.defaultOptions, { let options = foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme ecryme-confrontation-dialog"], classes: ["fvtt-ecryme ecryme-confrontation-dialog"],
dragDrop: [{ dragSelector: ".confront-dice-container", dropSelector: null }], dragDrop: [{ dragSelector: ".confront-dice-container", dropSelector: null }],
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);
} }
@@ -163,9 +163,9 @@ export class EcrymeConfrontDialog extends Dialog {
// Apply Transcend if needed // Apply Transcend if needed
if (this.rollData.skillTranscendence > 0) { if (this.rollData.skillTranscendence > 0) {
if (this.rollData.applyTranscendence == "execution") { if (this.rollData.applyTranscendence == "execution") {
this.rollData.executionTotal += this.rollData.skillTranscendence this.rollData.executionTotal += Number(this.rollData.skillTranscendence)
} else { } else {
this.rollData.preservationTotal += this.rollData.skillTranscendence this.rollData.preservationTotal += Number(this.rollData.skillTranscendence)
} }
} }
} }
@@ -192,7 +192,7 @@ export class EcrymeConfrontDialog extends Dialog {
this.processTranscendence() this.processTranscendence()
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) { if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
rollData.spec = duplicate(actor.getSpecialization(rollData.selectedSpecs[0])) rollData.spec = foundry.utils.duplicate(actor.getSpecialization(rollData.selectedSpecs[0]))
rollData.specApplied = true rollData.specApplied = true
rollData.executionTotal += 2 rollData.executionTotal += 2
rollData.preservationTotal += 2 rollData.preservationTotal += 2
@@ -212,19 +212,19 @@ export class EcrymeConfrontDialog extends Dialog {
for (let id of rollData.traitsBonusSelected) { for (let id of rollData.traitsBonusSelected) {
let trait = rollData.traitsBonus.find(t => t._id == id) let trait = rollData.traitsBonus.find(t => t._id == id)
trait.activated = true trait.activated = true
rollData.bonusMalusTraits += trait.system.level rollData.bonusMalusTraits += Number(trait.system.level)
} }
} }
if (rollData.traitsMalusSelected && rollData.traitsMalusSelected.length > 0) { if (rollData.traitsMalusSelected && rollData.traitsMalusSelected.length > 0) {
for (let id of rollData.traitsMalusSelected) { for (let id of rollData.traitsMalusSelected) {
let trait = rollData.traitsMalus.find(t => t._id == id) let trait = rollData.traitsMalus.find(t => t._id == id)
trait.activated = true trait.activated = true
rollData.bonusMalusTraits -= trait.system.level rollData.bonusMalusTraits -= Number(trait.system.level)
} }
} }
rollData.executionTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso rollData.executionTotal += Number(rollData.bonusMalusTraits) + Number(rollData.bonusMalusPerso)
rollData.preservationTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso rollData.preservationTotal += Number(rollData.bonusMalusTraits) + Number(rollData.bonusMalusPerso)
this.refreshDialog() this.refreshDialog()
} }
@@ -234,7 +234,7 @@ export class EcrymeConfrontDialog extends Dialog {
super.activateListeners(html); super.activateListeners(html);
html.find('#bonusMalusPerso').change((event) => { html.find('#bonusMalusPerso').change((event) => {
this.rollData.bonusMalusPerso = Number(event.currentTarget.value) this.rollData.bonusMalusPerso = event.currentTarget.value
this.computeTotals() this.computeTotals()
}) })
html.find('#roll-specialization').change((event) => { html.find('#roll-specialization').change((event) => {

View File

@@ -5,9 +5,12 @@ 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,22 +46,22 @@ 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 = new Roll(diceFormula).roll({async: false}) 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"))
// Fill the available dice table // Fill the available dice table
let rollData = this.rollData let rollData = this.rollData
rollData.roll = 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 = 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,12 +52,12 @@ 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(); });
html.find('#bonusMalusPerso').change((event) => { html.find('#bonusMalusPerso').change((event) => {
console.log("DIFF", event.currentTarget.value)
this.rollData.bonusMalusPerso = Number(event.currentTarget.value) this.rollData.bonusMalusPerso = Number(event.currentTarget.value)
}) })
html.find('#roll-difficulty').change((event) => { html.find('#roll-difficulty').change((event) => {

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) {
// Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
fetch(ECRYME_WELCOME_MESSAGE_URL)
.then(response => response.text())
.then(html => {
console.log("Fetched welcome message:", html);
ChatMessage.create({ ChatMessage.create({
user: game.user.id, user: game.user.id,
whisper: [game.user.id], whisper: [game.user.id],
content: `<div id="welcome-message-ecryme"><span class="rdd-roll-part"> content: html
<strong>Bienvenu dans Ecryme !</strong>` }); });
})
.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();
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -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,11 +4,11 @@ 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() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme", "sheet", "item"], classes: ["fvtt-ecryme", "sheet", "item"],
template: "systems/fvtt-ecryme/templates/item-sheet.hbs", template: "systems/fvtt-ecryme/templates/item-sheet.hbs",
dragDrop: [{ dragSelector: null, dropSelector: null }], dragDrop: [{ dragSelector: null, dropSelector: null }],
@@ -56,13 +56,13 @@ export class EcrymeItemSheet extends ItemSheet {
name: this.object.name, name: this.object.name,
editable: this.isEditable, editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",
system: duplicate(this.object.system), system: foundry.utils.duplicate(this.object.system),
config: duplicate(game.system.ecryme.config), config: foundry.utils.duplicate(game.system.ecryme.config),
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
} }
@@ -89,7 +89,7 @@ export class EcrymeItemSheet extends ItemSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
postItem() { postItem() {
let chatData = duplicate(this.item) let chatData = foundry.utils.duplicate(this.item)
if (this.actor) { if (this.actor) {
chatData.actor = { id: this.actor.id }; chatData.actor = { id: this.actor.id };
} }

Binary file not shown.

BIN
packs/equipment/000192.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000146 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/03/19-08:59:49.412009 7fe1974006c0 Recovering log #144 2025/10/17-15:30:30.745305 7f7b753f96c0 Recovering log #239
2024/03/19-08:59:49.422002 7fe1974006c0 Delete type=3 #142 2025/10/17-15:30:30.799430 7f7b753f96c0 Delete type=3 #237
2024/03/19-08:59:49.422641 7fe1974006c0 Delete type=0 #144 2025/10/17-15:30:30.799501 7f7b753f96c0 Delete type=0 #239
2024/03/19-09:13:11.433053 7fe18fe006c0 Level-0 table #149: started 2025/10/17-15:38:10.264480 7f7b6f3ff6c0 Level-0 table #244: started
2024/03/19-09:13:11.433076 7fe18fe006c0 Level-0 table #149: 0 bytes OK 2025/10/17-15:38:10.264510 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/03/19-09:13:11.439309 7fe18fe006c0 Delete type=0 #147 2025/10/17-15:38:10.271838 7f7b6f3ff6c0 Delete type=0 #242
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) 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/03/19-08:26:23.599709 7fe196a006c0 Recovering log #140 2025/10/17-15:00:21.595853 7f7b75bfa6c0 Recovering log #235
2024/03/19-08:26:23.609740 7fe196a006c0 Delete type=3 #138 2025/10/17-15:00:21.649813 7f7b75bfa6c0 Delete type=3 #233
2024/03/19-08:26:23.610001 7fe196a006c0 Delete type=0 #140 2025/10/17-15:00:21.649870 7f7b75bfa6c0 Delete type=0 #235
2024/03/19-08:59:38.616836 7fe18fe006c0 Level-0 table #145: started 2025/10/17-15:19:41.013969 7f7b6f3ff6c0 Level-0 table #240: started
2024/03/19-08:59:38.616860 7fe18fe006c0 Level-0 table #145: 0 bytes OK 2025/10/17-15:19:41.014009 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/03/19-08:59:38.622855 7fe18fe006c0 Delete type=0 #143 2025/10/17-15:19:41.021013 7f7b6f3ff6c0 Delete type=0 #238
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) 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-000083 MANIFEST-000178

View File

@@ -1,8 +1,8 @@
2024/03/19-08:59:49.466407 7fe1956006c0 Recovering log #81 2025/10/17-15:30:30.971906 7f7b75bfa6c0 Recovering log #176
2024/03/19-08:59:49.476751 7fe1956006c0 Delete type=3 #79 2025/10/17-15:30:31.026021 7f7b75bfa6c0 Delete type=3 #174
2024/03/19-08:59:49.476810 7fe1956006c0 Delete type=0 #81 2025/10/17-15:30:31.026086 7f7b75bfa6c0 Delete type=0 #176
2024/03/19-09:13:11.469451 7fe18fe006c0 Level-0 table #86: started 2025/10/17-15:38:10.306636 7f7b6f3ff6c0 Level-0 table #181: started
2024/03/19-09:13:11.469477 7fe18fe006c0 Level-0 table #86: 0 bytes OK 2025/10/17-15:38:10.306674 7f7b6f3ff6c0 Level-0 table #181: 0 bytes OK
2024/03/19-09:13:11.476330 7fe18fe006c0 Delete type=0 #84 2025/10/17-15:38:10.313150 7f7b6f3ff6c0 Delete type=0 #179
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) 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/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) 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/03/19-08:26:23.652790 7fe1974006c0 Recovering log #77 2025/10/17-15:00:21.833480 7f7b74bf86c0 Recovering log #172
2024/03/19-08:26:23.662568 7fe1974006c0 Delete type=3 #75 2025/10/17-15:00:21.882268 7f7b74bf86c0 Delete type=3 #170
2024/03/19-08:26:23.662632 7fe1974006c0 Delete type=0 #77 2025/10/17-15:00:21.882323 7f7b74bf86c0 Delete type=0 #172
2024/03/19-08:59:38.642890 7fe18fe006c0 Level-0 table #82: started 2025/10/17-15:19:41.054674 7f7b6f3ff6c0 Level-0 table #177: started
2024/03/19-08:59:38.642925 7fe18fe006c0 Level-0 table #82: 0 bytes OK 2025/10/17-15:19:41.054706 7f7b6f3ff6c0 Level-0 table #177: 0 bytes OK
2024/03/19-08:59:38.649550 7fe18fe006c0 Delete type=0 #80 2025/10/17-15:19:41.060762 7f7b6f3ff6c0 Delete type=0 #175
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) 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/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) 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-000146 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/03/19-08:59:49.453929 7fe1974006c0 Recovering log #144 2025/10/17-15:30:30.916441 7f7b6ffff6c0 Recovering log #239
2024/03/19-08:59:49.464351 7fe1974006c0 Delete type=3 #142 2025/10/17-15:30:30.969161 7f7b6ffff6c0 Delete type=3 #237
2024/03/19-08:59:49.464411 7fe1974006c0 Delete type=0 #144 2025/10/17-15:30:30.969226 7f7b6ffff6c0 Delete type=0 #239
2024/03/19-09:13:11.463206 7fe18fe006c0 Level-0 table #149: started 2025/10/17-15:38:10.293308 7f7b6f3ff6c0 Level-0 table #244: started
2024/03/19-09:13:11.463229 7fe18fe006c0 Level-0 table #149: 0 bytes OK 2025/10/17-15:38:10.293344 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/03/19-09:13:11.469351 7fe18fe006c0 Delete type=0 #147 2025/10/17-15:38:10.299936 7f7b6f3ff6c0 Delete type=0 #242
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) 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/03/19-08:26:23.639789 7fe196a006c0 Recovering log #140 2025/10/17-15:00:21.772351 7f7b753f96c0 Recovering log #235
2024/03/19-08:26:23.649226 7fe196a006c0 Delete type=3 #138 2025/10/17-15:00:21.831028 7f7b753f96c0 Delete type=3 #233
2024/03/19-08:26:23.649311 7fe196a006c0 Delete type=0 #140 2025/10/17-15:00:21.831106 7f7b753f96c0 Delete type=0 #235
2024/03/19-08:59:38.636120 7fe18fe006c0 Level-0 table #145: started 2025/10/17-15:19:41.021157 7f7b6f3ff6c0 Level-0 table #240: started
2024/03/19-08:59:38.636145 7fe18fe006c0 Level-0 table #145: 0 bytes OK 2025/10/17-15:19:41.021192 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/03/19-08:59:38.642769 7fe18fe006c0 Delete type=0 #143 2025/10/17-15:19:41.028272 7f7b6f3ff6c0 Delete type=0 #238
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) 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-000030 MANIFEST-000127

View File

@@ -1,8 +1,8 @@
2024/03/19-08:59:49.439960 7fe1974006c0 Recovering log #28 2025/10/17-15:30:30.864236 7f7b75bfa6c0 Recovering log #125
2024/03/19-08:59:49.450519 7fe1974006c0 Delete type=3 #26 2025/10/17-15:30:30.913603 7f7b75bfa6c0 Delete type=3 #123
2024/03/19-08:59:49.450564 7fe1974006c0 Delete type=0 #28 2025/10/17-15:30:30.913658 7f7b75bfa6c0 Delete type=0 #125
2024/03/19-09:13:11.449133 7fe18fe006c0 Level-0 table #33: started 2025/10/17-15:38:10.278555 7f7b6f3ff6c0 Level-0 table #130: started
2024/03/19-09:13:11.449161 7fe18fe006c0 Level-0 table #33: 0 bytes OK 2025/10/17-15:38:10.278587 7f7b6f3ff6c0 Level-0 table #130: 0 bytes OK
2024/03/19-09:13:11.455581 7fe18fe006c0 Delete type=0 #31 2025/10/17-15:38:10.286086 7f7b6f3ff6c0 Delete type=0 #128
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) 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/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) 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/03/19-08:26:23.626739 7fe196a006c0 Recovering log #24 2025/10/17-15:00:21.717758 7f7b74bf86c0 Recovering log #121
2024/03/19-08:26:23.637137 7fe196a006c0 Delete type=3 #22 2025/10/17-15:00:21.769008 7f7b74bf86c0 Delete type=3 #119
2024/03/19-08:26:23.637185 7fe196a006c0 Delete type=0 #24 2025/10/17-15:00:21.769070 7f7b74bf86c0 Delete type=0 #121
2024/03/19-08:59:38.629525 7fe18fe006c0 Level-0 table #29: started 2025/10/17-15:19:41.060844 7f7b6f3ff6c0 Level-0 table #126: started
2024/03/19-08:59:38.629567 7fe18fe006c0 Level-0 table #29: 0 bytes OK 2025/10/17-15:19:41.060869 7f7b6f3ff6c0 Level-0 table #126: 0 bytes OK
2024/03/19-08:59:38.635979 7fe18fe006c0 Delete type=0 #27 2025/10/17-15:19:41.066791 7f7b6f3ff6c0 Delete type=0 #124
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) 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/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) 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-000146 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/03/19-08:59:49.399329 7fe1956006c0 Recovering log #144 2025/10/17-15:30:30.682022 7f7b75bfa6c0 Recovering log #239
2024/03/19-08:59:49.409751 7fe1956006c0 Delete type=3 #142 2025/10/17-15:30:30.742602 7f7b75bfa6c0 Delete type=3 #237
2024/03/19-08:59:49.409855 7fe1956006c0 Delete type=0 #144 2025/10/17-15:30:30.742693 7f7b75bfa6c0 Delete type=0 #239
2024/03/19-09:13:11.426894 7fe18fe006c0 Level-0 table #149: started 2025/10/17-15:38:10.271948 7f7b6f3ff6c0 Level-0 table #244: started
2024/03/19-09:13:11.426924 7fe18fe006c0 Level-0 table #149: 0 bytes OK 2025/10/17-15:38:10.271975 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/03/19-09:13:11.432936 7fe18fe006c0 Delete type=0 #147 2025/10/17-15:38:10.278425 7f7b6f3ff6c0 Delete type=0 #242
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) 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/03/19-08:26:23.586366 7fe1974006c0 Recovering log #140 2025/10/17-15:00:21.537451 7f7b74bf86c0 Recovering log #235
2024/03/19-08:26:23.596561 7fe1974006c0 Delete type=3 #138 2025/10/17-15:00:21.591584 7f7b74bf86c0 Delete type=3 #233
2024/03/19-08:26:23.596616 7fe1974006c0 Delete type=0 #140 2025/10/17-15:00:21.591645 7f7b74bf86c0 Delete type=0 #235
2024/03/19-08:59:38.610581 7fe18fe006c0 Level-0 table #145: started 2025/10/17-15:19:41.028380 7f7b6f3ff6c0 Level-0 table #240: started
2024/03/19-08:59:38.610610 7fe18fe006c0 Level-0 table #145: 0 bytes OK 2025/10/17-15:19:41.028403 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/03/19-08:59:38.616719 7fe18fe006c0 Delete type=0 #143 2025/10/17-15:19:41.034791 7f7b6f3ff6c0 Delete type=0 #238
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) 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-000146 MANIFEST-000241

View File

@@ -1,7 +1,7 @@
2024/03/19-08:59:49.425377 7fe1956006c0 Recovering log #144 2025/10/17-15:30:30.802095 7f7b6ffff6c0 Recovering log #239
2024/03/19-08:59:49.436099 7fe1956006c0 Delete type=3 #142 2025/10/17-15:30:30.861659 7f7b6ffff6c0 Delete type=3 #237
2024/03/19-08:59:49.436163 7fe1956006c0 Delete type=0 #144 2025/10/17-15:30:30.861731 7f7b6ffff6c0 Delete type=0 #239
2024/03/19-09:13:11.455720 7fe18fe006c0 Level-0 table #149: started 2025/10/17-15:38:10.258105 7f7b6f3ff6c0 Level-0 table #244: started
2024/03/19-09:13:11.455760 7fe18fe006c0 Level-0 table #149: 0 bytes OK 2025/10/17-15:38:10.258177 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
2024/03/19-09:13:11.463106 7fe18fe006c0 Delete type=0 #147 2025/10/17-15:38:10.264342 7f7b6f3ff6c0 Delete type=0 #242
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) 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/03/19-08:26:23.614041 7fe1974006c0 Recovering log #140 2025/10/17-15:00:21.652305 7f7b753f96c0 Recovering log #235
2024/03/19-08:26:23.624059 7fe1974006c0 Delete type=3 #138 2025/10/17-15:00:21.715259 7f7b753f96c0 Delete type=3 #233
2024/03/19-08:26:23.624114 7fe1974006c0 Delete type=0 #140 2025/10/17-15:00:21.715340 7f7b753f96c0 Delete type=0 #235
2024/03/19-08:59:38.622981 7fe18fe006c0 Level-0 table #145: started 2025/10/17-15:19:41.034921 7f7b6f3ff6c0 Level-0 table #240: started
2024/03/19-08:59:38.623003 7fe18fe006c0 Level-0 table #145: 0 bytes OK 2025/10/17-15:19:41.034948 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
2024/03/19-08:59:38.629342 7fe18fe006c0 Delete type=0 #143 2025/10/17-15:19:41.041045 7f7b6f3ff6c0 Delete type=0 #238
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) 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.

View File

@@ -46,13 +46,29 @@
} }
/* Fonts */ /* Fonts */
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item { .sheet header.sheet-header h1 input,
.window-app .window-header,
#actors .directory-list,
#navigation #scene-list .scene.nav-item {
font-size: 1.0rem; font-size: 1.0rem;
} /* For title, sidebar character and scene */ }
/* For title, sidebar character and scene */
.sheet nav.sheet-tabs { .sheet nav.sheet-tabs {
font-size: 0.8rem; font-size: 0.8rem;
} /* For nav and title */ }
.window-app input, .fvtt-ecryme .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
/* For nav and title */
.window-app input,
.fvtt-ecryme .item-form,
.sheet header.sheet-header .flex-group-center.flex-compteurs,
.sheet header.sheet-header .flex-group-center.flex-fatigue,
select,
button,
.item-checkbox,
#sidebar,
#players,
#navigation #nav-toggle {
font-size: 0.8rem; font-size: 0.8rem;
} }
@@ -64,15 +80,19 @@
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
.strong-text { .strong-text {
font-weight: bold; font-weight: bold;
} }
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover { .tabs .item.active,
.blessures-list li ul li:first-child:hover,
a:hover {
text-shadow: 1px 0px 0px #ff6600; text-shadow: 1px 0px 0px #ff6600;
} }
.rollable:hover, .rollable:focus { .rollable:hover,
.rollable:focus {
color: #000; color: #000;
text-shadow: 0 0 10px red; text-shadow: 0 0 10px red;
cursor: pointer; cursor: pointer;
@@ -86,12 +106,17 @@ input:hover {
input:disabled { input:disabled {
color: #1c2058; color: #1c2058;
} }
select:disabled { select:disabled {
color: #1c2058; color: #1c2058;
} }
table {border: 1px solid #7a7971;}
.grid, .grid-2col { table {
border: 1px solid #7a7971;
}
.grid,
.grid-2col {
display: grid; display: grid;
grid-column: span 2 / span 2; grid-column: span 2 / span 2;
grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -235,6 +260,7 @@ table {border: 1px solid #7a7971;}
object-position: 50% 0; object-position: 50% 0;
border-width: 0px; border-width: 0px;
} }
.profile-img-container { .profile-img-container {
margin-right: 0.2rem; margin-right: 0.2rem;
max-width: 140px; max-width: 140px;
@@ -407,7 +433,8 @@ li.folder > .folder-header h3 {
/*background: #494e6b;*/ /*background: #494e6b;*/
} }
input[type="text"], select[type="text"] { input[type="text"],
select[type="text"] {
background: white; background: white;
color: #494e6b; color: #494e6b;
} }
@@ -416,14 +443,22 @@ select {
background: white; background: white;
color: #494e6b; color: #494e6b;
} }
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/ /* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
/*color: rgba(168, 139, 139, 0.5);*/ /*color: rgba(168, 139, 139, 0.5);*/
.window-app.sheet .window-content .sheet-header select[type="text"], .window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body select[type="text"] { .window-app.sheet .window-content .sheet-header select[type="text"],
.window-app.sheet .window-content .sheet-header input[type="text"],
.window-app.sheet .window-content .sheet-header input[type="number"],
.window-app.sheet .window-content .sheet-body input[type="text"],
.window-app.sheet .window-content .sheet-body input[type="number"],
.window-app.sheet .window-content .sheet-body select[type="text"] {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
/*color: #494e6b;*/ /*color: #494e6b;*/
} }
.window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] { .window-app.sheet .window-content .sheet-header input[type="password"],
.window-app.sheet .window-content .sheet-header input[type="date"],
.window-app.sheet .window-content .sheet-header input[type="time"] {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: url("../images/ui/fond_carnet_01.webp"); background: url("../images/ui/fond_carnet_01.webp");
border: 1 none; border: 1 none;
@@ -431,7 +466,9 @@ select {
margin-left: 2px; margin-left: 2px;
} }
.window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] { .window-app.sheet .window-content .sheet-body input[type="password"],
.window-app.sheet .window-content .sheet-body input[type="date"],
.window-app.sheet .window-content .sheet-body input[type="time"] {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: url("../images/ui/fond_carnet_01.webp"); background: url("../images/ui/fond_carnet_01.webp");
border: 1 none; border: 1 none;
@@ -439,7 +476,8 @@ select {
margin-left: 2px; margin-left: 2px;
} }
.window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select { .window-app.sheet .window-content .sheet-body select,
.window-app.sheet .window-content .sheet-header select {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: #fff; background: #fff;
border: 1 none; border: 1 none;
@@ -447,7 +485,8 @@ select {
margin-left: 2px; margin-left: 2px;
} }
.window-app .window-content, .window-app.sheet .window-content .sheet-body{ .window-app .window-content,
.window-app.sheet .window-content .sheet-body {
font-size: 0.8rem; font-size: 0.8rem;
/*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/ /*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/
background: url("../images/ui/fond_carnet_01.webp"); background: url("../images/ui/fond_carnet_01.webp");
@@ -456,7 +495,9 @@ select {
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/ /* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
section.sheet-body{padding: 0.25rem 0.5rem;} section.sheet-body {
padding: 0.25rem 0.5rem;
}
.sheet header.sheet-header .profile-img { .sheet header.sheet-header .profile-img {
object-fit: cover; object-fit: cover;
@@ -508,8 +549,13 @@ section.sheet-body:after {
clear: both; clear: both;
} }
.sheet header.sheet-header .flex-compteurs {text-align: right;} .sheet header.sheet-header .flex-compteurs {
.sheet header.sheet-header .resource-content {width: 2rem;} text-align: right;
}
.sheet header.sheet-header .resource-content {
width: 2rem;
}
.select-diff { .select-diff {
display: inline-block; display: inline-block;
@@ -524,7 +570,8 @@ section.sheet-body:after {
padding: 0.25rem; padding: 0.25rem;
} }
.window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp { .window-app.sheet .window-content .carac-value,
.window-app.sheet .window-content .competence-xp {
margin: 0.05rem; margin: 0.05rem;
flex-basis: 3rem; flex-basis: 3rem;
text-align: center; text-align: center;
@@ -535,15 +582,21 @@ section.sheet-body:after {
/* ======================================== */ /* ======================================== */
h1, h2, h3, h4 { h1,
h2,
h3,
h4 {
font-weight: bold; font-weight: bold;
} }
ul, ol { ul,
ol {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
ul, li {
ul,
li {
list-style-type: none; list-style-type: none;
} }
@@ -551,6 +604,7 @@ ul, li {
margin: 0.010rem; margin: 0.010rem;
padding: 0.25rem; padding: 0.25rem;
} }
.header-fields li { .header-fields li {
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -559,9 +613,11 @@ ul, li {
.alterne-list>.list-item:hover { .alterne-list>.list-item:hover {
background: rgba(100, 100, 50, 0.25); background: rgba(100, 100, 50, 0.25);
} }
.alterne-list>.list-item:nth-child(even) { .alterne-list>.list-item:nth-child(even) {
background: rgba(80, 60, 0, 0.10); background: rgba(80, 60, 0, 0.10);
} }
.alterne-list>.list-item:nth-child(odd) { .alterne-list>.list-item:nth-child(odd) {
background: rgb(160, 130, 100, 0.05); background: rgb(160, 130, 100, 0.05);
} }
@@ -584,36 +640,45 @@ ul, li {
display: flex !important; display: flex !important;
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
} }
.list-item-shadow { .list-item-shadow {
background: rgba(87, 60, 32, 0.35); background: rgba(87, 60, 32, 0.35);
flex-grow: 0; flex-grow: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: flex-start; justify-content: flex-start;
} }
.list-item-shadow2 { .list-item-shadow2 {
background: rgba(87, 60, 32, 0.25); background: rgba(87, 60, 32, 0.25);
flex-grow: 0; flex-grow: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: flex-start; justify-content: flex-start;
} }
.item-display-show { .item-display-show {
display: block; display: block;
} }
.item-display-hide { .item-display-hide {
display: none; display: none;
} }
.item-quantite { .item-quantite {
margin-left: 0.5rem; margin-left: 0.5rem;
} }
.list-item-margin1 { .list-item-margin1 {
margin-left: 1rem; margin-left: 1rem;
} }
.list-item-margin2 { .list-item-margin2 {
margin-left: 2rem; margin-left: 2rem;
} }
.list-item-margin3 { .list-item-margin3 {
margin-left: 3rem; margin-left: 3rem;
} }
.list-item-margin4 { .list-item-margin4 {
margin-left: 4rem; margin-left: 4rem;
} }
@@ -626,6 +691,7 @@ ul, li {
flex-grow: 0; flex-grow: 0;
margin-right: 0.25rem; margin-right: 0.25rem;
} }
.competence-column { .competence-column {
flex-direction: column; flex-direction: column;
align-content: flex-start; align-content: flex-start;
@@ -633,6 +699,7 @@ ul, li {
flex-grow: 0; flex-grow: 0;
flex-basis: 1; flex-basis: 1;
} }
.competence-header { .competence-header {
align-content: flex-start; align-content: flex-start;
justify-content: flex-start; justify-content: flex-start;
@@ -644,16 +711,20 @@ ul, li {
flex-grow: 2; flex-grow: 2;
margin-left: 4px; margin-left: 4px;
} }
.status-header-label { .status-header-label {
margin-left: 2px; margin-left: 2px;
} }
.roll-dialog-label { .roll-dialog-label {
margin: 4px 0; margin: 4px 0;
min-width: 96px; min-width: 96px;
} }
.short-label { .short-label {
flex-grow: 1; flex-grow: 1;
} }
.keyword-label { .keyword-label {
font-size: 0.85rem; font-size: 0.85rem;
} }
@@ -678,6 +749,7 @@ ul, li {
margin-right: 4px; margin-right: 4px;
margin-left: 4px; margin-left: 4px;
} }
.sante-value, .sante-value,
.competence-value { .competence-value {
flex-grow: 0; flex-grow: 0;
@@ -685,26 +757,32 @@ ul, li {
margin-right: 0.25rem; margin-right: 0.25rem;
margin-left: 0.25rem; margin-left: 0.25rem;
} }
.description-value { .description-value {
flex-grow: 0; flex-grow: 0;
flex-basis: 4rem; flex-basis: 4rem;
margin-right: 0.25rem; margin-right: 0.25rem;
margin-left: 0.25rem; margin-left: 0.25rem;
} }
.small-label { .small-label {
margin-top: 5px; margin-top: 5px;
} }
.padd-right { .padd-right {
margin-right: 8px; margin-right: 8px;
} }
.padd-left { .padd-left {
margin-left: 8px; margin-left: 8px;
} }
.stack-left { .stack-left {
align-items: center; align-items: center;
flex-shrink: 1; flex-shrink: 1;
flex-grow: 0; flex-grow: 0;
} }
.packed-left { .packed-left {
white-space: nowrap; white-space: nowrap;
flex-grow: 0; flex-grow: 0;
@@ -730,6 +808,7 @@ ul, li {
flex: 0 !important; flex: 0 !important;
font-weight: 600; font-weight: 600;
} }
.tokenhudext.left { .tokenhudext.left {
justify-content: flex-start; justify-content: flex-start;
flex-direction: column; flex-direction: column;
@@ -737,6 +816,7 @@ ul, li {
top: 2.75rem; top: 2.75rem;
right: 4rem; right: 4rem;
} }
.tokenhudext.right { .tokenhudext.right {
justify-content: flex-start; justify-content: flex-start;
flex-direction: column; flex-direction: column;
@@ -744,6 +824,7 @@ ul, li {
top: 2.75rem; top: 2.75rem;
left: 4rem; left: 4rem;
} }
.control-icon.tokenhudicon { .control-icon.tokenhudicon {
width: fit-content; width: fit-content;
height: fit-content; height: fit-content;
@@ -753,12 +834,15 @@ ul, li {
line-height: 1rem; line-height: 1rem;
margin: 0.25rem; margin: 0.25rem;
} }
.control-icon.tokenhudicon.right { .control-icon.tokenhudicon.right {
margin-left: 8px; margin-left: 8px;
} }
#token-hud .status-effects.active { #token-hud .status-effects.active {
z-index: 2; z-index: 2;
} }
.token-sheet .window-content .flexcol .sheet-tabs { .token-sheet .window-content .flexcol .sheet-tabs {
font-size: 0.8rem; font-size: 0.8rem;
} }
@@ -782,6 +866,7 @@ ul, li {
.skill-label { .skill-label {
font-size: 0.7rem; font-size: 0.7rem;
} }
.skill-good-checkbox { .skill-good-checkbox {
max-height: 10px; max-height: 10px;
max-width: 10px; max-width: 10px;
@@ -809,7 +894,8 @@ ul, li {
height: 470px !important; height: 470px !important;
} }
#sidebar-tabs > .collapsed, #chat-controls .chat-control-icon { #sidebar-tabs>.collapsed,
#chat-controls .chat-control-icon {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
} }
@@ -824,6 +910,7 @@ ul, li {
background: rgba(0, 0, 0, 0.05); background: rgba(0, 0, 0, 0.05);
cursor: pointer; cursor: pointer;
} }
.chat-message-header { .chat-message-header {
background: rgba(220, 220, 210, 0.5); background: rgba(220, 220, 210, 0.5);
font-size: 1.1rem; font-size: 1.1rem;
@@ -834,9 +921,15 @@ ul, li {
align-items: center; align-items: center;
} }
.chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to { .message-chat-center {
text-align: center;
}
.chat-message .message-header .flavor-text,
.chat-message .message-header .whisper-to {
font-size: 0.9rem; font-size: 0.9rem;
} }
.chat-result-text, .chat-result-text,
.chat-actor-name { .chat-actor-name {
font-weight: bold; font-weight: bold;
@@ -844,12 +937,15 @@ ul, li {
font-size: 1.2rem; font-size: 1.2rem;
padding: 4px; padding: 4px;
} }
.chat-result-success { .chat-result-success {
color: darkgreen; color: darkgreen;
} }
.chat-result-failure { .chat-result-failure {
color: darkred; color: darkred;
} }
.chat-img { .chat-img {
width: 64px; width: 64px;
height: 64px; height: 64px;
@@ -927,6 +1023,7 @@ ul, li {
width: auto; width: auto;
height: auto; height: auto;
} }
.small-ability-icon { .small-ability-icon {
border: 0; border: 0;
padding: 2px 2px 2px 2px; padding: 2px 2px 2px 2px;
@@ -935,6 +1032,7 @@ ul, li {
width: auto; width: auto;
height: auto; height: auto;
} }
.combat-icon { .combat-icon {
border: 0; border: 0;
padding: 2px 2px 2px 2px; padding: 2px 2px 2px 2px;
@@ -969,7 +1067,8 @@ ul, li {
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/* Control, Tool, hotbar & navigation */ /* Control, Tool, hotbar & navigation */
#controls .scene-control, #controls .control-tool { #controls .scene-control,
#controls .control-tool {
box-shadow: 0 0 3px #000; box-shadow: 0 0 3px #000;
margin: 0 0 8px; margin: 0 0 8px;
border-radius: 0; border-radius: 0;
@@ -980,7 +1079,10 @@ ul, li {
border-image-outset: 0px; border-image-outset: 0px;
} }
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover { #controls .scene-control.active,
#controls .control-tool.active,
#controls .scene-control:hover,
#controls .control-tool:hover {
background: rgba(72, 46, 28, 1); background: rgba(72, 46, 28, 1);
background-origin: padding-box; background-origin: padding-box;
border-image: url(img/ui/footer-button.png) 10 repeat; border-image: url(img/ui/footer-button.png) 10 repeat;
@@ -1026,7 +1128,8 @@ ul, li {
border-image-outset: 0px; border-image-outset: 0px;
} }
#navigation #scene-list .scene.view, #navigation #scene-list .scene.context { #navigation #scene-list .scene.view,
#navigation #scene-list .scene.context {
background: rgba(72, 46, 28, 1); background: rgba(72, 46, 28, 1);
background-origin: padding-box; background-origin: padding-box;
border-image: url(img/ui/footer-button.png) 10 repeat; border-image: url(img/ui/footer-button.png) 10 repeat;
@@ -1071,7 +1174,8 @@ ul, li {
.tooltip-nobottom { .tooltip-nobottom {
border-bottom: unset; /* If you want dots under the hoverable text */ border-bottom: unset;
/* If you want dots under the hoverable text */
} }
/* Show the tooltip text when you mouse over the tooltip container */ /* Show the tooltip text when you mouse over the tooltip container */
@@ -1101,6 +1205,7 @@ ul, li {
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
background-color: red; background-color: red;
} }
.chat-card-button:active { .chat-card-button:active {
position: relative; position: relative;
top: 1px; top: 1px;
@@ -1146,14 +1251,14 @@ ul, li {
/*************************************************************/ /*************************************************************/
#pause #pause {
{
font-size: 2rem; font-size: 2rem;
} }
#pause > h3
{ #pause>h3 {
color: #CCC color: #CCC
} }
#pause>img { #pause>img {
content: url(../images/ui/ecryme_logo_small_01.webp); content: url(../images/ui/ecryme_logo_small_01.webp);
height: 200px; height: 200px;
@@ -1184,23 +1289,28 @@ ul, li {
.status-small-label { .status-small-label {
font-size: 0.65rem; font-size: 0.65rem;
} }
.no-grow { .no-grow {
flex-grow: 1; flex-grow: 1;
max-width: 32px; max-width: 32px;
} }
.status-col-name { .status-col-name {
max-width: 72px; max-width: 72px;
} }
.img-no-border { .img-no-border {
max-width: 48px; max-width: 48px;
max-height: 48px; max-height: 48px;
border: 0px; border: 0px;
} }
.items-title-bg { .items-title-bg {
margin-top: 6px; margin-top: 6px;
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
} }
.impact-box { .impact-box {
border-width: 2px; border-width: 2px;
border-color: #000000; border-color: #000000;
@@ -1209,6 +1319,7 @@ ul, li {
margin: 4px; margin: 4px;
padding: 4px; padding: 4px;
} }
.impact-title { .impact-title {
font-size: bold; font-size: bold;
display: flex; display: flex;
@@ -1224,140 +1335,169 @@ ul, li {
font-family: MailartRubberstamp; font-family: MailartRubberstamp;
margin-left: 4px; margin-left: 4px;
} }
.lock-icon { .lock-icon {
width: 16px; width: 16px;
height: 16px; height: 16px;
} }
.item-sheet-img { .item-sheet-img {
width: 64px; width: 64px;
height: auto; height: auto;
border: 0; border: 0;
} }
.item-name-img { .item-name-img {
flex-grow: 1; flex-grow: 1;
max-width: 2rem; max-width: 2rem;
min-width: 2rem; min-width: 2rem;
} }
.item-name-label-header { .item-name-label-header {
flex-grow: 2; flex-grow: 2;
max-width: 12rem; max-width: 12rem;
min-width: 12rem; min-width: 12rem;
} }
.item-name-label-header-long { .item-name-label-header-long {
flex-grow: 2; flex-grow: 2;
max-width: 14rem; max-width: 14rem;
min-width: 14rem; min-width: 14rem;
} }
.item-name-label-header-long2 { .item-name-label-header-long2 {
flex-grow: 2; flex-grow: 2;
max-width: 24rem; max-width: 24rem;
min-width: 24rem; min-width: 24rem;
} }
.item-name-label { .item-name-label {
flex-grow: 2; flex-grow: 2;
max-width: 10rem; max-width: 10rem;
min-width: 10rem; min-width: 10rem;
} }
.item-name-label-long { .item-name-label-long {
margin-top: 4px; margin-top: 4px;
flex-grow: 2; flex-grow: 2;
max-width: 12rem; max-width: 12rem;
min-width: 12rem; min-width: 12rem;
} }
.item-name-label-short { .item-name-label-short {
margin-top: 4px; margin-top: 4px;
flex-grow: 1; flex-grow: 1;
max-width: 4rem; max-width: 4rem;
min-width: 4rem; min-width: 4rem;
} }
.item-name-label-medium { .item-name-label-medium {
margin-top: 4px; margin-top: 4px;
flex-grow: 2; flex-grow: 2;
max-width: 6rem; max-width: 6rem;
min-width: 6rem; min-width: 6rem;
} }
.item-name-label-medium2 { .item-name-label-medium2 {
margin-top: 4px; margin-top: 4px;
flex-grow: 0; flex-grow: 0;
max-width: 10rem; max-width: 10rem;
min-width: 10rem; min-width: 10rem;
} }
.item-name-label-free { .item-name-label-free {
margin-top: 4px; margin-top: 4px;
align-self: flex-start; align-self: flex-start;
} }
.item-name-label-long2 { .item-name-label-long2 {
margin-top: 4px; margin-top: 4px;
flex-grow: 2; flex-grow: 2;
max-width: 22rem; max-width: 22rem;
min-width: 22rem; min-width: 22rem;
} }
.item-name-label-level2 { .item-name-label-level2 {
flex-grow: 2; flex-grow: 2;
max-width: 9rem; max-width: 9rem;
min-width: 9rem; min-width: 9rem;
} }
.item-field-label-short { .item-field-label-short {
margin-top: 4px; margin-top: 4px;
flex-grow: 1; flex-grow: 1;
max-width: 4rem; max-width: 4rem;
min-width: 4rem; min-width: 4rem;
} }
.item-field-label-short-header { .item-field-label-short-header {
margin-top: 4px; margin-top: 4px;
flex-grow: 1; flex-grow: 1;
max-width: 2.2rem; max-width: 2.2rem;
min-width: 2.2rem; min-width: 2.2rem;
} }
.item-field-label-medium { .item-field-label-medium {
flex-grow: 1; flex-grow: 1;
max-width: 6rem; max-width: 6rem;
min-width: 6rem; min-width: 6rem;
} }
.item-field-skill { .item-field-skill {
flex-grow: 1; flex-grow: 1;
max-width: 6.8rem; max-width: 6.8rem;
min-width: 6.8rem; min-width: 6.8rem;
} }
.item-field-label-long { .item-field-label-long {
flex-grow: 1; flex-grow: 1;
max-width: 10rem; max-width: 10rem;
min-width: 10rem; min-width: 10rem;
} }
.item-control-end { .item-control-end {
align-self: flex-end; align-self: flex-end;
} }
.alternate-list { .alternate-list {
margin-top: 4px; margin-top: 4px;
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.item-filler { .item-filler {
flex-grow: 6; flex-grow: 6;
flex-shrink: 7; flex-shrink: 7;
} }
.item-controls-fixed { .item-controls-fixed {
min-width: 2rem; min-width: 2rem;
max-width: 2rem; max-width: 2rem;
} }
.item-controls-fixed-full { .item-controls-fixed-full {
min-width: 3rem; min-width: 3rem;
max-width: 3rem; max-width: 3rem;
} }
.attribute-label { .attribute-label {
font-weight: bold; font-weight: bold;
} }
.flexrow-no-expand { .flexrow-no-expand {
flex-grow: 0; flex-grow: 0;
} }
.flexrow-start { .flexrow-start {
justify-content: flex-start; justify-content: flex-start;
align-content: flex-start; align-content: flex-start;
align-self: flex-start; align-self: flex-start;
} }
.item-input-small { .item-input-small {
max-width: 16px; max-width: 16px;
max-height: 12px; max-height: 12px;
} }
.character-summary-rollable { .character-summary-rollable {
text-decoration: underline; text-decoration: underline;
} }
@@ -1365,6 +1505,7 @@ ul, li {
.ecryme-roll-dialog .window-header { .ecryme-roll-dialog .window-header {
border-radius: 10px 10px 0% 0%; border-radius: 10px 10px 0% 0%;
} }
.ecryme-roll-dialog .window-content { .ecryme-roll-dialog .window-content {
border-radius: 0% 0% 10px 10px; border-radius: 0% 0% 10px 10px;
} }
@@ -1381,16 +1522,19 @@ ul, li {
.bonus-spec { .bonus-spec {
max-width: 48px; max-width: 48px;
} }
.confront-bonus-container { .confront-bonus-container {
position: relative; position: relative;
flex-grow: 1; flex-grow: 1;
text-align: center; text-align: center;
color: black; color: black;
} }
.pool-list { .pool-list {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.confront-bonus-centered { .confront-bonus-centered {
position: absolute; position: absolute;
top: 50%; top: 50%;
@@ -1404,12 +1548,14 @@ ul, li {
.dice-spec { .dice-spec {
max-width: 64px; max-width: 64px;
} }
.confront-dice-container { .confront-dice-container {
position: relative; position: relative;
flex-grow: 1; flex-grow: 1;
text-align: center; text-align: center;
color: black; color: black;
} }
.confront-dice-centered { .confront-dice-centered {
position: absolute; position: absolute;
top: 50%; top: 50%;
@@ -1419,6 +1565,7 @@ ul, li {
font-family: MailartRubberstamp; font-family: MailartRubberstamp;
transform: translate(-50%, -55%); transform: translate(-50%, -55%);
} }
.confront-area { .confront-area {
margin: 2px; margin: 2px;
padding: 4px; padding: 4px;

View File

@@ -46,13 +46,29 @@
} }
/* Fonts */ /* Fonts */
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item { .sheet header.sheet-header h1 input,
.window-app .window-header,
#actors .directory-list,
#navigation #scene-list .scene.nav-item {
font-size: 1.0rem; font-size: 1.0rem;
} /* For title, sidebar character and scene */ }
/* For title, sidebar character and scene */
.sheet nav.sheet-tabs { .sheet nav.sheet-tabs {
font-size: 0.8rem; font-size: 0.8rem;
} /* For nav and title */ }
.window-app input, .fvtt-ecryme .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
/* For nav and title */
.window-app input,
.fvtt-ecryme .item-form,
.sheet header.sheet-header .flex-group-center.flex-compteurs,
.sheet header.sheet-header .flex-group-center.flex-fatigue,
select,
button,
.item-checkbox,
#sidebar,
#players,
#navigation #nav-toggle {
font-size: 0.8rem; font-size: 0.8rem;
} }
@@ -64,15 +80,19 @@
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
.strong-text { .strong-text {
font-weight: bold; font-weight: bold;
} }
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover { .tabs .item.active,
.blessures-list li ul li:first-child:hover,
a:hover {
text-shadow: 1px 0px 0px #ff6600; text-shadow: 1px 0px 0px #ff6600;
} }
.rollable:hover, .rollable:focus { .rollable:hover,
.rollable:focus {
color: #000; color: #000;
text-shadow: 0 0 10px red; text-shadow: 0 0 10px red;
cursor: pointer; cursor: pointer;
@@ -86,12 +106,17 @@ input:hover {
input:disabled { input:disabled {
color: #1c2058; color: #1c2058;
} }
select:disabled { select:disabled {
color: #1c2058; color: #1c2058;
} }
table {border: 1px solid #7a7971;}
.grid, .grid-2col { table {
border: 1px solid #7a7971;
}
.grid,
.grid-2col {
display: grid; display: grid;
grid-column: span 2 / span 2; grid-column: span 2 / span 2;
grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -212,6 +237,7 @@ table {border: 1px solid #7a7971;}
object-position: 50% 0; object-position: 50% 0;
border-width: 0px; border-width: 0px;
} }
.profile-img-container { .profile-img-container {
margin-right: 0.2rem; margin-right: 0.2rem;
max-width: 140px; max-width: 140px;
@@ -376,7 +402,8 @@ li.folder > .folder-header h3 {
/*background: #494e6b;*/ /*background: #494e6b;*/
} }
input[type="text"], select[type="text"] { input[type="text"],
select[type="text"] {
background: white; background: white;
color: #494e6b; color: #494e6b;
} }
@@ -385,14 +412,22 @@ select {
background: white; background: white;
color: #494e6b; color: #494e6b;
} }
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/ /* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
/*color: rgba(168, 139, 139, 0.5);*/ /*color: rgba(168, 139, 139, 0.5);*/
.window-app.sheet .window-content .sheet-header select[type="text"], .window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body select[type="text"] { .window-app.sheet .window-content .sheet-header select[type="text"],
.window-app.sheet .window-content .sheet-header input[type="text"],
.window-app.sheet .window-content .sheet-header input[type="number"],
.window-app.sheet .window-content .sheet-body input[type="text"],
.window-app.sheet .window-content .sheet-body input[type="number"],
.window-app.sheet .window-content .sheet-body select[type="text"] {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
/*color: #494e6b;*/ /*color: #494e6b;*/
} }
.window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] { .window-app.sheet .window-content .sheet-header input[type="password"],
.window-app.sheet .window-content .sheet-header input[type="date"],
.window-app.sheet .window-content .sheet-header input[type="time"] {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: url("../images/ui/fond_carnet_01.webp"); background: url("../images/ui/fond_carnet_01.webp");
border: 1 none; border: 1 none;
@@ -400,7 +435,9 @@ select {
margin-left: 2px; margin-left: 2px;
} }
.window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] { .window-app.sheet .window-content .sheet-body input[type="password"],
.window-app.sheet .window-content .sheet-body input[type="date"],
.window-app.sheet .window-content .sheet-body input[type="time"] {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: url("../images/ui/fond_carnet_01.webp"); background: url("../images/ui/fond_carnet_01.webp");
border: 1 none; border: 1 none;
@@ -408,7 +445,8 @@ select {
margin-left: 2px; margin-left: 2px;
} }
.window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select { .window-app.sheet .window-content .sheet-body select,
.window-app.sheet .window-content .sheet-header select {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: #fff; background: #fff;
border: 1 none; border: 1 none;
@@ -416,7 +454,8 @@ select {
margin-left: 2px; margin-left: 2px;
} }
.window-app .window-content, .window-app.sheet .window-content .sheet-body{ .window-app .window-content,
.window-app.sheet .window-content .sheet-body {
font-size: 0.8rem; font-size: 0.8rem;
/*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/ /*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/
background: url("../images/ui/fond_carnet_01.webp"); background: url("../images/ui/fond_carnet_01.webp");
@@ -425,7 +464,9 @@ select {
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/ /* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
section.sheet-body{padding: 0.25rem 0.5rem;} section.sheet-body {
padding: 0.25rem 0.5rem;
}
.sheet header.sheet-header .profile-img { .sheet header.sheet-header .profile-img {
-o-object-fit: cover; -o-object-fit: cover;
@@ -454,9 +495,11 @@ section.sheet-body{padding: 0.25rem 0.5rem;}
/* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/ /* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/
nav.sheet-tabs a,
nav.sheet-tabs .item { nav.sheet-tabs .item {
position: relative; position: relative;
padding: 0 0.25rem; padding: 0 0.25rem;
color: beige;
} }
nav.sheet-tabs .item:after { nav.sheet-tabs .item:after {
@@ -479,8 +522,13 @@ section.sheet-body:after {
clear: both; clear: both;
} }
.sheet header.sheet-header .flex-compteurs {text-align: right;} .sheet header.sheet-header .flex-compteurs {
.sheet header.sheet-header .resource-content {width: 2rem;} text-align: right;
}
.sheet header.sheet-header .resource-content {
width: 2rem;
}
.select-diff { .select-diff {
display: inline-block; display: inline-block;
@@ -495,7 +543,8 @@ section.sheet-body:after {
padding: 0.25rem; padding: 0.25rem;
} }
.window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp { .window-app.sheet .window-content .carac-value,
.window-app.sheet .window-content .competence-xp {
margin: 0.05rem; margin: 0.05rem;
flex-basis: 3rem; flex-basis: 3rem;
text-align: center; text-align: center;
@@ -506,15 +555,21 @@ section.sheet-body:after {
/* ======================================== */ /* ======================================== */
h1, h2, h3, h4 { h1,
h2,
h3,
h4 {
font-weight: bold; font-weight: bold;
} }
ul, ol { ul,
ol {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
ul, li {
ul,
li {
list-style-type: none; list-style-type: none;
} }
@@ -522,6 +577,7 @@ ul, li {
margin: 0.010rem; margin: 0.010rem;
padding: 0.25rem; padding: 0.25rem;
} }
.header-fields li { .header-fields li {
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -530,9 +586,11 @@ ul, li {
.alterne-list>.list-item:hover { .alterne-list>.list-item:hover {
background: rgba(100, 100, 50, 0.25); background: rgba(100, 100, 50, 0.25);
} }
.alterne-list>.list-item:nth-child(even) { .alterne-list>.list-item:nth-child(even) {
background: rgba(80, 60, 0, 0.10); background: rgba(80, 60, 0, 0.10);
} }
.alterne-list>.list-item:nth-child(odd) { .alterne-list>.list-item:nth-child(odd) {
background: rgb(160, 130, 100, 0.05); background: rgb(160, 130, 100, 0.05);
} }
@@ -555,36 +613,45 @@ ul, li {
display: flex !important; display: flex !important;
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
} }
.list-item-shadow { .list-item-shadow {
background: rgba(87, 60, 32, 0.35); background: rgba(87, 60, 32, 0.35);
flex-grow: 0; flex-grow: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: flex-start; justify-content: flex-start;
} }
.list-item-shadow2 { .list-item-shadow2 {
background: rgba(87, 60, 32, 0.25); background: rgba(87, 60, 32, 0.25);
flex-grow: 0; flex-grow: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: flex-start; justify-content: flex-start;
} }
.item-display-show { .item-display-show {
display: block; display: block;
} }
.item-display-hide { .item-display-hide {
display: none; display: none;
} }
.item-quantite { .item-quantite {
margin-left: 0.5rem; margin-left: 0.5rem;
} }
.list-item-margin1 { .list-item-margin1 {
margin-left: 1rem; margin-left: 1rem;
} }
.list-item-margin2 { .list-item-margin2 {
margin-left: 2rem; margin-left: 2rem;
} }
.list-item-margin3 { .list-item-margin3 {
margin-left: 3rem; margin-left: 3rem;
} }
.list-item-margin4 { .list-item-margin4 {
margin-left: 4rem; margin-left: 4rem;
} }
@@ -597,6 +664,7 @@ ul, li {
flex-grow: 0; flex-grow: 0;
margin-right: 0.25rem; margin-right: 0.25rem;
} }
.competence-column { .competence-column {
flex-direction: column; flex-direction: column;
align-content: flex-start; align-content: flex-start;
@@ -604,6 +672,7 @@ ul, li {
flex-grow: 0; flex-grow: 0;
flex-basis: 1; flex-basis: 1;
} }
.competence-header { .competence-header {
align-content: flex-start; align-content: flex-start;
justify-content: flex-start; justify-content: flex-start;
@@ -615,16 +684,20 @@ ul, li {
flex-grow: 2; flex-grow: 2;
margin-left: 4px; margin-left: 4px;
} }
.status-header-label { .status-header-label {
margin-left: 2px; margin-left: 2px;
} }
.roll-dialog-label { .roll-dialog-label {
margin: 4px 0; margin: 4px 0;
min-width: 96px; min-width: 96px;
} }
.short-label { .short-label {
flex-grow: 1; flex-grow: 1;
} }
.keyword-label { .keyword-label {
font-size: 0.85rem; font-size: 0.85rem;
} }
@@ -649,6 +722,7 @@ ul, li {
margin-right: 4px; margin-right: 4px;
margin-left: 4px; margin-left: 4px;
} }
.sante-value, .sante-value,
.competence-value { .competence-value {
flex-grow: 0; flex-grow: 0;
@@ -656,26 +730,32 @@ ul, li {
margin-right: 0.25rem; margin-right: 0.25rem;
margin-left: 0.25rem; margin-left: 0.25rem;
} }
.description-value { .description-value {
flex-grow: 0; flex-grow: 0;
flex-basis: 4rem; flex-basis: 4rem;
margin-right: 0.25rem; margin-right: 0.25rem;
margin-left: 0.25rem; margin-left: 0.25rem;
} }
.small-label { .small-label {
margin-top: 5px; margin-top: 5px;
} }
.padd-right { .padd-right {
margin-right: 8px; margin-right: 8px;
} }
.padd-left { .padd-left {
margin-left: 8px; margin-left: 8px;
} }
.stack-left { .stack-left {
align-items: center; align-items: center;
flex-shrink: 1; flex-shrink: 1;
flex-grow: 0; flex-grow: 0;
} }
.packed-left { .packed-left {
white-space: nowrap; white-space: nowrap;
flex-grow: 0; flex-grow: 0;
@@ -701,6 +781,7 @@ ul, li {
flex: 0 !important; flex: 0 !important;
font-weight: 600; font-weight: 600;
} }
.tokenhudext.left { .tokenhudext.left {
justify-content: flex-start; justify-content: flex-start;
flex-direction: column; flex-direction: column;
@@ -708,6 +789,7 @@ ul, li {
top: 2.75rem; top: 2.75rem;
right: 4rem; right: 4rem;
} }
.tokenhudext.right { .tokenhudext.right {
justify-content: flex-start; justify-content: flex-start;
flex-direction: column; flex-direction: column;
@@ -715,6 +797,7 @@ ul, li {
top: 2.75rem; top: 2.75rem;
left: 4rem; left: 4rem;
} }
.control-icon.tokenhudicon { .control-icon.tokenhudicon {
width: -moz-fit-content; width: -moz-fit-content;
width: fit-content; width: fit-content;
@@ -726,12 +809,15 @@ ul, li {
line-height: 1rem; line-height: 1rem;
margin: 0.25rem; margin: 0.25rem;
} }
.control-icon.tokenhudicon.right { .control-icon.tokenhudicon.right {
margin-left: 8px; margin-left: 8px;
} }
#token-hud .status-effects.active { #token-hud .status-effects.active {
z-index: 2; z-index: 2;
} }
.token-sheet .window-content .flexcol .sheet-tabs { .token-sheet .window-content .flexcol .sheet-tabs {
font-size: 0.8rem; font-size: 0.8rem;
} }
@@ -755,6 +841,7 @@ ul, li {
.skill-label { .skill-label {
font-size: 0.7rem; font-size: 0.7rem;
} }
.skill-good-checkbox { .skill-good-checkbox {
max-height: 10px; max-height: 10px;
max-width: 10px; max-width: 10px;
@@ -782,7 +869,8 @@ ul, li {
height: 470px !important; height: 470px !important;
} }
#sidebar-tabs > .collapsed, #chat-controls .chat-control-icon { #sidebar-tabs>.collapsed,
#chat-controls .chat-control-icon {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
} }
@@ -797,6 +885,7 @@ ul, li {
background: rgba(0, 0, 0, 0.05); background: rgba(0, 0, 0, 0.05);
cursor: pointer; cursor: pointer;
} }
.chat-message-header { .chat-message-header {
background: rgba(220, 220, 210, 0.5); background: rgba(220, 220, 210, 0.5);
font-size: 1.1rem; font-size: 1.1rem;
@@ -807,9 +896,22 @@ ul, li {
align-items: center; align-items: center;
} }
.chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to { .message-chat-center {
text-align: center;
}
.welcome-message-h3 {
font-size: 1.2rem;
text-align: center;
margin-bottom: 0.5rem;
color: darkred;
}
.chat-message .message-header .flavor-text,
.chat-message .message-header .whisper-to {
font-size: 0.9rem; font-size: 0.9rem;
} }
.chat-result-text, .chat-result-text,
.chat-actor-name { .chat-actor-name {
font-weight: bold; font-weight: bold;
@@ -817,12 +919,15 @@ ul, li {
font-size: 1.2rem; font-size: 1.2rem;
padding: 4px; padding: 4px;
} }
.chat-result-success { .chat-result-success {
color: darkgreen; color: darkgreen;
} }
.chat-result-failure { .chat-result-failure {
color: darkred; color: darkred;
} }
.chat-img { .chat-img {
width: 64px; width: 64px;
height: 64px; height: 64px;
@@ -900,6 +1005,7 @@ ul, li {
width: auto; width: auto;
height: auto; height: auto;
} }
.small-ability-icon { .small-ability-icon {
border: 0; border: 0;
padding: 2px 2px 2px 2px; padding: 2px 2px 2px 2px;
@@ -908,6 +1014,7 @@ ul, li {
width: auto; width: auto;
height: auto; height: auto;
} }
.combat-icon { .combat-icon {
border: 0; border: 0;
padding: 2px 2px 2px 2px; padding: 2px 2px 2px 2px;
@@ -942,7 +1049,8 @@ ul, li {
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/* Control, Tool, hotbar & navigation */ /* Control, Tool, hotbar & navigation */
#controls .scene-control, #controls .control-tool { #controls .scene-control,
#controls .control-tool {
box-shadow: 0 0 3px #000; box-shadow: 0 0 3px #000;
margin: 0 0 8px; margin: 0 0 8px;
border-radius: 0; border-radius: 0;
@@ -954,7 +1062,10 @@ ul, li {
border-image-outset: 0px; border-image-outset: 0px;
} }
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover { #controls .scene-control.active,
#controls .control-tool.active,
#controls .scene-control:hover,
#controls .control-tool:hover {
background: rgba(72, 46, 28, 1); background: rgba(72, 46, 28, 1);
background-origin: padding-box; background-origin: padding-box;
-o-border-image: url(img/ui/footer-button.png) 10 repeat; -o-border-image: url(img/ui/footer-button.png) 10 repeat;
@@ -1004,7 +1115,8 @@ ul, li {
border-image-outset: 0px; border-image-outset: 0px;
} }
#navigation #scene-list .scene.view, #navigation #scene-list .scene.context { #navigation #scene-list .scene.view,
#navigation #scene-list .scene.context {
background: rgba(72, 46, 28, 1); background: rgba(72, 46, 28, 1);
background-origin: padding-box; background-origin: padding-box;
-o-border-image: url(img/ui/footer-button.png) 10 repeat; -o-border-image: url(img/ui/footer-button.png) 10 repeat;
@@ -1051,7 +1163,8 @@ ul, li {
.tooltip-nobottom { .tooltip-nobottom {
border-bottom: unset; /* If you want dots under the hoverable text */ border-bottom: unset;
/* If you want dots under the hoverable text */
} }
/* Show the tooltip text when you mouse over the tooltip container */ /* Show the tooltip text when you mouse over the tooltip container */
@@ -1081,6 +1194,7 @@ ul, li {
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
background-color: red; background-color: red;
} }
.chat-card-button:active { .chat-card-button:active {
position: relative; position: relative;
top: 1px; top: 1px;
@@ -1126,14 +1240,14 @@ ul, li {
/*************************************************************/ /*************************************************************/
#pause #pause {
{
font-size: 2rem; font-size: 2rem;
} }
#pause > h3
{ #pause>h3 {
color: #CCC color: #CCC
} }
#pause>img { #pause>img {
content: url(../images/ui/ecryme_logo_small_01.webp); content: url(../images/ui/ecryme_logo_small_01.webp);
height: 200px; height: 200px;
@@ -1164,23 +1278,28 @@ ul, li {
.status-small-label { .status-small-label {
font-size: 0.65rem; font-size: 0.65rem;
} }
.no-grow { .no-grow {
flex-grow: 1; flex-grow: 1;
max-width: 32px; max-width: 32px;
} }
.status-col-name { .status-col-name {
max-width: 72px; max-width: 72px;
} }
.img-no-border { .img-no-border {
max-width: 48px; max-width: 48px;
max-height: 48px; max-height: 48px;
border: 0px; border: 0px;
} }
.items-title-bg { .items-title-bg {
margin-top: 6px; margin-top: 6px;
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
} }
.impact-box { .impact-box {
border-width: 2px; border-width: 2px;
border-color: #000000; border-color: #000000;
@@ -1189,6 +1308,7 @@ ul, li {
margin: 4px; margin: 4px;
padding: 4px; padding: 4px;
} }
.impact-title { .impact-title {
font-size: bold; font-size: bold;
display: flex; display: flex;
@@ -1204,140 +1324,169 @@ ul, li {
font-family: MailartRubberstamp; font-family: MailartRubberstamp;
margin-left: 4px; margin-left: 4px;
} }
.lock-icon { .lock-icon {
width: 16px; width: 16px;
height: 16px; height: 16px;
} }
.item-sheet-img { .item-sheet-img {
width: 64px; width: 64px;
height: auto; height: auto;
border: 0; border: 0;
} }
.item-name-img { .item-name-img {
flex-grow: 1; flex-grow: 1;
max-width: 2rem; max-width: 2rem;
min-width: 2rem; min-width: 2rem;
} }
.item-name-label-header { .item-name-label-header {
flex-grow: 2; flex-grow: 2;
max-width: 12rem; max-width: 12rem;
min-width: 12rem; min-width: 12rem;
} }
.item-name-label-header-long { .item-name-label-header-long {
flex-grow: 2; flex-grow: 2;
max-width: 14rem; max-width: 14rem;
min-width: 14rem; min-width: 14rem;
} }
.item-name-label-header-long2 { .item-name-label-header-long2 {
flex-grow: 2; flex-grow: 2;
max-width: 24rem; max-width: 24rem;
min-width: 24rem; min-width: 24rem;
} }
.item-name-label { .item-name-label {
flex-grow: 2; flex-grow: 2;
max-width: 10rem; max-width: 10rem;
min-width: 10rem; min-width: 10rem;
} }
.item-name-label-long { .item-name-label-long {
margin-top: 4px; margin-top: 4px;
flex-grow: 2; flex-grow: 2;
max-width: 12rem; max-width: 12rem;
min-width: 12rem; min-width: 12rem;
} }
.item-name-label-short { .item-name-label-short {
margin-top: 4px; margin-top: 4px;
flex-grow: 1; flex-grow: 1;
max-width: 4rem; max-width: 4rem;
min-width: 4rem; min-width: 4rem;
} }
.item-name-label-medium { .item-name-label-medium {
margin-top: 4px; margin-top: 4px;
flex-grow: 2; flex-grow: 2;
max-width: 6rem; max-width: 6rem;
min-width: 6rem; min-width: 6rem;
} }
.item-name-label-medium2 { .item-name-label-medium2 {
margin-top: 4px; margin-top: 4px;
flex-grow: 0; flex-grow: 0;
max-width: 10rem; max-width: 10rem;
min-width: 10rem; min-width: 10rem;
} }
.item-name-label-free { .item-name-label-free {
margin-top: 4px; margin-top: 4px;
align-self: flex-start; align-self: flex-start;
} }
.item-name-label-long2 { .item-name-label-long2 {
margin-top: 4px; margin-top: 4px;
flex-grow: 2; flex-grow: 2;
max-width: 22rem; max-width: 22rem;
min-width: 22rem; min-width: 22rem;
} }
.item-name-label-level2 { .item-name-label-level2 {
flex-grow: 2; flex-grow: 2;
max-width: 9rem; max-width: 9rem;
min-width: 9rem; min-width: 9rem;
} }
.item-field-label-short { .item-field-label-short {
margin-top: 4px; margin-top: 4px;
flex-grow: 1; flex-grow: 1;
max-width: 4rem; max-width: 4rem;
min-width: 4rem; min-width: 4rem;
} }
.item-field-label-short-header { .item-field-label-short-header {
margin-top: 4px; margin-top: 4px;
flex-grow: 1; flex-grow: 1;
max-width: 2.2rem; max-width: 2.2rem;
min-width: 2.2rem; min-width: 2.2rem;
} }
.item-field-label-medium { .item-field-label-medium {
flex-grow: 1; flex-grow: 1;
max-width: 6rem; max-width: 6rem;
min-width: 6rem; min-width: 6rem;
} }
.item-field-skill { .item-field-skill {
flex-grow: 1; flex-grow: 1;
max-width: 6.8rem; max-width: 6.8rem;
min-width: 6.8rem; min-width: 6.8rem;
} }
.item-field-label-long { .item-field-label-long {
flex-grow: 1; flex-grow: 1;
max-width: 10rem; max-width: 10rem;
min-width: 10rem; min-width: 10rem;
} }
.item-control-end { .item-control-end {
align-self: flex-end; align-self: flex-end;
} }
.alternate-list { .alternate-list {
margin-top: 4px; margin-top: 4px;
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.item-filler { .item-filler {
flex-grow: 6; flex-grow: 6;
flex-shrink: 7; flex-shrink: 7;
} }
.item-controls-fixed { .item-controls-fixed {
min-width: 2rem; min-width: 2rem;
max-width: 2rem; max-width: 2rem;
} }
.item-controls-fixed-full { .item-controls-fixed-full {
min-width: 3rem; min-width: 3rem;
max-width: 3rem; max-width: 3rem;
} }
.attribute-label { .attribute-label {
font-weight: bold; font-weight: bold;
} }
.flexrow-no-expand { .flexrow-no-expand {
flex-grow: 0; flex-grow: 0;
} }
.flexrow-start { .flexrow-start {
justify-content: flex-start; justify-content: flex-start;
align-content: flex-start; align-content: flex-start;
align-self: flex-start; align-self: flex-start;
} }
.item-input-small { .item-input-small {
max-width: 16px; max-width: 16px;
max-height: 12px; max-height: 12px;
} }
.character-summary-rollable { .character-summary-rollable {
text-decoration: underline; text-decoration: underline;
} }
@@ -1345,6 +1494,7 @@ ul, li {
.ecryme-roll-dialog .window-header { .ecryme-roll-dialog .window-header {
border-radius: 10px 10px 0% 0%; border-radius: 10px 10px 0% 0%;
} }
.ecryme-roll-dialog .window-content { .ecryme-roll-dialog .window-content {
border-radius: 0% 0% 10px 10px; border-radius: 0% 0% 10px 10px;
} }
@@ -1361,16 +1511,19 @@ ul, li {
.bonus-spec { .bonus-spec {
max-width: 48px; max-width: 48px;
} }
.confront-bonus-container { .confront-bonus-container {
position: relative; position: relative;
flex-grow: 1; flex-grow: 1;
text-align: center; text-align: center;
color: black; color: black;
} }
.pool-list { .pool-list {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.confront-bonus-centered { .confront-bonus-centered {
position: absolute; position: absolute;
top: 50%; top: 50%;
@@ -1384,12 +1537,14 @@ ul, li {
.dice-spec { .dice-spec {
max-width: 64px; max-width: 64px;
} }
.confront-dice-container { .confront-dice-container {
position: relative; position: relative;
flex-grow: 1; flex-grow: 1;
text-align: center; text-align: center;
color: black; color: black;
} }
.confront-dice-centered { .confront-dice-centered {
position: absolute; position: absolute;
top: 50%; top: 50%;
@@ -1399,6 +1554,7 @@ ul, li {
font-family: MailartRubberstamp; font-family: MailartRubberstamp;
transform: translate(-50%, -55%); transform: translate(-50%, -55%);
} }
.confront-area { .confront-area {
margin: 2px; margin: 2px;
padding: 4px; padding: 4px;

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": "10", "minimum": "13",
"verified": "11" "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": "11.1.0", "version": "13.0.3",
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v11.1.0.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

@@ -101,11 +101,7 @@
<select class="item-field-label-short-header" type="text" <select class="item-field-label-short-header" type="text"
name="system.skills.{{categkey}}.pnjvalue" value="{{category.pnjvalue}}" name="system.skills.{{categkey}}.pnjvalue" value="{{category.pnjvalue}}"
data-dtype="Number"> data-dtype="Number">
{{#select category.pnjvalue}} {{selectOptions @root.config.skillLevel selected=category.pnjvalue}}
{{#each @root.config.skillLevel as |level key| }}
<option value="{{level}}">{{level}}</option>
{{/each}}
{{/select}}
</select> </select>
{{/if}} {{/if}}
</h3> </h3>
@@ -125,11 +121,7 @@
<select class="item-field-label-short" type="text" <select class="item-field-label-short" type="text"
name="system.skills.{{categkey}}.skilllist.{{skillkey}}.value" value="{{skill.value}}" name="system.skills.{{categkey}}.skilllist.{{skillkey}}.value" value="{{skill.value}}"
data-dtype="Number"> data-dtype="Number">
{{#select skill.value}} {{selectOptions @root.config.skillLevel selected=skill.value}}
{{#each @root.config.skillLevel as |level key| }}
<option value="{{level}}">{{level}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>
<li class="item flexrow list-item"> <li class="item flexrow list-item">
@@ -178,11 +170,7 @@
</a></span> </a></span>
<select class="item-field-label-short" type="text" name="system.cephaly.skilllist.{{skillkey}}.value" <select class="item-field-label-short" type="text" name="system.cephaly.skilllist.{{skillkey}}.value"
value="{{skill.value}}" data-dtype="Number"> value="{{skill.value}}" data-dtype="Number">
{{#select skill.value}} {{selectOptions @root.config.skillLevel selected=skill.value}}
{{#each @root.config.skillLevel as |level key| }}
<option value="{{level}}">{{level}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>
{{/each}} {{/each}}

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

@@ -55,20 +55,13 @@
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span> <span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span>
<select class="" id="roll-select-transcendence" data-type="Number"> <select class="" id="roll-select-transcendence" data-type="Number">
{{#select skillTranscendence}} {{selectOptions config.skillLevel selected=skillTranscendence}}
{{#for 0 skill.value 1}}
<option value="{{this}}">{{this}}</option>
{{/for}}
{{/select}}
</select> </select>
</div> </div>
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">{{localize "ECRY.ui.transcendapply"}} : </span> <span class="roll-dialog-label">{{localize "ECRY.ui.transcendapply"}} : </span>
<select class="" id="roll-apply-transcendence" data-type="String"> <select class="" id="roll-apply-transcendence" data-type="String">
{{#select applyTranscendence}} {{selectOptions config.transcendanceOptions selected=applyTranscendence localize=true}}
<option value="execution">{{localize "ECRY.ui.execution"}}</option>
<option value="preservation">{{localize "ECRY.ui.preservation"}}</option>
{{/select}}
</select> </select>
</div> </div>
@@ -121,16 +114,8 @@
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Bonus/Malus : </span> <span class="roll-dialog-label">Bonus/Malus : </span>
<select id="bonusMalusPerso" name="bonusMalusPerso"> <select id="bonusMalusPerso" name="bonusMalusPerso" type="text" data-dtype="String">
{{#select bonusMalusPerso}} {{selectOptions config.bonusMalusPersoOptions selected=bonusMalusPerso labelAttr="label"}}
<option value="-3">-3</option>
<option value="-2">-2</option>
<option value="-1">-1</option>
<option value="0">0</option>
<option value="1">+1</option>
<option value="2">+2</option>
<option value="3">+3</option>
{{/select}}
</select> </select>
</div> </div>

View File

@@ -14,11 +14,7 @@
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span> <span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span>
<select class="" id="roll-select-transcendence" data-type="Number"> <select class="" id="roll-select-transcendence" data-type="Number">
{{#select skillTranscendence}} {{selectOptions config.skillLevel selected=skillTranscendence}}
{{#for 0 skill.value 1}}
<option value="{{this}}">{{this}}</option>
{{/for}}
{{/select}}
</select> </select>
</div> </div>
@@ -75,16 +71,8 @@
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Bonus/Malus : </span> <span class="roll-dialog-label">Bonus/Malus : </span>
<select id="bonusMalusPerso" name="bonusMalusPerso"> <select type="text" id="bonusMalusPerso" name="bonusMalusPerso" data-dtype="String">
{{#select bonusMalusPerso}} {{selectOptions config.bonusMalusPersoOptions selected=bonusMalusPerso labelAttr="label"}}
<option value="-3">-3</option>
<option value="-2">-2</option>
<option value="-1">-1</option>
<option value="0">0</option>
<option value="1">+1</option>
<option value="2">+2</option>
<option value="3">+3</option>
{{/select}}
</select> </select>
</div> </div>

View File

@@ -12,13 +12,8 @@
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Difficulté : </span> <span class="roll-dialog-label">Difficulté : </span>
<select class="" type="text" id="roll-difficulty" value="{{difficulty}}" data-dtype="Number"> <select class="" type="text" id="roll-difficulty" data-dtype="String">
{{#select difficulty}} {{selectOptions config.difficulty selected=difficulty localize=true labelAttr="difficulty"}}
{{#each config.difficulty as |diffData value| }}
<option value="{{diffData.value}}">{{localize diffData.difficulty}} / {{localize diffData.frequency}}
({{diffData.value}})</option>
{{/each}}
{{/select}}
</select> </select>
</div> </div>

View File

@@ -22,22 +22,14 @@
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.impactType"}}</label> <label class="item-name-label-long">{{localize "ECRY.ui.impactType"}}</label>
<select class="item-field-label-medium" type="text" name="system.impacttype" value="{{system.impacttype}}" data-dtype="String"> <select class="item-field-label-medium" type="text" name="system.impacttype" value="{{system.impacttype}}" data-dtype="String">
{{#select system.impacttype}} {{selectOptions config.impactTypes selected=system.impacttype localize=true }}
{{#each config.impactTypes as |type key| }}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.impactLevel"}}</label> <label class="item-name-label-long">{{localize "ECRY.ui.impactLevel"}}</label>
<select class="item-field-label-medium" type="text" name="system.impactlevel" value="{{system.impactlevel}}" data-dtype="String"> <select class="item-field-label-medium" type="text" name="system.impactlevel" value="{{system.impactlevel}}" data-dtype="String">
{{#select system.impactlevel}} {{selectOptions config.impactLevels selected=system.impactlevel localize=true }}
{{#each config.impactLevels as |level key| }}
<option value="{{key}}">{{localize level}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>
</ul> </ul>

View File

@@ -22,11 +22,7 @@
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.skill"}}</label> <label class="item-name-label-long">{{localize "ECRY.ui.skill"}}</label>
<select class="item-field-label-medium" type="text" name="system.skillkey" value="{{system.skillkey}}" data-dtype="String"> <select class="item-field-label-medium" type="text" name="system.skillkey" value="{{system.skillkey}}" data-dtype="String">
{{#select system.skillkey}} {{selectOptions config.skills selected=system.skillkey localize=true valueAttr="key" labelAttr="name"}}
{{#each config.skills as |skill key| }}
<option value="{{key}}">{{localize skill.name}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>

View File

@@ -22,23 +22,14 @@
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.traitType"}}</label> <label class="item-name-label-long">{{localize "ECRY.ui.traitType"}}</label>
<select class="item-field-label-medium" type="text" name="system.traitype" value="{{system.traitype}}" data-dtype="String"> <select class="item-field-label-medium" type="text" name="system.traitype" value="{{system.traitype}}" data-dtype="String">
{{#select system.traitype}} {{selectOptions config.traitTypes selected=system.traitype}}
{{#each config.traitTypes as |type key| }}
<option value="{{key}}">{{type}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.niveauTrait"}}</label> <label class="item-name-label-long">{{localize "ECRY.ui.niveauTrait"}}</label>
<select class="item-field-label-medium" type="text" name="system.level" value="{{system.level}}" data-dtype="Number"> <select class="item-field-label-medium" type="text" name="system.level" value="{{system.level}}" data-dtype="String">
{{#select system.level}} {{selectOptions config.traitLevel selected=system.level labelAttr="text"}}
{{#each config.traitLevel as |level key| }}
<option value="{{level.value}}">{{level.text}}</option>
{{/each}}
{{/select}}
</select>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -22,11 +22,7 @@
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{localize "ECRY.ui.weapontype"}}</label> <label class="item-name-label-long">{{localize "ECRY.ui.weapontype"}}</label>
<select class="item-field-label-medium" type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String"> <select class="item-field-label-medium" type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String">
{{#select system.weapontype}} {{selectOptions config.weaponTypes selected=system.weapontype localize=true}}
{{#each config.weaponTypes as |type key| }}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>

View File

@@ -8,11 +8,7 @@
<label class="item-field-label-long">{{localize "ECRY.ui.cost"}}</label> <label class="item-field-label-long">{{localize "ECRY.ui.cost"}}</label>
<input type="text" class="item-field-label-short" name="system.cost" value="{{system.cost}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.cost" value="{{system.cost}}" data-dtype="Number" />
<select class="item-field-label-medium" type="text" name="system.costunit" value="{{system.costunit}}" data-dtype="String"> <select class="item-field-label-medium" type="text" name="system.costunit" value="{{system.costunit}}" data-dtype="String">
{{#select system.costunit}} {{selectOptions config.costUnits selected=system.costunit localize=true labelAttr="name"}}
{{#each config.costUnits as |unit key| }}
<option value="{{key}}">{{localize unit.name}}</option>
{{/each}}
{{/select}}
</select> </select>
</li> </li>

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>