Compare commits
4 Commits
2b680a203f
...
fvtt-les-h
| Author | SHA1 | Date | |
|---|---|---|---|
| adc912e6cd | |||
| 51a457ebf6 | |||
| 2e9c558027 | |||
| bcd0758328 |
BIN
assets/icons/sort.webp
Normal file
BIN
assets/icons/sort.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
BIN
assets/scenes/8DjkNeeujp2qff1N-thumb.webp
Normal file
BIN
assets/scenes/8DjkNeeujp2qff1N-thumb.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.2 KiB |
BIN
assets/scenes/ZjIQTg8S4hLZ4kXN-thumb.webp
Normal file
BIN
assets/scenes/ZjIQTg8S4hLZ4kXN-thumb.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
BIN
assets/scenes/aanMTXv8znDyE6qb-thumb.webp
Normal file
BIN
assets/scenes/aanMTXv8znDyE6qb-thumb.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/scenes/ypDutqjqZcr7lx6I-thumb.webp
Normal file
BIN
assets/scenes/ypDutqjqZcr7lx6I-thumb.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
@@ -17,7 +17,8 @@
|
||||
"fee": "Fée",
|
||||
"pouvoir": "Pouvoir",
|
||||
"profil": "Profil",
|
||||
"protection": "Protection"
|
||||
"protection": "Protection",
|
||||
"sort": "Sort"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
@@ -24,7 +24,7 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
@@ -38,31 +38,33 @@ 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(),
|
||||
combat: this.actor.getCombatValues(),
|
||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||
avantages: foundry.utils.duplicate(this.actor.getAvantages()),
|
||||
atouts: foundry.utils.duplicate(this.actor.getAtouts()),
|
||||
capacites: foundry.utils.duplicate(this.actor.getCapacites()),
|
||||
desavantages: foundry.utils.duplicate(this.actor.getDesavantages()),
|
||||
profils: foundry.utils.duplicate(this.actor.getProfils()),
|
||||
pvMalus: this.actor.getPvMalus(),
|
||||
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,
|
||||
@@ -120,14 +122,14 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.options.editable) return;
|
||||
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
const item = this.actor.items.get( itemId )
|
||||
const item = this.actor.items.get(itemId)
|
||||
item.sheet.render(true)
|
||||
})
|
||||
})
|
||||
// Delete Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
@@ -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
|
||||
@@ -149,17 +151,17 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
let value = Number($(event.currentTarget).data("adversite-value"))
|
||||
this.actor.incDecAdversite(adv, value)
|
||||
})
|
||||
|
||||
|
||||
html.find('.quantity-modify').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||
this.actor.incDecQuantity( li.data("item-id"), value );
|
||||
this.actor.incDecQuantity(li.data("item-id"), value);
|
||||
})
|
||||
|
||||
html.find('.roll-initiative').click((event) => {
|
||||
this.actor.rollInitiative()
|
||||
})
|
||||
|
||||
|
||||
html.find('.roll-carac').click((event) => {
|
||||
const key = $(event.currentTarget).data("key")
|
||||
this.actor.rollCarac(key, false)
|
||||
@@ -167,37 +169,42 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
html.find('.roll-rang').click((event) => {
|
||||
const key = $(event.currentTarget).data("rang-key")
|
||||
this.actor.rollRang(key, false)
|
||||
})
|
||||
})
|
||||
html.find('.roll-root-competence').click((event) => {
|
||||
const compKey = $(event.currentTarget).data("attr-key")
|
||||
this.actor.rollRootCompetence(compKey)
|
||||
})
|
||||
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)
|
||||
})
|
||||
|
||||
|
||||
html.find('.roll-pouvoir').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let pouvoirId = li.data("item-id")
|
||||
@@ -209,21 +216,29 @@ 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 })
|
||||
})
|
||||
|
||||
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
this.render(true);
|
||||
});
|
||||
});
|
||||
html.find('.item-equip').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
this.actor.equipItem( li.data("item-id") );
|
||||
this.render(true);
|
||||
this.actor.equipItem(li.data("item-id"));
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
setPosition(options = {}) {
|
||||
|
||||
@@ -17,8 +17,8 @@ export class HeritiersActor extends Actor {
|
||||
/**
|
||||
* Override the create() function to provide additional SoS functionality.
|
||||
*
|
||||
* This overrided create() function adds initial items
|
||||
* Namely: Basic skills, money,
|
||||
* This overrided create() function adds initial items
|
||||
* Namely: Basic skills, money,
|
||||
*
|
||||
* @param {Object} data Barebones actor data which this function adds onto.
|
||||
* @param {Object} options (Unused) Additional options which customize the creation workflow.
|
||||
@@ -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,38 @@ 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.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 +203,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 +246,7 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
return Object.fromEntries(Object.entries(comp).sort())
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
organizeContacts() {
|
||||
let contactList = {}
|
||||
@@ -258,12 +313,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
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -627,6 +707,35 @@ export class HeritiersActor extends Actor {
|
||||
rollDialog.render(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(sort.system.niveau)
|
||||
rollData.sortPointsAme = sort.system.niveau
|
||||
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."
|
||||
}
|
||||
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 +836,7 @@ export class HeritiersActor extends Actor {
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 1;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
}
|
||||
},
|
||||
two: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
@@ -735,7 +844,7 @@ export class HeritiersActor extends Actor {
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 2;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
}
|
||||
},
|
||||
three: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
@@ -743,7 +852,7 @@ export class HeritiersActor extends Actor {
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 3;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
}
|
||||
},
|
||||
four: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
@@ -751,13 +860,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",
|
||||
@@ -766,7 +875,7 @@ export class HeritiersActor extends Actor {
|
||||
});
|
||||
d.render(true);
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollPouvoir(pouvoirId) {
|
||||
let pouvoir = this.items.get(pouvoirId)
|
||||
@@ -788,7 +897,7 @@ export class HeritiersActor extends Actor {
|
||||
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) {
|
||||
if (pouvoir.system.istest) {
|
||||
rollData.carac = foundry.utils.duplicate(this.system.caracteristiques[pouvoir.system.carac])
|
||||
rollData.caracKey = pouvoir.system.carac
|
||||
} else {
|
||||
|
||||
@@ -30,7 +30,8 @@ export const HERITIERS_CONFIG = {
|
||||
"combattant": {kind: "physical",name:"Combattant"},
|
||||
"erudit": {kind: "mental",name:"Erudit"},
|
||||
"savant": {kind: "mental",name:"Savant"},
|
||||
"gentleman": {kind: "mental",name:"Gentleman"}
|
||||
"gentleman": {kind: "mental",name:"Gentleman"},
|
||||
"magie": {kind: "magical", name: "Magie"},
|
||||
},
|
||||
baseTestPouvoir: {
|
||||
"feerie": "Féerie",
|
||||
@@ -193,6 +194,12 @@ export const HERITIERS_CONFIG = {
|
||||
{value: "5", label: "+5"},
|
||||
{value: "6", label: "+6"}
|
||||
],
|
||||
listNiveauSort: {
|
||||
"1" : "1",
|
||||
"2" : "2",
|
||||
"3" : "3",
|
||||
"4" : "4"
|
||||
},
|
||||
listNiveau: {
|
||||
"0": "0",
|
||||
"1": "1",
|
||||
|
||||
@@ -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() {
|
||||
@@ -61,9 +61,9 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
limited: this.object.limited,
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
config: game.system.lesheritiers.config,
|
||||
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);
|
||||
@@ -139,7 +143,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
|
||||
html.find('#add-specialite').click(ev => {
|
||||
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 })
|
||||
})
|
||||
html.find('.delete-specialite').click(ev => {
|
||||
@@ -164,11 +168,11 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
spec[index].description = ev.currentTarget.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
this.object.update( { 'system.specialites': spec })
|
||||
})
|
||||
})
|
||||
|
||||
html.find('#add-automation').click(ev => {
|
||||
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 })
|
||||
})
|
||||
html.find('.delete-automation').click(ev => {
|
||||
@@ -185,8 +189,8 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
auto[index][field] = ev.currentTarget.value
|
||||
auto[index].id = auto[index].id || foundry.utils.randomID(16)
|
||||
this.object.update( { 'system.automations': auto })
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,7 +30,7 @@ Hooks.once("init", async function () {
|
||||
HeritiersUtility.preloadHandlebarsTemplates()
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Set an initiative formula for the system
|
||||
// Set an initiative formula for the system
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "1d10",
|
||||
decimals: 1
|
||||
@@ -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()
|
||||
|
||||
@@ -106,13 +106,13 @@ Hooks.once("ready", function () {
|
||||
user: game.user._id
|
||||
});
|
||||
}
|
||||
|
||||
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();
|
||||
importDefaultScene();
|
||||
|
||||
@@ -131,4 +131,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
|
||||
@@ -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(); });
|
||||
@@ -142,6 +141,6 @@ export class HeritiersRollDialog extends Dialog {
|
||||
html.find('#attaque-cible').change((event) => {
|
||||
this.rollData.attaqueCible = String(event.currentTarget.value)
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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,19 @@ export class HeritiersUtility {
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getSDSortValue(niveau) {
|
||||
if (niveau <= 2) return 12;
|
||||
if (niveau <= 4) return 14;
|
||||
if (niveau <= 6) return 16;
|
||||
return 18;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getCompetencesMagie() {
|
||||
return this.competencesMagie
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async loadCompendiumData(compendium) {
|
||||
const pack = game.packs.get(compendium);
|
||||
@@ -133,7 +148,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)
|
||||
@@ -143,19 +158,19 @@ export class HeritiersUtility {
|
||||
rollData.competence = foundry.utils.duplicate(actor.getCompetence(rollData.competence._id))
|
||||
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)
|
||||
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 +189,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);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -258,7 +273,7 @@ export class HeritiersUtility {
|
||||
static saveRollData(rollData) {
|
||||
game.socket.emit("system.fvtt-les-heritiers", {
|
||||
name: "msg_update_roll", data: rollData
|
||||
}); // Notify all other clients of the roll
|
||||
}); // Notify all other clients of the roll
|
||||
this.updateRollData(rollData);
|
||||
}
|
||||
|
||||
@@ -389,7 +404,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 +465,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 +477,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,11 +485,11 @@ 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])
|
||||
@@ -486,7 +501,7 @@ export class HeritiersUtility {
|
||||
rollData.diceFormula = "{1d8, 1d10, 1d12}"
|
||||
} else {
|
||||
rollData.diceFormula = "1" + rollData.mainDice + "kh1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let rangValue = 0
|
||||
@@ -535,7 +550,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)
|
||||
@@ -554,7 +569,7 @@ export class HeritiersUtility {
|
||||
}
|
||||
|
||||
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
|
||||
@@ -592,7 +607,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)
|
||||
|
||||
}
|
||||
@@ -765,13 +780,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)
|
||||
@@ -806,11 +821,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));
|
||||
@@ -818,12 +833,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"
|
||||
@@ -831,21 +846,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.
BIN
packs/archetypes-fees/000179.ldb
Normal file
BIN
packs/archetypes-fees/000179.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000204
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.830180 7f47842006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.841219 7f47842006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.841349 7f47842006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.791107 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.791244 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.797592 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.818175 7f4782e006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818252 7f4782e006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.392137 7f12ef7fe6c0 Recovering log #202
|
||||
2025/08/11-22:51:18.402831 7f12ef7fe6c0 Delete type=3 #200
|
||||
2025/08/11-22:51:18.403033 7f12ef7fe6c0 Delete type=0 #202
|
||||
2025/08/11-22:52:41.281449 7f12edffb6c0 Level-0 table #207: started
|
||||
2025/08/11-22:52:41.281484 7f12edffb6c0 Level-0 table #207: 0 bytes OK
|
||||
2025/08/11-22:52:41.288560 7f12edffb6c0 Delete type=0 #205
|
||||
2025/08/11-22:52:41.294969 7f12edffb6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.295038 7f12edffb6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.084831 7fbe516006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.094922 7fbe516006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.095027 7fbe516006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.976722 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.976743 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:32.009094 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:32.009385 7fbe50c006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009440 7fbe50c006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.213810 7f12eeffd6c0 Recovering log #198
|
||||
2025/08/11-21:34:20.256044 7f12eeffd6c0 Delete type=3 #196
|
||||
2025/08/11-21:34:20.256149 7f12eeffd6c0 Delete type=0 #198
|
||||
2025/08/11-22:51:08.095390 7f12edffb6c0 Level-0 table #203: started
|
||||
2025/08/11-22:51:08.095416 7f12edffb6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/08/11-22:51:08.101419 7f12edffb6c0 Delete type=0 #201
|
||||
2025/08/11-22:51:08.115257 7f12edffb6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.115306 7f12edffb6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/archetypes-fees/MANIFEST-000204
Normal file
BIN
packs/archetypes-fees/MANIFEST-000204
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/armes-et-protection/000179.ldb
Normal file
BIN
packs/armes-et-protection/000179.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000204
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.866313 7f4784c006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.876628 7f4784c006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.876748 7f4784c006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.811252 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.811312 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.818015 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.818222 7f4782e006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818265 7f4782e006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.427459 7f12effff6c0 Recovering log #202
|
||||
2025/08/11-22:51:18.437741 7f12effff6c0 Delete type=3 #200
|
||||
2025/08/11-22:51:18.437824 7f12effff6c0 Delete type=0 #202
|
||||
2025/08/11-22:52:41.295170 7f12edffb6c0 Level-0 table #207: started
|
||||
2025/08/11-22:52:41.295253 7f12edffb6c0 Level-0 table #207: 0 bytes OK
|
||||
2025/08/11-22:52:41.301406 7f12edffb6c0 Delete type=0 #205
|
||||
2025/08/11-22:52:41.321176 7f12edffb6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.321242 7f12edffb6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.116385 7fbe534006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.126061 7fbe534006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.126143 7fbe534006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.939443 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.939481 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.976609 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:32.009370 7fbe50c006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009427 7fbe50c006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.321725 7f12ee7fc6c0 Recovering log #198
|
||||
2025/08/11-21:34:20.374068 7f12ee7fc6c0 Delete type=3 #196
|
||||
2025/08/11-21:34:20.374213 7f12ee7fc6c0 Delete type=0 #198
|
||||
2025/08/11-22:51:08.133789 7f12edffb6c0 Level-0 table #203: started
|
||||
2025/08/11-22:51:08.133823 7f12edffb6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/08/11-22:51:08.139874 7f12edffb6c0 Delete type=0 #201
|
||||
2025/08/11-22:51:08.147851 7f12edffb6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.158002 7f12edffb6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/armes-et-protection/MANIFEST-000204
Normal file
BIN
packs/armes-et-protection/MANIFEST-000204
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/atouts-feeriques/000179.ldb
Normal file
BIN
packs/atouts-feeriques/000179.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000204
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.810719 7f47856006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.822942 7f47856006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.823030 7f47856006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.797833 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.797891 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.804238 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.818194 7f4782e006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818278 7f4782e006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.358721 7f12eeffd6c0 Recovering log #202
|
||||
2025/08/11-22:51:18.370416 7f12eeffd6c0 Delete type=3 #200
|
||||
2025/08/11-22:51:18.370477 7f12eeffd6c0 Delete type=0 #202
|
||||
2025/08/11-22:52:41.264660 7f12edffb6c0 Level-0 table #207: started
|
||||
2025/08/11-22:52:41.264688 7f12edffb6c0 Level-0 table #207: 0 bytes OK
|
||||
2025/08/11-22:52:41.270787 7f12edffb6c0 Delete type=0 #205
|
||||
2025/08/11-22:52:41.294911 7f12edffb6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.295015 7f12edffb6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.069717 7fbe52a006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.079875 7fbe52a006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.079931 7fbe52a006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.870139 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.870173 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.904478 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:32.009329 7fbe50c006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009400 7fbe50c006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.151917 7f12ee7fc6c0 Recovering log #198
|
||||
2025/08/11-21:34:20.210898 7f12ee7fc6c0 Delete type=3 #196
|
||||
2025/08/11-21:34:20.211020 7f12ee7fc6c0 Delete type=0 #198
|
||||
2025/08/11-22:51:08.101600 7f12edffb6c0 Level-0 table #203: started
|
||||
2025/08/11-22:51:08.101658 7f12edffb6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/08/11-22:51:08.109108 7f12edffb6c0 Delete type=0 #201
|
||||
2025/08/11-22:51:08.115273 7f12edffb6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.115320 7f12edffb6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/atouts-feeriques/MANIFEST-000204
Normal file
BIN
packs/atouts-feeriques/MANIFEST-000204
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/avantages/000179.ldb
Normal file
BIN
packs/avantages/000179.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000204
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.752147 7f47842006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.763231 7f47842006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.763321 7f47842006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.762051 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.762167 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.768978 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790765 7f4782e006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790869 7f4782e006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.304943 7f12ef7fe6c0 Recovering log #202
|
||||
2025/08/11-22:51:18.317352 7f12ef7fe6c0 Delete type=3 #200
|
||||
2025/08/11-22:51:18.317883 7f12ef7fe6c0 Delete type=0 #202
|
||||
2025/08/11-22:52:41.257402 7f12edffb6c0 Level-0 table #207: started
|
||||
2025/08/11-22:52:41.257472 7f12edffb6c0 Level-0 table #207: 0 bytes OK
|
||||
2025/08/11-22:52:41.264373 7f12edffb6c0 Delete type=0 #205
|
||||
2025/08/11-22:52:41.264537 7f12edffb6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.264567 7f12edffb6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.016780 7fbe516006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.027353 7fbe516006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.027446 7fbe516006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.729942 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.730003 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.768395 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869947 7fbe50c006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.870007 7fbe50c006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:19.962488 7f12ee7fc6c0 Recovering log #198
|
||||
2025/08/11-21:34:20.014408 7f12ee7fc6c0 Delete type=3 #196
|
||||
2025/08/11-21:34:20.014461 7f12ee7fc6c0 Delete type=0 #198
|
||||
2025/08/11-22:51:08.055412 7f12edffb6c0 Level-0 table #203: started
|
||||
2025/08/11-22:51:08.055458 7f12edffb6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/08/11-22:51:08.062106 7f12edffb6c0 Delete type=0 #201
|
||||
2025/08/11-22:51:08.085428 7f12edffb6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.085469 7f12edffb6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/avantages/MANIFEST-000204
Normal file
BIN
packs/avantages/MANIFEST-000204
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/capacites/000179.ldb
Normal file
BIN
packs/capacites/000179.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000204
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.792985 7f4784c006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.804663 7f4784c006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.804793 7f4784c006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.769225 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.769288 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.776053 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790785 7f4782e006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790919 7f4782e006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.341321 7f12ee7fc6c0 Recovering log #202
|
||||
2025/08/11-22:51:18.354195 7f12ee7fc6c0 Delete type=3 #200
|
||||
2025/08/11-22:51:18.354810 7f12ee7fc6c0 Delete type=0 #202
|
||||
2025/08/11-22:52:41.237394 7f12edffb6c0 Level-0 table #207: started
|
||||
2025/08/11-22:52:41.237434 7f12edffb6c0 Level-0 table #207: 0 bytes OK
|
||||
2025/08/11-22:52:41.243722 7f12edffb6c0 Delete type=0 #205
|
||||
2025/08/11-22:52:41.264503 7f12edffb6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.264544 7f12edffb6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.054034 7fbe534006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.065082 7fbe534006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.065180 7fbe534006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.802367 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.802389 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.832600 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869974 7fbe50c006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.869999 7fbe50c006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.096085 7f12effff6c0 Recovering log #198
|
||||
2025/08/11-21:34:20.149715 7f12effff6c0 Delete type=3 #196
|
||||
2025/08/11-21:34:20.149828 7f12effff6c0 Delete type=0 #198
|
||||
2025/08/11-22:51:08.062220 7f12edffb6c0 Level-0 table #203: started
|
||||
2025/08/11-22:51:08.062246 7f12edffb6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/08/11-22:51:08.068241 7f12edffb6c0 Delete type=0 #201
|
||||
2025/08/11-22:51:08.085439 7f12edffb6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.085475 7f12edffb6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/capacites/MANIFEST-000204
Normal file
BIN
packs/capacites/MANIFEST-000204
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/competences/000206.ldb
Normal file
BIN
packs/competences/000206.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000207
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.734005 7f47856006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.745943 7f47856006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.746038 7f47856006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.776285 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.776344 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.783086 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790801 7f4782e006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790907 7f4782e006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.291417 7f12ee7fc6c0 Recovering log #204
|
||||
2025/08/11-22:51:18.301512 7f12ee7fc6c0 Delete type=3 #202
|
||||
2025/08/11-22:51:18.301601 7f12ee7fc6c0 Delete type=0 #204
|
||||
2025/08/11-22:52:41.243942 7f12edffb6c0 Level-0 table #210: started
|
||||
2025/08/11-22:52:41.244021 7f12edffb6c0 Level-0 table #210: 0 bytes OK
|
||||
2025/08/11-22:52:41.250458 7f12edffb6c0 Delete type=0 #208
|
||||
2025/08/11-22:52:41.264517 7f12edffb6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.264551 7f12edffb6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
2024/08/06-21:52:34.001824 7fbe52a006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.012892 7fbe52a006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.012951 7fbe52a006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.832758 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.832813 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.869708 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869983 7fbe50c006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.870021 7fbe50c006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:19.906242 7f12effff6c0 Recovering log #200
|
||||
2025/08/11-21:34:19.959359 7f12effff6c0 Delete type=3 #198
|
||||
2025/08/11-21:34:19.959494 7f12effff6c0 Delete type=0 #200
|
||||
2025/08/11-22:51:08.074684 7f12edffb6c0 Level-0 table #205: started
|
||||
2025/08/11-22:51:08.078126 7f12edffb6c0 Level-0 table #205: 31504 bytes OK
|
||||
2025/08/11-22:51:08.085271 7f12edffb6c0 Delete type=0 #203
|
||||
2025/08/11-22:51:08.085480 7f12edffb6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.085510 7f12edffb6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at '!items!zEl2NQsnCpELVWzh' @ 338 : 1
|
||||
2025/08/11-22:51:08.085516 7f12edffb6c0 Compacting 1@1 + 1@2 files
|
||||
2025/08/11-22:51:08.088988 7f12edffb6c0 Generated table #206@1: 77 keys, 31504 bytes
|
||||
2025/08/11-22:51:08.089022 7f12edffb6c0 Compacted 1@1 + 1@2 files => 31504 bytes
|
||||
2025/08/11-22:51:08.095088 7f12edffb6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2025/08/11-22:51:08.095209 7f12edffb6c0 Delete type=2 #197
|
||||
2025/08/11-22:51:08.095332 7f12edffb6c0 Delete type=2 #205
|
||||
2025/08/11-22:51:08.115239 7f12edffb6c0 Manual compaction at level-1 from '!items!zEl2NQsnCpELVWzh' @ 338 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/competences/MANIFEST-000207
Normal file
BIN
packs/competences/MANIFEST-000207
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/desavantages/000179.ldb
Normal file
BIN
packs/desavantages/000179.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000147
|
||||
MANIFEST-000204
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.768123 7f47838006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.780266 7f47838006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.780376 7f47838006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.783340 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.783403 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.790567 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790815 7f4782e006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790893 7f4782e006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.324133 7f12effff6c0 Recovering log #202
|
||||
2025/08/11-22:51:18.335594 7f12effff6c0 Delete type=3 #200
|
||||
2025/08/11-22:51:18.336174 7f12effff6c0 Delete type=0 #202
|
||||
2025/08/11-22:52:41.250593 7f12edffb6c0 Level-0 table #207: started
|
||||
2025/08/11-22:52:41.250618 7f12edffb6c0 Level-0 table #207: 0 bytes OK
|
||||
2025/08/11-22:52:41.257077 7f12edffb6c0 Delete type=0 #205
|
||||
2025/08/11-22:52:41.264527 7f12edffb6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.264560 7f12edffb6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.031942 7fbe520006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.041612 7fbe520006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.041667 7fbe520006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.768505 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.768526 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.802256 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869963 7fbe50c006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.870013 7fbe50c006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.017484 7f12eeffd6c0 Recovering log #198
|
||||
2025/08/11-21:34:20.093316 7f12eeffd6c0 Delete type=3 #196
|
||||
2025/08/11-21:34:20.093428 7f12eeffd6c0 Delete type=0 #198
|
||||
2025/08/11-22:51:08.068405 7f12edffb6c0 Level-0 table #203: started
|
||||
2025/08/11-22:51:08.068464 7f12edffb6c0 Level-0 table #203: 0 bytes OK
|
||||
2025/08/11-22:51:08.074542 7f12edffb6c0 Delete type=0 #201
|
||||
2025/08/11-22:51:08.085448 7f12edffb6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.085490 7f12edffb6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/desavantages/MANIFEST-000204
Normal file
BIN
packs/desavantages/MANIFEST-000204
Normal file
Binary file not shown.
BIN
packs/magie-sorts/000005.ldb
Normal file
BIN
packs/magie-sorts/000005.ldb
Normal file
Binary file not shown.
1
packs/magie-sorts/CURRENT
Normal file
1
packs/magie-sorts/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000002
|
||||
5
packs/magie-sorts/LOG
Normal file
5
packs/magie-sorts/LOG
Normal file
@@ -0,0 +1,5 @@
|
||||
2025/08/11-22:51:18.389099 7f12eeffd6c0 Delete type=3 #1
|
||||
2025/08/11-22:52:41.270919 7f12edffb6c0 Level-0 table #5: started
|
||||
2025/08/11-22:52:41.274955 7f12edffb6c0 Level-0 table #5: 72907 bytes OK
|
||||
2025/08/11-22:52:41.281286 7f12edffb6c0 Delete type=0 #3
|
||||
2025/08/11-22:52:41.294945 7f12edffb6c0 Manual compaction at level-0 from '!folders!NE8l8XLXdVUw0aZm' @ 72057594037927935 : 1 .. '!items!zjQQhJpujpdbG4zl' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/magie-sorts/MANIFEST-000002
Normal file
BIN
packs/magie-sorts/MANIFEST-000002
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/pouvoirs/000180.ldb
Normal file
BIN
packs/pouvoirs/000180.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000148
|
||||
MANIFEST-000205
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.846774 7f47838006c0 Recovering log #146
|
||||
2024/08/11-14:35:37.859344 7f47838006c0 Delete type=3 #144
|
||||
2024/08/11-14:35:37.859473 7f47838006c0 Delete type=0 #146
|
||||
2024/08/11-14:39:33.804398 7f4782e006c0 Level-0 table #151: started
|
||||
2024/08/11-14:39:33.804435 7f4782e006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/08/11-14:39:33.811039 7f4782e006c0 Delete type=0 #149
|
||||
2024/08/11-14:39:33.818208 7f4782e006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818290 7f4782e006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.409703 7f12eeffd6c0 Recovering log #203
|
||||
2025/08/11-22:51:18.420789 7f12eeffd6c0 Delete type=3 #201
|
||||
2025/08/11-22:51:18.420873 7f12eeffd6c0 Delete type=0 #203
|
||||
2025/08/11-22:52:41.288698 7f12edffb6c0 Level-0 table #208: started
|
||||
2025/08/11-22:52:41.288730 7f12edffb6c0 Level-0 table #208: 0 bytes OK
|
||||
2025/08/11-22:52:41.294715 7f12edffb6c0 Delete type=0 #206
|
||||
2025/08/11-22:52:41.294992 7f12edffb6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.295062 7f12edffb6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.099478 7fbe520006c0 Recovering log #142
|
||||
2024/08/06-21:52:34.110385 7fbe520006c0 Delete type=3 #140
|
||||
2024/08/06-21:52:34.110514 7fbe520006c0 Delete type=0 #142
|
||||
2024/08/06-23:00:31.904657 7fbe50c006c0 Level-0 table #147: started
|
||||
2024/08/06-23:00:31.904695 7fbe50c006c0 Level-0 table #147: 0 bytes OK
|
||||
2024/08/06-23:00:31.939251 7fbe50c006c0 Delete type=0 #145
|
||||
2024/08/06-23:00:32.009353 7fbe50c006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009413 7fbe50c006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.258603 7f12effff6c0 Recovering log #199
|
||||
2025/08/11-21:34:20.318194 7f12effff6c0 Delete type=3 #197
|
||||
2025/08/11-21:34:20.318250 7f12effff6c0 Delete type=0 #199
|
||||
2025/08/11-22:51:08.109218 7f12edffb6c0 Level-0 table #204: started
|
||||
2025/08/11-22:51:08.109241 7f12edffb6c0 Level-0 table #204: 0 bytes OK
|
||||
2025/08/11-22:51:08.115092 7f12edffb6c0 Delete type=0 #202
|
||||
2025/08/11-22:51:08.115290 7f12edffb6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.115335 7f12edffb6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/pouvoirs/MANIFEST-000205
Normal file
BIN
packs/pouvoirs/MANIFEST-000205
Normal file
Binary file not shown.
0
packs/profils/000204.log
Normal file
0
packs/profils/000204.log
Normal file
@@ -1 +1 @@
|
||||
MANIFEST-000146
|
||||
MANIFEST-000202
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2024/08/11-14:35:37.883245 7f47856006c0 Recovering log #144
|
||||
2024/08/11-14:35:37.895329 7f47856006c0 Delete type=3 #142
|
||||
2024/08/11-14:35:37.895444 7f47856006c0 Delete type=0 #144
|
||||
2024/08/11-14:39:33.836949 7f4782e006c0 Level-0 table #149: started
|
||||
2024/08/11-14:39:33.837017 7f4782e006c0 Level-0 table #149: 0 bytes OK
|
||||
2024/08/11-14:39:33.844766 7f4782e006c0 Delete type=0 #147
|
||||
2024/08/11-14:39:33.851315 7f4782e006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.440585 7f12ef7fe6c0 Recovering log #200
|
||||
2025/08/11-22:51:18.452074 7f12ef7fe6c0 Delete type=3 #198
|
||||
2025/08/11-22:51:18.452406 7f12ef7fe6c0 Delete type=0 #200
|
||||
2025/08/11-22:52:41.301484 7f12edffb6c0 Level-0 table #205: started
|
||||
2025/08/11-22:52:41.301507 7f12edffb6c0 Level-0 table #205: 0 bytes OK
|
||||
2025/08/11-22:52:41.307731 7f12edffb6c0 Delete type=0 #203
|
||||
2025/08/11-22:52:41.321197 7f12edffb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2024/08/06-21:52:34.132281 7fbe52a006c0 Recovering log #140
|
||||
2024/08/06-21:52:34.142883 7fbe52a006c0 Delete type=3 #138
|
||||
2024/08/06-21:52:34.142989 7fbe52a006c0 Delete type=0 #140
|
||||
2024/08/06-23:00:32.009525 7fbe50c006c0 Level-0 table #145: started
|
||||
2024/08/06-23:00:32.009564 7fbe50c006c0 Level-0 table #145: 0 bytes OK
|
||||
2024/08/06-23:00:32.046125 7fbe50c006c0 Delete type=0 #143
|
||||
2024/08/06-23:00:32.165305 7fbe50c006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.376707 7f12eeffd6c0 Recovering log #196
|
||||
2025/08/11-21:34:20.429317 7f12eeffd6c0 Delete type=3 #194
|
||||
2025/08/11-21:34:20.429419 7f12eeffd6c0 Delete type=0 #196
|
||||
2025/08/11-22:51:08.115446 7f12edffb6c0 Level-0 table #201: started
|
||||
2025/08/11-22:51:08.115492 7f12edffb6c0 Level-0 table #201: 0 bytes OK
|
||||
2025/08/11-22:51:08.121470 7f12edffb6c0 Delete type=0 #199
|
||||
2025/08/11-22:51:08.147831 7f12edffb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/profils/MANIFEST-000202
Normal file
BIN
packs/profils/MANIFEST-000202
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/scenes/000148.ldb
Normal file
BIN
packs/scenes/000148.ldb
Normal file
Binary file not shown.
0
packs/scenes/000175.log
Normal file
0
packs/scenes/000175.log
Normal file
@@ -1 +1 @@
|
||||
MANIFEST-000116
|
||||
MANIFEST-000173
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/11-14:35:37.899642 7f47842006c0 Recovering log #114
|
||||
2024/08/11-14:35:37.910975 7f47842006c0 Delete type=3 #112
|
||||
2024/08/11-14:35:37.911099 7f47842006c0 Delete type=0 #114
|
||||
2024/08/11-14:39:33.844932 7f4782e006c0 Level-0 table #119: started
|
||||
2024/08/11-14:39:33.844982 7f4782e006c0 Level-0 table #119: 0 bytes OK
|
||||
2024/08/11-14:39:33.851094 7f4782e006c0 Delete type=0 #117
|
||||
2024/08/11-14:39:33.851332 7f4782e006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.863651 7f4782e006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:18.458421 7f12eeffd6c0 Recovering log #171
|
||||
2025/08/11-22:51:18.469978 7f12eeffd6c0 Delete type=3 #169
|
||||
2025/08/11-22:51:18.470069 7f12eeffd6c0 Delete type=0 #171
|
||||
2025/08/11-22:52:41.314747 7f12edffb6c0 Level-0 table #176: started
|
||||
2025/08/11-22:52:41.314796 7f12edffb6c0 Level-0 table #176: 0 bytes OK
|
||||
2025/08/11-22:52:41.320976 7f12edffb6c0 Delete type=0 #174
|
||||
2025/08/11-22:52:41.321230 7f12edffb6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:52:41.321269 7f12edffb6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/08/06-21:52:34.146274 7fbe516006c0 Recovering log #110
|
||||
2024/08/06-21:52:34.157668 7fbe516006c0 Delete type=3 #108
|
||||
2024/08/06-21:52:34.157768 7fbe516006c0 Delete type=0 #110
|
||||
2024/08/06-23:00:32.098671 7fbe50c006c0 Level-0 table #115: started
|
||||
2024/08/06-23:00:32.098750 7fbe50c006c0 Level-0 table #115: 0 bytes OK
|
||||
2024/08/06-23:00:32.127456 7fbe50c006c0 Delete type=0 #113
|
||||
2024/08/06-23:00:32.165357 7fbe50c006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.212632 7fbe50c006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-21:34:20.432403 7f12effff6c0 Recovering log #167
|
||||
2025/08/11-21:34:20.484938 7f12effff6c0 Delete type=3 #165
|
||||
2025/08/11-21:34:20.484995 7f12effff6c0 Delete type=0 #167
|
||||
2025/08/11-22:51:08.140001 7f12edffb6c0 Level-0 table #172: started
|
||||
2025/08/11-22:51:08.140028 7f12edffb6c0 Level-0 table #172: 0 bytes OK
|
||||
2025/08/11-22:51:08.147678 7f12edffb6c0 Delete type=0 #170
|
||||
2025/08/11-22:51:08.147861 7f12edffb6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2025/08/11-22:51:08.157987 7f12edffb6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/scenes/MANIFEST-000173
Normal file
BIN
packs/scenes/MANIFEST-000173
Normal file
Binary file not shown.
19
srcdata/normalize.py
Normal file
19
srcdata/normalize.py
Normal 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)
|
||||
287
srcdata/sort_druidisme.json
Normal file
287
srcdata/sort_druidisme.json
Normal file
@@ -0,0 +1,287 @@
|
||||
[
|
||||
{
|
||||
"name": "Rituels de purification",
|
||||
"description": "Les rituels de purification consistent à laver une souillure le plus souvent physique et/ou spirituelle, quand le mauvais œil (ou une malédiction) a été placé sur un lieu ou un objet : sang et tripes de cochon versés dans un puits, chouette aux yeux crevés clouée à une porte, crucifix figé dans un chêne, poupée de paille percée d’aiguilles, etc. Outre le nettoyage des éléments physiques, le rituel consiste à recourir aux plantes purgatives et aux fumigations naturelles appropriées, associées à une récitation de formules consacrées à la Grande Mère. Note : un individu changé en animal contre son gré à l’aide d’une amulette druidique ou d’une potion de faëomancie est considéré comme « maudit » et peut être purifié à l’aide de ce rituel pour retrouver sa forme d’origine. Le SD du rituel sera égal au SD du niveau de maîtrise du sort qui a servi à la métamorphose, ou bien fixé par le Docte.",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "pres",
|
||||
"duree": "",
|
||||
"portee": "",
|
||||
"concentration": "",
|
||||
"critique": "",
|
||||
"ingredients": "Plantes purgatives et aux fumigations naturelles appropriées",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Philtre de veille",
|
||||
"description": "Faire macérer des poignées de ronces et d’orties dans de l’eau salée du lever jusqu’au coucher de soleil. Pour chaque poignée macérée est produite une dose de philtre. Égoutter les ronces et les orties, les calciner et réduire le charbon ainsi obtenu en une fine poudre. Incorporer celle-ci au liquide issu de la macération ; faire chauffer jusqu’à ébullition. Réciter les paroles propitiatoires. Ce philtre doit être bu à la nuit tombée. Son utilisateur ne ressent pas les effets de la fatigue pendant la nuit et le jour qui suit, et il ne subit pas les désagréments du manque de sommeil (battements de cœur, troubles de la perception, somnolence…). En revanche, il s’effondrera de sommeil au prochain coucher de soleil.",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "prec",
|
||||
"duree": "Jusqu’au prochain coucher de soleil",
|
||||
"portee": "",
|
||||
"concentration": "Macération (du lever au coucher de soleil) + préparation",
|
||||
"critique": "Le philtre dure une journée de plus",
|
||||
"ingredients": "Ronces et orties",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Philtre de sommeil",
|
||||
"description": "Faire bouillir les fleurs de belladone et de passiflore ensemble. Ajouter à la décoction une pointe de miel pour le goût. Renforce le pouvoir soporifique et apaisant des plantes par les paroles rituelles. Le goût sucré rend ce philtre facile à dissimuler dans une pâtisserie ou dans un fruit qui en serait imbibé pendant une nuit. Celui qui absorbe ce philtre commencera à s’assoupir une minute après, et dormira sur ses deux oreilles dans les trois minutes qui suivent.",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "prec",
|
||||
"duree": "6 heures, sauf si le dormeur est réveillé de manière active par autrui",
|
||||
"portee": "",
|
||||
"concentration": "Préparation",
|
||||
"critique": "La durée est doublée",
|
||||
"ingredients": "Belladone, passiflore et miel",
|
||||
"resistance": "Physique contre le résultat du sort (ou SD 14) pour ne pas s’assoupir",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Philtre d’amour",
|
||||
"description": "Faire macérer les pétales d’une rose dans de l’eau. Piler les racines d’une mandragore et les incorporer à la macération. Intégrer au mélange trois larmes en prononçant le poème rituel, puis filtrer le tout. Boire ce philtre rend surnaturellement attirant : il fait bénéficier d’un bonus de + 2 à toute tentative de séduction. Ce bonus est cumulable avec d’autres de même nature (par exemple issus d’avantages ou d’atouts féériques).",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "prec",
|
||||
"duree": "Jusqu’à ce que l’utilisateur se lave",
|
||||
"portee": "",
|
||||
"concentration": "Préparation",
|
||||
"critique": "L’utilisateur bénéficie non plus d’un bonus de + 2, mais d’un bonus de + 3 à toutes ses tentatives de séduction",
|
||||
"ingredients": "Mandragore et rose",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Philtre de descendance féérique",
|
||||
"description": "Réduire les fleurs d’acacia et clous de girofle en poudre, mélanger aux larmes et réciter les paroles sacrées au moment d’une pleine lune. Quelques gouttes de ce philtre bues par une femme ou une fée avant de faire l’amour garantiront que, si elle conçoit un enfant avec un Faux-Semblant, celui-ci sera également un Faux-Semblant (de l’espèce du père ou de la mère). Un philtre équivalent élaboré avec des larmes humaines garantit que l’enfant éventuel sera humain.",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "prec",
|
||||
"duree": "2 heures",
|
||||
"portee": "",
|
||||
"concentration": "Préparation",
|
||||
"critique": "Le philtre accroît considérablement les chances de fécondation",
|
||||
"ingredients": "Fleurs d’acacia, clous de girofle, larmes de pixie ou d’humain",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Philtre de bienveillance végétale",
|
||||
"description": "Écraser les feuilles de lierre et en retirer le jus. Mélanger celui-ci à du jus de sureau. Le mélange doit être exposé pendant une nuit à la lueur de la pleine lune, au cours de laquelle le druide répétera le poème consacré. La préparation ainsi obtenue rendra la présence de la personne qui la boit très agréable à la végétation environnante. Celle-ci s’écartera sur son passage, même s’il s’agit de ronciers inextricables, et se refermera derrière elle comme si personne n’était passé, facilitant les trajets à travers les broussailles, sous-bois ou jungles comme si elle marchait sur un chemin pédestre. Si un test de Survie est requis, un bonus reflétant cette collaboration des plantes sera fixé par le Docte.",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "prec",
|
||||
"duree": "6 heures",
|
||||
"portee": "",
|
||||
"concentration": "Exposition pendant une nuit + préparation",
|
||||
"critique": "La durée est doublée",
|
||||
"ingredients": "Feuilles de lierre, baies de sureau",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Philtre tord-boyaux",
|
||||
"description": "Envelopper les baies de houx dans les feuilles d’hortensia, écraser le tout et en extraire le jus. Diluer le liquide dans sept gouttes de rosée et réciter les paroles consacrées afin que le philtre soit presque indétectable et que son goût normalement très amer devienne douceâtre. Descriptif du poison : Voies d’administration : ingestion. Toxicité : 5 Virulence : 15 Signature : 15. L’avantage de ce philtre est qu’il passera beaucoup plus facilement pour une simple intoxication alimentaire qu’un empoisonnement à l’arsenic. Complexité : n. a. Temps de fabrication : une heure avant l’aube Effets : le philtre tord-boyaux est un liquide translucide au goût douceâtre. Ce goût subtil est aisément dissimulé dans un plat à la saveur prononcée. La substance a l’insigne avantage de ne pas perdre ses effets lors d’une éventuelle cuisson. Ingéré, le poison commence à faire effet au cours de la digestion (deux heures). Il cause des maux de ventre, des vomissements et des diarrhées si aigus que celui qui l’ingère se tordra de douleur pendant 4 heures. En cas d’échec à un test de Ressort (Endurer) + CON SD 15 pour Résister à la Virulence du poison, la victime perdra Toxicité + ME points de vie en plus de subir un malus de - 5 à toutes ses actions. En cas de réussite, ce malus est réduit à - 2. Note : voir le supplément Drogues délicieuses et effroyables poisons pour plus de détails sur le fonctionnement des poisons, et sur la terminologie propre à ces derniers qui est employée ici pour ce philtre. Notez que deux des poisons qui sont décrits dans cet opuscule, « Humeur de basilic » et « Sang de manticore », sont aussi des poisons fabriqués par les druides la plupart du temps.",
|
||||
"niveau": 1,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "prec",
|
||||
"duree": "4 heures (effets)",
|
||||
"portee": "",
|
||||
"concentration": "Une heure avant l’aube (fabrication)",
|
||||
"critique": "La Signature est augmentée de 2",
|
||||
"ingredients": "Baies de houx et feuilles d’hortensia",
|
||||
"resistance": "Physique (ressort + con)",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Le rituel des Portes d’Avalon",
|
||||
"description": "Voilà bien longtemps déjà que, pour les profanes, les chemins d’Avalon se sont perdus dans les brumes de l’oubli. Désormais, seuls les druides sont en mesure de s’y rendre grâce au rituel des portes d’Avalon. Ce rituel est un secret bien gardé parmi les druides, car nombreux sont les ennemis de la Grande Mère et des fées qui aimeraient trouver le chemin de la contrée féérique pour en voler les ressources ou pire, la pervertir voire la détruire. Pour se rendre en Avalon, le druide doit trouver un portail, c’est-à-dire deux chênes aux ramures inextricablement entrelacées. Il peut également, grâce à ses pouvoirs, le fabriquer. Puis il doit réciter le poème rituel tout en avalant un gland issu d’un chêne avalonien. Lorsque sa litanie prend fin, le brouillard se lève et entoure les chênes dont on n’aperçoit plus que les troncs. En regardant attentivement, on peut discerner une fine pellicule d’eau ruisseler des ramures qui finissent par disparaître. Le passage est ouvert. Les invités du druide peuvent passer, mais attention ! Le passage se referme dès lors que le druide est passé, à moins que ce dernier ne le maintienne ouvert à dessein, ce qui est normalement interdit. Note : ce rituel est enseigné à tous les Saronides et ne requiert pas l’habituelle dépense de 5 points d’XP accompagnant l’apprentissage d’un nouveau sort.",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "pres",
|
||||
"duree": "",
|
||||
"portee": "Au portail",
|
||||
"concentration": "Réciter le poème rituel",
|
||||
"critique": "",
|
||||
"ingredients": "Gland issu d’un chêne avalonien",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Rituel de malédiction",
|
||||
"description": "Les druides sont censés déjouer les malédictions, purifier les lieux souillés ou les victimes du mauvais œil. Cependant, à partir du deuxième cercle, ils sont capables eux-mêmes de maudire un objet, une personne ou un lieu. Un rituel de malédiction fonctionne à rebours d’un rituel de purification. Le druide trouve un objet ou une substance comme support de sa malédiction et récite des paroles rituelles désignant la cible, le plus souvent à minuit, à la faveur de la lune. L’effet de ce type de malédiction mineure est ouvert aux fantaisies du Docte (ou des joueurs) : pustules sur la langue, chute de cheveux (s’accompagnant d’un malus de -1 en Prestance), maladresse chronique (malus de -1 en Précision ou Agilité), etc. Si vous songez à une malédiction majeure aux effets bien plus redoutables, augmentez le SD et exigez un rituel collectif. Dans tous les cas, une malédiction majeure sera très mal vue au sein de la communauté druidique et le responsable risque l’exclusion. Note : le fonctionnement de ce rituel est enseigné à tous les Saronides et ne requiert pas l’habituelle dépense de 5 points d’XP accompagnant l’apprentissage d’un nouveau sort.",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "pres",
|
||||
"duree": "",
|
||||
"portee": "",
|
||||
"concentration": "Récite des paroles rituelles",
|
||||
"critique": "",
|
||||
"ingredients": "Objet ou une substance comme support",
|
||||
"resistance": "Psychique ou physique (la plus élevée de la cible)",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Semence de lierre rouge",
|
||||
"description": "Enduire la graine de lierre avec du crottin d’hippogriffe et attendre trois jours. Après cela, une pousse sortira de la graine et il faudra chanter une strophe d’épopée en celte transformant la graine germée en arme. Lorsque celle-ci touchera le sol à proximité d’un ennemi de celui qui l’a lancée, des lianes de lierre rouge enchevêtreront ses pieds jusqu’aux genoux et conféreront un malus de -1 aux actions de la cible impliquant un mouvement. Ensuite, à chaque tour, le lierre montera davantage et deviendra plus vigoureux et difficile à trancher. La victime pourra se battre, mais non bouger ses jambes et souffrira donc d’un malus de -1 supplémentaire pour toute attaque de Mêlée, parade ou bien esquive. Le malus maximum est -5, quand la cible est presque immobilisée par un lierre rouge qui lui enserre tout le corps jusqu’à la tête. Il faudra trancher ou brûler le lierre en causant 10 points de dégâts grâce à une arme tranchante ou un jet de flamme avec un SD de 13 (un échec critique signifiera que le coup a touché la cible). Sans arme tranchante ou flamme, le lierre rouge continuera à pousser et se renforcer, mais finira par se flétrir au bout de 15 minutes.",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "",
|
||||
"duree": "15 minutes (si non coupée/brûlée)",
|
||||
"portee": "À proximité",
|
||||
"concentration": "Préparation sur trois jours + chant",
|
||||
"critique": "Les points de vie du lierre sont doublés pour déterminer combien de coups d’armes tranchantes sont nécessaires afin de le couper",
|
||||
"ingredients": "Une graine de lierre avalonien et du crottin d’hippogriffe",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Semence de ronce curatrice",
|
||||
"description": "Cracher sur la ronce et l’enduire de pollen d’églantine avalonien. L’enterrer en récitant le poème consacré et attendre trois jours. Le troisième jour, alors que l’aube étend son voile de rosée sur le monde, déterrer la ronce qui émet une très légère aura verte et pulsatile. Une fois que la ronce a été bénie, le druide doit l’appliquer sur la blessure qu’il veut guérir. Ses épines s’enfoncent douloureusement dans la peau du blessé afin de la refermer, tels des points de suture. Le blessé regagne instantanément 1d8 points de vie car la ronce sert de cicatrisant. Lorsque la cicatrisation naturelle du blessé est terminée, la ronce sèche et tombe d’elle-même. Cette semence permet de cicatriser, mais aussi d’ôter les corps étrangers (comme les balles) : la ronce s’introduit jusqu’au matériau, l’enserre et le repousse, non sans causer une douleur extrême si aucun anesthésiant n’est utilisé (test de Ressort + CON SD 14 pour ne pas s’évanouir pendant ME minutes).",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "",
|
||||
"duree": "Jusqu’à cicatrisation naturelle",
|
||||
"portee": "Contact",
|
||||
"concentration": "Préparation sur trois jours + poème",
|
||||
"critique": "La semence rend directement 8 points de vie au lieu d’1d8",
|
||||
"ingredients": "Ronce du pays d’hiver et pollen d’églantine avalonienne",
|
||||
"resistance": "Ressort (con)",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Semence de force",
|
||||
"description": "Faire bouillir une poignée de fleurs de trèfle rouge pendant une journée, puis faire macérer la feuille de chêne avalonien dans le liquide obtenu. Faire sécher la feuille de chêne avalonien au soleil jusqu’à ce que des petits piquants poussent sur cette dernière. Après bénédiction du druide, l’utilisateur doit poser la feuille de chêne enchantée sur son plexus solaire et appuyer jusqu’à ce que les petits piquants lui rentrent dans la peau. La feuille s’intègre alors temporairement au corps de l’utilisateur. Elle lui confère un bonus temporaire de + 2 en Force. Ce bonus est cumulable avec celui de la Capacité naturelle Force accrue (mais aucune créature naturelle ne peut avoir plus de 10 en Force). Au prochain lever de soleil, la feuille de chêne tombe d’elle-même, jaunie et racornie.",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "",
|
||||
"duree": "Jusqu’au prochain lever de soleil",
|
||||
"portee": "Contact",
|
||||
"concentration": "Préparation d'une journée + séchage + bénédiction",
|
||||
"critique": "Bonus de + 3 au lieu de + 2",
|
||||
"ingredients": "Feuille de chêne avalonien et fleurs de trèfle rouge",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Semence de chêne",
|
||||
"description": "Écraser les baies du gui avalonien et recouvrir le gland de la substance obtenue. Exposer le gland sur un lit de gui avalonien au soleil pendant sept jours, puis réciter le poème consacré et cracher sur le gland. Après bénédiction, lorsque la semence de chêne touche la terre, c’est-à-dire le berceau de la Grande Mère, elle se met à pousser à une vitesse fulgurante. En cinq tours, la plante a atteint sa pleine maturité. Elle suit, ensuite, son cycle naturel. Note : dans l’intention d’utiliser la semence de chêne pour le rituel des Portes d’Avalon, il suffit d’en planter deux à trois mètres de distance l’une de l’autre et d’attendre sept jours.",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "",
|
||||
"duree": "Suit son cycle naturel après 5 tours de croissance",
|
||||
"portee": "",
|
||||
"concentration": "Préparation sur sept jours + poème",
|
||||
"critique": "Le chêne généré grâce à cette semence est sage, et prodiguera des conseils avisés à ceux qui peuvent communiquer avec lui. C’est un miracle de la Grande Mère qui deviendra objet de soin des druides et des fées proches de la nature",
|
||||
"ingredients": "Gland et gui avalonien",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Semence de haricot magique",
|
||||
"description": "Le druide doit cueillir lui-même des haricots, les écosser et en faire sécher les semences pendant deux jours. Ensuite, il lui faut demander à une licorne qu’elle crache dessus, et réciter les paroles rituelles. Au contact de la terre, comme dans le conte, le haricot poussera à une vitesse prodigieuse et atteindra une hauteur de 12 mètres. Il est possible de grimper aux branches comme à une échelle ou bien de se placer au-dessus de la graine pour être hissé au moment de la croissance. Le haricot supporte un poids de 500 kg. Pour atteindre sa pleine hauteur, 3 minutes sont requises. Le Pouvoir Main verte du sylve sur un haricot magique divisera par 3 le temps de croissance, multipliera par 3 sa capacité de charge ainsi que la hauteur atteinte, jusqu’à 36 mètres (46 mètres avec une réussite critique). Note : la durée de vie de cette plante géante est limitée. Au bout de 6 heures, elle se flétrira puis pourrira.",
|
||||
"niveau": 2,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "",
|
||||
"duree": "6 heures",
|
||||
"portee": "",
|
||||
"concentration": "Préparation sur deux jours + salive de licorne + poème",
|
||||
"critique": "La hauteur du haricot est augmentée de 10 mètres",
|
||||
"ingredients": "Haricot avalonien du pays d’été et salive de licorne",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Amulette de métamorphose en aigle",
|
||||
"description": "Le druide doit préparer une pâte en mélangeant l’argile et l’eau de rosée. Lorsque la pâte atteint la bonne consistance, il doit la modeler en forme d’aigle et y planter la plume d’aigle en prononçant les paroles rituelles. Pour utiliser son amulette, le druide doit la briser sur sa cible en récitant à nouveau les paroles rituelles. Il transforme alors sa cible en aigle. Il peut, bien entendu, être la cible de son propre sort. Certains druides punissent leurs ennemis en les transformant pour longtemps, ou à jamais, en animaux. Cette amulette est déclinable en toutes sortes d’animaux et de plantes, et les druides les plus cruels n’hésitent pas à transformer leur cible en crapaud… Cependant, notez que le druide doit apprendre un nouveau sort pour chaque animal en lequel il peut se changer ou transformer autrui. En effet, ces amulettes reposent sur la connaissance des noms secrets des choses et des êtres qui nécessitent un apprentissage complexe. Note : il existe des amulettes similaires permettant d’octroyer temporairement le Pouvoir de Communication animale ou végétale à la cible pendant une semaine. Elles constituent un sort différent et requièrent un apprentissage dédié (et donc la dépense d’XP afférente).",
|
||||
"niveau": 3,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "prec",
|
||||
"carac2": "",
|
||||
"duree": "Une semaine, ou jusqu’à ce que le druide désire faire cesser la métamorphose",
|
||||
"portee": "Contact",
|
||||
"concentration": "Préparation",
|
||||
"critique": "Celui qui est métamorphosé en aigle peut parler aux animaux, quels qu’ils soient",
|
||||
"ingredients": "Plume d’aigle, eau de rosée avalonienne, argile avalonien",
|
||||
"resistance": "Physique pour une cible récalcitrante au pouvoir de l’amulette",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Amulette de cercle de protection",
|
||||
"description": "L’Ovate doit baigner la large pierre dans de l’eau vive, la sécher et la faire chauffer pendant une journée. À ce moment, il doit appliquer la feuille de chêne sur la pierre de manière qu’elle s’incruste dedans en récitant les paroles rituelles. Pour activer le cercle de protection, le druide doit délimiter de manière continue son aire d’action (fil enterré, frise dans la pierre, canalisation d’eau…), qui a pour rayon maximal la valeur de Prestance du druide x 100 m. Puis il enterre son amulette au centre du cercle en répétant les paroles rituelles. Dès lors, le cercle de protection est actif, ce qui signifie que nul ne peut y entrer sans y avoir été invité à voix haute par le druide. Les contrevenants sont bloqués par une force invisible. Forcer le passage est possible en réussissant un test de Ressort + FOR ou Fortitude + ESP contre un SD égal au score du test du druide. En cas d’échec, le contrevenant s’évanouira si sa Résistance psychique est inférieure au SD du sort, sinon, il souffrira d’une migraine causant un malus de - 2.",
|
||||
"niveau": 3,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "prec",
|
||||
"carac2": "",
|
||||
"duree": "Tant que le cercle est brisé ou que l’amulette est déterrée",
|
||||
"portee": "Valeur de Prestance du druide x 100 m (rayon)",
|
||||
"concentration": "Préparation d'une journée + délimitation",
|
||||
"critique": "Le cercle ne peut être brisé que si l’amulette est déterrée",
|
||||
"ingredients": "Large pierre, feuille de chêne avalonien",
|
||||
"resistance": "Ressort (for / fort / esp)",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Amulette d’orage",
|
||||
"description": "Le druide doit tailler la branche de frêne avalonien en une baguette de la taille de son avant-bras, et l’immerger pendant une semaine dans l’eau de pluie d’Avalon. Lorsqu’il la sort de l’eau, il doit y graver une rune secrète et prononcer les paroles rituelles. Pour utiliser son amulette, le druide doit voir le ciel et psalmodier les paroles rituelles en le contemplant. Puis, sur la dernière syllabe, il brise la baguette. À partir de ce moment, les nuées commencent à converger et le ciel s’obscurcit ; au bout de dix minutes, la pluie se met à tomber. Dix minutes plus tard, l’orage est là. Le druide peut manipuler l’orage, le déplacer, faire varier l’intensité de ses pluies et, surtout, manier la foudre. Pour ce faire, il doit réussir un test de Druidisme + PER SD 15. En cas de réussite, il foudroie sa cible qui subit [MR + 6] points de dégâts. Il peut manier la foudre une fois par tour (une Action), mais cela lui coûte 3 points d’Âme à chaque fois (et un point temporaire d’Esprit quand sa réserve d’Âme est épuisée). Note : il existe d’autres amulettes pour contrôler le temps qu’il fait (invoquer le soleil ou la pluie, etc.). Ce sont des sorts différents, requérant un apprentissage à part entière, mais qui fonctionnent de manière équivalente. Par exemple, une amulette de blizzard fera venir une tempête de neige et le druide pourra diriger de violentes bourrasques à la place de la foudre, ne causant pas de dégâts mais faisant tomber les cibles. Cependant, la température extérieure ne doit pas excéder 10 degrés pour que cette amulette fonctionne.",
|
||||
"niveau": 3,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "prec",
|
||||
"carac2": "",
|
||||
"duree": "Jusqu’à ce que le druide s’endorme ou perde conscience",
|
||||
"portee": "",
|
||||
"concentration": "Préparation d'une semaine + activation",
|
||||
"critique": "L’orage se déclenche en une minute",
|
||||
"ingredients": "Branche de frêne avalonien et eau de pluie avalonienne",
|
||||
"resistance": "",
|
||||
"coutactivation": "3 points d’Âme (et 1 point temporaire d’Esprit si jauge d’Âme épuisée) par utilisation de la foudre"
|
||||
},
|
||||
{
|
||||
"name": "Amulette de renaissance du Bras",
|
||||
"description": "L’Ovate doit enrouler la patte d’ours dans les feuilles de marronnier avalonien en prononçant les paroles rituelles. Puis il fait sécher le tout au soleil (la patte ne pourrit pas car elle est déjà enchantée). Pour utiliser son amulette, le druide doit humecter la patte d’ours avec le sang du manchot. Puis il la jette dans un grand feu en répétant les paroles rituelles tout au long de la combustion. La cible sent alors son bras repousser au fur et à mesure que la patte d’ours se consume. Lorsqu’elle est complètement consumée, la cible a complètement récupéré son bras et l’usage de celui-ci. Le druide peut être la cible de son propre sort.",
|
||||
"niveau": 3,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "prec",
|
||||
"carac2": "",
|
||||
"duree": "Définitive",
|
||||
"portee": "Contact",
|
||||
"concentration": "Préparation + séchage + combustion",
|
||||
"critique": "Le bras nouvellement acquis est irrigué par les forces de la Grande Mère. Il bénéficie d’un bonus perpétuel de + 1 en Force (dans la limite du rang 10). Ce bonus est invisible : la cible n’a pas un bras plus gros que l’autre",
|
||||
"ingredients": "Feuilles de marronnier avalonien et patte d’ours décédé de mort naturelle",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
},
|
||||
{
|
||||
"name": "Rituel de réenchantement",
|
||||
"description": "Un Ovate aidé d’au moins trois confrères est capable de restaurer la Féérie d’un Faux-Semblant qui aurait été victime du Grand Rituel d’exorcisme (voir p. 67) (l’équivalent d’une malédiction majeure pour sa victime). Le druide peut, en récitant les paroles rituelles pendant trois heures et surtout, au moyen d’une quantité invraisemblable de poudre d’aile de pixie, réenchanter la victime de l’exorcisme et lui restituer un rang de Féérie. La victime devra ensuite séjourner un an en Avalon pour redévelopper sa Féérie et pouvoir à nouveau se démasquer. Elle sera de la même espèce et conservera la même apparence qu’avant, mais devra réapprendre progressivement à utiliser ses Pouvoirs. Note : ce sort difficile, et rarement pratiqué, est connu des Ovates sans qu’ils aient besoin de dépenser d’XP pour l’apprendre. Il fait partie de leur initiation druidique.",
|
||||
"niveau": 3,
|
||||
"competence": "Druidisme",
|
||||
"carac1": "esp",
|
||||
"carac2": "",
|
||||
"duree": "Permanente (restauration), un an (redéveloppement de Féérie)",
|
||||
"portee": "",
|
||||
"concentration": "Trois heures de récitation",
|
||||
"critique": "",
|
||||
"ingredients": "Poudre d’aile de pixie",
|
||||
"resistance": "",
|
||||
"coutactivation": ""
|
||||
}
|
||||
]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user