Compare commits

..

19 Commits

Author SHA1 Message Date
uberwald 939cfb1e86 Update compendiums 2025-09-15 22:23:25 +02:00
uberwald 5f5e0e2a8c Update magie 2025-09-15 21:10:46 +02:00
uberwald c993a9a5b1 Update magie 2025-09-15 21:09:09 +02:00
uberwald cc7de0e53c Amelioration diverses pour la magie 2025-09-14 20:12:02 +02:00
uberwald 4d41986c12 Ajout pour la magie 2025-09-13 00:24:58 +02:00
uberwald d04731f475 Ajout pour la magie 2025-09-13 00:24:08 +02:00
uberwald 44a641a0ca Update arts obscurs 2025-08-13 09:39:04 +02:00
uberwald 1ad022d193 Update arts obscurs 2025-08-13 09:38:35 +02:00
uberwald 1c7cf343b1 Update arts obscurs 2025-08-12 23:24:50 +02:00
uberwald d4b00e3508 Update arts obscurs 2025-08-12 23:20:51 +02:00
uberwald adc912e6cd Ajout/upgrade des arts obscurs 2025-08-11 22:53:23 +02:00
uberwald 51a457ebf6 Foundry v13 migration 2025-05-02 08:34:22 +02:00
uberwald 2e9c558027 Ajout arts obscurs 2024-11-17 22:46:52 +01:00
uberwald bcd0758328 Ajout arts obscurs 2024-11-17 22:45:48 +01:00
uberwald 2b680a203f Fix jet avec prestance 2024-08-11 14:40:41 +02:00
uberwald e3d7874dce Fix masque/demaque + pouvoir passif avec point 2024-07-30 13:45:50 +02:00
uberwald ab6a5832c0 Various v12 fixes 2024-07-13 12:13:06 +02:00
uberwald d83a999974 Various v12 fixes 2024-07-13 12:12:38 +02:00
uberwald b83890a764 Add v12 support 2024-05-23 15:38:50 +02:00
127 changed files with 4741 additions and 2305 deletions
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

+2 -1
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"
} }
} }
} }
+36 -21
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() {
@@ -38,14 +38,15 @@ export class HeritiersActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)), effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited, limited: this.object.limited,
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"),
futileSkills :this.actor.organizeFutileSkills(), competencesMagie: HeritiersUtility.getCompetencesMagie(),
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()),
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()), monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
pouvoirs: foundry.utils.duplicate(this.actor.getPouvoirs()), pouvoirs: foundry.utils.duplicate(this.actor.getPouvoirs()),
fee: foundry.utils.duplicate(this.actor.getFee() || {} ), fee: foundry.utils.duplicate(this.actor.getFee() || {}),
protections: foundry.utils.duplicate(this.actor.getArmors()), protections: foundry.utils.duplicate(this.actor.getArmors()),
combat: this.actor.getCombatValues(), combat: this.actor.getCombatValues(),
equipements: foundry.utils.duplicate(this.actor.getEquipments()), equipements: foundry.utils.duplicate(this.actor.getEquipments()),
@@ -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,
@@ -125,7 +127,7 @@ export class HeritiersActorSheet extends ActorSheet {
html.find('.item-edit').click(ev => { html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item") const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id") let itemId = li.data("item-id")
const item = this.actor.items.get( itemId ) const item = this.actor.items.get(itemId)
item.sheet.render(true) item.sheet.render(true)
}) })
// Delete Inventory Item // Delete Inventory Item
@@ -135,8 +137,8 @@ export class HeritiersActorSheet extends ActorSheet {
}) })
html.find('.edit-item-data').change(ev => { html.find('.edit-item-data').change(ev => {
const li = $(ev.currentTarget).parents(".item") const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id") let itemId = li.data("item-id")
let itemType = li.data("item-type") let itemType = li.data("item-type")
let itemField = $(ev.currentTarget).data("item-field") let itemField = $(ev.currentTarget).data("item-field")
let dataType = $(ev.currentTarget).data("dtype") let dataType = $(ev.currentTarget).data("dtype")
let value = ev.currentTarget.value let value = ev.currentTarget.value
@@ -153,7 +155,7 @@ export class HeritiersActorSheet extends ActorSheet {
html.find('.quantity-modify').click(event => { html.find('.quantity-modify').click(event => {
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
const value = Number($(event.currentTarget).data("quantite-value")) const value = Number($(event.currentTarget).data("quantite-value"))
this.actor.incDecQuantity( li.data("item-id"), value ); this.actor.incDecQuantity(li.data("item-id"), value);
}) })
html.find('.roll-initiative').click((event) => { html.find('.roll-initiative').click((event) => {
@@ -174,27 +176,32 @@ export class HeritiersActorSheet extends ActorSheet {
}) })
html.find('.roll-competence').click((event) => { html.find('.roll-competence').click((event) => {
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
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")
this.actor.rollAttaqueArme(armeId) this.actor.rollAttaqueArme(armeId)
}) })
html.find('.roll-attaque-brutale-arme').click((event) => { html.find('.roll-attaque-brutale-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")
this.actor.rollAttaqueBrutaleArme(armeId) this.actor.rollAttaqueBrutaleArme(armeId)
}) })
html.find('.roll-attaque-charge-arme').click((event) => { html.find('.roll-attaque-charge-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")
this.actor.rollAttaqueChargeArme(armeId) this.actor.rollAttaqueChargeArme(armeId)
}) })
html.find('.roll-assomer-arme').click((event) => { html.find('.roll-assomer-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")
this.actor.rollAssomerArme(armeId) this.actor.rollAssomerArme(armeId)
}) })
@@ -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 })
}) })
@@ -218,7 +233,7 @@ export class HeritiersActorSheet extends ActorSheet {
}); });
html.find('.item-equip').click(ev => { html.find('.item-equip').click(ev => {
const li = $(ev.currentTarget).parents(".item"); const li = $(ev.currentTarget).parents(".item");
this.actor.equipItem( li.data("item-id") ); this.actor.equipItem(li.data("item-id"));
this.render(true); this.render(true);
}); });
+245 -17
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)
@@ -727,7 +929,7 @@ export class HeritiersActor extends Actor {
callback: () => { callback: () => {
rollData.pouvoirPointsUsage = 1; rollData.pouvoirPointsUsage = 1;
HeritiersUtility.rollHeritiers(rollData); HeritiersUtility.rollHeritiers(rollData);
} }
}, },
two: { two: {
icon: '<i class="fas fa-check"></i>', icon: '<i class="fas fa-check"></i>',
@@ -735,7 +937,7 @@ export class HeritiersActor extends Actor {
callback: () => { callback: () => {
rollData.pouvoirPointsUsage = 2; rollData.pouvoirPointsUsage = 2;
HeritiersUtility.rollHeritiers(rollData); HeritiersUtility.rollHeritiers(rollData);
} }
}, },
three: { three: {
icon: '<i class="fas fa-check"></i>', icon: '<i class="fas fa-check"></i>',
@@ -743,7 +945,7 @@ export class HeritiersActor extends Actor {
callback: () => { callback: () => {
rollData.pouvoirPointsUsage = 3; rollData.pouvoirPointsUsage = 3;
HeritiersUtility.rollHeritiers(rollData); HeritiersUtility.rollHeritiers(rollData);
} }
}, },
four: { four: {
icon: '<i class="fas fa-check"></i>', icon: '<i class="fas fa-check"></i>',
@@ -751,13 +953,13 @@ export class HeritiersActor extends Actor {
callback: () => { callback: () => {
rollData.pouvoirPointsUsage = 4; rollData.pouvoirPointsUsage = 4;
HeritiersUtility.rollHeritiers(rollData); HeritiersUtility.rollHeritiers(rollData);
} }
}, },
close: { close: {
icon: '<i class="fas fa-times"></i>', icon: '<i class="fas fa-times"></i>',
label: "Annuler", label: "Annuler",
callback: () => { callback: () => {
} }
} }
}, },
default: "one", default: "one",
@@ -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)
+141 -58
View File
@@ -12,7 +12,7 @@ export const HERITIERS_CONFIG = {
"san": "Sang-Froid" "san": "Sang-Froid"
}, },
competenceCategorie : { competenceCategorie: {
"utile": "Utile", "utile": "Utile",
"futile": "Futile" "futile": "Futile"
}, },
@@ -24,13 +24,14 @@ export const HERITIERS_CONFIG = {
interet: "Personne d'interêt" interet: "Personne d'interêt"
}, },
competenceProfil : { competenceProfil: {
"aventurier": {kind: "physical", name: "Aventurier"}, "aventurier": { kind: "physical", name: "Aventurier" },
"roublard": {kind: "physical",name: "Roublard"}, "roublard": { kind: "physical", name: "Roublard" },
"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",
@@ -52,7 +53,7 @@ export const HERITIERS_CONFIG = {
}, },
statutMasque: { statutMasque: {
"masque": "Masqué", "masque": "Masqué",
"demasque":"Démasqué" "demasque": "Démasqué"
}, },
niveauPouvoir: { niveauPouvoir: {
"normal": "Normal", "normal": "Normal",
@@ -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: {
@@ -100,7 +101,7 @@ export const HERITIERS_CONFIG = {
"tete": "Tête/Coeur" "tete": "Tête/Coeur"
}, },
categorieArme : { categorieArme: {
"trait": "Arme de trait", "trait": "Arme de trait",
"poing": "Arme de poing", "poing": "Arme de poing",
"epaule": "Arme d'épaule", "epaule": "Arme d'épaule",
@@ -130,13 +131,13 @@ export const HERITIERS_CONFIG = {
"controlee": "Contrôlée (C)", "controlee": "Contrôlée (C)",
"prohibee": "Prohibée (P)" "prohibee": "Prohibée (P)"
}, },
armeDissimulation :{ armeDissimulation: {
"tresfacile": "Très facile (TF)", "tresfacile": "Très facile (TF)",
"facile": "Facile (F)", "facile": "Facile (F)",
"difficile": "Difficile (D)", "difficile": "Difficile (D)",
"impossible": "Impossible (I)" "impossible": "Impossible (I)"
}, },
typeProtection : { typeProtection: {
"balle": "Protège ds balles", "balle": "Protège ds balles",
"melee": "Protège en mélée", "melee": "Protège en mélée",
"tout": "Tout type de dégats" "tout": "Tout type de dégats"
@@ -163,37 +164,119 @@ export const HERITIERS_CONFIG = {
"3": "3", "3": "3",
"4": "4", "4": "4",
}, },
attaquePlusieursList : { attaquePlusieursList: {
"0": "0", "0": "0",
"1": "+1", "1": "+1",
"2": "+2", "2": "+2",
}, },
attaque2ArmesListe: [ attaque2ArmesListe: [
{value: "0", label: "Aucun"}, { value: "0", label: "Aucun" },
{value: "-4", label: "Deux armes à 1 main"}, { value: "-4", label: "Deux armes à 1 main" },
{value: "-2", label: "Deux armes naturelles"}, { value: "-2", label: "Deux armes naturelles" },
{value: "-2", label: "Avec spécialisation \"Mauvaise Main\""} { value: "-2", label: "Avec spécialisation \"Mauvaise Main\"" }
], ],
typeProfil: { typeProfil: {
"mineur": "Mineur", "mineur": "Mineur",
"majeur": "Majeur", "majeur": "Majeur",
}, },
bonusMalusContext: [ bonusMalusContext: [
{value: "-6", label: "-6"}, { value: "-6", label: "-6" },
{value: "-5", label: "-5"}, { value: "-5", label: "-5" },
{value: "-4", label: "-4"}, { value: "-4", label: "-4" },
{value: "-3", label: "-3"}, { value: "-3", label: "-3" },
{value: "-2", label: "-2"}, { value: "-2", label: "-2" },
{value: "-1", label: "-1"}, { value: "-1", label: "-1" },
{value: "0", label: "0"}, { value: "0", label: "0" },
{value: "1", label: "+1"}, { value: "1", label: "+1" },
{value: "2", label: "+2"}, { value: "2", label: "+2" },
{value: "3", label: "+3"}, { value: "3", label: "+3" },
{value: "4", label: "+4"}, { value: "4", label: "+4" },
{value: "5", label: "+5"}, { value: "5", label: "+5" },
{value: "6", label: "+6"} { value: "6", label: "+6" }
], ],
listNiveau: [] 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: {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"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"
}
} }
+18 -14
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() {
@@ -15,7 +15,7 @@ export class HeritiersItemSheet extends ItemSheet {
dragDrop: [{ dragSelector: null, dropSelector: null }], dragDrop: [{ dragSelector: null, dropSelector: null }],
width: 620, width: 620,
height: 550, height: 550,
tabs: [{navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description"}] tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }]
}); });
} }
@@ -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);
@@ -139,15 +143,15 @@ export class HeritiersItemSheet extends ItemSheet {
html.find('#add-specialite').click(ev => { html.find('#add-specialite').click(ev => {
let spec = foundry.utils.duplicate(this.object.system.specialites) let spec = foundry.utils.duplicate(this.object.system.specialites)
spec.push( { name: "Nouvelle Spécialité", id: foundry.utils.randomID(16), used: false }) spec.push({ name: "Nouvelle Spécialité", id: foundry.utils.randomID(16), used: false })
this.object.update( { 'system.specialites': spec }) this.object.update({ 'system.specialites': spec })
}) })
html.find('.delete-specialite').click(ev => { html.find('.delete-specialite').click(ev => {
const li = $(ev.currentTarget).parents(".specialite-item") const li = $(ev.currentTarget).parents(".specialite-item")
let index = li.data("specialite-index") let index = li.data("specialite-index")
let spec = foundry.utils.duplicate(this.object.system.specialites) let spec = foundry.utils.duplicate(this.object.system.specialites)
spec.splice(index,1) spec.splice(index, 1)
this.object.update( { 'system.specialites': spec }) this.object.update({ 'system.specialites': spec })
}) })
html.find('.edit-specialite').change(ev => { html.find('.edit-specialite').change(ev => {
const li = $(ev.currentTarget).parents(".specialite-item") const li = $(ev.currentTarget).parents(".specialite-item")
@@ -155,7 +159,7 @@ export class HeritiersItemSheet extends ItemSheet {
let spec = foundry.utils.duplicate(this.object.system.specialites) let spec = foundry.utils.duplicate(this.object.system.specialites)
spec[index].name = ev.currentTarget.value spec[index].name = ev.currentTarget.value
spec[index].id = spec[index].id || foundry.utils.randomID(16) spec[index].id = spec[index].id || foundry.utils.randomID(16)
this.object.update( { 'system.specialites': spec }) this.object.update({ 'system.specialites': spec })
}) })
html.find('.edit-specialite-description').change(ev => { html.find('.edit-specialite-description').change(ev => {
const li = $(ev.currentTarget).parents(".specialite-item") const li = $(ev.currentTarget).parents(".specialite-item")
@@ -163,20 +167,20 @@ export class HeritiersItemSheet extends ItemSheet {
let spec = foundry.utils.duplicate(this.object.system.specialites) let spec = foundry.utils.duplicate(this.object.system.specialites)
spec[index].description = ev.currentTarget.value spec[index].description = ev.currentTarget.value
spec[index].id = spec[index].id || foundry.utils.randomID(16) spec[index].id = spec[index].id || foundry.utils.randomID(16)
this.object.update( { 'system.specialites': spec }) this.object.update({ 'system.specialites': spec })
}) })
html.find('#add-automation').click(ev => { html.find('#add-automation').click(ev => {
let autom = foundry.utils.duplicate(this.object.system.automations) let autom = foundry.utils.duplicate(this.object.system.automations)
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: foundry.utils.randomID(16) }) autom.push({ eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: foundry.utils.randomID(16) })
this.object.update( { 'system.automations': autom }) this.object.update({ 'system.automations': autom })
}) })
html.find('.delete-automation').click(ev => { html.find('.delete-automation').click(ev => {
const li = $(ev.currentTarget).parents(".automation-item") const li = $(ev.currentTarget).parents(".automation-item")
let index = li.data("automation-index") let index = li.data("automation-index")
let autom = foundry.utils.duplicate(this.object.system.automations) let autom = foundry.utils.duplicate(this.object.system.automations)
autom.splice(index,1) autom.splice(index, 1)
this.object.update( { 'system.automations': autom }) this.object.update({ 'system.automations': autom })
}) })
html.find('.automation-edit-field').change(ev => { html.find('.automation-edit-field').change(ev => {
let index = $(ev.currentTarget).data("automation-index") let index = $(ev.currentTarget).data("automation-index")
@@ -184,7 +188,7 @@ export class HeritiersItemSheet extends ItemSheet {
let auto = foundry.utils.duplicate(this.object.system.automations) let auto = foundry.utils.duplicate(this.object.system.automations)
auto[index][field] = ev.currentTarget.value auto[index][field] = ev.currentTarget.value
auto[index].id = auto[index].id || foundry.utils.randomID(16) auto[index].id = auto[index].id || foundry.utils.randomID(16)
this.object.update( { 'system.automations': auto }) this.object.update({ 'system.automations': auto })
}) })
// Update Inventory Item // Update Inventory Item
+1
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",
} }
/** /**
+8 -11
View File
@@ -46,10 +46,8 @@ Hooks.once("init", async function () {
CONFIG.Combat.documentClass = HeritiersCombat CONFIG.Combat.documentClass = HeritiersCombat
CONFIG.Actor.documentClass = HeritiersActor CONFIG.Actor.documentClass = HeritiersActor
CONFIG.Item.documentClass = HeritiersItem CONFIG.Item.documentClass = HeritiersItem
// Create an array of values from 0 to 10
HERITIERS_CONFIG.listNiveau = Array.from({ length: 11 }, (v, k) => k)
// Create an object of bonus/malus from -6 to +6 signed // Create an object of bonus/malus from -6 to +6 signed
HERITIERS_CONFIG.bonusMalus = Array.from({ length: 7 }, (v, k) => k - 6) HERITIERS_CONFIG.bonusMalus = Array.from({ length: 7 }, (v, k) => toString(k - 6))
game.system.lesheritiers = { game.system.lesheritiers = {
HeritiersUtility, HeritiersUtility,
config: HERITIERS_CONFIG config: HERITIERS_CONFIG
@@ -57,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()
@@ -109,10 +107,10 @@ Hooks.once("ready", function () {
}); });
} }
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{ import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter => {
console.log("ClassCounter loaded", moduleCounter) console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount() moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=> }).catch(err =>
console.log("No stats available, giving up.") console.log("No stats available, giving up.")
) )
welcomeMessage(); welcomeMessage();
@@ -133,4 +131,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
} }
return true; return true;
}); });
+2 -2
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) => {
+111 -37
View File
@@ -26,7 +26,7 @@ const __facesAdjacentes = {
10: [8, 4, 3, 7] 10: [8, 4, 3, 7]
}, },
"d12": { "d12": {
1:[2, 3, 4, 5, 6], 1: [2, 3, 4, 5, 6],
2: [1, 6, 8, 12, 3], 2: [1, 6, 8, 12, 3],
3: [1, 4, 11, 12, 2], 3: [1, 4, 11, 12, 2],
4: [1, 5, 10, 11, 3], 4: [1, 5, 10, 11, 3],
@@ -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,18 +172,18 @@ 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")
let actor = this.getActorFromRollData(rollData) let actor = this.getActorFromRollData(rollData)
if ( await actor.incDecTricherie(-2) ) { if (await actor.incDecTricherie(-2)) {
rollData.forcedValue = Number($(event.currentTarget).data("dice-value")) rollData.forcedValue = Number($(event.currentTarget).data("dice-value"))
HeritiersUtility.rollHeritiers(rollData) HeritiersUtility.rollHeritiers(rollData)
} }
}) })
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);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -390,7 +417,7 @@ export class HeritiersUtility {
rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already
} }
} }
if ( !rollData.forcedValue) { if (!rollData.forcedValue) {
rollData.adjacentFaces = foundry.utils.duplicate(__facesAdjacentes[rollData.mainDice][rollData.diceValue]) rollData.adjacentFaces = foundry.utils.duplicate(__facesAdjacentes[rollData.mainDice][rollData.diceValue])
} }
} }
@@ -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")
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -471,12 +498,13 @@ export class HeritiersUtility {
let actor = this.getActorFromRollData(rollData) let actor = this.getActorFromRollData(rollData)
if ( rollData.mode == "pouvoir" && actor.getPouvoirUsage(rollData.pouvoir._id) < rollData.pouvoirPointsUsage) { if (rollData.mode == "pouvoir" && actor.getPouvoirUsage(rollData.pouvoir._id) < rollData.pouvoirPointsUsage) {
ui.notifications.warn("Pas assez de points d'usage pour ce pouvoir.") ui.notifications.warn("Pas assez de points d'usage pour ce pouvoir.")
return return
} }
//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) {
@@ -535,7 +563,7 @@ export class HeritiersUtility {
} }
} }
if ( !rollData.noRoll) { if (!rollData.noRoll) {
let myRoll = await new Roll(rollData.diceFormula).roll() let myRoll = await new Roll(rollData.diceFormula).roll()
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = foundry.utils.duplicate(myRoll) rollData.roll = foundry.utils.duplicate(myRoll)
@@ -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",
let htmlTab = "<table border='1'><tbody>"; color: "#3b1361"
for (let entryData of talents) { });
console.log(entryData)
htmlTab += `<tr><td>@UUID[Compendium.${compName}.${entryData._id}]{${entryData.name}}</td>`
htmlTab += `<td>${entryData.system.description}</td>`;
//htmlTab += `<td>${entryData.system.resumebonus}</td>`;
htmlTab += "</tr>\n";
} }
htmlTab += "</table>";
await JournalEntry.create({ name: 'Liste des Talents de Cellule', content: htmlTab }); // Load the srcdata/sorts-druidisme.json file
return fetch("systems/fvtt-les-heritiers/srcdata/sort_magieduclan.json")
.then(response => response.json())
.then(data => {
console.log("Sorts Magie du Clan loaded:", data);
this.sortDruidisme = data;
// Loop through the spell and create the "sort "item based on the JSON content
data.forEach(spell => {
spell.name = spell.name;
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.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000300
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.623302 7f80456006c0 Recovering log #100 2025/09/15-22:15:24.823326 7f307affd6c0 Recovering log #298
2024/05/23-10:57:45.634017 7f80456006c0 Delete type=3 #98 2025/09/15-22:15:24.833041 7f307affd6c0 Delete type=3 #296
2024/05/23-10:57:45.634148 7f80456006c0 Delete type=0 #100 2025/09/15-22:15:24.833115 7f307affd6c0 Delete type=0 #298
2024/05/23-11:25:01.407869 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.584235 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-11:25:01.412121 7f803fe006c0 Level-0 table #105: 76980 bytes OK 2025/09/15-22:23:01.584266 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-11:25:01.418196 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.590949 7f307a7fc6c0 Delete type=0 #301
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-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-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-22:23:01.597126 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.407753 7fcc5fe006c0 Recovering log #96 2025/09/15-21:06:27.325495 7f307affd6c0 Recovering log #294
2024/04/24-21:03:14.418285 7fcc5fe006c0 Delete type=3 #94 2025/09/15-21:06:27.335836 7f307affd6c0 Delete type=3 #292
2024/04/24-21:03:14.418386 7fcc5fe006c0 Delete type=0 #96 2025/09/15-21:06:27.335957 7f307affd6c0 Delete type=0 #294
2024/04/24-21:12:06.758987 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.705256 7f307a7fc6c0 Level-0 table #299: started
2024/04/24-21:12:06.759009 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.705333 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/04/24-21:12:06.766071 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.712270 7f307a7fc6c0 Delete type=0 #297
2024/04/24-21:12:06.772507 7fcc5e4006c0 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/04/24-21:12:06.780581 7fcc5e4006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000300
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.655135 7f8046a006c0 Recovering log #100 2025/09/15-22:15:24.848609 7f307b7fe6c0 Recovering log #298
2024/05/23-10:57:45.665774 7f8046a006c0 Delete type=3 #98 2025/09/15-22:15:24.859061 7f307b7fe6c0 Delete type=3 #296
2024/05/23-10:57:45.665849 7f8046a006c0 Delete type=0 #100 2025/09/15-22:15:24.859140 7f307b7fe6c0 Delete type=0 #298
2024/05/23-11:25:01.418338 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.577999 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-11:25:01.422571 7f803fe006c0 Level-0 table #105: 17369 bytes OK 2025/09/15-22:23:01.578051 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-11:25:01.428914 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.584148 7f307a7fc6c0 Delete type=0 #301
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-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-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-22:23:01.597114 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.434490 7fcc5fe006c0 Recovering log #96 2025/09/15-21:06:27.351420 7f307bfff6c0 Recovering log #294
2024/04/24-21:03:14.445376 7fcc5fe006c0 Delete type=3 #94 2025/09/15-21:06:27.362201 7f307bfff6c0 Delete type=3 #292
2024/04/24-21:03:14.445476 7fcc5fe006c0 Delete type=0 #96 2025/09/15-21:06:27.362258 7f307bfff6c0 Delete type=0 #294
2024/04/24-21:12:06.780592 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.712395 7f307a7fc6c0 Level-0 table #299: started
2024/04/24-21:12:06.780614 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.712426 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/04/24-21:12:06.786815 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.718406 7f307a7fc6c0 Delete type=0 #297
2024/04/24-21:12:06.793537 7fcc5e4006c0 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/04/24-21:12:06.800296 7fcc5e4006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000300
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.608985 7f80460006c0 Recovering log #100 2025/09/15-22:15:24.798700 7f307bfff6c0 Recovering log #298
2024/05/23-10:57:45.618959 7f80460006c0 Delete type=3 #98 2025/09/15-22:15:24.808066 7f307bfff6c0 Delete type=3 #296
2024/05/23-10:57:45.619067 7f80460006c0 Delete type=0 #100 2025/09/15-22:15:24.808115 7f307bfff6c0 Delete type=0 #298
2024/05/23-11:25:01.397161 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.541562 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-11:25:01.401554 7f803fe006c0 Level-0 table #105: 63133 bytes OK 2025/09/15-22:23:01.541615 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-11:25:01.407613 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.547814 7f307a7fc6c0 Delete type=0 #301
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-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-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-22:23:01.565949 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.394982 7fcc64a006c0 Recovering log #96 2025/09/15-21:06:27.300488 7f307bfff6c0 Recovering log #294
2024/04/24-21:03:14.405041 7fcc64a006c0 Delete type=3 #94 2025/09/15-21:06:27.310028 7f307bfff6c0 Delete type=3 #292
2024/04/24-21:03:14.405101 7fcc64a006c0 Delete type=0 #96 2025/09/15-21:06:27.310094 7f307bfff6c0 Delete type=0 #294
2024/04/24-21:12:06.752178 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.685417 7f307a7fc6c0 Level-0 table #299: started
2024/04/24-21:12:06.752221 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.685439 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/04/24-21:12:06.758834 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.692723 7f307a7fc6c0 Delete type=0 #297
2024/04/24-21:12:06.766218 7fcc5e4006c0 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/04/24-21:12:06.772523 7fcc5e4006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000300
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.566585 7f80456006c0 Recovering log #100 2025/09/15-22:15:24.760919 7f3080dfa6c0 Recovering log #298
2024/05/23-10:57:45.576456 7f80456006c0 Delete type=3 #98 2025/09/15-22:15:24.770694 7f3080dfa6c0 Delete type=3 #296
2024/05/23-10:57:45.576513 7f80456006c0 Delete type=0 #100 2025/09/15-22:15:24.770767 7f3080dfa6c0 Delete type=0 #298
2024/05/23-11:25:01.323826 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.521581 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-11:25:01.327636 7f803fe006c0 Level-0 table #105: 27634 bytes OK 2025/09/15-22:23:01.521642 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-11:25:01.333591 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.528012 7f307a7fc6c0 Delete type=0 #301
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-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-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-22:23:01.534315 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.357785 7fcc5fe006c0 Recovering log #96 2025/09/15-21:06:27.262631 7f307bfff6c0 Recovering log #294
2024/04/24-21:03:14.368372 7fcc5fe006c0 Delete type=3 #94 2025/09/15-21:06:27.272396 7f307bfff6c0 Delete type=3 #292
2024/04/24-21:03:14.368475 7fcc5fe006c0 Delete type=0 #96 2025/09/15-21:06:27.272468 7f307bfff6c0 Delete type=0 #294
2024/04/24-21:12:06.730451 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.666847 7f307a7fc6c0 Level-0 table #299: started
2024/04/24-21:12:06.730536 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.666873 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/04/24-21:12:06.737283 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.672959 7f307a7fc6c0 Delete type=0 #297
2024/04/24-21:12:06.745838 7fcc5e4006c0 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/04/24-21:12:06.752158 7fcc5e4006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000300
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.594438 7f8046a006c0 Recovering log #100 2025/09/15-22:15:24.786128 7f307affd6c0 Recovering log #298
2024/05/23-10:57:45.605133 7f8046a006c0 Delete type=3 #98 2025/09/15-22:15:24.796141 7f307affd6c0 Delete type=3 #296
2024/05/23-10:57:45.605268 7f8046a006c0 Delete type=0 #100 2025/09/15-22:15:24.796205 7f307affd6c0 Delete type=0 #298
2024/05/23-11:25:01.333752 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.534415 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-11:25:01.337048 7f803fe006c0 Level-0 table #105: 24250 bytes OK 2025/09/15-22:23:01.534493 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-11:25:01.343059 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.541334 7f307a7fc6c0 Delete type=0 #301
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-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-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-22:23:01.565940 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.382877 7fcc5fe006c0 Recovering log #96 2025/09/15-21:06:27.288049 7f307b7fe6c0 Recovering log #294
2024/04/24-21:03:14.392582 7fcc5fe006c0 Delete type=3 #94 2025/09/15-21:06:27.298262 7f307b7fe6c0 Delete type=3 #292
2024/04/24-21:03:14.392719 7fcc5fe006c0 Delete type=0 #96 2025/09/15-21:06:27.298356 7f307b7fe6c0 Delete type=0 #294
2024/04/24-21:12:06.745861 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.692841 7f307a7fc6c0 Level-0 table #299: started
2024/04/24-21:12:06.745883 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.692870 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/04/24-21:12:06.751942 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.698762 7f307a7fc6c0 Delete type=0 #297
2024/04/24-21:12:06.758963 7fcc5e4006c0 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/04/24-21:12:06.766233 7fcc5e4006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000306
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.551260 7f80460006c0 Recovering log #100 2025/09/15-22:15:24.748857 7f307affd6c0 Recovering log #304
2024/05/23-10:57:45.562116 7f80460006c0 Delete type=3 #98 2025/09/15-22:15:24.758566 7f307affd6c0 Delete type=3 #302
2024/05/23-10:57:45.562204 7f80460006c0 Delete type=0 #100 2025/09/15-22:15:24.758631 7f307affd6c0 Delete type=0 #304
2024/05/23-11:25:01.313504 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.528222 7f307a7fc6c0 Level-0 table #309: started
2024/05/23-11:25:01.317069 7f803fe006c0 Level-0 table #105: 27947 bytes OK 2025/09/15-22:23:01.528266 7f307a7fc6c0 Level-0 table #309: 0 bytes OK
2024/05/23-11:25:01.323555 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.534172 7f307a7fc6c0 Delete type=0 #307
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-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-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-22:23:01.534306 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.345134 7fcc64a006c0 Recovering log #96 2025/09/15-21:06:27.249709 7f307b7fe6c0 Recovering log #300
2024/04/24-21:03:14.355600 7fcc64a006c0 Delete type=3 #94 2025/09/15-21:06:27.260222 7f307b7fe6c0 Delete type=3 #298
2024/04/24-21:03:14.355657 7fcc64a006c0 Delete type=0 #96 2025/09/15-21:06:27.260307 7f307b7fe6c0 Delete type=0 #300
2024/04/24-21:12:06.723482 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.660355 7f307a7fc6c0 Level-0 table #305: started
2024/04/24-21:12:06.723520 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.660389 7f307a7fc6c0 Level-0 table #305: 0 bytes OK
2024/04/24-21:12:06.730146 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.666754 7f307a7fc6c0 Delete type=0 #303
2024/04/24-21:12:06.737428 7fcc5e4006c0 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/04/24-21:12:06.745851 7fcc5e4006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000300
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.580069 7f80474006c0 Recovering log #100 2025/09/15-22:15:24.773117 7f307b7fe6c0 Recovering log #298
2024/05/23-10:57:45.590125 7f80474006c0 Delete type=3 #98 2025/09/15-22:15:24.783458 7f307b7fe6c0 Delete type=3 #296
2024/05/23-10:57:45.590216 7f80474006c0 Delete type=0 #100 2025/09/15-22:15:24.783520 7f307b7fe6c0 Delete type=0 #298
2024/05/23-11:25:01.343215 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.559017 7f307a7fc6c0 Level-0 table #303: started
2024/05/23-11:25:01.347909 7f803fe006c0 Level-0 table #105: 32297 bytes OK 2025/09/15-22:23:01.559048 7f307a7fc6c0 Level-0 table #303: 0 bytes OK
2024/05/23-11:25:01.354293 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.565802 7f307a7fc6c0 Delete type=0 #301
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-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-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-22:23:01.565957 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.370215 7fcc64a006c0 Recovering log #96 2025/09/15-21:06:27.274645 7f3080dfa6c0 Recovering log #294
2024/04/24-21:03:14.380871 7fcc64a006c0 Delete type=3 #94 2025/09/15-21:06:27.285405 7f3080dfa6c0 Delete type=3 #292
2024/04/24-21:03:14.380943 7fcc64a006c0 Delete type=0 #96 2025/09/15-21:06:27.285486 7f3080dfa6c0 Delete type=0 #294
2024/04/24-21:12:06.737478 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.679508 7f307a7fc6c0 Level-0 table #299: started
2024/04/24-21:12:06.737537 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.679542 7f307a7fc6c0 Level-0 table #299: 0 bytes OK
2024/04/24-21:12:06.745719 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.685322 7f307a7fc6c0 Delete type=0 #297
2024/04/24-21:12:06.752140 7fcc5e4006c0 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/04/24-21:12:06.758974 7fcc5e4006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
MANIFEST-000018
+8
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
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.
+1
View File
@@ -0,0 +1 @@
MANIFEST-000103
View File
+15
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)
+8
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.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000301
+8 -15
View File
@@ -1,15 +1,8 @@
2024/05/23-10:57:45.639116 7f80474006c0 Recovering log #100 2025/09/15-22:15:24.835820 7f307bfff6c0 Recovering log #299
2024/05/23-10:57:45.650216 7f80474006c0 Delete type=3 #98 2025/09/15-22:15:24.845487 7f307bfff6c0 Delete type=3 #297
2024/05/23-10:57:45.650332 7f80474006c0 Delete type=0 #100 2025/09/15-22:15:24.845568 7f307bfff6c0 Delete type=0 #299
2024/05/23-11:25:01.429060 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.591108 7f307a7fc6c0 Level-0 table #304: started
2024/05/23-11:25:01.434691 7f803fe006c0 Level-0 table #105: 278813 bytes OK 2025/09/15-22:23:01.591136 7f307a7fc6c0 Level-0 table #304: 0 bytes OK
2024/05/23-11:25:01.442092 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.596986 7f307a7fc6c0 Delete type=0 #302
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-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-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-22:23:01.597120 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)
+8 -8
View File
@@ -1,8 +1,8 @@
2024/04/24-21:03:14.421201 7fcc64a006c0 Recovering log #96 2025/09/15-21:06:27.338726 7f307b7fe6c0 Recovering log #295
2024/04/24-21:03:14.431610 7fcc64a006c0 Delete type=3 #94 2025/09/15-21:06:27.348432 7f307b7fe6c0 Delete type=3 #293
2024/04/24-21:03:14.431661 7fcc64a006c0 Delete type=0 #96 2025/09/15-21:06:27.348491 7f307b7fe6c0 Delete type=0 #295
2024/04/24-21:12:06.766244 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.718495 7f307a7fc6c0 Level-0 table #300: started
2024/04/24-21:12:06.766271 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.718519 7f307a7fc6c0 Level-0 table #300: 0 bytes OK
2024/04/24-21:12:06.772332 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.724957 7f307a7fc6c0 Delete type=0 #298
2024/04/24-21:12:06.786941 7fcc5e4006c0 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/04/24-21:12:06.793548 7fcc5e4006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end) 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)
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000102 MANIFEST-000298
+7 -7
View File
@@ -1,7 +1,7 @@
2024/05/23-10:57:45.671074 7f80460006c0 Recovering log #100 2025/09/15-22:15:24.861471 7f3080dfa6c0 Recovering log #296
2024/05/23-10:57:45.681323 7f80460006c0 Delete type=3 #98 2025/09/15-22:15:24.871507 7f3080dfa6c0 Delete type=3 #294
2024/05/23-10:57:45.681382 7f80460006c0 Delete type=0 #100 2025/09/15-22:15:24.871573 7f3080dfa6c0 Delete type=0 #296
2024/05/23-11:25:01.496104 7f803fe006c0 Level-0 table #105: started 2025/09/15-22:23:01.597208 7f307a7fc6c0 Level-0 table #301: started
2024/05/23-11:25:01.496136 7f803fe006c0 Level-0 table #105: 0 bytes OK 2025/09/15-22:23:01.597240 7f307a7fc6c0 Level-0 table #301: 0 bytes OK
2024/05/23-11:25:01.502167 7f803fe006c0 Delete type=0 #103 2025/09/15-22:23:01.603183 7f307a7fc6c0 Delete type=0 #299
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-22:23:01.623429 7f307a7fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2024/04/24-21:03:14.447506 7fcc64a006c0 Recovering log #96 2025/09/15-21:06:27.364429 7f3080dfa6c0 Recovering log #292
2024/04/24-21:03:14.458045 7fcc64a006c0 Delete type=3 #94 2025/09/15-21:06:27.374643 7f3080dfa6c0 Delete type=3 #290
2024/04/24-21:03:14.458168 7fcc64a006c0 Delete type=0 #96 2025/09/15-21:06:27.374720 7f3080dfa6c0 Delete type=0 #292
2024/04/24-21:12:06.772537 7fcc5e4006c0 Level-0 table #101: started 2025/09/15-21:08:54.725160 7f307a7fc6c0 Level-0 table #297: started
2024/04/24-21:12:06.772571 7fcc5e4006c0 Level-0 table #101: 0 bytes OK 2025/09/15-21:08:54.725200 7f307a7fc6c0 Level-0 table #297: 0 bytes OK
2024/04/24-21:12:06.780429 7fcc5e4006c0 Delete type=0 #99 2025/09/15-21:08:54.731505 7f307a7fc6c0 Delete type=0 #295
2024/04/24-21:12:06.786953 7fcc5e4006c0 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.
Binary file not shown.

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