Compare commits
17 Commits
v12
..
05ca6e1763
| Author | SHA1 | Date | |
|---|---|---|---|
| 05ca6e1763 | |||
| d3f014fcca | |||
| 679b3208cd | |||
| 871a18a0ee | |||
| 264c49eb06 | |||
| 9349c54966 | |||
| 274efac2b5 | |||
| 7a7398f8ca | |||
| 93600f7e13 | |||
| a6fa3afbee | |||
| 1051349dd0 | |||
| a245b0e87c | |||
| c9ce3367ed | |||
| e95e068112 | |||
| 6dd63a2c54 | |||
| 650e4b7449 | |||
| 3f27482ad9 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -7,7 +7,7 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
|||||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class HawkmoonActorSheet extends ActorSheet {
|
export class HawkmoonActorSheet extends foundry.appv1.sheets.ActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
@@ -25,7 +25,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = foundry.utils.duplicate(this.object)
|
const objectData = foundry.utils.duplicate(this.object)
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
@@ -47,7 +47,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
mutations: foundry.utils.duplicate(this.actor.getMutations() || []),
|
mutations: foundry.utils.duplicate(this.actor.getMutations() || []),
|
||||||
talentsCell: this.getCelluleTalents(),
|
talentsCell: this.getCelluleTalents(),
|
||||||
profils: foundry.utils.duplicate(this.actor.getProfils() || []),
|
profils: foundry.utils.duplicate(this.actor.getProfils() || []),
|
||||||
combat: this.actor.getCombatValues(),
|
combat: this.actor.getCombatValues(),
|
||||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||||
artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
|
artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
|
||||||
richesse: this.actor.computeRichesse(),
|
richesse: this.actor.computeRichesse(),
|
||||||
@@ -56,8 +56,8 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
nbCombativite: this.actor.system.sante.nbcombativite,
|
nbCombativite: this.actor.system.sante.nbcombativite,
|
||||||
combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
|
combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
|
||||||
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
||||||
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||||
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
@@ -91,14 +91,14 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
// Everything below here is only needed if the sheet is editable
|
// Everything below here is only needed if the sheet is editable
|
||||||
if (!this.options.editable) return;
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
// Update Inventory Item
|
// Update Inventory Item
|
||||||
html.find('.item-edit').click(ev => {
|
html.find('.item-edit').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item")
|
const li = $(ev.currentTarget).parents(".item")
|
||||||
let itemId = li.data("item-id")
|
let itemId = li.data("item-id")
|
||||||
const item = this.actor.items.get( itemId )
|
const item = this.actor.items.get( itemId )
|
||||||
item.sheet.render(true)
|
item.sheet.render(true)
|
||||||
})
|
})
|
||||||
// Delete Inventory Item
|
// Delete Inventory Item
|
||||||
html.find('.item-delete').click(ev => {
|
html.find('.item-delete').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item");
|
const li = $(ev.currentTarget).parents(".item");
|
||||||
@@ -120,7 +120,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
let value = Number($(event.currentTarget).data("adversite-value"))
|
let value = Number($(event.currentTarget).data("adversite-value"))
|
||||||
this.actor.incDecAdversite(adv, value)
|
this.actor.incDecAdversite(adv, value)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.quantity-modify').click(event => {
|
html.find('.quantity-modify').click(event => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
const value = Number($(event.currentTarget).data("quantite-value"))
|
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||||
@@ -130,7 +130,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
html.find('.roll-initiative').click((event) => {
|
html.find('.roll-initiative').click((event) => {
|
||||||
this.actor.rollAttribut("adr", true)
|
this.actor.rollAttribut("adr", true)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.roll-attribut').click((event) => {
|
html.find('.roll-attribut').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let attrKey = li.data("attr-key")
|
let attrKey = li.data("attr-key")
|
||||||
@@ -147,7 +147,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
let armeId = li.data("item-id")
|
let armeId = li.data("item-id")
|
||||||
this.actor.rollArmeOffensif(armeId)
|
this.actor.rollArmeOffensif(armeId)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.roll-assommer').click((event) => {
|
html.find('.roll-assommer').click((event) => {
|
||||||
this.actor.rollAssommer()
|
this.actor.rollAssommer()
|
||||||
})
|
})
|
||||||
@@ -163,30 +163,30 @@ export class HawkmoonActorSheet extends ActorSheet {
|
|||||||
html.find('.roll-desengager').click((event) => {
|
html.find('.roll-desengager').click((event) => {
|
||||||
this.actor.rollDesengager()
|
this.actor.rollDesengager()
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.roll-arme-degats').click((event) => {
|
html.find('.roll-arme-degats').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let armeId = li.data("item-id")
|
let armeId = li.data("item-id")
|
||||||
this.actor.rollArmeDegats(armeId)
|
this.actor.rollArmeDegats(armeId)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.item-add').click((event) => {
|
html.find('.item-add').click((event) => {
|
||||||
const itemType = $(event.currentTarget).data("type")
|
const itemType = $(event.currentTarget).data("type")
|
||||||
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.lock-unlock-sheet').click((event) => {
|
html.find('.lock-unlock-sheet').click((event) => {
|
||||||
this.options.editScore = !this.options.editScore;
|
this.options.editScore = !this.options.editScore;
|
||||||
this.render(true);
|
this.render(true);
|
||||||
});
|
});
|
||||||
html.find('.item-equip').click(ev => {
|
html.find('.item-equip').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item");
|
const li = $(ev.currentTarget).parents(".item");
|
||||||
this.actor.equipItem( li.data("item-id") );
|
this.actor.equipItem( li.data("item-id") );
|
||||||
this.render(true);
|
this.render(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
setPosition(options = {}) {
|
setPosition(options = {}) {
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ export class HawkmoonActor extends Actor {
|
|||||||
/**
|
/**
|
||||||
* Override the create() function to provide additional SoS functionality.
|
* Override the create() function to provide additional SoS functionality.
|
||||||
*
|
*
|
||||||
* This overrided create() function adds initial items
|
* This overrided create() function adds initial items
|
||||||
* Namely: Basic skills, money,
|
* Namely: Basic skills, money,
|
||||||
*
|
*
|
||||||
* @param {Object} data Barebones actor data which this function adds onto.
|
* @param {Object} data Barebones actor data which this function adds onto.
|
||||||
* @param {Object} options (Unused) Additional options which customize the creation workflow.
|
* @param {Object} options (Unused) Additional options which customize the creation workflow.
|
||||||
@@ -424,7 +424,7 @@ export class HawkmoonActor extends Actor {
|
|||||||
if (sante.etat == this.system.sante.nbcombativite) {
|
if (sante.etat == this.system.sante.nbcombativite) {
|
||||||
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
|
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
|
||||||
}
|
}
|
||||||
this.processCombativite(sante)
|
// Duplicated ! this.processCombativite(sante)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
|||||||
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 1, "equipement": 1, "protection": 1, "artefact": 1, "arme": 1, "monnaie": 1 }
|
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 1, "equipement": 1, "protection": 1, "artefact": 1, "arme": 1, "monnaie": 1 }
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class HawkmoonCelluleSheet extends ActorSheet {
|
export class HawkmoonCelluleSheet extends foundry.appv1.sheets.ActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
@@ -95,7 +95,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
|||||||
let actorId = li.data("actor-id")
|
let actorId = li.data("actor-id")
|
||||||
this.actor.removeMember(actorId)
|
this.actor.removeMember(actorId)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Update Inventory Item
|
// Update Inventory Item
|
||||||
html.find('.item-edit').click(ev => {
|
html.find('.item-edit').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item")
|
const li = $(ev.currentTarget).parents(".item")
|
||||||
@@ -136,7 +136,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _onDropActor(event, dragData) {
|
async _onDropActor(event, dragData) {
|
||||||
const actor = fromUuidSync(dragData.uuid)
|
const actor = fromUuidSync(dragData.uuid)
|
||||||
if (actor) {
|
if (actor) {
|
||||||
this.actor.addMember(actor.id)
|
this.actor.addMember(actor.id)
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.warn("Cet acteur n'a pas été trouvé.")
|
ui.notifications.warn("Cet acteur n'a pas été trouvé.")
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class HawkmoonTokenHud {
|
|||||||
|
|
||||||
const hudData = { actor: actor }
|
const hudData = { actor: actor }
|
||||||
|
|
||||||
const controlIconActions = html.find('.control-icon[data-action=combat]');
|
const controlIconActions = $(html).find('.control-icon[data-action=combat]');
|
||||||
// initiative
|
// initiative
|
||||||
await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
|
await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
|
||||||
(event) => {
|
(event) => {
|
||||||
@@ -34,7 +34,7 @@ export class HawkmoonTokenHud {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async addTokenHudExtensions(app, html, tokenId) {
|
static async addTokenHudExtensions(app, html, tokenId) {
|
||||||
const controlIconCombat = html.find('.control-icon[data-action=combat]')
|
const controlIconCombat = $(html).find('.control-icon[data-action=combat]')
|
||||||
if (controlIconCombat.length>0 ) {
|
if (controlIconCombat.length>0 ) {
|
||||||
HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
|
HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
|
||||||
}
|
}
|
||||||
@@ -42,11 +42,11 @@ export class HawkmoonTokenHud {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
|
static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
|
||||||
const hud = $(await renderTemplate(template, hudData))
|
const hud = $(await foundry.applications.handlebars.renderTemplate(template, hudData))
|
||||||
const list = hud.find('div.hawkmoon-hud-list')
|
const list = hud.find('div.hawkmoon-hud-list')
|
||||||
|
|
||||||
HawkmoonTokenHud._toggleHudListActive(hud, list);
|
HawkmoonTokenHud._toggleHudListActive(hud, list);
|
||||||
|
|
||||||
hud.find('img.hawkmoon-hud-togglebutton').click(event => HawkmoonTokenHud._toggleHudListActive(hud, list));
|
hud.find('img.hawkmoon-hud-togglebutton').click(event => HawkmoonTokenHud._toggleHudListActive(hud, list));
|
||||||
list.find('.hawkmoon-hud-adversite').click(onMenuItem);
|
list.find('.hawkmoon-hud-adversite').click(onMenuItem);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
|||||||
* Extend the basic ItemSheet with some very simple modifications
|
* Extend the basic ItemSheet with some very simple modifications
|
||||||
* @extends {ItemSheet}
|
* @extends {ItemSheet}
|
||||||
*/
|
*/
|
||||||
export class HawkmoonItemSheet extends ItemSheet {
|
export class HawkmoonItemSheet extends foundry.appv1.sheets.ItemSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
@@ -145,7 +145,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
|||||||
pred[index].description = ev.currentTarget.value
|
pred[index].description = ev.currentTarget.value
|
||||||
pred[index].id = pred[index].id || randomID(16)
|
pred[index].id = pred[index].id || randomID(16)
|
||||||
this.object.update( { 'system.predilections': pred })
|
this.object.update( { 'system.predilections': pred })
|
||||||
})
|
})
|
||||||
html.find('.predilection-acquise').change(ev => {
|
html.find('.predilection-acquise').change(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||||
let index = li.data("prediction-index")
|
let index = li.data("prediction-index")
|
||||||
@@ -153,7 +153,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
|||||||
pred[index].acquise = ev.currentTarget.checked
|
pred[index].acquise = ev.currentTarget.checked
|
||||||
pred[index].id = pred[index].id || randomID(16)
|
pred[index].id = pred[index].id || randomID(16)
|
||||||
this.object.update( { 'system.predilections': pred })
|
this.object.update( { 'system.predilections': pred })
|
||||||
})
|
})
|
||||||
html.find('.predilection-maitrise').change(ev => {
|
html.find('.predilection-maitrise').change(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||||
let index = li.data("prediction-index")
|
let index = li.data("prediction-index")
|
||||||
@@ -161,7 +161,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
|||||||
pred[index].maitrise = ev.currentTarget.checked
|
pred[index].maitrise = ev.currentTarget.checked
|
||||||
pred[index].id = pred[index].id || randomID(16)
|
pred[index].id = pred[index].id || randomID(16)
|
||||||
this.object.update( { 'system.predilections': pred })
|
this.object.update( { 'system.predilections': pred })
|
||||||
})
|
})
|
||||||
html.find('.predilection-used').change(ev => {
|
html.find('.predilection-used').change(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||||
let index = li.data("prediction-index")
|
let index = li.data("prediction-index")
|
||||||
@@ -169,11 +169,11 @@ export class HawkmoonItemSheet extends ItemSheet {
|
|||||||
pred[index].used = ev.currentTarget.checked
|
pred[index].used = ev.currentTarget.checked
|
||||||
pred[index].id = pred[index].id || randomID(16)
|
pred[index].id = pred[index].id || randomID(16)
|
||||||
this.object.update( { 'system.predilections': pred })
|
this.object.update( { 'system.predilections': pred })
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('#add-predilection').click(ev => {
|
html.find('#add-predilection').click(ev => {
|
||||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||||
pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
|
pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
|
||||||
this.object.update( { 'system.predilections': pred })
|
this.object.update( { 'system.predilections': pred })
|
||||||
})
|
})
|
||||||
html.find('.delete-prediction').click(ev => {
|
html.find('.delete-prediction').click(ev => {
|
||||||
@@ -186,7 +186,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
html.find('#add-automation').click(ev => {
|
html.find('#add-automation').click(ev => {
|
||||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||||
autom.push( { eventtype: "on-drop", name: "Automatisation 1", bonusname: "vigueur", bonus: 0, competence: "", minLevel: 0, baCost: 0, id: randomID(16) })
|
autom.push( { eventtype: "on-drop", name: "Automatisation 1", bonusname: "vigueur", bonus: 0, competence: "", minLevel: 0, baCost: 0, id: randomID(16) })
|
||||||
this.object.update( { 'system.automations': autom })
|
this.object.update( { 'system.automations': autom })
|
||||||
})
|
})
|
||||||
html.find('.delete-automation').click(ev => {
|
html.find('.delete-automation').click(ev => {
|
||||||
@@ -203,8 +203,8 @@ export class HawkmoonItemSheet extends ItemSheet {
|
|||||||
auto[index][field] = ev.currentTarget.value
|
auto[index][field] = ev.currentTarget.value
|
||||||
auto[index].id = auto[index].id || randomID(16)
|
auto[index].id = auto[index].id || randomID(16)
|
||||||
this.object.update( { 'system.automations': auto })
|
this.object.update( { 'system.automations': auto })
|
||||||
})
|
})
|
||||||
|
|
||||||
// Update Inventory Item
|
// Update Inventory Item
|
||||||
html.find('.item-delete').click(ev => {
|
html.find('.item-delete').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item");
|
const li = $(ev.currentTarget).parents(".item");
|
||||||
|
|||||||
+10
-11
@@ -33,7 +33,7 @@ Hooks.once("init", async function () {
|
|||||||
HawkmoonUtility.preloadHandlebarsTemplates()
|
HawkmoonUtility.preloadHandlebarsTemplates()
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Set an initiative formula for the system
|
// Set an initiative formula for the system
|
||||||
CONFIG.Combat.initiative = {
|
CONFIG.Combat.initiative = {
|
||||||
formula: "1d10",
|
formula: "1d10",
|
||||||
decimals: 1
|
decimals: 1
|
||||||
@@ -56,14 +56,14 @@ Hooks.once("init", async function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Register sheet application classes
|
// Regster sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
|
||||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
|
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
|
||||||
Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
|
||||||
|
|
||||||
HawkmoonUtility.init()
|
HawkmoonUtility.init()
|
||||||
HawkmoonAutomation.init()
|
HawkmoonAutomation.init()
|
||||||
@@ -92,7 +92,7 @@ async function importDefaultScene() {
|
|||||||
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
||||||
if (newDocuments) {
|
if (newDocuments) {
|
||||||
await game.scenes.documentClass.create(newDocuments);
|
await game.scenes.documentClass.create(newDocuments);
|
||||||
game.scenes.find(i => i.name == "Accueil").activate();
|
game.scenes.find(i => i.name == "Accueil").activate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,7 @@ Hooks.once("ready", function () {
|
|||||||
}).catch(err=>
|
}).catch(err=>
|
||||||
console.log("No stats available, giving up.")
|
console.log("No stats available, giving up.")
|
||||||
)
|
)
|
||||||
|
|
||||||
importDefaultScene()
|
importDefaultScene()
|
||||||
welcomeMessage()
|
welcomeMessage()
|
||||||
|
|
||||||
@@ -138,4 +138,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
|||||||
export class HawkmoonRollDialog extends Dialog {
|
export class HawkmoonRollDialog extends Dialog {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData ) {
|
static async create(actor, rollData) {
|
||||||
|
|
||||||
let options = { classes: ["HawkmoonDialog"], width: 320, height: 'fit-content', 'z-index': 99999 };
|
let options = { classes: ["HawkmoonDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
|
||||||
let html = await renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
|
let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
|
||||||
|
|
||||||
return new HawkmoonRollDialog(actor, rollData, html, options );
|
return new HawkmoonRollDialog(actor, rollData, html, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -16,22 +16,23 @@ export class HawkmoonRollDialog extends Dialog {
|
|||||||
let conf = {
|
let conf = {
|
||||||
title: "Test de Capacité",
|
title: "Test de Capacité",
|
||||||
content: html,
|
content: html,
|
||||||
buttons: {
|
buttons: {
|
||||||
rolld10: {
|
rolld10: {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
icon: '<i class="fas fa-check"></i>',
|
||||||
label: "Lancer 1d10",
|
label: "Lancer 1d10",
|
||||||
callback: () => { this.roll("d10") }
|
callback: () => { this.roll("d10") }
|
||||||
},
|
},
|
||||||
rolld20: {
|
rolld20: {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
icon: '<i class="fas fa-check"></i>',
|
||||||
label: "Lancer 1d20",
|
label: "Lancer 1d20",
|
||||||
callback: () => { this.roll("d20") }
|
callback: () => { this.roll("d20") }
|
||||||
},
|
},
|
||||||
cancel: {
|
cancel: {
|
||||||
icon: '<i class="fas fa-times"></i>',
|
icon: '<i class="fas fa-times"></i>',
|
||||||
label: "Annuler",
|
label: "Annuler",
|
||||||
callback: () => { this.close() }
|
callback: () => { this.close() }
|
||||||
} },
|
}
|
||||||
|
},
|
||||||
close: close
|
close: close
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,9 +43,9 @@ export class HawkmoonRollDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
roll ( dice) {
|
roll(dice) {
|
||||||
this.rollData.mainDice = dice
|
this.rollData.mainDice = dice
|
||||||
HawkmoonUtility.rollHawkmoon( this.rollData )
|
HawkmoonUtility.rollHawkmoon(this.rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -56,87 +57,87 @@ export class HawkmoonRollDialog extends Dialog {
|
|||||||
function onLoad() {
|
function onLoad() {
|
||||||
}
|
}
|
||||||
$(function () { onLoad(); });
|
$(function () { onLoad(); });
|
||||||
|
|
||||||
html.find('#modificateur').change(async (event) => {
|
html.find('#modificateur').change(async (event) => {
|
||||||
this.rollData.modificateur = Number(event.currentTarget.value)
|
this.rollData.modificateur = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#difficulte').change( (event) => {
|
html.find('#difficulte').change((event) => {
|
||||||
console.log("Difficulte: " + event.currentTarget.value)
|
console.log("Difficulte: " + event.currentTarget.value)
|
||||||
this.rollData.difficulte = Number(event.currentTarget.value)
|
this.rollData.difficulte = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#attrKey').change(async (event) => {
|
html.find('#attrKey').change(async (event) => {
|
||||||
this.rollData.attrKey = String(event.currentTarget.value)
|
this.rollData.attrKey = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#attrKey2').change(async (event) => {
|
html.find('#attrKey2').change(async (event) => {
|
||||||
this.rollData.attrKey2 = String(event.currentTarget.value)
|
this.rollData.attrKey2 = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#select-maitrise').change(async (event) => {
|
html.find('#select-maitrise').change(async (event) => {
|
||||||
this.rollData.maitriseId = String(event.currentTarget.value)
|
this.rollData.maitriseId = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#competence-talents').change((event) => {
|
html.find('#competence-talents').change((event) => {
|
||||||
this.rollData.selectedTalents = $('#competence-talents').val()
|
this.rollData.selectedTalents = $('#competence-talents').val()
|
||||||
})
|
})
|
||||||
html.find('#taille-cible').change((event) => {
|
html.find('#taille-cible').change((event) => {
|
||||||
this.rollData.tailleCible = String(event.currentTarget.value)
|
this.rollData.tailleCible = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#tireur-deplacement').change((event) => {
|
html.find('#tireur-deplacement').change((event) => {
|
||||||
this.rollData.tireurDeplacement = String(event.currentTarget.value)
|
this.rollData.tireurDeplacement = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#cible-couvert').change((event) => {
|
html.find('#cible-couvert').change((event) => {
|
||||||
this.rollData.cibleCouvert = String(event.currentTarget.value)
|
this.rollData.cibleCouvert = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#distance-tir').change((event) => {
|
html.find('#distance-tir').change((event) => {
|
||||||
this.rollData.distanceTir = String(event.currentTarget.value)
|
this.rollData.distanceTir = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#bonus-malus-context').change((event) => {
|
html.find('#bonus-malus-context').change((event) => {
|
||||||
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#defenseur-au-sol').change((event) => {
|
html.find('#defenseur-au-sol').change((event) => {
|
||||||
this.rollData.defenseurAuSol = event.currentTarget.checked
|
this.rollData.defenseurAuSol = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#ambidextre-1').change((event) => {
|
html.find('#ambidextre-1').change((event) => {
|
||||||
this.rollData.ambidextre1 = event.currentTarget.checked
|
this.rollData.ambidextre1 = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#ambidextre-2').change((event) => {
|
html.find('#ambidextre-2').change((event) => {
|
||||||
this.rollData.ambidextre2 = event.currentTarget.checked
|
this.rollData.ambidextre2 = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#attaque-monte').change((event) => {
|
html.find('#attaque-monte').change((event) => {
|
||||||
this.rollData.attqueMonte = event.currentTarget.checked
|
this.rollData.attqueMonte = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#defenseur-aveugle').change((event) => {
|
html.find('#defenseur-aveugle').change((event) => {
|
||||||
this.rollData.defenseurAveugle = event.currentTarget.checked
|
this.rollData.defenseurAveugle = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#defenseur-de-dos').change((event) => {
|
html.find('#defenseur-de-dos').change((event) => {
|
||||||
this.rollData.defenseurDeDos = event.currentTarget.checked
|
this.rollData.defenseurDeDos = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#defenseur-restreint').change((event) => {
|
html.find('#defenseur-restreint').change((event) => {
|
||||||
this.rollData.defenseurRestreint = event.currentTarget.checked
|
this.rollData.defenseurRestreint = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#defenseur-immobilise').change((event) => {
|
html.find('#defenseur-immobilise').change((event) => {
|
||||||
this.rollData.defenseurImmobilise = event.currentTarget.checked
|
this.rollData.defenseurImmobilise = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#attaque-charge').change((event) => {
|
html.find('#attaque-charge').change((event) => {
|
||||||
this.rollData.attaqueCharge = event.currentTarget.checked
|
this.rollData.attaqueCharge = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#charge-cavalerie').change((event) => {
|
html.find('#charge-cavalerie').change((event) => {
|
||||||
this.rollData.chargeCavalerie = event.currentTarget.checked
|
this.rollData.chargeCavalerie = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#attaquants-multiple').change((event) => {
|
html.find('#attaquants-multiple').change((event) => {
|
||||||
this.rollData.attaquantsMultiples = event.currentTarget.checked
|
this.rollData.attaquantsMultiples = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#soutiens').change((event) => {
|
html.find('#soutiens').change((event) => {
|
||||||
this.rollData.soutiens = Number(event.currentTarget.value)
|
this.rollData.soutiens = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#feinte').change((event) => {
|
html.find('#feinte').change((event) => {
|
||||||
this.rollData.feinte = event.currentTarget.checked
|
this.rollData.feinte = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#contenir').change((event) => {
|
html.find('#contenir').change((event) => {
|
||||||
this.rollData.contenir = event.currentTarget.checked
|
this.rollData.contenir = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#attaque-desarme').change((event) => {
|
html.find('#attaque-desarme').change((event) => {
|
||||||
this.rollData.attaqueDesarme = event.currentTarget.checked
|
this.rollData.attaqueDesarme = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+90
-59
@@ -3,10 +3,10 @@ import { HawkmoonCombat } from "./hawkmoon-combat.js";
|
|||||||
import { HawkmoonCommands } from "./hawkmoon-commands.js";
|
import { HawkmoonCommands } from "./hawkmoon-commands.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14}
|
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14 }
|
||||||
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5}
|
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5 }
|
||||||
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10}
|
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10 }
|
||||||
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10}
|
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10 }
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class HawkmoonUtility {
|
export class HawkmoonUtility {
|
||||||
@@ -15,8 +15,7 @@ export class HawkmoonUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async init() {
|
static async init() {
|
||||||
Hooks.on('renderChatLog', (log, html, data) => HawkmoonUtility.chatListeners(html))
|
Hooks.on('renderChatLog', (log, html, data) => HawkmoonUtility.chatListeners(html))
|
||||||
Hooks.on("getChatLogEntryContext", (html, options) => HawkmoonUtility.chatRollMenu(html, options))
|
Hooks.on("getChatMessageContextOptions", (html, options) => HawkmoonUtility.chatRollMenu(html, options))
|
||||||
|
|
||||||
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
||||||
HawkmoonUtility.pushInitiativeOptions(html, options);
|
HawkmoonUtility.pushInitiativeOptions(html, options);
|
||||||
})
|
})
|
||||||
@@ -105,15 +104,33 @@ export class HawkmoonUtility {
|
|||||||
return this.skills
|
return this.skills
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static updatePauseLogo(html) {
|
||||||
|
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
|
||||||
|
console.log("Hawkmoon | Updating pause logo to:", logoPause)
|
||||||
|
|
||||||
|
// Supprimer l'ancien style s'il existe
|
||||||
|
let oldStyle = document.getElementById('hawkmoon-pause-logo-override')
|
||||||
|
if (oldStyle) {
|
||||||
|
oldStyle.remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Injecter une règle CSS pour override le logo
|
||||||
|
let styleSheet = document.createElement('style')
|
||||||
|
styleSheet.id = 'hawkmoon-pause-logo-override'
|
||||||
|
styleSheet.textContent = `#pause>img { content: url(${logoPause}) !important; }`
|
||||||
|
document.head.appendChild(styleSheet)
|
||||||
|
|
||||||
|
console.log("Hawkmoon | Logo CSS rule injected")
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async ready() {
|
static async ready() {
|
||||||
const skills = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.skills")
|
const skills = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.skills")
|
||||||
this.skills = skills.map(i => i.toObject())
|
this.skills = skills.map(i => i.toObject())
|
||||||
|
|
||||||
// Setup pause logo
|
// Setup pause logo
|
||||||
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
|
this.updatePauseLogo()
|
||||||
let logoImg = document.querySelector('#pause').children[0]
|
|
||||||
logoImg.setAttribute('style', `content: url(${logoPause})`)
|
|
||||||
|
|
||||||
game.system.hawkmoon.config.listeNiveauSkill = this.createDirectOptionList(0, 10)
|
game.system.hawkmoon.config.listeNiveauSkill = this.createDirectOptionList(0, 10)
|
||||||
game.system.hawkmoon.config.listeNiveauCreature = this.createDirectOptionList(0, 35)
|
game.system.hawkmoon.config.listeNiveauCreature = this.createDirectOptionList(0, 35)
|
||||||
@@ -131,7 +148,7 @@ export class HawkmoonUtility {
|
|||||||
static createArrayOptionList(min, max) {
|
static createArrayOptionList(min, max) {
|
||||||
let options = [];
|
let options = [];
|
||||||
for (let i = min; i <= max; i++) {
|
for (let i = min; i <= max; i++) {
|
||||||
options.push({key:`${i}`, label:`${i}`});
|
options.push({ key: `${i}`, label: `${i}` });
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
@@ -155,7 +172,7 @@ export class HawkmoonUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async chatListeners(html) {
|
static async chatListeners(html) {
|
||||||
|
|
||||||
html.on("click", '.predilection-reroll', async event => {
|
$(html).on("click", '.predilection-reroll', async event => {
|
||||||
let predIdx = $(event.currentTarget).data("predilection-index")
|
let predIdx = $(event.currentTarget).data("predilection-index")
|
||||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
@@ -166,14 +183,14 @@ export class HawkmoonUtility {
|
|||||||
HawkmoonUtility.rollHawkmoon(rollData)
|
HawkmoonUtility.rollHawkmoon(rollData)
|
||||||
})
|
})
|
||||||
|
|
||||||
html.on("click", '.roll-chat-degat', async event => {
|
$(html).on("click", '.roll-chat-degat', async event => {
|
||||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||||
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
||||||
})
|
})
|
||||||
html.on("click", '.roll-chat-degat-devastateur', async event => {
|
$(html).on("click", '.roll-chat-degat-devastateur', async event => {
|
||||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
@@ -181,7 +198,7 @@ export class HawkmoonUtility {
|
|||||||
rollData.applyCoupDevastateur = true
|
rollData.applyCoupDevastateur = true
|
||||||
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -196,7 +213,7 @@ export class HawkmoonUtility {
|
|||||||
'systems/fvtt-hawkmoon-cyd/templates/partial-automation.html',
|
'systems/fvtt-hawkmoon-cyd/templates/partial-automation.html',
|
||||||
'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html',
|
'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html',
|
||||||
]
|
]
|
||||||
return loadTemplates(templatePaths);
|
return foundry.applications.handlebars.loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -279,9 +296,13 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onSocketMesssage(msg) {
|
static onSocketMesssage(msg) {
|
||||||
if (msg.name == "msg_apply_combativite") {
|
if (msg.msg == "msg_apply_combativite") {
|
||||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
let defender = game.canvas.tokens.get(msg.data.defenderTokenId)?.actor
|
||||||
defender.changeEtatCombativite(msg.data.value)
|
if (defender) {
|
||||||
|
defender.changeEtatCombativite(msg.data.value)
|
||||||
|
} else {
|
||||||
|
console.warn("HawkmoonUtility.onSocketMesssage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,17 +376,22 @@ export class HawkmoonUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("Result : ", rollData)
|
//console.log("Result : ", rollData
|
||||||
|
this.computeResultQuality(rollData)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeResultQuality(rollData) {
|
||||||
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
||||||
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
||||||
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
||||||
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyCombativite(rollData, value) {
|
static applyCombativite(rollData, value) {
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||||
defender.changeEtatCombativite(value)
|
defender.changeEtatCombativite(value)
|
||||||
} else {
|
} else {
|
||||||
@@ -399,7 +425,7 @@ export class HawkmoonUtility {
|
|||||||
rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections || [])
|
rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections || [])
|
||||||
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
||||||
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}`
|
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}`
|
||||||
|
|
||||||
if (rollData.selectedTalents && rollData.selectedTalents.length > 0) {
|
if (rollData.selectedTalents && rollData.selectedTalents.length > 0) {
|
||||||
for (let id of rollData.selectedTalents) {
|
for (let id of rollData.selectedTalents) {
|
||||||
let talent = rollData.talents.find(t => t._id == id)
|
let talent = rollData.talents.find(t => t._id == id)
|
||||||
@@ -423,7 +449,7 @@ export class HawkmoonUtility {
|
|||||||
} else {
|
} else {
|
||||||
rollData.diceFormula += `+${rollData.attr.value}*${rollData.multiplier}+${rollData.modificateur}+${rollData.bonusMalusContext}`
|
rollData.diceFormula += `+${rollData.attr.value}*${rollData.multiplier}+${rollData.modificateur}+${rollData.bonusMalusContext}`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bonus arme naturelle en défense
|
// Bonus arme naturelle en défense
|
||||||
if (rollData.bonusArmeNaturelle) {
|
if (rollData.bonusArmeNaturelle) {
|
||||||
rollData.diceFormula += `+${rollData.bonusArmeNaturelle}`
|
rollData.diceFormula += `+${rollData.bonusArmeNaturelle}`
|
||||||
@@ -432,9 +458,9 @@ export class HawkmoonUtility {
|
|||||||
rollData.diceFormula += `+3`
|
rollData.diceFormula += `+3`
|
||||||
}
|
}
|
||||||
if (rollData.hasAmbidextre) {
|
if (rollData.hasAmbidextre) {
|
||||||
if ( rollData.ambidextre1) {
|
if (rollData.ambidextre1) {
|
||||||
rollData.diceFormula += `-3`
|
rollData.diceFormula += `-3`
|
||||||
} else if ( rollData.ambidextre2) {
|
} else if (rollData.ambidextre2) {
|
||||||
rollData.diceFormula += `-6`
|
rollData.diceFormula += `-6`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -454,7 +480,7 @@ export class HawkmoonUtility {
|
|||||||
rollData.diceFormula += `+5`
|
rollData.diceFormula += `+5`
|
||||||
}
|
}
|
||||||
if (rollData.soutiens > 0) { // 1 soutien = +3, 2 soutiens = +4, 3 soutiens = +5
|
if (rollData.soutiens > 0) { // 1 soutien = +3, 2 soutiens = +4, 3 soutiens = +5
|
||||||
rollData.diceFormula += `+${rollData.soutiens+2}`
|
rollData.diceFormula += `+${rollData.soutiens + 2}`
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rollData.arme?.system.isDistance) {
|
if (rollData.arme?.system.isDistance) {
|
||||||
@@ -469,16 +495,16 @@ export class HawkmoonUtility {
|
|||||||
if (rollData.attaqueDesarme) {
|
if (rollData.attaqueDesarme) {
|
||||||
rollData.difficulte += 10
|
rollData.difficulte += 10
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ajout adversités
|
// Ajout adversités
|
||||||
rollData.diceFormula += `-${rollData.nbAdversites}`
|
rollData.diceFormula += `-${rollData.nbAdversites}`
|
||||||
|
|
||||||
if (rollData.arme && rollData.arme.type == "arme") {
|
if (rollData.arme && rollData.arme.type == "arme") {
|
||||||
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gestion de la feinte éventuelle
|
// Gestion de la feinte éventuelle
|
||||||
rollData.nbCombativitePerdu = 1
|
rollData.nbCombativitePerdu = 1
|
||||||
|
|
||||||
let myRoll = await new Roll(rollData.diceFormula).roll()
|
let myRoll = await new Roll(rollData.diceFormula).roll()
|
||||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
@@ -492,18 +518,18 @@ export class HawkmoonUtility {
|
|||||||
}
|
}
|
||||||
if (rollData.feinte) {
|
if (rollData.feinte) {
|
||||||
actor.changeBonneAventure(-1)
|
actor.changeBonneAventure(-1)
|
||||||
if ( rollData.isHeroique) {
|
if (rollData.isHeroique) {
|
||||||
rollData.nbCombativitePerdu = "vaincu"
|
rollData.nbCombativitePerdu = "vaincu"
|
||||||
} else if ( rollData.isSuccess) {
|
} else if (rollData.isSuccess) {
|
||||||
rollData.nbCombativitePerdu = 2
|
rollData.nbCombativitePerdu = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.createChatWithRollMode(rollData.alias, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
||||||
}, rollData)
|
}, rollData)
|
||||||
|
|
||||||
if ( (rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
|
if ((rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
|
||||||
this.applyCombativite(rollData, rollData.nbCombativitePerdu)
|
this.applyCombativite(rollData, rollData.nbCombativitePerdu)
|
||||||
}
|
}
|
||||||
if (rollData.coupBas && rollData.isSuccess && rollData.defenderTokenId) {
|
if (rollData.coupBas && rollData.isSuccess && rollData.defenderTokenId) {
|
||||||
@@ -514,30 +540,35 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getCombativiteList(nbActivite) {
|
static getCombativiteList(nbActivite) {
|
||||||
let list = [ { value: String(0), label: "Combatif"}]
|
let list = [{ value: String(0), label: "Combatif" }]
|
||||||
for (let i = 1; i < nbActivite-2; i++) {
|
for (let i = 1; i < nbActivite - 2; i++) {
|
||||||
list.push({ value: String(i), label:"Eprouvé " + i} )
|
list.push({ value: String(i), label: "Eprouvé " + i })
|
||||||
}
|
}
|
||||||
list[nbActivite-2] = { value: String(nbActivite-2), label:"Affaibli"}
|
list[nbActivite - 2] = { value: String(nbActivite - 2), label: "Affaibli" }
|
||||||
list[nbActivite-1] = { value: String(nbActivite-1), label:"Très Affaibli"}
|
list[nbActivite - 1] = { value: String(nbActivite - 1), label: "Très Affaibli" }
|
||||||
list[nbActivite] = { value: String(nbActivite), label:"Vaincu"}
|
list[nbActivite] = { value: String(nbActivite), label: "Vaincu" }
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async bonusRollHawkmoon(rollData) {
|
static async bonusRollHawkmoon(rollData) {
|
||||||
rollData.bonusFormula = rollData.addedBonus
|
rollData.bonusFormula = rollData.addedBonus
|
||||||
|
console.log("Bonus Roll Hawkmoon", rollData.bonusFormula)
|
||||||
|
|
||||||
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
if (!Number(rollData.bonusFormula)) {
|
||||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
||||||
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||||
|
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
||||||
|
rollData.finalResult += Number(rollData.bonusRoll.total)
|
||||||
|
} else {
|
||||||
|
rollData.finalResult += Number(rollData.bonusFormula)
|
||||||
|
console.log("Bonus Roll Hawkmoon 2", rollData.finalResult)
|
||||||
|
}
|
||||||
|
|
||||||
rollData.finalResult += rollData.bonusRoll.total
|
this.computeResultQuality(rollData)
|
||||||
|
|
||||||
this.computeResult(rollData)
|
|
||||||
|
|
||||||
this.createChatWithRollMode(rollData.alias, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
|
||||||
}, rollData)
|
}, rollData)
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -647,11 +678,11 @@ export class HawkmoonUtility {
|
|||||||
distanceTir: "porteemoyenne",
|
distanceTir: "porteemoyenne",
|
||||||
attaqueCharge: false,
|
attaqueCharge: false,
|
||||||
attaqueDesarme: false,
|
attaqueDesarme: false,
|
||||||
attaqueAmbidextre1 : false,
|
attaqueAmbidextre1: false,
|
||||||
attaqueAmbidextre2 : false,
|
attaqueAmbidextre2: false,
|
||||||
chargeCavalerie : false,
|
chargeCavalerie: false,
|
||||||
contenir : false,
|
contenir: false,
|
||||||
soutiens : 0
|
soutiens: 0
|
||||||
}
|
}
|
||||||
return rollData
|
return rollData
|
||||||
}
|
}
|
||||||
@@ -672,13 +703,13 @@ export class HawkmoonUtility {
|
|||||||
} else if (rollData.coupBas) {
|
} else if (rollData.coupBas) {
|
||||||
let combatValues = defender.getCombatValues()
|
let combatValues = defender.getCombatValues()
|
||||||
rollData.difficulte = combatValues.defenseTotal
|
rollData.difficulte = combatValues.defenseTotal
|
||||||
}else if ( rollData.assomer) {
|
} else if (rollData.assomer) {
|
||||||
rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
|
rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
|
||||||
} else if (rollData.desengager) {
|
} else if (rollData.desengager) {
|
||||||
rollData.difficulte = rollData.armeAttaqueDefenseur?.system?.totalOffensif || 0;
|
rollData.difficulte = rollData.armeAttaqueDefenseur?.system?.totalOffensif || 0;
|
||||||
} else if (rollData.armeDefense) {
|
} else if (rollData.armeDefense) {
|
||||||
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
||||||
if ( !rollData.desengager && !rollData.arme.system.armenaturelle && !rollData.arme.system.armefortune ){
|
if (!rollData.desengager && !rollData.arme.system.armenaturelle && !rollData.arme.system.armefortune) {
|
||||||
if (rollData.armeDefense.system.armenaturelle || rollData.armeDefense.system.armefortune) {
|
if (rollData.armeDefense.system.armenaturelle || rollData.armeDefense.system.armefortune) {
|
||||||
rollData.bonusArmeNaturelle = 3
|
rollData.bonusArmeNaturelle = 3
|
||||||
}
|
}
|
||||||
@@ -696,7 +727,7 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyBonneAventureRoll(li, changed, addedBonus) {
|
static applyBonneAventureRoll(li, changed, addedBonus) {
|
||||||
let msgId = li.data("message-id")
|
let msgId = $(li).data("message-id")
|
||||||
let msg = game.messages.get(msgId)
|
let msg = game.messages.get(msgId)
|
||||||
if (msg) {
|
if (msg) {
|
||||||
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
||||||
@@ -715,7 +746,7 @@ export class HawkmoonUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static applyEclatRoll(li, changed, addedBonus) {
|
static applyEclatRoll(li, changed, addedBonus) {
|
||||||
let msgId = li.data("message-id")
|
let msgId = $(li).data("message-id")
|
||||||
let msg = game.messages.get(msgId)
|
let msg = game.messages.get(msgId)
|
||||||
if (msg) {
|
if (msg) {
|
||||||
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
||||||
@@ -736,13 +767,13 @@ export class HawkmoonUtility {
|
|||||||
static chatRollMenu(html, options) {
|
static chatRollMenu(html, options) {
|
||||||
let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
|
let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
|
||||||
let canApplyBA = function (li) {
|
let canApplyBA = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get($(li).attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||||
return (!rollData.isReroll && actor.getBonneAventure() > 0)
|
return (!rollData.isReroll && actor.getBonneAventure() > 0)
|
||||||
}
|
}
|
||||||
let canApplyPE = function (li) {
|
let canApplyPE = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get($(li).attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||||
return (!rollData.isReroll && actor.getEclat() > 0)
|
return (!rollData.isReroll && actor.getEclat() > 0)
|
||||||
@@ -768,7 +799,7 @@ export class HawkmoonUtility {
|
|||||||
name: "Relancer le dé (1 point d'Eclat)",
|
name: "Relancer le dé (1 point d'Eclat)",
|
||||||
icon: "<i class='fas fa-user-plus'></i>",
|
icon: "<i class='fas fa-user-plus'></i>",
|
||||||
condition: canApply && canApplyPE,
|
condition: canApply && canApplyPE,
|
||||||
callback: li => HawkmoonUtility.applyEclatRoll(li, -3, "reroll")
|
callback: li => HawkmoonUtility.applyEclatRoll(li, -1, "reroll")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return options
|
return options
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les armes
|
||||||
|
*/
|
||||||
|
export class ArmeDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
|
typearme: new fields.StringField({ initial: "" }),
|
||||||
|
armenaturelle: new fields.BooleanField({ initial: false }),
|
||||||
|
armefortune: new fields.BooleanField({ initial: false }),
|
||||||
|
bonusmaniementoff: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
seuildefense: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
onlevelonly: new fields.BooleanField({ initial: false }),
|
||||||
|
degats: new fields.StringField({ initial: "" }),
|
||||||
|
deuxmains: new fields.BooleanField({ initial: false }),
|
||||||
|
percearmure: new fields.BooleanField({ initial: false }),
|
||||||
|
percearmurevalue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
courte: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
moyenne: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
longue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
tr: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les artefacts
|
||||||
|
*/
|
||||||
|
export class ArtefactDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
|
complexite: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
branche: new fields.StringField({ initial: "" }),
|
||||||
|
branche2: new fields.StringField({ initial: "none" }),
|
||||||
|
dureerealisation: new fields.StringField({ initial: "" }),
|
||||||
|
tempsroute: new fields.StringField({ initial: "" }),
|
||||||
|
effetdejeu: new fields.StringField({ initial: "" }),
|
||||||
|
defautcourant: new fields.StringField({ initial: "" }),
|
||||||
|
autrescarac: new fields.StringField({ initial: "" }),
|
||||||
|
avantagespossibles: new fields.StringField({ initial: "" }),
|
||||||
|
avantages: new fields.StringField({ initial: "" }),
|
||||||
|
competences: new fields.StringField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/**
|
||||||
|
* Template de base pour tous les items
|
||||||
|
*/
|
||||||
|
export class BaseItemModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template pour les équipements de base
|
||||||
|
*/
|
||||||
|
export class BaseEquipItemModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template pour l'automatisation
|
||||||
|
*/
|
||||||
|
export class AutomationItemModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
isautomated: new fields.BooleanField({ initial: false }),
|
||||||
|
automations: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
id: new fields.StringField({ initial: "" }),
|
||||||
|
eventtype: new fields.StringField({ initial: "on-drop" }),
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
bonusname: new fields.StringField({ initial: "vigueur" }),
|
||||||
|
bonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
competence: new fields.StringField({ initial: "" }),
|
||||||
|
minLevel: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
baCost: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
{ initial: [] }
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les cellules
|
||||||
|
*/
|
||||||
|
export class CelluleDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
notoriete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
resistance: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
developpement: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
members: new fields.ArrayField(new fields.StringField(), { initial: [] }),
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les compétences
|
||||||
|
*/
|
||||||
|
export class CompetenceDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
niveau: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
attribut1: new fields.StringField({ initial: "" }),
|
||||||
|
attribut2: new fields.StringField({ initial: "" }),
|
||||||
|
attribut3: new fields.StringField({ initial: "" }),
|
||||||
|
doublebonus: new fields.BooleanField({ initial: false }),
|
||||||
|
predilections: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
id: new fields.StringField({ initial: "" }),
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
description: new fields.StringField({ initial: "" }),
|
||||||
|
acquise: new fields.BooleanField({ initial: false }),
|
||||||
|
maitrise: new fields.BooleanField({ initial: false }),
|
||||||
|
used: new fields.BooleanField({ initial: false })
|
||||||
|
}),
|
||||||
|
{ initial: [] }
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les contacts
|
||||||
|
*/
|
||||||
|
export class ContactDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
contacttype: new fields.StringField({ initial: "" }),
|
||||||
|
niveau: new fields.StringField({ initial: "" }),
|
||||||
|
pointdev: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les créatures
|
||||||
|
*/
|
||||||
|
export class CreatureDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
// Template biodata
|
||||||
|
biodata: new fields.SchemaField({
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
age: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
poids: new fields.StringField({ initial: "" }),
|
||||||
|
taille: new fields.StringField({ initial: "" }),
|
||||||
|
cheveux: new fields.StringField({ initial: "" }),
|
||||||
|
sexe: new fields.StringField({ initial: "" }),
|
||||||
|
yeux: new fields.StringField({ initial: "" }),
|
||||||
|
description: new fields.StringField({ initial: "" }),
|
||||||
|
habitat: new fields.StringField({ initial: "" }),
|
||||||
|
notes: new fields.StringField({ initial: "" }),
|
||||||
|
statut: new fields.StringField({ initial: "" }),
|
||||||
|
gmnotes: new fields.StringField({ initial: "" }),
|
||||||
|
statutresistant: new fields.StringField({ initial: "commun" })
|
||||||
|
}),
|
||||||
|
// Template core
|
||||||
|
subactors: new fields.ArrayField(new fields.StringField(), { initial: [] }),
|
||||||
|
attributs: new fields.SchemaField({
|
||||||
|
adr: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Adresse" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "adresse" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "adr" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pui: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Puissance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "puissance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pui" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
cla: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Clairvoyance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "clairvoyance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "cla" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Présence" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "presence" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
tre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Trempe" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "trempe" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "tre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
bonneaventure: new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
actuelle: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
experience: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
eclat: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
sante: new fields.SchemaField({
|
||||||
|
vigueur: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
etat: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vigueurmodifier: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
nbcombativite: new fields.NumberField({ initial: 5, integer: true })
|
||||||
|
}),
|
||||||
|
adversite: new fields.SchemaField({
|
||||||
|
bleue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rouge: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
noire: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
vitesse: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
combat: new fields.SchemaField({
|
||||||
|
initbonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vitessebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
bonusdegats: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
attaquebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensetotale: new fields.BooleanField({ initial: false }),
|
||||||
|
monte: new fields.BooleanField({ initial: false })
|
||||||
|
}),
|
||||||
|
// Propriétés spécifiques aux créatures
|
||||||
|
ressources: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour l'équipement
|
||||||
|
*/
|
||||||
|
export class EquipementDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les historiques
|
||||||
|
*/
|
||||||
|
export class HistoriqueDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
bonusmalus: new fields.StringField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* Index des DataModels pour Hawkmoon CYD
|
||||||
|
* Ce fichier centralise tous les exports des modèles de données
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Modèles d'items
|
||||||
|
export { TalentDataModel } from './talent.mjs';
|
||||||
|
export { HistoriqueDataModel } from './historique.mjs';
|
||||||
|
export { ProfilDataModel } from './profil.mjs';
|
||||||
|
export { CompetenceDataModel } from './competence.mjs';
|
||||||
|
export { ArmeDataModel } from './arme.mjs';
|
||||||
|
export { ProtectionDataModel } from './protection.mjs';
|
||||||
|
export { MonnaieDataModel } from './monnaie.mjs';
|
||||||
|
export { EquipementDataModel } from './equipement.mjs';
|
||||||
|
export { ArtefactDataModel } from './artefact.mjs';
|
||||||
|
export { RessourceDataModel } from './ressource.mjs';
|
||||||
|
export { ContactDataModel } from './contact.mjs';
|
||||||
|
export { MutationDataModel } from './mutation.mjs';
|
||||||
|
|
||||||
|
// Modèles d'acteurs
|
||||||
|
export { PersonnageDataModel } from './personnage.mjs';
|
||||||
|
export { CelluleDataModel } from './cellule.mjs';
|
||||||
|
export { CreatureDataModel } from './creature.mjs';
|
||||||
|
|
||||||
|
// Templates de base (si nécessaire pour extension)
|
||||||
|
export { BaseItemModel, BaseEquipItemModel, AutomationItemModel } from './base-item.mjs';
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les monnaies
|
||||||
|
*/
|
||||||
|
export class MonnaieDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les mutations
|
||||||
|
*/
|
||||||
|
export class MutationDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
mutationcategorie: new fields.StringField({ initial: "tares_communes" }),
|
||||||
|
hascomplexite: new fields.BooleanField({ initial: false }),
|
||||||
|
complexite: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les personnages
|
||||||
|
*/
|
||||||
|
export class PersonnageDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
// Template biodata
|
||||||
|
biodata: new fields.SchemaField({
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
age: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
poids: new fields.StringField({ initial: "" }),
|
||||||
|
taille: new fields.StringField({ initial: "" }),
|
||||||
|
cheveux: new fields.StringField({ initial: "" }),
|
||||||
|
sexe: new fields.StringField({ initial: "" }),
|
||||||
|
yeux: new fields.StringField({ initial: "" }),
|
||||||
|
description: new fields.StringField({ initial: "" }),
|
||||||
|
habitat: new fields.StringField({ initial: "" }),
|
||||||
|
notes: new fields.StringField({ initial: "" }),
|
||||||
|
statut: new fields.StringField({ initial: "" }),
|
||||||
|
gmnotes: new fields.StringField({ initial: "" }),
|
||||||
|
statutresistant: new fields.StringField({ initial: "commun" })
|
||||||
|
}),
|
||||||
|
// Template core
|
||||||
|
subactors: new fields.ArrayField(new fields.StringField(), { initial: [] }),
|
||||||
|
attributs: new fields.SchemaField({
|
||||||
|
adr: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Adresse" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "adresse" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "adr" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pui: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Puissance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "puissance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pui" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
cla: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Clairvoyance" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "clairvoyance" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "cla" }),
|
||||||
|
value: new fields.NumberField({ initial: 1, integer: true })
|
||||||
|
}),
|
||||||
|
pre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Présence" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "presence" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "pre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
tre: new fields.SchemaField({
|
||||||
|
label: new fields.StringField({ initial: "Trempe" }),
|
||||||
|
labelnorm: new fields.StringField({ initial: "trempe" }),
|
||||||
|
abbrev: new fields.StringField({ initial: "tre" }),
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
bonneaventure: new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
actuelle: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
experience: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
eclat: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
sante: new fields.SchemaField({
|
||||||
|
vigueur: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
etat: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vigueurmodifier: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
nbcombativite: new fields.NumberField({ initial: 5, integer: true })
|
||||||
|
}),
|
||||||
|
adversite: new fields.SchemaField({
|
||||||
|
bleue: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rouge: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
noire: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
vitesse: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
combat: new fields.SchemaField({
|
||||||
|
initbonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
vitessebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
bonusdegats: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
attaquebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensebonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
defensetotale: new fields.BooleanField({ initial: false }),
|
||||||
|
monte: new fields.BooleanField({ initial: false })
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les profils
|
||||||
|
*/
|
||||||
|
export class ProfilDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
exemples: new fields.StringField({ initial: "" }),
|
||||||
|
attribut1: new fields.StringField({ initial: "" }),
|
||||||
|
attribut2: new fields.StringField({ initial: "" }),
|
||||||
|
attribut3: new fields.StringField({ initial: "" }),
|
||||||
|
competences: new fields.StringField({ initial: "" }),
|
||||||
|
talentsinitie: new fields.StringField({ initial: "" }),
|
||||||
|
prerequisaguerri: new fields.StringField({ initial: "" }),
|
||||||
|
talentsaguerri: new fields.StringField({ initial: "" }),
|
||||||
|
prerequismaitre: new fields.StringField({ initial: "" }),
|
||||||
|
talentsmaitre: new fields.StringField({ initial: "" }),
|
||||||
|
celluleinfo: new fields.StringField({ initial: "" }),
|
||||||
|
equipement: new fields.StringField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les protections
|
||||||
|
*/
|
||||||
|
export class ProtectionDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
prixpo: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixca: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
prixsc: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
rarete: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
quantite: new fields.NumberField({ initial: 1, integer: true }),
|
||||||
|
equipped: new fields.BooleanField({ initial: false }),
|
||||||
|
protection: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
adversitepoids: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les ressources
|
||||||
|
*/
|
||||||
|
export class RessourceDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
pointdev: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
description: new fields.HTMLField({ initial: "" })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/**
|
||||||
|
* Data model pour les talents
|
||||||
|
*/
|
||||||
|
export class TalentDataModel extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
return {
|
||||||
|
description: new fields.HTMLField({ initial: "" }),
|
||||||
|
isautomated: new fields.BooleanField({ initial: false }),
|
||||||
|
automations: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
id: new fields.StringField({ initial: "" }),
|
||||||
|
eventtype: new fields.StringField({ initial: "on-drop" }),
|
||||||
|
name: new fields.StringField({ initial: "" }),
|
||||||
|
bonusname: new fields.StringField({ initial: "vigueur" }),
|
||||||
|
bonus: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
competence: new fields.StringField({ initial: "" }),
|
||||||
|
minLevel: new fields.NumberField({ initial: 0, integer: true }),
|
||||||
|
baCost: new fields.NumberField({ initial: 0, integer: true })
|
||||||
|
}),
|
||||||
|
{ initial: [] }
|
||||||
|
),
|
||||||
|
talenttype: new fields.StringField({ initial: "" }),
|
||||||
|
utilisation: new fields.StringField({ initial: "" }),
|
||||||
|
prerequis: new fields.StringField({ initial: "" }),
|
||||||
|
resumebonus: new fields.StringField({ initial: "" }),
|
||||||
|
used: new fields.BooleanField({ initial: false })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000268
|
MANIFEST-000333
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.240513 7f9cf5ffb6c0 Recovering log #266
|
2026/01/05-22:20:56.155164 7f93eb7fe6c0 Recovering log #331
|
||||||
2025/03/28-18:06:54.252115 7f9cf5ffb6c0 Delete type=3 #264
|
2026/01/05-22:20:56.166270 7f93eb7fe6c0 Delete type=3 #329
|
||||||
2025/03/28-18:06:54.252178 7f9cf5ffb6c0 Delete type=0 #266
|
2026/01/05-22:20:56.166327 7f93eb7fe6c0 Delete type=0 #331
|
||||||
2025/03/28-18:09:08.872875 7f9cf4ff96c0 Level-0 table #271: started
|
2026/01/05-22:39:51.165703 7f93e9ffb6c0 Level-0 table #336: started
|
||||||
2025/03/28-18:09:08.872910 7f9cf4ff96c0 Level-0 table #271: 0 bytes OK
|
2026/01/05-22:39:51.165730 7f93e9ffb6c0 Level-0 table #336: 0 bytes OK
|
||||||
2025/03/28-18:09:08.879279 7f9cf4ff96c0 Delete type=0 #269
|
2026/01/05-22:39:51.171765 7f93e9ffb6c0 Delete type=0 #334
|
||||||
2025/03/28-18:09:08.892832 7f9cf4ff96c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.199079 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.903986 7f9cf4ff96c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.199117 7f93e9ffb6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.414284 7f9cf5ffb6c0 Recovering log #261
|
2025/11/21-21:17:11.288531 7f34ccff96c0 Recovering log #327
|
||||||
2025/03/28-14:48:51.424277 7f9cf5ffb6c0 Delete type=3 #259
|
2025/11/21-21:17:11.303357 7f34ccff96c0 Delete type=3 #325
|
||||||
2025/03/28-14:48:51.424333 7f9cf5ffb6c0 Delete type=0 #261
|
2025/11/21-21:17:11.303441 7f34ccff96c0 Delete type=0 #327
|
||||||
2025/03/28-14:56:17.706645 7f9cf4ff96c0 Level-0 table #267: started
|
2025/11/21-21:20:34.182000 7f322ffff6c0 Level-0 table #332: started
|
||||||
2025/03/28-14:56:17.706686 7f9cf4ff96c0 Level-0 table #267: 0 bytes OK
|
2025/11/21-21:20:34.182040 7f322ffff6c0 Level-0 table #332: 0 bytes OK
|
||||||
2025/03/28-14:56:17.715753 7f9cf4ff96c0 Delete type=0 #265
|
2025/11/21-21:20:34.189103 7f322ffff6c0 Delete type=0 #330
|
||||||
2025/03/28-14:56:17.747853 7f9cf4ff96c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.199156 7f322ffff6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.747898 7f9cf4ff96c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.220809 7f322ffff6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.129546 7f9cf57fa6c0 Recovering log #265
|
2026/01/05-22:20:56.048400 7f93eaffd6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.140296 7f9cf57fa6c0 Delete type=3 #263
|
2026/01/05-22:20:56.058614 7f93eaffd6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.140354 7f9cf57fa6c0 Delete type=0 #265
|
2026/01/05-22:20:56.058678 7f93eaffd6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.799681 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.125881 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.799712 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.125907 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.806126 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.131746 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.806364 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137885 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.806424 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137919 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.294919 7f9cf67fc6c0 Recovering log #260
|
2025/11/21-21:17:11.119952 7f34cd7fa6c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.304807 7f9cf67fc6c0 Delete type=3 #258
|
2025/11/21-21:17:11.135840 7f34cd7fa6c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.304864 7f9cf67fc6c0 Delete type=0 #260
|
2025/11/21-21:17:11.135940 7f34cd7fa6c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.643826 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.115063 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.643859 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.115090 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.653389 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.121038 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.664831 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121241 7f322ffff6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.664877 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121271 7f322ffff6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.103361 7f9cf5ffb6c0 Recovering log #265
|
2026/01/05-22:20:56.023009 7f93eb7fe6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.113349 7f9cf5ffb6c0 Delete type=3 #263
|
2026/01/05-22:20:56.032779 7f93eb7fe6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.113428 7f9cf5ffb6c0 Delete type=0 #265
|
2026/01/05-22:20:56.032853 7f93eb7fe6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.786685 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.087705 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.786722 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.087797 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.793132 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.094096 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.806327 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112531 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.806394 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112576 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.264974 7f9cf5ffb6c0 Recovering log #260
|
2025/11/21-21:17:11.082663 7f34ccff96c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.275685 7f9cf5ffb6c0 Delete type=3 #258
|
2025/11/21-21:17:11.097415 7f34ccff96c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.275752 7f9cf5ffb6c0 Delete type=0 #260
|
2025/11/21-21:17:11.097522 7f34ccff96c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.599288 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.082672 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.599333 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.082698 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.609691 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.088631 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.621022 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094927 7f322ffff6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.621095 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094971 7f322ffff6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.075285 7f9cf57fa6c0 Recovering log #265
|
2026/01/05-22:20:55.998572 7f93ea7fc6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.086230 7f9cf57fa6c0 Delete type=3 #263
|
2026/01/05-22:20:56.008503 7f93ea7fc6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.086300 7f9cf57fa6c0 Delete type=0 #265
|
2026/01/05-22:20:56.008556 7f93ea7fc6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.813600 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.100430 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.813626 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.100453 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.819856 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.106283 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.833880 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112557 7f93e9ffb6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.833915 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112589 7f93e9ffb6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.234537 7f9cf67fc6c0 Recovering log #260
|
2025/11/21-21:17:11.044217 7f34ce7fc6c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.245515 7f9cf67fc6c0 Delete type=3 #258
|
2025/11/21-21:17:11.059351 7f34ce7fc6c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.245574 7f9cf67fc6c0 Delete type=0 #260
|
2025/11/21-21:17:11.059409 7f34ce7fc6c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.609952 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.076024 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.609988 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.076057 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.620719 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.082546 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.621043 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094915 7f322ffff6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.621110 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094962 7f322ffff6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.156515 7f9cf5ffb6c0 Recovering log #265
|
2026/01/05-22:20:56.073305 7f93eb7fe6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.167920 7f9cf5ffb6c0 Delete type=3 #263
|
2026/01/05-22:20:56.084269 7f93eb7fe6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.168006 7f9cf5ffb6c0 Delete type=0 #265
|
2026/01/05-22:20:56.084336 7f93eb7fe6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.806529 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.112726 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.806589 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.112760 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.813486 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.119133 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.833864 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137862 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.833923 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137903 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.322258 7f9cf5ffb6c0 Recovering log #260
|
2025/11/21-21:17:11.157103 7f34ce7fc6c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.332966 7f9cf5ffb6c0 Delete type=3 #258
|
2025/11/21-21:17:11.172875 7f34ce7fc6c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.333025 7f9cf5ffb6c0 Delete type=0 #260
|
2025/11/21-21:17:11.172939 7f34ce7fc6c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.653610 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.095092 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.653676 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.095126 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.664679 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.102295 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.664840 7f9cf4ff96c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121183 7f322ffff6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.664885 7f9cf4ff96c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121249 7f322ffff6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.116086 7f9cf67fc6c0 Recovering log #265
|
2026/01/05-22:20:56.034759 7f93ea7fc6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.126771 7f9cf67fc6c0 Delete type=3 #263
|
2026/01/05-22:20:56.045303 7f93ea7fc6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.126828 7f9cf67fc6c0 Delete type=0 #265
|
2026/01/05-22:20:56.045387 7f93ea7fc6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.793243 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.094206 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.793267 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.094228 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.799520 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.100330 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.806348 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112546 7f93e9ffb6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.806409 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112583 7f93e9ffb6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.280283 7f9cf57fa6c0 Recovering log #260
|
2025/11/21-21:17:11.100312 7f34ce7fc6c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.290774 7f9cf57fa6c0 Delete type=3 #258
|
2025/11/21-21:17:11.117500 7f34ce7fc6c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.290830 7f9cf57fa6c0 Delete type=0 #260
|
2025/11/21-21:17:11.117567 7f34ce7fc6c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.575147 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.069446 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.575265 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.069505 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.588993 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.075899 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.620966 7f9cf4ff96c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094892 7f322ffff6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.621063 7f9cf4ff96c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094951 7f322ffff6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000177
|
MANIFEST-000242
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.089587 7f9cf6ffd6c0 Recovering log #175
|
2026/01/05-22:20:56.010250 7f93eaffd6c0 Recovering log #240
|
||||||
2025/03/28-18:06:54.100163 7f9cf6ffd6c0 Delete type=3 #173
|
2026/01/05-22:20:56.020208 7f93eaffd6c0 Delete type=3 #238
|
||||||
2025/03/28-18:06:54.100221 7f9cf6ffd6c0 Delete type=0 #175
|
2026/01/05-22:20:56.020270 7f93eaffd6c0 Delete type=0 #240
|
||||||
2025/03/28-18:09:08.826965 7f9cf4ff96c0 Level-0 table #180: started
|
2026/01/05-22:39:51.106439 7f93e9ffb6c0 Level-0 table #245: started
|
||||||
2025/03/28-18:09:08.826991 7f9cf4ff96c0 Level-0 table #180: 0 bytes OK
|
2026/01/05-22:39:51.106472 7f93e9ffb6c0 Level-0 table #245: 0 bytes OK
|
||||||
2025/03/28-18:09:08.833674 7f9cf4ff96c0 Delete type=0 #178
|
2026/01/05-22:39:51.112404 7f93e9ffb6c0 Delete type=0 #243
|
||||||
2025/03/28-18:09:08.833905 7f9cf4ff96c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112570 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.833931 7f9cf4ff96c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.112598 7f93e9ffb6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.249116 7f9cf6ffd6c0 Recovering log #170
|
2025/11/21-21:17:11.062660 7f34cdffb6c0 Recovering log #236
|
||||||
2025/03/28-14:48:51.259201 7f9cf6ffd6c0 Delete type=3 #168
|
2025/11/21-21:17:11.079663 7f34cdffb6c0 Delete type=3 #234
|
||||||
2025/03/28-14:48:51.259300 7f9cf6ffd6c0 Delete type=0 #170
|
2025/11/21-21:17:11.079731 7f34cdffb6c0 Delete type=0 #236
|
||||||
2025/03/28-14:56:17.589172 7f9cf4ff96c0 Level-0 table #176: started
|
2025/11/21-21:20:34.088817 7f322ffff6c0 Level-0 table #241: started
|
||||||
2025/03/28-14:56:17.589229 7f9cf4ff96c0 Level-0 table #176: 0 bytes OK
|
2025/11/21-21:20:34.088856 7f322ffff6c0 Level-0 table #241: 0 bytes OK
|
||||||
2025/03/28-14:56:17.599147 7f9cf4ff96c0 Delete type=0 #174
|
2025/11/21-21:20:34.094750 7f322ffff6c0 Delete type=0 #239
|
||||||
2025/03/28-14:56:17.621000 7f9cf4ff96c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094940 7f322ffff6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.621080 7f9cf4ff96c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.094980 7f322ffff6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.172273 7f9cf67fc6c0 Recovering log #265
|
2026/01/05-22:20:56.088422 7f93eaffd6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.183178 7f9cf67fc6c0 Delete type=3 #263
|
2026/01/05-22:20:56.098507 7f93eaffd6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.183275 7f9cf67fc6c0 Delete type=0 #265
|
2026/01/05-22:20:56.098565 7f93eaffd6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.820046 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.119253 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.820086 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.119282 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.826845 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.125789 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.833893 7f9cf4ff96c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137875 7f93e9ffb6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.833939 7f9cf4ff96c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137911 7f93e9ffb6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.338096 7f9cf57fa6c0 Recovering log #260
|
2025/11/21-21:17:11.175622 7f34cd7fa6c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.348604 7f9cf57fa6c0 Delete type=3 #258
|
2025/11/21-21:17:11.190667 7f34cd7fa6c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.348690 7f9cf57fa6c0 Delete type=0 #260
|
2025/11/21-21:17:11.190757 7f34cd7fa6c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.632377 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.109081 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.632408 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.109106 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.643709 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.114933 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.664820 7f9cf4ff96c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121229 7f322ffff6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.664869 7f9cf4ff96c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121264 7f322ffff6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000267
|
MANIFEST-000332
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-18:06:54.142912 7f9cf6ffd6c0 Recovering log #265
|
2026/01/05-22:20:56.060705 7f93ebfff6c0 Recovering log #330
|
||||||
2025/03/28-18:06:54.152918 7f9cf6ffd6c0 Delete type=3 #263
|
2026/01/05-22:20:56.070672 7f93ebfff6c0 Delete type=3 #328
|
||||||
2025/03/28-18:06:54.153055 7f9cf6ffd6c0 Delete type=0 #265
|
2026/01/05-22:20:56.070726 7f93ebfff6c0 Delete type=0 #330
|
||||||
2025/03/28-18:09:08.779338 7f9cf4ff96c0 Level-0 table #270: started
|
2026/01/05-22:39:51.131859 7f93e9ffb6c0 Level-0 table #335: started
|
||||||
2025/03/28-18:09:08.779431 7f9cf4ff96c0 Level-0 table #270: 0 bytes OK
|
2026/01/05-22:39:51.131886 7f93e9ffb6c0 Level-0 table #335: 0 bytes OK
|
||||||
2025/03/28-18:09:08.786537 7f9cf4ff96c0 Delete type=0 #268
|
2026/01/05-22:39:51.137774 7f93e9ffb6c0 Delete type=0 #333
|
||||||
2025/03/28-18:09:08.806298 7f9cf4ff96c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137894 7f93e9ffb6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-18:09:08.806379 7f9cf4ff96c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
2026/01/05-22:39:51.137928 7f93e9ffb6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/03/28-14:48:51.307945 7f9cf6ffd6c0 Recovering log #260
|
2025/11/21-21:17:11.139151 7f34cdffb6c0 Recovering log #326
|
||||||
2025/03/28-14:48:51.319172 7f9cf6ffd6c0 Delete type=3 #258
|
2025/11/21-21:17:11.154714 7f34cdffb6c0 Delete type=3 #324
|
||||||
2025/03/28-14:48:51.319256 7f9cf6ffd6c0 Delete type=0 #260
|
2025/11/21-21:17:11.154795 7f34cdffb6c0 Delete type=0 #326
|
||||||
2025/03/28-14:56:17.621210 7f9cf4ff96c0 Level-0 table #266: started
|
2025/11/21-21:20:34.102428 7f322ffff6c0 Level-0 table #331: started
|
||||||
2025/03/28-14:56:17.621292 7f9cf4ff96c0 Level-0 table #266: 0 bytes OK
|
2025/11/21-21:20:34.102452 7f322ffff6c0 Level-0 table #331: 0 bytes OK
|
||||||
2025/03/28-14:56:17.632240 7f9cf4ff96c0 Delete type=0 #264
|
2025/11/21-21:20:34.108966 7f322ffff6c0 Delete type=0 #329
|
||||||
2025/03/28-14:56:17.664806 7f9cf4ff96c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121216 7f322ffff6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||||
2025/03/28-14:56:17.664849 7f9cf4ff96c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
2025/11/21-21:20:34.121256 7f322ffff6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user