Compare commits

...

2 Commits

Author SHA1 Message Date
uberwald 0aba87a9de Correction de style CSS
Release Creation / build (release) Successful in 41s
2026-06-03 20:50:40 +02:00
uberwald 0cb764f1f3 Minor fixes and enhancements 2026-04-02 09:29:27 +02:00
39 changed files with 113 additions and 90 deletions
+7 -3
View File
@@ -482,19 +482,23 @@ table {
color: rgba(0, 0, 0, 0.9);
}
.editor {
.application.sheet .editor,
.window-app.sheet .editor {
border: 2;
height: 300px;
margin-top: 8px;
padding: 0 3px;
}
.medium-editor {
.application.sheet .medium-editor,
.window-app.sheet .medium-editor {
border: 2;
height: 240px;
padding: 0 3px;
}
.small-editor {
.application.sheet .small-editor,
.window-app.sheet .small-editor {
border: 2;
height: 120px;
padding: 0 3px;
+54 -41
View File
@@ -148,26 +148,32 @@ export class HawkmoonActor extends Actor {
/* -------------------------------------------- */
getSkills() {
let comp = []
for (let item of this.items) {
item = foundry.utils.duplicate(item)
if (item.type == "competence") {
item.system.attribut1total = item.system.niveau + (this.system.attributs[item.system.attribut1]?.value || 0)
item.system.attribut2total = item.system.niveau + (this.system.attributs[item.system.attribut2]?.value || 0)
item.system.attribut3total = item.system.niveau + (this.system.attributs[item.system.attribut3]?.value || 0)
if (item.system.niveau == 0) {
item.system.attribut1total -= 3
item.system.attribut2total -= 3
item.system.attribut3total -= 3
// Utiliser filter et map pour éviter les duplications inutiles
const comp = this.items
.filter(item => item.type === "competence")
.map(item => {
const itemCopy = foundry.utils.duplicate(item);
const attrs = this.system.attributs;
itemCopy.system.attribut1total = itemCopy.system.niveau + (attrs[itemCopy.system.attribut1]?.value || 0);
itemCopy.system.attribut2total = itemCopy.system.niveau + (attrs[itemCopy.system.attribut2]?.value || 0);
itemCopy.system.attribut3total = itemCopy.system.niveau + (attrs[itemCopy.system.attribut3]?.value || 0);
if (itemCopy.system.niveau === 0) {
itemCopy.system.attribut1total -= 3;
itemCopy.system.attribut2total -= 3;
itemCopy.system.attribut3total -= 3;
}
item.system.attribut1label = this.system.attributs[item.system.attribut1]?.label || ""
item.system.attribut2label = this.system.attributs[item.system.attribut2]?.label || ""
item.system.attribut3label = this.system.attributs[item.system.attribut3]?.label || ""
comp.push(item)
}
}
HawkmoonUtility.sortArrayObjectsByName(comp)
return comp
itemCopy.system.attribut1label = attrs[itemCopy.system.attribut1]?.label || "";
itemCopy.system.attribut2label = attrs[itemCopy.system.attribut2]?.label || "";
itemCopy.system.attribut3label = attrs[itemCopy.system.attribut3]?.label || "";
return itemCopy;
});
HawkmoonUtility.sortArrayObjectsByName(comp);
return comp;
}
/* ----------------------- --------------------- */
@@ -745,41 +751,48 @@ export class HawkmoonActor extends Actor {
/* -------------------------------------------- */
async rollArmeDegats(armeId, targetVigueur = undefined, rollDataInput = undefined) {
let arme = this.items.get(armeId)
if (!arme.system.equipped) {
ui.notifications.warn("Cette arme doit être équipée pour pouvoir infliger des dégâts !")
return
const arme = this.items.get(armeId);
if (!arme) {
ui.notifications.warn("Arme non trouvée !");
return;
}
if (arme.type == "arme") {
arme = this.prepareArme(arme)
if (!arme.system?.equipped) {
ui.notifications.warn("Cette arme doit être équipée pour pouvoir infliger des dégâts !");
return;
}
console.log("DEGATS", arme, targetVigueur, rollDataInput)
let roll
let bonus = 0
let bonus2 = 0
const preparedArme = arme.type === "arme" ? this.prepareArme(arme) : arme;
console.log("DEGATS", preparedArme, targetVigueur, rollDataInput);
let roll;
let bonus = 0;
let bonus2 = 0;
if (rollDataInput?.applyCoupDevastateur) {
bonus2 = Math.floor(this.system.attributs.pui.value / 2)
let talent = this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "coup dévastateur")
this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }])
bonus2 = Math.floor(this.system.attributs.pui.value / 2);
const talent = this.items.find(item => item.type === "talent" && item.name.toLowerCase() === "coup dévastateur");
if (talent) {
await this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }]);
}
}
if (rollDataInput?.isHeroique) {
if (rollDataInput?.attaqueCharge) {
bonus = 5
bonus = 5;
}
if (rollDataInput?.chargeCavalerie) {
bonus = 6
bonus = 6;
}
roll = await new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll()
roll = await new Roll("2d10rr10+" + preparedArme.system.totalDegats + "+" + bonus + "+" + bonus2).roll();
} else {
if (rollDataInput?.attaqueCharge) {
bonus = 3
bonus = 3;
}
if (rollDataInput?.chargeCavalerie) {
bonus = 4
bonus = 4;
}
roll = await new Roll("1d10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll()
roll = await new Roll("1d10+" + preparedArme.system.totalDegats + "+" + bonus + "+" + bonus2).roll();
}
await HawkmoonUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
let nbEtatPerdus = 0
@@ -788,17 +801,17 @@ export class HawkmoonActor extends Actor {
}
//console.log(roll)
let rollData = {
arme: arme,
arme: preparedArme,
finalResult: roll.total,
formula: roll.formula,
alias: this.name,
actorImg: this.img,
actorId: this.id,
defenderTokenId: rollDataInput?.defenderTokenId,
actionImg: arme.img,
actionImg: preparedArme.img,
targetVigueur: targetVigueur,
nbEtatPerdus: nbEtatPerdus
}
};
HawkmoonUtility.createChatWithRollMode(rollData.alias, {
content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-degats-result.hbs`, rollData)
})
+30 -12
View File
@@ -106,8 +106,17 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static updatePauseLogo(html) {
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
console.log("Hawkmoon | Updating pause logo to:", logoPause)
const validLogos = ["hawkmoon_logo", "logo_pause_resistance", "logo_pause_hawkmoon_stone", "logo_pause_hawkmoon_violet", "logo_pause_hawkmoon_beige", "logo_pause_hawkmoon_rouge"];
let logoName = game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo");
// Validation du nom du logo
if (!validLogos.includes(logoName)) {
console.error("Hawkmoon | Invalid logo name:", logoName);
return;
}
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + logoName + ".webp";
console.log("Hawkmoon | Updating pause logo to:", logoPause);
// Supprimer l'ancien style s'il existe
let oldStyle = document.getElementById('hawkmoon-pause-logo-override')
@@ -138,13 +147,6 @@ export class HawkmoonUtility {
}
/* -------------------------------------------- */
static createDirectOptionList(min, max) {
let options = {};
for (let i = min; i <= max; i++) {
options[`${i}`] = `${i}`;
}
return options;
}
static createArrayOptionList(min, max) {
let options = [];
for (let i = min; i <= max; i++) {
@@ -161,8 +163,19 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static async loadCompendium(compendium, filter = item => true) {
let compendiumData = await HawkmoonUtility.loadCompendiumData(compendium);
return compendiumData.filter(filter);
const pack = game.packs.get(compendium);
if (!pack) {
console.warn(`Hawkmoon | Compendium not found: ${compendium}`);
return [];
}
try {
const compendiumData = await pack.getDocuments();
return compendiumData.filter(filter);
} catch (error) {
console.error(`Hawkmoon | Error loading compendium ${compendium}:`, error);
return [];
}
}
/* -------------------------------------------- */
@@ -366,6 +379,12 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static computeResult(rollData) {
// Validation des données de roll
if (!rollData.roll?.terms?.[0]?.results?.[0]?.result) {
console.error("Hawkmoon | Invalid roll data:", rollData);
return;
}
rollData.diceResult = rollData.roll.terms[0].results[0].result
if (rollData.mainDice.includes("d20")) {
let diceValue = rollData.roll.terms[0].results[0].result
@@ -379,7 +398,6 @@ export class HawkmoonUtility {
}
}
//console.log("Result : ", rollData
this.computeResultQuality(rollData)
}
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000427
MANIFEST-000439
+3 -7
View File
@@ -1,7 +1,3 @@
2026/04/01-23:48:22.946320 7fe6ad3fe6c0 Recovering log #425
2026/04/01-23:48:22.956435 7fe6ad3fe6c0 Delete type=3 #423
2026/04/01-23:48:22.956489 7fe6ad3fe6c0 Delete type=0 #425
2026/04/01-23:48:49.994348 7fe6977fe6c0 Level-0 table #430: started
2026/04/01-23:48:49.994365 7fe6977fe6c0 Level-0 table #430: 0 bytes OK
2026/04/01-23:48:50.000517 7fe6977fe6c0 Delete type=0 #428
2026/04/01-23:48:50.021367 7fe6977fe6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
2026/05/06-18:00:14.573290 7fd32a7ed6c0 Recovering log #438
2026/05/06-18:00:14.583030 7fd32a7ed6c0 Delete type=0 #438
2026/05/06-18:00:14.583082 7fd32a7ed6c0 Delete type=3 #437
+3 -7
View File
@@ -1,7 +1,3 @@
2026/04/01-23:46:40.702487 7fe6ad3fe6c0 Recovering log #420
2026/04/01-23:46:40.761328 7fe6ad3fe6c0 Delete type=3 #418
2026/04/01-23:46:40.761414 7fe6ad3fe6c0 Delete type=0 #420
2026/04/01-23:48:06.570346 7fe6977fe6c0 Level-0 table #426: started
2026/04/01-23:48:06.570403 7fe6977fe6c0 Level-0 table #426: 0 bytes OK
2026/04/01-23:48:06.576732 7fe6977fe6c0 Delete type=0 #424
2026/04/01-23:48:06.601089 7fe6977fe6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
2026/05/06-17:43:45.593194 7f13097ed6c0 Recovering log #436
2026/05/06-17:43:45.603829 7f13097ed6c0 Delete type=0 #436
2026/05/06-17:43:45.603909 7f13097ed6c0 Delete type=3 #435
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000426
MANIFEST-000434
+3 -7
View File
@@ -1,7 +1,3 @@
2026/04/01-23:48:22.846060 7fe6acbfd6c0 Recovering log #424
2026/04/01-23:48:22.856276 7fe6acbfd6c0 Delete type=3 #422
2026/04/01-23:48:22.856340 7fe6acbfd6c0 Delete type=0 #424
2026/04/01-23:48:49.941313 7fe6977fe6c0 Level-0 table #429: started
2026/04/01-23:48:49.941337 7fe6977fe6c0 Level-0 table #429: 0 bytes OK
2026/04/01-23:48:49.947373 7fe6977fe6c0 Delete type=0 #427
2026/04/01-23:48:49.967196 7fe6977fe6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
2026/05/02-22:53:14.438750 7f09889fd6c0 Recovering log #433
2026/05/02-22:53:14.491497 7f09889fd6c0 Delete type=0 #433
2026/05/02-22:53:14.491560 7f09889fd6c0 Delete type=3 #432
+3 -7
View File
@@ -1,7 +1,3 @@
2026/04/01-23:46:40.215373 7fe697fff6c0 Recovering log #419
2026/04/01-23:46:40.273392 7fe697fff6c0 Delete type=3 #417
2026/04/01-23:46:40.273479 7fe697fff6c0 Delete type=0 #419
2026/04/01-23:48:06.532308 7fe6977fe6c0 Level-0 table #425: started
2026/04/01-23:48:06.532350 7fe6977fe6c0 Level-0 table #425: 0 bytes OK
2026/04/01-23:48:06.538189 7fe6977fe6c0 Delete type=0 #423
2026/04/01-23:48:06.544356 7fe6977fe6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
2026/05/02-22:52:57.748488 7fe282bfe6c0 Recovering log #431
2026/05/02-22:52:57.803792 7fe282bfe6c0 Delete type=0 #431
2026/05/02-22:52:57.803902 7fe282bfe6c0 Delete type=3 #430
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
+7 -3
View File
@@ -408,17 +408,21 @@ table {
.fvtt-hawkmoon-cyd .sheet-body select {
color: rgba(0, 0, 0, 0.9);
}
.editor {
.application.sheet .editor,
.window-app.sheet .editor {
border: 2;
height: 300px;
margin-top: 8px;
padding: 0 3px;
}
.medium-editor {
.application.sheet .medium-editor,
.window-app.sheet .medium-editor {
border: 2;
height: 240px;
padding: 0 3px;
}
.small-editor {
.application.sheet .small-editor,
.window-app.sheet .small-editor {
border: 2;
height: 120px;
padding: 0 3px;
File diff suppressed because one or more lines are too long