Compare commits

..

5 Commits

89 changed files with 1070 additions and 380 deletions

View File

@ -1,27 +1,27 @@
{
"ACTOR": {
"TypePersonnage": "Personnage",
"TypePNJ": "PNJ"
},
"ITEM": {
"TypeArme": "Arme",
"TypeCompetence": "Compétence",
"TypeProtection": "Protection",
"TypePacte": "Pacte",
"TypeTraitchaotique": "Trait Chaotique",
"TypeMonnaie": "Monnaie",
"TypeDon": "Don",
"TypeTendance": "Tendance",
"TypeRune": "Rune",
"TypeEquipement": "Equipement",
"TypeCapacite": "Capacité",
"TypeOrigine": "Origine",
"TypeHeritage": "Héritage",
"TypeMetier": "Métier",
"TypeRuneeffect": "Effet de Rune",
"TypeBouclier": "Bouclier"
"TYPES": {
"Actor": {
"personnage": "Personnage",
"PNJ": "PNJ"
},
"Item": {
"arme": "Arme",
"competence": "Compétence",
"protection": "Protection",
"pacte": "Pacte",
"traitchaotique": "Trait Chaotique",
"monnaie": "Monnaie",
"don": "Don",
"tendance": "Tendance",
"rune": "Rune",
"equipement": "Equipement",
"capacite": "Capacité",
"origine": "Origine",
"heritage": "Héritage",
"metier": "Métier",
"runeeffect": "Effet de Rune",
"bouclier": "Bouclier",
"modifier": "Modificateur"
}
}
}

View File

@ -54,7 +54,13 @@ export class MournbladeActorSheet extends ActorSheet {
metier: duplicate(this.actor.getMetier() || {}),
combat: this.actor.getCombatValues(),
equipements: duplicate(this.actor.getEquipments()),
modifiers: duplicate(this.actor.getModifiers()),
monnaies: duplicate(this.actor.getMonnaies()),
runeEffects: duplicate(this.actor.getRuneEffects()),
config: game.system.mournblade.config,
protectionTotal: this.actor.getProtectionTotal(),
santeMalus: this.actor.getStatusMalus(),
ameMalus: this.actor.getAmeMalus(),
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
options: this.options,
owner: this.document.isOwner,
@ -142,6 +148,15 @@ export class MournbladeActorSheet extends ActorSheet {
const itemType = $(event.currentTarget).data("type")
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
})
html.find('.sante-modify').click((event) => {
const santeType = $(event.currentTarget).data("type")
const value = $(event.currentTarget).data("value")
this.actor.incDecSante(santeType, value, false)
})
html.find('.ame-modify').click((event) => {
const value = $(event.currentTarget).data("value")
this.actor.incDecAme(value)
})
html.find('.lock-unlock-sheet').click((event) => {

View File

@ -47,11 +47,18 @@ export class MournbladeActor extends Actor {
return super.create(data, options);
}
/* -------------------------------------------- */
setModifier(name, type, value) {
this.createEmbeddedDocuments("Item", [{ type: "modifier", name: name, system: { modifiertype: type, value: value } }])
ui.notifications.info("Le modificateur " + name + " a été ajouté à " + this.name + ".")
}
/* -------------------------------------------- */
prepareArme(arme) {
arme = duplicate(arme)
let combat = this.getCombatValues()
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
arme.system.isMelee = true
arme.system.competence = 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
@ -61,6 +68,7 @@ export class MournbladeActor extends Actor {
}
}
if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
arme.system.isDistance = true
arme.system.competence = 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
@ -101,8 +109,22 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
getItemSorted( types) {
let items = this.items.filter(item => types.includes(item.type )) || []
getModifiersForRoll() {
let modifiers = []
for (let mod of this.items) {
if (mod.type == "modifier" && mod.system.modifiertype == "roll") {
let modObj = mod.toObject()
modObj.system.apply = true
modifiers.push(modObj)
}
}
MournbladeUtility.sortArrayObjectsByName(modifiers)
return modifiers
}
/* -------------------------------------------- */
getItemSorted(types) {
let items = this.items.filter(item => types.includes(item.type)) || []
MournbladeUtility.sortArrayObjectsByName(items)
return items
}
@ -118,6 +140,9 @@ export class MournbladeActor extends Actor {
getEquipments() {
return this.getItemSorted(["equipement"])
}
getModifiers() {
return this.getItemSorted(["modifier"])
}
getTraitsChaotiques() {
return this.getItemSorted(["traitchaotique"])
}
@ -127,6 +152,9 @@ export class MournbladeActor extends Actor {
getArmors() {
return this.getItemSorted(["protection"])
}
getRuneEffects() {
return this.getItemSorted(["runeeffect"])
}
getOrigine() {
return this.items.find(item => item.type == "origine")
}
@ -160,12 +188,23 @@ export class MournbladeActor extends Actor {
return comp
}
/* -------------------------------------------- */
getProtectionTotal() {
let protection = 0
for (let item of this.items) {
if (item.type == "protection" && item.system.equipped) {
protection += item.system.protection
}
}
return protection
}
/* -------------------------------------------- */
getAspect() {
return (this.system.balance.loi > this.system.balance.chaos) ? this.system.balance.loi : this.system.balance.chaos
return (this.system.balance.loi > this.system.balance.chaos) ? this.system.balance.loi : this.system.balance.chaos
}
getMarge() {
return Math.abs( this.system.balance.loi - this.system.balance.chaos)
return Math.abs(this.system.balance.loi - this.system.balance.chaos)
}
getAlignement() {
return (this.system.balance.loi > this.system.balance.chaos) ? "loyal" : "chaotique"
@ -240,12 +279,49 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
async equipItem(itemId) {
let item = this.items.find(item => item.id == itemId)
if (item && item.system) {
if (item?.system) {
let update = { _id: item.id, "system.equipped": !item.system.equipped }
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
}
}
/* -------------------------------------------- */
getStatusMalus() {
if (this.system.biodata.ignoresantemalus) {
return 0
}
let malusL = 0
let malusNL = 0
if (this.system.sante.base - this.system.sante.letaux < 10) {
malusL = -2
}
if (this.system.sante.base - this.system.sante.letaux < 5) {
malusL = -5
}
if (this.system.sante.base - this.system.sante.nonletaux < 10) {
malusNL = -2
}
if (this.system.sante.base - this.system.sante.nonletaux < 5) {
malusNL = -5
}
return Math.min(malusL, malusNL)
}
/* -------------------------------------------- */
getAmeMalus() {
if (this.system.biodata.ignoreamemalus) {
return 0
}
let malusA = 0
if (this.system.ame.currentmax - this.system.ame.value < 10) {
malusA = -2
}
if (this.system.ame.currentmax - this.system.ame.value < 5) {
malusA = -5
}
return malusA
}
/* -------------------------------------------- */
editItemField(itemId, itemType, itemField, dataType, value) {
let item = this.items.find(item => item.id == itemId)
@ -261,6 +337,44 @@ export class MournbladeActor extends Actor {
}
}
/* -------------------------------------------- */
incDecSante(type, value, applyArmure = true) {
value = Number(value)
if (value && applyArmure) {
let protection = this.getProtectionTotal()
value -= protection
value = Math.max(0, Number(value))
}
if (value) {
let newSante = duplicate(this.system.sante)
newSante[type] += Number(value)
newSante[type] = Math.max(0, newSante[type])
if (newSante[type] > this.system.sante.base) {
value -= this.system.sante.base - newSante[type]
newSante[type] = this.system.sante.base
} else {
value = 0
}
newSante[type] = Math.min(newSante[type], newSante.base)
if (value && type == "nonletaux") {
newSante["letaux"] += value
}
this.update({ 'system.sante': newSante })
}
}
/* -------------------------------------------- */
incDecAme(value) {
value = Number(value)
if (value) {
let newAme = duplicate(this.system.ame)
newAme.value += Number(value)
newAme.value = Math.max(0, newAme.value)
newAme.value = Math.min(newAme.value, newAme.currentmax)
this.update({ 'system.ame': newAme })
}
}
/* -------------------------------------------- */
getBonneAventure() {
return this.system.bonneaventure.actuelle
@ -292,12 +406,12 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
subPointsAme(runeMode, value) {
let ame = duplicate(this.system.ame)
if(runeMode == "prononcer") {
ame.value -= value
if (runeMode == "prononcer") {
ame.value += value
} else {
ame.currentmax -= value
}
this.update( {'system.ame': ame})
this.update({ 'system.ame': ame })
}
/* -------------------------------------------- */
@ -377,22 +491,22 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
getInitiativeScore( ) {
getInitiativeScore() {
return Number(this.system.attributs.adr.value) + Number(this.system.combat.initbonus)
}
/* -------------------------------------------- */
getBestDefenseValue() {
let defenseList = this.items.filter(item => (item.type =="arme" || item.type == "bouclier") && item.system.equipped)
let defenseList = this.items.filter(item => (item.type == "arme" || item.type == "bouclier") && item.system.equipped)
let maxDef = 0
let bestArme
for(let arme of defenseList) {
for (let arme of defenseList) {
if (arme.type == "arme" && arme.system.isdefense) {
arme = this.prepareArme(arme)
}
if (arme.type == "bouclier" ) {
if (arme.type == "bouclier") {
arme = this.prepareBouclier(arme)
}
if ( arme.system.totalDefensif > maxDef) {
if (arme.system.totalDefensif > maxDef) {
maxDef = arme.system.totalDefensif
bestArme = duplicate(arme)
}
@ -411,6 +525,10 @@ export class MournbladeActor extends Actor {
rollData.canEclatDoubleD20 = this.canEclatDoubleD20()
rollData.doubleD20 = false
rollData.attributs = MournbladeUtility.getAttributs()
rollData.selectDifficulte = true
rollData.malusSante = this.getStatusMalus() + this.system.sante.malusmanuel
rollData.malusAme = this.getAmeMalus()
rollData.modifiers = this.getModifiersForRoll()
if (attrKey) {
rollData.attrKey = attrKey
@ -424,7 +542,7 @@ export class MournbladeActor extends Actor {
rollData.actionImg = rollData.competence?.img
}
if (compName) {
rollData.competence = duplicate(this.items.find( item => item.name.toLowerCase() == compName.toLowerCase()) || {})
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
rollData.actionImg = rollData.competence?.img
}
return rollData
@ -446,22 +564,22 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
async rollRune(runeId) {
async rollRune(runeId) {
let comp = this.items.find(comp => comp.type == "competence" && comp.name.toLowerCase() == "savoir : runes")
if ( !comp) {
if (!comp) {
ui.notifications.warn("La compétence Savoirs : Runes n'a pas été trouvée, abandon.")
return
}
let rollData = this.getCommonRollData("cla", undefined, "Savoir : Runes")
rollData.rune = duplicate(this.items.get(runeId) || {})
rollData.rune = duplicate(this.items.get(runeId) || {})
rollData.difficulte = rollData.rune?.system?.seuil || 0
rollData.runemode = "prononcer"
rollData.runeame = 1
rollData.runeame = 1
console.log("runeData", rollData)
let rollDialog = await MournbladeRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */
async rollArmeOffensif(armeId) {
let arme = this.items.get(armeId)
@ -473,6 +591,15 @@ export class MournbladeActor extends Actor {
}
let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
rollData.arme = arme
rollData.typeAttaque = "assaut"
rollData.typeCouvert = "aucun"
rollData.visee = false
rollData.ciblecourt = false
rollData.cibleconsciente = false
// Do not display difficulte if defense weapon or distance
if (rollData.armeDefense || rollData.arme.system.isDistance) {
rollData.selectDifficulte = false
}
console.log("ARME!", rollData)
let rollDialog = await MournbladeRollDialog.create(this, rollData)
rollDialog.render(true)
@ -487,6 +614,7 @@ export class MournbladeActor extends Actor {
if (arme.type == "bouclier") {
arme = this.prepareBouclier(arme)
}
rollData.degatsFormula = arme.system.totalDegats
let roll = new Roll(arme.system.totalDegats).roll({ async: false })
await MournbladeUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
let rollData = {

View File

@ -0,0 +1,23 @@
export const MOURNBLADE_CONFIG = {
attaques:{
assaut: "Assaut",
precise: "Attaque Précise",
feinte: "Feinte",
coupbas: "Coup Bas",
charger: "Charger",
contenir: "Contenir l'adversaire",
desarmer: "Désarmer",
},
couverts:{
aucun: {name: "Aucun", value: 0},
rondache: {name: "Rondache ou léger (-2)", value: -2},
pavois: { name: "Pavois ou à moitié (-5)", value: -5},
complet: {name:"Quasi complet (-10)", value: -10},
},
modifierTypes: {
aucun: {name: "Aucun", value: 0},
roll: {name: "Jet", value: 0},
degats: {name: "Dégats", value: 0},
}
};

View File

@ -64,6 +64,7 @@ export class MournbladeItemSheet extends ItemSheet {
options: this.options,
owner: this.document.isOwner,
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
config: game.system.mournblade.config,
mr: (this.object.type == 'specialisation'),
isGM: game.user.isGM
}
@ -135,26 +136,26 @@ export class MournbladeItemSheet extends ItemSheet {
let index = li.data("prediction-index")
let pred = duplicate(this.object.system.predilections)
pred[index].name = ev.currentTarget.value
this.object.update( { 'data.predilections': pred })
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)
pred.splice(index,1)
this.object.update( { 'data.predilections': pred })
this.object.update( { 'system.predilections': pred })
})
html.find('.use-prediction').change(ev => {
const li = $(ev.currentTarget).parents(".prediction-item")
let index = li.data("prediction-index")
let pred = duplicate(this.object.system.predilections)
pred[index].used = ev.currentTarget.checked
this.object.update( { 'data.predilections': pred })
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", used: false })
this.object.update( { 'data.predilections': pred })
pred.push( { name: "Nouvelle prédilection", id: randomID(), used: false })
this.object.update( { 'system.predilections': pred })
})
// Update Inventory Item
html.find('.item-delete').click(ev => {

View File

@ -11,6 +11,7 @@ export const defaultItemImg = {
predilection: "systems/fvtt-mournblade/assets/icons/predilection.webp",
protection: "systems/fvtt-mournblade/assets/icons/protection.webp",
rune: "systems/fvtt-mournblade/assets/icons/rune.webp",
runeeffect: "systems/fvtt-mournblade/assets/icons/rune.webp",
tendance: "systems/fvtt-mournblade/assets/icons/tendance.webp",
traitchaotique: "systems/fvtt-mournblade/assets/icons/traitchaotique.webp",
}

View File

@ -15,6 +15,7 @@ import { MournbladeActorSheet } from "./mournblade-actor-sheet.js";
import { MournbladeUtility } from "./mournblade-utility.js";
import { MournbladeCombat } from "./mournblade-combat.js";
import { MournbladeItem } from "./mournblade-item.js";
import { MOURNBLADE_CONFIG } from "./mournblade-config.js";
/* -------------------------------------------- */
/* Foundry VTT Initialization */
@ -45,7 +46,9 @@ Hooks.once("init", async function () {
CONFIG.Combat.documentClass = MournbladeCombat
CONFIG.Actor.documentClass = MournbladeActor
CONFIG.Item.documentClass = MournbladeItem
game.system.mournblade = { }
game.system.mournblade = {
config : MOURNBLADE_CONFIG,
}
/* -------------------------------------------- */
// Register sheet application classes

View File

@ -52,14 +52,22 @@ export class MournbladeRollDialog extends Dialog {
activateListeners(html) {
super.activateListeners(html);
var dialog = this;
function onLoad() {
}
$(function () { onLoad(); });
html.find('.apply-modifier').change(async (event) => {
let modifierIdx = $(event.currentTarget).data("modifier-idx")
let modifier = this.rollData.modifiers[modifierIdx]
modifier.system.apply = event.currentTarget.checked
})
html.find('#modificateur').change(async (event) => {
this.rollData.modificateur = Number(event.currentTarget.value)
})
html.find('#typeAttaque').change(async (event) => {
this.rollData.typeAttaque = String(event.currentTarget.value)
})
html.find('#difficulte').change(async (event) => {
this.rollData.difficulte = Number(event.currentTarget.value)
})
@ -75,5 +83,18 @@ export class MournbladeRollDialog extends Dialog {
html.find('#doubleD20').change(async (event) => {
this.rollData.doubleD20 = event.currentTarget.checked
})
html.find('#visee').change(async (event) => {
this.rollData.visee = event.currentTarget.checked
})
html.find('#cibleconsciente').change(async (event) => {
this.rollData.cibleconsciente = event.currentTarget.checked
})
html.find('#ciblecourt').change(async (event) => {
this.rollData.ciblecourt = event.currentTarget.checked
})
html.find('#typeCouvert').change(async (event) => {
this.rollData.typeCouvert = String(event.currentTarget.value)
})
}
}

View File

@ -10,6 +10,7 @@ export class MournbladeUtility {
static async init() {
Hooks.on('renderChatLog', (log, html, data) => MournbladeUtility.chatListeners(html))
Hooks.on("getChatLogEntryContext", (html, options) => MournbladeUtility.chatRollMenu(html, options))
Hooks.on('renderChatMessage', (message, html, data) => MournbladeUtility.chatMessageHandler(message, html, data))
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
MournbladeUtility.pushInitiativeOptions(html, options);
@ -118,6 +119,27 @@ export class MournbladeUtility {
static getOptionsStatusList() {
return this.optionsStatusList;
}
/* -------------------------------------------- */
static getPredilection(comp, predIdx) {
let pred = duplicate(comp.system.predilections)
return duplicate(pred[predIdx] || { name: "Error!" })
}
/* -------------------------------------------- */
static async chatMessageHandler(message, html, data) {
const chatCard = html.find('.action-section')
if (chatCard.length > 0) {
// If the user is the message author or the actor owner, proceed
const actor = game.actors.get(data.message.speaker.actor)
// DEBUG : console.log("FOUND 1!!! ", actor, data.message)
if (actor?.isOwner || game.user.isGM) {
return
}
chatCard.hide()
}
}
/* -------------------------------------------- */
static async chatListeners(html) {
@ -129,8 +151,28 @@ export class MournbladeUtility {
let actor = MournbladeUtility.getActorFromRollData(rollData)
await actor.setPredilectionUsed(rollData.competence._id, predIdx)
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
rollData.predilectionUsed = MournbladeUtility.getPredilection(rollData.competence, predIdx)
await MournbladeUtility.rollMournblade(rollData)
})
html.on("click", '.arme-roll-degats', async event => {
let messageId = MournbladeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "mournblade-roll")
MournbladeUtility.rollDegatsFromAttaque(rollData)
})
html.on("click", '.arme-apply-degats', async event => {
let messageId = MournbladeUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "mournblade-roll")
if (game.user.isGM) {
MournbladeUtility.applyDegatsFromAttaque(rollData)
} else {
game.socket.emit("system.fvtt-mournblade", { name: "msg_apply_damage", data: { rolLData: rollData } })
}
})
}
/* -------------------------------------------- */
@ -201,22 +243,6 @@ export class MournbladeUtility {
return undefined;
}
/* -------------------------------------------- */
static updateRollData(rollData) {
let id = rollData.rollId;
let oldRollData = this.rollDataStore[id] || {};
let newRollData = mergeObject(oldRollData, rollData);
this.rollDataStore[id] = newRollData;
}
/* -------------------------------------------- */
static saveRollData(rollData) {
game.socket.emit("system.fvtt-mournblade", {
name: "msg_update_roll", data: rollData
}); // Notify all other clients of the roll
this.updateRollData(rollData);
}
/* -------------------------------------------- */
static getRollData(id) {
return this.rollDataStore[id];
@ -224,11 +250,10 @@ export class MournbladeUtility {
/* -------------------------------------------- */
static onSocketMesssage(msg) {
if (msg.name == "msg_update_defense_state") {
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
}
if (msg.name == "msg_update_roll") {
this.updateRollData(msg.data);
if (msg.name == "msg_apply_damage") {
if (game.user.isGM) {
this.applyDegatsFromAttaque(msg.data.rollData);
}
}
}
@ -322,17 +347,45 @@ export class MournbladeUtility {
}
//console.log("BEFORE COMP", rollData)
if (rollData.competence) {
rollData.predilections = duplicate(rollData.competence.system.predilections.filter(pred => !pred.used) || [])
rollData.predilections = 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}`
} else {
rollData.diceFormula += `+${rollData.attr.value}*2+${rollData.modificateur}`
}
rollData.diceFormula += `+${rollData.malusSante}+${rollData.malusAme}`
if (rollData.arme && rollData.arme.type == "arme") {
if (rollData.arme?.type == "arme") {
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
}
// Apply modifiers
for (let modifier of rollData.modifiers) {
if (modifier.system.modifiertype == "roll" && modifier.system.apply) {
rollData.diceFormula += `+${modifier.system.value}`
}
}
// Specific modifier for distance
if (rollData.arme?.system?.isDistance) {
if (rollData.visee) {
rollData.diceFormula += "+5"
}
if (rollData.cibleconsciente) {
rollData.diceFormula += `-${rollData.defender.system.attributs.adr.value}`
}
if (rollData.ciblecourt) {
if (rollData.difficulte <= 15) { // Portée courte ou moins
rollData.diceFormula += `-5`
} else {
rollData.diceFormula += `-10`
}
}
if (rollData.typeCouvert != "aucun") {
rollData.diceFormula += `-${rollData.config.couverts[rollData.typeCouvert].value}`
}
}
if (rollData.rune) {
rollData.runeduree = Math.ceil((rollData.runeame + 3) / 3)
if (rollData.runemode == "inscrire") {
@ -366,6 +419,124 @@ export class MournbladeUtility {
}
/* -------------------------------------------- */
static async rollDegatsFromAttaque(rollData) {
let maximize = false
let degatsMessage = "Degats normaux"
if (rollData.arme?.system?.isMelee) {
if (rollData.typeAttaque == "assaut") {
rollData.degatsFormula = rollData.arme.system.totalDegats
if (rollData.isHeroique) { // Deux fois les dés de dégats
rollData.degatsFormula += " + " + rollData.arme.system.totalDegats
degatsMessage = "Dégats doublés"
}
}
if (rollData.typeAttaque == "charger") {
rollData.degatsFormula += "+2"
}
if (rollData.typeAttaque == "precise") {
degatsMessage = "Degats normaux"
if (rollData.isHeroique) { // Degats max
maximize = true
degatsMessage = "Dégats maximaux, ignore l'armure du défenseur";
rollData.ignoreDefenseArmor = true
}
}
if (rollData.typeAttaque == "feinte") {
degatsMessage = "Pas de dégats, mais bonus pour prochaine attaque"
rollData.degatsFormula = false
rollData.nextBonus = 5
if (rollData.isHeroique) { // Bonus pour prochaine action
rollData.nextBonus = 10
rollData.nextBonusDegats = 10
}
}
if (rollData.typeAttaque == "coupbas") {
degatsMessage = "Pas de dégats, mais malus pour prochaine action complexe du défenseur"
rollData.degatsFormula = false
rollData.nextMalus = -5
if (rollData.isHeroique) { // Malus pour prochaine action
rollData.nextMalus = -15
}
}
if (rollData.typeAttaque == "contenir") {
degatsMessage = "Pas de dégats, mais l'adversaire ne peut pas vous attaquer pour le reste du tour"
rollData.degatsFormula = false
if (rollData.isHeroique) { // Malus pour prochaine action
degatsMessage = "Pas de dégats, mais tout les adversaires avec une défense inférieure ou égale à " + rollData.finalResult-10 +
" ne peuvent pas vous attaquer pour le reste du tour"
}
}
if (rollData.typeAttaque == "desarmer") {
degatsMessage = "Pas de dégats, mais l'adversaire reçoit un malus de -5 pour sa prochaine action"
rollData.degatsFormula = false
if (rollData.isHeroique) { // Malus pour prochaine action
rollData.defenderDesarme = true
degatsMessage = "Pas de dégats, mais l'arme de votre adversaire est arrachée de ses mains"
}
}
} else { // Armes à distance
rollData.degatsFormula = rollData.arme.system.totalDegats
if (rollData.isHeroique) { // Deux fois les dés de dégats
rollData.degatsFormula += " + " + rollData.arme.system.totalDegats
}
}
for(let mod of rollData.modifiers) {
if (mod.system.modifiertype == "degats") {
rollData.degatsFormula += `+${mod.system.value}`
}
}
// Perform the roll, show the dice
rollData.finalResult = 0
rollData.degatsMessage = degatsMessage
if (rollData.degatsFormula) {
let degatsRoll = new Roll(rollData.degatsFormula).roll({ async: false, maximize: maximize })
await this.showDiceSoNice(degatsRoll, game.settings.get("core", "rollMode"))
rollData.degatsRoll = duplicate(degatsRoll)
rollData.finalResult = degatsRoll.total
}
this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-degats-result.html`, rollData)
}, rollData)
}
/* -------------------------------------------- */
static applyDegatsFromAttaque(rollData) {
let defender = game.canvas.tokens.get(rollData?.defenderTokenId)?.actor
if (defender && rollData.arme) {
let actor = MournbladeUtility.getActorFromRollData(rollData)
if (rollData.typeAttaque == "desarmer" && !rollData.isHeroique) {
defender.setModifier("Malus suite à désarmement", "roll", -5)
}
if (rollData.typeAttaque == "charger") {
actor.setModifier("Défense suite à charge", "roll", -5)
}
if (rollData.nextBonus) {
actor.setModifier("Prochaine attaque", "roll", rollData.nextBonus)
if (rollData.nextDegatsBonus) {
actor.setModifier("Prochaine attaque", "degats", rollData.nextDegatsBonus)
}
}
if (rollData.nextMalus) {
defender.setModifier("Prochaine action complexe", "roll", -rollData.nextMalus)
}
if (rollData.defenderDesarme) {
ui.notifications.info("L'arme de " + defender.name + " est arrachée de ses mains (à gérer manuellement)" )
}
let degats = rollData.finalResult
let type = (rollData.arme.system.nonletaux) ? "nonletaux" : "letaux"
defender.incDecSante(type, +degats, rollData.ignoreDefenseArmor)
ui.notifications.info(defender.name + "a subi " + degats + " points de santé " + type + ".")
}
}
/* -------------------------------------------- */
static async bonusRollMournblade(rollData) {
rollData.bonusFormula = rollData.addedBonus
@ -459,7 +630,8 @@ export class MournbladeUtility {
chatOptions.whisper = this.getWhisperRecipients(rollMode, name);
break;
}
chatOptions.alias = chatOptions.alias || name
chatOptions.alias = chatOptions.alias || name;
chatOptions.speaker = ChatMessage.getSpeaker();
let msg = await ChatMessage.create(chatOptions)
console.log("=======>", rollData)
msg.setFlag("world", "mournblade-roll", rollData)
@ -474,6 +646,7 @@ export class MournbladeUtility {
pointAmeOptions: this.getPointAmeOptions(),
difficulte: 0,
modificateur: 0,
config: game.system.mournblade.config,
}
MournbladeUtility.updateWithTarget(rollData)
return rollData
@ -485,6 +658,7 @@ export class MournbladeUtility {
if (target) {
rollData.defenderTokenId = target.id
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
rollData.defender = defender.toObject() // Simpler
rollData.armeDefense = defender.getBestDefenseValue()
if (rollData.armeDefense) {
rollData.difficulte = rollData.armeDefense.system.totalDefensif
@ -647,11 +821,11 @@ export class MournbladeUtility {
/* -------------------------------------------- */
static async confirmDelete(actorSheet, li) {
let itemId = li.data("item-id");
let msgTxt = "<p>Are you sure to remove this Item ?";
let msgTxt = "<p>Voulez vous supprimer cet item ?";
let buttons = {
delete: {
icon: '<i class="fas fa-check"></i>',
label: "Yes, remove it",
label: "Oui !",
callback: () => {
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
li.slideUp(200, () => actorSheet.render(false));
@ -659,12 +833,12 @@ export class MournbladeUtility {
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: "Cancel"
label: "Non !"
}
}
msgTxt += "</p>";
let d = new Dialog({
title: "Confirm removal",
title: "Confirmer la suppression",
content: msgTxt,
buttons: buttons,
default: "cancel"

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.879816 7f3323fff6c0 Recovering log #12
2023/12/19-22:15:44.890587 7f3323fff6c0 Delete type=3 #10
2023/12/19-22:15:44.890683 7f3323fff6c0 Delete type=0 #12
2023/12/19-22:15:56.534936 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.535009 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.541696 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.548995 7f33223ff6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.555645 7f33223ff6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.895542 7ff8897fa6c0 Recovering log #80
2023/12/29-18:08:02.906834 7ff8897fa6c0 Delete type=3 #78
2023/12/29-18:08:02.906922 7ff8897fa6c0 Delete type=0 #80
2023/12/29-18:35:10.992944 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:10.992987 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.000315 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.000621 7ff888ff96c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.000680 7ff888ff96c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.580403 7f3323fff6c0 Recovering log #8
2023/12/19-21:45:05.635099 7f3323fff6c0 Delete type=3 #6
2023/12/19-21:45:05.635255 7f3323fff6c0 Delete type=0 #8
2023/12/19-21:45:32.368329 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.368364 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.374930 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.386871 7f33223ff6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.393727 7f33223ff6c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.193477 7ff88affd6c0 Recovering log #76
2023/12/29-18:01:15.204268 7ff88affd6c0 Delete type=3 #74
2023/12/29-18:01:15.204515 7ff88affd6c0 Delete type=0 #76
2023/12/29-18:06:09.125188 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.125260 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.131577 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.138438 7ff888ff96c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.138539 7ff888ff96c0 Manual compaction at level-1 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/armes/MANIFEST-000082 Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.922363 7f3322ffd6c0 Recovering log #12
2023/12/19-22:15:44.933242 7f3322ffd6c0 Delete type=3 #10
2023/12/19-22:15:44.933334 7f3322ffd6c0 Delete type=0 #12
2023/12/19-22:15:56.541869 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.541915 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.548800 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.555609 7f33223ff6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.555674 7f33223ff6c0 Manual compaction at level-1 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.938259 7ff88a7fc6c0 Recovering log #80
2023/12/29-18:08:02.948723 7ff88a7fc6c0 Delete type=3 #78
2023/12/29-18:08:02.948819 7ff88a7fc6c0 Delete type=0 #80
2023/12/29-18:35:11.014647 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.014703 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.021128 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.027714 7ff888ff96c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.027775 7ff888ff96c0 Manual compaction at level-1 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.751995 7f33237fe6c0 Recovering log #8
2023/12/19-21:45:05.802361 7f33237fe6c0 Delete type=3 #6
2023/12/19-21:45:05.802459 7f33237fe6c0 Delete type=0 #8
2023/12/19-21:45:32.401535 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.401586 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.408618 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.416737 7f33223ff6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.416779 7f33223ff6c0 Manual compaction at level-1 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.233956 7ff8897fa6c0 Recovering log #76
2023/12/29-18:01:15.244628 7ff8897fa6c0 Delete type=3 #74
2023/12/29-18:01:15.244714 7ff8897fa6c0 Delete type=0 #76
2023/12/29-18:06:09.152915 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.152950 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.160381 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.166827 7ff888ff96c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.166900 7ff888ff96c0 Manual compaction at level-1 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/dons/MANIFEST-000082 Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.907560 7f33237fe6c0 Recovering log #12
2023/12/19-22:15:44.919038 7f33237fe6c0 Delete type=3 #10
2023/12/19-22:15:44.919177 7f33237fe6c0 Delete type=0 #12
2023/12/19-22:15:56.527537 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.527579 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.534748 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.548969 7f33223ff6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.555629 7f33223ff6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.922917 7ff889ffb6c0 Recovering log #80
2023/12/29-18:08:02.933943 7ff889ffb6c0 Delete type=3 #78
2023/12/29-18:08:02.934135 7ff889ffb6c0 Delete type=0 #80
2023/12/29-18:35:11.021264 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.021301 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.027524 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.027727 7ff888ff96c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.027763 7ff888ff96c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.694845 7f3322ffd6c0 Recovering log #8
2023/12/19-21:45:05.749080 7f3322ffd6c0 Delete type=3 #6
2023/12/19-21:45:05.749173 7f3322ffd6c0 Delete type=0 #8
2023/12/19-21:45:32.393743 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.393776 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.401345 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.416703 7f33223ff6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.416767 7f33223ff6c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.220038 7ff88a7fc6c0 Recovering log #76
2023/12/29-18:01:15.230568 7ff88a7fc6c0 Delete type=3 #74
2023/12/29-18:01:15.230651 7ff88a7fc6c0 Delete type=0 #76
2023/12/29-18:06:09.146122 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.146158 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.152621 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.166813 7ff888ff96c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.166865 7ff888ff96c0 Manual compaction at level-1 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.951754 7f35b8bfa6c0 Recovering log #12
2023/12/19-22:15:44.963535 7f35b8bfa6c0 Delete type=3 #10
2023/12/19-22:15:44.964185 7f35b8bfa6c0 Delete type=0 #12
2023/12/19-22:15:56.555768 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.555799 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.562320 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.583577 7f33223ff6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.583652 7f33223ff6c0 Manual compaction at level-1 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.964468 7ff88affd6c0 Recovering log #80
2023/12/29-18:08:02.975075 7ff88affd6c0 Delete type=3 #78
2023/12/29-18:08:02.975188 7ff88affd6c0 Delete type=0 #80
2023/12/29-18:35:11.027877 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.027953 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.035219 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.056301 7ff888ff96c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.056344 7ff888ff96c0 Manual compaction at level-1 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.858392 7f3323fff6c0 Recovering log #8
2023/12/19-21:45:05.908553 7f3323fff6c0 Delete type=3 #6
2023/12/19-21:45:05.908991 7f3323fff6c0 Delete type=0 #8
2023/12/19-21:45:32.431375 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.431443 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.438078 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.445311 7f33223ff6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.445367 7f33223ff6c0 Manual compaction at level-1 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.261055 7ff889ffb6c0 Recovering log #76
2023/12/29-18:01:15.271352 7ff889ffb6c0 Delete type=3 #74
2023/12/29-18:01:15.271443 7ff889ffb6c0 Delete type=0 #76
2023/12/29-18:06:09.166972 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.167006 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.173926 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.195524 7ff888ff96c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.195617 7ff888ff96c0 Manual compaction at level-1 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.970720 7f33237fe6c0 Recovering log #12
2023/12/19-22:15:44.981711 7f33237fe6c0 Delete type=3 #10
2023/12/19-22:15:44.981816 7f33237fe6c0 Delete type=0 #12
2023/12/19-22:15:56.562486 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.562523 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.569457 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.583598 7f33223ff6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.583681 7f33223ff6c0 Manual compaction at level-1 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.977894 7ff889ffb6c0 Recovering log #80
2023/12/29-18:08:02.988351 7ff889ffb6c0 Delete type=3 #78
2023/12/29-18:08:02.988521 7ff889ffb6c0 Delete type=0 #80
2023/12/29-18:35:11.035373 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.035409 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.041608 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.056318 7ff888ff96c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.056381 7ff888ff96c0 Manual compaction at level-1 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.912064 7f35b8bfa6c0 Recovering log #8
2023/12/19-21:45:05.963227 7f35b8bfa6c0 Delete type=3 #6
2023/12/19-21:45:05.963379 7f35b8bfa6c0 Delete type=0 #8
2023/12/19-21:45:32.416916 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.416965 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.424040 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.445274 7f33223ff6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.445341 7f33223ff6c0 Manual compaction at level-1 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.274179 7ff88a7fc6c0 Recovering log #76
2023/12/29-18:01:15.285532 7ff88a7fc6c0 Delete type=3 #74
2023/12/29-18:01:15.285634 7ff88a7fc6c0 Delete type=0 #76
2023/12/29-18:06:09.174140 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.174200 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.181044 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.195551 7ff888ff96c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.195637 7ff888ff96c0 Manual compaction at level-1 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.936602 7f3323fff6c0 Recovering log #12
2023/12/19-22:15:44.948721 7f3323fff6c0 Delete type=3 #10
2023/12/19-22:15:44.948846 7f3323fff6c0 Delete type=0 #12
2023/12/19-22:15:56.549013 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.549045 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.555450 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.555659 7f33223ff6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.555725 7f33223ff6c0 Manual compaction at level-1 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.951461 7ff8897fa6c0 Recovering log #80
2023/12/29-18:08:02.961670 7ff8897fa6c0 Delete type=3 #78
2023/12/29-18:08:02.961810 7ff8897fa6c0 Delete type=0 #80
2023/12/29-18:35:11.007596 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.007633 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.014447 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.027700 7ff888ff96c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.027751 7ff888ff96c0 Manual compaction at level-1 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.805812 7f3322ffd6c0 Recovering log #8
2023/12/19-21:45:05.854930 7f3322ffd6c0 Delete type=3 #6
2023/12/19-21:45:05.855021 7f3322ffd6c0 Delete type=0 #8
2023/12/19-21:45:32.408791 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.408828 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.416539 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.416752 7f33223ff6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.416795 7f33223ff6c0 Manual compaction at level-1 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.247529 7ff88affd6c0 Recovering log #76
2023/12/29-18:01:15.257831 7ff88affd6c0 Delete type=3 #74
2023/12/29-18:01:15.257933 7ff88affd6c0 Delete type=0 #76
2023/12/29-18:06:09.160510 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.160545 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.166661 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.166853 7ff888ff96c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.166887 7ff888ff96c0 Manual compaction at level-1 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.893322 7f35b8bfa6c0 Recovering log #12
2023/12/19-22:15:44.904529 7f35b8bfa6c0 Delete type=3 #10
2023/12/19-22:15:44.904658 7f35b8bfa6c0 Delete type=0 #12
2023/12/19-22:15:56.509351 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.509416 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.516961 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.517201 7f33223ff6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.517244 7f33223ff6c0 Manual compaction at level-1 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.909881 7ff88affd6c0 Recovering log #80
2023/12/29-18:08:02.919868 7ff88affd6c0 Delete type=3 #78
2023/12/29-18:08:02.919957 7ff88affd6c0 Delete type=0 #80
2023/12/29-18:35:11.000815 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.000912 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.007463 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.027682 7ff888ff96c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.027739 7ff888ff96c0 Manual compaction at level-1 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.639391 7f35b8bfa6c0 Recovering log #8
2023/12/19-21:45:05.691389 7f35b8bfa6c0 Delete type=3 #6
2023/12/19-21:45:05.691500 7f35b8bfa6c0 Delete type=0 #8
2023/12/19-21:45:32.386932 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.386986 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.393562 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.401503 7f33223ff6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.416722 7f33223ff6c0 Manual compaction at level-1 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.207121 7ff889ffb6c0 Recovering log #76
2023/12/29-18:01:15.217340 7ff889ffb6c0 Delete type=3 #74
2023/12/29-18:01:15.217456 7ff889ffb6c0 Delete type=0 #76
2023/12/29-18:06:09.138617 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.138720 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.145987 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.166796 7ff888ff96c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.166840 7ff888ff96c0 Manual compaction at level-1 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:45.016188 7f35b8bfa6c0 Recovering log #12
2023/12/19-22:15:45.028467 7f35b8bfa6c0 Delete type=3 #10
2023/12/19-22:15:45.028598 7f35b8bfa6c0 Delete type=0 #12
2023/12/19-22:15:56.583825 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.583863 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.591144 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.598388 7f33223ff6c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.598452 7f33223ff6c0 Manual compaction at level-1 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
2023/12/29-18:08:03.021158 7ff88affd6c0 Recovering log #80
2023/12/29-18:08:03.031240 7ff88affd6c0 Delete type=3 #78
2023/12/29-18:08:03.031366 7ff88affd6c0 Delete type=0 #80
2023/12/29-18:35:11.056532 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.056576 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.062843 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.070764 7ff888ff96c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.070812 7ff888ff96c0 Manual compaction at level-1 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:06.072103 7f3323fff6c0 Recovering log #8
2023/12/19-21:45:06.135204 7f3323fff6c0 Delete type=3 #6
2023/12/19-21:45:06.135349 7f3323fff6c0 Delete type=0 #8
2023/12/19-21:45:32.445521 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.445555 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.453598 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.461415 7f33223ff6c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.461494 7f33223ff6c0 Manual compaction at level-1 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.317438 7ff889ffb6c0 Recovering log #76
2023/12/29-18:01:15.328160 7ff889ffb6c0 Delete type=3 #74
2023/12/29-18:01:15.328266 7ff889ffb6c0 Delete type=0 #76
2023/12/29-18:06:09.202476 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.202514 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.208966 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.209130 7ff888ff96c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.209157 7ff888ff96c0 Manual compaction at level-1 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/runes/MANIFEST-000082 Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.865290 7f3322ffd6c0 Recovering log #12
2023/12/19-22:15:44.876647 7f3322ffd6c0 Delete type=3 #10
2023/12/19-22:15:44.876743 7f3322ffd6c0 Delete type=0 #12
2023/12/19-22:15:56.490933 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.490979 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.498758 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.517170 7f33223ff6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.527510 7f33223ff6c0 Manual compaction at level-1 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.881442 7ff88a7fc6c0 Recovering log #80
2023/12/29-18:08:02.892226 7ff88a7fc6c0 Delete type=3 #78
2023/12/29-18:08:02.892313 7ff88a7fc6c0 Delete type=0 #80
2023/12/29-18:35:10.986477 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:10.986527 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:10.992779 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.000602 7ff888ff96c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.000659 7ff888ff96c0 Manual compaction at level-1 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.522800 7f33237fe6c0 Recovering log #8
2023/12/19-21:45:05.576713 7f33237fe6c0 Delete type=3 #6
2023/12/19-21:45:05.576894 7f33237fe6c0 Delete type=0 #8
2023/12/19-21:45:32.360607 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.360665 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.368046 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.375090 7f33223ff6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.386907 7f33223ff6c0 Manual compaction at level-1 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.179316 7ff8897fa6c0 Recovering log #76
2023/12/29-18:01:15.190214 7ff8897fa6c0 Delete type=3 #74
2023/12/29-18:01:15.190647 7ff8897fa6c0 Delete type=0 #76
2023/12/29-18:06:09.131724 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.131761 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.138231 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.138457 7ff888ff96c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.138516 7ff888ff96c0 Manual compaction at level-1 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:45.032291 7f33237fe6c0 Recovering log #12
2023/12/19-22:15:45.043647 7f33237fe6c0 Delete type=3 #10
2023/12/19-22:15:45.043790 7f33237fe6c0 Delete type=0 #12
2023/12/19-22:15:56.591612 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.591671 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.598156 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.598427 7f33223ff6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.598479 7f33223ff6c0 Manual compaction at level-1 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
2023/12/29-18:08:03.034276 7ff889ffb6c0 Recovering log #80
2023/12/29-18:08:03.045380 7ff889ffb6c0 Delete type=3 #78
2023/12/29-18:08:03.045487 7ff889ffb6c0 Delete type=0 #80
2023/12/29-18:35:11.062976 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.063014 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.070439 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.070825 7ff888ff96c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.070866 7ff888ff96c0 Manual compaction at level-1 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:06.139613 7f35b8bfa6c0 Recovering log #8
2023/12/19-21:45:06.235086 7f35b8bfa6c0 Delete type=3 #6
2023/12/19-21:45:06.235238 7f35b8bfa6c0 Delete type=0 #8
2023/12/19-21:45:32.453793 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.454273 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.461277 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.461479 7f33223ff6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.461521 7f33223ff6c0 Manual compaction at level-1 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.331719 7ff88a7fc6c0 Recovering log #76
2023/12/29-18:01:15.342998 7ff88a7fc6c0 Delete type=3 #74
2023/12/29-18:01:15.343131 7ff88a7fc6c0 Delete type=0 #76
2023/12/29-18:06:09.195798 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.195853 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.202274 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.209111 7ff888ff96c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.209183 7ff888ff96c0 Manual compaction at level-1 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:44.985004 7f3322ffd6c0 Recovering log #12
2023/12/19-22:15:44.996556 7f3322ffd6c0 Delete type=3 #10
2023/12/19-22:15:44.996666 7f3322ffd6c0 Delete type=0 #12
2023/12/19-22:15:56.569866 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.569902 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.576414 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.583619 7f33223ff6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.583665 7f33223ff6c0 Manual compaction at level-1 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
2023/12/29-18:08:02.991191 7ff88a7fc6c0 Recovering log #80
2023/12/29-18:08:03.003992 7ff88a7fc6c0 Delete type=3 #78
2023/12/29-18:08:03.004105 7ff88a7fc6c0 Delete type=0 #80
2023/12/29-18:35:11.041721 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.042031 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.048701 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.056331 7ff888ff96c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.056401 7ff888ff96c0 Manual compaction at level-1 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:05.967132 7f33237fe6c0 Recovering log #8
2023/12/19-21:45:06.023933 7f33237fe6c0 Delete type=3 #6
2023/12/19-21:45:06.024035 7f33237fe6c0 Delete type=0 #8
2023/12/19-21:45:32.424193 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.424227 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.431033 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.445293 7f33223ff6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.445354 7f33223ff6c0 Manual compaction at level-1 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.288482 7ff8897fa6c0 Recovering log #76
2023/12/29-18:01:15.299452 7ff8897fa6c0 Delete type=3 #74
2023/12/29-18:01:15.299587 7ff8897fa6c0 Delete type=0 #76
2023/12/29-18:06:09.181175 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.181260 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.187495 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.195574 7ff888ff96c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.195657 7ff888ff96c0 Manual compaction at level-1 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000014
MANIFEST-000082

View File

@ -1,8 +1,8 @@
2023/12/19-22:15:45.002228 7f3323fff6c0 Recovering log #12
2023/12/19-22:15:45.012868 7f3323fff6c0 Delete type=3 #10
2023/12/19-22:15:45.013004 7f3323fff6c0 Delete type=0 #12
2023/12/19-22:15:56.576566 7f33223ff6c0 Level-0 table #17: started
2023/12/19-22:15:56.576602 7f33223ff6c0 Level-0 table #17: 0 bytes OK
2023/12/19-22:15:56.583396 7f33223ff6c0 Delete type=0 #15
2023/12/19-22:15:56.583635 7f33223ff6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)
2023/12/19-22:15:56.583698 7f33223ff6c0 Manual compaction at level-1 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)
2023/12/29-18:08:03.007421 7ff8897fa6c0 Recovering log #80
2023/12/29-18:08:03.018383 7ff8897fa6c0 Delete type=3 #78
2023/12/29-18:08:03.018699 7ff8897fa6c0 Delete type=0 #80
2023/12/29-18:35:11.048862 7ff888ff96c0 Level-0 table #85: started
2023/12/29-18:35:11.048905 7ff888ff96c0 Level-0 table #85: 0 bytes OK
2023/12/29-18:35:11.056168 7ff888ff96c0 Delete type=0 #83
2023/12/29-18:35:11.056357 7ff888ff96c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)
2023/12/29-18:35:11.056416 7ff888ff96c0 Manual compaction at level-1 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/12/19-21:45:06.026707 7f3322ffd6c0 Recovering log #8
2023/12/19-21:45:06.068733 7f3322ffd6c0 Delete type=3 #6
2023/12/19-21:45:06.068870 7f3322ffd6c0 Delete type=0 #8
2023/12/19-21:45:32.438292 7f33223ff6c0 Level-0 table #13: started
2023/12/19-21:45:32.438343 7f33223ff6c0 Level-0 table #13: 0 bytes OK
2023/12/19-21:45:32.445131 7f33223ff6c0 Delete type=0 #11
2023/12/19-21:45:32.445326 7f33223ff6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)
2023/12/19-21:45:32.445381 7f33223ff6c0 Manual compaction at level-1 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)
2023/12/29-18:01:15.303780 7ff88affd6c0 Recovering log #76
2023/12/29-18:01:15.314481 7ff88affd6c0 Delete type=3 #74
2023/12/29-18:01:15.314586 7ff88affd6c0 Delete type=0 #76
2023/12/29-18:06:09.187696 7ff888ff96c0 Level-0 table #81: started
2023/12/29-18:06:09.187753 7ff888ff96c0 Level-0 table #81: 0 bytes OK
2023/12/29-18:06:09.195332 7ff888ff96c0 Delete type=0 #79
2023/12/29-18:06:09.195597 7ff888ff96c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)
2023/12/29-18:06:09.195677 7ff888ff96c0 Manual compaction at level-1 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1130,6 +1130,11 @@ ul, li {
margin:2px;
}
.chat-card-button-degats {
background: linear-gradient(to bottom, #e2c256fc 5%, #b85b04ab 100%);
background-color: #7d5d3b00;
}
.chat-card-button:hover {
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
background-color: red;
@ -1181,6 +1186,7 @@ ul, li {
text-shadow: 0px 1px 0px #4d3534;
position: relative;
margin:3px;
max-width: 1.2rem;
}
.river-button:hover,

View File

@ -1,7 +1,7 @@
{
"id": "fvtt-mournblade",
"description": "Mournblade RPG for FoundryVTT",
"version": "11.0.2",
"version": "11.1.1",
"authors": [
{
"name": "Uberwald/LeRatierBretonnien",
@ -23,7 +23,7 @@
"gridUnits": "m",
"license": "LICENSE.txt",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-mournblade/raw/branch/v10/system.json",
"download": "https://www.uberwald.me/gitea/public/fvtt-mournblade/archive/fvtt-mournblade-11.0.2.zip",
"download": "https://www.uberwald.me/gitea/public/fvtt-mournblade/archive/fvtt-mournblade-11.1.1.zip",
"packs": [
{
"type": "Item",

View File

@ -16,6 +16,8 @@
"yeux": "",
"description": "",
"amemultiplier": 2,
"ignoreamemalus": false,
"ignoresantemalus": false,
"notes": "",
"gmnotes": ""
}
@ -69,6 +71,7 @@
"bonus": 0,
"nonletaux": 0,
"letaux": 0,
"malusmanuel": 0,
"sequelles": ""
},
"ame": {
@ -130,9 +133,22 @@
"origine",
"heritage",
"metier",
"modifier",
"runeeffect",
"bouclier"
],
"modifier": {
"modifiertype": "roll",
"value": 0,
"attribut": "aucun",
"competence": "aucun",
"permanent": true,
"once": false,
"duree": "",
"templates": [
"base"
]
},
"runeeffect": {
"rune": "",
"mode": "",

View File

@ -12,10 +12,11 @@
<ul class="item-list alternate-list">
<li class="item flexrow ">
<label class="item-name-label competence-name item-field-label-short"><strong>Loi</strong></label>
<label class="item-name-label competence-name item-field-label-short">Niveau</label><input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.balance.loi" value="{{data.balance.loi}}" data-dtype="Number" />
<label class="item-name-label competence-name item-field-label-short">Niveau</label><input type="text"
class="padd-right status-small-label color-class-common item-field-label-short"
name="system.balance.loi" value="{{data.balance.loi}}" data-dtype="Number" />
<label class="item-name-label competence-name item-field-label-short">Points</label>
<select class="status-small-label color-class-common item-field-label-short" type="text"
name="system.balance.pointsloi" value="{{data.balance.pointsloi}}" data-dtype="Number">
@ -30,10 +31,12 @@
<li class="item flexrow ">
<label class="item-name-label competence-name item-field-label-short"><strong>Chaos</strong></label>
<label class="item-name-label competence-name item-field-label-short">Niveau</label><input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.balance.chaos" value="{{data.balance.chaos}}" data-dtype="Number" />
<label class="item-name-label competence-name item-field-label-short">Points</label><select class="status-small-label color-class-common item-field-label-short" type="text"
<label class="item-name-label competence-name item-field-label-short">Niveau</label><input type="text"
class="padd-right status-small-label color-class-common item-field-label-short"
name="system.balance.chaos" value="{{data.balance.chaos}}" data-dtype="Number" />
<label class="item-name-label competence-name item-field-label-short">Points</label><select
class="status-small-label color-class-common item-field-label-short" type="text"
name="system.balance.pointschaos" value="{{data.balance.pointschaos}}" data-dtype="Number">
{{#select data.balance.pointschaos}}
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
@ -41,7 +44,7 @@
</select>
<label class="item-name-label competence-name item-field-label-medium">Marge {{marge}}</label>
</li>
<li class="item flexrow ">
<h4 class="item-name-label competence-name">Bonne Aventure</h4>
<label class="item-name-label competence-name item-field-label-short">Base</label>
@ -57,12 +60,12 @@
<h4 class="item-name-label competence-name item-field-label-short">Eclat</h4>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.eclat.value" value="{{data.eclat.value}}" data-dtype="Number" />
<h4 class="item-name-label competence-name item-field-label-medium">Expérience</h4>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.experience.value" value="{{data.experience.value}}" data-dtype="Number" />
</li>
</li>
</ul>
</div>
@ -103,9 +106,7 @@
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<h4 class="item-name-label competence-name">Santé</h4>
<ul class="item-list alternate-list">
<li class="item flexrow">
@ -117,27 +118,53 @@
</li>
<li class="item flexrow">
<label class="label-name">Non létaux</label>
<a class="sante-modify plus-minus-button" data-type="nonletaux" data-value="-1">-</a>
<input type="text" class="input-numeric-short" name="system.sante.nonletaux"
value="{{data.sante.nonletaux}}" data-dtype="Number" />
<a class="sante-modify plus-minus-button" data-type="nonletaux" data-value="+1">+</a>
</li>
<li class="item flexrow">
<label class="label-name">Létaux</label>
<a class="sante-modify plus-minus-button" data-type="letaux" data-value="-1">-</a>
<input type="text" class="input-numeric-short" name="system.sante.letaux" value="{{data.sante.letaux}}"
data-dtype="Number" />
<a class="sante-modify plus-minus-button" data-type="letaux" data-value="+1">+</a>
</li>
<li class="item flexrow">
<label class="label-name">Malus</label>
<input type="text" class="input-numeric-short" name="system.sante.malusmanuel"
value="{{data.sante.malusmanuel}}" data-dtype="Number" />
<label class="label-name">Malus auto</label>
<label class="label-name">{{santeMalus}}</label>
</li>
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<h4 class="item-name-label competence-name">Ame</h4>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="label-name">Max</label>
<input type="text" class="input-numeric-short" name="system.ame.fullmax" value="{{data.ame.fullmax}}"
data-dtype="Number" />
<label class="label-name">Max Actuel</label>
<input type="text" class="input-numeric-short" name="system.ame.currentmax" value="{{data.ame.currentmax}}"
data-dtype="Number" />
<label class="label-name">Courante</label>
<label class="label-name">Max Actuel</label>
<input type="text" class="input-numeric-short" name="system.ame.currentmax"
value="{{data.ame.currentmax}}" data-dtype="Number" />
<li class="item flexrow">
<label class="label-name">Consommé</label>
<a class="ame-modify plus-minus-button" data-value="-1">-</a>
<input type="text" class="input-numeric-short" name="system.ame.value" value="{{data.ame.value}}"
data-dtype="Number" />
</li>
data-dtype="Number" />
<a class="ame-modify plus-minus-button" data-value="+1">+</a>
</li>
<li class="item flexrow">
<label class="label-name">Malus auto</label>
<label class="label-name">{{ameMalus}}</label>
</li>
</ul>
<h4 class="item-name-label competence-name">Combat</h4>
@ -170,11 +197,47 @@
value="{{data.combat.defensebonus}}" data-dtype="Number" />
<label class="competence-name">{{combat.defenseTotal}}</label>
</li>
<li class="item flexrow">
<label class="competence-name">Total protection</label>
<label class="competence-name">{{protectionTotal}}</label>
</li>
</ul>
</div>
</div>
<div>
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Modificateurs</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Type</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Valeur</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each modifiers as |modifier key|}}
<li class="item flexrow " data-item-id="{{modifier._id}}" data-item-type="modifier">
<img class="item-name-img" src="{{modifier.img}}" />
<span class="item-name-label competence-name">{{modifier.name}}</span>
<span class="item-field-label-short">{{upperFirst modifier.system.modifiertype}}</span>
<span class="item-field-label-short">{{modifier.system.value}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
{{!-- Competence Tab --}}
@ -201,11 +264,11 @@
<span class="item-name-label competence-name"><a class="roll-competence"
data-attr-key="tochoose">{{skill.name}}</a></span>
<span class="predilection-text">
{{#each skill.system.predilections as |pred key|}}
{{pred.name}},
{{/each}}
</span>
<span class="predilection-text">
{{#each skill.system.predilections as |pred key|}}
{{pred.name}},
{{/each}}
</span>
</div>
<select class="status-small-label color-class-common edit-item-data competence-niveau" type="text"
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
@ -365,6 +428,46 @@
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Runes actives</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Rune</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Mode</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Durée</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Ame</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each runeEffects as |runeEffect key|}}
<li class="item flexrow " data-item-id="{{runeEffect._id}}" data-item-type="runeeffect">
<img class="item-name-img" src="{{runeEffect.img}}" />
<span class="item-name-label competence-name">{{runeEffect.name}}</span>
<span class="item-field-label-long">{{runeEffect.system.rune}}</span>
<span class="item-field-label-short">{{upperFirst runeEffect.system.mode}}</span>
<span class="item-field-label-medium">{{runeEffect.system.duree}}</span>
<span class="item-field-label-short">{{runeEffect.system.pointame}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
</div>
@ -397,7 +500,7 @@
<li class="item flexrow " data-item-id="{{monnaie._id}}" data-item-type="monnaie">
<img class="item-name-img" src="{{monnaie.img}}" />
<span class="item-name-label competence-name">{{monnaie.name}}</span>
<span class="item-name-label competence-name item-field-label-medium">{{monnaie.system.quantite}}
<span class="item-name-label competence-name item-field-label-medium">{{monnaie.system.quantite}}
<a class="quantity-modify plus-minus-button" data-quantite-value="-1">-</a>
<a class="quantity-modify plus-minus-button" data-quantite-value="+1">+</a>
</span>
@ -440,30 +543,31 @@
<span class="item-field-label-short">
{{#if arme.system.equipped}}
<button class="roll-arme-offensif button-sheet-roll" >{{arme.system.totalOffensif}}</button>
<button class="roll-arme-offensif button-sheet-roll">{{arme.system.totalOffensif}}</button>
{{else}}
<button disabled class="roll-arme-offensif button-sheet-roll" >{{arme.system.totalOffensif}}</button>
<button disabled class="roll-arme-offensif button-sheet-roll">{{arme.system.totalOffensif}}</button>
{{/if}}
</span>
{{#if arme.system.isdefense}}
<span class="item-field-label-short arme-defensif"><label class="arme-defensif">{{arme.system.totalDefensif}}</label></span>
<span class="item-field-label-short arme-defensif"><label
class="arme-defensif">{{arme.system.totalDefensif}}</label></span>
{{else}}
<span class="item-field-label-short arme-defensif"><label class="arme-defensif">-</label></span>
{{/if}}
<span class="item-field-label-short">
{{#if arme.system.equipped}}
<button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
{{else}}
<button disabled class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
{{/if}}
</span>
<span class="item-field-label-short">
{{#if arme.system.equipped}}
<button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
{{else}}
<button disabled class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
{{/if}}
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
@ -496,6 +600,8 @@
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-equip" title="Worn">{{#if protection.system.equipped}}<i
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
@ -565,52 +671,79 @@
</div>
</li>
<li class="flexrow item">
<label class="generic-label">Multiplicateur d'âme</label>
<input type="text" class="" name="system.biodata.amemultiplier" value="{{data.biodata.amemultiplier}}"
data-dtype="Number" />
<label class="generic-label">Sexe</label>
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
</li>
</ul>
</div>
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Sexe</label>
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
</li>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="generic-label">Age</label>
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Taille</label>
<input type="text" class="" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.size" value="{{data.biodata.size}}"
data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Cheveux</label>
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}"
data-dtype="String" />
</li>
</ul>
</div>
<div>
<li class="item flexrow">
<label class="generic-label">Yeux</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Main préférée</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="system.biodata.weight" value="{{data.biodata.weight}}"
data-dtype="String" />
</li>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="generic-label">Yeux</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Main préférée</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="system.biodata.weight" value="{{data.biodata.weight}}"
data-dtype="String" />
</li>
</ul>
</div>
</div>
{{#if isGM}}
<div class="grid grid-2col">
<div>
<ul class="item-list alternate-list">
<li class="flexrow item">
<label class="generic-label">Multiplicateur d'âme</label>
<input type="text" class="input-numeric-short" name="system.biodata.amemultiplier"
value="{{data.biodata.amemultiplier}}" data-dtype="Number" />
</li>
</ul>
</div>
<div>
<ul class="item-list alternate-list">
<li class="flexrow item">
<label class="generic-label">Ignore le malus de Santé ?</label>
<input type="checkbox" name="system.biodata.ignoresantemalus" {{checked data.biodata.ignoresantemalus}} />
</li>
<li class="flexrow item">
<label class="generic-label">Ignore le malus d'Ame ?</label>
<input type="checkbox" name="system.biodata.ignoreamemalus" {{checked data.biodata.ignoreamemalus}} />
</li>
</ul>
</div>
</div>
{{/if}}
<span>
<h3>Description</h3>
</span>

View File

@ -13,13 +13,27 @@
</div>
{{/if}}
<div class="flexcol">
<div class="flexcol">ntfabr
</div>
<div>
<ul>
<li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
<li>Dégats : {{finalResult}} {{#if arme.system.nonletaux}}(Non létaux){{else}}(Létaux){{/if}}</li>
<li>Arme : {{arme.name}} {{#if degatsFormula}} (+{{degatsFormula}}) {{/if}}</li>
<li>Information : {{degatsMessage}}</li>
<li>Dégats : {{finalResult}} {{#if arme.system.nonletaux}}(Non létaux){{else}}(Létaux){{/if}}</li>
{{#if nextBonus}}
<li>Bonus pour prochaine attaque : {{nextBonus}}</li>
{{/if}}
{{#if nextMalus}}
<li>Malus au défenseur pour prochaine action : {{nextMalus}}</li>
{{/if}}
<button class="chat-card-button chat-card-button-degats arme-apply-degats">
Appliquer les dégats/bonus/malus
</button>
</div>
</ul>
</div>

View File

@ -20,10 +20,24 @@
<ul>
<li class="mournblade-roll">Attribut : {{attr.label}}</li>
{{#if arme}}
<li>Arme : {{arme.name}} (+{{arme.system.bonusmaniementoff}})</li>
{{#if defender}}
<li>Cible : {{defender.name}}</li>
{{/if}}
{{#if typeAttaque}}
<li>Attaque : {{lookup config.attaques typeAttaque}}</li>
{{/if}}
{{/if}}
{{#if competence}}
<li>Compétence : {{competence.name}}</li>
{{/if}}
{{#if predilectionUsed}}
<li>Predilection utilisée : {{predilectionUsed.name}}</li>
{{/if}}
{{#if rune}}
<li>Rune : {{rune.name}}</li>
<li>Mode : {{runemode}}</li>
@ -35,15 +49,15 @@
<li>{{textBonus}} : {{bonusRoll.total}}</li>
{{/if}}
{{#if arme}}
<li>Arme : {{arme.name}} (+{{arme.system.bonusmaniementoff}})</li>
{{/if}}
<li>Formule : {{diceFormula}}</li>
<li>Dé : {{diceResult}}</li>
{{#if difficulte}}
<li>Difficulté : {{difficulte}}</li>
<li>Difficulté : {{difficulte}}
{{#if (and arm.system.isMelee armeDefense)}}
({{armeDefense.name}})
{{/if}}
</li>
{{/if}}
<li></li>
@ -64,11 +78,25 @@
<li>Echec Dramatique!!!</li>
{{/if}}
{{#each predilections as |pred key|}}
<li>
<button class="chat-card-button predilection-reroll" data-predilection-index="{{key}}">Predilection : {{pred.name}}</button>
</li>
{{/each}}
<div class="action-section">
{{#each predilections as |pred key|}}
{{#if (not pred.used)}}
<li>
<button class="chat-card-button predilection-reroll" data-predilection-index="{{key}}">
Predilection : {{pred.name}}</button>
</li>
{{/if}}
{{/each}}
{{#if (and arme isSuccess)}}
<li>
<button class="chat-card-button chat-card-button-degats arme-roll-degats"> Lancer les dégats ! </button>
</li>
{{/if}}
</div>
</ul>
</div>

View File

@ -12,7 +12,7 @@
<div class="flexcol">
<span class="flexrow">
<label class="generic-label">Niveau : </label>
<input type="text" class="padd-right status-small-label color-class-common" name="data.niveau"
<input type="text" class="padd-right status-small-label color-class-common" name="system.niveau"
value="{{data.niveau}}" data-dtype="Number" />
</span>
<span class="flexrow">

View File

@ -0,0 +1,35 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<span class="flexrow">
<label class="generic-label">Type de modificateur </label>
<select class="status-small-label color-class-common" type="text" name="system.modifiertype"
value="{{data.modifiertype}}" data-dtype="string">
{{#select data.modifiertype}}
{{#each config.modifierTypes as |mod key|}}
<option value="{{key}}">{{mod.name}}</option>
{{/each}}
{{/select}}
</select>
</span>
<span class="flexrow">
<label class="generic-label">Valeur </label>
<input type="text" class="padd-right status-small-label color-class-common" name="system.value" value="{{data.value}}" data-dtype="Number" />
</span>
<div class="flexcol">
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
</div>
</section>
</form>

View File

@ -18,7 +18,7 @@
<label class="generic-label">Mode </label>
<select class="status-small-label color-class-common" type="text" name="system.mode"
value="{{data.mode}}" data-dtype="string">
{{@select data.mode}}
{{#select data.mode}}
<option value="prononcee">Prononcée</option>
<option value="inscrite">Inscrite</option>
{{/select}}

View File

@ -10,17 +10,18 @@
<div class="flexrow">
{{#if (eq attrKey "tochoose")}}
<span class="roll-dialog-label">Attribut</span>
<select class="status-small-label color-class-common" id ="attrKey" type="text" name="attrKey" value="attrKey" data-dtype="string" >
{{#select attrKey}}
{{#each attributs as |attrLabel attrKey|}}
<option value="{{attrKey}}">{{attrLabel}}</option>
{{/each}}
{{/select}}
</select>
<span class="roll-dialog-label">Attribut</span>
<select class="status-small-label color-class-common" id="attrKey" type="text" name="attrKey" value="attrKey"
data-dtype="string">
{{#select attrKey}}
{{#each attributs as |attrLabel attrKey|}}
<option value="{{attrKey}}">{{attrLabel}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span class="roll-dialog-label">{{attr.label}}</span>
<span class="small-label">{{attr.value}}</span>
<span class="roll-dialog-label">{{attr.label}}</span>
<span class="small-label">{{attr.value}}</span>
{{/if}}
</div>
@ -48,14 +49,110 @@
</div>
<div class="flexrow">
<span class="roll-dialog-label">Points d'Ame</span>
<select class="roll-dialog-label" id="runeame" type="text" name="runeame" value="{{runeame}}"
data-dtype="Number">
<select class="roll-dialog-label" id="runeame" type="text" name="runeame" value="{{runeame}}" data-dtype="Number">
{{#select runeame}}
{{{pointAmeOptions}}}
{{/select}}
</select>
</div>
{{/if}}
{{#if arme}}
<div class="flexrow">
<span class="roll-dialog-label">Arme : </span>
<span class="roll-dialog-label">{{arme.name}} (+{{arme.system.bonusmaniementoff}})</span>
</div>
{{#if arme.system.isMelee}}
<div class="flexrow">
<span class="roll-dialog-label">Attaque : </span>
<select class="roll-dialog-label" id="typeAttaque" type="text" name="typeAttaque" value="{{typeAttaque}}"
data-dtype="String">
{{#select typeAttaque}}
{{#each config.attaques as |attaque key|}}
<option value="{{key}}">{{attaque}}</option>
{{/each}}
{{/select}}
</select>
</div>
{{/if}}
{{/if}}
{{#if arme}}
{{#if arme.system.isMelee}}
{{#if armeDefense}}
<div class="flexrow">
<span class="roll-dialog-label">Défense adversaire : </span>
<span class="roll-dialog-label"><strong>{{difficulte}}</strong> </span>
</div>
{{/if}}
{{/if}}
{{#if arme.system.isDistance}}
<div class="flexrow">
<span class="roll-dialog-label">Bonus de visée (+5) ? : </span>
<input class="" type="checkbox" id="visee" name="visee" {{checked visee}} />
</div>
{{#if defender}}
<div class="flexrow">
<span class="roll-dialog-label">La cible est consciente du tir (-{{defender.system.attributs.adr.value}})? : </span>
<input class="" type="checkbox" id="cibleconsciente" name="cibleconsciente" {{checked cibleconsciente}} />
</div>
{{else}}
<div class="flexrow">
<span class="roll-dialog-label">Pas de cible désignée ! </span>
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">La cible court (-5/-10)? : </span>
<input class="" type="checkbox" id="ciblecourt" name="ciblecourt" {{checked ciblecourt}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">Couvert ? : </span>
<select class="roll-dialog-label" id="typeCouvert" type="text" name="typeCouvert" value="{{typeCouvert}}"
data-dtype="String">
{{#select typeCouvert}}
{{#each config.couverts as |couvert key|}}
<option value="{{key}}">{{couvert.name}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Portée : </span>
<select class="roll-dialog-label" id="difficulte" type="text" name="difficulte" value="{{difficulte}}"
data-dtype="Number">
{{#select difficulte}}
<option value="10">Moins que courte (10)</option>
<option value="15">Courte et + (15)</option>
<option value="20">Moyenne et + (20)</option>
<option value="25">Longue et + (25)</option>
{{/select}}
</select>
</div>
{{/if}}
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">Malus de Santé : </span>
<span class="roll-dialog-label">{{malusSante}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Malus d'Ame : </span>
<span class="roll-dialog-label">{{malusAme}}</span>
</div>
{{#if (count modifiers)}}
<div class="flexrow">
<span class="roll-dialog-label">Modificateurs enregistrés : </span>
</div>
{{#each modifiers as |modifier idx|}}
<div class="flexrow">
<span class="roll-dialog-label">{{modifier.name}} : </span>
<span class="roll-dialog-label">{{modifier.system.value}}</span>
<input class="apply-modifier" data-modifier-idx="{{idx}}" id="apply-modifier" type="checkbox" name="apply-modifier" value="{{modifier.system.apply}}" {{checked modifier.system.apply}} />
</div>
{{/each}}
{{/if}}
<div class="flexrow">
@ -68,12 +165,7 @@
</select>
</div>
{{#if armeDefense}}
<div class="flexrow">
<span class="roll-dialog-label">Défense adversaire : </span>
<span class="roll-dialog-label"><strong>{{difficulte}}</strong> </span>
</div>
{{else}}
{{#if selectDifficulte}}
<div class="flexrow">
<span class="roll-dialog-label">Difficulté : </span>
<select class="roll-dialog-label" id="difficulte" type="text" name="difficulte" value="{{difficulte}}"
@ -94,7 +186,7 @@
{{#if canEclatDoubleD20}}
<div class="flexrow">
<span class="roll-dialog-label">Doubler le d20 (1 Point d'Eclat)</span>
<input class="" id="doubleD20" type="checkbox" name="doubleD20" value="{{doubleD20}}" {{checked doubleD20}}/>
<input class="" id="doubleD20" type="checkbox" name="doubleD20" value="{{doubleD20}}" {{checked doubleD20}} />
</div>
{{/if}}