Compare commits

...

17 Commits

Author SHA1 Message Date
05ca6e1763 Proper version 2026-01-06 22:57:53 +01:00
d3f014fcca Rework title font and fix pause logo switching 2026-01-05 22:45:10 +01:00
679b3208cd Rework title font and fix pause logo switching 2026-01-05 22:43:52 +01:00
871a18a0ee Correction sur talent Dragon 2025-11-21 21:21:45 +01:00
264c49eb06 Fix release mess 2025-11-07 00:30:31 +01:00
9349c54966 Enhance CSS+fonts 2025-10-26 21:39:25 +01:00
274efac2b5 Enhance CSS+fonts 2025-10-26 15:39:08 +01:00
7a7398f8ca Correction sur styles CSS 2025-10-20 22:30:15 +02:00
93600f7e13 Correction sur styles CSS 2025-10-20 22:29:22 +02:00
a6fa3afbee Double adversités 2025-08-24 17:00:06 +02:00
1051349dd0 Correction sur usage BA sur un jet impair au D20 2025-06-24 21:04:58 +02:00
a245b0e87c Corrections sur couleur des pages dans les journaux 2025-06-03 13:32:11 +02:00
c9ce3367ed Corrections sur couleur des pages dans les journaux 2025-06-03 13:31:17 +02:00
e95e068112 Fix perte de combatitivité sur action d'un joueur 2025-06-03 09:37:50 +02:00
6dd63a2c54 Hawkmoon : Foundry v13 migration 2025-04-30 23:26:24 +02:00
650e4b7449 Hawkmoon : Foundry v13 migration 2025-04-30 23:24:55 +02:00
3f27482ad9 Hawkmoon : Foundry v13 migraton 2025-04-30 23:23:32 +02:00
137 changed files with 1613 additions and 841 deletions

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

@@ -7,7 +7,7 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
/* -------------------------------------------- */
export class HawkmoonActorSheet extends ActorSheet {
export class HawkmoonActorSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */
static get defaultOptions() {
@@ -25,7 +25,7 @@ export class HawkmoonActorSheet extends ActorSheet {
/* -------------------------------------------- */
async getData() {
const objectData = foundry.utils.duplicate(this.object)
const objectData = foundry.utils.duplicate(this.object)
let formData = {
title: this.title,
@@ -47,7 +47,7 @@ export class HawkmoonActorSheet extends ActorSheet {
mutations: foundry.utils.duplicate(this.actor.getMutations() || []),
talentsCell: this.getCelluleTalents(),
profils: foundry.utils.duplicate(this.actor.getProfils() || []),
combat: this.actor.getCombatValues(),
combat: this.actor.getCombatValues(),
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
richesse: this.actor.computeRichesse(),
@@ -56,8 +56,8 @@ export class HawkmoonActorSheet extends ActorSheet {
nbCombativite: this.actor.system.sante.nbcombativite,
combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
initiative: this.actor.getFlag("world", "last-initiative") || -1,
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, {async: true}),
habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, {async: true}),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
@@ -91,14 +91,14 @@ export class HawkmoonActorSheet extends ActorSheet {
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
const item = this.actor.items.get( itemId )
item.sheet.render(true)
})
})
// Delete Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
@@ -120,7 +120,7 @@ export class HawkmoonActorSheet extends ActorSheet {
let value = Number($(event.currentTarget).data("adversite-value"))
this.actor.incDecAdversite(adv, value)
})
html.find('.quantity-modify').click(event => {
const li = $(event.currentTarget).parents(".item")
const value = Number($(event.currentTarget).data("quantite-value"))
@@ -130,7 +130,7 @@ export class HawkmoonActorSheet extends ActorSheet {
html.find('.roll-initiative').click((event) => {
this.actor.rollAttribut("adr", true)
})
html.find('.roll-attribut').click((event) => {
const li = $(event.currentTarget).parents(".item")
let attrKey = li.data("attr-key")
@@ -147,7 +147,7 @@ export class HawkmoonActorSheet extends ActorSheet {
let armeId = li.data("item-id")
this.actor.rollArmeOffensif(armeId)
})
html.find('.roll-assommer').click((event) => {
this.actor.rollAssommer()
})
@@ -163,30 +163,30 @@ export class HawkmoonActorSheet extends ActorSheet {
html.find('.roll-desengager').click((event) => {
this.actor.rollDesengager()
})
html.find('.roll-arme-degats').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
this.actor.rollArmeDegats(armeId)
})
html.find('.item-add').click((event) => {
const itemType = $(event.currentTarget).data("type")
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
})
html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore;
this.render(true);
});
});
html.find('.item-equip').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.equipItem( li.data("item-id") );
this.render(true);
this.render(true);
});
}
/* -------------------------------------------- */
/** @override */
setPosition(options = {}) {

View File

@@ -17,8 +17,8 @@ export class HawkmoonActor extends Actor {
/**
* Override the create() function to provide additional SoS functionality.
*
* This overrided create() function adds initial items
* Namely: Basic skills, money,
* This overrided create() function adds initial items
* Namely: Basic skills, money,
*
* @param {Object} data Barebones actor data which this function adds onto.
* @param {Object} options (Unused) Additional options which customize the creation workflow.
@@ -424,7 +424,7 @@ export class HawkmoonActor extends Actor {
if (sante.etat == this.system.sante.nbcombativite) {
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
}
this.processCombativite(sante)
// Duplicated ! this.processCombativite(sante)
}
/* -------------------------------------------- */

View File

@@ -10,7 +10,7 @@ import { HawkmoonAutomation } from "./hawkmoon-automation.js";
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 */
static get defaultOptions() {
@@ -95,7 +95,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
let actorId = li.data("actor-id")
this.actor.removeMember(actorId)
})
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
@@ -136,7 +136,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
/* -------------------------------------------- */
async _onDropActor(event, dragData) {
const actor = fromUuidSync(dragData.uuid)
if (actor) {
if (actor) {
this.actor.addMember(actor.id)
} else {
ui.notifications.warn("Cet acteur n'a pas été trouvé.")

View File

@@ -22,7 +22,7 @@ export class HawkmoonTokenHud {
const hudData = { actor: actor }
const controlIconActions = html.find('.control-icon[data-action=combat]');
const controlIconActions = $(html).find('.control-icon[data-action=combat]');
// initiative
await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
(event) => {
@@ -34,7 +34,7 @@ export class HawkmoonTokenHud {
/* -------------------------------------------- */
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 ) {
HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
}
@@ -42,11 +42,11 @@ export class HawkmoonTokenHud {
/* -------------------------------------------- */
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')
HawkmoonTokenHud._toggleHudListActive(hud, list);
hud.find('img.hawkmoon-hud-togglebutton').click(event => HawkmoonTokenHud._toggleHudListActive(hud, list));
list.find('.hawkmoon-hud-adversite').click(onMenuItem);

View File

@@ -4,7 +4,7 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
* Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet}
*/
export class HawkmoonItemSheet extends ItemSheet {
export class HawkmoonItemSheet extends foundry.appv1.sheets.ItemSheet {
/** @override */
static get defaultOptions() {
@@ -145,7 +145,7 @@ export class HawkmoonItemSheet extends ItemSheet {
pred[index].description = ev.currentTarget.value
pred[index].id = pred[index].id || randomID(16)
this.object.update( { 'system.predilections': pred })
})
})
html.find('.predilection-acquise').change(ev => {
const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index")
@@ -153,7 +153,7 @@ export class HawkmoonItemSheet extends ItemSheet {
pred[index].acquise = ev.currentTarget.checked
pred[index].id = pred[index].id || randomID(16)
this.object.update( { 'system.predilections': pred })
})
})
html.find('.predilection-maitrise').change(ev => {
const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index")
@@ -161,7 +161,7 @@ export class HawkmoonItemSheet extends ItemSheet {
pred[index].maitrise = ev.currentTarget.checked
pred[index].id = pred[index].id || randomID(16)
this.object.update( { 'system.predilections': pred })
})
})
html.find('.predilection-used').change(ev => {
const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index")
@@ -169,11 +169,11 @@ export class HawkmoonItemSheet extends ItemSheet {
pred[index].used = ev.currentTarget.checked
pred[index].id = pred[index].id || randomID(16)
this.object.update( { 'system.predilections': pred })
})
})
html.find('#add-predilection').click(ev => {
let pred = foundry.utils.duplicate(this.object.system.predilections)
pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
this.object.update( { 'system.predilections': pred })
})
html.find('.delete-prediction').click(ev => {
@@ -186,7 +186,7 @@ export class HawkmoonItemSheet extends ItemSheet {
html.find('#add-automation').click(ev => {
let autom = foundry.utils.duplicate(this.object.system.automations)
autom.push( { eventtype: "on-drop", name: "Automatisation 1", bonusname: "vigueur", bonus: 0, competence: "", minLevel: 0, baCost: 0, id: randomID(16) })
autom.push( { eventtype: "on-drop", name: "Automatisation 1", bonusname: "vigueur", bonus: 0, competence: "", minLevel: 0, baCost: 0, id: randomID(16) })
this.object.update( { 'system.automations': autom })
})
html.find('.delete-automation').click(ev => {
@@ -203,8 +203,8 @@ export class HawkmoonItemSheet extends ItemSheet {
auto[index][field] = ev.currentTarget.value
auto[index].id = auto[index].id || randomID(16)
this.object.update( { 'system.automations': auto })
})
})
// Update Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");

View File

@@ -33,7 +33,7 @@ Hooks.once("init", async function () {
HawkmoonUtility.preloadHandlebarsTemplates()
/* -------------------------------------------- */
// Set an initiative formula for the system
// Set an initiative formula for the system
CONFIG.Combat.initiative = {
formula: "1d10",
decimals: 1
@@ -56,14 +56,14 @@ Hooks.once("init", async function () {
}
/* -------------------------------------------- */
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
// Regster sheet application classes
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
foundry.documents.collections.Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
HawkmoonUtility.init()
HawkmoonAutomation.init()
@@ -92,7 +92,7 @@ async function importDefaultScene() {
let newDocuments = scenes.filter(i => i.name == "Accueil");
if (newDocuments) {
await game.scenes.documentClass.create(newDocuments);
game.scenes.find(i => i.name == "Accueil").activate();
game.scenes.find(i => i.name == "Accueil").activate();
}
}
}
@@ -119,7 +119,7 @@ Hooks.once("ready", function () {
}).catch(err=>
console.log("No stats available, giving up.")
)
importDefaultScene()
welcomeMessage()
@@ -138,4 +138,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
}
return true;
});

View File

@@ -3,12 +3,12 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
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 html = await renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
let options = { classes: ["HawkmoonDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
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);
}
/* -------------------------------------------- */
@@ -16,22 +16,23 @@ export class HawkmoonRollDialog extends Dialog {
let conf = {
title: "Test de Capacité",
content: html,
buttons: {
buttons: {
rolld10: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d10",
callback: () => { this.roll("d10") }
},
rolld20: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d20",
callback: () => { this.roll("d20") }
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: "Annuler",
callback: () => { this.close() }
} },
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d10",
callback: () => { this.roll("d10") }
},
rolld20: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d20",
callback: () => { this.roll("d20") }
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: "Annuler",
callback: () => { this.close() }
}
},
close: close
}
@@ -42,9 +43,9 @@ export class HawkmoonRollDialog extends Dialog {
}
/* -------------------------------------------- */
roll ( dice) {
roll(dice) {
this.rollData.mainDice = dice
HawkmoonUtility.rollHawkmoon( this.rollData )
HawkmoonUtility.rollHawkmoon(this.rollData)
}
@@ -56,87 +57,87 @@ export class HawkmoonRollDialog extends Dialog {
function onLoad() {
}
$(function () { onLoad(); });
html.find('#modificateur').change(async (event) => {
html.find('#modificateur').change(async (event) => {
this.rollData.modificateur = Number(event.currentTarget.value)
})
html.find('#difficulte').change( (event) => {
html.find('#difficulte').change((event) => {
console.log("Difficulte: " + event.currentTarget.value)
this.rollData.difficulte = Number(event.currentTarget.value)
})
html.find('#attrKey').change(async (event) => {
html.find('#attrKey').change(async (event) => {
this.rollData.attrKey = String(event.currentTarget.value)
})
html.find('#attrKey2').change(async (event) => {
})
html.find('#attrKey2').change(async (event) => {
this.rollData.attrKey2 = String(event.currentTarget.value)
})
html.find('#select-maitrise').change(async (event) => {
})
html.find('#select-maitrise').change(async (event) => {
this.rollData.maitriseId = String(event.currentTarget.value)
})
html.find('#competence-talents').change((event) => {
this.rollData.selectedTalents = $('#competence-talents').val()
this.rollData.selectedTalents = $('#competence-talents').val()
})
html.find('#taille-cible').change((event) => {
this.rollData.tailleCible = String(event.currentTarget.value)
this.rollData.tailleCible = String(event.currentTarget.value)
})
html.find('#tireur-deplacement').change((event) => {
this.rollData.tireurDeplacement = String(event.currentTarget.value)
this.rollData.tireurDeplacement = String(event.currentTarget.value)
})
html.find('#cible-couvert').change((event) => {
this.rollData.cibleCouvert = String(event.currentTarget.value)
this.rollData.cibleCouvert = String(event.currentTarget.value)
})
html.find('#distance-tir').change((event) => {
this.rollData.distanceTir = String(event.currentTarget.value)
this.rollData.distanceTir = String(event.currentTarget.value)
})
html.find('#bonus-malus-context').change((event) => {
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
})
html.find('#defenseur-au-sol').change((event) => {
this.rollData.defenseurAuSol = event.currentTarget.checked
this.rollData.defenseurAuSol = event.currentTarget.checked
})
html.find('#ambidextre-1').change((event) => {
this.rollData.ambidextre1 = event.currentTarget.checked
this.rollData.ambidextre1 = event.currentTarget.checked
})
html.find('#ambidextre-2').change((event) => {
this.rollData.ambidextre2 = event.currentTarget.checked
})
html.find('#attaque-monte').change((event) => {
this.rollData.attqueMonte = event.currentTarget.checked
})
})
html.find('#defenseur-aveugle').change((event) => {
this.rollData.defenseurAveugle = event.currentTarget.checked
this.rollData.defenseurAveugle = event.currentTarget.checked
})
html.find('#defenseur-de-dos').change((event) => {
this.rollData.defenseurDeDos = event.currentTarget.checked
this.rollData.defenseurDeDos = event.currentTarget.checked
})
html.find('#defenseur-restreint').change((event) => {
this.rollData.defenseurRestreint = event.currentTarget.checked
this.rollData.defenseurRestreint = event.currentTarget.checked
})
html.find('#defenseur-immobilise').change((event) => {
this.rollData.defenseurImmobilise = event.currentTarget.checked
this.rollData.defenseurImmobilise = event.currentTarget.checked
})
html.find('#attaque-charge').change((event) => {
this.rollData.attaqueCharge = event.currentTarget.checked
this.rollData.attaqueCharge = event.currentTarget.checked
})
html.find('#charge-cavalerie').change((event) => {
this.rollData.chargeCavalerie = event.currentTarget.checked
this.rollData.chargeCavalerie = event.currentTarget.checked
})
html.find('#attaquants-multiple').change((event) => {
this.rollData.attaquantsMultiples = event.currentTarget.checked
this.rollData.attaquantsMultiples = event.currentTarget.checked
})
html.find('#soutiens').change((event) => {
this.rollData.soutiens = Number(event.currentTarget.value)
this.rollData.soutiens = Number(event.currentTarget.value)
})
html.find('#feinte').change((event) => {
this.rollData.feinte = event.currentTarget.checked
this.rollData.feinte = event.currentTarget.checked
})
html.find('#contenir').change((event) => {
this.rollData.contenir = event.currentTarget.checked
this.rollData.contenir = event.currentTarget.checked
})
html.find('#attaque-desarme').change((event) => {
this.rollData.attaqueDesarme = event.currentTarget.checked
this.rollData.attaqueDesarme = event.currentTarget.checked
})
}
}

View File

@@ -3,10 +3,10 @@ import { HawkmoonCombat } from "./hawkmoon-combat.js";
import { HawkmoonCommands } from "./hawkmoon-commands.js";
/* -------------------------------------------- */
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14}
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5}
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10}
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10}
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14 }
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5 }
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10 }
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10 }
/* -------------------------------------------- */
export class HawkmoonUtility {
@@ -15,8 +15,7 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static async init() {
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) => {
HawkmoonUtility.pushInitiativeOptions(html, options);
})
@@ -105,15 +104,33 @@ export class HawkmoonUtility {
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() {
const skills = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.skills")
this.skills = skills.map(i => i.toObject())
// Setup pause logo
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
let logoImg = document.querySelector('#pause').children[0]
logoImg.setAttribute('style', `content: url(${logoPause})`)
this.updatePauseLogo()
game.system.hawkmoon.config.listeNiveauSkill = this.createDirectOptionList(0, 10)
game.system.hawkmoon.config.listeNiveauCreature = this.createDirectOptionList(0, 35)
@@ -131,7 +148,7 @@ export class HawkmoonUtility {
static createArrayOptionList(min, max) {
let options = [];
for (let i = min; i <= max; i++) {
options.push({key:`${i}`, label:`${i}`});
options.push({ key: `${i}`, label: `${i}` });
}
return options;
}
@@ -155,7 +172,7 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
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 messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
@@ -166,14 +183,14 @@ export class HawkmoonUtility {
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 message = game.messages.get(messageId)
let rollData = message.getFlag("world", "hawkmoon-roll")
let actor = HawkmoonUtility.getActorFromRollData(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 message = game.messages.get(messageId)
let rollData = message.getFlag("world", "hawkmoon-roll")
@@ -181,7 +198,7 @@ export class HawkmoonUtility {
rollData.applyCoupDevastateur = true
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
})
}
/* -------------------------------------------- */
@@ -196,7 +213,7 @@ export class HawkmoonUtility {
'systems/fvtt-hawkmoon-cyd/templates/partial-automation.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) {
if (msg.name == "msg_apply_combativite") {
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
defender.changeEtatCombativite(msg.data.value)
if (msg.msg == "msg_apply_combativite") {
let defender = game.canvas.tokens.get(msg.data.defenderTokenId)?.actor
if (defender) {
defender.changeEtatCombativite(msg.data.value)
} else {
console.warn("HawkmoonUtility.onSocketMesssage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
}
}
}
@@ -355,17 +376,22 @@ export class HawkmoonUtility {
}
}
//console.log("Result : ", rollData)
//console.log("Result : ", rollData
this.computeResultQuality(rollData)
}
/* -------------------------------------------- */
static computeResultQuality(rollData) {
if (rollData.difficulte > 0 && !rollData.isDramatique) {
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
}
}
/* -------------------------------------------- */
static applyCombativite(rollData, value) {
if (game.user.isGM) {
if (game.user.isGM) {
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
defender.changeEtatCombativite(value)
} else {
@@ -399,7 +425,7 @@ export class HawkmoonUtility {
rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections || [])
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}`
if (rollData.selectedTalents && rollData.selectedTalents.length > 0) {
for (let id of rollData.selectedTalents) {
let talent = rollData.talents.find(t => t._id == id)
@@ -423,7 +449,7 @@ export class HawkmoonUtility {
} else {
rollData.diceFormula += `+${rollData.attr.value}*${rollData.multiplier}+${rollData.modificateur}+${rollData.bonusMalusContext}`
}
// Bonus arme naturelle en défense
if (rollData.bonusArmeNaturelle) {
rollData.diceFormula += `+${rollData.bonusArmeNaturelle}`
@@ -432,9 +458,9 @@ export class HawkmoonUtility {
rollData.diceFormula += `+3`
}
if (rollData.hasAmbidextre) {
if ( rollData.ambidextre1) {
if (rollData.ambidextre1) {
rollData.diceFormula += `-3`
} else if ( rollData.ambidextre2) {
} else if (rollData.ambidextre2) {
rollData.diceFormula += `-6`
}
}
@@ -454,7 +480,7 @@ export class HawkmoonUtility {
rollData.diceFormula += `+5`
}
if (rollData.soutiens > 0) { // 1 soutien = +3, 2 soutiens = +4, 3 soutiens = +5
rollData.diceFormula += `+${rollData.soutiens+2}`
rollData.diceFormula += `+${rollData.soutiens + 2}`
}
if (rollData.arme?.system.isDistance) {
@@ -469,16 +495,16 @@ export class HawkmoonUtility {
if (rollData.attaqueDesarme) {
rollData.difficulte += 10
}
// Ajout adversités
rollData.diceFormula += `-${rollData.nbAdversites}`
if (rollData.arme && rollData.arme.type == "arme") {
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
}
// Gestion de la feinte éventuelle
rollData.nbCombativitePerdu = 1
rollData.nbCombativitePerdu = 1
let myRoll = await new Roll(rollData.diceFormula).roll()
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
@@ -492,18 +518,18 @@ export class HawkmoonUtility {
}
if (rollData.feinte) {
actor.changeBonneAventure(-1)
if ( rollData.isHeroique) {
if (rollData.isHeroique) {
rollData.nbCombativitePerdu = "vaincu"
} else if ( rollData.isSuccess) {
} else if (rollData.isSuccess) {
rollData.nbCombativitePerdu = 2
}
}
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)
if ( (rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
if ((rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
this.applyCombativite(rollData, rollData.nbCombativitePerdu)
}
if (rollData.coupBas && rollData.isSuccess && rollData.defenderTokenId) {
@@ -514,30 +540,35 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static getCombativiteList(nbActivite) {
let list = [ { value: String(0), label: "Combatif"}]
for (let i = 1; i < nbActivite-2; i++) {
list.push({ value: String(i), label:"Eprouvé " + i} )
let list = [{ value: String(0), label: "Combatif" }]
for (let i = 1; i < nbActivite - 2; i++) {
list.push({ value: String(i), label: "Eprouvé " + i })
}
list[nbActivite-2] = { value: String(nbActivite-2), label:"Affaibli"}
list[nbActivite-1] = { value: String(nbActivite-1), label:"Très Affaibli"}
list[nbActivite] = { value: String(nbActivite), label:"Vaincu"}
list[nbActivite - 2] = { value: String(nbActivite - 2), label: "Affaibli" }
list[nbActivite - 1] = { value: String(nbActivite - 1), label: "Très Affaibli" }
list[nbActivite] = { value: String(nbActivite), label: "Vaincu" }
return list
}
/* -------------------------------------------- */
static async bonusRollHawkmoon(rollData) {
rollData.bonusFormula = rollData.addedBonus
console.log("Bonus Roll Hawkmoon", rollData.bonusFormula)
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
if (!Number(rollData.bonusFormula)) {
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
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.computeResult(rollData)
this.computeResultQuality(rollData)
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)
}
@@ -647,11 +678,11 @@ export class HawkmoonUtility {
distanceTir: "porteemoyenne",
attaqueCharge: false,
attaqueDesarme: false,
attaqueAmbidextre1 : false,
attaqueAmbidextre2 : false,
chargeCavalerie : false,
contenir : false,
soutiens : 0
attaqueAmbidextre1: false,
attaqueAmbidextre2: false,
chargeCavalerie: false,
contenir: false,
soutiens: 0
}
return rollData
}
@@ -672,13 +703,13 @@ export class HawkmoonUtility {
} else if (rollData.coupBas) {
let combatValues = defender.getCombatValues()
rollData.difficulte = combatValues.defenseTotal
}else if ( rollData.assomer) {
} else if (rollData.assomer) {
rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
} else if (rollData.desengager) {
} else if (rollData.desengager) {
rollData.difficulte = rollData.armeAttaqueDefenseur?.system?.totalOffensif || 0;
} else if (rollData.armeDefense) {
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) {
if (rollData.armeDefense.system.armenaturelle || rollData.armeDefense.system.armefortune) {
rollData.bonusArmeNaturelle = 3
}
@@ -696,7 +727,7 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static applyBonneAventureRoll(li, changed, addedBonus) {
let msgId = li.data("message-id")
let msgId = $(li).data("message-id")
let msg = game.messages.get(msgId)
if (msg) {
let rollData = msg.getFlag("world", "hawkmoon-roll")
@@ -715,7 +746,7 @@ export class HawkmoonUtility {
/* -------------------------------------------- */
static applyEclatRoll(li, changed, addedBonus) {
let msgId = li.data("message-id")
let msgId = $(li).data("message-id")
let msg = game.messages.get(msgId)
if (msg) {
let rollData = msg.getFlag("world", "hawkmoon-roll")
@@ -736,13 +767,13 @@ export class HawkmoonUtility {
static chatRollMenu(html, options) {
let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
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 actor = HawkmoonUtility.getActorFromRollData(rollData)
return (!rollData.isReroll && actor.getBonneAventure() > 0)
}
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 actor = HawkmoonUtility.getActorFromRollData(rollData)
return (!rollData.isReroll && actor.getEclat() > 0)
@@ -768,7 +799,7 @@ export class HawkmoonUtility {
name: "Relancer le dé (1 point d'Eclat)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyPE,
callback: li => HawkmoonUtility.applyEclatRoll(li, -3, "reroll")
callback: li => HawkmoonUtility.applyEclatRoll(li, -1, "reroll")
}
)
return options

31
modules/models/arme.mjs Normal file
View File

@@ -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 })
};
}
}

View File

@@ -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: "" })
};
}
}

View File

@@ -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: [] }
)
};
}
}

View File

@@ -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: "" })
};
}
}

View File

@@ -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: [] }
)
};
}
}

View File

@@ -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: "" })
};
}
}

View File

@@ -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 })
})
};
}
}

View File

@@ -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 })
};
}
}

View File

@@ -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: "" })
};
}
}

26
modules/models/index.mjs Normal file
View File

@@ -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';

View File

@@ -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 })
};
}
}

View File

@@ -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 })
};
}
}

View File

@@ -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 })
})
};
}
}

23
modules/models/profil.mjs Normal file
View File

@@ -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: "" })
};
}
}

View File

@@ -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 })
};
}
}

View File

@@ -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: "" })
};
}
}

30
modules/models/talent.mjs Normal file
View File

@@ -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 })
};
}
}

View File

@@ -1 +1 @@
MANIFEST-000268
MANIFEST-000333

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.240513 7f9cf5ffb6c0 Recovering log #266
2025/03/28-18:06:54.252115 7f9cf5ffb6c0 Delete type=3 #264
2025/03/28-18:06:54.252178 7f9cf5ffb6c0 Delete type=0 #266
2025/03/28-18:09:08.872875 7f9cf4ff96c0 Level-0 table #271: started
2025/03/28-18:09:08.872910 7f9cf4ff96c0 Level-0 table #271: 0 bytes OK
2025/03/28-18:09:08.879279 7f9cf4ff96c0 Delete type=0 #269
2025/03/28-18:09:08.892832 7f9cf4ff96c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.903986 7f9cf4ff96c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.155164 7f93eb7fe6c0 Recovering log #331
2026/01/05-22:20:56.166270 7f93eb7fe6c0 Delete type=3 #329
2026/01/05-22:20:56.166327 7f93eb7fe6c0 Delete type=0 #331
2026/01/05-22:39:51.165703 7f93e9ffb6c0 Level-0 table #336: started
2026/01/05-22:39:51.165730 7f93e9ffb6c0 Level-0 table #336: 0 bytes OK
2026/01/05-22:39:51.171765 7f93e9ffb6c0 Delete type=0 #334
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.414284 7f9cf5ffb6c0 Recovering log #261
2025/03/28-14:48:51.424277 7f9cf5ffb6c0 Delete type=3 #259
2025/03/28-14:48:51.424333 7f9cf5ffb6c0 Delete type=0 #261
2025/03/28-14:56:17.706645 7f9cf4ff96c0 Level-0 table #267: started
2025/03/28-14:56:17.706686 7f9cf4ff96c0 Level-0 table #267: 0 bytes OK
2025/03/28-14:56:17.715753 7f9cf4ff96c0 Delete type=0 #265
2025/03/28-14:56:17.747853 7f9cf4ff96c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.747898 7f9cf4ff96c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.288531 7f34ccff96c0 Recovering log #327
2025/11/21-21:17:11.303357 7f34ccff96c0 Delete type=3 #325
2025/11/21-21:17:11.303441 7f34ccff96c0 Delete type=0 #327
2025/11/21-21:20:34.182000 7f322ffff6c0 Level-0 table #332: started
2025/11/21-21:20:34.182040 7f322ffff6c0 Level-0 table #332: 0 bytes OK
2025/11/21-21:20:34.189103 7f322ffff6c0 Delete type=0 #330
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)
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.

BIN
packs/armes/000275.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.129546 7f9cf57fa6c0 Recovering log #265
2025/03/28-18:06:54.140296 7f9cf57fa6c0 Delete type=3 #263
2025/03/28-18:06:54.140354 7f9cf57fa6c0 Delete type=0 #265
2025/03/28-18:09:08.799681 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.799712 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.806126 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.806364 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.806424 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.048400 7f93eaffd6c0 Recovering log #330
2026/01/05-22:20:56.058614 7f93eaffd6c0 Delete type=3 #328
2026/01/05-22:20:56.058678 7f93eaffd6c0 Delete type=0 #330
2026/01/05-22:39:51.125881 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.125907 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.131746 7f93e9ffb6c0 Delete type=0 #333
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.294919 7f9cf67fc6c0 Recovering log #260
2025/03/28-14:48:51.304807 7f9cf67fc6c0 Delete type=3 #258
2025/03/28-14:48:51.304864 7f9cf67fc6c0 Delete type=0 #260
2025/03/28-14:56:17.643826 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.643859 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.653389 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.664831 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.664877 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.119952 7f34cd7fa6c0 Recovering log #326
2025/11/21-21:17:11.135840 7f34cd7fa6c0 Delete type=3 #324
2025/11/21-21:17:11.135940 7f34cd7fa6c0 Delete type=0 #326
2025/11/21-21:20:34.115063 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.115090 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.121038 7f322ffff6c0 Delete type=0 #329
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)
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.

BIN
packs/armes/MANIFEST-000332 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.103361 7f9cf5ffb6c0 Recovering log #265
2025/03/28-18:06:54.113349 7f9cf5ffb6c0 Delete type=3 #263
2025/03/28-18:06:54.113428 7f9cf5ffb6c0 Delete type=0 #265
2025/03/28-18:09:08.786685 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.786722 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.793132 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.806327 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.806394 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.023009 7f93eb7fe6c0 Recovering log #330
2026/01/05-22:20:56.032779 7f93eb7fe6c0 Delete type=3 #328
2026/01/05-22:20:56.032853 7f93eb7fe6c0 Delete type=0 #330
2026/01/05-22:39:51.087705 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.087797 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.094096 7f93e9ffb6c0 Delete type=0 #333
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.264974 7f9cf5ffb6c0 Recovering log #260
2025/03/28-14:48:51.275685 7f9cf5ffb6c0 Delete type=3 #258
2025/03/28-14:48:51.275752 7f9cf5ffb6c0 Delete type=0 #260
2025/03/28-14:56:17.599288 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.599333 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.609691 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.621022 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.621095 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.082663 7f34ccff96c0 Recovering log #326
2025/11/21-21:17:11.097415 7f34ccff96c0 Delete type=3 #324
2025/11/21-21:17:11.097522 7f34ccff96c0 Delete type=0 #326
2025/11/21-21:20:34.082672 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.082698 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.088631 7f322ffff6c0 Delete type=0 #329
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)
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.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.075285 7f9cf57fa6c0 Recovering log #265
2025/03/28-18:06:54.086230 7f9cf57fa6c0 Delete type=3 #263
2025/03/28-18:06:54.086300 7f9cf57fa6c0 Delete type=0 #265
2025/03/28-18:09:08.813600 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.813626 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.819856 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.833880 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.833915 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
2026/01/05-22:20:55.998572 7f93ea7fc6c0 Recovering log #330
2026/01/05-22:20:56.008503 7f93ea7fc6c0 Delete type=3 #328
2026/01/05-22:20:56.008556 7f93ea7fc6c0 Delete type=0 #330
2026/01/05-22:39:51.100430 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.100453 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.106283 7f93e9ffb6c0 Delete type=0 #333
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.234537 7f9cf67fc6c0 Recovering log #260
2025/03/28-14:48:51.245515 7f9cf67fc6c0 Delete type=3 #258
2025/03/28-14:48:51.245574 7f9cf67fc6c0 Delete type=0 #260
2025/03/28-14:56:17.609952 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.609988 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.620719 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.621043 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.621110 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.044217 7f34ce7fc6c0 Recovering log #326
2025/11/21-21:17:11.059351 7f34ce7fc6c0 Delete type=3 #324
2025/11/21-21:17:11.059409 7f34ce7fc6c0 Delete type=0 #326
2025/11/21-21:20:34.076024 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.076057 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.082546 7f322ffff6c0 Delete type=0 #329
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)
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.

BIN
packs/equipement/000275.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.156515 7f9cf5ffb6c0 Recovering log #265
2025/03/28-18:06:54.167920 7f9cf5ffb6c0 Delete type=3 #263
2025/03/28-18:06:54.168006 7f9cf5ffb6c0 Delete type=0 #265
2025/03/28-18:09:08.806529 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.806589 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.813486 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.833864 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.833923 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.073305 7f93eb7fe6c0 Recovering log #330
2026/01/05-22:20:56.084269 7f93eb7fe6c0 Delete type=3 #328
2026/01/05-22:20:56.084336 7f93eb7fe6c0 Delete type=0 #330
2026/01/05-22:39:51.112726 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.112760 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.119133 7f93e9ffb6c0 Delete type=0 #333
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.322258 7f9cf5ffb6c0 Recovering log #260
2025/03/28-14:48:51.332966 7f9cf5ffb6c0 Delete type=3 #258
2025/03/28-14:48:51.333025 7f9cf5ffb6c0 Delete type=0 #260
2025/03/28-14:56:17.653610 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.653676 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.664679 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.664840 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.664885 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.157103 7f34ce7fc6c0 Recovering log #326
2025/11/21-21:17:11.172875 7f34ce7fc6c0 Delete type=3 #324
2025/11/21-21:17:11.172939 7f34ce7fc6c0 Delete type=0 #326
2025/11/21-21:20:34.095092 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.095126 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.102295 7f322ffff6c0 Delete type=0 #329
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)
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.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.116086 7f9cf67fc6c0 Recovering log #265
2025/03/28-18:06:54.126771 7f9cf67fc6c0 Delete type=3 #263
2025/03/28-18:06:54.126828 7f9cf67fc6c0 Delete type=0 #265
2025/03/28-18:09:08.793243 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.793267 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.799520 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.806348 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.806409 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.034759 7f93ea7fc6c0 Recovering log #330
2026/01/05-22:20:56.045303 7f93ea7fc6c0 Delete type=3 #328
2026/01/05-22:20:56.045387 7f93ea7fc6c0 Delete type=0 #330
2026/01/05-22:39:51.094206 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.094228 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.100330 7f93e9ffb6c0 Delete type=0 #333
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.280283 7f9cf57fa6c0 Recovering log #260
2025/03/28-14:48:51.290774 7f9cf57fa6c0 Delete type=3 #258
2025/03/28-14:48:51.290830 7f9cf57fa6c0 Delete type=0 #260
2025/03/28-14:56:17.575147 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.575265 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.588993 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.620966 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.621063 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.100312 7f34ce7fc6c0 Recovering log #326
2025/11/21-21:17:11.117500 7f34ce7fc6c0 Delete type=3 #324
2025/11/21-21:17:11.117567 7f34ce7fc6c0 Delete type=0 #326
2025/11/21-21:20:34.069446 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.069505 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.075899 7f322ffff6c0 Delete type=0 #329
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)
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.

BIN
packs/mutations/000185.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000177
MANIFEST-000242

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.089587 7f9cf6ffd6c0 Recovering log #175
2025/03/28-18:06:54.100163 7f9cf6ffd6c0 Delete type=3 #173
2025/03/28-18:06:54.100221 7f9cf6ffd6c0 Delete type=0 #175
2025/03/28-18:09:08.826965 7f9cf4ff96c0 Level-0 table #180: started
2025/03/28-18:09:08.826991 7f9cf4ff96c0 Level-0 table #180: 0 bytes OK
2025/03/28-18:09:08.833674 7f9cf4ff96c0 Delete type=0 #178
2025/03/28-18:09:08.833905 7f9cf4ff96c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.833931 7f9cf4ff96c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.010250 7f93eaffd6c0 Recovering log #240
2026/01/05-22:20:56.020208 7f93eaffd6c0 Delete type=3 #238
2026/01/05-22:20:56.020270 7f93eaffd6c0 Delete type=0 #240
2026/01/05-22:39:51.106439 7f93e9ffb6c0 Level-0 table #245: started
2026/01/05-22:39:51.106472 7f93e9ffb6c0 Level-0 table #245: 0 bytes OK
2026/01/05-22:39:51.112404 7f93e9ffb6c0 Delete type=0 #243
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.249116 7f9cf6ffd6c0 Recovering log #170
2025/03/28-14:48:51.259201 7f9cf6ffd6c0 Delete type=3 #168
2025/03/28-14:48:51.259300 7f9cf6ffd6c0 Delete type=0 #170
2025/03/28-14:56:17.589172 7f9cf4ff96c0 Level-0 table #176: started
2025/03/28-14:56:17.589229 7f9cf4ff96c0 Level-0 table #176: 0 bytes OK
2025/03/28-14:56:17.599147 7f9cf4ff96c0 Delete type=0 #174
2025/03/28-14:56:17.621000 7f9cf4ff96c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.621080 7f9cf4ff96c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.062660 7f34cdffb6c0 Recovering log #236
2025/11/21-21:17:11.079663 7f34cdffb6c0 Delete type=3 #234
2025/11/21-21:17:11.079731 7f34cdffb6c0 Delete type=0 #236
2025/11/21-21:20:34.088817 7f322ffff6c0 Level-0 table #241: started
2025/11/21-21:20:34.088856 7f322ffff6c0 Level-0 table #241: 0 bytes OK
2025/11/21-21:20:34.094750 7f322ffff6c0 Delete type=0 #239
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)
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.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.172273 7f9cf67fc6c0 Recovering log #265
2025/03/28-18:06:54.183178 7f9cf67fc6c0 Delete type=3 #263
2025/03/28-18:06:54.183275 7f9cf67fc6c0 Delete type=0 #265
2025/03/28-18:09:08.820046 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.820086 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.826845 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.833893 7f9cf4ff96c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.833939 7f9cf4ff96c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.088422 7f93eaffd6c0 Recovering log #330
2026/01/05-22:20:56.098507 7f93eaffd6c0 Delete type=3 #328
2026/01/05-22:20:56.098565 7f93eaffd6c0 Delete type=0 #330
2026/01/05-22:39:51.119253 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.119282 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.125789 7f93e9ffb6c0 Delete type=0 #333
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)
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)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.338096 7f9cf57fa6c0 Recovering log #260
2025/03/28-14:48:51.348604 7f9cf57fa6c0 Delete type=3 #258
2025/03/28-14:48:51.348690 7f9cf57fa6c0 Delete type=0 #260
2025/03/28-14:56:17.632377 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.632408 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.643709 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.664820 7f9cf4ff96c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.664869 7f9cf4ff96c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.175622 7f34cd7fa6c0 Recovering log #326
2025/11/21-21:17:11.190667 7f34cd7fa6c0 Delete type=3 #324
2025/11/21-21:17:11.190757 7f34cd7fa6c0 Delete type=0 #326
2025/11/21-21:20:34.109081 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.109106 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.114933 7f322ffff6c0 Delete type=0 #329
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)
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.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000332

View File

@@ -1,8 +1,8 @@
2025/03/28-18:06:54.142912 7f9cf6ffd6c0 Recovering log #265
2025/03/28-18:06:54.152918 7f9cf6ffd6c0 Delete type=3 #263
2025/03/28-18:06:54.153055 7f9cf6ffd6c0 Delete type=0 #265
2025/03/28-18:09:08.779338 7f9cf4ff96c0 Level-0 table #270: started
2025/03/28-18:09:08.779431 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
2025/03/28-18:09:08.786537 7f9cf4ff96c0 Delete type=0 #268
2025/03/28-18:09:08.806298 7f9cf4ff96c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
2025/03/28-18:09:08.806379 7f9cf4ff96c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
2026/01/05-22:20:56.060705 7f93ebfff6c0 Recovering log #330
2026/01/05-22:20:56.070672 7f93ebfff6c0 Delete type=3 #328
2026/01/05-22:20:56.070726 7f93ebfff6c0 Delete type=0 #330
2026/01/05-22:39:51.131859 7f93e9ffb6c0 Level-0 table #335: started
2026/01/05-22:39:51.131886 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
2026/01/05-22:39:51.137774 7f93e9ffb6c0 Delete type=0 #333
2026/01/05-22:39:51.137894 7f93e9ffb6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
2026/01/05-22:39:51.137928 7f93e9ffb6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/03/28-14:48:51.307945 7f9cf6ffd6c0 Recovering log #260
2025/03/28-14:48:51.319172 7f9cf6ffd6c0 Delete type=3 #258
2025/03/28-14:48:51.319256 7f9cf6ffd6c0 Delete type=0 #260
2025/03/28-14:56:17.621210 7f9cf4ff96c0 Level-0 table #266: started
2025/03/28-14:56:17.621292 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
2025/03/28-14:56:17.632240 7f9cf4ff96c0 Delete type=0 #264
2025/03/28-14:56:17.664806 7f9cf4ff96c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
2025/03/28-14:56:17.664849 7f9cf4ff96c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
2025/11/21-21:17:11.139151 7f34cdffb6c0 Recovering log #326
2025/11/21-21:17:11.154714 7f34cdffb6c0 Delete type=3 #324
2025/11/21-21:17:11.154795 7f34cdffb6c0 Delete type=0 #326
2025/11/21-21:20:34.102428 7f322ffff6c0 Level-0 table #331: started
2025/11/21-21:20:34.102452 7f322ffff6c0 Level-0 table #331: 0 bytes OK
2025/11/21-21:20:34.108966 7f322ffff6c0 Delete type=0 #329
2025/11/21-21:20:34.121216 7f322ffff6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
2025/11/21-21:20:34.121256 7f322ffff6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More