Compare commits

..

18 Commits

127 changed files with 4687 additions and 2260 deletions

BIN
assets/icons/sort.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -17,7 +17,8 @@
"fee": "Fée", "fee": "Fée",
"pouvoir": "Pouvoir", "pouvoir": "Pouvoir",
"profil": "Profil", "profil": "Profil",
"protection": "Protection" "protection": "Protection",
"sort": "Sort"
} }
} }
} }

View File

@@ -6,7 +6,7 @@
import { HeritiersUtility } from "./heritiers-utility.js"; import { HeritiersUtility } from "./heritiers-utility.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
export class HeritiersActorSheet extends ActorSheet { export class HeritiersActorSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -40,6 +40,7 @@ export class HeritiersActorSheet extends ActorSheet {
skills: this.actor.getSkills(), skills: this.actor.getSkills(),
utileSkillsMental: this.actor.organizeUtileSkills("mental"), utileSkillsMental: this.actor.organizeUtileSkills("mental"),
utileSkillsPhysical: this.actor.organizeUtileSkills("physical"), utileSkillsPhysical: this.actor.organizeUtileSkills("physical"),
competencesMagie: HeritiersUtility.getCompetencesMagie(),
futileSkills: this.actor.organizeFutileSkills(), futileSkills: this.actor.organizeFutileSkills(),
contacts: this.actor.organizeContacts(), contacts: this.actor.organizeContacts(),
armes: foundry.utils.duplicate(this.actor.getWeapons()), armes: foundry.utils.duplicate(this.actor.getWeapons()),
@@ -57,12 +58,13 @@ export class HeritiersActorSheet extends ActorSheet {
pvMalus: this.actor.getPvMalus(), pvMalus: this.actor.getPvMalus(),
heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"), heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
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 }),
revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}), revesetranges: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.revesetranges, { async: true }),
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}), secretsdecouverts: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.secretsdecouverts, { async: true }),
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}), questions: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.questions, { 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 }),
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}), playernotes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.playernotes, { async: true }),
magieList: this.actor.prepareMagie(),
options: this.options, options: this.options,
owner: this.document.isOwner, owner: this.document.isOwner,
editScore: this.options.editScore, editScore: this.options.editScore,
@@ -177,6 +179,11 @@ export class HeritiersActorSheet extends ActorSheet {
let compId = li.data("item-id") let compId = li.data("item-id")
this.actor.rollCompetence(compId) this.actor.rollCompetence(compId)
}) })
html.find('.roll-sort').click((event) => {
const li = $(event.currentTarget).parents(".item")
let sortId = li.data("item-id")
this.actor.rollSort(sortId)
})
html.find('.roll-attaque-arme').click((event) => { html.find('.roll-attaque-arme').click((event) => {
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id") let armeId = li.data("item-id")
@@ -209,6 +216,14 @@ export class HeritiersActorSheet extends ActorSheet {
html.find('.item-add').click((event) => { html.find('.item-add').click((event) => {
const itemType = $(event.currentTarget).data("type") const itemType = $(event.currentTarget).data("type")
if (itemType == "sort") {
// Get data-sort-competence
let sortCompetence = $(event.currentTarget).data("sort-competence");
if (sortCompetence) {
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType} de ${sortCompetence}`, type: itemType, system: { competence: sortCompetence } }], { renderSheet: true })
return
}
}
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true }) this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
}) })

View File

@@ -41,7 +41,7 @@ export class HeritiersActor extends Actor {
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences") const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
data.items = [] data.items = []
for (let skill of skills) { for (let skill of skills) {
if (skill.system.categorie == "utile") { if (skill.system.categorie == "utile" && skill.system.profil != "magie") {
data.items.push(skill.toObject()) data.items.push(skill.toObject())
} }
} }
@@ -146,6 +146,85 @@ export class HeritiersActor extends Actor {
HeritiersUtility.sortArrayObjectsByName(pouvoirs) HeritiersUtility.sortArrayObjectsByName(pouvoirs)
return pouvoirs return pouvoirs
} }
getSorts() {
return this.getItemSorted(["sort"])
}
getCompetencesMagie() {
let comp = []
for (let item of this.items) {
if (item.type == "competence" && item.system.profil == "magie") {
let itemObj = foundry.utils.duplicate(item)
comp.push(itemObj)
}
}
HeritiersUtility.sortArrayObjectsByName(comp)
return comp
}
prepareMagie() {
let magieList = []
for (let item of this.items) {
if (item.type == "competence" && item.system.profil == "magie") {
let magie = {}
magie.name = item.name
magie.competence = foundry.utils.duplicate(item)
magie.rang = Math.round(item.system.niveau / 2);
magie.rangGenericName = game.system.lesheritiers.config.rangName[magie.rang];
console.log("Magie", item.name, item.system.niveau, magie.rang, magie.rangGenericName)
//magie.rangSpecificName = game.system.lesheritiers.config.rangNameSpecific[item.name][magie.rangGenericName];
magie.sorts = {}
if (item.name == "Magie du Clan") {
magie.sorts = {
"soufflecombat": {
1: { nomNiveau: magie.competence.system.nomniveausouffle.soufflecombat["1"], sorts: [] },
2: { nomNiveau: magie.competence.system.nomniveausouffle.soufflecombat["2"], sorts: [] },
3: { nomNiveau: magie.competence.system.nomniveausouffle.soufflecombat["3"], sorts: [] },
4: { nomNiveau: magie.competence.system.nomniveausouffle.soufflecombat["4"], sorts: [] }
},
"soufflemouvement": {
1: { nomNiveau: magie.competence.system.nomniveausouffle.soufflemouvement["1"], sorts: [] },
2: { nomNiveau: magie.competence.system.nomniveausouffle.soufflemouvement["2"], sorts: [] },
3: { nomNiveau: magie.competence.system.nomniveausouffle.soufflemouvement["3"], sorts: [] },
4: { nomNiveau: magie.competence.system.nomniveausouffle.soufflemouvement["4"], sorts: [] }
},
"souffleesprit": {
1: { nomNiveau: magie.competence.system.nomniveausouffle.souffleesprit["1"], sorts: [] },
2: { nomNiveau: magie.competence.system.nomniveausouffle.souffleesprit["2"], sorts: [] },
3: { nomNiveau: magie.competence.system.nomniveausouffle.souffleesprit["3"], sorts: [] },
4: { nomNiveau: magie.competence.system.nomniveausouffle.souffleesprit["4"], sorts: [] }
}
}
for (let sort of this.items) {
if (sort.type == "sort" && sort.system.competence == item.name) {
let sortObj = foundry.utils.duplicate(sort)
sortObj.sdValue = HeritiersUtility.getSDSortValue(Number(sort.system.niveau))
if (!magie.sorts[sort.system?.souffle]) {
console.warn("Sort with unknown souffle ", sort.system.souffle, sort)
continue
}
magie.sorts[sort.system.souffle][Number(sort.system.niveau)].sorts.push(sortObj)
}
}
} else {
magie.sorts = {
1: { nomNiveau: magie.competence.system.nomniveau["1"], sorts: [] },
2: { nomNiveau: magie.competence.system.nomniveau["2"], sorts: [] },
3: { nomNiveau: magie.competence.system.nomniveau["3"], sorts: [] },
4: { nomNiveau: magie.competence.system.nomniveau["4"], sorts: [] }
}
for (let sort of this.items) {
if (sort.type == "sort" && sort.system.competence == item.name) {
let sortObj = foundry.utils.duplicate(sort)
sortObj.sdValue = HeritiersUtility.getSDSortValue(Number(sort.system.niveau))
magie.sorts[Number(sort.system.niveau)].sorts.push(sortObj)
}
}
}
magieList.push(magie)
}
}
return magieList
}
/* -------------------------------------------- */ /* -------------------------------------------- */
getSkills() { getSkills() {
@@ -171,6 +250,28 @@ export class HeritiersActor extends Actor {
item.specList = specList.toString() item.specList = specList.toString()
} }
/* -------------------------------------------- */
organizeMagicSkills() {
let comp = {}
for (let key in game.system.lesheritiers.config.competenceProfil) {
if (game.system.lesheritiers.config.competenceProfil[key].kind == "magical")
comp[key] = { skills: [], niveau: 0 }
}
for (let item of this.items) {
if (item.type == "competence") {
if (item.system.categorie == "utile" && comp[item.system.profil]) {
this.prepareUtileSkill(item)
comp[item.system.profil].skills.push(item)
}
}
}
for (let key in comp) {
HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
}
return Object.fromEntries(Object.entries(comp).sort())
}
/* -------------------------------------------- */ /* -------------------------------------------- */
organizeUtileSkills(kind = "mental") { organizeUtileSkills(kind = "mental") {
let comp = {} let comp = {}
@@ -192,6 +293,7 @@ export class HeritiersActor extends Actor {
} }
return Object.fromEntries(Object.entries(comp).sort()) return Object.fromEntries(Object.entries(comp).sort())
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
organizeContacts() { organizeContacts() {
let contactList = {} let contactList = {}
@@ -258,12 +360,37 @@ export class HeritiersActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async prepareData() { async prepareData() {
super.prepareData();
let pvMax = (this.system.caracteristiques.con.rang * 3) + 9 + this.system.pv.mod let pvMax = (this.system.caracteristiques.con.rang * 3) + 9 + this.system.pv.mod
if (this.system.pv.max != pvMax) { if (this.system.pv.max != pvMax) {
this.update({ 'system.pv.max': pvMax }) this.update({ 'system.pv.max': pvMax })
} }
if (this.system.biodata.magie || this.type == "pnj") {
let pointsAmes = this.system.caracteristiques.esp.rang + this.system.caracteristiques.san.rang + this.getMaxRangMagie()
if (this.system.magie.pointsame.max != pointsAmes) {
this.update({ 'system.magie.pointsame.max': pointsAmes })
}
}
super.prepareData();
}
/* -------------------------------------------- */
getMaxRangMagie() {
let niv = 0
let bestMagie
for (let comp of this.items) {
if (comp.type == "competence" && comp.system.profil == "magie") {
if (comp.system.niveau > niv) {
bestMagie = comp
niv = comp.system.niveau
}
}
}
if (bestMagie) {
return Math.round(bestMagie.system.niveau / 2)
}
return 0
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -397,6 +524,7 @@ export class HeritiersActor extends Actor {
adversite[adv] = Math.max(adversite[adv], 0) adversite[adv] = Math.max(adversite[adv], 0)
this.update({ 'system.adversite': adversite }) this.update({ 'system.adversite': adversite })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async incDecQuantity(objetId, incDec = 0) { async incDecQuantity(objetId, incDec = 0) {
let objetQ = this.items.get(objetId) let objetQ = this.items.get(objetId)
@@ -627,6 +755,80 @@ export class HeritiersActor extends Actor {
rollDialog.render(true) rollDialog.render(true)
} }
/* -------------------------------------------- */
inDecCarac(key, incDec) {
let carac = this.system.caracteristiques[key]
carac.value += incDec
if (carac.value < 0 || carac.value > carac.rang) {
ui.notifications.warn("Pas assez de points dans cette caractéristique ou rang max atteint !")
return false
}
carac.value = Math.max(carac.value, 0)
carac.value = Math.min(carac.value, carac.rang)
this.update({ [`system.caracteristiques.${key}`]: carac })
return true
}
/* -------------------------------------------- */
async rollSort(sortId) {
let sort = this.items.get(sortId)
let comp = this.items.find(it => it.type == "competence" && it.name.toLowerCase() == sort.system.competence.toLowerCase())
if (!comp) {
ui.notifications.warn("Compétence de magie associée non trouvée !")
return
}
if (sort.system.informatif) {
if (sort.system.texteinformatif) {
let chatData = { user: game.user.id, speaker: { actor: this, alias: this.name }, content: `<div class="heritiers-informatif-sort"><h4>Sort informatif !</h4>${sort.system.texteinformatif}</div>` }
ChatMessage.create(chatData)
} else {
ui.notifications.info("Ce sort est uniquement informatif et ne peut pas être lancé.")
}
return
}
let rollData = this.getCommonRollData(comp.id)
rollData.mode = "sort"
rollData.sort = foundry.utils.duplicate(sort)
rollData.sdValue = HeritiersUtility.getSDSortValue(Number(sort.system.niveau))
if (Number(sort.system.sdspecial) && Number(sort.system.sdspecial) > 0) {
rollData.sdValue = Number(sort.system.sdspecial)
}
rollData.sortPointsAme = Number(sort.system.niveau)
rollData.totalEsprit = 1
if (sort.system.competence == "Grand Langage") {
rollData.sortPointsAme *= 2
rollData.totalEsprit = Math.floor((rollData.sortPointsAme) / 3)
}
if (rollData.sortPointsAme > this.system.magie.pointsame.value) {
// Vérifier si au moins 1 point d'Esprit est disponible
if (this.system.caracteristiques.esp.value <= rollData.totalEsprit) {
ui.notifications.warn(`Pas assez de Points d'Esprit ni de Points d'Ame pour lancer ce sort (requis: ${rollData.totalEsprit}, disponible: ${this.system.caracteristiques.esp.value})`)
return
} else {
rollData.spendEsprit = true
ui.notifications.warn(`Vous n'avez pas assez de Points d'Ame pour lancer ce sort (requis: ${rollData.sortPointsAme}, disponible: ${this.system.magie.pointsame.value}).`)
ui.notifications.warn(`${rollData.totalEsprit} Points d'Esprit seront utilisés à la place si vous effectuez le lancer.`)
}
}
if (sort.system.carac2 != "none") {
// get the best carac between carac1 and carac2
if (this.system.caracteristiques[sort.system.carac1].value > this.system.caracteristiques[sort.system.carac2].value) {
rollData.caracKey = sort.system.carac1
} else {
rollData.caracKey = sort.system.carac2
}
rollData.caracMessage = "Ce sort peut être lancé avec " + game.system.lesheritiers.config.caracList[sort.system.carac1] + " ou " + game.system.lesheritiers.config.caracList[sort.system.carac2] + ". La meilleure caractéristique a été selectionnée."
} else {
rollData.caracKey = sort.system.carac1
}
console.log("RollData", rollData)
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollAttaqueArme(armeId) { async rollAttaqueArme(armeId) {
let arme = this.items.get(armeId) let arme = this.items.get(armeId)
@@ -777,24 +979,50 @@ export class HeritiersActor extends Actor {
} }
let rollData = this.getCommonRollData(undefined, undefined) let rollData = this.getCommonRollData(undefined, undefined)
if (pouvoir.system.feeriemasque != "autre") {
rollData.pouvoirBase = foundry.utils.duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
rollData.pouvoirBase.label = "Féerie"
if (!pouvoir.system.carac) {
ui.notifications.warn("Le pouvoir actif " + pouvoir.name + " n'a pas de caractéristique associée")
return
}
rollData.carac = foundry.utils.duplicate(this.system.caracteristiques[pouvoir.system.carac])
rollData.caracKey = pouvoir.system.carac
}
rollData.pouvoirMaxUsage = this.getPouvoirUsageMax(pouvoir) rollData.pouvoirMaxUsage = this.getPouvoirUsageMax(pouvoir)
rollData.pouvoir = foundry.utils.duplicate(pouvoir) rollData.pouvoir = foundry.utils.duplicate(pouvoir)
rollData.mode = "pouvoir" rollData.mode = "pouvoir"
if (pouvoir.system.feeriemasque != "autre") {
rollData.pouvoirBase = foundry.utils.duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
rollData.pouvoirBase.label = "Féerie"
if (pouvoir.system.istest && !pouvoir.system.carac) {
ui.notifications.warn("Le pouvoir actif " + pouvoir.name + " n'a pas de caractéristique associée")
}
if (pouvoir.system.istest) {
rollData.carac = foundry.utils.duplicate(this.system.caracteristiques[pouvoir.system.carac])
rollData.caracKey = pouvoir.system.carac
} else {
rollData.noRoll = true
HeritiersUtility.rollHeritiers(rollData);
return;
//this.incDecPointsUsage(pouvoir.id, -rollData.pouvoirPointsUsage)
//ui.notifications.warn("Le pouvoir actif " + pouvoir.name + " a été utilisé, dépense de " + pouvoirPointsUsage + " points d'usage")
}
}
let rollDialog = await HeritiersRollDialog.create(this, rollData) let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true) rollDialog.render(true)
} }
} }
/* -------------------------------------------- */
incDecPointsAme(value) {
let newValue = this.system.magie.pointsame.value + value
newValue = Math.max(newValue, 0)
newValue = Math.min(newValue, this.system.magie.pointsame.max)
this.update({ 'system.magie.pointsame.value': newValue })
}
/* -------------------------------------------- */
incDecPV(value) {
let newValue = this.system.pv.value + value
newValue = Math.max(newValue, 0)
newValue = Math.min(newValue, this.system.pv.max)
this.update({ 'system.pv.value': newValue })
}
/* -------------------------------------------- */ /* -------------------------------------------- */
incDecPointsUsage(pouvoirId, value) { incDecPointsUsage(pouvoirId, value) {
let pouvoir = this.items.get(pouvoirId) let pouvoir = this.items.get(pouvoirId)

View File

@@ -30,7 +30,8 @@ export const HERITIERS_CONFIG = {
"combattant": { kind: "physical", name: "Combattant" }, "combattant": { kind: "physical", name: "Combattant" },
"erudit": { kind: "mental", name: "Erudit" }, "erudit": { kind: "mental", name: "Erudit" },
"savant": { kind: "mental", name: "Savant" }, "savant": { kind: "mental", name: "Savant" },
"gentleman": {kind: "mental",name:"Gentleman"} "gentleman": { kind: "mental", name: "Gentleman" },
"magie": { kind: "magical", name: "Magie" },
}, },
baseTestPouvoir: { baseTestPouvoir: {
"feerie": "Féerie", "feerie": "Féerie",
@@ -65,32 +66,32 @@ export const HERITIERS_CONFIG = {
}, },
seuilsDifficulte: { seuilsDifficulte: {
"-1": "Aucun/Non applicable", "-1": "Aucun/Non applicable",
"5": "Enfantine", "5": "Enfantine (5)",
"6": "Triviale", "6": "Triviale (6)",
"7": "Moins Triviale", "7": "Moins Triviale (7)",
"8": "Aisée", "8": "Aisée (8)",
"7": "Moins Aisée", "9": "Moins Aisée (9)",
"10": "Normale", "10": "Normale (10)",
"11": "Moins Normale", "11": "Moins Normale (11)",
"12": "Compliquée", "12": "Compliquée (12)",
"13": "Plus Compliquée", "13": "Plus Compliquée (13)",
"14": "Difficile", "14": "Difficile (14)",
"15": "Plus Difficile", "15": "Plus Difficile (15)",
"16": "Très Difficile", "16": "Très Difficile (16)",
"17": "Très Très Difficile", "17": "Très Très Difficile (17)",
"18": "Critique", "18": "Critique (18)",
"19": "Plus Critique", "19": "Plus Critique (19)",
"20": "Insurmontable", "20": "Insurmontable (20)",
"20": "Très Insurmontable", "21": "Très Insurmontable (21)",
"22": "Surhumaine", "22": "Surhumaine (22)",
"23": "Très Surhumaine", "23": "Très Surhumaine (23)",
"24": "Epique", "24": "Epique (24)",
"25": "Plus Epique", "25": "Plus Epique (25)",
"26": "Légendaire", "26": "Légendaire (26)",
"26": "Très Légendaire", "27": "Très Légendaire (27)",
"28": "Mythique", "28": "Mythique (28)",
"29": "Plus Mythique", "29": "Plus Mythique (29)",
"30": "Divine" "30": "Divine (30)"
}, },
attaqueCible: { attaqueCible: {
@@ -193,6 +194,21 @@ export const HERITIERS_CONFIG = {
{ value: "5", label: "+5" }, { value: "5", label: "+5" },
{ value: "6", label: "+6" } { value: "6", label: "+6" }
], ],
listNiveauSort: {
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
listRangSort: {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7"
},
listNiveau: { listNiveau: {
"0": "0", "0": "0",
"1": "1", "1": "1",
@@ -206,5 +222,61 @@ export const HERITIERS_CONFIG = {
"9": "9", "9": "9",
"10": "10" "10": "10"
}, },
rangName: [
"Novice",
"Novice",
"Adepte",
"Maître",
"Grand Maître"
],
rangNameSpecific: {
"Druidisme": {
"Novice": "Eubage",
"Adepte": "Saronide",
"Maître": "Ovate",
"Grand Maître": "Archidruide"
},
"Faëomancie": {
"Novice": "Marmiton",
"Adepte": "Queux",
"Maître": "Chef",
"Grand Maître": "Maître-queux"
},
"Nécromancie": {
"Novice": "Inexpertus",
"Adepte": "Discipulus",
"Maître": "Dominus",
"Grand Maître": "Magister"
},
"Necromancie": {
"Novice": "Inexpertus",
"Adepte": "Discipulus",
"Maître": "Dominus",
"Grand Maître": "Magister"
},
"Magie du Clan": {
"Novice": "Apprenti",
"Adepte": "Disciple",
"Maître": "Maître",
"Grand Maître": "Éminence"
},
"Théurgie": {
"Novice": "Frère",
"Adepte": "Père",
"Maître": "Saint",
"Grand Maître": "Apôtre"
},
"Grand Langage": {
"Novice": "Éveillé",
"Adepte": "Initié",
"Maître": "Sage",
"Grand Maître": "Docteur"
}
},
soufflesMagieDuClan: {
"soufflecombat": "Souffle du Combat",
"soufflemouvement": "Souffle du Mouvement",
"souffleesprit": "Souffle de l'Esprit"
}
} }

View File

@@ -4,7 +4,7 @@ import { HeritiersUtility } from "./heritiers-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 HeritiersItemSheet extends ItemSheet { export class HeritiersItemSheet extends foundry.appv1.sheets.ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -63,7 +63,7 @@ export class HeritiersItemSheet extends ItemSheet {
owner: this.document.isOwner, owner: this.document.isOwner,
config: game.system.lesheritiers.config, config: game.system.lesheritiers.config,
isArmeMelee: HeritiersUtility.isArmeMelee(this.object), isArmeMelee: HeritiersUtility.isArmeMelee(this.object),
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}), description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }),
mr: (this.object.type == 'specialisation'), mr: (this.object.type == 'specialisation'),
isGM: game.user.isGM, isGM: game.user.isGM,
usageMax: -1 usageMax: -1
@@ -76,6 +76,10 @@ export class HeritiersItemSheet extends ItemSheet {
this.object.system.pointsusagecourant = formData.usageMax this.object.system.pointsusagecourant = formData.usageMax
} }
} }
if (this.object.type == 'sort') {
formData.competencesMagie = HeritiersUtility.getCompetencesMagie()
}
//this.options.editable = !(this.object.origin == "embeddedItem"); //this.options.editable = !(this.object.origin == "embeddedItem");
console.log("ITEM DATA", formData, this); console.log("ITEM DATA", formData, this);

View File

@@ -18,6 +18,7 @@ export const defaultItemImg = {
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp", fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp",
profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp", profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp",
equipement: "systems/fvtt-les-heritiers/assets/icons/equipement.webp", equipement: "systems/fvtt-les-heritiers/assets/icons/equipement.webp",
sort: "systems/fvtt-les-heritiers/assets/icons/sort.webp",
} }
/** /**

View File

@@ -55,12 +55,12 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */ /* -------------------------------------------- */
// Register sheet application classes // Register sheet application classes
Actors.unregisterSheet("core", ActorSheet); foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
Items.unregisterSheet("core", ItemSheet); foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
HeritiersUtility.init() HeritiersUtility.init()
@@ -131,4 +131,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
} }
return true; return true;
}); });

View File

@@ -6,7 +6,7 @@ export class HeritiersRollDialog extends Dialog {
static async create(actor, rollData) { static async create(actor, rollData) {
let options = { classes: ["HeritiersDialog"], width: 420, height: 'fit-content', 'z-index': 99999 }; let options = { classes: ["HeritiersDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
let html = await renderTemplate('systems/fvtt-les-heritiers/templates/roll-dialog-generic.html', rollData); let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-les-heritiers/templates/roll-dialog-generic.html', rollData);
return new HeritiersRollDialog(actor, rollData, html, options); return new HeritiersRollDialog(actor, rollData, html, options);
} }
@@ -109,7 +109,6 @@ export class HeritiersRollDialog extends Dialog {
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
var dialog = this;
function onLoad() { function onLoad() {
} }
$(function () { onLoad(); }); $(function () { onLoad(); });
@@ -118,6 +117,7 @@ export class HeritiersRollDialog extends Dialog {
this.rollData.sdValue = Number(event.currentTarget.value) this.rollData.sdValue = Number(event.currentTarget.value)
}) })
html.find('#caracKey').change(async (event) => { html.find('#caracKey').change(async (event) => {
//console.log("caracKey", event.currentTarget.value)
this.rollData.caracKey = String(event.currentTarget.value) this.rollData.caracKey = String(event.currentTarget.value)
}) })
html.find('#bonus-malus-context').change((event) => { html.find('#bonus-malus-context').change((event) => {

View File

@@ -48,7 +48,7 @@ export class HeritiersUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async init() { static async init() {
Hooks.on('renderChatLog', (log, html, data) => HeritiersUtility.chatListeners(html)) Hooks.on('renderChatLog', (log, html, data) => HeritiersUtility.chatListeners(html))
Hooks.on("getChatLogEntryContext", (html, options) => HeritiersUtility.chatRollMenu(html, options)) /* Unused for Heitiers : Hooks.on("getChatMessageContextOptions", (html, options) => HeritiersUtility.chatRollMenu(html, options))*/
this.rollDataStore = {} this.rollDataStore = {}
this.defenderStore = {} this.defenderStore = {}
@@ -104,6 +104,8 @@ export class HeritiersUtility {
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences") const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
this.skills = skills.map(i => i.toObject()) this.skills = skills.map(i => i.toObject())
this.competencesMagie = this.skills.filter(s => s.system.profil == "magie")
game.settings.register("fvtt-les-heritiers", "heritiers-heritage", { game.settings.register("fvtt-les-heritiers", "heritiers-heritage", {
name: "Points d'héritage", name: "Points d'héritage",
hint: "Points d'héritage du groupe", hint: "Points d'héritage du groupe",
@@ -114,6 +116,32 @@ export class HeritiersUtility {
}) })
} }
/* -------------------------------------------- */
static getSDSortValue(niveau) {
if (niveau <= 1) return 12;
if (niveau == 2) return 14;
if (niveau == 3) return 16;
if (niveau > 3) return 18;
return 18;
}
/* -------------------------------------------- */
static getCompetencesMagie() {
return this.competencesMagie
}
/* -------------------------------------------- */
static buildCompetencesMagie() {
let competences = foundry.utils.duplicate(this.getCompetencesMagie())
for (let comp of competences) {
// Calcul du rang
let rang = Math.round(comp.system.niveau / 2);
competences.system.rang = rang;
competences.system.rangGenericName = game.system.lesheritiers.config.rangName[rang];
competences.system.rangSpecificName = game.system.lesheritiers.config.rangNameSpecific[comp.Name][competences.system.rangGenericName];
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async loadCompendiumData(compendium) { static async loadCompendiumData(compendium) {
const pack = game.packs.get(compendium); const pack = game.packs.get(compendium);
@@ -133,7 +161,7 @@ export class HeritiersUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
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 = HeritiersUtility.findChatMessageId(event.currentTarget) let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
@@ -144,7 +172,7 @@ export class HeritiersUtility {
HeritiersUtility.rollHeritiers(rollData) HeritiersUtility.rollHeritiers(rollData)
}) })
html.on("click", '.roll-tricherie-2', async event => { $(html).on("click", '.roll-tricherie-2', async event => {
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget) let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "heritiers-roll") let rollData = message.getFlag("world", "heritiers-roll")
@@ -155,7 +183,7 @@ export class HeritiersUtility {
} }
}) })
html.on("click", '.roll-chat-degat', async event => { $(html).on("click", '.roll-chat-degat', async event => {
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget) let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "heritiers-roll") let rollData = message.getFlag("world", "heritiers-roll")
@@ -172,10 +200,9 @@ export class HeritiersUtility {
'systems/fvtt-les-heritiers/templates/partial-item-header.html', 'systems/fvtt-les-heritiers/templates/partial-item-header.html',
'systems/fvtt-les-heritiers/templates/partial-item-description.html', 'systems/fvtt-les-heritiers/templates/partial-item-description.html',
'systems/fvtt-les-heritiers/templates/partial-item-nav.html', 'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html', 'systems/fvtt-les-heritiers/templates/partial-utile-skills.html'
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
] ]
return loadTemplates(templatePaths); return foundry.applications.handlebars.loadTemplates(templatePaths);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -451,7 +478,7 @@ export class HeritiersUtility {
this.computeArmeDegats(rollData, actor) this.computeArmeDegats(rollData, actor)
} }
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-cc-result.html`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-les-heritiers/templates/chat-cc-result.html`, rollData)
}, rollData, "selfroll") }, rollData, "selfroll")
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -463,7 +490,7 @@ export class HeritiersUtility {
this.computeMarge(rollData, valeurDefense) this.computeMarge(rollData, valeurDefense)
rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1 rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-assommer-result.html`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-les-heritiers/templates/chat-assommer-result.html`, rollData)
}, rollData, "selfroll") }, rollData, "selfroll")
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -477,6 +504,7 @@ export class HeritiersUtility {
} }
//rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp" //rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
if (rollData.caracKey == "pre") rollData.caracKey = "pres"; // Patch tomanage wrong carac key
rollData.carac = foundry.utils.duplicate(actor.system.caracteristiques[rollData.caracKey]) rollData.carac = foundry.utils.duplicate(actor.system.caracteristiques[rollData.caracKey])
if (rollData.forcedValue) { if (rollData.forcedValue) {
@@ -552,9 +580,20 @@ export class HeritiersUtility {
if (rollData.mode == "pouvoir" || rollData.mode == "pouvoirpassif") { if (rollData.mode == "pouvoir" || rollData.mode == "pouvoirpassif") {
actor.incDecPointsUsage(rollData.pouvoir._id, -rollData.pouvoirPointsUsage) actor.incDecPointsUsage(rollData.pouvoir._id, -rollData.pouvoirPointsUsage)
} }
// Gestion sort et points d'âme
if (rollData.mode == "sort") {
if (rollData.spendEsprit) {
actor.inDecCarac("esp", -rollData.totalEsprit)
} else {
actor.incDecPointsAme(-rollData.sortPointsAme)
if (rollData.sort.system.competence == "Magie du Clan") {
actor.incDecPV(-2)
}
}
}
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
}, rollData) }, rollData)
// Gestion attaque standard // Gestion attaque standard
@@ -592,7 +631,7 @@ export class HeritiersUtility {
this.computeResult(rollData) this.computeResult(rollData)
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
}, rollData) }, rollData)
} }
@@ -765,13 +804,13 @@ export class HeritiersUtility {
static chatRollMenu(html, options) { static chatRollMenu(html, options) {
let canApply = li => canvas.tokens.controlled.length && li.find(".heritiers-roll").length let canApply = li => canvas.tokens.controlled.length && li.find(".heritiers-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", "heritiers-roll") let rollData = message.getFlag("world", "heritiers-roll")
let actor = this.getActorFromRollData(rollData) let actor = this.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", "heritiers-roll") let rollData = message.getFlag("world", "heritiers-roll")
let actor = this.getActorFromRollData(rollData) let actor = this.getActorFromRollData(rollData)
return (!rollData.isReroll && actor.getEclat() > 0) return (!rollData.isReroll && actor.getEclat() > 0)
@@ -806,11 +845,11 @@ export class HeritiersUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async confirmDelete(actorSheet, li) { static async confirmDelete(actorSheet, li) {
let itemId = li.data("item-id"); let itemId = li.data("item-id");
let msgTxt = "<p>Are you sure to remove this Item ?"; let msgTxt = "<p>Certain de supprimer cet item ?";
let buttons = { let buttons = {
delete: { delete: {
icon: '<i class="fas fa-check"></i>', icon: '<i class="fas fa-check"></i>',
label: "Yes, remove it", label: "Oui !",
callback: () => { callback: () => {
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]); actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
li.slideUp(200, () => actorSheet.render(false)); li.slideUp(200, () => actorSheet.render(false));
@@ -818,12 +857,12 @@ export class HeritiersUtility {
}, },
cancel: { cancel: {
icon: '<i class="fas fa-times"></i>', icon: '<i class="fas fa-times"></i>',
label: "Cancel" label: "Non !"
} }
} }
msgTxt += "</p>"; msgTxt += "</p>";
let d = new Dialog({ let d = new Dialog({
title: "Confirm removal", title: "Confirmer la suppression",
content: msgTxt, content: msgTxt,
buttons: buttons, buttons: buttons,
default: "cancel" default: "cancel"
@@ -831,21 +870,56 @@ export class HeritiersUtility {
d.render(true); d.render(true);
} }
/************************************************************************************/ static loadSort() {
static async __create_talents_table() { // Create afolder in the item directory if it doesn't exist
let compName = "fvtt-les-heritiers.talents-cellule" if (!game.folders.getName("Magie du Clan")) {
const compData = await HeritiersUtility.loadCompendium(compName) Folder.create({
let talents = compData.map(i => i.toObject()) name: "Magie du Clan",
type: "Item",
color: "#3b1361"
});
}
let htmlTab = "<table border='1'><tbody>"; // Load the srcdata/sorts-druidisme.json file
for (let entryData of talents) { return fetch("systems/fvtt-les-heritiers/srcdata/sort_magieduclan.json")
console.log(entryData) .then(response => response.json())
htmlTab += `<tr><td>@UUID[Compendium.${compName}.${entryData._id}]{${entryData.name}}</td>` .then(data => {
htmlTab += `<td>${entryData.system.description}</td>`; console.log("Sorts Magie du Clan loaded:", data);
//htmlTab += `<td>${entryData.system.resumebonus}</td>`; this.sortDruidisme = data;
htmlTab += "</tr>\n"; // Loop through the spell and create the "sort "item based on the JSON content
} data.forEach(spell => {
htmlTab += "</table>"; spell.name = spell.name;
await JournalEntry.create({ name: 'Liste des Talents de Cellule', content: htmlTab }); spell.type = "sort";
spell.system = {
niveau: spell.niveau,
competence: spell.competence,
carac1: spell.carac1,
carac2: spell.carac2,
description: spell.description,
ingredients: spell.ingredients,
portee: spell.portee,
duree: spell.duree,
concentration: spell.concentration,
critique: spell.critique,
resistance: spell.resistance,
coutactivation: spell.coutactivation
};
spell.img = "systems/fvtt-les-heritiers/assets/icons/sort.webp";
spell.folder = game.folders.getName("Magie du Clan").id;
// Create the item in the world
Item.create(spell)
.then(item => {
console.log("Sort created:", item);
})
.catch(error => {
console.error("Error creating sort item:", error);
});
})
})
.catch(error => {
console.error("Error loading druidism spells:", error);
return [];
});
} }
} }

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000107 MANIFEST-000300

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:24.000188 7f7a316006c0 Recovering log #104 2025/09/15-22:15:24.823326 7f307affd6c0 Recovering log #298
2024/05/23-14:51:24.010463 7f7a316006c0 Delete type=3 #102 2025/09/15-22:15:24.833041 7f307affd6c0 Delete type=3 #296
2024/05/23-14:51:24.010514 7f7a316006c0 Delete type=0 #104 2025/09/15-22:15:24.833115 7f307affd6c0 Delete type=0 #298
2024/05/23-15:00:04.398824 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.584235 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-15:00:04.398861 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.584266 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-15:00:04.405139 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.590949 7f307a7fc6c0 Delete type=0 #301
2024/05/23-15:00:04.405289 7f7a2b8006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.597083 7f307a7fc6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.405345 7f7a2b8006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.597126 7f307a7fc6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.623302 7f80456006c0 Recovering log #100 2025/09/15-21:06:27.325495 7f307affd6c0 Recovering log #294
2024/05/23-10:57:45.634017 7f80456006c0 Delete type=3 #98 2025/09/15-21:06:27.335836 7f307affd6c0 Delete type=3 #292
2024/05/23-10:57:45.634148 7f80456006c0 Delete type=0 #100 2025/09/15-21:06:27.335957 7f307affd6c0 Delete type=0 #294
2024/05/23-11:25:01.407869 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.705256 7f307a7fc6c0 Level-0 table #299: started
2024/05/23-11:25:01.412121 7f803fe006c0 Level-0 table #105: 76980 bytes OK 2025/09/15-21:08:54.705333 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/05/23-11:25:01.418196 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.712270 7f307a7fc6c0 Delete type=0 #297
2024/05/23-11:25:01.442441 7f803fe006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.731675 7f307a7fc6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.466948 7f803fe006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at '!items!y1yOenfAJTsb3r6e' @ 62 : 1 2025/09/15-21:08:54.731735 7f307a7fc6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.466958 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.471640 7f803fe006c0 Generated table #106@1: 31 keys, 76980 bytes
2024/05/23-11:25:01.471673 7f803fe006c0 Compacted 1@1 + 1@2 files => 76980 bytes
2024/05/23-11:25:01.477983 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.478100 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.478228 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.488781 7f803fe006c0 Manual compaction at level-1 from '!items!y1yOenfAJTsb3r6e' @ 62 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000107 MANIFEST-000300

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:24.026186 7f7a316006c0 Recovering log #104 2025/09/15-22:15:24.848609 7f307b7fe6c0 Recovering log #298
2024/05/23-14:51:24.036947 7f7a316006c0 Delete type=3 #102 2025/09/15-22:15:24.859061 7f307b7fe6c0 Delete type=3 #296
2024/05/23-14:51:24.037049 7f7a316006c0 Delete type=0 #104 2025/09/15-22:15:24.859140 7f307b7fe6c0 Delete type=0 #298
2024/05/23-15:00:04.391521 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.577999 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-15:00:04.391574 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.578051 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-15:00:04.398604 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.584148 7f307a7fc6c0 Delete type=0 #301
2024/05/23-15:00:04.405267 7f7a2b8006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.597073 7f307a7fc6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.405337 7f7a2b8006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.597114 7f307a7fc6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.655135 7f8046a006c0 Recovering log #100 2025/09/15-21:06:27.351420 7f307bfff6c0 Recovering log #294
2024/05/23-10:57:45.665774 7f8046a006c0 Delete type=3 #98 2025/09/15-21:06:27.362201 7f307bfff6c0 Delete type=3 #292
2024/05/23-10:57:45.665849 7f8046a006c0 Delete type=0 #100 2025/09/15-21:06:27.362258 7f307bfff6c0 Delete type=0 #294
2024/05/23-11:25:01.418338 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.712395 7f307a7fc6c0 Level-0 table #299: started
2024/05/23-11:25:01.422571 7f803fe006c0 Level-0 table #105: 17369 bytes OK 2025/09/15-21:08:54.712426 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/05/23-11:25:01.428914 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.718406 7f307a7fc6c0 Delete type=0 #297
2024/05/23-11:25:01.442459 7f803fe006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.731696 7f307a7fc6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.478313 7f803fe006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at '!items!zbsVCsWxRzkzzG1N' @ 144 : 1 2025/09/15-21:08:54.731747 7f307a7fc6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.478324 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.482030 7f803fe006c0 Generated table #106@1: 72 keys, 17369 bytes
2024/05/23-11:25:01.482057 7f803fe006c0 Compacted 1@1 + 1@2 files => 17369 bytes
2024/05/23-11:25:01.488371 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.488544 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.488680 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.488790 7f803fe006c0 Manual compaction at level-1 from '!items!zbsVCsWxRzkzzG1N' @ 144 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000107 MANIFEST-000300

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:23.987816 7f7a30c006c0 Recovering log #104 2025/09/15-22:15:24.798700 7f307bfff6c0 Recovering log #298
2024/05/23-14:51:23.997550 7f7a30c006c0 Delete type=3 #102 2025/09/15-22:15:24.808066 7f307bfff6c0 Delete type=3 #296
2024/05/23-14:51:23.997629 7f7a30c006c0 Delete type=0 #104 2025/09/15-22:15:24.808115 7f307bfff6c0 Delete type=0 #298
2024/05/23-15:00:04.371340 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.541562 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-15:00:04.371366 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.541615 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-15:00:04.377577 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.547814 7f307a7fc6c0 Delete type=0 #301
2024/05/23-15:00:04.377847 7f7a2b8006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.565908 7f307a7fc6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.377924 7f7a2b8006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.565949 7f307a7fc6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.608985 7f80460006c0 Recovering log #100 2025/09/15-21:06:27.300488 7f307bfff6c0 Recovering log #294
2024/05/23-10:57:45.618959 7f80460006c0 Delete type=3 #98 2025/09/15-21:06:27.310028 7f307bfff6c0 Delete type=3 #292
2024/05/23-10:57:45.619067 7f80460006c0 Delete type=0 #100 2025/09/15-21:06:27.310094 7f307bfff6c0 Delete type=0 #294
2024/05/23-11:25:01.397161 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.685417 7f307a7fc6c0 Level-0 table #299: started
2024/05/23-11:25:01.401554 7f803fe006c0 Level-0 table #105: 63133 bytes OK 2025/09/15-21:08:54.685439 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/05/23-11:25:01.407613 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.692723 7f307a7fc6c0 Delete type=0 #297
2024/05/23-11:25:01.442406 7f803fe006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.705096 7f307a7fc6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.442493 7f803fe006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at '!items!zvtBlG6KCIn0oCVk' @ 306 : 1 2025/09/15-21:08:54.705139 7f307a7fc6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.442500 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.447773 7f803fe006c0 Generated table #106@1: 153 keys, 63133 bytes
2024/05/23-11:25:01.447818 7f803fe006c0 Compacted 1@1 + 1@2 files => 63133 bytes
2024/05/23-11:25:01.453866 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.454036 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.454195 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.488757 7f803fe006c0 Manual compaction at level-1 from '!items!zvtBlG6KCIn0oCVk' @ 306 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/avantages/000179.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000107 MANIFEST-000300

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:23.948792 7f7a316006c0 Recovering log #104 2025/09/15-22:15:24.760919 7f3080dfa6c0 Recovering log #298
2024/05/23-14:51:23.958442 7f7a316006c0 Delete type=3 #102 2025/09/15-22:15:24.770694 7f3080dfa6c0 Delete type=3 #296
2024/05/23-14:51:23.958537 7f7a316006c0 Delete type=0 #104 2025/09/15-22:15:24.770767 7f3080dfa6c0 Delete type=0 #298
2024/05/23-15:00:04.351486 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.521581 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-15:00:04.351511 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.521642 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-15:00:04.357671 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.528012 7f307a7fc6c0 Delete type=0 #301
2024/05/23-15:00:04.377771 7f7a2b8006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.534278 7f307a7fc6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.377867 7f7a2b8006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.534315 7f307a7fc6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.566585 7f80456006c0 Recovering log #100 2025/09/15-21:06:27.262631 7f307bfff6c0 Recovering log #294
2024/05/23-10:57:45.576456 7f80456006c0 Delete type=3 #98 2025/09/15-21:06:27.272396 7f307bfff6c0 Delete type=3 #292
2024/05/23-10:57:45.576513 7f80456006c0 Delete type=0 #100 2025/09/15-21:06:27.272468 7f307bfff6c0 Delete type=0 #294
2024/05/23-11:25:01.323826 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.666847 7f307a7fc6c0 Level-0 table #299: started
2024/05/23-11:25:01.327636 7f803fe006c0 Level-0 table #105: 27634 bytes OK 2025/09/15-21:08:54.666873 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/05/23-11:25:01.333591 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.672959 7f307a7fc6c0 Delete type=0 #297
2024/05/23-11:25:01.354630 7f803fe006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.679358 7f307a7fc6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.364975 7f803fe006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at '!items!zfpjROW9LDAlXUkN' @ 126 : 1 2025/09/15-21:08:54.679384 7f307a7fc6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.364987 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.368745 7f803fe006c0 Generated table #106@1: 63 keys, 27634 bytes
2024/05/23-11:25:01.368762 7f803fe006c0 Compacted 1@1 + 1@2 files => 27634 bytes
2024/05/23-11:25:01.375071 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.375332 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.375618 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.397027 7f803fe006c0 Manual compaction at level-1 from '!items!zfpjROW9LDAlXUkN' @ 126 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/capacites/000179.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000107 MANIFEST-000300

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:23.974743 7f7a316006c0 Recovering log #104 2025/09/15-22:15:24.786128 7f307affd6c0 Recovering log #298
2024/05/23-14:51:23.985682 7f7a316006c0 Delete type=3 #102 2025/09/15-22:15:24.796141 7f307affd6c0 Delete type=3 #296
2024/05/23-14:51:23.985779 7f7a316006c0 Delete type=0 #104 2025/09/15-22:15:24.796205 7f307affd6c0 Delete type=0 #298
2024/05/23-15:00:04.365258 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.534415 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-15:00:04.365295 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.534493 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-15:00:04.371198 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.541334 7f307a7fc6c0 Delete type=0 #301
2024/05/23-15:00:04.377826 7f7a2b8006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.565894 7f307a7fc6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.377906 7f7a2b8006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.565940 7f307a7fc6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.594438 7f8046a006c0 Recovering log #100 2025/09/15-21:06:27.288049 7f307b7fe6c0 Recovering log #294
2024/05/23-10:57:45.605133 7f8046a006c0 Delete type=3 #98 2025/09/15-21:06:27.298262 7f307b7fe6c0 Delete type=3 #292
2024/05/23-10:57:45.605268 7f8046a006c0 Delete type=0 #100 2025/09/15-21:06:27.298356 7f307b7fe6c0 Delete type=0 #294
2024/05/23-11:25:01.333752 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.692841 7f307a7fc6c0 Level-0 table #299: started
2024/05/23-11:25:01.337048 7f803fe006c0 Level-0 table #105: 24250 bytes OK 2025/09/15-21:08:54.692870 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/05/23-11:25:01.343059 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.698762 7f307a7fc6c0 Delete type=0 #297
2024/05/23-11:25:01.354655 7f803fe006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.705111 7f307a7fc6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.375782 7f803fe006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at '!items!yWDg2KlXEz33TSmZ' @ 72 : 1 2025/09/15-21:08:54.705145 7f307a7fc6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.375804 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.379818 7f803fe006c0 Generated table #106@1: 36 keys, 24250 bytes
2024/05/23-11:25:01.379847 7f803fe006c0 Compacted 1@1 + 1@2 files => 24250 bytes
2024/05/23-11:25:01.386783 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.386889 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.387092 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.397039 7f803fe006c0 Manual compaction at level-1 from '!items!yWDg2KlXEz33TSmZ' @ 72 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 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-000107 MANIFEST-000306

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:23.935654 7f7a30c006c0 Recovering log #104 2025/09/15-22:15:24.748857 7f307affd6c0 Recovering log #304
2024/05/23-14:51:23.946200 7f7a30c006c0 Delete type=3 #102 2025/09/15-22:15:24.758566 7f307affd6c0 Delete type=3 #302
2024/05/23-14:51:23.946253 7f7a30c006c0 Delete type=0 #104 2025/09/15-22:15:24.758631 7f307affd6c0 Delete type=0 #304
2024/05/23-15:00:04.344781 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.528222 7f307a7fc6c0 Level-0 table #309: started
2024/05/23-15:00:04.344815 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.528266 7f307a7fc6c0 Level-0 table #309: 0 bytes OK
2024/05/23-15:00:04.351256 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.534172 7f307a7fc6c0 Delete type=0 #307
2024/05/23-15:00:04.351383 7f7a2b8006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.534287 7f307a7fc6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.351414 7f7a2b8006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.534306 7f307a7fc6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.551260 7f80460006c0 Recovering log #100 2025/09/15-21:06:27.249709 7f307b7fe6c0 Recovering log #300
2024/05/23-10:57:45.562116 7f80460006c0 Delete type=3 #98 2025/09/15-21:06:27.260222 7f307b7fe6c0 Delete type=3 #298
2024/05/23-10:57:45.562204 7f80460006c0 Delete type=0 #100 2025/09/15-21:06:27.260307 7f307b7fe6c0 Delete type=0 #300
2024/05/23-11:25:01.313504 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.660355 7f307a7fc6c0 Level-0 table #305: started
2024/05/23-11:25:01.317069 7f803fe006c0 Level-0 table #105: 27947 bytes OK 2025/09/15-21:08:54.660389 7f307a7fc6c0 Level-0 table #305: 0 bytes OK
2024/05/23-11:25:01.323555 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.666754 7f307a7fc6c0 Delete type=0 #303
2024/05/23-11:25:01.354597 7f803fe006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.679346 7f307a7fc6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.354715 7f803fe006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at '!items!zEl2NQsnCpELVWzh' @ 136 : 1 2025/09/15-21:08:54.679378 7f307a7fc6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.354732 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.358690 7f803fe006c0 Generated table #106@1: 68 keys, 27947 bytes
2024/05/23-11:25:01.358722 7f803fe006c0 Compacted 1@1 + 1@2 files => 27947 bytes
2024/05/23-11:25:01.364610 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.364754 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.364898 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.397013 7f803fe006c0 Manual compaction at level-1 from '!items!zEl2NQsnCpELVWzh' @ 136 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 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-000107 MANIFEST-000300

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:23.961299 7f7a30c006c0 Recovering log #104 2025/09/15-22:15:24.773117 7f307b7fe6c0 Recovering log #298
2024/05/23-14:51:23.971920 7f7a30c006c0 Delete type=3 #102 2025/09/15-22:15:24.783458 7f307b7fe6c0 Delete type=3 #296
2024/05/23-14:51:23.972033 7f7a30c006c0 Delete type=0 #104 2025/09/15-22:15:24.783520 7f307b7fe6c0 Delete type=0 #298
2024/05/23-15:00:04.357792 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.559017 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-15:00:04.357813 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.559048 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-15:00:04.365124 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.565802 7f307a7fc6c0 Delete type=0 #301
2024/05/23-15:00:04.377799 7f7a2b8006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.565930 7f307a7fc6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.377887 7f7a2b8006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.565957 7f307a7fc6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.580069 7f80474006c0 Recovering log #100 2025/09/15-21:06:27.274645 7f3080dfa6c0 Recovering log #294
2024/05/23-10:57:45.590125 7f80474006c0 Delete type=3 #98 2025/09/15-21:06:27.285405 7f3080dfa6c0 Delete type=3 #292
2024/05/23-10:57:45.590216 7f80474006c0 Delete type=0 #100 2025/09/15-21:06:27.285486 7f3080dfa6c0 Delete type=0 #294
2024/05/23-11:25:01.343215 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.679508 7f307a7fc6c0 Level-0 table #299: started
2024/05/23-11:25:01.347909 7f803fe006c0 Level-0 table #105: 32297 bytes OK 2025/09/15-21:08:54.679542 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/05/23-11:25:01.354293 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.685322 7f307a7fc6c0 Delete type=0 #297
2024/05/23-11:25:01.354677 7f803fe006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.705080 7f307a7fc6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.387156 7f803fe006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at '!items!xzRJ6JP1HqoqxLdj' @ 130 : 1 2025/09/15-21:08:54.705123 7f307a7fc6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.387165 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.390635 7f803fe006c0 Generated table #106@1: 65 keys, 32297 bytes
2024/05/23-11:25:01.390672 7f803fe006c0 Compacted 1@1 + 1@2 files => 32297 bytes
2024/05/23-11:25:01.396695 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.396816 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.396942 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.397065 7f803fe006c0 Manual compaction at level-1 from '!items!xzRJ6JP1HqoqxLdj' @ 130 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/journaux/000005.ldb Normal file

Binary file not shown.

1
packs/journaux/CURRENT Normal file
View File

@@ -0,0 +1 @@
MANIFEST-000018

8
packs/journaux/LOG Normal file
View File

@@ -0,0 +1,8 @@
2025/09/15-22:15:24.887393 7f3080dfa6c0 Recovering log #16
2025/09/15-22:15:24.897947 7f3080dfa6c0 Delete type=3 #14
2025/09/15-22:15:24.898013 7f3080dfa6c0 Delete type=0 #16
2025/09/15-22:23:01.610372 7f307a7fc6c0 Level-0 table #21: started
2025/09/15-22:23:01.610444 7f307a7fc6c0 Level-0 table #21: 0 bytes OK
2025/09/15-22:23:01.616579 7f307a7fc6c0 Delete type=0 #19
2025/09/15-22:23:01.623474 7f307a7fc6c0 Manual compaction at level-0 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
2025/09/15-22:23:01.623518 7f307a7fc6c0 Manual compaction at level-1 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)

8
packs/journaux/LOG.old Normal file
View File

@@ -0,0 +1,8 @@
2025/09/15-21:06:27.389764 7f307affd6c0 Recovering log #12
2025/09/15-21:06:27.400118 7f307affd6c0 Delete type=3 #10
2025/09/15-21:06:27.400175 7f307affd6c0 Delete type=0 #12
2025/09/15-21:08:54.731831 7f307a7fc6c0 Level-0 table #17: started
2025/09/15-21:08:54.731879 7f307a7fc6c0 Level-0 table #17: 0 bytes OK
2025/09/15-21:08:54.738151 7f307a7fc6c0 Delete type=0 #15
2025/09/15-21:08:54.758915 7f307a7fc6c0 Manual compaction at level-0 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
2025/09/15-21:08:54.758952 7f307a7fc6c0 Manual compaction at level-1 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
MANIFEST-000103

0
packs/magie-sorts/LOCK Normal file
View File

15
packs/magie-sorts/LOG Normal file
View File

@@ -0,0 +1,15 @@
2025/09/15-22:15:24.810480 7f307b7fe6c0 Recovering log #101
2025/09/15-22:15:24.820390 7f307b7fe6c0 Delete type=3 #99
2025/09/15-22:15:24.820446 7f307b7fe6c0 Delete type=0 #101
2025/09/15-22:23:01.547894 7f307a7fc6c0 Level-0 table #106: started
2025/09/15-22:23:01.552623 7f307a7fc6c0 Level-0 table #106: 132165 bytes OK
2025/09/15-22:23:01.558854 7f307a7fc6c0 Delete type=0 #104
2025/09/15-22:23:01.565921 7f307a7fc6c0 Manual compaction at level-0 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
2025/09/15-22:23:01.565970 7f307a7fc6c0 Manual compaction at level-1 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at '!items!zbZ88BQkH9ZCYlDK' @ 457 : 0
2025/09/15-22:23:01.565979 7f307a7fc6c0 Compacting 1@1 + 1@2 files
2025/09/15-22:23:01.571458 7f307a7fc6c0 Generated table #107@1: 146 keys, 129863 bytes
2025/09/15-22:23:01.571503 7f307a7fc6c0 Compacted 1@1 + 1@2 files => 129863 bytes
2025/09/15-22:23:01.577463 7f307a7fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/09/15-22:23:01.577659 7f307a7fc6c0 Delete type=2 #86
2025/09/15-22:23:01.577865 7f307a7fc6c0 Delete type=2 #106
2025/09/15-22:23:01.597062 7f307a7fc6c0 Manual compaction at level-1 from '!items!zbZ88BQkH9ZCYlDK' @ 457 : 0 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)

View File

@@ -0,0 +1,8 @@
2025/09/15-21:06:27.312840 7f3080dfa6c0 Recovering log #97
2025/09/15-21:06:27.322814 7f3080dfa6c0 Delete type=3 #95
2025/09/15-21:06:27.322901 7f3080dfa6c0 Delete type=0 #97
2025/09/15-21:08:54.698842 7f307a7fc6c0 Level-0 table #102: started
2025/09/15-21:08:54.698870 7f307a7fc6c0 Level-0 table #102: 0 bytes OK
2025/09/15-21:08:54.704908 7f307a7fc6c0 Delete type=0 #100
2025/09/15-21:08:54.705132 7f307a7fc6c0 Manual compaction at level-0 from '!folders!1ENmqNfRLUTmKPc6' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
2025/09/15-21:08:54.705168 7f307a7fc6c0 Manual compaction at level-1 from '!folders!1ENmqNfRLUTmKPc6' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/pouvoirs/000180.ldb Normal file

Binary file not shown.

View File

View File

@@ -1 +1 @@
MANIFEST-000107 MANIFEST-000301

View File

@@ -1,8 +1,8 @@
2024/05/23-14:51:24.013125 7f7a30c006c0 Recovering log #104 2025/09/15-22:15:24.835820 7f307bfff6c0 Recovering log #299
2024/05/23-14:51:24.022843 7f7a30c006c0 Delete type=3 #102 2025/09/15-22:15:24.845487 7f307bfff6c0 Delete type=3 #297
2024/05/23-14:51:24.022897 7f7a30c006c0 Delete type=0 #104 2025/09/15-22:15:24.845568 7f307bfff6c0 Delete type=0 #299
2024/05/23-15:00:04.385412 7f7a2b8006c0 Level-0 table #110: started 2025/09/15-22:23:01.591108 7f307a7fc6c0 Level-0 table #304: started
2024/05/23-15:00:04.385430 7f7a2b8006c0 Level-0 table #110: 0 bytes OK 2025/09/15-22:23:01.591136 7f307a7fc6c0 Level-0 table #304: 0 bytes OK
2024/05/23-15:00:04.391306 7f7a2b8006c0 Delete type=0 #108 2025/09/15-22:23:01.596986 7f307a7fc6c0 Delete type=0 #302
2024/05/23-15:00:04.405247 7f7a2b8006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.597090 7f307a7fc6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2024/05/23-15:00:04.405313 7f7a2b8006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.597120 7f307a7fc6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/05/23-10:57:45.639116 7f80474006c0 Recovering log #100 2025/09/15-21:06:27.338726 7f307b7fe6c0 Recovering log #295
2024/05/23-10:57:45.650216 7f80474006c0 Delete type=3 #98 2025/09/15-21:06:27.348432 7f307b7fe6c0 Delete type=3 #293
2024/05/23-10:57:45.650332 7f80474006c0 Delete type=0 #100 2025/09/15-21:06:27.348491 7f307b7fe6c0 Delete type=0 #295
2024/05/23-11:25:01.429060 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.718495 7f307a7fc6c0 Level-0 table #300: started
2024/05/23-11:25:01.434691 7f803fe006c0 Level-0 table #105: 278813 bytes OK 2025/09/15-21:08:54.718519 7f307a7fc6c0 Level-0 table #300: 0 bytes OK
2024/05/23-11:25:01.442092 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.724957 7f307a7fc6c0 Delete type=0 #298
2024/05/23-11:25:01.442475 7f803fe006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.731709 7f307a7fc6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.454285 7f803fe006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at '!items!zON0h5SjFyANjPnA' @ 270 : 1 2025/09/15-21:08:54.731758 7f307a7fc6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2024/05/23-11:25:01.454301 7f803fe006c0 Compacting 1@1 + 1@2 files
2024/05/23-11:25:01.460432 7f803fe006c0 Generated table #106@1: 135 keys, 278813 bytes
2024/05/23-11:25:01.460474 7f803fe006c0 Compacted 1@1 + 1@2 files => 278813 bytes
2024/05/23-11:25:01.466560 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/05/23-11:25:01.466676 7f803fe006c0 Delete type=2 #5
2024/05/23-11:25:01.466841 7f803fe006c0 Delete type=2 #105
2024/05/23-11:25:01.488770 7f803fe006c0 Manual compaction at level-1 from '!items!zON0h5SjFyANjPnA' @ 270 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

0
packs/profils/000300.log Normal file
View File

View File

@@ -1 +1 @@
MANIFEST-000106 MANIFEST-000298

View File

@@ -1,7 +1,7 @@
2024/05/23-14:51:24.039438 7f7a30c006c0 Recovering log #104 2025/09/15-22:15:24.861471 7f3080dfa6c0 Recovering log #296
2024/05/23-14:51:24.050533 7f7a30c006c0 Delete type=3 #102 2025/09/15-22:15:24.871507 7f3080dfa6c0 Delete type=3 #294
2024/05/23-14:51:24.050611 7f7a30c006c0 Delete type=0 #104 2025/09/15-22:15:24.871573 7f3080dfa6c0 Delete type=0 #296
2024/05/23-15:00:04.378166 7f7a2b8006c0 Level-0 table #109: started 2025/09/15-22:23:01.597208 7f307a7fc6c0 Level-0 table #301: started
2024/05/23-15:00:04.378221 7f7a2b8006c0 Level-0 table #109: 0 bytes OK 2025/09/15-22:23:01.597240 7f307a7fc6c0 Level-0 table #301: 0 bytes OK
2024/05/23-15:00:04.385336 7f7a2b8006c0 Delete type=0 #107 2025/09/15-22:23:01.603183 7f307a7fc6c0 Delete type=0 #299
2024/05/23-15:00:04.405233 7f7a2b8006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2025/09/15-22:23:01.623429 7f307a7fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2024/05/23-10:57:45.671074 7f80460006c0 Recovering log #100 2025/09/15-21:06:27.364429 7f3080dfa6c0 Recovering log #292
2024/05/23-10:57:45.681323 7f80460006c0 Delete type=3 #98 2025/09/15-21:06:27.374643 7f3080dfa6c0 Delete type=3 #290
2024/05/23-10:57:45.681382 7f80460006c0 Delete type=0 #100 2025/09/15-21:06:27.374720 7f3080dfa6c0 Delete type=0 #292
2024/05/23-11:25:01.496104 7f803fe006c0 Level-0 table #105: started 2025/09/15-21:08:54.725160 7f307a7fc6c0 Level-0 table #297: started
2024/05/23-11:25:01.496136 7f803fe006c0 Level-0 table #105: 0 bytes OK 2025/09/15-21:08:54.725200 7f307a7fc6c0 Level-0 table #297: 0 bytes OK
2024/05/23-11:25:01.502167 7f803fe006c0 Delete type=0 #103 2025/09/15-21:08:54.731505 7f307a7fc6c0 Delete type=0 #295
2024/05/23-11:25:01.524678 7f803fe006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2025/09/15-21:08:54.731723 7f307a7fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/scenes/000148.ldb Normal file

Binary file not shown.

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