Compare commits
26 Commits
fvtt-hawkm
...
fvtt-hawkm
| Author | SHA1 | Date | |
|---|---|---|---|
| a6fa3afbee | |||
| 1051349dd0 | |||
| a245b0e87c | |||
| c9ce3367ed | |||
| e95e068112 | |||
| 6dd63a2c54 | |||
| 650e4b7449 | |||
| 3f27482ad9 | |||
| 436b282ff5 | |||
| 39f8cfdbcc | |||
| 24a57a906e | |||
| 667f3678fb | |||
| d5dd9e5bf7 | |||
| 3403b72d1f | |||
| 8a4487c833 | |||
| 4eece5aaf4 | |||
| b574ba76ef | |||
| 0b9e1a80af | |||
| 6505b1c969 | |||
| 280e90d7a6 | |||
| 4fa9a911a0 | |||
| b8c61f8f12 | |||
| b47b14a4b1 | |||
| 9391acf6ee | |||
| 8af9c582bf | |||
| fac158e0ad |
BIN
assets/scenes/hawkmoon_map_europe.webp
Normal file
BIN
assets/scenes/hawkmoon_map_europe.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 807 KiB |
BIN
assets/scenes/scenes-CXx90Qk7nXEd2uTh-thumb.webp
Normal file
BIN
assets/scenes/scenes-CXx90Qk7nXEd2uTh-thumb.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
BIN
assets/scenes/scenes-j6RYn1X7KfhTioX5-thumb.webp
Normal file
BIN
assets/scenes/scenes-j6RYn1X7KfhTioX5-thumb.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.2 KiB |
@@ -7,12 +7,12 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HawkmoonActorSheet extends ActorSheet {
|
||||
export class HawkmoonActorSheet extends foundry.appv1.sheets.ActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-hawkmoon-cyd", "sheet", "actor"],
|
||||
template: "systems/fvtt-hawkmoon-cyd/templates/actor-sheet.html",
|
||||
width: 640,
|
||||
@@ -25,7 +25,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = duplicate(this.object)
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
@@ -39,29 +39,30 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
skills: this.actor.getSkills(),
|
||||
armes: duplicate(this.actor.getWeapons()),
|
||||
monnaies: duplicate(this.actor.getMonnaies()),
|
||||
protections: duplicate(this.actor.getArmors()),
|
||||
historiques: duplicate(this.actor.getHistoriques() || []),
|
||||
talents: duplicate(this.actor.getTalents() || []),
|
||||
mutations: duplicate(this.actor.getMutations() || []),
|
||||
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
||||
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
||||
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
||||
historiques: foundry.utils.duplicate(this.actor.getHistoriques() || []),
|
||||
talents: foundry.utils.duplicate(this.actor.getTalents() || []),
|
||||
mutations: foundry.utils.duplicate(this.actor.getMutations() || []),
|
||||
talentsCell: this.getCelluleTalents(),
|
||||
profils: duplicate(this.actor.getProfils() || []),
|
||||
combat: this.actor.getCombatValues(),
|
||||
equipements: duplicate(this.actor.getEquipments()),
|
||||
artefacts: duplicate(this.actor.getArtefacts()),
|
||||
profils: foundry.utils.duplicate(this.actor.getProfils() || []),
|
||||
combat: this.actor.getCombatValues(),
|
||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||
artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
|
||||
richesse: this.actor.computeRichesse(),
|
||||
coupDevastateur: this.actor.items.find(it => it.type =="talent" && it.name.toLowerCase() == "coup devastateur" && !it.system.used),
|
||||
valeurEquipement: this.actor.computeValeurEquipement(),
|
||||
nbCombativite: this.actor.system.sante.nbcombativite,
|
||||
combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
|
||||
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
||||
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||
habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
editScore: this.options.editScore,
|
||||
isGM: game.user.isGM
|
||||
isGM: game.user.isGM,
|
||||
config: game.system.hawkmoon.config
|
||||
}
|
||||
this.formData = formData;
|
||||
|
||||
@@ -90,14 +91,14 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.options.editable) return;
|
||||
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
const item = this.actor.items.get( itemId )
|
||||
item.sheet.render(true)
|
||||
})
|
||||
})
|
||||
// Delete Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
@@ -119,7 +120,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
let value = Number($(event.currentTarget).data("adversite-value"))
|
||||
this.actor.incDecAdversite(adv, value)
|
||||
})
|
||||
|
||||
|
||||
html.find('.quantity-modify').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||
@@ -129,7 +130,7 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
html.find('.roll-initiative').click((event) => {
|
||||
this.actor.rollAttribut("adr", true)
|
||||
})
|
||||
|
||||
|
||||
html.find('.roll-attribut').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let attrKey = li.data("attr-key")
|
||||
@@ -146,9 +147,9 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollArmeOffensif(armeId)
|
||||
})
|
||||
|
||||
html.find('.roll-assomer').click((event) => {
|
||||
this.actor.rollAssomer()
|
||||
|
||||
html.find('.roll-assommer').click((event) => {
|
||||
this.actor.rollAssommer()
|
||||
})
|
||||
html.find('.roll-coup-bas').click((event) => {
|
||||
this.actor.rollCoupBas()
|
||||
@@ -162,30 +163,30 @@ export class HawkmoonActorSheet extends ActorSheet {
|
||||
html.find('.roll-desengager').click((event) => {
|
||||
this.actor.rollDesengager()
|
||||
})
|
||||
|
||||
|
||||
html.find('.roll-arme-degats').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollArmeDegats(armeId)
|
||||
})
|
||||
|
||||
|
||||
html.find('.item-add').click((event) => {
|
||||
const itemType = $(event.currentTarget).data("type")
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||
})
|
||||
|
||||
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
this.render(true);
|
||||
});
|
||||
});
|
||||
html.find('.item-equip').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
this.actor.equipItem( li.data("item-id") );
|
||||
this.render(true);
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
setPosition(options = {}) {
|
||||
|
||||
@@ -17,8 +17,8 @@ export class HawkmoonActor extends Actor {
|
||||
/**
|
||||
* Override the create() function to provide additional SoS functionality.
|
||||
*
|
||||
* This overrided create() function adds initial items
|
||||
* Namely: Basic skills, money,
|
||||
* This overrided create() function adds initial items
|
||||
* Namely: Basic skills, money,
|
||||
*
|
||||
* @param {Object} data Barebones actor data which this function adds onto.
|
||||
* @param {Object} options (Unused) Additional options which customize the creation workflow.
|
||||
@@ -67,22 +67,26 @@ export class HawkmoonActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareArme(arme) {
|
||||
arme = duplicate(arme)
|
||||
if (this.type == "cellule") {
|
||||
return arme
|
||||
}
|
||||
|
||||
arme = foundry.utils.duplicate(arme)
|
||||
let combat = this.getCombatValues()
|
||||
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
|
||||
let bonusDefense = this.getBonusDefenseFromTalents()
|
||||
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
||||
arme.system.competence = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
||||
arme.system.attrKey = "pui"
|
||||
arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal
|
||||
arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + (this.system.combat.monte ? 3 : 0 )
|
||||
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense + bonusDefense + (this.system.combat.monte ? 3 : 0 )
|
||||
arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + (this.system.combat.monte ? 3 : 0)
|
||||
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense + bonusDefense + (this.system.combat.monte ? 3 : 0)
|
||||
console.log("Arme", arme.system.totalDefensif, combat, arme.system.competence.system.niveau, arme.system.seuildefense, bonusDefense)
|
||||
arme.system.isdefense = true
|
||||
arme.system.isMelee = true
|
||||
arme.system.isDistance = false
|
||||
}
|
||||
if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
|
||||
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
|
||||
arme.system.competence = foundry.utils.duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
|
||||
arme.system.attrKey = "adr"
|
||||
arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||
arme.system.totalDegats = arme.system.degats
|
||||
@@ -146,7 +150,7 @@ export class HawkmoonActor extends Actor {
|
||||
getSkills() {
|
||||
let comp = []
|
||||
for (let item of this.items) {
|
||||
item = duplicate(item)
|
||||
item = foundry.utils.duplicate(item)
|
||||
if (item.type == "competence") {
|
||||
item.system.attribut1total = item.system.niveau + (this.system.attributs[item.system.attribut1]?.value || 0)
|
||||
item.system.attribut2total = item.system.niveau + (this.system.attributs[item.system.attribut2]?.value || 0)
|
||||
@@ -168,7 +172,7 @@ export class HawkmoonActor extends Actor {
|
||||
|
||||
/* ----------------------- --------------------- */
|
||||
addMember(actorId) {
|
||||
let members = duplicate(this.system.members)
|
||||
let members = foundry.utils.duplicate(this.system.members)
|
||||
members.push({ id: actorId })
|
||||
this.update({ 'system.members': members })
|
||||
}
|
||||
@@ -202,6 +206,20 @@ export class HawkmoonActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getCombatValues() {
|
||||
if (this.type == "cellule") {
|
||||
return {
|
||||
initBase: 0,
|
||||
initTotal: 0,
|
||||
bonusDegats: 0,
|
||||
bonusDegatsTotal: 0,
|
||||
vitesseBase: 0,
|
||||
vitesseTotal: 0,
|
||||
defenseBase: 0,
|
||||
protection: 0,
|
||||
defenseTotal: 0
|
||||
}
|
||||
}
|
||||
|
||||
let combat = {
|
||||
initBase: this.system.attributs.adr.value,
|
||||
initTotal: this.system.attributs.adr.value + this.system.combat.initbonus,
|
||||
@@ -235,21 +253,28 @@ export class HawkmoonActor extends Actor {
|
||||
this.update({ 'system.sante.vigueur': vigueur })
|
||||
}
|
||||
}
|
||||
|
||||
super.prepareDerivedData()
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_preUpdate(changed, options, user) {
|
||||
|
||||
if (changed?.system?.sante?.etat && changed?.system?.sante?.etat != this.system.sante.etat) {
|
||||
setTimeout(() => {
|
||||
this.processCombativite(changed.system.sante)
|
||||
}, 800)
|
||||
}
|
||||
super._preUpdate(changed, options, user);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_onUpdate(data, options, user) {
|
||||
super._onUpdate(data, options, user);
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getItemById(id) {
|
||||
let item = this.items.find(item => item.id == id);
|
||||
if (item) {
|
||||
item = duplicate(item)
|
||||
item = foundry.utils.duplicate(item)
|
||||
}
|
||||
return item;
|
||||
}
|
||||
@@ -282,7 +307,7 @@ export class HawkmoonActor extends Actor {
|
||||
checkAttribut(attribut, minLevel) {
|
||||
let attr = this.system.attributs.find(at => at.labelnorm == attribut.toLowerCase())
|
||||
if (attr && attr.value >= minLevel) {
|
||||
return { isValid: true, attr: duplicate(attr) }
|
||||
return { isValid: true, attr: foundry.utils.duplicate(attr) }
|
||||
}
|
||||
return { isValid: false }
|
||||
}
|
||||
@@ -290,11 +315,11 @@ export class HawkmoonActor extends Actor {
|
||||
checkAttributOrCompetenceLevel(compName, minLevel) {
|
||||
let comp = this.items.find(i => i.type == "competence" && i.name.toLowerCase() == compName.toLowerCase() && i.system.niveau >= minLevel)
|
||||
if (comp) {
|
||||
return { isValid: true, item: duplicate(comp) }
|
||||
return { isValid: true, item: foundry.utils.duplicate(comp) }
|
||||
} else {
|
||||
for (let attrKey in this.system.attributs) {
|
||||
if (this.system.attributs[attrKey].label.toLowerCase() == compName.toLowerCase() && this.system.attributs[attrKey].value >= minLevel) {
|
||||
return { isValid: true, item: duplicate(this.system.attributs[attrKey]) }
|
||||
return { isValid: true, item: foundry.utils.duplicate(this.system.attributs[attrKey]) }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -304,7 +329,7 @@ export class HawkmoonActor extends Actor {
|
||||
addCompetenceBonus(compName, bonus, baCost) {
|
||||
let comp = this.items.find(i => i.type == "competence" && i.name.toLowerCase() == compName.toLowerCase())
|
||||
if (comp) {
|
||||
comp = duplicate(comp)
|
||||
comp = foundry.utils.duplicate(comp)
|
||||
comp.system.bonus = bonus
|
||||
comp.system.baCost = baCost
|
||||
return { isValid: true, item: comp }
|
||||
@@ -388,22 +413,28 @@ export class HawkmoonActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
changeEtatCombativite(value) {
|
||||
if ( value === "vaincu") {
|
||||
if (value === "vaincu") {
|
||||
value = 200
|
||||
}
|
||||
let sante = duplicate(this.system.sante)
|
||||
let sante = foundry.utils.duplicate(this.system.sante)
|
||||
sante.etat += Number(value)
|
||||
sante.etat = Math.max(sante.etat, 0)
|
||||
sante.etat = Math.min(sante.etat, 5)
|
||||
sante.etat = Math.min(sante.etat, this.system.sante.nbcombativite)
|
||||
this.update({ 'system.sante': sante })
|
||||
if (sante.etat == this.system.sante.nbcombativite) {
|
||||
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
|
||||
}
|
||||
// Duplicated ! this.processCombativite(sante)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
processCombativite(sante) {
|
||||
sante = sante || foundry.utils.duplicate(this.system.sante)
|
||||
// Gestion des états affaibli et très affaibli
|
||||
if (sante.etat == this.system.sante.nbcombativite-2 || sante.etat == this.system.sante.nbcombativite-1) {
|
||||
if (sante.etat == this.system.sante.nbcombativite-2 && this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "encaissement")) {
|
||||
if (sante.etat == this.system.sante.nbcombativite - 2 || sante.etat == this.system.sante.nbcombativite - 1) {
|
||||
if (sante.etat == this.system.sante.nbcombativite - 2 && this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "encaissement")) {
|
||||
ChatMessage.create({ content: `<strong>${this.name} ne subit pas les 2 adversités rouge grâce à Encaissement. Pensez à les ajouter à la fin de la scène !</strong>` })
|
||||
} else if (sante.etat == this.system.sante.nbcombativite-1 && this.items.find(item => item.type == "talent" && item.name.toLowerCase().includes("vaillant"))) {
|
||||
} else if (sante.etat == this.system.sante.nbcombativite - 1 && this.items.find(item => item.type == "talent" && item.name.toLowerCase().includes("vaillant"))) {
|
||||
ChatMessage.create({ content: `<strong>${this.name} ne subit pas les 2 adversités rouge grâce à Vaillant. Pensez à les ajouter à la fin de la scène !</strong>` })
|
||||
} else {
|
||||
ChatMessage.create({ content: `<strong>${this.name} subit 2 adversités rouge !</strong>` })
|
||||
@@ -425,13 +456,13 @@ export class HawkmoonActor extends Actor {
|
||||
getSubActors() {
|
||||
let subActors = [];
|
||||
for (let id of this.system.subactors) {
|
||||
subActors.push(duplicate(game.actors.get(id)));
|
||||
subActors.push(foundry.utils.duplicate(game.actors.get(id)));
|
||||
}
|
||||
return subActors;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async addSubActor(subActorId) {
|
||||
let subActors = duplicate(this.system.subactors);
|
||||
let subActors = foundry.utils.duplicate(this.system.subactors);
|
||||
subActors.push(subActorId);
|
||||
await this.update({ 'system.subactors': subActors });
|
||||
}
|
||||
@@ -453,9 +484,10 @@ export class HawkmoonActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async incDecAdversite(adv, incDec = 0) {
|
||||
let adversite = duplicate(this.system.adversite)
|
||||
let adversite = foundry.utils.duplicate(this.system.adversite)
|
||||
adversite[adv] += Number(incDec)
|
||||
adversite[adv] = Math.max(adversite[adv], 0)
|
||||
adversite[adv] = Math.min(adversite[adv], 20)
|
||||
this.update({ 'system.adversite': adversite })
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@@ -500,7 +532,7 @@ export class HawkmoonActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async setPredilectionUsed(compId, predIdx) {
|
||||
let comp = this.items.get(compId)
|
||||
let pred = duplicate(comp.system.predilections)
|
||||
let pred = foundry.utils.duplicate(comp.system.predilections)
|
||||
pred[predIdx].used = true
|
||||
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
|
||||
}
|
||||
@@ -511,6 +543,23 @@ export class HawkmoonActor extends Actor {
|
||||
return init || -1
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getBestAttackValue() {
|
||||
let attackList = this.items.filter(item => (item.type == "arme" || item.type == "talent") && item.system.equipped)
|
||||
let maxOff = 0
|
||||
let bestArme
|
||||
for (let arme of attackList) {
|
||||
if (arme.type == "arme") {
|
||||
arme = this.prepareArme(arme)
|
||||
}
|
||||
if (arme.system.totalOffensif > maxOff) {
|
||||
maxOff = arme.system.totalOffensif
|
||||
bestArme = foundry.utils.duplicate(arme)
|
||||
}
|
||||
}
|
||||
return bestArme
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getBestDefenseValue() {
|
||||
let defenseList = this.items.filter(item => (item.type == "arme") && item.system.equipped)
|
||||
@@ -522,7 +571,7 @@ export class HawkmoonActor extends Actor {
|
||||
}
|
||||
if (arme.system.totalDefensif > maxDef) {
|
||||
maxDef = arme.system.totalDefensif
|
||||
bestArme = duplicate(arme)
|
||||
bestArme = foundry.utils.duplicate(arme)
|
||||
}
|
||||
}
|
||||
return bestArme
|
||||
@@ -537,7 +586,7 @@ export class HawkmoonActor extends Actor {
|
||||
for (let auto of talent.system.automations) {
|
||||
if (auto.eventtype === "prepare-roll") {
|
||||
if (auto.competence.toLowerCase() == competence.name.toLowerCase()) {
|
||||
talent = duplicate(talent)
|
||||
talent = foundry.utils.duplicate(talent)
|
||||
talent.system.bonus = auto.bonus
|
||||
talent.system.baCost = auto.baCost
|
||||
talents.push(talent)
|
||||
@@ -569,26 +618,33 @@ export class HawkmoonActor extends Actor {
|
||||
rollData.nbAdversites = this.getTotalAdversite()
|
||||
rollData.talents = []
|
||||
rollData.attrKey2 = "none"
|
||||
rollData.coupDevastateur = this.items.find(it => it.type =="talent" && it.name.toLowerCase() == "coup dévastateur" && !it.system.used)
|
||||
rollData.coupDevastateur = this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "coup dévastateur" && !it.system.used)
|
||||
rollData.hasAmbidextre = this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "ambidextre")
|
||||
rollData.hasFeinte = this.system.bonneaventure.actuelle >0 && this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "feinte")
|
||||
rollData.hasFeinte = this.system.bonneaventure.actuelle > 0 && this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "feinte")
|
||||
rollData.isMonte = this.system.combat.monte
|
||||
rollData.config = game.system.hawkmoon.config
|
||||
|
||||
if (attrKey) {
|
||||
rollData.attrKey = attrKey
|
||||
if (attrKey != "tochoose") {
|
||||
rollData.actionImg = "systems/fvtt-hawkmoon-cyd/assets/icons/" + this.system.attributs[attrKey].labelnorm + ".webp"
|
||||
rollData.attr = duplicate(this.system.attributs[attrKey])
|
||||
rollData.attr = foundry.utils.duplicate(this.system.attributs[attrKey])
|
||||
}
|
||||
}
|
||||
if (compId) {
|
||||
rollData.competence = duplicate(this.items.get(compId) || {})
|
||||
rollData.maitrises = rollData.competence.system.predilections.filter(p => p.maitrise)
|
||||
rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
|
||||
let maitrises = [{ key: "none", label: "Aucune" }]
|
||||
rollData.competence.system.predilections.forEach(function (item) {
|
||||
if (item.maitrise) {
|
||||
maitrises.push({ key: item.id, label: item.name });
|
||||
}
|
||||
})
|
||||
rollData.maitrises = maitrises // rollData.competence.system.predilections.filter(p => p.maitrise)
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
rollData.talents = this.searchRelevantTalents(rollData.competence)
|
||||
}
|
||||
if (compName) {
|
||||
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||
rollData.competence = foundry.utils.duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
}
|
||||
return rollData
|
||||
@@ -626,7 +682,7 @@ export class HawkmoonActor extends Actor {
|
||||
rollDialog.render(true)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async rollAssomer() {
|
||||
async rollAssommer() {
|
||||
let rollData = this.getCommonRollData("pui", undefined, "Filouterie")
|
||||
rollData.assomer = true
|
||||
rollData.conditionsCommunes = true
|
||||
@@ -672,7 +728,7 @@ export class HawkmoonActor extends Actor {
|
||||
let rollDialog = await HawkmoonRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollArmeDegats(armeId, targetVigueur = undefined, rollDataInput = undefined) {
|
||||
let arme = this.items.get(armeId)
|
||||
@@ -687,7 +743,7 @@ export class HawkmoonActor extends Actor {
|
||||
if (rollDataInput?.applyCoupDevastateur) {
|
||||
bonus2 = Math.floor(this.system.attributs.pui.value / 2)
|
||||
let talent = this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "coup dévastateur")
|
||||
this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }])
|
||||
this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }])
|
||||
}
|
||||
|
||||
if (rollDataInput?.isHeroique) {
|
||||
@@ -697,7 +753,7 @@ export class HawkmoonActor extends Actor {
|
||||
if (rollDataInput?.chargeCavalerie) {
|
||||
bonus = 6
|
||||
}
|
||||
roll = new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll({ async: false })
|
||||
roll = await new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll()
|
||||
} else {
|
||||
if (rollDataInput?.attaqueCharge) {
|
||||
bonus = 3
|
||||
@@ -705,13 +761,13 @@ export class HawkmoonActor extends Actor {
|
||||
if (rollDataInput?.chargeCavalerie) {
|
||||
bonus = 4
|
||||
}
|
||||
roll = new Roll("1d10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll({ async: false })
|
||||
roll = await new Roll("1d10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll()
|
||||
}
|
||||
await HawkmoonUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
||||
let nbEtatPerdus = 0
|
||||
if (targetVigueur) {
|
||||
nbEtatPerdus = Math.floor(roll.total / targetVigueur)
|
||||
}
|
||||
}
|
||||
//console.log(roll)
|
||||
let rollData = {
|
||||
arme: arme,
|
||||
|
||||
@@ -14,10 +14,10 @@ export class HawkmoonAutomation {
|
||||
this.__objectTypes = { }
|
||||
|
||||
Object.entries(game.data.model.Actor).forEach(kv => {
|
||||
this.__objectTypes[kv[0]] = duplicate(kv[1])
|
||||
this.__objectTypes[kv[0]] = foundry.utils.duplicate(kv[1])
|
||||
})
|
||||
Object.entries(game.data.model.Item).forEach(kv => {
|
||||
this.__objectTypes[kv[0]] = duplicate(kv[1])
|
||||
this.__objectTypes[kv[0]] = foundry.utils.duplicate(kv[1])
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 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 */
|
||||
static get defaultOptions() {
|
||||
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-hawkmoon-cyd", "sheet", "actor"],
|
||||
template: "systems/fvtt-hawkmoon-cyd/templates/cellule-sheet.html",
|
||||
width: 640,
|
||||
@@ -28,7 +28,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = duplicate(this.object)
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
@@ -41,15 +41,23 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
||||
system: objectData.system,
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
talents: duplicate(this.actor.getTalents() || {}),
|
||||
ressources: duplicate(this.actor.getRessources()),
|
||||
contacts: duplicate(this.actor.getContacts()),
|
||||
talents: foundry.utils.duplicate(this.actor.getTalents() || {}),
|
||||
ressources: foundry.utils.duplicate(this.actor.getRessources()),
|
||||
contacts: foundry.utils.duplicate(this.actor.getContacts()),
|
||||
members: this.getMembers(),
|
||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||
artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
|
||||
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
||||
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
||||
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
||||
richesse: this.actor.computeRichesse(),
|
||||
valeurEquipement: this.actor.computeValeurEquipement(),
|
||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
editScore: this.options.editScore,
|
||||
isGM: game.user.isGM
|
||||
isGM: game.user.isGM,
|
||||
config: game.system.hawkmoon.config
|
||||
}
|
||||
this.formData = formData;
|
||||
|
||||
@@ -87,7 +95,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
||||
let actorId = li.data("actor-id")
|
||||
this.actor.removeMember(actorId)
|
||||
})
|
||||
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
@@ -109,15 +117,15 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
||||
let value = ev.currentTarget.value
|
||||
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
||||
})
|
||||
|
||||
html.find('.quantity-minus').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.incDecQuantity(li.data("item-id"), -1);
|
||||
});
|
||||
html.find('.quantity-plus').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.incDecQuantity(li.data("item-id"), +1);
|
||||
});
|
||||
html.find('.quantity-modify').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||
this.actor.incDecQuantity( li.data("item-id"), value );
|
||||
})
|
||||
html.find('.item-add').click((event) => {
|
||||
const itemType = $(event.currentTarget).data("type")
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||
})
|
||||
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
@@ -128,7 +136,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
||||
/* -------------------------------------------- */
|
||||
async _onDropActor(event, dragData) {
|
||||
const actor = fromUuidSync(dragData.uuid)
|
||||
if (actor) {
|
||||
if (actor) {
|
||||
this.actor.addMember(actor.id)
|
||||
} else {
|
||||
ui.notifications.warn("Cet acteur n'a pas été trouvé.")
|
||||
@@ -148,7 +156,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
|
||||
super._onDropItem(event, dragData)
|
||||
return
|
||||
}
|
||||
ui.notifications("Ce type d'item n'est pas autorisé sur une Cellule.")
|
||||
ui.notification.info("Ce type d'item n'est pas autorisé sur une Cellule.")
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ export class HawkmoonCombat extends Combat {
|
||||
async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
|
||||
ids = typeof ids === "string" ? [ids] : ids;
|
||||
for (let cId of ids) {
|
||||
const c = this.combatants.get(ids[cId]);
|
||||
//console.log("Init for combattant", c )
|
||||
const c = this.combatants.get(cId);
|
||||
console.log("Init for combattant", c, ids)
|
||||
let id = c._id || c.id
|
||||
let initValue = c.actor ? c.actor.getInitiativeScore() : 0
|
||||
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initValue } ]);
|
||||
|
||||
143
modules/hawkmoon-config.js
Normal file
143
modules/hawkmoon-config.js
Normal file
@@ -0,0 +1,143 @@
|
||||
export const HAWKMOON_CONFIG = {
|
||||
|
||||
optionsDifficulte: [
|
||||
{ key: "0", label: "Aucune/Inconnue" },
|
||||
{ key: "5", label: "Facile (5)" },
|
||||
{ key: "6", label: "(6)" },
|
||||
{ key: "7", label: "(7)" },
|
||||
{ key: "8", label: "(8)" },
|
||||
{ key: "9", label: "(9)" },
|
||||
{ key: "10", label: "Moyenne (10)" },
|
||||
{ key: "11", label: "(11)" },
|
||||
{ key: "12", label: "(12)" },
|
||||
{ key: "13", label: "(13)" },
|
||||
{ key: "14", label: "(14)" },
|
||||
{ key: "15", label: "Ardue (15)" },
|
||||
{ key: "16", label: "(16)" },
|
||||
{ key: "17", label: "(17)" },
|
||||
{ key: "18", label: "(18)" },
|
||||
{ key: "19", label: "(19)" },
|
||||
{ key: "20", label: "Hasardeuse (20)" },
|
||||
{ key: "21", label: "(21)" },
|
||||
{ key: "22", label: "(22)" },
|
||||
{ key: "23", label: "(23)" },
|
||||
{ key: "24", label: "(24)" },
|
||||
{ key: "25", label: "Insensée (25)" },
|
||||
{ key: "26", label: "(26)" },
|
||||
{ key: "27", label: "(27)" },
|
||||
{ key: "28", label: "(28)" },
|
||||
{ key: "29", label: "(29)" },
|
||||
{ key: "30", label: "Pure Folie (30)" }
|
||||
],
|
||||
optionsDistanceTir: [
|
||||
{ key: "porteecourte", label: "Courte ({protectionDefenseur}+5)" },
|
||||
{ key: "porteemoyenne", label: "Moyenne ({protectionDefenseur}+9)" },
|
||||
{ key: "porteelongue", label: "Longue ({protectionDefenseur}+14)" }
|
||||
],
|
||||
optionsBonusMalus: [
|
||||
{ key: "-10", label: "-10" },
|
||||
{ key: "-9", label: "-9" },
|
||||
{ key: "-8", label: "-8" },
|
||||
{ key: "-7", label: "-7" },
|
||||
{ key: "-6", label: "-6" },
|
||||
{ key: "-5", label: "-5" },
|
||||
{ key: "-4", label: "-4" },
|
||||
{ key: "-3", label: "-3" },
|
||||
{ key: "-2", label: "-2" },
|
||||
{ key: "-1", label: "-1" },
|
||||
{ key: "0", label: "0" },
|
||||
{ key: "1", label: "+1" },
|
||||
{ key: "2", label: "+2" },
|
||||
{ key: "3", label: "+3" },
|
||||
{ key: "4", label: "+4" },
|
||||
{ key: "5", label: "+5" },
|
||||
{ key: "6", label: "+6" },
|
||||
{ key: "7", label: "+7" },
|
||||
{ key: "8", label: "+8" },
|
||||
{ key: "9", label: "+9" },
|
||||
{ key: "10", label: "+10" }
|
||||
],
|
||||
optionsTailleCible: [
|
||||
{ key: "normal", label: "Normal (SD+0)" },
|
||||
{ key: "main", label: "Main (SD+10)" },
|
||||
{ key: "enfant", label: "Enfant (SD+3)" },
|
||||
{ key: "maison", label: "Maison (SD-10)" }
|
||||
],
|
||||
optionsCouvert: [
|
||||
{ key: "aucun", label: "Aucun" },
|
||||
{ key: "leger", label: "Léger (SD+5)" },
|
||||
{ key: "complet", label: "Quasi complet (SD+10)" }
|
||||
],
|
||||
optionsTireurDeplacement: [
|
||||
{ key: "immobile", label: "Immobile (SD+0)" },
|
||||
{ key: "lent", label: "Lent (SD+3)" },
|
||||
{ key: "rapide", label: "Rapide (SD+5)" }
|
||||
],
|
||||
optionsSoutiens: [
|
||||
{ key: "0", label: "Aucun" },
|
||||
{ key: "1", label: "Un soutien (+3)" },
|
||||
{ key: "2", label: "Deux soutiens (+4)" },
|
||||
{ key: "3", label: "Trois soutiens (+5)" }
|
||||
],
|
||||
optionsStatutResistant: [
|
||||
{ key: "commun", label: "Commun" },
|
||||
{ key: "clandestin", label: "Clandestin" },
|
||||
{ key: "insurge", label: "Insurgé" }
|
||||
],
|
||||
optionsTypeArme: [
|
||||
{key: "contact", label: "Arme de contact"},
|
||||
{key: "contactjet", label: "Arme de contact et de Jet"},
|
||||
{key: "jet", label: "Arme de Jet"},
|
||||
{key: "tir", label: "Arme de Tir"}
|
||||
],
|
||||
optionsArtefactBranche: [
|
||||
{key: "alchimie", label: "Alchimie"},
|
||||
{key: "biologie", label: "Biologie"},
|
||||
{key: "electricite", label: "Electricité"},
|
||||
{key: "mecanique", label: "Mécanique"},
|
||||
{key: "scienceesprit", label: "Science de l'Esprit"}
|
||||
],
|
||||
optionsArtefactBranche2: [
|
||||
{key: "none", label: "Aucune"},
|
||||
{key: "alchimie", label: "Alchimie"},
|
||||
{key: "biologie", label: "Biologie"},
|
||||
{key: "electricite", label: "Electricité"},
|
||||
{key: "mecanique", label: "Mécanique"},
|
||||
{key: "scienceesprit", label: "Science de l'Esprit"}
|
||||
],
|
||||
optionsTypeContact: [
|
||||
{key: "contact", label: "Contact"},
|
||||
{key: "allie", label: "Allié"}
|
||||
],
|
||||
optionsTypeMutation: [
|
||||
{key: "tares_communes", label: "Tares et Malformations communes"},
|
||||
{key: "evolutions_communes", label: "Evolutions communes"},
|
||||
{key: "tares_rares", label: "Tares et Malformations rares"},
|
||||
{key: "evolutions_rares", label: "Evolutions rares"},
|
||||
{key: "tares_majeures", label: "Tares et Maformations majeures"},
|
||||
{key: "evolutions_majeures", label: "Evolutions majeures"},
|
||||
{key: "tares_except", label: "Tares et Malformations exceptionnelles"},
|
||||
{key: "evolutions_except", label: "Evolutions exceptionnelles"}
|
||||
],
|
||||
optionsTypeTalent: [
|
||||
{key: "personnage", label: "Personnage"},
|
||||
{key: "cellule", label: "Cellule"},
|
||||
{key: "traitespece", label: "Trait d'espèce"}
|
||||
],
|
||||
optionsUseTalent: [
|
||||
{key: "permanent", label: "Permanent"},
|
||||
{key: "sceance", label: "Une fois par scéance"},
|
||||
{key: "scenario", label: "Une fois par scénario"},
|
||||
{key: "jour", label: "Une fois par jour"},
|
||||
{key: "unique", label: "Unique"}
|
||||
],
|
||||
optionsAutomationEvent: [
|
||||
{key: "on-drop", label: "Drop sur l'acteur"},
|
||||
{key: "prepare-roll", label: "Préparation d'un jet"},
|
||||
{key: "bonus-permanent", label: "Bonus permanent"}
|
||||
],
|
||||
optionsBonusPermanent: [
|
||||
{key: "vigueur", label: "Vigueur"},
|
||||
{key: "bonus-defensif", label: "Bonus au Seuil de Défense"}
|
||||
]
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export class HawkmoonCreatureSheet extends HawkmoonActorSheet {
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-hawkmoon-cyd", "sheet", "actor"],
|
||||
template: "systems/fvtt-hawkmoon-cyd/templates/creature-sheet.html",
|
||||
width: 640,
|
||||
|
||||
@@ -22,7 +22,7 @@ export class HawkmoonTokenHud {
|
||||
|
||||
const hudData = { actor: actor }
|
||||
|
||||
const controlIconActions = html.find('.control-icon[data-action=combat]');
|
||||
const controlIconActions = $(html).find('.control-icon[data-action=combat]');
|
||||
// initiative
|
||||
await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
|
||||
(event) => {
|
||||
@@ -34,7 +34,7 @@ export class HawkmoonTokenHud {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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 ) {
|
||||
HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
|
||||
}
|
||||
@@ -42,11 +42,11 @@ export class HawkmoonTokenHud {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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')
|
||||
|
||||
|
||||
HawkmoonTokenHud._toggleHudListActive(hud, list);
|
||||
|
||||
|
||||
hud.find('img.hawkmoon-hud-togglebutton').click(event => HawkmoonTokenHud._toggleHudListActive(hud, list));
|
||||
list.find('.hawkmoon-hud-adversite').click(onMenuItem);
|
||||
|
||||
|
||||
@@ -4,12 +4,12 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
|
||||
* Extend the basic ItemSheet with some very simple modifications
|
||||
* @extends {ItemSheet}
|
||||
*/
|
||||
export class HawkmoonItemSheet extends ItemSheet {
|
||||
export class HawkmoonItemSheet extends foundry.appv1.sheets.ItemSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-hawkmoon-cyd", "sheet", "item"],
|
||||
template: "systems/fvtt-hawkmoon-cyd/templates/item-sheet.html",
|
||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||
@@ -48,7 +48,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = duplicate(this.object)
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
let formData = {
|
||||
title: this.title,
|
||||
id: this.id,
|
||||
@@ -64,7 +64,8 @@ export class HawkmoonItemSheet extends ItemSheet {
|
||||
owner: this.document.isOwner,
|
||||
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
||||
mr: (this.object.type == 'specialisation'),
|
||||
isGM: game.user.isGM
|
||||
isGM: game.user.isGM,
|
||||
config: game.system.hawkmoon.config
|
||||
}
|
||||
|
||||
if ( objectData.type == "don") {
|
||||
@@ -89,7 +90,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
postItem() {
|
||||
let chatData = duplicate(HawkmoonUtility.data(this.item));
|
||||
let chatData = foundry.utils.duplicate(HawkmoonUtility.data(this.item));
|
||||
if (this.actor) {
|
||||
chatData.actor = { id: this.actor.id };
|
||||
}
|
||||
@@ -132,7 +133,7 @@ export class HawkmoonItemSheet extends ItemSheet {
|
||||
html.find('.edit-predilection').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||
let index = li.data("prediction-index")
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred[index].name = ev.currentTarget.value
|
||||
pred[index].id = pred[index].id || randomID(16)
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
@@ -140,70 +141,70 @@ export class HawkmoonItemSheet extends ItemSheet {
|
||||
html.find('.edit-predilection-description').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||
let index = li.data("prediction-index")
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred[index].description = ev.currentTarget.value
|
||||
pred[index].id = pred[index].id || randomID(16)
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
})
|
||||
})
|
||||
html.find('.predilection-acquise').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||
let index = li.data("prediction-index")
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred[index].acquise = ev.currentTarget.checked
|
||||
pred[index].id = pred[index].id || randomID(16)
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
})
|
||||
})
|
||||
html.find('.predilection-maitrise').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||
let index = li.data("prediction-index")
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred[index].maitrise = ev.currentTarget.checked
|
||||
pred[index].id = pred[index].id || randomID(16)
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
})
|
||||
})
|
||||
html.find('.predilection-used').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||
let index = li.data("prediction-index")
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred[index].used = ev.currentTarget.checked
|
||||
pred[index].id = pred[index].id || randomID(16)
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
html.find('#add-predilection').click(ev => {
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
})
|
||||
html.find('.delete-prediction').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".prediction-item")
|
||||
let index = li.data("prediction-index")
|
||||
let pred = duplicate(this.object.system.predilections)
|
||||
let pred = foundry.utils.duplicate(this.object.system.predilections)
|
||||
pred.splice(index,1)
|
||||
this.object.update( { 'system.predilections': pred })
|
||||
})
|
||||
|
||||
html.find('#add-automation').click(ev => {
|
||||
let autom = 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) })
|
||||
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) })
|
||||
this.object.update( { 'system.automations': autom })
|
||||
})
|
||||
html.find('.delete-automation').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".automation-item")
|
||||
let index = li.data("automation-index")
|
||||
let autom = duplicate(this.object.system.automations)
|
||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||
autom.splice(index,1)
|
||||
this.object.update( { 'system.automations': autom })
|
||||
})
|
||||
html.find('.automation-edit-field').change(ev => {
|
||||
let index = $(ev.currentTarget).data("automation-index")
|
||||
let field = $(ev.currentTarget).data("automation-field")
|
||||
let auto = duplicate(this.object.system.automations)
|
||||
let auto = foundry.utils.duplicate(this.object.system.automations)
|
||||
auto[index][field] = ev.currentTarget.value
|
||||
auto[index].id = auto[index].id || randomID(16)
|
||||
this.object.update( { 'system.automations': auto })
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
|
||||
@@ -18,6 +18,7 @@ import { HawkmoonCombat } from "./hawkmoon-combat.js";
|
||||
import { HawkmoonItem } from "./hawkmoon-item.js";
|
||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
|
||||
import { HawkmoonTokenHud } from "./hawkmoon-hud.js";
|
||||
import { HAWKMOON_CONFIG } from "./hawkmoon-config.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
@@ -32,7 +33,7 @@ Hooks.once("init", async function () {
|
||||
HawkmoonUtility.preloadHandlebarsTemplates()
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Set an initiative formula for the system
|
||||
// Set an initiative formula for the system
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "1d10",
|
||||
decimals: 1
|
||||
@@ -50,18 +51,19 @@ Hooks.once("init", async function () {
|
||||
CONFIG.Item.documentClass = HawkmoonItem
|
||||
game.system.hawkmoon = {
|
||||
HawkmoonUtility,
|
||||
HawkmoonAutomation
|
||||
HawkmoonAutomation,
|
||||
config : HAWKMOON_CONFIG
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
|
||||
// Regster sheet application classes
|
||||
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
|
||||
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
|
||||
|
||||
HawkmoonUtility.init()
|
||||
HawkmoonAutomation.init()
|
||||
@@ -82,6 +84,19 @@ function welcomeMessage() {
|
||||
` });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async function importDefaultScene() {
|
||||
let exists = game.scenes.find(j => j.name == "Accueil");
|
||||
if (!exists) {
|
||||
const scenes = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.scenes")
|
||||
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
||||
if (newDocuments) {
|
||||
await game.scenes.documentClass.create(newDocuments);
|
||||
game.scenes.find(i => i.name == "Accueil").activate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
/* -------------------------------------------- */
|
||||
@@ -105,6 +120,7 @@ Hooks.once("ready", function () {
|
||||
console.log("No stats available, giving up.")
|
||||
)
|
||||
|
||||
importDefaultScene()
|
||||
welcomeMessage()
|
||||
|
||||
});
|
||||
@@ -122,4 +138,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ export class HawkmoonRollDialog extends Dialog {
|
||||
static async create(actor, rollData ) {
|
||||
|
||||
let options = { classes: ["HawkmoonDialog"], width: 320, 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 );
|
||||
}
|
||||
@@ -16,16 +16,16 @@ export class HawkmoonRollDialog extends Dialog {
|
||||
let conf = {
|
||||
title: "Test de Capacité",
|
||||
content: html,
|
||||
buttons: {
|
||||
buttons: {
|
||||
rolld10: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d10",
|
||||
callback: () => { this.roll("d10") }
|
||||
callback: () => { this.roll("d10") }
|
||||
},
|
||||
rolld20: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d20",
|
||||
callback: () => { this.roll("d20") }
|
||||
callback: () => { this.roll("d20") }
|
||||
},
|
||||
cancel: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
@@ -56,86 +56,87 @@ export class HawkmoonRollDialog extends Dialog {
|
||||
function onLoad() {
|
||||
}
|
||||
$(function () { onLoad(); });
|
||||
|
||||
|
||||
html.find('#modificateur').change(async (event) => {
|
||||
this.rollData.modificateur = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#difficulte').change(async (event) => {
|
||||
html.find('#difficulte').change( (event) => {
|
||||
console.log("Difficulte: " + event.currentTarget.value)
|
||||
this.rollData.difficulte = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#attrKey').change(async (event) => {
|
||||
this.rollData.attrKey = String(event.currentTarget.value)
|
||||
})
|
||||
})
|
||||
html.find('#attrKey2').change(async (event) => {
|
||||
this.rollData.attrKey2 = String(event.currentTarget.value)
|
||||
})
|
||||
})
|
||||
html.find('#select-maitrise').change(async (event) => {
|
||||
this.rollData.maitriseId = String(event.currentTarget.value)
|
||||
})
|
||||
html.find('#competence-talents').change((event) => {
|
||||
this.rollData.selectedTalents = $('#competence-talents').val()
|
||||
this.rollData.selectedTalents = $('#competence-talents').val()
|
||||
})
|
||||
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) => {
|
||||
this.rollData.tireurDeplacement = String(event.currentTarget.value)
|
||||
this.rollData.tireurDeplacement = String(event.currentTarget.value)
|
||||
})
|
||||
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) => {
|
||||
this.rollData.distanceTir = String(event.currentTarget.value)
|
||||
this.rollData.distanceTir = String(event.currentTarget.value)
|
||||
})
|
||||
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) => {
|
||||
this.rollData.defenseurAuSol = event.currentTarget.checked
|
||||
this.rollData.defenseurAuSol = event.currentTarget.checked
|
||||
})
|
||||
html.find('#ambidextre-1').change((event) => {
|
||||
this.rollData.ambidextre1 = event.currentTarget.checked
|
||||
this.rollData.ambidextre1 = event.currentTarget.checked
|
||||
})
|
||||
html.find('#ambidextre-2').change((event) => {
|
||||
this.rollData.ambidextre2 = event.currentTarget.checked
|
||||
})
|
||||
html.find('#attaque-monte').change((event) => {
|
||||
this.rollData.attqueMonte = event.currentTarget.checked
|
||||
})
|
||||
})
|
||||
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) => {
|
||||
this.rollData.defenseurDeDos = event.currentTarget.checked
|
||||
this.rollData.defenseurDeDos = event.currentTarget.checked
|
||||
})
|
||||
html.find('#defenseur-restreint').change((event) => {
|
||||
this.rollData.defenseurRestreint = event.currentTarget.checked
|
||||
this.rollData.defenseurRestreint = event.currentTarget.checked
|
||||
})
|
||||
html.find('#defenseur-immobilise').change((event) => {
|
||||
this.rollData.defenseurImmobilise = event.currentTarget.checked
|
||||
this.rollData.defenseurImmobilise = event.currentTarget.checked
|
||||
})
|
||||
html.find('#attaque-charge').change((event) => {
|
||||
this.rollData.attaqueCharge = event.currentTarget.checked
|
||||
this.rollData.attaqueCharge = event.currentTarget.checked
|
||||
})
|
||||
html.find('#charge-cavalerie').change((event) => {
|
||||
this.rollData.chargeCavalerie = event.currentTarget.checked
|
||||
this.rollData.chargeCavalerie = event.currentTarget.checked
|
||||
})
|
||||
html.find('#attaquants-multiple').change((event) => {
|
||||
this.rollData.attaquantsMultiples = event.currentTarget.checked
|
||||
this.rollData.attaquantsMultiples = event.currentTarget.checked
|
||||
})
|
||||
html.find('#soutiens').change((event) => {
|
||||
this.rollData.soutiens = Number(event.currentTarget.value)
|
||||
this.rollData.soutiens = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#feinte').change((event) => {
|
||||
this.rollData.feinte = event.currentTarget.checked
|
||||
this.rollData.feinte = event.currentTarget.checked
|
||||
})
|
||||
html.find('#contenir').change((event) => {
|
||||
this.rollData.contenir = event.currentTarget.checked
|
||||
this.rollData.contenir = event.currentTarget.checked
|
||||
})
|
||||
html.find('#attaque-desarme').change((event) => {
|
||||
this.rollData.attaqueDesarme = event.currentTarget.checked
|
||||
this.rollData.attaqueDesarme = event.currentTarget.checked
|
||||
})
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,10 +3,10 @@ import { HawkmoonCombat } from "./hawkmoon-combat.js";
|
||||
import { HawkmoonCommands } from "./hawkmoon-commands.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14}
|
||||
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5}
|
||||
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10}
|
||||
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10}
|
||||
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14 }
|
||||
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5 }
|
||||
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10 }
|
||||
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10 }
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HawkmoonUtility {
|
||||
@@ -15,8 +15,7 @@ export class HawkmoonUtility {
|
||||
/* -------------------------------------------- */
|
||||
static async init() {
|
||||
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) => {
|
||||
HawkmoonUtility.pushInitiativeOptions(html, options);
|
||||
})
|
||||
@@ -114,6 +113,26 @@ export class HawkmoonUtility {
|
||||
let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
|
||||
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.listeNiveauCreature = this.createDirectOptionList(0, 35)
|
||||
game.system.hawkmoon.config.listeNiveauContact = this.createDirectOptionList(1, 3)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static createDirectOptionList(min, max) {
|
||||
let options = {};
|
||||
for (let i = min; i <= max; i++) {
|
||||
options[`${i}`] = `${i}`;
|
||||
}
|
||||
return options;
|
||||
}
|
||||
static createArrayOptionList(min, max) {
|
||||
let options = [];
|
||||
for (let i = min; i <= max; i++) {
|
||||
options.push({ key: `${i}`, label: `${i}` });
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -135,25 +154,25 @@ export class HawkmoonUtility {
|
||||
/* -------------------------------------------- */
|
||||
static async chatListeners(html) {
|
||||
|
||||
html.on("click", '.predilection-reroll', async event => {
|
||||
$(html).on("click", '.predilection-reroll', async event => {
|
||||
let predIdx = $(event.currentTarget).data("predilection-index")
|
||||
let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
|
||||
let message = game.messages.get(messageId)
|
||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||
await actor.setPredilectionUsed(rollData.competence._id, predIdx)
|
||||
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
|
||||
rollData.competence = foundry.utils.duplicate(actor.getCompetence(rollData.competence._id))
|
||||
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 message = game.messages.get(messageId)
|
||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||
let actor = HawkmoonUtility.getActorFromRollData(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 message = game.messages.get(messageId)
|
||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||
@@ -161,7 +180,7 @@ export class HawkmoonUtility {
|
||||
rollData.applyCoupDevastateur = true
|
||||
actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -172,14 +191,11 @@ export class HawkmoonUtility {
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-item-header.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-item-description.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-item-nav.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-list-niveau.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-list-niveau-creature.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-item-prix.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-sante-etat.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/partial-automation.html',
|
||||
'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html',
|
||||
]
|
||||
return loadTemplates(templatePaths);
|
||||
return foundry.applications.handlebars.loadTemplates(templatePaths);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -256,15 +272,19 @@ export class HawkmoonUtility {
|
||||
|
||||
let id = rollData.rollId;
|
||||
let oldRollData = this.rollDataStore[id] || {};
|
||||
let newRollData = mergeObject(oldRollData, rollData);
|
||||
let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
|
||||
this.rollDataStore[id] = newRollData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static onSocketMesssage(msg) {
|
||||
if (msg.name == "msg_apply_combativite") {
|
||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||
defender.changeEtatCombativite(msg.data.value)
|
||||
if (msg.msg == "msg_apply_combativite") {
|
||||
let defender = game.canvas.tokens.get(msg.data.defenderTokenId)?.actor
|
||||
if (defender) {
|
||||
defender.changeEtatCombativite(msg.data.value)
|
||||
} else {
|
||||
console.warn("HawkmoonUtility.onSocketMesssage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,10 +318,10 @@ export class HawkmoonUtility {
|
||||
switch (rollMode) {
|
||||
case "blindroll": //GM only
|
||||
blind = true;
|
||||
case "gmroll": //GM + rolling player
|
||||
case "gmroll": // GM + rolling player
|
||||
whisper = this.getUsers(user => user.isGM);
|
||||
break;
|
||||
case "roll": //everybody
|
||||
case "roll": // everybody
|
||||
whisper = this.getUsers(user => user.active);
|
||||
break;
|
||||
case "selfroll":
|
||||
@@ -338,17 +358,22 @@ export class HawkmoonUtility {
|
||||
}
|
||||
}
|
||||
|
||||
//console.log("Result : ", rollData)
|
||||
//console.log("Result : ", rollData
|
||||
this.computeResultQuality(rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static computeResultQuality(rollData) {
|
||||
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
||||
rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
|
||||
rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
|
||||
rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static applyCombativite(rollData, value) {
|
||||
if (game.user.isGM) {
|
||||
if (game.user.isGM) {
|
||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||
defender.changeEtatCombativite(value)
|
||||
} else {
|
||||
@@ -364,10 +389,10 @@ export class HawkmoonUtility {
|
||||
}
|
||||
if (!rollData.attr) {
|
||||
rollData.actionImg = "systems/fvtt-hawkmoon-cyd/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
|
||||
rollData.attr = duplicate(actor.system.attributs[rollData.attrKey])
|
||||
rollData.attr = foundry.utils.duplicate(actor.system.attributs[rollData.attrKey])
|
||||
}
|
||||
if (rollData.attrKey2 != "none") {
|
||||
rollData.attr2 = duplicate(actor.system.attributs[rollData.attrKey2])
|
||||
rollData.attr2 = foundry.utils.duplicate(actor.system.attributs[rollData.attrKey2])
|
||||
}
|
||||
|
||||
if (rollData.maitriseId != "none") {
|
||||
@@ -379,10 +404,10 @@ export class HawkmoonUtility {
|
||||
|
||||
//console.log("BEFORE COMP", rollData)
|
||||
if (rollData.competence) {
|
||||
rollData.predilections = duplicate(rollData.competence.system.predilections || [])
|
||||
rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections || [])
|
||||
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
||||
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}`
|
||||
|
||||
|
||||
if (rollData.selectedTalents && rollData.selectedTalents.length > 0) {
|
||||
for (let id of rollData.selectedTalents) {
|
||||
let talent = rollData.talents.find(t => t._id == id)
|
||||
@@ -406,7 +431,7 @@ export class HawkmoonUtility {
|
||||
} else {
|
||||
rollData.diceFormula += `+${rollData.attr.value}*${rollData.multiplier}+${rollData.modificateur}+${rollData.bonusMalusContext}`
|
||||
}
|
||||
|
||||
|
||||
// Bonus arme naturelle en défense
|
||||
if (rollData.bonusArmeNaturelle) {
|
||||
rollData.diceFormula += `+${rollData.bonusArmeNaturelle}`
|
||||
@@ -415,10 +440,10 @@ export class HawkmoonUtility {
|
||||
rollData.diceFormula += `+3`
|
||||
}
|
||||
if (rollData.hasAmbidextre) {
|
||||
if ( rollData.attaqueAmbidextre1) {
|
||||
if (rollData.ambidextre1) {
|
||||
rollData.diceFormula += `-3`
|
||||
} else if ( rollData.attaqueAmbidextre2) {
|
||||
rollData.diceFormula += `-5`
|
||||
} else if (rollData.ambidextre2) {
|
||||
rollData.diceFormula += `-6`
|
||||
}
|
||||
}
|
||||
if (rollData.defenseurAuSol) {
|
||||
@@ -437,7 +462,7 @@ export class HawkmoonUtility {
|
||||
rollData.diceFormula += `+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) {
|
||||
@@ -452,20 +477,20 @@ export class HawkmoonUtility {
|
||||
if (rollData.attaqueDesarme) {
|
||||
rollData.difficulte += 10
|
||||
}
|
||||
|
||||
|
||||
// Ajout adversités
|
||||
rollData.diceFormula += `-${rollData.nbAdversites}`
|
||||
|
||||
if (rollData.arme && rollData.arme.type == "arme") {
|
||||
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||
}
|
||||
|
||||
// Gestion de la feinte éventuelle
|
||||
rollData.nbCombativitePerdu = 1
|
||||
|
||||
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||
// Gestion de la feinte éventuelle
|
||||
rollData.nbCombativitePerdu = 1
|
||||
|
||||
let myRoll = await new Roll(rollData.diceFormula).roll()
|
||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
rollData.roll = duplicate(myRoll)
|
||||
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||
console.log(">>>> ", myRoll)
|
||||
|
||||
rollData.finalResult = myRoll.total
|
||||
@@ -475,18 +500,18 @@ export class HawkmoonUtility {
|
||||
}
|
||||
if (rollData.feinte) {
|
||||
actor.changeBonneAventure(-1)
|
||||
if ( rollData.isHeroique) {
|
||||
if (rollData.isHeroique) {
|
||||
rollData.nbCombativitePerdu = "vaincu"
|
||||
} else if ( rollData.isSuccess) {
|
||||
} else if (rollData.isSuccess) {
|
||||
rollData.nbCombativitePerdu = 2
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
if ( (rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
|
||||
if ((rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
|
||||
this.applyCombativite(rollData, rollData.nbCombativitePerdu)
|
||||
}
|
||||
if (rollData.coupBas && rollData.isSuccess && rollData.defenderTokenId) {
|
||||
@@ -497,30 +522,35 @@ export class HawkmoonUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getCombativiteList(nbActivite) {
|
||||
let list = [ { value: 0, label: "Combatif"}]
|
||||
for (let i = 1; i < nbActivite-2; i++) {
|
||||
list.push({ value: i, label:"Eprouvé " + i} )
|
||||
let list = [{ value: String(0), label: "Combatif" }]
|
||||
for (let i = 1; i < nbActivite - 2; i++) {
|
||||
list.push({ value: String(i), label: "Eprouvé " + i })
|
||||
}
|
||||
list[nbActivite-2] = { value: nbActivite-2, label:"Affaibli"}
|
||||
list[nbActivite-1] = { value: nbActivite-1, label:"Très Affaibli"}
|
||||
list[nbActivite] = { value: nbActivite, label:"Vaincu"}
|
||||
list[nbActivite - 2] = { value: String(nbActivite - 2), label: "Affaibli" }
|
||||
list[nbActivite - 1] = { value: String(nbActivite - 1), label: "Très Affaibli" }
|
||||
list[nbActivite] = { value: String(nbActivite), label: "Vaincu" }
|
||||
return list
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async bonusRollHawkmoon(rollData) {
|
||||
rollData.bonusFormula = rollData.addedBonus
|
||||
console.log("Bonus Roll Hawkmoon", rollData.bonusFormula)
|
||||
|
||||
let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||
rollData.bonusRoll = duplicate(bonusRoll)
|
||||
if (!Number(rollData.bonusFormula)) {
|
||||
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
||||
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.computeResult(rollData)
|
||||
this.computeResultQuality(rollData)
|
||||
|
||||
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)
|
||||
|
||||
}
|
||||
@@ -547,7 +577,7 @@ export class HawkmoonUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static blindMessageToGM(chatOptions) {
|
||||
let chatGM = duplicate(chatOptions);
|
||||
let chatGM = foundry.utils.duplicate(chatOptions);
|
||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
||||
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
||||
console.log("blindMessageToGM", chatGM);
|
||||
@@ -611,7 +641,7 @@ export class HawkmoonUtility {
|
||||
/* -------------------------------------------- */
|
||||
static getBasicRollData() {
|
||||
let rollData = {
|
||||
rollId: randomID(16),
|
||||
rollId: foundry.utils.randomID(16),
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
modificateursOptions: this.getModificateurOptions(),
|
||||
pointAmeOptions: this.getPointAmeOptions(),
|
||||
@@ -630,11 +660,11 @@ export class HawkmoonUtility {
|
||||
distanceTir: "porteemoyenne",
|
||||
attaqueCharge: false,
|
||||
attaqueDesarme: false,
|
||||
attaqueAmbidextre1 : false,
|
||||
attaqueAmbidextre2 : false,
|
||||
chargeCavalerie : false,
|
||||
contenir : false,
|
||||
soutiens : 0
|
||||
attaqueAmbidextre1: false,
|
||||
attaqueAmbidextre2: false,
|
||||
chargeCavalerie: false,
|
||||
contenir: false,
|
||||
soutiens: 0
|
||||
}
|
||||
return rollData
|
||||
}
|
||||
@@ -646,6 +676,7 @@ export class HawkmoonUtility {
|
||||
rollData.defenderTokenId = target.id
|
||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||
rollData.armeDefense = defender.getBestDefenseValue()
|
||||
rollData.armeAttaqueDefenseur = defender.getBestAttackValue()
|
||||
rollData.targetVigueur = defender.getVigueur()
|
||||
rollData.protectionDefenseur = defender.getProtection()
|
||||
if (rollData.immobiliser || rollData.repousser) {
|
||||
@@ -654,11 +685,13 @@ export class HawkmoonUtility {
|
||||
} else if (rollData.coupBas) {
|
||||
let combatValues = defender.getCombatValues()
|
||||
rollData.difficulte = combatValues.defenseTotal
|
||||
}else if ( rollData.assomer) {
|
||||
} else if (rollData.assomer) {
|
||||
rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
|
||||
} else if (rollData.desengager) {
|
||||
rollData.difficulte = rollData.armeAttaqueDefenseur?.system?.totalOffensif || 0;
|
||||
} else if (rollData.armeDefense) {
|
||||
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) {
|
||||
rollData.bonusArmeNaturelle = 3
|
||||
}
|
||||
@@ -676,7 +709,7 @@ export class HawkmoonUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static applyBonneAventureRoll(li, changed, addedBonus) {
|
||||
let msgId = li.data("message-id")
|
||||
let msgId = $(li).data("message-id")
|
||||
let msg = game.messages.get(msgId)
|
||||
if (msg) {
|
||||
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
||||
@@ -695,7 +728,7 @@ export class HawkmoonUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static applyEclatRoll(li, changed, addedBonus) {
|
||||
let msgId = li.data("message-id")
|
||||
let msgId = $(li).data("message-id")
|
||||
let msg = game.messages.get(msgId)
|
||||
if (msg) {
|
||||
let rollData = msg.getFlag("world", "hawkmoon-roll")
|
||||
@@ -716,13 +749,13 @@ export class HawkmoonUtility {
|
||||
static chatRollMenu(html, options) {
|
||||
let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
|
||||
let canApplyBA = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let message = game.messages.get($(li).attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||
return (!rollData.isReroll && actor.getBonneAventure() > 0)
|
||||
}
|
||||
let canApplyPE = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let message = game.messages.get($(li).attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "hawkmoon-roll")
|
||||
let actor = HawkmoonUtility.getActorFromRollData(rollData)
|
||||
return (!rollData.isReroll && actor.getEclat() > 0)
|
||||
@@ -748,7 +781,7 @@ export class HawkmoonUtility {
|
||||
name: "Relancer le dé (1 point d'Eclat)",
|
||||
icon: "<i class='fas fa-user-plus'></i>",
|
||||
condition: canApply && canApplyPE,
|
||||
callback: li => HawkmoonUtility.applyEclatRoll(li, -3, "reroll")
|
||||
callback: li => HawkmoonUtility.applyEclatRoll(li, -1, "reroll")
|
||||
}
|
||||
)
|
||||
return options
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000309
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:44.588303 7fcc654006c0 Recovering log #150
|
||||
2024/04/24-19:19:45.046737 7fcc654006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:45.047257 7fcc654006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.674583 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.674627 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.681197 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.681325 7fcc5e4006c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.681347 7fcc5e4006c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.800687 7f99ca7fc6c0 Recovering log #307
|
||||
2025/08/24-16:39:04.811571 7f99ca7fc6c0 Delete type=3 #305
|
||||
2025/08/24-16:39:04.811645 7f99ca7fc6c0 Delete type=0 #307
|
||||
2025/08/24-16:59:15.773185 7f99c8ff96c0 Level-0 table #312: started
|
||||
2025/08/24-16:59:15.773255 7f99c8ff96c0 Level-0 table #312: 0 bytes OK
|
||||
2025/08/24-16:59:15.779965 7f99c8ff96c0 Delete type=0 #310
|
||||
2025/08/24-16:59:15.786903 7f99c8ff96c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.786956 7f99c8ff96c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.940864 7f38a3e006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.951368 7f38a3e006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.951425 7f38a3e006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.757658 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.757696 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.765139 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.765299 7f38a10006c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.765326 7f38a10006c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.187484 7f0798bfa6c0 Recovering log #303
|
||||
2025/07/02-22:46:22.198111 7f0798bfa6c0 Delete type=3 #301
|
||||
2025/07/02-22:46:22.198158 7f0798bfa6c0 Delete type=0 #303
|
||||
2025/07/02-22:48:09.734542 7f07923ff6c0 Level-0 table #308: started
|
||||
2025/07/02-22:48:09.734569 7f07923ff6c0 Level-0 table #308: 0 bytes OK
|
||||
2025/07/02-22:48:09.744356 7f07923ff6c0 Delete type=0 #306
|
||||
2025/07/02-22:48:09.791085 7f07923ff6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.791154 7f07923ff6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/aides-de-jeu/MANIFEST-000309
Normal file
BIN
packs/aides-de-jeu/MANIFEST-000309
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/armes/000275.ldb
Normal file
BIN
packs/armes/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:43.144098 7fcc5fe006c0 Recovering log #150
|
||||
2024/04/24-19:19:43.367448 7fcc5fe006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:43.367549 7fcc5fe006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.619450 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.619488 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.626512 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.632878 7fcc5e4006c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.639837 7fcc5e4006c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.657736 7f99ca7fc6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.668479 7f99ca7fc6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.668567 7f99ca7fc6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.720000 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.720030 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.726074 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.733124 7f99c8ff96c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.733174 7f99c8ff96c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.841800 7f38a2a006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.851587 7f38a2a006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.851700 7f38a2a006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.687706 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.687751 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.694223 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.709272 7f38a10006c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.709352 7f38a10006c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.075956 7f07937fe6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.086980 7f07937fe6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.087033 7f07937fe6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.675327 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.675362 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.686702 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.686958 7f07923ff6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.686996 7f07923ff6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/armes/MANIFEST-000308
Normal file
BIN
packs/armes/MANIFEST-000308
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/competences-creatures/000275.ldb
Normal file
BIN
packs/competences-creatures/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:43.017708 7fcc64a006c0 Recovering log #150
|
||||
2024/04/24-19:19:43.076452 7fcc64a006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:43.076601 7fcc64a006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.605428 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.605456 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.612661 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.619414 7fcc5e4006c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.626638 7fcc5e4006c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.627677 7f99c97fa6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.637852 7f99c97fa6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.637963 7f99c97fa6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.678161 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.678292 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.685710 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.705541 7f99c8ff96c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.705635 7f99c8ff96c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.814328 7f38a2a006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.824924 7f38a2a006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.825056 7f38a2a006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.694330 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.694352 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.702258 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.709293 7f38a10006c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.709368 7f38a10006c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.050017 7f0793fff6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.059979 7f0793fff6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.060037 7f0793fff6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.634420 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.634441 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.644014 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.644146 7f07923ff6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.644167 7f07923ff6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/competences-creatures/MANIFEST-000308
Normal file
BIN
packs/competences-creatures/MANIFEST-000308
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/competences/000275.ldb
Normal file
BIN
packs/competences/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:42.882823 7fcc64a006c0 Recovering log #150
|
||||
2024/04/24-19:19:42.947075 7fcc64a006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:42.947209 7fcc64a006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.592157 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.592206 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.598509 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.605418 7fcc5e4006c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.612914 7fcc5e4006c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.595109 7f99caffd6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.604941 7f99caffd6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.605009 7f99caffd6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.698867 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.698952 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.705403 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.705617 7f99c8ff96c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.705693 7f99c8ff96c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.786249 7f38a2a006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.797379 7f38a2a006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.797432 7f38a2a006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.681177 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.681197 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.687480 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.709243 7f38a10006c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.709312 7f38a10006c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.022022 7f07937fe6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.031802 7f07937fe6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.031862 7f07937fe6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.604476 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.604540 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.616123 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.644121 7f07923ff6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.644157 7f07923ff6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/competences/MANIFEST-000308
Normal file
BIN
packs/competences/MANIFEST-000308
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/equipement/000275.ldb
Normal file
BIN
packs/equipement/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:43.562687 7fcc5fe006c0 Recovering log #150
|
||||
2024/04/24-19:19:43.720740 7fcc5fe006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:43.720811 7fcc5fe006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.632917 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.632957 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.639646 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.647315 7fcc5e4006c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.653621 7fcc5e4006c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.685664 7f99c9ffb6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.696583 7f99c9ffb6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.696664 7f99c9ffb6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.713614 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.713701 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.719863 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.733110 7f99c8ff96c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.733164 7f99c8ff96c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.869311 7f38a2a006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.880871 7f38a2a006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.880923 7f38a2a006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.709571 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.709616 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.716550 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.736946 7f38a10006c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.736993 7f38a10006c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.103691 7f0798bfa6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.113425 7f0798bfa6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.113488 7f0798bfa6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.644254 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.644276 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.654757 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.686905 7f07923ff6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.686969 7f07923ff6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/equipement/MANIFEST-000308
Normal file
BIN
packs/equipement/MANIFEST-000308
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/historiques/000275.ldb
Normal file
BIN
packs/historiques/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:43.080280 7fcc5fe006c0 Recovering log #150
|
||||
2024/04/24-19:19:43.137577 7fcc5fe006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:43.137905 7fcc5fe006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.612932 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.613011 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.619236 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.626625 7fcc5e4006c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.632899 7fcc5e4006c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.642541 7f99c9ffb6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.652781 7f99c9ffb6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.652862 7f99c9ffb6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.685953 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.686013 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.692263 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.705571 7f99c8ff96c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.705656 7f99c8ff96c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.827816 7f38a3e006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.838730 7f38a3e006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.838786 7f38a3e006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.702497 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.702540 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.708964 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.709333 7f38a10006c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.709410 7f38a10006c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.062411 7f0798bfa6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.072211 7f0798bfa6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.072276 7f0798bfa6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.625684 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.625708 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.634315 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.644139 7f07923ff6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.644162 7f07923ff6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/historiques/MANIFEST-000308
Normal file
BIN
packs/historiques/MANIFEST-000308
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/mutations/000185.ldb
Normal file
BIN
packs/mutations/000185.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000062
|
||||
MANIFEST-000218
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:42.952046 7fcc5fe006c0 Recovering log #60
|
||||
2024/04/24-19:19:43.001963 7fcc5fe006c0 Delete type=3 #58
|
||||
2024/04/24-19:19:43.002046 7fcc5fe006c0 Delete type=0 #60
|
||||
2024/04/24-20:38:33.598679 7fcc5e4006c0 Level-0 table #65: started
|
||||
2024/04/24-20:38:33.598713 7fcc5e4006c0 Level-0 table #65: 0 bytes OK
|
||||
2024/04/24-20:38:33.605307 7fcc5e4006c0 Delete type=0 #63
|
||||
2024/04/24-20:38:33.612894 7fcc5e4006c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.619433 7fcc5e4006c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.611112 7f99ca7fc6c0 Recovering log #216
|
||||
2025/08/24-16:39:04.621971 7f99ca7fc6c0 Delete type=3 #214
|
||||
2025/08/24-16:39:04.622127 7f99ca7fc6c0 Delete type=0 #216
|
||||
2025/08/24-16:59:15.692465 7f99c8ff96c0 Level-0 table #221: started
|
||||
2025/08/24-16:59:15.692517 7f99c8ff96c0 Level-0 table #221: 0 bytes OK
|
||||
2025/08/24-16:59:15.698622 7f99c8ff96c0 Delete type=0 #219
|
||||
2025/08/24-16:59:15.705597 7f99c8ff96c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.705674 7f99c8ff96c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.800976 7f38a3e006c0 Recovering log #56
|
||||
2024/04/07-18:44:43.810946 7f38a3e006c0 Delete type=3 #54
|
||||
2024/04/07-18:44:43.811011 7f38a3e006c0 Delete type=0 #56
|
||||
2024/04/07-18:53:15.674292 7f38a10006c0 Level-0 table #61: started
|
||||
2024/04/07-18:53:15.674318 7f38a10006c0 Level-0 table #61: 0 bytes OK
|
||||
2024/04/07-18:53:15.680930 7f38a10006c0 Delete type=0 #59
|
||||
2024/04/07-18:53:15.681066 7f38a10006c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.681085 7f38a10006c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.035824 7f0798bfa6c0 Recovering log #212
|
||||
2025/07/02-22:46:22.046033 7f0798bfa6c0 Delete type=3 #210
|
||||
2025/07/02-22:46:22.046089 7f0798bfa6c0 Delete type=0 #212
|
||||
2025/07/02-22:48:09.616234 7f07923ff6c0 Level-0 table #217: started
|
||||
2025/07/02-22:48:09.616258 7f07923ff6c0 Level-0 table #217: 0 bytes OK
|
||||
2025/07/02-22:48:09.625537 7f07923ff6c0 Delete type=0 #215
|
||||
2025/07/02-22:48:09.644131 7f07923ff6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.644152 7f07923ff6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/mutations/MANIFEST-000218
Normal file
BIN
packs/mutations/MANIFEST-000218
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/profils/000275.ldb
Normal file
BIN
packs/profils/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:43.730272 7fcc654006c0 Recovering log #150
|
||||
2024/04/24-19:19:43.889184 7fcc654006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:43.889335 7fcc654006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.639856 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.639921 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.647189 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.653608 7fcc5e4006c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.660740 7fcc5e4006c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.701459 7f99caffd6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.712420 7f99caffd6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.712492 7f99caffd6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.746507 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.746545 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.752641 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.759929 7f99c8ff96c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.759962 7f99c8ff96c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.885807 7f38a3e006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.895718 7f38a3e006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.895858 7f38a3e006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.716770 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.716808 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.723524 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.736955 7f38a10006c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.737004 7f38a10006c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.117261 7f07937fe6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.127319 7f07937fe6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.127379 7f07937fe6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.664713 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.664747 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.675149 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.686945 7f07923ff6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.686987 7f07923ff6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/profils/MANIFEST-000308
Normal file
BIN
packs/profils/MANIFEST-000308
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/protections/000275.ldb
Normal file
BIN
packs/protections/000275.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000308
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/24-19:19:43.378670 7fcc654006c0 Recovering log #150
|
||||
2024/04/24-19:19:43.554194 7fcc654006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:43.554281 7fcc654006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.626647 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.626669 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.632751 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.639816 7fcc5e4006c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
2024/04/24-20:38:33.647329 7fcc5e4006c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.672110 7f99c97fa6c0 Recovering log #306
|
||||
2025/08/24-16:39:04.682415 7f99c97fa6c0 Delete type=3 #304
|
||||
2025/08/24-16:39:04.682496 7f99c97fa6c0 Delete type=0 #306
|
||||
2025/08/24-16:59:15.705816 7f99c8ff96c0 Level-0 table #311: started
|
||||
2025/08/24-16:59:15.705873 7f99c8ff96c0 Level-0 table #311: 0 bytes OK
|
||||
2025/08/24-16:59:15.713330 7f99c8ff96c0 Delete type=0 #309
|
||||
2025/08/24-16:59:15.733088 7f99c8ff96c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.733151 7f99c8ff96c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2024/04/07-18:44:43.856327 7f38a3e006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.867226 7f38a3e006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.867361 7f38a3e006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.723744 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.723796 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.730185 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.736963 7f38a10006c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
2024/04/07-18:53:15.736999 7f38a10006c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.089999 7f0793fff6c0 Recovering log #302
|
||||
2025/07/02-22:46:22.100226 7f0793fff6c0 Delete type=3 #300
|
||||
2025/07/02-22:46:22.100296 7f0793fff6c0 Delete type=0 #302
|
||||
2025/07/02-22:48:09.654876 7f07923ff6c0 Level-0 table #307: started
|
||||
2025/07/02-22:48:09.654897 7f07923ff6c0 Level-0 table #307: 0 bytes OK
|
||||
2025/07/02-22:48:09.664567 7f07923ff6c0 Delete type=0 #305
|
||||
2025/07/02-22:48:09.686931 7f07923ff6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.686978 7f07923ff6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/protections/MANIFEST-000308
Normal file
BIN
packs/protections/MANIFEST-000308
Normal file
Binary file not shown.
BIN
packs/scenes/000114.ldb
Normal file
BIN
packs/scenes/000114.ldb
Normal file
Binary file not shown.
1
packs/scenes/CURRENT
Normal file
1
packs/scenes/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000147
|
||||
8
packs/scenes/LOG
Normal file
8
packs/scenes/LOG
Normal file
@@ -0,0 +1,8 @@
|
||||
2025/08/24-16:39:04.786487 7f99c97fa6c0 Recovering log #145
|
||||
2025/08/24-16:39:04.796655 7f99c97fa6c0 Delete type=3 #143
|
||||
2025/08/24-16:39:04.796726 7f99c97fa6c0 Delete type=0 #145
|
||||
2025/08/24-16:59:15.752769 7f99c8ff96c0 Level-0 table #150: started
|
||||
2025/08/24-16:59:15.752800 7f99c8ff96c0 Level-0 table #150: 0 bytes OK
|
||||
2025/08/24-16:59:15.759765 7f99c8ff96c0 Delete type=0 #148
|
||||
2025/08/24-16:59:15.759940 7f99c8ff96c0 Manual compaction at level-0 from '!scenes!VOzC5ey4qi1C34MY' @ 72057594037927935 : 1 .. '!scenes!mfosNsLsHN5Pf4TO' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:59:15.759971 7f99c8ff96c0 Manual compaction at level-1 from '!scenes!VOzC5ey4qi1C34MY' @ 72057594037927935 : 1 .. '!scenes!mfosNsLsHN5Pf4TO' @ 0 : 0; will stop at (end)
|
||||
8
packs/scenes/LOG.old
Normal file
8
packs/scenes/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2025/07/02-22:46:22.172671 7f0793fff6c0 Recovering log #141
|
||||
2025/07/02-22:46:22.182219 7f0793fff6c0 Delete type=3 #139
|
||||
2025/07/02-22:46:22.182282 7f0793fff6c0 Delete type=0 #141
|
||||
2025/07/02-22:48:09.722959 7f07923ff6c0 Level-0 table #146: started
|
||||
2025/07/02-22:48:09.722995 7f07923ff6c0 Level-0 table #146: 0 bytes OK
|
||||
2025/07/02-22:48:09.734269 7f07923ff6c0 Delete type=0 #144
|
||||
2025/07/02-22:48:09.734444 7f07923ff6c0 Manual compaction at level-0 from '!scenes!VOzC5ey4qi1C34MY' @ 72057594037927935 : 1 .. '!scenes!mfosNsLsHN5Pf4TO' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:48:09.734466 7f07923ff6c0 Manual compaction at level-1 from '!scenes!VOzC5ey4qi1C34MY' @ 72057594037927935 : 1 .. '!scenes!mfosNsLsHN5Pf4TO' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/scenes/MANIFEST-000147
Normal file
BIN
packs/scenes/MANIFEST-000147
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000152
|
||||
MANIFEST-000304
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2024/04/24-19:19:44.361715 7fcc5fe006c0 Recovering log #150
|
||||
2024/04/24-19:19:44.586287 7fcc5fe006c0 Delete type=3 #148
|
||||
2024/04/24-19:19:44.586391 7fcc5fe006c0 Delete type=0 #150
|
||||
2024/04/24-20:38:33.660752 7fcc5e4006c0 Level-0 table #155: started
|
||||
2024/04/24-20:38:33.660779 7fcc5e4006c0 Level-0 table #155: 0 bytes OK
|
||||
2024/04/24-20:38:33.667170 7fcc5e4006c0 Delete type=0 #153
|
||||
2024/04/24-20:38:33.674538 7fcc5e4006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2025/08/24-16:39:04.771948 7f99ca7fc6c0 Recovering log #302
|
||||
2025/08/24-16:39:04.782426 7f99ca7fc6c0 Delete type=3 #300
|
||||
2025/08/24-16:39:04.782565 7f99ca7fc6c0 Delete type=0 #302
|
||||
2025/08/24-16:59:15.733312 7f99c8ff96c0 Level-0 table #307: started
|
||||
2025/08/24-16:59:15.733353 7f99c8ff96c0 Level-0 table #307: 0 bytes OK
|
||||
2025/08/24-16:59:15.740079 7f99c8ff96c0 Delete type=0 #305
|
||||
2025/08/24-16:59:15.759900 7f99c8ff96c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2024/04/07-18:44:43.927559 7f38a2a006c0 Recovering log #146
|
||||
2024/04/07-18:44:43.937525 7f38a2a006c0 Delete type=3 #144
|
||||
2024/04/07-18:44:43.937610 7f38a2a006c0 Delete type=0 #146
|
||||
2024/04/07-18:53:15.737130 7f38a10006c0 Level-0 table #151: started
|
||||
2024/04/07-18:53:15.737157 7f38a10006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/04/07-18:53:15.743304 7f38a10006c0 Delete type=0 #149
|
||||
2024/04/07-18:53:15.765257 7f38a10006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2025/07/02-22:46:22.159913 7f07937fe6c0 Recovering log #298
|
||||
2025/07/02-22:46:22.169652 7f07937fe6c0 Delete type=3 #296
|
||||
2025/07/02-22:46:22.169703 7f07937fe6c0 Delete type=0 #298
|
||||
2025/07/02-22:48:09.697135 7f07923ff6c0 Level-0 table #303: started
|
||||
2025/07/02-22:48:09.697160 7f07923ff6c0 Level-0 table #303: 0 bytes OK
|
||||
2025/07/02-22:48:09.712571 7f07923ff6c0 Delete type=0 #301
|
||||
2025/07/02-22:48:09.734426 7f07923ff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/tables/MANIFEST-000304
Normal file
BIN
packs/tables/MANIFEST-000304
Normal file
Binary file not shown.
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