Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 05ca6e1763 | |||
| d3f014fcca | |||
| 679b3208cd | |||
| 871a18a0ee | |||
| 264c49eb06 | |||
| 9349c54966 | |||
| 274efac2b5 | |||
| 7a7398f8ca | |||
| 93600f7e13 | |||
| a6fa3afbee | |||
| 1051349dd0 | |||
| a245b0e87c | |||
| c9ce3367ed | |||
| e95e068112 | |||
| 6dd63a2c54 | |||
| 650e4b7449 | |||
| 3f27482ad9 | |||
| 436b282ff5 | |||
| 39f8cfdbcc | |||
| 24a57a906e | |||
| 667f3678fb | |||
| d5dd9e5bf7 | |||
| 3403b72d1f | |||
| 8a4487c833 | |||
| 4eece5aaf4 | |||
| b574ba76ef | |||
| 0b9e1a80af | |||
| 6505b1c969 | |||
| 280e90d7a6 | |||
| 4fa9a911a0 | |||
| b8c61f8f12 | |||
| b47b14a4b1 |
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.
Binary file not shown.
|
After Width: | Height: | Size: 807 KiB |
@@ -7,7 +7,7 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
|||||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class HawkmoonActorSheet extends ActorSheet {
|
export class HawkmoonActorSheet extends foundry.appv1.sheets.ActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
@@ -56,8 +56,8 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
nbCombativite: this.actor.system.sante.nbcombativite,
|
nbCombativite: this.actor.system.sante.nbcombativite,
|
||||||
combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
|
combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
|
||||||
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
||||||
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}),
|
||||||
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
@@ -148,8 +148,8 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
this.actor.rollArmeOffensif(armeId)
|
this.actor.rollArmeOffensif(armeId)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.roll-assomer').click((event) => {
|
html.find('.roll-assommer').click((event) => {
|
||||||
this.actor.rollAssomer()
|
this.actor.rollAssommer()
|
||||||
})
|
})
|
||||||
html.find('.roll-coup-bas').click((event) => {
|
html.find('.roll-coup-bas').click((event) => {
|
||||||
this.actor.rollCoupBas()
|
this.actor.rollCoupBas()
|
||||||
|
|||||||
@@ -67,6 +67,10 @@ export class HawkmoonActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareArme(arme) {
|
prepareArme(arme) {
|
||||||
|
if (this.type == "cellule") {
|
||||||
|
return arme
|
||||||
|
}
|
||||||
|
|
||||||
arme = foundry.utils.duplicate(arme)
|
arme = foundry.utils.duplicate(arme)
|
||||||
let combat = this.getCombatValues()
|
let combat = this.getCombatValues()
|
||||||
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
|
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
|
||||||
@@ -202,6 +206,20 @@ export class HawkmoonActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCombatValues() {
|
getCombatValues() {
|
||||||
|
if (this.type == "cellule") {
|
||||||
|
return {
|
||||||
|
initBase: 0,
|
||||||
|
initTotal: 0,
|
||||||
|
bonusDegats: 0,
|
||||||
|
bonusDegatsTotal: 0,
|
||||||
|
vitesseBase: 0,
|
||||||
|
vitesseTotal: 0,
|
||||||
|
defenseBase: 0,
|
||||||
|
protection: 0,
|
||||||
|
defenseTotal: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let combat = {
|
let combat = {
|
||||||
initBase: this.system.attributs.adr.value,
|
initBase: this.system.attributs.adr.value,
|
||||||
initTotal: this.system.attributs.adr.value + this.system.combat.initbonus,
|
initTotal: this.system.attributs.adr.value + this.system.combat.initbonus,
|
||||||
@@ -406,7 +424,7 @@ export class HawkmoonActor extends Actor {
|
|||||||
if (sante.etat == this.system.sante.nbcombativite) {
|
if (sante.etat == this.system.sante.nbcombativite) {
|
||||||
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
|
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
|
||||||
}
|
}
|
||||||
this.processCombativite(sante)
|
// Duplicated ! this.processCombativite(sante)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -525,6 +543,23 @@ export class HawkmoonActor extends Actor {
|
|||||||
return init || -1
|
return init || -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getBestAttackValue() {
|
||||||
|
let attackList = this.items.filter(item => (item.type == "arme" || item.type == "talent") && item.system.equipped)
|
||||||
|
let maxOff = 0
|
||||||
|
let bestArme
|
||||||
|
for (let arme of attackList) {
|
||||||
|
if (arme.type == "arme") {
|
||||||
|
arme = this.prepareArme(arme)
|
||||||
|
}
|
||||||
|
if (arme.system.totalOffensif > maxOff) {
|
||||||
|
maxOff = arme.system.totalOffensif
|
||||||
|
bestArme = foundry.utils.duplicate(arme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bestArme
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getBestDefenseValue() {
|
getBestDefenseValue() {
|
||||||
let defenseList = this.items.filter(item => (item.type == "arme") && item.system.equipped)
|
let defenseList = this.items.filter(item => (item.type == "arme") && item.system.equipped)
|
||||||
@@ -647,7 +682,7 @@ export class HawkmoonActor extends Actor {
|
|||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollAssomer() {
|
async rollAssommer() {
|
||||||
let rollData = this.getCommonRollData("pui", undefined, "Filouterie")
|
let rollData = this.getCommonRollData("pui", undefined, "Filouterie")
|
||||||
rollData.assomer = true
|
rollData.assomer = true
|
||||||
rollData.conditionsCommunes = true
|
rollData.conditionsCommunes = true
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
|||||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 1}
|
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 1, "equipement": 1, "protection": 1, "artefact": 1, "arme": 1, "monnaie": 1 }
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class HawkmoonCelluleSheet extends ActorSheet {
|
export class HawkmoonCelluleSheet extends foundry.appv1.sheets.ActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
@@ -45,6 +45,13 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
|||||||
ressources: foundry.utils.duplicate(this.actor.getRessources()),
|
ressources: foundry.utils.duplicate(this.actor.getRessources()),
|
||||||
contacts: foundry.utils.duplicate(this.actor.getContacts()),
|
contacts: foundry.utils.duplicate(this.actor.getContacts()),
|
||||||
members: this.getMembers(),
|
members: this.getMembers(),
|
||||||
|
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||||
|
artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
|
||||||
|
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
||||||
|
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
||||||
|
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
||||||
|
richesse: this.actor.computeRichesse(),
|
||||||
|
valeurEquipement: this.actor.computeValeurEquipement(),
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
@@ -110,15 +117,15 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
|||||||
let value = ev.currentTarget.value
|
let value = ev.currentTarget.value
|
||||||
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
||||||
})
|
})
|
||||||
|
html.find('.quantity-modify').click(event => {
|
||||||
html.find('.quantity-minus').click(event => {
|
const li = $(event.currentTarget).parents(".item")
|
||||||
const li = $(event.currentTarget).parents(".item");
|
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||||
this.actor.incDecQuantity(li.data("item-id"), -1);
|
this.actor.incDecQuantity( li.data("item-id"), value );
|
||||||
});
|
})
|
||||||
html.find('.quantity-plus').click(event => {
|
html.find('.item-add').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item");
|
const itemType = $(event.currentTarget).data("type")
|
||||||
this.actor.incDecQuantity(li.data("item-id"), +1);
|
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||||
});
|
})
|
||||||
|
|
||||||
html.find('.lock-unlock-sheet').click((event) => {
|
html.find('.lock-unlock-sheet').click((event) => {
|
||||||
this.options.editScore = !this.options.editScore;
|
this.options.editScore = !this.options.editScore;
|
||||||
@@ -149,7 +156,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
|||||||
super._onDropItem(event, dragData)
|
super._onDropItem(event, dragData)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ui.notifications("Ce type d'item n'est pas autorisé sur une Cellule.")
|
ui.notification.info("Ce type d'item n'est pas autorisé sur une Cellule.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ export class HawkmoonCombat extends Combat {
|
|||||||
async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
|
async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
|
||||||
ids = typeof ids === "string" ? [ids] : ids;
|
ids = typeof ids === "string" ? [ids] : ids;
|
||||||
for (let cId of ids) {
|
for (let cId of ids) {
|
||||||
const c = this.combatants.get(ids[cId]);
|
const c = this.combatants.get(cId);
|
||||||
//console.log("Init for combattant", c )
|
console.log("Init for combattant", c, ids)
|
||||||
let id = c._id || c.id
|
let id = c._id || c.id
|
||||||
let initValue = c.actor ? c.actor.getInitiativeScore() : 0
|
let initValue = c.actor ? c.actor.getInitiativeScore() : 0
|
||||||
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initValue } ]);
|
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initValue } ]);
|
||||||
|
|||||||
@@ -3,10 +3,30 @@ export const HAWKMOON_CONFIG = {
|
|||||||
optionsDifficulte: [
|
optionsDifficulte: [
|
||||||
{ key: "0", label: "Aucune/Inconnue" },
|
{ key: "0", label: "Aucune/Inconnue" },
|
||||||
{ key: "5", label: "Facile (5)" },
|
{ key: "5", label: "Facile (5)" },
|
||||||
|
{ key: "6", label: "(6)" },
|
||||||
|
{ key: "7", label: "(7)" },
|
||||||
|
{ key: "8", label: "(8)" },
|
||||||
|
{ key: "9", label: "(9)" },
|
||||||
{ key: "10", label: "Moyenne (10)" },
|
{ key: "10", label: "Moyenne (10)" },
|
||||||
|
{ key: "11", label: "(11)" },
|
||||||
|
{ key: "12", label: "(12)" },
|
||||||
|
{ key: "13", label: "(13)" },
|
||||||
|
{ key: "14", label: "(14)" },
|
||||||
{ key: "15", label: "Ardue (15)" },
|
{ key: "15", label: "Ardue (15)" },
|
||||||
|
{ key: "16", label: "(16)" },
|
||||||
|
{ key: "17", label: "(17)" },
|
||||||
|
{ key: "18", label: "(18)" },
|
||||||
|
{ key: "19", label: "(19)" },
|
||||||
{ key: "20", label: "Hasardeuse (20)" },
|
{ key: "20", label: "Hasardeuse (20)" },
|
||||||
|
{ key: "21", label: "(21)" },
|
||||||
|
{ key: "22", label: "(22)" },
|
||||||
|
{ key: "23", label: "(23)" },
|
||||||
|
{ key: "24", label: "(24)" },
|
||||||
{ key: "25", label: "Insensée (25)" },
|
{ key: "25", label: "Insensée (25)" },
|
||||||
|
{ key: "26", label: "(26)" },
|
||||||
|
{ key: "27", label: "(27)" },
|
||||||
|
{ key: "28", label: "(28)" },
|
||||||
|
{ key: "29", label: "(29)" },
|
||||||
{ key: "30", label: "Pure Folie (30)" }
|
{ key: "30", label: "Pure Folie (30)" }
|
||||||
],
|
],
|
||||||
optionsDistanceTir: [
|
optionsDistanceTir: [
|
||||||
@@ -15,6 +35,12 @@ export const HAWKMOON_CONFIG = {
|
|||||||
{ key: "porteelongue", label: "Longue ({protectionDefenseur}+14)" }
|
{ key: "porteelongue", label: "Longue ({protectionDefenseur}+14)" }
|
||||||
],
|
],
|
||||||
optionsBonusMalus: [
|
optionsBonusMalus: [
|
||||||
|
{ key: "-10", label: "-10" },
|
||||||
|
{ key: "-9", label: "-9" },
|
||||||
|
{ key: "-8", label: "-8" },
|
||||||
|
{ key: "-7", label: "-7" },
|
||||||
|
{ key: "-6", label: "-6" },
|
||||||
|
{ key: "-5", label: "-5" },
|
||||||
{ key: "-4", label: "-4" },
|
{ key: "-4", label: "-4" },
|
||||||
{ key: "-3", label: "-3" },
|
{ key: "-3", label: "-3" },
|
||||||
{ key: "-2", label: "-2" },
|
{ key: "-2", label: "-2" },
|
||||||
@@ -23,7 +49,13 @@ export const HAWKMOON_CONFIG = {
|
|||||||
{ key: "1", label: "+1" },
|
{ key: "1", label: "+1" },
|
||||||
{ key: "2", label: "+2" },
|
{ key: "2", label: "+2" },
|
||||||
{ key: "3", label: "+3" },
|
{ key: "3", label: "+3" },
|
||||||
{ key: "4", label: "+4" }
|
{ key: "4", label: "+4" },
|
||||||
|
{ key: "5", label: "+5" },
|
||||||
|
{ key: "6", label: "+6" },
|
||||||
|
{ key: "7", label: "+7" },
|
||||||
|
{ key: "8", label: "+8" },
|
||||||
|
{ key: "9", label: "+9" },
|
||||||
|
{ key: "10", label: "+10" }
|
||||||
],
|
],
|
||||||
optionsTailleCible: [
|
optionsTailleCible: [
|
||||||
{ key: "normal", label: "Normal (SD+0)" },
|
{ key: "normal", label: "Normal (SD+0)" },
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class HawkmoonTokenHud {
|
|||||||
|
|
||||||
const hudData = { actor: actor }
|
const hudData = { actor: actor }
|
||||||
|
|
||||||
const controlIconActions = html.find('.control-icon[data-action=combat]');
|
const controlIconActions = $(html).find('.control-icon[data-action=combat]');
|
||||||
// initiative
|
// initiative
|
||||||
await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
|
await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
|
||||||
(event) => {
|
(event) => {
|
||||||
@@ -34,7 +34,7 @@ export class HawkmoonTokenHud {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async addTokenHudExtensions(app, html, tokenId) {
|
static async addTokenHudExtensions(app, html, tokenId) {
|
||||||
const controlIconCombat = html.find('.control-icon[data-action=combat]')
|
const controlIconCombat = $(html).find('.control-icon[data-action=combat]')
|
||||||
if (controlIconCombat.length>0 ) {
|
if (controlIconCombat.length>0 ) {
|
||||||
HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
|
HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ export class HawkmoonTokenHud {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
|
static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
|
||||||
const hud = $(await renderTemplate(template, hudData))
|
const hud = $(await foundry.applications.handlebars.renderTemplate(template, hudData))
|
||||||
const list = hud.find('div.hawkmoon-hud-list')
|
const list = hud.find('div.hawkmoon-hud-list')
|
||||||
|
|
||||||
HawkmoonTokenHud._toggleHudListActive(hud, list);
|
HawkmoonTokenHud._toggleHudListActive(hud, list);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { HawkmoonUtility } from "./hawkmoon-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 HawkmoonItemSheet extends ItemSheet {
|
export class HawkmoonItemSheet extends foundry.appv1.sheets.ItemSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|||||||
@@ -56,14 +56,14 @@ Hooks.once("init", async function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Register sheet application classes
|
// Regster sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
|
||||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
|
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
|
||||||
Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
|
||||||
|
|
||||||
HawkmoonUtility.init()
|
HawkmoonUtility.init()
|
||||||
HawkmoonAutomation.init()
|
HawkmoonAutomation.init()
|
||||||
@@ -138,4 +138,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ export class HawkmoonRollDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData) {
|
static async create(actor, rollData) {
|
||||||
|
|
||||||
let options = { classes: ["HawkmoonDialog"], width: 320, height: 'fit-content', 'z-index': 99999 };
|
let options = { classes: ["HawkmoonDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
|
||||||
let html = await renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
|
let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
|
||||||
|
|
||||||
return new HawkmoonRollDialog(actor, rollData, html, options);
|
return new HawkmoonRollDialog(actor, rollData, html, options);
|
||||||
}
|
}
|
||||||
@@ -31,7 +31,8 @@ export class HawkmoonRollDialog extends Dialog {
|
|||||||
icon: '<i class="fas fa-times"></i>',
|
icon: '<i class="fas fa-times"></i>',
|
||||||
label: "Annuler",
|
label: "Annuler",
|
||||||
callback: () => { this.close() }
|
callback: () => { this.close() }
|
||||||
} },
|
}
|
||||||
|
},
|
||||||
close: close
|
close: close
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+66
-32
@@ -15,8 +15,7 @@ export class HawkmoonUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async init() {
|
static async init() {
|
||||||
Hooks.on('renderChatLog', (log, html, data) => HawkmoonUtility.chatListeners(html))
|
Hooks.on('renderChatLog', (log, html, data) => HawkmoonUtility.chatListeners(html))
|
||||||
Hooks.on("getChatLogEntryContext", (html, options) => HawkmoonUtility.chatRollMenu(html, options))
|
Hooks.on("getChatMessageContextOptions", (html, options) => HawkmoonUtility.chatRollMenu(html, options))
|
||||||
|
|
||||||
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
||||||
HawkmoonUtility.pushInitiativeOptions(html, options);
|
HawkmoonUtility.pushInitiativeOptions(html, options);
|
||||||
})
|
})
|
||||||
@@ -105,15 +104,33 @@ export class HawkmoonUtility {
|
|||||||
return this.skills
|
return this.skills
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
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)
|
||||||
|
|
||||||
|
// Supprimer l'ancien style s'il existe
|
||||||
|
let oldStyle = document.getElementById('hawkmoon-pause-logo-override')
|
||||||
|
if (oldStyle) {
|
||||||
|
oldStyle.remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Injecter une règle CSS pour override le logo
|
||||||
|
let styleSheet = document.createElement('style')
|
||||||
|
styleSheet.id = 'hawkmoon-pause-logo-override'
|
||||||
|
styleSheet.textContent = `#pause>img { content: url(${logoPause}) !important; }`
|
||||||
|
document.head.appendChild(styleSheet)
|
||||||
|
|
||||||
|
console.log("Hawkmoon | Logo CSS rule injected")
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async ready() {
|
static async ready() {
|
||||||
const skills = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.skills")
|
const skills = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.skills")
|
||||||
this.skills = skills.map(i => i.toObject())
|
this.skills = skills.map(i => i.toObject())
|
||||||
|
|
||||||
// Setup pause logo
|
// Setup pause logo
|
||||||
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
|
this.updatePauseLogo()
|
||||||
let logoImg = document.querySelector('#pause').children[0]
|
|
||||||
logoImg.setAttribute('style', `content: url(${logoPause})`)
|
|
||||||
|
|
||||||
game.system.hawkmoon.config.listeNiveauSkill = this.createDirectOptionList(0, 10)
|
game.system.hawkmoon.config.listeNiveauSkill = this.createDirectOptionList(0, 10)
|
||||||
game.system.hawkmoon.config.listeNiveauCreature = this.createDirectOptionList(0, 35)
|
game.system.hawkmoon.config.listeNiveauCreature = this.createDirectOptionList(0, 35)
|
||||||
@@ -155,7 +172,7 @@ export class HawkmoonUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async chatListeners(html) {
|
static async chatListeners(html) {
|
||||||
|
|
||||||
html.on("click", '.predilection-reroll', async event => {
|
$(html).on("click", '.predilection-reroll', async event => {
|
||||||
let predIdx = $(event.currentTarget).data("predilection-index")
|
let predIdx = $(event.currentTarget).data("predilection-index")
|
||||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
@@ -166,14 +183,14 @@ export class HawkmoonUtility {
|
|||||||
HawkmoonUtility.rollHawkmoon(rollData)
|
HawkmoonUtility.rollHawkmoon(rollData)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.on("click", '.roll-chat-degat', async event => {
|
$(html).on("click", '.roll-chat-degat', async event => {
|
||||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||||
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
||||||
})
|
})
|
||||||
html.on("click", '.roll-chat-degat-devastateur', async event => {
|
$(html).on("click", '.roll-chat-degat-devastateur', async event => {
|
||||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
@@ -196,7 +213,7 @@ export class HawkmoonUtility {
|
|||||||
'systems/fvtt-hawkmoon-cyd/templates/partial-automation.html',
|
'systems/fvtt-hawkmoon-cyd/templates/partial-automation.html',
|
||||||
'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html',
|
'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html',
|
||||||
]
|
]
|
||||||
return loadTemplates(templatePaths);
|
return foundry.applications.handlebars.loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -279,9 +296,13 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onSocketMesssage(msg) {
|
static onSocketMesssage(msg) {
|
||||||
if (msg.name == "msg_apply_combativite") {
|
if (msg.msg == "msg_apply_combativite") {
|
||||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
let defender = game.canvas.tokens.get(msg.data.defenderTokenId)?.actor
|
||||||
|
if (defender) {
|
||||||
defender.changeEtatCombativite(msg.data.value)
|
defender.changeEtatCombativite(msg.data.value)
|
||||||
|
} else {
|
||||||
|
console.warn("HawkmoonUtility.onSocketMesssage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,14 +376,19 @@ export class HawkmoonUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("Result : ", rollData)
|
//console.log("Result : ", rollData
|
||||||
|
this.computeResultQuality(rollData)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeResultQuality(rollData) {
|
||||||
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
||||||
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
||||||
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
||||||
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyCombativite(rollData, value) {
|
static applyCombativite(rollData, value) {
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
@@ -432,10 +458,10 @@ export class HawkmoonUtility {
|
|||||||
rollData.diceFormula += `+3`
|
rollData.diceFormula += `+3`
|
||||||
}
|
}
|
||||||
if (rollData.hasAmbidextre) {
|
if (rollData.hasAmbidextre) {
|
||||||
if ( rollData.attaqueAmbidextre1) {
|
if (rollData.ambidextre1) {
|
||||||
rollData.diceFormula += `-3`
|
rollData.diceFormula += `-3`
|
||||||
} else if ( rollData.attaqueAmbidextre2) {
|
} else if (rollData.ambidextre2) {
|
||||||
rollData.diceFormula += `-5`
|
rollData.diceFormula += `-6`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rollData.defenseurAuSol) {
|
if (rollData.defenseurAuSol) {
|
||||||
@@ -500,7 +526,7 @@ export class HawkmoonUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.createChatWithRollMode(rollData.alias, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
||||||
}, rollData)
|
}, rollData)
|
||||||
|
|
||||||
if ((rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
|
if ((rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
|
||||||
@@ -514,30 +540,35 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getCombativiteList(nbActivite) {
|
static getCombativiteList(nbActivite) {
|
||||||
let list = [ { value: 0, label: "Combatif"}]
|
let list = [{ value: String(0), label: "Combatif" }]
|
||||||
for (let i = 1; i < nbActivite - 2; i++) {
|
for (let i = 1; i < nbActivite - 2; i++) {
|
||||||
list.push({ value: i, label:"Eprouvé " + i} )
|
list.push({ value: String(i), label: "Eprouvé " + i })
|
||||||
}
|
}
|
||||||
list[nbActivite-2] = { value: nbActivite-2, label:"Affaibli"}
|
list[nbActivite - 2] = { value: String(nbActivite - 2), label: "Affaibli" }
|
||||||
list[nbActivite-1] = { value: nbActivite-1, label:"Très Affaibli"}
|
list[nbActivite - 1] = { value: String(nbActivite - 1), label: "Très Affaibli" }
|
||||||
list[nbActivite] = { value: nbActivite, label:"Vaincu"}
|
list[nbActivite] = { value: String(nbActivite), label: "Vaincu" }
|
||||||
return list
|
return list
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async bonusRollHawkmoon(rollData) {
|
static async bonusRollHawkmoon(rollData) {
|
||||||
rollData.bonusFormula = rollData.addedBonus
|
rollData.bonusFormula = rollData.addedBonus
|
||||||
|
console.log("Bonus Roll Hawkmoon", rollData.bonusFormula)
|
||||||
|
|
||||||
|
if (!Number(rollData.bonusFormula)) {
|
||||||
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
||||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||||
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
||||||
|
rollData.finalResult += Number(rollData.bonusRoll.total)
|
||||||
|
} else {
|
||||||
|
rollData.finalResult += Number(rollData.bonusFormula)
|
||||||
|
console.log("Bonus Roll Hawkmoon 2", rollData.finalResult)
|
||||||
|
}
|
||||||
|
|
||||||
rollData.finalResult += rollData.bonusRoll.total
|
this.computeResultQuality(rollData)
|
||||||
|
|
||||||
this.computeResult(rollData)
|
|
||||||
|
|
||||||
this.createChatWithRollMode(rollData.alias, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
||||||
}, rollData)
|
}, rollData)
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -663,6 +694,7 @@ export class HawkmoonUtility {
|
|||||||
rollData.defenderTokenId = target.id
|
rollData.defenderTokenId = target.id
|
||||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||||
rollData.armeDefense = defender.getBestDefenseValue()
|
rollData.armeDefense = defender.getBestDefenseValue()
|
||||||
|
rollData.armeAttaqueDefenseur = defender.getBestAttackValue()
|
||||||
rollData.targetVigueur = defender.getVigueur()
|
rollData.targetVigueur = defender.getVigueur()
|
||||||
rollData.protectionDefenseur = defender.getProtection()
|
rollData.protectionDefenseur = defender.getProtection()
|
||||||
if (rollData.immobiliser || rollData.repousser) {
|
if (rollData.immobiliser || rollData.repousser) {
|
||||||
@@ -673,6 +705,8 @@ export class HawkmoonUtility {
|
|||||||
rollData.difficulte = combatValues.defenseTotal
|
rollData.difficulte = combatValues.defenseTotal
|
||||||
} else if (rollData.assomer) {
|
} else if (rollData.assomer) {
|
||||||
rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
|
rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
|
||||||
|
} else if (rollData.desengager) {
|
||||||
|
rollData.difficulte = rollData.armeAttaqueDefenseur?.system?.totalOffensif || 0;
|
||||||
} else if (rollData.armeDefense) {
|
} else if (rollData.armeDefense) {
|
||||||
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
||||||
if (!rollData.desengager && !rollData.arme.system.armenaturelle && !rollData.arme.system.armefortune) {
|
if (!rollData.desengager && !rollData.arme.system.armenaturelle && !rollData.arme.system.armefortune) {
|
||||||
@@ -693,7 +727,7 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyBonneAventureRoll(li, changed, addedBonus) {
|
static applyBonneAventureRoll(li, changed, addedBonus) {
|
||||||
let msgId = li.data("message-id")
|
let msgId = $(li).data("message-id")
|
||||||
let msg = game.messages.get(msgId)
|
let msg = game.messages.get(msgId)
|
||||||
if (msg) {
|
if (msg) {
|
||||||
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
||||||
@@ -712,7 +746,7 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyEclatRoll(li, changed, addedBonus) {
|
static applyEclatRoll(li, changed, addedBonus) {
|
||||||
let msgId = li.data("message-id")
|
let msgId = $(li).data("message-id")
|
||||||
let msg = game.messages.get(msgId)
|
let msg = game.messages.get(msgId)
|
||||||
if (msg) {
|
if (msg) {
|
||||||
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
||||||
@@ -733,13 +767,13 @@ export class HawkmoonUtility {
|
|||||||
static chatRollMenu(html, options) {
|
static chatRollMenu(html, options) {
|
||||||
let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
|
let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
|
||||||
let canApplyBA = function (li) {
|
let canApplyBA = 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", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||||
return (!rollData.isReroll && actor.getBonneAventure() > 0)
|
return (!rollData.isReroll && actor.getBonneAventure() > 0)
|
||||||
}
|
}
|
||||||
let canApplyPE = function (li) {
|
let canApplyPE = 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", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||||
return (!rollData.isReroll && actor.getEclat() > 0)
|
return (!rollData.isReroll && actor.getEclat() > 0)
|
||||||
@@ -765,7 +799,7 @@ export class HawkmoonUtility {
|
|||||||
name: "Relancer le dé (1 point d'Eclat)",
|
name: "Relancer le dé (1 point d'Eclat)",
|
||||||
icon: "<i class='fas fa-user-plus'></i>",
|
icon: "<i class='fas fa-user-plus'></i>",
|
||||||
condition: canApply && canApplyPE,
|
condition: canApply && canApplyPE,
|
||||||
callback: li => HawkmoonUtility.applyEclatRoll(li, -3, "reroll")
|
callback: li => HawkmoonUtility.applyEclatRoll(li, -1, "reroll")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return options
|
return options
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les armes
|
||||||
|
*/
|
||||||
|
export class ArmeDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
|
typearme: new fields.StringField({ initial: "" }),
|
||||||
|
armenaturelle: new fields.BooleanField({ initial: false }),
|
||||||
|
armefortune: new fields.BooleanField({ initial: false }),
|
||||||
|
bonusmaniementoff: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
seuildefense: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
onlevelonly: new fields.BooleanField({ initial: false }),
|
||||||
|
degats: new fields.StringField({ initial: "" }),
|
||||||
|
deuxmains: new fields.BooleanField({ initial: false }),
|
||||||
|
percearmure: new fields.BooleanField({ initial: false }),
|
||||||
|
percearmurevalue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
courte: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
moyenne: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
longue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
tr: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les artefacts
|
||||||
|
*/
|
||||||
|
export class ArtefactDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
|
complexite: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
branche: new fields.StringField({ initial: "" }),
|
||||||
|
branche2: new fields.StringField({ initial: "none" }),
|
||||||
|
dureerealisation: new fields.StringField({ initial: "" }),
|
||||||
|
tempsroute: new fields.StringField({ initial: "" }),
|
||||||
|
effetdejeu: new fields.StringField({ initial: "" }),
|
||||||
|
defautcourant: new fields.StringField({ initial: "" }),
|
||||||
|
autrescarac: new fields.StringField({ initial: "" }),
|
||||||
|
avantagespossibles: new fields.StringField({ initial: "" }),
|
||||||
|
avantages: new fields.StringField({ initial: "" }),
|
||||||
|
competences: new fields.StringField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/**
|
||||||
|
* Template de base pour tous les items
|
||||||
|
*/
|
||||||
|
export class BaseItemModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template pour les équipements de base
|
||||||
|
*/
|
||||||
|
export class BaseEquipItemModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template pour l'automatisation
|
||||||
|
*/
|
||||||
|
export class AutomationItemModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
isautomated: new fields.BooleanField({ initial: false }),
|
||||||
|
automations: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
id: new fields.StringField({ initial: "" }),
|
||||||
|
eventtype: new fields.StringField({ initial: "on-drop" }),
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
bonusname: new fields.StringField({ initial: "vigueur" }),
|
||||||
|
bonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
competence: new fields.StringField({ initial: "" }),
|
||||||
|
minLevel: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
baCost: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
{ initial: [] }
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les cellules
|
||||||
|
*/
|
||||||
|
export class CelluleDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
notoriete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
resistance: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
developpement: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
members: new fields.ArrayField(new fields.StringField(), { initial: [] }),
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les compétences
|
||||||
|
*/
|
||||||
|
export class CompetenceDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
niveau: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
attribut1: new fields.StringField({ initial: "" }),
|
||||||
|
attribut2: new fields.StringField({ initial: "" }),
|
||||||
|
attribut3: new fields.StringField({ initial: "" }),
|
||||||
|
doublebonus: new fields.BooleanField({ initial: false }),
|
||||||
|
predilections: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
id: new fields.StringField({ initial: "" }),
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
description: new fields.StringField({ initial: "" }),
|
||||||
|
acquise: new fields.BooleanField({ initial: false }),
|
||||||
|
maitrise: new fields.BooleanField({ initial: false }),
|
||||||
|
used: new fields.BooleanField({ initial: false })
|
||||||
|
}),
|
||||||
|
{ initial: [] }
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les contacts
|
||||||
|
*/
|
||||||
|
export class ContactDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
contacttype: new fields.StringField({ initial: "" }),
|
||||||
|
niveau: new fields.StringField({ initial: "" }),
|
||||||
|
pointdev: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les créatures
|
||||||
|
*/
|
||||||
|
export class CreatureDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
// Template biodata
|
||||||
|
biodata: new fields.SchemaField({
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
age: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
poids: new fields.StringField({ initial: "" }),
|
||||||
|
taille: new fields.StringField({ initial: "" }),
|
||||||
|
cheveux: new fields.StringField({ initial: "" }),
|
||||||
|
sexe: new fields.StringField({ initial: "" }),
|
||||||
|
yeux: new fields.StringField({ initial: "" }),
|
||||||
|
description: new fields.StringField({ initial: "" }),
|
||||||
|
habitat: new fields.StringField({ initial: "" }),
|
||||||
|
notes: new fields.StringField({ initial: "" }),
|
||||||
|
statut: new fields.StringField({ initial: "" }),
|
||||||
|
gmnotes: new fields.StringField({ initial: "" }),
|
||||||
|
statutresistant: new fields.StringField({ initial: "commun" })
|
||||||
|
}),
|
||||||
|
// Template core
|
||||||
|
subactors: new fields.ArrayField(new fields.StringField(), { initial: [] }),
|
||||||
|
attributs: new fields.SchemaField({
|
||||||
|
adr: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Adresse" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "adresse" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "adr" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pui: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Puissance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "puissance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pui" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
cla: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Clairvoyance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "clairvoyance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "cla" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Présence" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "presence" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
tre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Trempe" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "trempe" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "tre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
bonneaventure: new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
actuelle: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
experience: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
eclat: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
sante: new fields.SchemaField({
|
||||||
|
vigueur: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
etat: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vigueurmodifier: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
nbcombativite: new fields.NumberField({ initial: 5, integer: true })
|
||||||
|
}),
|
||||||
|
adversite: new fields.SchemaField({
|
||||||
|
bleue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rouge: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
noire: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
vitesse: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
combat: new fields.SchemaField({
|
||||||
|
initbonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vitessebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
bonusdegats: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
attaquebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensetotale: new fields.BooleanField({ initial: false }),
|
||||||
|
monte: new fields.BooleanField({ initial: false })
|
||||||
|
}),
|
||||||
|
// Propriétés spécifiques aux créatures
|
||||||
|
ressources: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour l'équipement
|
||||||
|
*/
|
||||||
|
export class EquipementDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les historiques
|
||||||
|
*/
|
||||||
|
export class HistoriqueDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
bonusmalus: new fields.StringField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* Index des DataModels pour Hawkmoon CYD
|
||||||
|
* Ce fichier centralise tous les exports des modèles de données
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Modèles d'items
|
||||||
|
export { TalentDataModel } from './talent.mjs';
|
||||||
|
export { HistoriqueDataModel } from './historique.mjs';
|
||||||
|
export { ProfilDataModel } from './profil.mjs';
|
||||||
|
export { CompetenceDataModel } from './competence.mjs';
|
||||||
|
export { ArmeDataModel } from './arme.mjs';
|
||||||
|
export { ProtectionDataModel } from './protection.mjs';
|
||||||
|
export { MonnaieDataModel } from './monnaie.mjs';
|
||||||
|
export { EquipementDataModel } from './equipement.mjs';
|
||||||
|
export { ArtefactDataModel } from './artefact.mjs';
|
||||||
|
export { RessourceDataModel } from './ressource.mjs';
|
||||||
|
export { ContactDataModel } from './contact.mjs';
|
||||||
|
export { MutationDataModel } from './mutation.mjs';
|
||||||
|
|
||||||
|
// Modèles d'acteurs
|
||||||
|
export { PersonnageDataModel } from './personnage.mjs';
|
||||||
|
export { CelluleDataModel } from './cellule.mjs';
|
||||||
|
export { CreatureDataModel } from './creature.mjs';
|
||||||
|
|
||||||
|
// Templates de base (si nécessaire pour extension)
|
||||||
|
export { BaseItemModel, BaseEquipItemModel, AutomationItemModel } from './base-item.mjs';
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les monnaies
|
||||||
|
*/
|
||||||
|
export class MonnaieDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les mutations
|
||||||
|
*/
|
||||||
|
export class MutationDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
mutationcategorie: new fields.StringField({ initial: "tares_communes" }),
|
||||||
|
hascomplexite: new fields.BooleanField({ initial: false }),
|
||||||
|
complexite: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les personnages
|
||||||
|
*/
|
||||||
|
export class PersonnageDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
// Template biodata
|
||||||
|
biodata: new fields.SchemaField({
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
age: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
poids: new fields.StringField({ initial: "" }),
|
||||||
|
taille: new fields.StringField({ initial: "" }),
|
||||||
|
cheveux: new fields.StringField({ initial: "" }),
|
||||||
|
sexe: new fields.StringField({ initial: "" }),
|
||||||
|
yeux: new fields.StringField({ initial: "" }),
|
||||||
|
description: new fields.StringField({ initial: "" }),
|
||||||
|
habitat: new fields.StringField({ initial: "" }),
|
||||||
|
notes: new fields.StringField({ initial: "" }),
|
||||||
|
statut: new fields.StringField({ initial: "" }),
|
||||||
|
gmnotes: new fields.StringField({ initial: "" }),
|
||||||
|
statutresistant: new fields.StringField({ initial: "commun" })
|
||||||
|
}),
|
||||||
|
// Template core
|
||||||
|
subactors: new fields.ArrayField(new fields.StringField(), { initial: [] }),
|
||||||
|
attributs: new fields.SchemaField({
|
||||||
|
adr: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Adresse" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "adresse" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "adr" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pui: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Puissance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "puissance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pui" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
cla: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Clairvoyance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "clairvoyance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "cla" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Présence" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "presence" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
tre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Trempe" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "trempe" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "tre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
bonneaventure: new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
actuelle: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
experience: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
eclat: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
sante: new fields.SchemaField({
|
||||||
|
vigueur: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
etat: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vigueurmodifier: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
nbcombativite: new fields.NumberField({ initial: 5, integer: true })
|
||||||
|
}),
|
||||||
|
adversite: new fields.SchemaField({
|
||||||
|
bleue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rouge: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
noire: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
vitesse: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
combat: new fields.SchemaField({
|
||||||
|
initbonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vitessebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
bonusdegats: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
attaquebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensetotale: new fields.BooleanField({ initial: false }),
|
||||||
|
monte: new fields.BooleanField({ initial: false })
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les profils
|
||||||
|
*/
|
||||||
|
export class ProfilDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
exemples: new fields.StringField({ initial: "" }),
|
||||||
|
attribut1: new fields.StringField({ initial: "" }),
|
||||||
|
attribut2: new fields.StringField({ initial: "" }),
|
||||||
|
attribut3: new fields.StringField({ initial: "" }),
|
||||||
|
competences: new fields.StringField({ initial: "" }),
|
||||||
|
talentsinitie: new fields.StringField({ initial: "" }),
|
||||||
|
prerequisaguerri: new fields.StringField({ initial: "" }),
|
||||||
|
talentsaguerri: new fields.StringField({ initial: "" }),
|
||||||
|
prerequismaitre: new fields.StringField({ initial: "" }),
|
||||||
|
talentsmaitre: new fields.StringField({ initial: "" }),
|
||||||
|
celluleinfo: new fields.StringField({ initial: "" }),
|
||||||
|
equipement: new fields.StringField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les protections
|
||||||
|
*/
|
||||||
|
export class ProtectionDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
|
protection: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
adversitepoids: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les ressources
|
||||||
|
*/
|
||||||
|
export class RessourceDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
pointdev: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les talents
|
||||||
|
*/
|
||||||
|
export class TalentDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
isautomated: new fields.BooleanField({ initial: false }),
|
||||||
|
automations: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
id: new fields.StringField({ initial: "" }),
|
||||||
|
eventtype: new fields.StringField({ initial: "on-drop" }),
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
bonusname: new fields.StringField({ initial: "vigueur" }),
|
||||||
|
bonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
competence: new fields.StringField({ initial: "" }),
|
||||||
|
minLevel: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
baCost: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
{ initial: [] }
|
||||||
|
),
|
||||||
|
talenttype: new fields.StringField({ initial: "" }),
|
||||||
|
utilisation: new fields.StringField({ initial: "" }),
|
||||||
|
prerequis: new fields.StringField({ initial: "" }),
|
||||||
|
resumebonus: new fields.StringField({ initial: "" }),
|
||||||
|
used: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000333
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.474868 7fc3f4c006c0 Recovering log #183
|
2026/01/05-22:20:56.155164 7f93eb7fe6c0 Recovering log #331
|
||||||
2024/05/05-15:08:28.506757 7fc3f4c006c0 Delete type=3 #181
|
2026/01/05-22:20:56.166270 7f93eb7fe6c0 Delete type=3 #329
|
||||||
2024/05/05-15:08:28.506853 7fc3f4c006c0 Delete type=0 #183
|
2026/01/05-22:20:56.166327 7f93eb7fe6c0 Delete type=0 #331
|
||||||
2024/05/05-15:09:14.527216 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.165703 7f93e9ffb6c0 Level-0 table #336: started
|
||||||
2024/05/05-15:09:14.527241 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.165730 7f93e9ffb6c0 Level-0 table #336: 0 bytes OK
|
||||||
2024/05/05-15:09:14.534234 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.171765 7f93e9ffb6c0 Delete type=0 #334
|
||||||
2024/05/05-15:09:14.547770 7fc3f32006c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.199079 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.547837 7fc3f32006c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.199117 7f93e9ffb6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.889016 7f87a54006c0 Recovering log #179
|
2025/11/21-21:17:11.288531 7f34ccff96c0 Recovering log #327
|
||||||
2024/05/05-15:07:06.899014 7f87a54006c0 Delete type=3 #177
|
2025/11/21-21:17:11.303357 7f34ccff96c0 Delete type=3 #325
|
||||||
2024/05/05-15:07:06.899098 7f87a54006c0 Delete type=0 #179
|
2025/11/21-21:17:11.303441 7f34ccff96c0 Delete type=0 #327
|
||||||
2024/05/05-15:07:55.448193 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.182000 7f322ffff6c0 Level-0 table #332: started
|
||||||
2024/05/05-15:07:55.448224 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.182040 7f322ffff6c0 Level-0 table #332: 0 bytes OK
|
||||||
2024/05/05-15:07:55.485470 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.189103 7f322ffff6c0 Delete type=0 #330
|
||||||
2024/05/05-15:07:55.485735 7f879e4006c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.199156 7f322ffff6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.485776 7f879e4006c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.220809 7f322ffff6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000332
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.197636 7fc3f42006c0 Recovering log #183
|
2026/01/05-22:20:56.048400 7f93eaffd6c0 Recovering log #330
|
||||||
2024/05/05-15:08:28.228972 7fc3f42006c0 Delete type=3 #181
|
2026/01/05-22:20:56.058614 7f93eaffd6c0 Delete type=3 #328
|
||||||
2024/05/05-15:08:28.229102 7fc3f42006c0 Delete type=0 #183
|
2026/01/05-22:20:56.058678 7f93eaffd6c0 Delete type=0 #330
|
||||||
2024/05/05-15:09:14.474463 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.125881 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2024/05/05-15:09:14.474545 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.125907 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2024/05/05-15:09:14.480529 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.131746 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2024/05/05-15:09:14.486879 7fc3f32006c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137885 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.486980 7fc3f32006c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137919 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.785818 7f879fe006c0 Recovering log #179
|
2025/11/21-21:17:11.119952 7f34cd7fa6c0 Recovering log #326
|
||||||
2024/05/05-15:07:06.796001 7f879fe006c0 Delete type=3 #177
|
2025/11/21-21:17:11.135840 7f34cd7fa6c0 Delete type=3 #324
|
||||||
2024/05/05-15:07:06.796120 7f879fe006c0 Delete type=0 #179
|
2025/11/21-21:17:11.135940 7f34cd7fa6c0 Delete type=0 #326
|
||||||
2024/05/05-15:07:54.984066 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.115063 7f322ffff6c0 Level-0 table #331: started
|
||||||
2024/05/05-15:07:54.984099 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.115090 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2024/05/05-15:07:55.021086 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.121038 7f322ffff6c0 Delete type=0 #329
|
||||||
2024/05/05-15:07:55.063815 7f879e4006c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121241 7f322ffff6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.063883 7f879e4006c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121271 7f322ffff6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.128774 7fc3f4c006c0 Recovering log #183
|
2026/01/05-22:20:56.023009 7f93eb7fe6c0 Recovering log #330
|
||||||
2024/05/05-15:08:28.159335 7fc3f4c006c0 Delete type=3 #181
|
2026/01/05-22:20:56.032779 7f93eb7fe6c0 Delete type=3 #328
|
||||||
2024/05/05-15:08:28.159402 7fc3f4c006c0 Delete type=0 #183
|
2026/01/05-22:20:56.032853 7f93eb7fe6c0 Delete type=0 #330
|
||||||
2024/05/05-15:09:14.447833 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.087705 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2024/05/05-15:09:14.447883 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.087797 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2024/05/05-15:09:14.453996 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.094096 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2024/05/05-15:09:14.460588 7fc3f32006c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112531 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.460630 7fc3f32006c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112576 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.761129 7f879fe006c0 Recovering log #179
|
2025/11/21-21:17:11.082663 7f34ccff96c0 Recovering log #326
|
||||||
2024/05/05-15:07:06.771466 7f879fe006c0 Delete type=3 #177
|
2025/11/21-21:17:11.097415 7f34ccff96c0 Delete type=3 #324
|
||||||
2024/05/05-15:07:06.771569 7f879fe006c0 Delete type=0 #179
|
2025/11/21-21:17:11.097522 7f34ccff96c0 Delete type=0 #326
|
||||||
2024/05/05-15:07:54.904730 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.082672 7f322ffff6c0 Level-0 table #331: started
|
||||||
2024/05/05-15:07:54.904818 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.082698 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2024/05/05-15:07:54.941897 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.088631 7f322ffff6c0 Delete type=0 #329
|
||||||
2024/05/05-15:07:55.063762 7f879e4006c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094927 7f322ffff6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.063849 7f879e4006c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094971 7f322ffff6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.059969 7fc3f42006c0 Recovering log #183
|
2026/01/05-22:20:55.998572 7f93ea7fc6c0 Recovering log #330
|
||||||
2024/05/05-15:08:28.090803 7fc3f42006c0 Delete type=3 #181
|
2026/01/05-22:20:56.008503 7f93ea7fc6c0 Delete type=3 #328
|
||||||
2024/05/05-15:08:28.090980 7fc3f42006c0 Delete type=0 #183
|
2026/01/05-22:20:56.008556 7f93ea7fc6c0 Delete type=0 #330
|
||||||
2024/05/05-15:09:14.441351 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.100430 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2024/05/05-15:09:14.441377 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.100453 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2024/05/05-15:09:14.447653 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.106283 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2024/05/05-15:09:14.460578 7fc3f32006c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112557 7f93e9ffb6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.460613 7fc3f32006c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112589 7f93e9ffb6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.735150 7f879fe006c0 Recovering log #179
|
2025/11/21-21:17:11.044217 7f34ce7fc6c0 Recovering log #326
|
||||||
2024/05/05-15:07:06.746252 7f879fe006c0 Delete type=3 #177
|
2025/11/21-21:17:11.059351 7f34ce7fc6c0 Delete type=3 #324
|
||||||
2024/05/05-15:07:06.746373 7f879fe006c0 Delete type=0 #179
|
2025/11/21-21:17:11.059409 7f34ce7fc6c0 Delete type=0 #326
|
||||||
2024/05/05-15:07:54.867722 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.076024 7f322ffff6c0 Level-0 table #331: started
|
||||||
2024/05/05-15:07:54.867757 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.076057 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2024/05/05-15:07:54.904354 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.082546 7f322ffff6c0 Delete type=0 #329
|
||||||
2024/05/05-15:07:54.904606 7f879e4006c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094915 7f322ffff6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:54.904643 7f879e4006c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094962 7f322ffff6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.265384 7fc3f4c006c0 Recovering log #183
|
2026/01/05-22:20:56.073305 7f93eb7fe6c0 Recovering log #330
|
||||||
2024/05/05-15:08:28.295246 7fc3f4c006c0 Delete type=3 #181
|
2026/01/05-22:20:56.084269 7f93eb7fe6c0 Delete type=3 #328
|
||||||
2024/05/05-15:08:28.295309 7fc3f4c006c0 Delete type=0 #183
|
2026/01/05-22:20:56.084336 7f93eb7fe6c0 Delete type=0 #330
|
||||||
2024/05/05-15:09:14.480663 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.112726 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2024/05/05-15:09:14.480690 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.112760 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2024/05/05-15:09:14.486637 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.119133 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2024/05/05-15:09:14.486900 7fc3f32006c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137862 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.486961 7fc3f32006c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137903 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.811789 7f879fe006c0 Recovering log #179
|
2025/11/21-21:17:11.157103 7f34ce7fc6c0 Recovering log #326
|
||||||
2024/05/05-15:07:06.821907 7f879fe006c0 Delete type=3 #177
|
2025/11/21-21:17:11.172875 7f34ce7fc6c0 Delete type=3 #324
|
||||||
2024/05/05-15:07:06.821963 7f879fe006c0 Delete type=0 #179
|
2025/11/21-21:17:11.172939 7f34ce7fc6c0 Delete type=0 #326
|
||||||
2024/05/05-15:07:55.100066 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.095092 7f322ffff6c0 Level-0 table #331: started
|
||||||
2024/05/05-15:07:55.100142 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.095126 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2024/05/05-15:07:55.137073 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.102295 7f322ffff6c0 Delete type=0 #329
|
||||||
2024/05/05-15:07:55.216621 7f879e4006c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121183 7f322ffff6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.216687 7f879e4006c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121249 7f322ffff6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.161503 7fc3f56006c0 Recovering log #183
|
2026/01/05-22:20:56.034759 7f93ea7fc6c0 Recovering log #330
|
||||||
2024/05/05-15:08:28.194742 7fc3f56006c0 Delete type=3 #181
|
2026/01/05-22:20:56.045303 7f93ea7fc6c0 Delete type=3 #328
|
||||||
2024/05/05-15:08:28.194855 7fc3f56006c0 Delete type=0 #183
|
2026/01/05-22:20:56.045387 7f93ea7fc6c0 Delete type=0 #330
|
||||||
2024/05/05-15:09:14.454182 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.094206 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2024/05/05-15:09:14.454242 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.094228 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2024/05/05-15:09:14.460452 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.100330 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2024/05/05-15:09:14.460606 7fc3f32006c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112546 7f93e9ffb6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.460638 7fc3f32006c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112583 7f93e9ffb6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.773991 7f87a54006c0 Recovering log #179
|
2025/11/21-21:17:11.100312 7f34ce7fc6c0 Recovering log #326
|
||||||
2024/05/05-15:07:06.783663 7f87a54006c0 Delete type=3 #177
|
2025/11/21-21:17:11.117500 7f34ce7fc6c0 Delete type=3 #324
|
||||||
2024/05/05-15:07:06.783711 7f87a54006c0 Delete type=0 #179
|
2025/11/21-21:17:11.117567 7f34ce7fc6c0 Delete type=0 #326
|
||||||
2024/05/05-15:07:55.021228 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.069446 7f322ffff6c0 Level-0 table #331: started
|
||||||
2024/05/05-15:07:55.021260 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.069505 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2024/05/05-15:07:55.063500 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.075899 7f322ffff6c0 Delete type=0 #329
|
||||||
2024/05/05-15:07:55.063834 7f879e4006c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094892 7f322ffff6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.063865 7f879e4006c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094951 7f322ffff6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000095
|
MANIFEST-000242
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.094278 7fc3f60006c0 Recovering log #93
|
2026/01/05-22:20:56.010250 7f93eaffd6c0 Recovering log #240
|
||||||
2024/05/05-15:08:28.125562 7fc3f60006c0 Delete type=3 #91
|
2026/01/05-22:20:56.020208 7f93eaffd6c0 Delete type=3 #238
|
||||||
2024/05/05-15:08:28.125665 7fc3f60006c0 Delete type=0 #93
|
2026/01/05-22:20:56.020270 7f93eaffd6c0 Delete type=0 #240
|
||||||
2024/05/05-15:09:14.434835 7fc3f32006c0 Level-0 table #98: started
|
2026/01/05-22:39:51.106439 7f93e9ffb6c0 Level-0 table #245: started
|
||||||
2024/05/05-15:09:14.434923 7fc3f32006c0 Level-0 table #98: 0 bytes OK
|
2026/01/05-22:39:51.106472 7f93e9ffb6c0 Level-0 table #245: 0 bytes OK
|
||||||
2024/05/05-15:09:14.441261 7fc3f32006c0 Delete type=0 #96
|
2026/01/05-22:39:51.112404 7f93e9ffb6c0 Delete type=0 #243
|
||||||
2024/05/05-15:09:14.460566 7fc3f32006c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112570 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.460598 7fc3f32006c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112598 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.748901 7f87a54006c0 Recovering log #89
|
2025/11/21-21:17:11.062660 7f34cdffb6c0 Recovering log #236
|
||||||
2024/05/05-15:07:06.758485 7f87a54006c0 Delete type=3 #87
|
2025/11/21-21:17:11.079663 7f34cdffb6c0 Delete type=3 #234
|
||||||
2024/05/05-15:07:06.758539 7f87a54006c0 Delete type=0 #89
|
2025/11/21-21:17:11.079731 7f34cdffb6c0 Delete type=0 #236
|
||||||
2024/05/05-15:07:54.942092 7f879e4006c0 Level-0 table #94: started
|
2025/11/21-21:20:34.088817 7f322ffff6c0 Level-0 table #241: started
|
||||||
2024/05/05-15:07:54.942137 7f879e4006c0 Level-0 table #94: 0 bytes OK
|
2025/11/21-21:20:34.088856 7f322ffff6c0 Level-0 table #241: 0 bytes OK
|
||||||
2024/05/05-15:07:54.983919 7f879e4006c0 Delete type=0 #92
|
2025/11/21-21:20:34.094750 7f322ffff6c0 Delete type=0 #239
|
||||||
2024/05/05-15:07:55.063791 7f879e4006c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094940 7f322ffff6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.063902 7f879e4006c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094980 7f322ffff6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000185
|
MANIFEST-000332
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:08:28.298960 7fc3f56006c0 Recovering log #183
|
2026/01/05-22:20:56.088422 7f93eaffd6c0 Recovering log #330
|
||||||
2024/05/05-15:08:28.332788 7fc3f56006c0 Delete type=3 #181
|
2026/01/05-22:20:56.098507 7f93eaffd6c0 Delete type=3 #328
|
||||||
2024/05/05-15:08:28.332842 7fc3f56006c0 Delete type=0 #183
|
2026/01/05-22:20:56.098565 7f93eaffd6c0 Delete type=0 #330
|
||||||
2024/05/05-15:09:14.487089 7fc3f32006c0 Level-0 table #188: started
|
2026/01/05-22:39:51.119253 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2024/05/05-15:09:14.487111 7fc3f32006c0 Level-0 table #188: 0 bytes OK
|
2026/01/05-22:39:51.119282 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2024/05/05-15:09:14.493907 7fc3f32006c0 Delete type=0 #186
|
2026/01/05-22:39:51.125789 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2024/05/05-15:09:14.517258 7fc3f32006c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137875 7f93e9ffb6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:09:14.517311 7fc3f32006c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137911 7f93e9ffb6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2024/05/05-15:07:06.824442 7f87a54006c0 Recovering log #179
|
2025/11/21-21:17:11.175622 7f34cd7fa6c0 Recovering log #326
|
||||||
2024/05/05-15:07:06.835293 7f87a54006c0 Delete type=3 #177
|
2025/11/21-21:17:11.190667 7f34cd7fa6c0 Delete type=3 #324
|
||||||
2024/05/05-15:07:06.835346 7f87a54006c0 Delete type=0 #179
|
2025/11/21-21:17:11.190757 7f34cd7fa6c0 Delete type=0 #326
|
||||||
2024/05/05-15:07:55.137339 7f879e4006c0 Level-0 table #184: started
|
2025/11/21-21:20:34.109081 7f322ffff6c0 Level-0 table #331: started
|
||||||
2024/05/05-15:07:55.137395 7f879e4006c0 Level-0 table #184: 0 bytes OK
|
2025/11/21-21:20:34.109106 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2024/05/05-15:07:55.179469 7f879e4006c0 Delete type=0 #182
|
2025/11/21-21:20:34.114933 7f322ffff6c0 Delete type=0 #329
|
||||||
2024/05/05-15:07:55.216639 7f879e4006c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121229 7f322ffff6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
2024/05/05-15:07:55.216702 7f879e4006c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121264 7f322ffff6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user