Compare commits

...

8 Commits

115 changed files with 3934 additions and 1804 deletions

BIN
assets/icons/sort.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

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

View File

@@ -6,7 +6,7 @@
import { HeritiersUtility } from "./heritiers-utility.js";
/* -------------------------------------------- */
export class HeritiersActorSheet extends ActorSheet {
export class HeritiersActorSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */
static get defaultOptions() {
@@ -38,14 +38,15 @@ export class HeritiersActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited,
skills: this.actor.getSkills(),
utileSkillsMental :this.actor.organizeUtileSkills("mental"),
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
futileSkills :this.actor.organizeFutileSkills(),
utileSkillsMental: this.actor.organizeUtileSkills("mental"),
utileSkillsPhysical: this.actor.organizeUtileSkills("physical"),
competencesMagie: HeritiersUtility.getCompetencesMagie(),
futileSkills: this.actor.organizeFutileSkills(),
contacts: this.actor.organizeContacts(),
armes: foundry.utils.duplicate(this.actor.getWeapons()),
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
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()),
combat: this.actor.getCombatValues(),
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
@@ -57,12 +58,13 @@ export class HeritiersActorSheet extends ActorSheet {
pvMalus: this.actor.getPvMalus(),
heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
initiative: this.actor.getFlag("world", "last-initiative") || -1,
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}),
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, { async: true }),
revesetranges: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.revesetranges, { async: true }),
secretsdecouverts: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.secretsdecouverts, { async: true }),
questions: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.questions, { async: true }),
habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, { async: true }),
playernotes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.playernotes, { async: true }),
magieList: this.actor.prepareMagie(),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
@@ -125,7 +127,7 @@ export class HeritiersActorSheet extends ActorSheet {
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
const item = this.actor.items.get( itemId )
const item = this.actor.items.get(itemId)
item.sheet.render(true)
})
// Delete Inventory Item
@@ -135,8 +137,8 @@ export class HeritiersActorSheet extends ActorSheet {
})
html.find('.edit-item-data').change(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
let itemType = li.data("item-type")
let itemId = li.data("item-id")
let itemType = li.data("item-type")
let itemField = $(ev.currentTarget).data("item-field")
let dataType = $(ev.currentTarget).data("dtype")
let value = ev.currentTarget.value
@@ -153,7 +155,7 @@ export class HeritiersActorSheet extends ActorSheet {
html.find('.quantity-modify').click(event => {
const li = $(event.currentTarget).parents(".item")
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) => {
@@ -174,27 +176,32 @@ export class HeritiersActorSheet extends ActorSheet {
})
html.find('.roll-competence').click((event) => {
const li = $(event.currentTarget).parents(".item")
let compId = li.data("item-id")
let compId = li.data("item-id")
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) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
let armeId = li.data("item-id")
this.actor.rollAttaqueArme(armeId)
})
html.find('.roll-attaque-brutale-arme').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
let armeId = li.data("item-id")
this.actor.rollAttaqueBrutaleArme(armeId)
})
html.find('.roll-attaque-charge-arme').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
let armeId = li.data("item-id")
this.actor.rollAttaqueChargeArme(armeId)
})
html.find('.roll-assomer-arme').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
let armeId = li.data("item-id")
this.actor.rollAssomerArme(armeId)
})
@@ -209,6 +216,14 @@ export class HeritiersActorSheet extends ActorSheet {
html.find('.item-add').click((event) => {
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 })
})
@@ -218,7 +233,7 @@ export class HeritiersActorSheet extends ActorSheet {
});
html.find('.item-equip').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.equipItem( li.data("item-id") );
this.actor.equipItem(li.data("item-id"));
this.render(true);
});

View File

@@ -41,7 +41,7 @@ export class HeritiersActor extends Actor {
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
data.items = []
for (let skill of skills) {
if (skill.system.categorie == "utile") {
if (skill.system.categorie == "utile" && skill.system.profil != "magie") {
data.items.push(skill.toObject())
}
}
@@ -146,6 +146,43 @@ export class HeritiersActor extends Actor {
HeritiersUtility.sortArrayObjectsByName(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 = []
for (let sort of this.items) {
if (sort.type == "sort" && sort.system.competence == item.name) {
magie.sorts.push(sort)
}
}
magieList.push(magie)
}
}
return magieList
}
/* -------------------------------------------- */
getSkills() {
@@ -171,6 +208,28 @@ export class HeritiersActor extends Actor {
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") {
let comp = {}
@@ -192,6 +251,7 @@ export class HeritiersActor extends Actor {
}
return Object.fromEntries(Object.entries(comp).sort())
}
/* -------------------------------------------- */
organizeContacts() {
let contactList = {}
@@ -258,12 +318,37 @@ export class HeritiersActor extends Actor {
/* -------------------------------------------- */
async prepareData() {
super.prepareData();
let pvMax = (this.system.caracteristiques.con.rang * 3) + 9 + this.system.pv.mod
if (this.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 +482,7 @@ export class HeritiersActor extends Actor {
adversite[adv] = Math.max(adversite[adv], 0)
this.update({ 'system.adversite': adversite })
}
/* -------------------------------------------- */
async incDecQuantity(objetId, incDec = 0) {
let objetQ = this.items.get(objetId)
@@ -627,6 +713,62 @@ export class HeritiersActor extends Actor {
rollDialog.render(true)
}
/* -------------------------------------------- */
inDecCarac(key, incDec) {
let carac = this.system.caracteristiques[key]
carac.value += incDec
if (carac.value < 0 || carac.value > carac.max) {
ui.notifications.warn("Pas assez de points dans cette caractéristique !")
return false
}
carac.value = Math.max(carac.value, 0)
carac.value = Math.min(carac.value, carac.max)
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
}
let rollData = this.getCommonRollData(comp.id)
rollData.mode = "sort"
rollData.sort = foundry.utils.duplicate(sort)
rollData.sdValue = HeritiersUtility.getSDSortValue(Number(sort.system.niveau))
rollData.sortPointsAme = Number(sort.system.niveau)
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 < 1) {
ui.notifications.warn("Pas assez de Points d'Esprit ni de Points d'Ame pour lancer ce sort (requis: 1, 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}). Un Point d'Esprit sera utilisé à 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) {
let arme = this.items.get(armeId)
@@ -727,7 +869,7 @@ export class HeritiersActor extends Actor {
callback: () => {
rollData.pouvoirPointsUsage = 1;
HeritiersUtility.rollHeritiers(rollData);
}
}
},
two: {
icon: '<i class="fas fa-check"></i>',
@@ -735,7 +877,7 @@ export class HeritiersActor extends Actor {
callback: () => {
rollData.pouvoirPointsUsage = 2;
HeritiersUtility.rollHeritiers(rollData);
}
}
},
three: {
icon: '<i class="fas fa-check"></i>',
@@ -743,7 +885,7 @@ export class HeritiersActor extends Actor {
callback: () => {
rollData.pouvoirPointsUsage = 3;
HeritiersUtility.rollHeritiers(rollData);
}
}
},
four: {
icon: '<i class="fas fa-check"></i>',
@@ -751,13 +893,13 @@ export class HeritiersActor extends Actor {
callback: () => {
rollData.pouvoirPointsUsage = 4;
HeritiersUtility.rollHeritiers(rollData);
}
}
},
close: {
icon: '<i class="fas fa-times"></i>',
label: "Annuler",
callback: () => {
}
}
}
},
default: "one",
@@ -777,24 +919,50 @@ export class HeritiersActor extends Actor {
}
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.pouvoir = foundry.utils.duplicate(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)
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) {
let pouvoir = this.items.get(pouvoirId)

View File

@@ -12,7 +12,7 @@ export const HERITIERS_CONFIG = {
"san": "Sang-Froid"
},
competenceCategorie : {
competenceCategorie: {
"utile": "Utile",
"futile": "Futile"
},
@@ -24,13 +24,14 @@ export const HERITIERS_CONFIG = {
interet: "Personne d'interêt"
},
competenceProfil : {
"aventurier": {kind: "physical", name: "Aventurier"},
"roublard": {kind: "physical",name: "Roublard"},
"combattant": {kind: "physical",name:"Combattant"},
"erudit": {kind: "mental",name:"Erudit"},
"savant": {kind: "mental",name:"Savant"},
"gentleman": {kind: "mental",name:"Gentleman"}
competenceProfil: {
"aventurier": { kind: "physical", name: "Aventurier" },
"roublard": { kind: "physical", name: "Roublard" },
"combattant": { kind: "physical", name: "Combattant" },
"erudit": { kind: "mental", name: "Erudit" },
"savant": { kind: "mental", name: "Savant" },
"gentleman": { kind: "mental", name: "Gentleman" },
"magie": { kind: "magical", name: "Magie" },
},
baseTestPouvoir: {
"feerie": "Féerie",
@@ -52,7 +53,7 @@ export const HERITIERS_CONFIG = {
},
statutMasque: {
"masque": "Masqué",
"demasque":"Démasqué"
"demasque": "Démasqué"
},
niveauPouvoir: {
"normal": "Normal",
@@ -100,7 +101,7 @@ export const HERITIERS_CONFIG = {
"tete": "Tête/Coeur"
},
categorieArme : {
categorieArme: {
"trait": "Arme de trait",
"poing": "Arme de poing",
"epaule": "Arme d'épaule",
@@ -130,13 +131,13 @@ export const HERITIERS_CONFIG = {
"controlee": "Contrôlée (C)",
"prohibee": "Prohibée (P)"
},
armeDissimulation :{
armeDissimulation: {
"tresfacile": "Très facile (TF)",
"facile": "Facile (F)",
"difficile": "Difficile (D)",
"impossible": "Impossible (I)"
},
typeProtection : {
typeProtection: {
"balle": "Protège ds balles",
"melee": "Protège en mélée",
"tout": "Tout type de dégats"
@@ -163,36 +164,42 @@ export const HERITIERS_CONFIG = {
"3": "3",
"4": "4",
},
attaquePlusieursList : {
attaquePlusieursList: {
"0": "0",
"1": "+1",
"2": "+2",
},
attaque2ArmesListe: [
{value: "0", label: "Aucun"},
{value: "-4", label: "Deux armes à 1 main"},
{value: "-2", label: "Deux armes naturelles"},
{value: "-2", label: "Avec spécialisation \"Mauvaise Main\""}
{ value: "0", label: "Aucun" },
{ value: "-4", label: "Deux armes à 1 main" },
{ value: "-2", label: "Deux armes naturelles" },
{ value: "-2", label: "Avec spécialisation \"Mauvaise Main\"" }
],
typeProfil: {
"mineur": "Mineur",
"majeur": "Majeur",
},
bonusMalusContext: [
{value: "-6", label: "-6"},
{value: "-5", label: "-5"},
{value: "-4", label: "-4"},
{value: "-3", label: "-3"},
{value: "-2", label: "-2"},
{value: "-1", label: "-1"},
{value: "0", label: "0"},
{value: "1", label: "+1"},
{value: "2", label: "+2"},
{value: "3", label: "+3"},
{value: "4", label: "+4"},
{value: "5", label: "+5"},
{value: "6", label: "+6"}
{ value: "-6", label: "-6" },
{ value: "-5", label: "-5" },
{ value: "-4", label: "-4" },
{ value: "-3", label: "-3" },
{ value: "-2", label: "-2" },
{ value: "-1", label: "-1" },
{ value: "0", label: "0" },
{ value: "1", label: "+1" },
{ value: "2", label: "+2" },
{ value: "3", label: "+3" },
{ value: "4", label: "+4" },
{ value: "5", label: "+5" },
{ value: "6", label: "+6" }
],
listNiveauSort: {
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
listNiveau: {
"0": "0",
"1": "1",
@@ -206,5 +213,55 @@ export const HERITIERS_CONFIG = {
"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"
},
"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: {
"Souffle du Combat": "Souffle du Combat",
"Souffle du Mouvement": "Souffle du Mouvement",
"Souffle de l'Esprit": "Souffle de l'Esprit"
}
}

View File

@@ -4,7 +4,7 @@ import { HeritiersUtility } from "./heritiers-utility.js";
* Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet}
*/
export class HeritiersItemSheet extends ItemSheet {
export class HeritiersItemSheet extends foundry.appv1.sheets.ItemSheet {
/** @override */
static get defaultOptions() {
@@ -63,7 +63,7 @@ export class HeritiersItemSheet extends ItemSheet {
owner: this.document.isOwner,
config: game.system.lesheritiers.config,
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'),
isGM: game.user.isGM,
usageMax: -1
@@ -76,6 +76,10 @@ export class HeritiersItemSheet extends ItemSheet {
this.object.system.pointsusagecourant = formData.usageMax
}
}
if (this.object.type == 'sort' ) {
formData.competencesMagie = HeritiersUtility.getCompetencesMagie()
}
//this.options.editable = !(this.object.origin == "embeddedItem");
console.log("ITEM DATA", formData, this);

View File

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

View File

@@ -55,12 +55,12 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
foundry.documents.collections.Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
foundry.documents.collections.Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
foundry.documents.collections.Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
HeritiersUtility.init()
@@ -107,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)
moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=>
}).catch(err =>
console.log("No stats available, giving up.")
)
welcomeMessage();
@@ -131,4 +131,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
}
return true;
});

View File

@@ -6,7 +6,7 @@ export class HeritiersRollDialog extends Dialog {
static async create(actor, rollData) {
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);
}
@@ -109,7 +109,6 @@ export class HeritiersRollDialog extends Dialog {
activateListeners(html) {
super.activateListeners(html);
var dialog = this;
function onLoad() {
}
$(function () { onLoad(); });

View File

@@ -26,7 +26,7 @@ const __facesAdjacentes = {
10: [8, 4, 3, 7]
},
"d12": {
1:[2, 3, 4, 5, 6],
1: [2, 3, 4, 5, 6],
2: [1, 6, 8, 12, 3],
3: [1, 4, 11, 12, 2],
4: [1, 5, 10, 11, 3],
@@ -48,7 +48,7 @@ export class HeritiersUtility {
/* -------------------------------------------- */
static async init() {
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.defenderStore = {}
@@ -104,6 +104,8 @@ export class HeritiersUtility {
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
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", {
name: "Points d'héritage",
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) {
const pack = game.packs.get(compendium);
@@ -133,7 +161,7 @@ export class HeritiersUtility {
/* -------------------------------------------- */
static async chatListeners(html) {
html.on("click", '.predilection-reroll', async event => {
$(html).on("click", '.predilection-reroll', async event => {
let predIdx = $(event.currentTarget).data("predilection-index")
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
@@ -144,18 +172,18 @@ export class HeritiersUtility {
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 message = game.messages.get(messageId)
let rollData = message.getFlag("world", "heritiers-roll")
let actor = this.getActorFromRollData(rollData)
if ( await actor.incDecTricherie(-2) ) {
if (await actor.incDecTricherie(-2)) {
rollData.forcedValue = Number($(event.currentTarget).data("dice-value"))
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 message = game.messages.get(messageId)
let rollData = message.getFlag("world", "heritiers-roll")
@@ -174,7 +202,7 @@ export class HeritiersUtility {
'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html'
]
return loadTemplates(templatePaths);
return foundry.applications.handlebars.loadTemplates(templatePaths);
}
/* -------------------------------------------- */
@@ -389,7 +417,7 @@ export class HeritiersUtility {
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])
}
}
@@ -450,7 +478,7 @@ export class HeritiersUtility {
this.computeArmeDegats(rollData, actor)
}
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")
}
/* -------------------------------------------- */
@@ -462,7 +490,7 @@ export class HeritiersUtility {
this.computeMarge(rollData, valeurDefense)
rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1
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")
}
/* -------------------------------------------- */
@@ -470,12 +498,13 @@ export class HeritiersUtility {
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.")
return
}
//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])
if (rollData.forcedValue) {
@@ -534,7 +563,7 @@ export class HeritiersUtility {
}
}
if ( !rollData.noRoll) {
if (!rollData.noRoll) {
let myRoll = await new Roll(rollData.diceFormula).roll()
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = foundry.utils.duplicate(myRoll)
@@ -551,9 +580,20 @@ export class HeritiersUtility {
if (rollData.mode == "pouvoir" || rollData.mode == "pouvoirpassif") {
actor.incDecPointsUsage(rollData.pouvoir._id, -rollData.pouvoirPointsUsage)
}
// Gestion sort et points d'âme
if (rollData.mode == "sort") {
if (rollData.spendEsprit) {
actor.inDecCarac("esp", -1)
} else {
actor.incDecPointsAme(-rollData.sortPointsAme)
if (rollData.sort.system.competence == "Magie du Clan") {
actor.incDecPV(-2)
}
}
}
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)
// Gestion attaque standard
@@ -591,7 +631,7 @@ export class HeritiersUtility {
this.computeResult(rollData)
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)
}
@@ -764,13 +804,13 @@ export class HeritiersUtility {
static chatRollMenu(html, options) {
let canApply = li => canvas.tokens.controlled.length && li.find(".heritiers-roll").length
let canApplyBA = function (li) {
let message = game.messages.get(li.attr("data-message-id"))
let message = game.messages.get($(li).attr("data-message-id"))
let rollData = message.getFlag("world", "heritiers-roll")
let actor = this.getActorFromRollData(rollData)
return (!rollData.isReroll && actor.getBonneAventure() > 0)
}
let canApplyPE = function (li) {
let message = game.messages.get(li.attr("data-message-id"))
let message = game.messages.get($(li).attr("data-message-id"))
let rollData = message.getFlag("world", "heritiers-roll")
let actor = this.getActorFromRollData(rollData)
return (!rollData.isReroll && actor.getEclat() > 0)
@@ -805,11 +845,11 @@ export class HeritiersUtility {
/* -------------------------------------------- */
static async confirmDelete(actorSheet, li) {
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 = {
delete: {
icon: '<i class="fas fa-check"></i>',
label: "Yes, remove it",
label: "Oui !",
callback: () => {
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
li.slideUp(200, () => actorSheet.render(false));
@@ -817,12 +857,12 @@ export class HeritiersUtility {
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: "Cancel"
label: "Non !"
}
}
msgTxt += "</p>";
let d = new Dialog({
title: "Confirm removal",
title: "Confirmer la suppression",
content: msgTxt,
buttons: buttons,
default: "cancel"
@@ -830,21 +870,56 @@ export class HeritiersUtility {
d.render(true);
}
/************************************************************************************/
static async __create_talents_table() {
let compName = "fvtt-les-heritiers.talents-cellule"
const compData = await HeritiersUtility.loadCompendium(compName)
let talents = compData.map(i => i.toObject())
let htmlTab = "<table border='1'><tbody>";
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";
static loadSort() {
// Create afolder in the item directory if it doesn't exist
if (!game.folders.getName("Magie du Clan")) {
Folder.create({
name: "Magie du Clan",
type: "Item",
color: "#3b1361"
});
}
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.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000216

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:06.038149 7fd1378006c0 Recovering log #117
2024/07/13-11:50:06.049190 7fd1378006c0 Delete type=3 #115
2024/07/13-11:50:06.049270 7fd1378006c0 Delete type=0 #117
2024/07/13-12:04:34.890522 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.890547 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.896578 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.910319 7fd1368006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.910358 7fd1368006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.841305 7f12eeffd6c0 Recovering log #214
2025/08/12-23:22:09.894721 7f12eeffd6c0 Delete type=3 #212
2025/08/12-23:22:09.894801 7f12eeffd6c0 Delete type=0 #214
2025/08/12-23:24:44.447479 7f12edffb6c0 Level-0 table #219: started
2025/08/12-23:24:44.447513 7f12edffb6c0 Level-0 table #219: 0 bytes OK
2025/08/12-23:24:44.453775 7f12edffb6c0 Delete type=0 #217
2025/08/12-23:24:44.453928 7f12edffb6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.453962 7f12edffb6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:15.244079 7f84774006c0 Recovering log #113
2024/07/13-10:02:15.300941 7f84774006c0 Delete type=3 #111
2024/07/13-10:02:15.301037 7f84774006c0 Delete type=0 #113
2024/07/13-10:03:01.406237 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.406297 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.413253 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.413568 7f846fe006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.413632 7f846fe006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.134639 7f12ef7fe6c0 Recovering log #210
2025/08/12-22:03:12.178916 7f12ef7fe6c0 Delete type=3 #208
2025/08/12-22:03:12.178963 7f12ef7fe6c0 Delete type=0 #210
2025/08/12-23:20:29.693131 7f12edffb6c0 Level-0 table #215: started
2025/08/12-23:20:29.693153 7f12edffb6c0 Level-0 table #215: 0 bytes OK
2025/08/12-23:20:29.699501 7f12edffb6c0 Delete type=0 #213
2025/08/12-23:20:29.716914 7f12edffb6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.716949 7f12edffb6c0 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.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000216

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:06.067232 7fd1382006c0 Recovering log #117
2024/07/13-11:50:06.078188 7fd1382006c0 Delete type=3 #115
2024/07/13-11:50:06.078300 7fd1382006c0 Delete type=0 #117
2024/07/13-12:04:34.903770 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.903799 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.910179 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.910343 7fd1368006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.910366 7fd1368006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.953525 7f12ef7fe6c0 Recovering log #214
2025/08/12-23:22:09.999140 7f12ef7fe6c0 Delete type=3 #212
2025/08/12-23:22:09.999193 7f12ef7fe6c0 Delete type=0 #214
2025/08/12-23:24:44.461664 7f12edffb6c0 Level-0 table #219: started
2025/08/12-23:24:44.461699 7f12edffb6c0 Level-0 table #219: 0 bytes OK
2025/08/12-23:24:44.467731 7f12edffb6c0 Delete type=0 #217
2025/08/12-23:24:44.481357 7f12edffb6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.481393 7f12edffb6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:15.384479 7f84774006c0 Recovering log #113
2024/07/13-10:02:15.449901 7f84774006c0 Delete type=3 #111
2024/07/13-10:02:15.450029 7f84774006c0 Delete type=0 #113
2024/07/13-10:03:01.390066 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.390114 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.398481 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.413524 7f846fe006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.413602 7f846fe006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.234213 7f12eeffd6c0 Recovering log #210
2025/08/12-22:03:12.274961 7f12eeffd6c0 Delete type=3 #208
2025/08/12-22:03:12.275015 7f12eeffd6c0 Delete type=0 #210
2025/08/12-23:20:29.728859 7f12edffb6c0 Level-0 table #215: started
2025/08/12-23:20:29.728889 7f12edffb6c0 Level-0 table #215: 0 bytes OK
2025/08/12-23:20:29.734828 7f12edffb6c0 Delete type=0 #213
2025/08/12-23:20:29.748366 7f12edffb6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.758780 7f12edffb6c0 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.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000216

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:06.024005 7fd1396006c0 Recovering log #117
2024/07/13-11:50:06.034260 7fd1396006c0 Delete type=3 #115
2024/07/13-11:50:06.034359 7fd1396006c0 Delete type=0 #117
2024/07/13-12:04:34.884145 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.884176 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.890417 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.910307 7fd1368006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.910351 7fd1368006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.739184 7f12ef7fe6c0 Recovering log #214
2025/08/12-23:22:09.787438 7f12ef7fe6c0 Delete type=3 #212
2025/08/12-23:22:09.787511 7f12ef7fe6c0 Delete type=0 #214
2025/08/12-23:24:44.402280 7f12edffb6c0 Level-0 table #219: started
2025/08/12-23:24:44.402330 7f12edffb6c0 Level-0 table #219: 0 bytes OK
2025/08/12-23:24:44.408548 7f12edffb6c0 Delete type=0 #217
2025/08/12-23:24:44.427555 7f12edffb6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.427616 7f12edffb6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:15.177989 7f8476a006c0 Recovering log #113
2024/07/13-10:02:15.234044 7f8476a006c0 Delete type=3 #111
2024/07/13-10:02:15.234141 7f8476a006c0 Delete type=0 #113
2024/07/13-10:03:01.383420 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.383474 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.389789 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.413498 7f846fe006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.413585 7f846fe006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.046235 7f12effff6c0 Recovering log #210
2025/08/12-22:03:12.089332 7f12effff6c0 Delete type=3 #208
2025/08/12-22:03:12.089400 7f12effff6c0 Delete type=0 #210
2025/08/12-23:20:29.686986 7f12edffb6c0 Level-0 table #215: started
2025/08/12-23:20:29.687016 7f12edffb6c0 Level-0 table #215: 0 bytes OK
2025/08/12-23:20:29.693011 7f12edffb6c0 Delete type=0 #213
2025/08/12-23:20:29.716900 7f12edffb6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.716935 7f12edffb6c0 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.

BIN
packs/avantages/000179.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000216

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:05.981429 7fd1378006c0 Recovering log #117
2024/07/13-11:50:05.991790 7fd1378006c0 Delete type=3 #115
2024/07/13-11:50:05.991881 7fd1378006c0 Delete type=0 #117
2024/07/13-12:04:34.869904 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.870077 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.876773 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.883990 7fd1368006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.884026 7fd1368006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.532032 7f12ef7fe6c0 Recovering log #214
2025/08/12-23:22:09.583613 7f12ef7fe6c0 Delete type=3 #212
2025/08/12-23:22:09.583679 7f12ef7fe6c0 Delete type=0 #214
2025/08/12-23:24:44.414597 7f12edffb6c0 Level-0 table #219: started
2025/08/12-23:24:44.414620 7f12edffb6c0 Level-0 table #219: 0 bytes OK
2025/08/12-23:24:44.420650 7f12edffb6c0 Delete type=0 #217
2025/08/12-23:24:44.427592 7f12edffb6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.427633 7f12edffb6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:14.926786 7f84760006c0 Recovering log #113
2024/07/13-10:02:15.008375 7f84760006c0 Delete type=3 #111
2024/07/13-10:02:15.008515 7f84760006c0 Delete type=0 #113
2024/07/13-10:03:01.362746 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.362786 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.369253 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.383122 7f846fe006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.383205 7f846fe006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2025/08/12-22:03:11.912233 7f12effff6c0 Recovering log #210
2025/08/12-22:03:11.957119 7f12effff6c0 Delete type=3 #208
2025/08/12-22:03:11.957180 7f12effff6c0 Delete type=0 #210
2025/08/12-23:20:29.661087 7f12edffb6c0 Level-0 table #215: started
2025/08/12-23:20:29.661131 7f12edffb6c0 Level-0 table #215: 0 bytes OK
2025/08/12-23:20:29.667177 7f12edffb6c0 Delete type=0 #213
2025/08/12-23:20:29.686825 7f12edffb6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.686871 7f12edffb6c0 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.

BIN
packs/capacites/000179.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000216

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:06.010574 7fd1382006c0 Recovering log #117
2024/07/13-11:50:06.020267 7fd1382006c0 Delete type=3 #115
2024/07/13-11:50:06.020329 7fd1382006c0 Delete type=0 #117
2024/07/13-12:04:34.863241 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.863266 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.869777 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.883977 7fd1368006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.884018 7fd1368006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.678492 7f12eeffd6c0 Recovering log #214
2025/08/12-23:22:09.736918 7f12eeffd6c0 Delete type=3 #212
2025/08/12-23:22:09.737004 7f12eeffd6c0 Delete type=0 #214
2025/08/12-23:24:44.408642 7f12edffb6c0 Level-0 table #219: started
2025/08/12-23:24:44.408666 7f12edffb6c0 Level-0 table #219: 0 bytes OK
2025/08/12-23:24:44.414489 7f12edffb6c0 Delete type=0 #217
2025/08/12-23:24:44.427576 7f12edffb6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.427625 7f12edffb6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:15.106775 7f84756006c0 Recovering log #113
2024/07/13-10:02:15.167776 7f84756006c0 Delete type=3 #111
2024/07/13-10:02:15.167882 7f84756006c0 Delete type=0 #113
2024/07/13-10:03:01.375831 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.375868 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.382829 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.383157 7f846fe006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.383221 7f846fe006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.004614 7f12ef7fe6c0 Recovering log #210
2025/08/12-22:03:12.044171 7f12ef7fe6c0 Delete type=3 #208
2025/08/12-22:03:12.044244 7f12ef7fe6c0 Delete type=0 #210
2025/08/12-23:20:29.673446 7f12edffb6c0 Level-0 table #215: started
2025/08/12-23:20:29.673471 7f12edffb6c0 Level-0 table #215: 0 bytes OK
2025/08/12-23:20:29.680450 7f12edffb6c0 Delete type=0 #213
2025/08/12-23:20:29.686854 7f12edffb6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.686885 7f12edffb6c0 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.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000219

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:05.968187 7fd1396006c0 Recovering log #117
2024/07/13-11:50:05.978032 7fd1396006c0 Delete type=3 #115
2024/07/13-11:50:05.978111 7fd1396006c0 Delete type=0 #117
2024/07/13-12:04:34.876924 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.876963 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.883825 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.884000 7fd1368006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.884033 7fd1368006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.475992 7f12effff6c0 Recovering log #217
2025/08/12-23:22:09.530135 7f12effff6c0 Delete type=3 #215
2025/08/12-23:22:09.530186 7f12effff6c0 Delete type=0 #217
2025/08/12-23:24:44.420774 7f12edffb6c0 Level-0 table #222: started
2025/08/12-23:24:44.420800 7f12edffb6c0 Level-0 table #222: 0 bytes OK
2025/08/12-23:24:44.427391 7f12edffb6c0 Delete type=0 #220
2025/08/12-23:24:44.427605 7f12edffb6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.427641 7f12edffb6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:14.835994 7f8476a006c0 Recovering log #113
2024/07/13-10:02:14.919817 7f8476a006c0 Delete type=3 #111
2024/07/13-10:02:14.919919 7f8476a006c0 Delete type=0 #113
2024/07/13-10:03:01.355643 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.355729 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.362563 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.383100 7f846fe006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.383176 7f846fe006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2025/08/12-22:03:11.864963 7f12ee7fc6c0 Recovering log #213
2025/08/12-22:03:11.909538 7f12ee7fc6c0 Delete type=3 #211
2025/08/12-22:03:11.909606 7f12ee7fc6c0 Delete type=0 #213
2025/08/12-23:20:29.667307 7f12edffb6c0 Level-0 table #218: started
2025/08/12-23:20:29.667339 7f12edffb6c0 Level-0 table #218: 0 bytes OK
2025/08/12-23:20:29.673335 7f12edffb6c0 Delete type=0 #216
2025/08/12-23:20:29.686842 7f12edffb6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.686878 7f12edffb6c0 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.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000216

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:05.995698 7fd138c006c0 Recovering log #117
2024/07/13-11:50:06.006429 7fd138c006c0 Delete type=3 #115
2024/07/13-11:50:06.006483 7fd138c006c0 Delete type=0 #117
2024/07/13-12:04:34.856398 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.856463 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.863115 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.883960 7fd1368006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.884009 7fd1368006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.585932 7f12ee7fc6c0 Recovering log #214
2025/08/12-23:22:09.675400 7f12ee7fc6c0 Delete type=3 #212
2025/08/12-23:22:09.675482 7f12ee7fc6c0 Delete type=0 #214
2025/08/12-23:24:44.434363 7f12edffb6c0 Level-0 table #219: started
2025/08/12-23:24:44.434400 7f12edffb6c0 Level-0 table #219: 0 bytes OK
2025/08/12-23:24:44.440785 7f12edffb6c0 Delete type=0 #217
2025/08/12-23:24:44.453906 7f12edffb6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.453946 7f12edffb6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:15.016503 7f84774006c0 Recovering log #113
2024/07/13-10:02:15.078712 7f84774006c0 Delete type=3 #111
2024/07/13-10:02:15.078829 7f84774006c0 Delete type=0 #113
2024/07/13-10:03:01.369422 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.369459 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.375663 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.383141 7f846fe006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.383191 7f846fe006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2025/08/12-22:03:11.960107 7f12eeffd6c0 Recovering log #210
2025/08/12-22:03:12.002183 7f12eeffd6c0 Delete type=3 #208
2025/08/12-22:03:12.002239 7f12eeffd6c0 Delete type=0 #210
2025/08/12-23:20:29.680595 7f12edffb6c0 Level-0 table #215: started
2025/08/12-23:20:29.680637 7f12edffb6c0 Level-0 table #215: 0 bytes OK
2025/08/12-23:20:29.686672 7f12edffb6c0 Delete type=0 #213
2025/08/12-23:20:29.686864 7f12edffb6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.686893 7f12edffb6c0 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.

View File

@@ -0,0 +1 @@
MANIFEST-000015

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

@@ -0,0 +1,8 @@
2025/08/12-23:22:09.790283 7f12effff6c0 Recovering log #12
2025/08/12-23:22:09.838285 7f12effff6c0 Delete type=3 #10
2025/08/12-23:22:09.838351 7f12effff6c0 Delete type=0 #12
2025/08/12-23:24:44.440907 7f12edffb6c0 Level-0 table #18: started
2025/08/12-23:24:44.440937 7f12edffb6c0 Level-0 table #18: 0 bytes OK
2025/08/12-23:24:44.447316 7f12edffb6c0 Delete type=0 #16
2025/08/12-23:24:44.453918 7f12edffb6c0 Manual compaction at level-0 from '!folders!NE8l8XLXdVUw0aZm' @ 72057594037927935 : 1 .. '!items!zjQQhJpujpdbG4zl' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.453954 7f12edffb6c0 Manual compaction at level-1 from '!folders!NE8l8XLXdVUw0aZm' @ 72057594037927935 : 1 .. '!items!zjQQhJpujpdbG4zl' @ 0 : 0; will stop at (end)

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

@@ -0,0 +1,15 @@
2025/08/12-22:03:12.092093 7f12ee7fc6c0 Recovering log #8
2025/08/12-22:03:12.132029 7f12ee7fc6c0 Delete type=3 #6
2025/08/12-22:03:12.132100 7f12ee7fc6c0 Delete type=0 #8
2025/08/12-23:20:29.699933 7f12edffb6c0 Level-0 table #13: started
2025/08/12-23:20:29.704268 7f12edffb6c0 Level-0 table #13: 15679 bytes OK
2025/08/12-23:20:29.710447 7f12edffb6c0 Delete type=0 #11
2025/08/12-23:20:29.716925 7f12edffb6c0 Manual compaction at level-0 from '!folders!NE8l8XLXdVUw0aZm' @ 72057594037927935 : 1 .. '!items!zjQQhJpujpdbG4zl' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.716961 7f12edffb6c0 Manual compaction at level-1 from '!folders!NE8l8XLXdVUw0aZm' @ 72057594037927935 : 1 .. '!items!zjQQhJpujpdbG4zl' @ 0 : 0; will stop at '!items!vO9OLd8LQMPNckkU' @ 112 : 1
2025/08/12-23:20:29.716966 7f12edffb6c0 Compacting 1@1 + 1@2 files
2025/08/12-23:20:29.721393 7f12edffb6c0 Generated table #14@1: 89 keys, 73118 bytes
2025/08/12-23:20:29.721441 7f12edffb6c0 Compacted 1@1 + 1@2 files => 73118 bytes
2025/08/12-23:20:29.728469 7f12edffb6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/08/12-23:20:29.728621 7f12edffb6c0 Delete type=2 #5
2025/08/12-23:20:29.728770 7f12edffb6c0 Delete type=2 #13
2025/08/12-23:20:29.742024 7f12edffb6c0 Manual compaction at level-1 from '!items!vO9OLd8LQMPNckkU' @ 112 : 1 .. '!items!zjQQhJpujpdbG4zl' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/pouvoirs/000180.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000119
MANIFEST-000217

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:06.053031 7fd138c006c0 Recovering log #117
2024/07/13-11:50:06.063288 7fd138c006c0 Delete type=3 #115
2024/07/13-11:50:06.063408 7fd138c006c0 Delete type=0 #117
2024/07/13-12:04:34.896698 7fd1368006c0 Level-0 table #122: started
2024/07/13-12:04:34.896722 7fd1368006c0 Level-0 table #122: 0 bytes OK
2024/07/13-12:04:34.903568 7fd1368006c0 Delete type=0 #120
2024/07/13-12:04:34.910332 7fd1368006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.910373 7fd1368006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2025/08/12-23:22:09.898470 7f12ee7fc6c0 Recovering log #215
2025/08/12-23:22:09.950596 7f12ee7fc6c0 Delete type=3 #213
2025/08/12-23:22:09.950662 7f12ee7fc6c0 Delete type=0 #215
2025/08/12-23:24:44.427852 7f12edffb6c0 Level-0 table #220: started
2025/08/12-23:24:44.427889 7f12edffb6c0 Level-0 table #220: 0 bytes OK
2025/08/12-23:24:44.434222 7f12edffb6c0 Delete type=0 #218
2025/08/12-23:24:44.453893 7f12edffb6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.453937 7f12edffb6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2024/07/13-10:02:15.310180 7f84756006c0 Recovering log #113
2024/07/13-10:02:15.365762 7f84756006c0 Delete type=3 #111
2024/07/13-10:02:15.365879 7f84756006c0 Delete type=0 #113
2024/07/13-10:03:01.398667 7f846fe006c0 Level-0 table #118: started
2024/07/13-10:03:01.398709 7f846fe006c0 Level-0 table #118: 0 bytes OK
2024/07/13-10:03:01.405946 7f846fe006c0 Delete type=0 #116
2024/07/13-10:03:01.413546 7f846fe006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.413616 7f846fe006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.180814 7f12effff6c0 Recovering log #211
2025/08/12-22:03:12.231131 7f12effff6c0 Delete type=3 #209
2025/08/12-22:03:12.231199 7f12effff6c0 Delete type=0 #211
2025/08/12-23:20:29.710650 7f12edffb6c0 Level-0 table #216: started
2025/08/12-23:20:29.710689 7f12edffb6c0 Level-0 table #216: 0 bytes OK
2025/08/12-23:20:29.716754 7f12edffb6c0 Delete type=0 #214
2025/08/12-23:20:29.716942 7f12edffb6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.728846 7f12edffb6c0 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.

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

View File

@@ -1 +1 @@
MANIFEST-000118
MANIFEST-000214

View File

@@ -1,7 +1,7 @@
2024/07/13-11:50:06.080991 7fd1396006c0 Recovering log #116
2024/07/13-11:50:06.091283 7fd1396006c0 Delete type=3 #114
2024/07/13-11:50:06.091343 7fd1396006c0 Delete type=0 #116
2024/07/13-12:04:34.916692 7fd1368006c0 Level-0 table #121: started
2024/07/13-12:04:34.916727 7fd1368006c0 Level-0 table #121: 0 bytes OK
2024/07/13-12:04:34.922984 7fd1368006c0 Delete type=0 #119
2024/07/13-12:04:34.936001 7fd1368006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
2025/08/12-23:22:10.001919 7f12eeffd6c0 Recovering log #212
2025/08/12-23:22:10.057666 7f12eeffd6c0 Delete type=3 #210
2025/08/12-23:22:10.057755 7f12eeffd6c0 Delete type=0 #212
2025/08/12-23:24:44.454051 7f12edffb6c0 Level-0 table #217: started
2025/08/12-23:24:44.454080 7f12edffb6c0 Level-0 table #217: 0 bytes OK
2025/08/12-23:24:44.461512 7f12edffb6c0 Delete type=0 #215
2025/08/12-23:24:44.481330 7f12edffb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2024/07/13-10:02:15.459843 7f8476a006c0 Recovering log #112
2024/07/13-10:02:15.528138 7f8476a006c0 Delete type=3 #110
2024/07/13-10:02:15.528258 7f8476a006c0 Delete type=0 #112
2024/07/13-10:03:01.433902 7f846fe006c0 Level-0 table #117: started
2024/07/13-10:03:01.433954 7f846fe006c0 Level-0 table #117: 0 bytes OK
2024/07/13-10:03:01.441009 7f846fe006c0 Delete type=0 #115
2024/07/13-10:03:01.453712 7f846fe006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.277655 7f12ee7fc6c0 Recovering log #208
2025/08/12-22:03:12.314903 7f12ee7fc6c0 Delete type=3 #206
2025/08/12-22:03:12.314992 7f12ee7fc6c0 Delete type=0 #208
2025/08/12-23:20:29.734915 7f12edffb6c0 Level-0 table #213: started
2025/08/12-23:20:29.734943 7f12edffb6c0 Level-0 table #213: 0 bytes OK
2025/08/12-23:20:29.741871 7f12edffb6c0 Delete type=0 #211
2025/08/12-23:20:29.748380 7f12edffb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/scenes/000148.ldb Normal file

Binary file not shown.

0
packs/scenes/000187.log Normal file
View File

View File

@@ -1 +1 @@
MANIFEST-000088
MANIFEST-000185

View File

@@ -1,8 +1,8 @@
2024/07/13-11:50:06.094716 7fd1378006c0 Recovering log #85
2024/07/13-11:50:06.104682 7fd1378006c0 Delete type=3 #83
2024/07/13-11:50:06.104766 7fd1378006c0 Delete type=0 #85
2024/07/13-12:04:34.923107 7fd1368006c0 Level-0 table #91: started
2024/07/13-12:04:34.923134 7fd1368006c0 Level-0 table #91: 0 bytes OK
2024/07/13-12:04:34.929566 7fd1368006c0 Delete type=0 #89
2024/07/13-12:04:34.936016 7fd1368006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
2024/07/13-12:04:34.936052 7fd1368006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
2025/08/12-23:22:10.060101 7f12effff6c0 Recovering log #183
2025/08/12-23:22:10.105374 7f12effff6c0 Delete type=3 #181
2025/08/12-23:22:10.105452 7f12effff6c0 Delete type=0 #183
2025/08/12-23:24:44.474162 7f12edffb6c0 Level-0 table #188: started
2025/08/12-23:24:44.474198 7f12edffb6c0 Level-0 table #188: 0 bytes OK
2025/08/12-23:24:44.481148 7f12edffb6c0 Delete type=0 #186
2025/08/12-23:24:44.481384 7f12edffb6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
2025/08/12-23:24:44.481409 7f12edffb6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)

View File

@@ -1,15 +1,8 @@
2024/07/13-10:02:15.532966 7f84756006c0 Recovering log #81
2024/07/13-10:02:15.589635 7f84756006c0 Delete type=3 #79
2024/07/13-10:02:15.589751 7f84756006c0 Delete type=0 #81
2024/07/13-10:03:01.441302 7f846fe006c0 Level-0 table #86: started
2024/07/13-10:03:01.445997 7f846fe006c0 Level-0 table #86: 3009 bytes OK
2024/07/13-10:03:01.453293 7f846fe006c0 Delete type=0 #84
2024/07/13-10:03:01.453734 7f846fe006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
2024/07/13-10:03:01.465675 7f846fe006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at '!scenes!ypDutqjqZcr7lx6I' @ 12 : 1
2024/07/13-10:03:01.465698 7f846fe006c0 Compacting 1@1 + 1@2 files
2024/07/13-10:03:01.469500 7f846fe006c0 Generated table #87@1: 4 keys, 3009 bytes
2024/07/13-10:03:01.469540 7f846fe006c0 Compacted 1@1 + 1@2 files => 3009 bytes
2024/07/13-10:03:01.475807 7f846fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/07/13-10:03:01.475945 7f846fe006c0 Delete type=2 #74
2024/07/13-10:03:01.476125 7f846fe006c0 Delete type=2 #86
2024/07/13-10:03:01.494535 7f846fe006c0 Manual compaction at level-1 from '!scenes!ypDutqjqZcr7lx6I' @ 12 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
2025/08/12-22:03:12.317962 7f12effff6c0 Recovering log #179
2025/08/12-22:03:12.360482 7f12effff6c0 Delete type=3 #177
2025/08/12-22:03:12.360548 7f12effff6c0 Delete type=0 #179
2025/08/12-23:20:29.742044 7f12edffb6c0 Level-0 table #184: started
2025/08/12-23:20:29.742079 7f12edffb6c0 Level-0 table #184: 0 bytes OK
2025/08/12-23:20:29.748132 7f12edffb6c0 Delete type=0 #182
2025/08/12-23:20:29.758795 7f12edffb6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
2025/08/12-23:20:29.764960 7f12edffb6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

19
srcdata/normalize.py Normal file
View File

@@ -0,0 +1,19 @@
import json
FIELDS = ["name", "competence", "description", "duree", "portee", "concentration", "critique", "ingredients", "resistance"]
def capitalize_first_letter(s):
if isinstance(s, str) and s:
return s[0].upper() + s[1:]
return s
with open("../srcdata/sort_magieduclan.json", "r", encoding="utf-8") as f:
data = json.load(f)
for spell in data:
for field in FIELDS:
if field in spell:
spell[field] = capitalize_first_letter(spell[field])
with open("../srcdata/sort_magieduclan.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)

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