Compare commits
5 Commits
5c4c6d73ee
...
bol-v12.0.
Author | SHA1 | Date | |
---|---|---|---|
7ed9265a26 | |||
ae43c7c920 | |||
20ab9a17a4 | |||
5de40d4998 | |||
c7c26c0033 |
@ -168,6 +168,9 @@
|
|||||||
"BOL.ui.initMalus": "Init malus",
|
"BOL.ui.initMalus": "Init malus",
|
||||||
"BOL.ui.isspecial": "Spécial ?",
|
"BOL.ui.isspecial": "Spécial ?",
|
||||||
"BOL.ui.createEquipment": "Create Equipment",
|
"BOL.ui.createEquipment": "Create Equipment",
|
||||||
|
"BOL.ui.creature": "Creature",
|
||||||
|
"BOL.ui.undead": "Undead",
|
||||||
|
"BOL.ui.daemon": "Daemon",
|
||||||
|
|
||||||
"BOL.featureCategory.origins": "Origins",
|
"BOL.featureCategory.origins": "Origins",
|
||||||
"BOL.featureCategory.races": "Races",
|
"BOL.featureCategory.races": "Races",
|
||||||
|
23
lang/fr.json
23
lang/fr.json
@ -2,6 +2,7 @@
|
|||||||
"TYPES": {
|
"TYPES": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"character": "Personnage",
|
"character": "Personnage",
|
||||||
|
"encounter": "PNJ",
|
||||||
"npc": "PNJ",
|
"npc": "PNJ",
|
||||||
"vehicle": "Véhicule"
|
"vehicle": "Véhicule"
|
||||||
},
|
},
|
||||||
@ -139,6 +140,12 @@
|
|||||||
"BOL.ui.registerInit": "Enregistrer comme Init. de combat",
|
"BOL.ui.registerInit": "Enregistrer comme Init. de combat",
|
||||||
"BOL.ui.initMalus": "Malus d'initiative",
|
"BOL.ui.initMalus": "Malus d'initiative",
|
||||||
"BOL.ui.magicnewrules": "Règles supplémentaires (cf. supplément fan-made Sorcellerie!)",
|
"BOL.ui.magicnewrules": "Règles supplémentaires (cf. supplément fan-made Sorcellerie!)",
|
||||||
|
"BOL.ui.other":"Autre",
|
||||||
|
"BOL.ui.career":"Carrière",
|
||||||
|
"BOL.ui.boon":"Avantage",
|
||||||
|
"BOL.ui.flaw":"Désanvatage",
|
||||||
|
"BOL.ui.cost":"Cout XP",
|
||||||
|
"BOL.ui.date":"Date",
|
||||||
|
|
||||||
"BOL.ui.isSorcerer": "Carrière de Sorcier ?",
|
"BOL.ui.isSorcerer": "Carrière de Sorcier ?",
|
||||||
"BOL.ui.isAlchemist": "Carrière d'Alchimiste ?",
|
"BOL.ui.isAlchemist": "Carrière d'Alchimiste ?",
|
||||||
@ -201,7 +208,9 @@
|
|||||||
"BOL.ui.crewDamage": "D.équipage",
|
"BOL.ui.crewDamage": "D.équipage",
|
||||||
"BOL.ui.fireDamage": "Feu ?",
|
"BOL.ui.fireDamage": "Feu ?",
|
||||||
"BOL.ui.weaponbonus": "Cette arme bénéficie déja d'un Dé de Bonus (Arme Favorite prise en compte, par exemple)",
|
"BOL.ui.weaponbonus": "Cette arme bénéficie déja d'un Dé de Bonus (Arme Favorite prise en compte, par exemple)",
|
||||||
"BOL.ui.creature": "Creature",
|
"BOL.ui.creature": "Créature",
|
||||||
|
"BOL.ui.undead": "Mort vivant",
|
||||||
|
"BOL.ui.daemon": "Démon",
|
||||||
"BOL.ui.rabble": "Piétaille",
|
"BOL.ui.rabble": "Piétaille",
|
||||||
"BOL.ui.tough": "Coriace",
|
"BOL.ui.tough": "Coriace",
|
||||||
"BOL.ui.villain": "Rival",
|
"BOL.ui.villain": "Rival",
|
||||||
@ -251,6 +260,7 @@
|
|||||||
"BOL.featureSubtypes.effects": "Effets",
|
"BOL.featureSubtypes.effects": "Effets",
|
||||||
"BOL.featureSubtypes.boleffect": "Effet",
|
"BOL.featureSubtypes.boleffect": "Effet",
|
||||||
"BOL.featureSubtypes.horoscope": "Horoscope",
|
"BOL.featureSubtypes.horoscope": "Horoscope",
|
||||||
|
"BOL.featureSubtypes.xplog": "Log d'XP",
|
||||||
|
|
||||||
"BOL.fightOptionTypes.armor": "Attaque au défaut d'armure",
|
"BOL.fightOptionTypes.armor": "Attaque au défaut d'armure",
|
||||||
"BOL.fightOptionTypes.intrepid": "Attaque intrépide",
|
"BOL.fightOptionTypes.intrepid": "Attaque intrépide",
|
||||||
@ -581,6 +591,8 @@
|
|||||||
"BOL.ui.biosigns": "Signes distinctifs",
|
"BOL.ui.biosigns": "Signes distinctifs",
|
||||||
"BOL.ui.biodescription": "Description",
|
"BOL.ui.biodescription": "Description",
|
||||||
"BOL.ui.bionotes": "Notes",
|
"BOL.ui.bionotes": "Notes",
|
||||||
|
"BOL.ui.xplog":"Journal d'XP",
|
||||||
|
"BOL.ui.value":"Valeur",
|
||||||
|
|
||||||
"BOL.chat.welcome1": "Bienvenue dans Barbarians of Lemuria (Ludospherik version)",
|
"BOL.chat.welcome1": "Bienvenue dans Barbarians of Lemuria (Ludospherik version)",
|
||||||
"BOL.chat.welcome2": "Les livres nécessaires pour jouer sont disponibles sur le site de <a href='http://www.ludospherik.fr/content/14-barbarians-of-lemuria'>l'éditeur Ludospherik.</a>",
|
"BOL.chat.welcome2": "Les livres nécessaires pour jouer sont disponibles sur le site de <a href='http://www.ludospherik.fr/content/14-barbarians-of-lemuria'>l'éditeur Ludospherik.</a>",
|
||||||
@ -589,6 +601,10 @@
|
|||||||
"BOL.chat.welcome5": "Consulter l'aide en ligne pour plus d'informations : @UUID[Compendium.bol.aides-de-jeu.97rugQOtiwt8zPfQ]{Aide du Jeu}.",
|
"BOL.chat.welcome5": "Consulter l'aide en ligne pour plus d'informations : @UUID[Compendium.bol.aides-de-jeu.97rugQOtiwt8zPfQ]{Aide du Jeu}.",
|
||||||
"BOL.chat.welcome6": "Bon jeu en Lemurie !",
|
"BOL.chat.welcome6": "Bon jeu en Lemurie !",
|
||||||
"BOL.chat.nodamage": "Ne pas appliquer les dommages",
|
"BOL.chat.nodamage": "Ne pas appliquer les dommages",
|
||||||
|
"BOL.chat.pcwarning": "Attention ! Aucun personnage n'est relié au joueur !",
|
||||||
|
"BOL.chat.pcwarningmsg": "<b>ATTENTION</b> Le joueur n'est relié à aucun personnage !",
|
||||||
|
"BOL.chat.pcnotlinked": "Le token du personnage joueur n'est pas relié à l'acteur",
|
||||||
|
"BOL.chat.pcnotlinkedmsg": "<b>ATTENTION</b> Le token du personnage joueur n'est pas relié à l'acteur !",
|
||||||
|
|
||||||
"BOL.settings.rollArmor": "Effectuer des jets pour les armures",
|
"BOL.settings.rollArmor": "Effectuer des jets pour les armures",
|
||||||
"BOL.settings.rollArmorTooltip": "Effectue un jet de dés pour les armures (valeur fixe si désactivé)",
|
"BOL.settings.rollArmorTooltip": "Effectue un jet de dés pour les armures (valeur fixe si désactivé)",
|
||||||
@ -607,5 +623,8 @@
|
|||||||
"BOL.settings.defaultLogoActorSheetPath" : "Chemin du logo des fiches de perso",
|
"BOL.settings.defaultLogoActorSheetPath" : "Chemin du logo des fiches de perso",
|
||||||
"BOL.settings.defaultLogoPathActorSheetTooltip": "Vous pouvez changer le logo BoL des fiches de perso, pour jouer dans un autre univers (idéalement 346 x 200, défaut : /systems/bol/ui/logo.webp)",
|
"BOL.settings.defaultLogoPathActorSheetTooltip": "Vous pouvez changer le logo BoL des fiches de perso, pour jouer dans un autre univers (idéalement 346 x 200, défaut : /systems/bol/ui/logo.webp)",
|
||||||
"BOL.settings.defaultLogoTopLeftPath" : "Chemin du logo haut gauche",
|
"BOL.settings.defaultLogoTopLeftPath" : "Chemin du logo haut gauche",
|
||||||
"BOL.settings.defaultLogoTopLeftPathTooltip": "Vous pouvez changer le logo BoL en haut à gauche de chaque écran (idéalement 718 x 416, défaut : /systems/bol/ui/logo2.webp)"
|
"BOL.settings.defaultLogoTopLeftPathTooltip": "Vous pouvez changer le logo BoL en haut à gauche de chaque écran (idéalement 718 x 416, défaut : /systems/bol/ui/logo2.webp)",
|
||||||
|
|
||||||
|
"EFFECT.StatusProne": "A terre",
|
||||||
|
"EFFECT.StatusDead": "Mort"
|
||||||
}
|
}
|
@ -9,7 +9,7 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["bol", "sheet", "actor"],
|
classes: ["bol", "sheet", "actor"],
|
||||||
template: "systems/bol/templates/actor/actor-sheet.hbs",
|
template: "systems/bol/templates/actor/actor-sheet.hbs",
|
||||||
width: 860,
|
width: 860,
|
||||||
@ -27,7 +27,7 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
function onLoad() {
|
function onLoad() {
|
||||||
let logoSheet = BoLUtility.getLogoActorSheet()
|
let logoSheet = BoLUtility.getLogoActorSheet()
|
||||||
$(".bol-actor-form").css("backgroundImage",`url(${logoSheet})`)
|
$(".bol-actor-form").css("backgroundImage", `url(${logoSheet})`)
|
||||||
}
|
}
|
||||||
// Setup everything onload
|
// Setup everything onload
|
||||||
$(function () { onLoad(); });
|
$(function () { onLoad(); });
|
||||||
@ -122,8 +122,8 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async getData(options) {
|
async getData(options) {
|
||||||
const data = super.getData(options)
|
const data = super.getData(options)
|
||||||
const actorData = duplicate(data)
|
const actorData = foundry.utils.duplicate(data)
|
||||||
let formData = duplicate(data)
|
let formData = foundry.utils.duplicate(data)
|
||||||
|
|
||||||
formData.config = game.bol.config
|
formData.config = game.bol.config
|
||||||
formData.data = actorData
|
formData.data = actorData
|
||||||
@ -147,6 +147,7 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
formData.fightoptions = this.actor.fightoptions
|
formData.fightoptions = this.actor.fightoptions
|
||||||
formData.ammos = this.actor.ammos
|
formData.ammos = this.actor.ammos
|
||||||
formData.misc = this.actor.misc
|
formData.misc = this.actor.misc
|
||||||
|
formData.xplog = this.actor.xplog
|
||||||
formData.combat = this.actor.buildCombat()
|
formData.combat = this.actor.buildCombat()
|
||||||
formData.initiativeRank = this.actor.getInitiativeRank()
|
formData.initiativeRank = this.actor.getInitiativeRank()
|
||||||
//formData.combatCreature = this.actor.buildCombatCreature()
|
//formData.combatCreature = this.actor.buildCombatCreature()
|
||||||
@ -155,12 +156,13 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
formData.options = this.options
|
formData.options = this.options
|
||||||
formData.owner = this.document.isOwner
|
formData.owner = this.document.isOwner
|
||||||
formData.editScore = this.options.editScore
|
formData.editScore = this.options.editScore
|
||||||
formData.useBougette = (this.actor.type == "character" && BoLUtility.getUseBougette()) || false
|
formData.useBougette = (this.actor.type == "character" && BoLUtility.getUseBougette()) || false
|
||||||
formData.bougette = this.actor.getBougette()
|
formData.bougette = this.actor.getBougette()
|
||||||
formData.charType = this.actor.getCharType()
|
formData.charType = this.actor.getCharType()
|
||||||
formData.villainy = this.actor.getVillainy()
|
formData.villainy = this.actor.getVillainy()
|
||||||
formData.biography = await TextEditor.enrichHTML(this.object.system.details?.biography || "", {async: true})
|
formData.isUndead = this.actor.isUndead()
|
||||||
formData.notes = await TextEditor.enrichHTML(this.object.system.details.notes || "", {async: true})
|
formData.biography = await TextEditor.enrichHTML(this.object.system.details?.biography || "", { async: true })
|
||||||
|
formData.notes = await TextEditor.enrichHTML(this.object.system.details.notes || "", { async: true })
|
||||||
formData.isSorcerer = this.actor.isSorcerer()
|
formData.isSorcerer = this.actor.isSorcerer()
|
||||||
formData.isAlchemist = this.actor.isAlchemist()
|
formData.isAlchemist = this.actor.isAlchemist()
|
||||||
formData.isAstrologer = this.actor.isAstrologer()
|
formData.isAstrologer = this.actor.isAstrologer()
|
||||||
@ -186,7 +188,7 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
// Get the type of item to create.
|
// Get the type of item to create.
|
||||||
const type = header.dataset.type;
|
const type = header.dataset.type;
|
||||||
// Grab any data associated with this control.
|
// Grab any data associated with this control.
|
||||||
const data = duplicate(header.dataset);
|
const data = foundry.utils.duplicate(header.dataset);
|
||||||
// Initialize a default name.
|
// Initialize a default name.
|
||||||
const name = `New ${type.capitalize()}`;
|
const name = `New ${type.capitalize()}`;
|
||||||
// Prepare the item object.
|
// Prepare the item object.
|
||||||
@ -248,22 +250,22 @@ export class BoLActorSheet extends ActorSheet {
|
|||||||
case "attributexp":
|
case "attributexp":
|
||||||
this.actor.incAttributeXP(dataset.key)
|
this.actor.incAttributeXP(dataset.key)
|
||||||
break;
|
break;
|
||||||
case "bougette":
|
|
||||||
this.actor.rollBougette()
|
|
||||||
break;
|
|
||||||
case "careerxp":
|
case "careerxp":
|
||||||
this.actor.incCareerXP( li.data("item-id"))
|
this.actor.incCareerXP(li.data("item-id"))
|
||||||
break;
|
break;
|
||||||
case "horoscope-minor":
|
case "horoscope-minor":
|
||||||
BoLRoll.horoscopeCheck(this.actor, event, "minor")
|
BoLRoll.horoscopeCheck(this.actor, event, "minor")
|
||||||
break
|
break
|
||||||
case "horoscope-major":
|
case "horoscope-major":
|
||||||
BoLRoll.horoscopeCheck(this.actor, event, "major")
|
BoLRoll.horoscopeCheck(this.actor, event, "major")
|
||||||
break
|
break
|
||||||
case "horoscope-major-group":
|
case "horoscope-major-group":
|
||||||
BoLRoll.horoscopeCheck(this.actor, event, "majorgroup")
|
BoLRoll.horoscopeCheck(this.actor, event, "majorgroup")
|
||||||
break
|
break
|
||||||
|
case "bougette":
|
||||||
|
this.actor.rollBougette()
|
||||||
|
break;
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,10 +38,7 @@ export class BoLActor extends Actor {
|
|||||||
if (this.type === 'character') {
|
if (this.type === 'character') {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (this.type === 'encounter' && this.chartype == "adversary") {
|
return (this.type === 'encounter' && this.chartype == "adversary")
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -54,10 +51,10 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getVillainy() {
|
getVillainy() {
|
||||||
if (this.type === 'encounter' && this.chartype == "adversary") {
|
return (this.type === 'encounter' && this.chartype == "adversary")
|
||||||
return true
|
}
|
||||||
}
|
isUndead() {
|
||||||
return false
|
return (this.type == "encounter" && this.system.isundead)
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getInitiativeMalus() {
|
getInitiativeMalus() {
|
||||||
@ -69,7 +66,7 @@ export class BoLActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getBougette() {
|
getBougette() {
|
||||||
if (this.type == "character") {
|
if (this.type == "character") {
|
||||||
let b = duplicate(this.system.bougette)
|
let b = foundry.utils.duplicate(this.system.bougette)
|
||||||
b.label = game.i18n.localize(game.bol.config.bougetteState[String(this.system.bougette.value)])
|
b.label = game.i18n.localize(game.bol.config.bougetteState[String(this.system.bougette.value)])
|
||||||
b.diceImg = "icons/dice/" + game.bol.config.bougetteDice[String(this.system.bougette.value)] + "black.svg"
|
b.diceImg = "icons/dice/" + game.bol.config.bougetteDice[String(this.system.bougette.value)] + "black.svg"
|
||||||
return b
|
return b
|
||||||
@ -80,7 +77,7 @@ export class BoLActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollBougette() {
|
async rollBougette() {
|
||||||
if (this.type == "character") {
|
if (this.type == "character") {
|
||||||
let attribute = duplicate(this.system.attributes.vigor)
|
let attribute = foundry.utils.duplicate(this.system.attributes.vigor)
|
||||||
let rollData = BoLRoll.getCommonRollData(this, "bougette", attribute, undefined)
|
let rollData = BoLRoll.getCommonRollData(this, "bougette", attribute, undefined)
|
||||||
rollData.formula = game.bol.config.bougetteDice[String(this.system.bougette.value)]
|
rollData.formula = game.bol.config.bougetteDice[String(this.system.bougette.value)]
|
||||||
let r = new BoLDefaultRoll(rollData)
|
let r = new BoLDefaultRoll(rollData)
|
||||||
@ -91,7 +88,7 @@ export class BoLActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
decBougette() {
|
decBougette() {
|
||||||
if (this.type == "character") {
|
if (this.type == "character") {
|
||||||
let bougette = duplicate(this.system.bougette)
|
let bougette = foundry.utils.duplicate(this.system.bougette)
|
||||||
bougette.value = Math.max(Number(bougette.value) - 1, 0)
|
bougette.value = Math.max(Number(bougette.value) - 1, 0)
|
||||||
this.update({ 'system.bougette': bougette })
|
this.update({ 'system.bougette': bougette })
|
||||||
}
|
}
|
||||||
@ -145,7 +142,7 @@ export class BoLActor extends Actor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
get attributes() {
|
get attributes() {
|
||||||
let attrList = duplicate(Object.values(this.system.attributes))
|
let attrList = foundry.utils.duplicate(Object.values(this.system.attributes))
|
||||||
this.addEffectModifiers(attrList, "system.attributes.")
|
this.addEffectModifiers(attrList, "system.attributes.")
|
||||||
return attrList
|
return attrList
|
||||||
}
|
}
|
||||||
@ -199,21 +196,40 @@ export class BoLActor extends Actor {
|
|||||||
getActiveFightOption() {
|
getActiveFightOption() {
|
||||||
let it = this.items.find(i => i.type === "feature" && i.system.subtype === "fightoption" && i.system.properties.activated)
|
let it = this.items.find(i => i.type === "feature" && i.system.subtype === "fightoption" && i.system.properties.activated)
|
||||||
if (it) {
|
if (it) {
|
||||||
return duplicate(it)
|
return foundry.utils.duplicate(it)
|
||||||
}
|
}
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
addXPLog(type, name, cost, value) {
|
||||||
|
let xplog = {
|
||||||
|
name: "XP : "+game.i18n.localize(type), type: "feature",
|
||||||
|
img: "icons/magic/symbols/chevron-elipse-circle-blue.webp",
|
||||||
|
system: {
|
||||||
|
subtype: "xplog", properties: {
|
||||||
|
xptype: type,
|
||||||
|
xpdate: new Date().toLocaleDateString(),
|
||||||
|
xpname: name,
|
||||||
|
xpcost: cost,
|
||||||
|
xpvalue: value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.createEmbeddedDocuments('Item', [xplog])
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
incAttributeXP(key) {
|
incAttributeXP(key) {
|
||||||
let attr = duplicate(this.system.attributes[key])
|
let attr = foundry.utils.duplicate(this.system.attributes[key])
|
||||||
if (attr) {
|
if (attr) {
|
||||||
let nextXP = (attr.value == -1) ? 2 : attr.value + (attr.value + 1)
|
let nextXP = (attr.value == -1) ? 2 : attr.value + (attr.value + 1)
|
||||||
let xp = duplicate(this.system.xp)
|
let xp = foundry.utils.duplicate(this.system.xp)
|
||||||
if (xp.total - xp.spent >= nextXP) {
|
if (xp.total - xp.spent >= nextXP) {
|
||||||
attr.value += 1
|
attr.value += 1
|
||||||
xp.spent += nextXP
|
xp.spent += nextXP
|
||||||
this.update({ [`system.attributes.${key}`]: attr, [`system.xp`]: xp })
|
this.update({ [`system.attributes.${key}`]: attr, [`system.xp`]: xp })
|
||||||
|
this.addXPLog("attribute", key, nextXP, attr.value)
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.warn("Pas assez de points d'expérience !")
|
ui.notifications.warn("Pas assez de points d'expérience !")
|
||||||
}
|
}
|
||||||
@ -222,14 +238,15 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
incAptitudeXP(key) {
|
incAptitudeXP(key) {
|
||||||
let apt = duplicate(this.system.aptitudes[key])
|
let apt = foundry.utils.duplicate(this.system.aptitudes[key])
|
||||||
if (apt) {
|
if (apt) {
|
||||||
let nextXP = (apt.value == -1) ? 1 : apt.value + 2
|
let nextXP = (apt.value == -1) ? 1 : apt.value + 2
|
||||||
let xp = duplicate(this.system.xp)
|
let xp = foundry.utils.duplicate(this.system.xp)
|
||||||
if (xp.total - xp.spent >= nextXP) {
|
if (xp.total - xp.spent >= nextXP) {
|
||||||
apt.value += 1
|
apt.value += 1
|
||||||
xp.spent += nextXP
|
xp.spent += nextXP
|
||||||
this.update({ [`system.aptitudes.${key}`]: apt, [`system.xp`]: xp })
|
this.update({ [`system.aptitudes.${key}`]: apt, [`system.xp`]: xp })
|
||||||
|
this.addXPLog("aptitude", key, nextXP, apt.value)
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.warn("Pas assez de points d'expérience !")
|
ui.notifications.warn("Pas assez de points d'expérience !")
|
||||||
}
|
}
|
||||||
@ -239,13 +256,14 @@ export class BoLActor extends Actor {
|
|||||||
incCareerXP(itemId) {
|
incCareerXP(itemId) {
|
||||||
let career = this.items.get(itemId)
|
let career = this.items.get(itemId)
|
||||||
if (career) {
|
if (career) {
|
||||||
career = duplicate(career)
|
career = foundry.utils.duplicate(career)
|
||||||
let nextXP = career.system.rank + 1
|
let nextXP = career.system.rank + 1
|
||||||
let xp = duplicate(this.system.xp)
|
let xp = foundry.utils.duplicate(this.system.xp)
|
||||||
if (xp.total - xp.spent >= nextXP) {
|
if (xp.total - xp.spent >= nextXP) {
|
||||||
xp.spent += nextXP
|
xp.spent += nextXP
|
||||||
this.update({ [`system.xp`]: xp })
|
this.update({ [`system.xp`]: xp })
|
||||||
this.updateEmbeddedDocuments('Item', [{ _id: career._id, 'system.rank': career.system.rank + 1 }])
|
this.updateEmbeddedDocuments('Item', [{ _id: career._id, 'system.rank': career.system.rank + 1 }])
|
||||||
|
this.addXPLog("career", career.name, nextXP, career.system.rank+1)
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.warn("Pas assez de points d'expérience !")
|
ui.notifications.warn("Pas assez de points d'expérience !")
|
||||||
}
|
}
|
||||||
@ -259,7 +277,7 @@ export class BoLActor extends Actor {
|
|||||||
let updates = []
|
let updates = []
|
||||||
|
|
||||||
if (fightOption) {
|
if (fightOption) {
|
||||||
fightOption = duplicate(fightOption)
|
fightOption = foundry.utils.duplicate(fightOption)
|
||||||
if (fightOption.system.properties.activated) {
|
if (fightOption.system.properties.activated) {
|
||||||
state = false
|
state = false
|
||||||
} else {
|
} else {
|
||||||
@ -298,17 +316,20 @@ export class BoLActor extends Actor {
|
|||||||
get boleffects() {
|
get boleffects() {
|
||||||
return this.items.filter(i => i.type === "feature" && i.system.subtype === "boleffect")
|
return this.items.filter(i => i.type === "feature" && i.system.subtype === "boleffect")
|
||||||
}
|
}
|
||||||
|
get xplog() {
|
||||||
|
return this.items.filter(i => i.type === "feature" && i.system.subtype === "xplog")
|
||||||
|
}
|
||||||
get horoscopes() {
|
get horoscopes() {
|
||||||
return this.items.filter(i => i.type === "feature" && i.system.subtype === "horoscope")
|
return this.items.filter(i => i.type === "feature" && i.system.subtype === "horoscope")
|
||||||
}
|
}
|
||||||
get boons() {
|
get boons() {
|
||||||
return duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "boon") || []);
|
return foundry.utils.duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "boon") || []);
|
||||||
}
|
}
|
||||||
get flaws() {
|
get flaws() {
|
||||||
return duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "flaw") || []);
|
return foundry.utils.duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "flaw") || []);
|
||||||
}
|
}
|
||||||
get careers() {
|
get careers() {
|
||||||
return duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "career") || [])
|
return foundry.utils.duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "career") || [])
|
||||||
}
|
}
|
||||||
get origins() {
|
get origins() {
|
||||||
return this.items.filter(i => i.type === "feature" && i.system.subtype === "origin");
|
return this.items.filter(i => i.type === "feature" && i.system.subtype === "origin");
|
||||||
@ -390,31 +411,23 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
get bonusBoons() {
|
get bonusBoons() {
|
||||||
let boons = this.items.filter(i => i.type === "feature" && i.system.subtype === "boon" && i.system.properties.isbonusdice)
|
let boons = this.items.filter(i => i.type === "feature" && i.system.subtype === "boon" && i.system.properties.isbonusdice)
|
||||||
return duplicate(boons || [])
|
return foundry.utils.duplicate(boons || [])
|
||||||
}
|
}
|
||||||
get malusFlaws() {
|
get malusFlaws() {
|
||||||
return duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "flaw" && i.system.properties.ismalusdice) || []);
|
return foundry.utils.duplicate(this.items.filter(i => i.type === "feature" && i.system.subtype === "flaw" && i.system.properties.ismalusdice) || []);
|
||||||
}
|
}
|
||||||
|
|
||||||
isSorcerer() {
|
isSorcerer() {
|
||||||
if (this.careers.find(item => item.system.properties.sorcerer == true))
|
return (this.careers.find(item => item.system.properties.sorcerer ))
|
||||||
return true
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
isAlchemist() {
|
isAlchemist() {
|
||||||
if (this.careers.find(item => item.system.properties.alchemist == true))
|
return (this.careers.find(item => item.system.properties.alchemist))
|
||||||
return true
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
isAstrologer() {
|
isAstrologer() {
|
||||||
if (this.careers.find(item => item.system.properties.astrologer == true))
|
return (this.careers.find(item => item.system.properties.astrologer))
|
||||||
return true
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
isPriest() {
|
isPriest() {
|
||||||
if (this.careers.find(item => item.system.properties.priest == true))
|
return (this.careers.find(item => item.system.properties.priest))
|
||||||
return true
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
@ -484,7 +497,7 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
spentAstrologyPoints(points) {
|
spentAstrologyPoints(points) {
|
||||||
let astrology = duplicate(this.system.resources.astrologypoints)
|
let astrology = foundry.utils.duplicate(this.system.resources.astrologypoints)
|
||||||
astrology.value -= points
|
astrology.value -= points
|
||||||
astrology.value = Math.max(astrology.value, 0)
|
astrology.value = Math.max(astrology.value, 0)
|
||||||
this.update({ 'system.resources.astrologypoints': astrology })
|
this.update({ 'system.resources.astrologypoints': astrology })
|
||||||
@ -535,8 +548,8 @@ export class BoLActor extends Actor {
|
|||||||
rollData.horoscopeName = actorHoroscope.name
|
rollData.horoscopeName = actorHoroscope.name
|
||||||
}
|
}
|
||||||
if (rollData.horoscopeType == "majorgroup") {
|
if (rollData.horoscopeType == "majorgroup") {
|
||||||
let rID = randomID(16)
|
let rID = foundry.utils.randomID(16)
|
||||||
let horoscopes = duplicate(game.settings.get("bol", "horoscope-group"))
|
let horoscopes = foundry.utils.duplicate(game.settings.get("bol", "horoscope-group"))
|
||||||
horoscopes[rID] = {
|
horoscopes[rID] = {
|
||||||
id: rID,
|
id: rID,
|
||||||
name: game.i18n.localize("BOL.ui.groupHoroscope") + this.name,
|
name: game.i18n.localize("BOL.ui.groupHoroscope") + this.name,
|
||||||
@ -568,7 +581,7 @@ export class BoLActor extends Actor {
|
|||||||
async spendAlchemyPoint(alchemyId, pcCost) {
|
async spendAlchemyPoint(alchemyId, pcCost) {
|
||||||
let alchemy = this.items.get(alchemyId)
|
let alchemy = this.items.get(alchemyId)
|
||||||
if (alchemy) {
|
if (alchemy) {
|
||||||
pcCost = Number(pcCost) ?? 0
|
pcCost = Number(pcCost) || 0
|
||||||
if (this.system.resources.alchemypoints.value >= pcCost) {
|
if (this.system.resources.alchemypoints.value >= pcCost) {
|
||||||
let newPC = this.system.resources.alchemypoints.value - pcCost
|
let newPC = this.system.resources.alchemypoints.value - pcCost
|
||||||
newPC = (newPC < 0) ? 0 : newPC
|
newPC = (newPC < 0) ? 0 : newPC
|
||||||
@ -582,7 +595,7 @@ export class BoLActor extends Actor {
|
|||||||
}
|
}
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
getAstrologerBonus() {
|
getAstrologerBonus() {
|
||||||
let astrologer = this.careers.find(item => item.system.properties.astrologer == true)
|
let astrologer = this.careers.find(item => item.system.properties.astrologer)
|
||||||
if (astrologer) {
|
if (astrologer) {
|
||||||
return astrologer.system.rank
|
return astrologer.system.rank
|
||||||
}
|
}
|
||||||
@ -590,7 +603,7 @@ export class BoLActor extends Actor {
|
|||||||
}
|
}
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
getAlchemistBonus() {
|
getAlchemistBonus() {
|
||||||
let sorcerer = this.careers.find(item => item.system.properties.alchemist == true)
|
let sorcerer = this.careers.find(item => item.system.properties.alchemist)
|
||||||
if (sorcerer) {
|
if (sorcerer) {
|
||||||
return sorcerer.system.rank
|
return sorcerer.system.rank
|
||||||
}
|
}
|
||||||
@ -598,7 +611,7 @@ export class BoLActor extends Actor {
|
|||||||
}
|
}
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
getSorcererBonus() {
|
getSorcererBonus() {
|
||||||
let sorcerer = this.careers.find(item => item.system.properties.sorcerer == true)
|
let sorcerer = this.careers.find(item => item.system.properties.sorcerer )
|
||||||
if (sorcerer) {
|
if (sorcerer) {
|
||||||
return sorcerer.system.rank
|
return sorcerer.system.rank
|
||||||
}
|
}
|
||||||
@ -629,7 +642,7 @@ export class BoLActor extends Actor {
|
|||||||
resources['power'] = this.system.resources.power
|
resources['power'] = this.system.resources.power
|
||||||
}
|
}
|
||||||
if (this.system.chartype == 'adversary') {
|
if (this.system.chartype == 'adversary') {
|
||||||
resources['hero'] = duplicate(this.system.resources.hero)
|
resources['hero'] = foundry.utils.duplicate(this.system.resources.hero)
|
||||||
resources['hero'].label = "BOL.resources.villainy"
|
resources['hero'].label = "BOL.resources.villainy"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -775,17 +788,17 @@ export class BoLActor extends Actor {
|
|||||||
let lastHP = await this.getFlag("world", hpID)
|
let lastHP = await this.getFlag("world", hpID)
|
||||||
if (lastHP != this.system.resources.hp.value && game.user.isGM) { // Only GM sends this
|
if (lastHP != this.system.resources.hp.value && game.user.isGM) { // Only GM sends this
|
||||||
await this.setFlag("world", hpID, this.system.resources.hp.value)
|
await this.setFlag("world", hpID, this.system.resources.hp.value)
|
||||||
let prone = this.effects.find(ef => ef.label == "EFFECT.StatusProne")
|
let prone = this.effects.find(ef => ef.name == game.i18n.localize("EFFECT.StatusProne"))
|
||||||
let dead = this.effects.find(ef => ef.label == "EFFECT.StatusDead")
|
let dead = this.effects.find(ef => ef.name == game.i18n.localize("EFFECT.StatusDead"))
|
||||||
if (this.system.resources.hp.value <= 0) {
|
if (this.system.resources.hp.value <= 0) {
|
||||||
if (!prone) {
|
if (!prone) {
|
||||||
await this.createEmbeddedDocuments("ActiveEffect", [
|
await this.createEmbeddedDocuments("ActiveEffect", [
|
||||||
{ label: 'EFFECT.StatusProne', icon: 'icons/svg/falling.svg', flags: { core: { statusId: 'prone' } } }
|
{ name: game.i18n.localize('EFFECT.StatusProne'), icon: 'icons/svg/falling.svg', statuses: 'prone' }
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
if (this.system.resources.hp.value < -5 && !dead) {
|
if (this.system.resources.hp.value < -5 && !dead) {
|
||||||
await this.createEmbeddedDocuments("ActiveEffect", [
|
await this.createEmbeddedDocuments("ActiveEffect", [
|
||||||
{ label: 'EFFECT.StatusDead', icon: 'icons/svg/skull.svg', flags: { core: { statusId: 'dead' } } }
|
{ name: game.i18n.localize('EFFECT.StatusDead'), icon: 'icons/svg/skull.svg', statuses: 'dead' }
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
@ -812,7 +825,7 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
storeVitaliteCombat() {
|
storeVitaliteCombat() {
|
||||||
this.setFlag("world", "vitalite-before-combat", duplicate(this.system.resources.hp))
|
this.setFlag("world", "vitalite-before-combat", foundry.utils.duplicate(this.system.resources.hp))
|
||||||
}
|
}
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
async displayRecuperation() {
|
async displayRecuperation() {
|
||||||
@ -836,7 +849,7 @@ export class BoLActor extends Actor {
|
|||||||
}
|
}
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
async applyRecuperation(recupHP) {
|
async applyRecuperation(recupHP) {
|
||||||
let hp = duplicate(this.system.resources.hp)
|
let hp = foundry.utils.duplicate(this.system.resources.hp)
|
||||||
//console.log("RECUP !!!!", hp, recupHP)
|
//console.log("RECUP !!!!", hp, recupHP)
|
||||||
hp.value += Number(recupHP)
|
hp.value += Number(recupHP)
|
||||||
hp.value = Math.min(hp.value, hp.max)
|
hp.value = Math.min(hp.value, hp.max)
|
||||||
@ -864,10 +877,7 @@ export class BoLActor extends Actor {
|
|||||||
checkNumeric(myObject) {
|
checkNumeric(myObject) {
|
||||||
if (myObject) {
|
if (myObject) {
|
||||||
for (let key in myObject) {
|
for (let key in myObject) {
|
||||||
if (myObject[key].value === null) {
|
if (myObject[key].value === null || isNaN(myObject[key].value)) {
|
||||||
myObject[key].value = 0
|
|
||||||
}
|
|
||||||
if (myObject[key].value === NaN) {
|
|
||||||
myObject[key].value = 0
|
myObject[key].value = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -889,7 +899,7 @@ export class BoLActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
getInitiativeRank(rollData = undefined, isCombat = false, combatData) {
|
getInitiativeRank(rollData = undefined, isCombat = false, combatData = undefined) {
|
||||||
let fvttInit = 4 // Pietaille par defaut
|
let fvttInit = 4 // Pietaille par defaut
|
||||||
if (this.type == 'character') {
|
if (this.type == 'character') {
|
||||||
fvttInit = 5
|
fvttInit = 5
|
||||||
@ -988,7 +998,7 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
rollProtection(itemId) {
|
rollProtection(itemId) {
|
||||||
let armor = duplicate(this.items.get(itemId))
|
let armor = foundry.utils.duplicate(this.items.get(itemId))
|
||||||
if (armor) {
|
if (armor) {
|
||||||
let armorFormula = "max(" + armor.system.properties.soak.formula + ", 0)"
|
let armorFormula = "max(" + armor.system.properties.soak.formula + ", 0)"
|
||||||
let rollArmor = new Roll(armorFormula)
|
let rollArmor = new Roll(armorFormula)
|
||||||
@ -998,9 +1008,9 @@ export class BoLActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
rollWeaponDamage(itemId) {
|
rollWeaponDamage(itemId) {
|
||||||
let weapon = duplicate(this.items.get(itemId))
|
let weapon = foundry.utils.duplicate(this.items.get(itemId))
|
||||||
if (weapon) {
|
if (weapon) {
|
||||||
let r = new BoLDefaultRoll({ id: randomID(16), isSuccess: true, mode: "weapon", weapon: weapon, actorId: this.id, actor: this })
|
let r = new BoLDefaultRoll({ id: foundry.utils.randomID(16), isSuccess: true, mode: "weapon", weapon: weapon, actorId: this.id, actor: this })
|
||||||
r.setSuccess(true)
|
r.setSuccess(true)
|
||||||
r.rollDamage()
|
r.rollDamage()
|
||||||
}
|
}
|
||||||
@ -1010,7 +1020,7 @@ export class BoLActor extends Actor {
|
|||||||
toggleEquipItem(item) {
|
toggleEquipItem(item) {
|
||||||
const equipable = item.system.properties.equipable;
|
const equipable = item.system.properties.equipable;
|
||||||
if (equipable) {
|
if (equipable) {
|
||||||
let itemData = duplicate(item);
|
let itemData = foundry.utils.duplicate(item);
|
||||||
itemData.system.worn = !itemData.system.worn;
|
itemData.system.worn = !itemData.system.worn;
|
||||||
return item.update(itemData);
|
return item.update(itemData);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ export class BoLVehicleSheet extends ActorSheet {
|
|||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["bol", "sheet", "actor"],
|
classes: ["bol", "sheet", "actor"],
|
||||||
template: "systems/bol/templates/actor/vehicle-sheet.hbs",
|
template: "systems/bol/templates/actor/vehicle-sheet.hbs",
|
||||||
width: 860,
|
width: 860,
|
||||||
@ -116,13 +116,12 @@ export class BoLVehicleSheet extends ActorSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async getData(options) {
|
async getData(options) {
|
||||||
const data = super.getData(options)
|
const data = super.getData(options)
|
||||||
const actorData = duplicate(data)
|
let formData = foundry.utils.duplicate(data)
|
||||||
let formData = duplicate(data)
|
|
||||||
|
|
||||||
formData.config = game.bol.config
|
formData.config = game.bol.config
|
||||||
formData.name = this.actor.name
|
formData.name = this.actor.name
|
||||||
formData.img = this.actor.img
|
formData.img = this.actor.img
|
||||||
formData.system = duplicate(this.actor.system)
|
formData.system = foundry.utils.duplicate(this.actor.system)
|
||||||
formData.weapons = this.actor.vehicleWeapons
|
formData.weapons = this.actor.vehicleWeapons
|
||||||
formData.isGM = game.user.isGM
|
formData.isGM = game.user.isGM
|
||||||
formData.options = this.options
|
formData.options = this.options
|
||||||
@ -148,7 +147,7 @@ export class BoLVehicleSheet extends ActorSheet {
|
|||||||
// Get the type of item to create.
|
// Get the type of item to create.
|
||||||
const type = header.dataset.type;
|
const type = header.dataset.type;
|
||||||
// Grab any data associated with this control.
|
// Grab any data associated with this control.
|
||||||
const data = duplicate(header.dataset);
|
const data = foundry.utils.duplicate(header.dataset);
|
||||||
// Initialize a default name.
|
// Initialize a default name.
|
||||||
const name = `New ${type.capitalize()}`;
|
const name = `New ${type.capitalize()}`;
|
||||||
// Prepare the item object.
|
// Prepare the item object.
|
||||||
|
@ -14,9 +14,8 @@ import { BoLUtility } from "./system/bol-utility.js"
|
|||||||
import { BoLCombatManager } from "./system/bol-combat.js"
|
import { BoLCombatManager } from "./system/bol-combat.js"
|
||||||
import { BoLTokenHud } from "./system/bol-action-hud.js"
|
import { BoLTokenHud } from "./system/bol-action-hud.js"
|
||||||
import { BoLHotbar } from "./system/bol-hotbar.js"
|
import { BoLHotbar } from "./system/bol-hotbar.js"
|
||||||
import { BoLAdventureGenerator } from "./system/bol-adventure-generator.js"
|
import { BoLCommands } from "./system/bol-commands.js"
|
||||||
import { BoLCommands} from "./system/bol-commands.js"
|
import { BoLRoll } from "./controllers/bol-rolls.js"
|
||||||
import { BoLCharacterSummary} from "./system/bol-character-summary.js"
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
Hooks.once('init', async function () {
|
Hooks.once('init', async function () {
|
||||||
@ -25,10 +24,12 @@ Hooks.once('init', async function () {
|
|||||||
BoLActor,
|
BoLActor,
|
||||||
BoLItem,
|
BoLItem,
|
||||||
BoLHotbar,
|
BoLHotbar,
|
||||||
|
BoLRoll,
|
||||||
|
BoLUtility,
|
||||||
macros: Macros,
|
macros: Macros,
|
||||||
config: BOL
|
config: BOL
|
||||||
};
|
};
|
||||||
|
|
||||||
// Game socket
|
// Game socket
|
||||||
game.socket.on("system.bol", sockmsg => {
|
game.socket.on("system.bol", sockmsg => {
|
||||||
BoLUtility.onSocketMessage(sockmsg);
|
BoLUtility.onSocketMessage(sockmsg);
|
||||||
@ -62,8 +63,7 @@ Hooks.once('init', async function () {
|
|||||||
BoLTokenHud.init()
|
BoLTokenHud.init()
|
||||||
BoLHotbar.init()
|
BoLHotbar.init()
|
||||||
BoLCommands.init()
|
BoLCommands.init()
|
||||||
BoLAdventureGenerator.init()
|
|
||||||
|
|
||||||
// Preload Handlebars Templates
|
// Preload Handlebars Templates
|
||||||
await preloadHandlebarsTemplates();
|
await preloadHandlebarsTemplates();
|
||||||
|
|
||||||
@ -75,31 +75,6 @@ Hooks.once('init', async function () {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
// Register world usage statistics
|
|
||||||
function registerUsageCount( registerKey ) {
|
|
||||||
if ( game.user.isGM ) {
|
|
||||||
game.settings.register(registerKey, "world-key", {
|
|
||||||
name: "Unique world key",
|
|
||||||
scope: "world",
|
|
||||||
config: false,
|
|
||||||
default: "",
|
|
||||||
type: String
|
|
||||||
});
|
|
||||||
|
|
||||||
let worldKey = game.settings.get(registerKey, "world-key")
|
|
||||||
if ( worldKey == undefined || worldKey == "" ) {
|
|
||||||
worldKey = randomID(32)
|
|
||||||
game.settings.set(registerKey, "world-key", worldKey )
|
|
||||||
}
|
|
||||||
// Simple API counter
|
|
||||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
|
||||||
//$.ajaxSetup({
|
|
||||||
//headers: { 'Access-Control-Allow-Origin': '*' }
|
|
||||||
//})
|
|
||||||
$.ajax(regURL)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
function welcomeMessage() {
|
function welcomeMessage() {
|
||||||
@ -108,24 +83,44 @@ function welcomeMessage() {
|
|||||||
whisper: [game.user.id],
|
whisper: [game.user.id],
|
||||||
content: `<div id="welcome-message-pegasus"><span class="rdd-roll-part">
|
content: `<div id="welcome-message-pegasus"><span class="rdd-roll-part">
|
||||||
<strong>` + game.i18n.localize("BOL.chat.welcome1") + `</strong><p>` +
|
<strong>` + game.i18n.localize("BOL.chat.welcome1") + `</strong><p>` +
|
||||||
game.i18n.localize("BOL.chat.welcome2") + "<p>" +
|
game.i18n.localize("BOL.chat.welcome2") + "<p>" +
|
||||||
game.i18n.localize("BOL.chat.welcome3") + "<p>" +
|
game.i18n.localize("BOL.chat.welcome3") + "<p>" +
|
||||||
game.i18n.localize("BOL.chat.welcome4") + "</p>" +
|
game.i18n.localize("BOL.chat.welcome4") + "</p>" +
|
||||||
game.i18n.localize("BOL.chat.welcome5") + "<br>" +
|
game.i18n.localize("BOL.chat.welcome5") + "<br>" +
|
||||||
game.i18n.localize("BOL.chat.welcome6")
|
game.i18n.localize("BOL.chat.welcome6")
|
||||||
} )
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
Hooks.once('ready', async function () {
|
Hooks.once('ready', async function () {
|
||||||
|
|
||||||
BoLUtility.ready()
|
BoLUtility.ready()
|
||||||
BoLCharacterSummary.ready()
|
|
||||||
|
|
||||||
registerUsageCount(game.system.id)
|
|
||||||
|
|
||||||
|
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
|
||||||
|
console.log("ClassCounter loaded", moduleCounter)
|
||||||
|
moduleCounter.ClassCounter.registerUsageCount()
|
||||||
|
}).catch(err=>
|
||||||
|
console.log("No stats available, giving up.")
|
||||||
|
)
|
||||||
|
|
||||||
welcomeMessage()
|
welcomeMessage()
|
||||||
|
|
||||||
|
// User warning
|
||||||
|
if (!game.user.isGM && game.user.character == undefined) {
|
||||||
|
ui.notifications.info(game.i18n.localize("BOL.chat.pcwarning"));
|
||||||
|
ChatMessage.create({
|
||||||
|
content: game.i18n.localize("BOL.chat.pcwarningmsg") + game.user.name,
|
||||||
|
user: game.user._id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!game.user.isGM && game.user.character && !game.user.character.prototypeToken.actorLink) {
|
||||||
|
ui.notifications.info(game.i18n.localize("BOL.chat.pcnotlinked"));
|
||||||
|
ChatMessage.create({
|
||||||
|
content: game.i18n.localize("BOL.chat.pcnotlinkedmsg") + game.user.name,
|
||||||
|
user: game.user._id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,11 +19,9 @@ export class BoLRoll {
|
|||||||
static updateApplicableEffects(rollData) {
|
static updateApplicableEffects(rollData) {
|
||||||
let appEffects = []
|
let appEffects = []
|
||||||
for (let effect of rollData.bolEffects) {
|
for (let effect of rollData.bolEffects) {
|
||||||
if (effect.system.properties.identifier == "always") {
|
if ( (effect.system.properties.identifier == "always") ||
|
||||||
appEffects.push(effect)
|
(effect.system.properties.identifier.includes(rollData.attribute.key)) ||
|
||||||
} else if (effect.system.properties.identifier.includes(rollData.attribute.key)) {
|
(rollData.aptitude && effect.system.properties.identifier.includes(rollData.aptitude.key)) ){
|
||||||
appEffects.push(effect)
|
|
||||||
} else if (rollData.aptitude && effect.system.properties.identifier.includes(rollData.aptitude.key)) {
|
|
||||||
appEffects.push(effect)
|
appEffects.push(effect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,10 +60,10 @@ export class BoLRoll {
|
|||||||
armorInitMalus: actor.getArmorInitMalus(),
|
armorInitMalus: actor.getArmorInitMalus(),
|
||||||
horoscopeBonusList: actor.getHoroscopesBonus(),
|
horoscopeBonusList: actor.getHoroscopesBonus(),
|
||||||
horoscopeMalusList: actor.getHoroscopesMalus(),
|
horoscopeMalusList: actor.getHoroscopesMalus(),
|
||||||
|
config: game.bol.config,
|
||||||
adv: "0",
|
adv: "0",
|
||||||
mod: 0,
|
mod: 0,
|
||||||
modRanged: 0,
|
modRanged: 0,
|
||||||
aptValue: 0,
|
|
||||||
bolEffects: actor.boleffects,
|
bolEffects: actor.boleffects,
|
||||||
horoscopeGroupList: this.buildHoroscopeGroupList()
|
horoscopeGroupList: this.buildHoroscopeGroupList()
|
||||||
}
|
}
|
||||||
@ -78,7 +76,7 @@ export class BoLRoll {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static attributeCheck(actor, key, event, combatData) {
|
static attributeCheck(actor, key="vigor", event=undefined, combatData=undefined) {
|
||||||
|
|
||||||
let attribute = eval(`actor.system.attributes.${key}`)
|
let attribute = eval(`actor.system.attributes.${key}`)
|
||||||
|
|
||||||
@ -91,7 +89,7 @@ export class BoLRoll {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static aptitudeCheck(actor, key, event, combatData) {
|
static aptitudeCheck(actor, key="init", event=undefined, combatData=undefined) {
|
||||||
|
|
||||||
let aptitude = eval(`actor.system.aptitudes.${key}`)
|
let aptitude = eval(`actor.system.aptitudes.${key}`)
|
||||||
let attrKey = this.getDefaultAttribute(key)
|
let attrKey = this.getDefaultAttribute(key)
|
||||||
@ -185,7 +183,7 @@ export class BoLRoll {
|
|||||||
ui.notifications.warn("Unable to find weapon !")
|
ui.notifications.warn("Unable to find weapon !")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
weapon = duplicate(weapon)
|
weapon = foundry.utils.duplicate(weapon)
|
||||||
return this.weaponCheckWithWeapon(actor, weapon)
|
return this.weaponCheckWithWeapon(actor, weapon)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,7 +195,7 @@ export class BoLRoll {
|
|||||||
ui.notifications.warn("Unable to find Alchemy !");
|
ui.notifications.warn("Unable to find Alchemy !");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
alchemy = duplicate(alchemy)
|
alchemy = foundry.utils.duplicate(alchemy)
|
||||||
let alchemyData = alchemy.system
|
let alchemyData = alchemy.system
|
||||||
if (alchemyData.properties.pccurrent < alchemyData.properties.pccost) {
|
if (alchemyData.properties.pccurrent < alchemyData.properties.pccost) {
|
||||||
ui.notifications.warn("Pas assez de Points de Création investis dans la Préparation !")
|
ui.notifications.warn("Pas assez de Points de Création investis dans la Préparation !")
|
||||||
@ -271,7 +269,7 @@ export class BoLRoll {
|
|||||||
ui.notifications.warn("Impossible de trouver ce sort !")
|
ui.notifications.warn("Impossible de trouver ce sort !")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
spell = duplicate(spell)
|
spell = foundry.utils.duplicate(spell)
|
||||||
return this.spellCheckWithSpell(actor, spell)
|
return this.spellCheckWithSpell(actor, spell)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,7 +402,7 @@ export class BoLRoll {
|
|||||||
html.find('#attr').change((event) => {
|
html.find('#attr').change((event) => {
|
||||||
let attrKey = event.currentTarget.value
|
let attrKey = event.currentTarget.value
|
||||||
let actor = BoLUtility.getActorFromRollData(this.rollData)
|
let actor = BoLUtility.getActorFromRollData(this.rollData)
|
||||||
this.rollData.attribute = duplicate(actor.system.attributes[attrKey])
|
this.rollData.attribute = foundry.utils.duplicate(actor.system.attributes[attrKey])
|
||||||
this.rollData.attrValue = actor.system.attributes[attrKey].value
|
this.rollData.attrValue = actor.system.attributes[attrKey].value
|
||||||
this.rollData.bolApplicableEffects = this.updateApplicableEffects(this.rollData)
|
this.rollData.bolApplicableEffects = this.updateApplicableEffects(this.rollData)
|
||||||
this.updateTotalDice()
|
this.updateTotalDice()
|
||||||
@ -412,7 +410,7 @@ export class BoLRoll {
|
|||||||
html.find('#apt').change((event) => {
|
html.find('#apt').change((event) => {
|
||||||
let aptKey = event.currentTarget.value
|
let aptKey = event.currentTarget.value
|
||||||
let actor = BoLUtility.getActorFromRollData(this.rollData)
|
let actor = BoLUtility.getActorFromRollData(this.rollData)
|
||||||
this.rollData.aptitude = duplicate(actor.system.aptitudes[aptKey])
|
this.rollData.aptitude = foundry.utils.duplicate(actor.system.aptitudes[aptKey])
|
||||||
this.rollData.aptValue = actor.system.aptitudes[aptKey].value
|
this.rollData.aptValue = actor.system.aptitudes[aptKey].value
|
||||||
this.rollData.bolApplicableEffects = this.updateApplicableEffects(this.rollData)
|
this.rollData.bolApplicableEffects = this.updateApplicableEffects(this.rollData)
|
||||||
this.updateTotalDice()
|
this.updateTotalDice()
|
||||||
@ -455,7 +453,7 @@ export class BoLRoll {
|
|||||||
html.find('#horoscope-bonus-applied').change((event) => {
|
html.find('#horoscope-bonus-applied').change((event) => {
|
||||||
this.rollData.selectedHoroscope = []
|
this.rollData.selectedHoroscope = []
|
||||||
for (let option of event.currentTarget.selectedOptions) {
|
for (let option of event.currentTarget.selectedOptions) {
|
||||||
this.rollData.selectedHoroscope.push(duplicate(this.rollData.horoscopeBonusList[Number(option.index)]))
|
this.rollData.selectedHoroscope.push(foundry.utils.duplicate(this.rollData.horoscopeBonusList[Number(option.index)]))
|
||||||
}
|
}
|
||||||
let horoscopes = $('#horoscope-bonus-applied').val()
|
let horoscopes = $('#horoscope-bonus-applied').val()
|
||||||
this.rollData.horoscopeBonus = (!horoscopes || horoscopes.length == 0) ? 0 : horoscopes.length
|
this.rollData.horoscopeBonus = (!horoscopes || horoscopes.length == 0) ? 0 : horoscopes.length
|
||||||
@ -465,7 +463,7 @@ export class BoLRoll {
|
|||||||
html.find('#horoscope-malus-applied').change((event) => {
|
html.find('#horoscope-malus-applied').change((event) => {
|
||||||
this.rollData.selectedHoroscope = []
|
this.rollData.selectedHoroscope = []
|
||||||
for (let option of event.currentTarget.selectedOptions) {
|
for (let option of event.currentTarget.selectedOptions) {
|
||||||
this.rollData.selectedHoroscope.push(duplicate(this.rollData.horoscopeBonusList[Number(option.index)]))
|
this.rollData.selectedHoroscope.push(foundry.utils.duplicate(this.rollData.horoscopeBonusList[Number(option.index)]))
|
||||||
}
|
}
|
||||||
let horoscopes = $('#horoscope-malus-applied').val()
|
let horoscopes = $('#horoscope-malus-applied').val()
|
||||||
this.rollData.horoscopeMalus = (!horoscopes || horoscopes.length == 0) ? 0 : horoscopes.length
|
this.rollData.horoscopeMalus = (!horoscopes || horoscopes.length == 0) ? 0 : horoscopes.length
|
||||||
@ -533,7 +531,7 @@ export class BoLRoll {
|
|||||||
rollData.careerBonus = rollData.careerBonus ?? 0
|
rollData.careerBonus = rollData.careerBonus ?? 0
|
||||||
rollData.modRanged = rollData.modRanged ?? 0
|
rollData.modRanged = rollData.modRanged ?? 0
|
||||||
rollData.mod = rollData.mod ?? 0
|
rollData.mod = rollData.mod ?? 0
|
||||||
rollData.id = randomID(16)
|
rollData.id = foundry.utils.randomID(16)
|
||||||
rollData.weaponModifier = 0
|
rollData.weaponModifier = 0
|
||||||
rollData.attackBonusDice = false
|
rollData.attackBonusDice = false
|
||||||
rollData.armorMalus = 0
|
rollData.armorMalus = 0
|
||||||
@ -619,16 +617,15 @@ export class BoLDefaultRoll {
|
|||||||
if (this.rollData.applyId) {
|
if (this.rollData.applyId) {
|
||||||
BoLUtility.cleanupButtons(this.rollData.applyId)
|
BoLUtility.cleanupButtons(this.rollData.applyId)
|
||||||
}
|
}
|
||||||
this.rollData.optionsId = randomID(16)
|
this.rollData.optionsId = foundry.utils.randomID(16)
|
||||||
this.rollData.applyId = randomID(16)
|
this.rollData.applyId = foundry.utils.randomID(16)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async roll() {
|
async roll() {
|
||||||
|
|
||||||
const r = new Roll(this.rollData.formula)
|
const r = new Roll(this.rollData.formula)
|
||||||
//console.log("Roll formula", this.rollData.formula)
|
await r.roll()
|
||||||
await r.roll({ "async": false })
|
|
||||||
|
|
||||||
let diceData = BoLUtility.getDiceData()
|
let diceData = BoLUtility.getDiceData()
|
||||||
//console.log("DICEDATA", diceData)
|
//console.log("DICEDATA", diceData)
|
||||||
@ -691,7 +688,7 @@ export class BoLDefaultRoll {
|
|||||||
flavor: msgFlavor,
|
flavor: msgFlavor,
|
||||||
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
||||||
})
|
})
|
||||||
this.rollData.roll = duplicate(this.rollData.roll) // Remove object, keep data (v111 ready)
|
this.rollData.roll = foundry.utils.duplicate(this.rollData.roll) // Remove object, keep data (v111 ready)
|
||||||
msg.setFlag("world", "bol-roll-data", this.rollData)
|
msg.setFlag("world", "bol-roll-data", this.rollData)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -744,7 +741,7 @@ export class BoLDefaultRoll {
|
|||||||
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
||||||
flags: { msgType: "default" }
|
flags: { msgType: "default" }
|
||||||
})
|
})
|
||||||
this.rollData.damageRoll = duplicate(this.rollData.damageRoll)
|
this.rollData.damageRoll = foundry.utils.duplicate(this.rollData.damageRoll)
|
||||||
this.rollData.actor = undefined // Cleanup
|
this.rollData.actor = undefined // Cleanup
|
||||||
msg.setFlag("world", "bol-roll-data", this.rollData)
|
msg.setFlag("world", "bol-roll-data", this.rollData)
|
||||||
})
|
})
|
||||||
|
@ -8,7 +8,7 @@ export class BoLItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["bol", "sheet", "item"],
|
classes: ["bol", "sheet", "item"],
|
||||||
template: "systems/bol/templates/item/item-sheet.hbs",
|
template: "systems/bol/templates/item/item-sheet.hbs",
|
||||||
width: 650,
|
width: 650,
|
||||||
@ -21,14 +21,16 @@ export class BoLItemSheet extends ItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async getData(options) {
|
async getData(options) {
|
||||||
const data = super.getData(options)
|
const data = super.getData(options)
|
||||||
let itemData = duplicate(data.document)
|
let itemData = foundry.utils.duplicate(data.document)
|
||||||
data.config = game.bol.config
|
data.config = game.bol.config
|
||||||
data.item = itemData
|
data.item = itemData
|
||||||
data.category = itemData.system.category
|
data.category = itemData.system.category
|
||||||
data.isGM = game.user.isGM;
|
data.isGM = game.user.isGM;
|
||||||
data.itemProperties = this.item.itemProperties;
|
data.itemProperties = this.item.itemProperties;
|
||||||
data.description = await TextEditor.enrichHTML(this.object.system.description, { async: true })
|
data.description = await TextEditor.enrichHTML(this.object.system.description, { async: true })
|
||||||
|
if (data.document.actor) {
|
||||||
|
data.careers = data.document.actor.careers
|
||||||
|
}
|
||||||
// Dynamic default data fix/adapt
|
// Dynamic default data fix/adapt
|
||||||
if (itemData.type == "item") {
|
if (itemData.type == "item") {
|
||||||
if (!itemData.system.category) {
|
if (!itemData.system.category) {
|
||||||
@ -76,7 +78,7 @@ export class BoLItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
postItem() {
|
postItem() {
|
||||||
let chatData = duplicate(this.item)
|
let chatData = foundry.utils.duplicate(this.item)
|
||||||
if (this.actor) {
|
if (this.actor) {
|
||||||
chatData.actor = { id: this.actor.id };
|
chatData.actor = { id: this.actor.id };
|
||||||
}
|
}
|
||||||
|
@ -1,620 +0,0 @@
|
|||||||
{
|
|
||||||
"titre1": [
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Prophétie"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Grottes",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Collines",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Voleurs",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Sorcier(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Bataille"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Légende"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Tour",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "l'",
|
|
||||||
"name": "Ile",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Pirates",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Druide(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Navire",
|
|
||||||
"isCarriere": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Couronne",
|
|
||||||
"isObjet": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Cité",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Désert",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Bête(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Démon(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Trésor",
|
|
||||||
"isObjet": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "l'",
|
|
||||||
"name": "Epée",
|
|
||||||
"isObjet": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "l'",
|
|
||||||
"name": "Arène",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Marais",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Seigneur(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Assassin(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Culte",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Secret",
|
|
||||||
"isCarriere": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Palais",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Mer",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Barbares",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Manuscrit",
|
|
||||||
"isObjet": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Plaines",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "le",
|
|
||||||
"name": "Sang",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Tombe",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "la",
|
|
||||||
"name": "Forêt",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Esclaves",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Mendiant(s)",
|
|
||||||
"isEnnemi": true,
|
|
||||||
"isCarriere": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "les",
|
|
||||||
"name": "Montagnes",
|
|
||||||
"isCarriereLieu": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"titre2": [
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "mal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "et le",
|
|
||||||
"name": "Roi Maussade",
|
|
||||||
"isEnnemi": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "et la",
|
|
||||||
"name": "pestilence",
|
|
||||||
"isEnnemi": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Malakut",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "d'",
|
|
||||||
"name": "Halakh",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "d'",
|
|
||||||
"name": "Hyrdral",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "des",
|
|
||||||
"name": "esprits abandonnés",
|
|
||||||
"isEnnemi": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "chaos",
|
|
||||||
"isEnnemi": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de la",
|
|
||||||
"name": "folie",
|
|
||||||
"isEnnemi": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Satarla",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "d'",
|
|
||||||
"name": "Urceb",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "des",
|
|
||||||
"name": "Terres Désolées",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de la",
|
|
||||||
"name": "mort",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "des",
|
|
||||||
"name": "idoles impies",
|
|
||||||
"isObjet": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "des",
|
|
||||||
"name": "ténèbres",
|
|
||||||
"isObjet": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Parsool",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Qiddesh",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Kasht",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de la ",
|
|
||||||
"name": "falalité",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "Nécromant",
|
|
||||||
"isEnnemi": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "Néant",
|
|
||||||
"isEnnemi": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Lysor",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "d'",
|
|
||||||
"name": "Oosal",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Thulé",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "désespoir",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "Dieu Bouffi",
|
|
||||||
"isEnnemi": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "silence",
|
|
||||||
"isEnnemi": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Tyrus",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "d'",
|
|
||||||
"name": "Ygddar",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "la Côte de Feu",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "des",
|
|
||||||
"name": "ombres cruelles",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de la",
|
|
||||||
"name": "poussière écarlate",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "destin",
|
|
||||||
"isLieu": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "du",
|
|
||||||
"name": "Valgard",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "Qeb",
|
|
||||||
"isLieu": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": "de",
|
|
||||||
"name": "la Mer Inconnue",
|
|
||||||
"isLieu": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mission": [
|
|
||||||
{
|
|
||||||
"name": "d’attaquer un lieu."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de détruire un certain objet."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de kidnapper quelqu’un."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "d’obtenir une certaine chose."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "d’explorer un lieu."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de sauver une personne."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "d’échapper à quelqu’un."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de fuir un lieu."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de trouver une personne."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de trouver un lieu."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de trouver chose."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de protéger une personne."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de protéger un lieu."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de protéger chose."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de dérober une certaine chose."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de tuer une personne."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de détruire une chose."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "d’escorter une personne."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "de transporter une chose."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"carriere": [
|
|
||||||
"Noble",
|
|
||||||
"Acrobate",
|
|
||||||
"Sorcier",
|
|
||||||
"Alchimiste",
|
|
||||||
"Esclave",
|
|
||||||
"Courtisane",
|
|
||||||
"Médecin",
|
|
||||||
"Marin",
|
|
||||||
"Érudit",
|
|
||||||
"Mendiant",
|
|
||||||
"Scribe",
|
|
||||||
"Poète",
|
|
||||||
"Forgeron",
|
|
||||||
"Prêtre",
|
|
||||||
"Danseur",
|
|
||||||
"Marchand",
|
|
||||||
"Pilote des airs",
|
|
||||||
"Fermier"
|
|
||||||
],
|
|
||||||
"lieux1": [
|
|
||||||
"Palais",
|
|
||||||
"Donjon",
|
|
||||||
"Ruines",
|
|
||||||
"Sanctuaire",
|
|
||||||
"Crypte",
|
|
||||||
"Forteresse",
|
|
||||||
"Tombeau",
|
|
||||||
"Grottes",
|
|
||||||
"Tour",
|
|
||||||
"Antre",
|
|
||||||
"Île",
|
|
||||||
"Montagne"
|
|
||||||
],
|
|
||||||
"lieux2": [
|
|
||||||
"de la mort.",
|
|
||||||
"de la destruction.",
|
|
||||||
"du désespoir.",
|
|
||||||
"des morts-vivants.",
|
|
||||||
"du sage.",
|
|
||||||
"de l'or.",
|
|
||||||
"de la tempête.",
|
|
||||||
"de la terreur.",
|
|
||||||
"descannibales.",
|
|
||||||
"du désespoir.",
|
|
||||||
"des Rois-Sorciers.",
|
|
||||||
"des âmes perdues."
|
|
||||||
],
|
|
||||||
"objets1": [
|
|
||||||
"Livre",
|
|
||||||
"Anneau",
|
|
||||||
"Coupe",
|
|
||||||
"Joyau",
|
|
||||||
"Casque",
|
|
||||||
"Parchemin",
|
|
||||||
"Couronne",
|
|
||||||
"Sceau",
|
|
||||||
"Cristal",
|
|
||||||
"Crâne",
|
|
||||||
"Épée",
|
|
||||||
"Bâton"
|
|
||||||
],
|
|
||||||
"objets2": [
|
|
||||||
"des sept sceaux.",
|
|
||||||
"de l'éternelle douleur.",
|
|
||||||
"du sang bouillonnant.",
|
|
||||||
"de la mort hideuse.",
|
|
||||||
"du pouvoir suprême.",
|
|
||||||
"du serpent sournois.",
|
|
||||||
"du plaisir infini.",
|
|
||||||
"de la richesse illusoire.",
|
|
||||||
"de la cruelle trahison.",
|
|
||||||
"du froid funeste.",
|
|
||||||
"des spectres inapaisés.",
|
|
||||||
"du mystère."
|
|
||||||
],
|
|
||||||
"motivation": [
|
|
||||||
"c’est le genre de choses que fait Krongar.",
|
|
||||||
"sinon il finira en prison.",
|
|
||||||
"il est victime d’un chantage.",
|
|
||||||
"il a trouvé une carte.",
|
|
||||||
"il a été maudit.",
|
|
||||||
"il a eu une vision (peut-être un soir de beuverie).",
|
|
||||||
"il a été engagé pour le faire.",
|
|
||||||
"il a surpris une conversation.",
|
|
||||||
"il a lu quelque chose dans un ancien manuscrit.",
|
|
||||||
"il est tombé accidentellement dans cette affaire.",
|
|
||||||
"il cherche à assouvir une vengeance.",
|
|
||||||
"il a ,été dupé."
|
|
||||||
],
|
|
||||||
"rival": [
|
|
||||||
"un poète obsédé.",
|
|
||||||
"un prince (esse) guerrier.",
|
|
||||||
"un ministre corrompu.",
|
|
||||||
"un sectateur fanatique.",
|
|
||||||
"un noble arrogant.",
|
|
||||||
"un étrange alchimiste.",
|
|
||||||
"un sorcier maléfique.",
|
|
||||||
"un druide cruel.",
|
|
||||||
"un marchand cupide.",
|
|
||||||
"un brigand sans foi ni loi.",
|
|
||||||
"un démon sanguinaire.",
|
|
||||||
"un fantôme errant."
|
|
||||||
],
|
|
||||||
"dieu": [
|
|
||||||
"Tharungozoth",
|
|
||||||
"Yrzlak",
|
|
||||||
"Dyr",
|
|
||||||
"Knothakon",
|
|
||||||
"Hadron",
|
|
||||||
"Shazzadion",
|
|
||||||
"Chiomalla",
|
|
||||||
"Sa’Tel",
|
|
||||||
"Morgazzon",
|
|
||||||
"Hurm",
|
|
||||||
"Afyra",
|
|
||||||
"Grondil",
|
|
||||||
"Zaggath",
|
|
||||||
"Zalkyr",
|
|
||||||
"Fillana",
|
|
||||||
"Lilandra",
|
|
||||||
"Zylidith",
|
|
||||||
"Quathoomar",
|
|
||||||
"Iondal",
|
|
||||||
"Piandra",
|
|
||||||
"Nemmereth",
|
|
||||||
"Charkond",
|
|
||||||
"Karyzon",
|
|
||||||
"Zarymphyxos",
|
|
||||||
"Kryphondus"
|
|
||||||
],
|
|
||||||
"complique1": [
|
|
||||||
"c’est toujours comme ça avec Krongar !",
|
|
||||||
"la situation réveille chez Krongar des peurs ancestrales.",
|
|
||||||
"un usurier et ses hommes de main veulent récupérer leur argent.",
|
|
||||||
"une grave épidémie ravage la région.",
|
|
||||||
"Krongar est traqué pour un crime passé.",
|
|
||||||
"les actions d’un groupe de rebelles rendent la région peu sûre.",
|
|
||||||
"des hordes de guerriers envahissent la région pour la conquérir",
|
|
||||||
"un(e) ancien(ne) admirateur (trice) éconduit(e) cherche à se venger.",
|
|
||||||
"la loi locale est très sévère et interdit une chose nécessaire à l’accomplissement de la mission.",
|
|
||||||
"un(e) admirateur (trice) inattendu(e) déclare son amour.",
|
|
||||||
"un rival qui fut défait autrefois réapparaît et met son grain de sel.",
|
|
||||||
"la folie de Morgazzon fait des ravages dans la région."
|
|
||||||
],
|
|
||||||
"obstacle": [
|
|
||||||
"d’un ancien secret.",
|
|
||||||
"d’un long voyage.",
|
|
||||||
"d’une malédiction.",
|
|
||||||
"d’un voleur rusé.",
|
|
||||||
"d’une forte troupe de soldats.",
|
|
||||||
"d’un énorme monstre.",
|
|
||||||
"d’une horde de monstres.",
|
|
||||||
"d’un manque de temps.",
|
|
||||||
"de gardes et de pièges magiques.",
|
|
||||||
"d’une catastrophe naturelle sur le point de se produire.",
|
|
||||||
"d’une énigme à résoudre.",
|
|
||||||
"d’une bataille à gagner."
|
|
||||||
],
|
|
||||||
"retournement": [
|
|
||||||
"L’ennemi est en fait Krongar lui-même, venu d’une autre réalité !",
|
|
||||||
"Toute cette histoire était un piège machiavélique !",
|
|
||||||
"L’ennemi est en fait un vieil ami ou un allié qui a comploté dans l’ombre !",
|
|
||||||
"Krongar est contraint de s’associer à un rival pour accomplir la mission !",
|
|
||||||
"Tout ce qui semblait ordinaire se révèle en fait surnaturel !",
|
|
||||||
"L’ennemi est en fait le père, la mère, le frère ou la sœur de Krongar !",
|
|
||||||
"Une toute autre mission attend en fait notre héros !",
|
|
||||||
"Parfois, il n’y a pas de retournement de situation !",
|
|
||||||
"i la mission est accomplie, cela entraînera de terribles répercussions !",
|
|
||||||
"Le destin offre à Krongar une chance d’améliorer les choses, et il est renvoyé dans le temps au début de l’aventure. La saga recommence, mais cette fois sans retournement de situation !",
|
|
||||||
"Un ami ou un allié a trahi Krongar !",
|
|
||||||
"Les dieux sont furieux et lui imposent d'autres tâches"
|
|
||||||
],
|
|
||||||
"recompense": [
|
|
||||||
"Rien du tout ! On s’est joué de lui !",
|
|
||||||
"Beaucoup moins qu’escompté.",
|
|
||||||
"Beaucoup moins qu’escompté, mais il gagne au moins la reconnaissance d’une personne haut placée.",
|
|
||||||
"Beaucoup moins qu’escompté, mais il est marqué par les dieux (avantage).",
|
|
||||||
"La récompense escomptée.",
|
|
||||||
"La récompense escomptée, et il est marqué par les dieux (avantage).",
|
|
||||||
"La récompense escomptée, ainsi que la reconnaissance d’une personne haut placée.",
|
|
||||||
"Plus qu’escompté.",
|
|
||||||
"Plus qu’escompté, ainsi que la reconnaissance d’une personne haut placée.",
|
|
||||||
"Plus qu’escompté, et il est marqué par les dieux (avantage).",
|
|
||||||
"Plus qu’escompté, ainsi que la reconnaissance d’une personne haut placée, et il est marqué par les dieux (avantage).",
|
|
||||||
"Une promotion... Longue vie au roi Krongar !"
|
|
||||||
]
|
|
||||||
}
|
|
@ -33,9 +33,9 @@ export class BoLTokenHud {
|
|||||||
let action = hudData.actionsList[actionIndex]
|
let action = hudData.actionsList[actionIndex]
|
||||||
const actionItem = actor.items.get(action._id)
|
const actionItem = actor.items.get(action._id)
|
||||||
if (actionItem.system.subtype == "weapon") {
|
if (actionItem.system.subtype == "weapon") {
|
||||||
BoLRoll.weaponCheckWithWeapon(hudData.actor, duplicate(actionItem))
|
BoLRoll.weaponCheckWithWeapon(hudData.actor, foundry.utils.duplicate(actionItem))
|
||||||
} else if (actionItem.system.subtype == "fightoption") {
|
} else if (actionItem.system.subtype == "fightoption") {
|
||||||
let chatData = duplicate(actionItem)
|
let chatData = foundry.utils.duplicate(actionItem)
|
||||||
if (actionItem.actor) {
|
if (actionItem.actor) {
|
||||||
chatData.actor = { id: actionItem.actor._id };
|
chatData.actor = { id: actionItem.actor._id };
|
||||||
}
|
}
|
||||||
|
@ -1,86 +0,0 @@
|
|||||||
/* -------------------------------------------- */
|
|
||||||
import { BoLUtility } from "./bol-utility.js";
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
export class BoLAdventureGenerator {
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static async init() {
|
|
||||||
this.adventureData = await fetchJsonWithTimeout("systems/bol/module/system/adventure_data.json")
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static async createAdventure() {
|
|
||||||
let roll1 = new Roll("1d" + this.adventureData.titre1.length).evaluate({ async: false })
|
|
||||||
let roll2 = new Roll("1d" + this.adventureData.titre2.length).evaluate({ async: false })
|
|
||||||
|
|
||||||
let p1 = this.adventureData.titre1[roll1.result - 1]
|
|
||||||
let p2 = this.adventureData.titre2[roll2.result - 1]
|
|
||||||
|
|
||||||
let story = {}
|
|
||||||
story.title = "Krongar et " + p1.prefix + " " + p1.name + " " + p2.prefix + " " + p2.name
|
|
||||||
|
|
||||||
let rollM = new Roll("1d" + this.adventureData.mission.length).evaluate({ async: false })
|
|
||||||
story.mission = "La mission de Krongar est de " + this.adventureData.mission[rollM.result - 1].name
|
|
||||||
|
|
||||||
if (!p1.isCarriere && !p2.isCarriere) {
|
|
||||||
let rollC = new Roll("1d" + this.adventureData.carriere.length).evaluate({ async: false })
|
|
||||||
story.carriere = "Une carrière : " + this.adventureData.carriere[rollC.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!p1.isLieu && !p2.isLieu) {
|
|
||||||
let rollL1 = new Roll("1d" + this.adventureData.lieux1.length).evaluate({ async: false })
|
|
||||||
let rollL2 = new Roll("1d" + this.adventureData.lieux2.length).evaluate({ async: false })
|
|
||||||
story.lieu = "Un lieu : " + this.adventureData.lieux1[rollL1.result - 1] + " " + this.adventureData.lieux2[rollL2.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!p1.isObjet && !p2.isObjet) {
|
|
||||||
let rollO1 = new Roll("1d" + this.adventureData.objets1.length).evaluate({ async: false })
|
|
||||||
let rollO2 = new Roll("1d" + this.adventureData.objets2.length).evaluate({ async: false })
|
|
||||||
story.objet = "Un objet : " + this.adventureData.objets1[rollO1.result - 1] + " " + this.adventureData.objets2[rollO2.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
let rollMOT = new Roll("1d" + this.adventureData.motivation.length).evaluate({ async: false })
|
|
||||||
story.motivation = "Krongar entreprend cette mission parce que " + this.adventureData.motivation[rollMOT.result - 1]
|
|
||||||
|
|
||||||
if (!p1.isEnnemi && !p2.isEnnemi) {
|
|
||||||
let rollE = new Roll("1d" + this.adventureData.rival.length).evaluate({ async: false })
|
|
||||||
story.rival = "Un rival : " + this.adventureData.rival[rollE.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
let rollDieu = new Roll("1d6").evaluate({ async: false })
|
|
||||||
if (rollDieu.result == 6) {
|
|
||||||
rollDieu = new Roll("1d" + this.adventureData.dieu.length).evaluate({ async: false })
|
|
||||||
story.dieu = "Un Dieu est impliqué : " + this.adventureData.dieu[rollDieu.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
let rollComp = new Roll("1d6").evaluate({ async: false })
|
|
||||||
if (rollComp.result >= 5) {
|
|
||||||
rollComp = new Roll("1d" + this.adventureData.complique1.length).evaluate({ async: false })
|
|
||||||
story.complication = "Une complication : " + this.adventureData.complique1[rollComp.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
let rollObs = new Roll("1d6").evaluate({ async: false })
|
|
||||||
if (rollObs.result >= 5) {
|
|
||||||
rollObs = new Roll("1d" + this.adventureData.obstacle.length).evaluate({ async: false })
|
|
||||||
story.obstacle = "Un obstacle : " + this.adventureData.obstacle[rollObs.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
let rollRet = new Roll("1d6").evaluate({ async: false })
|
|
||||||
if (rollRet.result == 6) {
|
|
||||||
rollRet = new Roll("1d" + this.adventureData.retournement.length).evaluate({ async: false })
|
|
||||||
story.retournement = "Un retournement : " + this.adventureData.retournement[rollRet.result - 1]
|
|
||||||
}
|
|
||||||
|
|
||||||
let rollRec = new Roll("1d" + this.adventureData.recompense.length).evaluate({ async: false })
|
|
||||||
story.recompense = "Pour sa peine, Krongar reçoit " + this.adventureData.recompense[rollRec.result - 1]
|
|
||||||
|
|
||||||
ChatMessage.create({
|
|
||||||
alias: this.name,
|
|
||||||
whisper: BoLUtility.getUsers(user => user.isGM),
|
|
||||||
content: await renderTemplate('systems/bol/templates/chat/chat-adventure-result.hbs',
|
|
||||||
{ name: "Aventure !", img: "icons/commodities/gems/gem-cluster-red.webp", story : story})
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -40,14 +40,14 @@ export class BoLCalendar extends Application {
|
|||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
// position
|
// position
|
||||||
this.calendarPos = duplicate(game.settings.get("bol", "calendar-pos"));
|
this.calendarPos = foundry.utils.duplicate(game.settings.get("bol", "calendar-pos"));
|
||||||
if (this.calendarPos == undefined || this.calendarPos.top == undefined) {
|
if (this.calendarPos == undefined || this.calendarPos.top == undefined) {
|
||||||
this.calendrierPos = BoLCalendar.createCalendarPos()
|
this.calendrierPos = BoLCalendar.createCalendarPos()
|
||||||
game.settings.set("bol", "calendar-pos", this.calendarPos)
|
game.settings.set("bol", "calendar-pos", this.calendarPos)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calendar
|
// Calendar
|
||||||
this.calendar = duplicate(game.settings.get("bol", "calendar") ?? BoLCalendar.getCalendar(0));
|
this.calendar = foundry.utils.duplicate(game.settings.get("bol", "calendar") ?? BoLCalendar.getCalendar(0));
|
||||||
this.calendar.year = this.calendar.year || 900
|
this.calendar.year = this.calendar.year || 900
|
||||||
this.calendar.month = 0
|
this.calendar.month = 0
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ export class BoLCalendar extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
template: "systems/bol/templates/calendar-template.html",
|
template: "systems/bol/templates/calendar-template.html",
|
||||||
popOut: false,
|
popOut: false,
|
||||||
resizable: false
|
resizable: false
|
||||||
@ -95,11 +95,11 @@ export class BoLCalendar extends Application {
|
|||||||
this.calendar.hour -= 24
|
this.calendar.hour -= 24
|
||||||
await this.incrementDay()
|
await this.incrementDay()
|
||||||
}
|
}
|
||||||
game.settings.set("bol", "calendar", duplicate(this.calendar));
|
game.settings.set("bol", "calendar", foundry.utils.duplicate(this.calendar));
|
||||||
// Notification aux joueurs // TODO: replace with Hook on game settings update
|
// Notification aux joueurs // TODO: replace with Hook on game settings update
|
||||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||||
msg: "msg_sync_time",
|
msg: "msg_sync_time",
|
||||||
data: duplicate(this.calendrier)
|
data: foundry.utils.duplicate(this.calendrier)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ export class BoLCalendar extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
syncPlayerTime(calendrier) {
|
syncPlayerTime(calendrier) {
|
||||||
this.calendrier = duplicate(calendrier); // Local copy update
|
this.calendrier = foundry.utils.duplicate(calendrier); // Local copy update
|
||||||
this.updateDisplay();
|
this.updateDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ export class BoLCalendar extends Application {
|
|||||||
}
|
}
|
||||||
this.calendrier.heureRdD = indexHeure;
|
this.calendrier.heureRdD = indexHeure;
|
||||||
this.calendrier.minutesRelative = 0;
|
this.calendrier.minutesRelative = 0;
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier", duplicate(this.calendrier));
|
game.settings.set(SYSTEM_RDD, "calendrier", foundry.utils.duplicate(this.calendrier));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -312,13 +312,13 @@ export class BoLCalendar extends Application {
|
|||||||
this.calendrier.jour = Number(calendrierData.jourMois) - 1;
|
this.calendrier.jour = Number(calendrierData.jourMois) - 1;
|
||||||
this.calendrier.moisRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.moisKey);
|
this.calendrier.moisRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.moisKey);
|
||||||
this.calendrier.heureRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.heureKey);
|
this.calendrier.heureRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.heureKey);
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier", duplicate(this.calendrier));
|
game.settings.set(SYSTEM_RDD, "calendrier", foundry.utils.duplicate(this.calendrier));
|
||||||
|
|
||||||
await this.rebuildListeNombreAstral();
|
await this.rebuildListeNombreAstral();
|
||||||
|
|
||||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||||
msg: "msg_sync_time",
|
msg: "msg_sync_time",
|
||||||
data: duplicate(this.calendrier)
|
data: foundry.utils.duplicate(this.calendrier)
|
||||||
});
|
});
|
||||||
|
|
||||||
this.updateDisplay();
|
this.updateDisplay();
|
||||||
@ -326,7 +326,7 @@ export class BoLCalendar extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async showCalendarEditor() {
|
async showCalendarEditor() {
|
||||||
let calendrierData = duplicate(this.fillCalendrierData());
|
let calendrierData = foundry.utils.duplicate(this.fillCalendrierData());
|
||||||
if (this.editeur == undefined) {
|
if (this.editeur == undefined) {
|
||||||
calendrierData.jourMoisOptions = RdDCalendrier.buildJoursMois();
|
calendrierData.jourMoisOptions = RdDCalendrier.buildJoursMois();
|
||||||
calendrierData.heuresOptions = [0, 1];
|
calendrierData.heuresOptions = [0, 1];
|
||||||
@ -344,7 +344,7 @@ export class BoLCalendar extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async showAstrologieEditor() {
|
async showAstrologieEditor() {
|
||||||
let calendrierData = duplicate(this.fillCalendrierData());
|
let calendrierData = foundry.utils.duplicate(this.fillCalendrierData());
|
||||||
let astrologieArray = [];
|
let astrologieArray = [];
|
||||||
this.listeNombreAstral = this.listeNombreAstral || [];
|
this.listeNombreAstral = this.listeNombreAstral || [];
|
||||||
for (let astralData of this.listeNombreAstral) {
|
for (let astralData of this.listeNombreAstral) {
|
||||||
@ -353,7 +353,7 @@ export class BoLCalendar extends Application {
|
|||||||
let actor = game.actors.get(vf.actorId);
|
let actor = game.actors.get(vf.actorId);
|
||||||
vf.actorName = (actor) ? actor.name : "Inconnu";
|
vf.actorName = (actor) ? actor.name : "Inconnu";
|
||||||
}
|
}
|
||||||
astrologieArray.push(duplicate(astralData));
|
astrologieArray.push(foundry.utils.duplicate(astralData));
|
||||||
}
|
}
|
||||||
let heuresParActeur = {};
|
let heuresParActeur = {};
|
||||||
for (let actor of game.actors) {
|
for (let actor of game.actors) {
|
||||||
@ -448,7 +448,7 @@ export class BoLCalendar extends Application {
|
|||||||
game.system.rdd.calendrier.calendrierPos.top = yPos;
|
game.system.rdd.calendrier.calendrierPos.top = yPos;
|
||||||
game.system.rdd.calendrier.calendrierPos.left = xPos;
|
game.system.rdd.calendrier.calendrierPos.left = xPos;
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos));
|
game.settings.set(SYSTEM_RDD, "calendrier-pos", foundry.utils.duplicate(game.system.rdd.calendrier.calendrierPos));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -456,7 +456,7 @@ export class BoLCalendar extends Application {
|
|||||||
game.system.rdd.calendrier.calendrierPos.top = 200;
|
game.system.rdd.calendrier.calendrierPos.top = 200;
|
||||||
game.system.rdd.calendrier.calendrierPos.left = 200;
|
game.system.rdd.calendrier.calendrierPos.left = 200;
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos));
|
game.settings.set(SYSTEM_RDD, "calendrier-pos", foundry.utils.duplicate(game.system.rdd.calendrier.calendrierPos));
|
||||||
}
|
}
|
||||||
this.setPos(game.system.rdd.calendrier.calendrierPos);
|
this.setPos(game.system.rdd.calendrier.calendrierPos);
|
||||||
}
|
}
|
||||||
|
@ -1,162 +0,0 @@
|
|||||||
/* -------------------------------------------- */
|
|
||||||
import { BoLUtility } from "./bol-utility.js";
|
|
||||||
import { BoLRoll } from "../controllers/bol-rolls.js";
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
export class BoLCharacterSummary extends Application {
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static displayPCSummary(){
|
|
||||||
game.bol.charSummary.render(true)
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
updatePCSummary(){
|
|
||||||
if ( this.rendered) {
|
|
||||||
this.render(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static createSummaryPos() {
|
|
||||||
return { top: 200, left: 200 };
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static ready() {
|
|
||||||
if ( !game.user.isGM ) { // Uniquement si GM
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let charSummary = new BoLCharacterSummary()
|
|
||||||
game.bol.charSummary = charSummary
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
//game.settings.set("world", "character-summary-data", {npcList: [], x:0, y:0})
|
|
||||||
this.settings = game.settings.get("world", "character-summary-data")
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static get defaultOptions() {
|
|
||||||
return mergeObject(super.defaultOptions, {
|
|
||||||
template: "systems/bol/templates/apps/character-summary-template.html",
|
|
||||||
popOut: true,
|
|
||||||
resizable: true,
|
|
||||||
dragDrop: [{ dragSelector: ".items-list .item", dropSelector: null }],
|
|
||||||
classes: ["bol", "dialog"], width: 820, height: 'fit-content'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getData() {
|
|
||||||
let formData = super.getData();
|
|
||||||
|
|
||||||
formData.pcs = game.actors.filter( ac => ac.type == "character" && ac.hasPlayerOwner )
|
|
||||||
formData.npcs = []
|
|
||||||
let newList = []
|
|
||||||
let toUpdate = false
|
|
||||||
for( let actorId of this.settings.npcList ) {
|
|
||||||
let actor = game.actors.get(actorId)
|
|
||||||
if (actor) {
|
|
||||||
formData.npcs.push( actor )
|
|
||||||
newList.push(actorId)
|
|
||||||
} else {
|
|
||||||
toUpdate = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
formData.config = game.bol.config
|
|
||||||
formData.horoscopeGroupList = game.settings.get("bol", "horoscope-group")
|
|
||||||
|
|
||||||
if ( toUpdate ) {
|
|
||||||
this.settings.npcList = newList
|
|
||||||
//console.log("Going to update ...", this.settings)
|
|
||||||
game.settings.set("world", "character-summary-data", this.settings)
|
|
||||||
}
|
|
||||||
|
|
||||||
return formData
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
updateNPC() {
|
|
||||||
game.settings.set("world", "character-summary-data", game.bol.charSummary.settings)
|
|
||||||
game.bol.charSummary.close()
|
|
||||||
setTimeout( function() { game.bol.charSummary.render(true)}, 500)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async _onDrop(event) {
|
|
||||||
//console.log("Dragged data are : ", dragData)
|
|
||||||
let data = event.dataTransfer.getData('text/plain')
|
|
||||||
let dataItem = JSON.parse( data)
|
|
||||||
let actor = fromUuidSync(dataItem.uuid)
|
|
||||||
if (actor) {
|
|
||||||
game.bol.charSummary.settings.npcList.push( actor.id )
|
|
||||||
game.bol.charSummary.updateNPC()
|
|
||||||
|
|
||||||
} else {
|
|
||||||
ui.notifications.warn( game.i18n.localize("BOL.ui.noactorfound") )
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
/** @override */
|
|
||||||
async activateListeners(html) {
|
|
||||||
super.activateListeners(html);
|
|
||||||
|
|
||||||
html.find('.actor-open').click((event) => {
|
|
||||||
const li = $(event.currentTarget).parents(".item")
|
|
||||||
const actor = game.actors.get(li.data("actor-id"))
|
|
||||||
actor.sheet.render(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
html.find('.summary-roll').click((event) => {
|
|
||||||
const li = $(event.currentTarget).parents(".item")
|
|
||||||
const actor = game.actors.get(li.data("actor-id"))
|
|
||||||
let type = $(event.currentTarget).data("type")
|
|
||||||
let key = $(event.currentTarget).data("key")
|
|
||||||
if ( type == "attribute") {
|
|
||||||
BoLRoll.attributeCheck(actor, key, event)
|
|
||||||
} else if (type == "aptitude") {
|
|
||||||
BoLRoll.aptitudeCheck(actor, key, event)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
html.find('.actor-delete').click(event => {
|
|
||||||
const li = $(event.currentTarget).parents(".item");
|
|
||||||
let actorId = li.data("actor-id")
|
|
||||||
let newList = game.bol.charSummary.settings.npcList.filter(id => id != actorId)
|
|
||||||
game.bol.charSummary.settings.npcList = newList
|
|
||||||
game.bol.charSummary.updateNPC()
|
|
||||||
})
|
|
||||||
|
|
||||||
html.find('#horoscope-group-edit-available').change(event => {
|
|
||||||
const horoId = $(event.currentTarget).data("horo-id")
|
|
||||||
let newValue = event.currentTarget.value
|
|
||||||
let horoscopes = duplicate(game.settings.get("bol", "horoscope-group"))
|
|
||||||
if ( horoId && horoscopes[horoId]) {
|
|
||||||
horoscopes[horoId].availableDice = Number(newValue)
|
|
||||||
if (newValue <= 0) {
|
|
||||||
horoscopes[horoId] = undefined
|
|
||||||
}
|
|
||||||
game.settings.set("bol", "horoscope-group", horoscopes)
|
|
||||||
setTimeout(function() { BoLUtility.updateSheets()}, 800 )
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
html.find('#horoscope-group-edit-max').change(event => {
|
|
||||||
const horoId = $(event.currentTarget).data("horo-id")
|
|
||||||
let newValue = event.currentTarget.value
|
|
||||||
let horoscopes = duplicate(game.settings.get("bol", "horoscope-group"))
|
|
||||||
if ( horoId && horoscopes[horoId]) {
|
|
||||||
horoscopes[horoId].maxDice = Number(newValue)
|
|
||||||
if (newValue <= 0) {
|
|
||||||
horoscopes[horoId] = undefined
|
|
||||||
}
|
|
||||||
game.settings.set("bol", "horoscope-group", horoscopes)
|
|
||||||
setTimeout(function() { BoLUtility.updateSheets()}, 800 )
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,6 +1,3 @@
|
|||||||
/* -------------------------------------------- */
|
|
||||||
import { BoLAdventureGenerator } from "./bol-adventure-generator.js"
|
|
||||||
import { BoLCharacterSummary } from "./bol-character-summary.js"
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class BoLCommands {
|
export class BoLCommands {
|
||||||
@ -8,8 +5,6 @@ export class BoLCommands {
|
|||||||
static init() {
|
static init() {
|
||||||
if (!game.bol.commands) {
|
if (!game.bol.commands) {
|
||||||
const bolCommands = new BoLCommands()
|
const bolCommands = new BoLCommands()
|
||||||
bolCommands.registerCommand({ path: ["/adventure"], func: (content, msg, params) => BoLAdventureGenerator.createAdventure(), descr: "Nouvelle idée d'aventure!" });
|
|
||||||
bolCommands.registerCommand({ path: ["/pcview"], func: (content, msg, params) => BoLCharacterSummary.displayPCSummary(), descr: "Affiche la liste des PJs!" });
|
|
||||||
game.bol.commands = bolCommands
|
game.bol.commands = bolCommands
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +83,7 @@ export class BoLCommands {
|
|||||||
console.log("===> Processing command")
|
console.log("===> Processing command")
|
||||||
let command = commandsTable[name];
|
let command = commandsTable[name];
|
||||||
path = path + name + " ";
|
path = path + name + " ";
|
||||||
if (command && command.subTable) {
|
if (command?.subTable) {
|
||||||
if (params[0]) {
|
if (params[0]) {
|
||||||
return this._processCommand(command.subTable, params[0], params.slice(1), content, msg, path)
|
return this._processCommand(command.subTable, params[0], params.slice(1), content, msg, path)
|
||||||
}
|
}
|
||||||
@ -97,9 +92,9 @@ export class BoLCommands {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (command && command.func) {
|
if (command?.func) {
|
||||||
const result = command.func(content, msg, params);
|
const result = command.func(content, msg, params);
|
||||||
if (result == false) {
|
if (!result) {
|
||||||
BoLCommands._chatAnswer(msg, command.descr);
|
BoLCommands._chatAnswer(msg, command.descr);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -136,6 +136,10 @@ export class BoLUtility {
|
|||||||
this.successValue = Number(game.settings.get("bol", "dice-success-value"))
|
this.successValue = Number(game.settings.get("bol", "dice-success-value"))
|
||||||
this.criticalSuccessValue = Number(game.settings.get("bol", "dice-critical-success-value"))
|
this.criticalSuccessValue = Number(game.settings.get("bol", "dice-critical-success-value"))
|
||||||
this.criticalFailureValue = Number(game.settings.get("bol", "dice-critical-failure-value"))
|
this.criticalFailureValue = Number(game.settings.get("bol", "dice-critical-failure-value"))
|
||||||
|
|
||||||
|
// Update the effect modifiers
|
||||||
|
game.bol.config.effectIdentifiers = foundry.utils.mergeObject(game.bol.config.effectIdentifiers, game.bol.config.attackAttributes)
|
||||||
|
game.bol.config.effectIdentifiers = foundry.utils.mergeObject(game.bol.config.effectIdentifiers, game.bol.config.aptitudes)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -196,7 +200,7 @@ export class BoLUtility {
|
|||||||
//$("#logo").attr("src", this.getLogoTopLeft() )
|
//$("#logo").attr("src", this.getLogoTopLeft() )
|
||||||
$("#logo").css("content", `url(${this.getLogoTopLeft()})`)
|
$("#logo").css("content", `url(${this.getLogoTopLeft()})`)
|
||||||
|
|
||||||
CONFIG.statusEffects = duplicate(game.bol.config.statusEffects)
|
CONFIG.statusEffects = foundry.utils.duplicate(game.bol.config.statusEffects)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -311,7 +315,7 @@ export class BoLUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static blindMessageToGM(chatOptions) {
|
static blindMessageToGM(chatOptions) {
|
||||||
let chatGM = duplicate(chatOptions);
|
let chatGM = foundry.utils.duplicate(chatOptions);
|
||||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
chatGM.whisper = this.getUsers(user => user.isGM);
|
||||||
chatGM.content = "Blind message of " + game.user.name + "<br>" + chatOptions.content;
|
chatGM.content = "Blind message of " + game.user.name + "<br>" + chatOptions.content;
|
||||||
console.log("blindMessageToGM", chatGM);
|
console.log("blindMessageToGM", chatGM);
|
||||||
@ -323,7 +327,7 @@ export class BoLUtility {
|
|||||||
if (rollData.targetId) {
|
if (rollData.targetId) {
|
||||||
// Broadcast to GM or process it directly in case of GM defense
|
// Broadcast to GM or process it directly in case of GM defense
|
||||||
if (!game.user.isGM) {
|
if (!game.user.isGM) {
|
||||||
game.socket.emit("system.bol", { name: "msg_attack_success", data: duplicate(rollData) })
|
game.socket.emit("system.bol", { name: "msg_attack_success", data: foundry.utils.duplicate(rollData) })
|
||||||
} else {
|
} else {
|
||||||
BoLUtility.processAttackSuccess(rollData)
|
BoLUtility.processAttackSuccess(rollData)
|
||||||
}
|
}
|
||||||
@ -337,7 +341,7 @@ export class BoLUtility {
|
|||||||
// If the user is the message author or the actor owner, proceed
|
// If the user is the message author or the actor owner, proceed
|
||||||
const actor = game.actors.get(data.message.speaker.actor)
|
const actor = game.actors.get(data.message.speaker.actor)
|
||||||
//console.log("FOUND 1!!! ", actor)
|
//console.log("FOUND 1!!! ", actor)
|
||||||
if (actor && actor.isOwner) return
|
if (actor?.isOwner) return
|
||||||
else if (game.user.isGM || data.author.id === game.user.id) return
|
else if (game.user.isGM || data.author.id === game.user.id) return
|
||||||
|
|
||||||
const divButtons = chatCard.find('.actions-section')
|
const divButtons = chatCard.find('.actions-section')
|
||||||
@ -354,7 +358,7 @@ export class BoLUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static requestInitRoll(actorId, combatData) {
|
static requestInitRoll(actorId, combatData) {
|
||||||
let actor = game.actors.get(actorId)
|
let actor = game.actors.get(actorId)
|
||||||
if (actor && actor.isOwner) {
|
if (actor?.isOwner) {
|
||||||
ui.notifications.info(game.i18n.localize("BOL.ui.warninitiative"))
|
ui.notifications.info(game.i18n.localize("BOL.ui.warninitiative"))
|
||||||
BoLRoll.aptitudeCheck(actor, "init", undefined, combatData)
|
BoLRoll.aptitudeCheck(actor, "init", undefined, combatData)
|
||||||
}
|
}
|
||||||
@ -447,7 +451,7 @@ export class BoLUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async processDamageHandling(attackId, defenseMode, weaponId = -1, msgId) {
|
static async processDamageHandling(attackId, defenseMode, weaponId, msgId) {
|
||||||
if (!game.user.isGM) {
|
if (!game.user.isGM) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -457,7 +461,7 @@ export class BoLUtility {
|
|||||||
|
|
||||||
console.log("Damage Handling", attackId, defenseMode, weaponId)
|
console.log("Damage Handling", attackId, defenseMode, weaponId)
|
||||||
// Only GM process this
|
// Only GM process this
|
||||||
if (rollData && rollData.defenderId) {
|
if (rollData?.defenderId) {
|
||||||
if (rollData.defenseDone || defenseMode == 'damage-not-applied') {
|
if (rollData.defenseDone || defenseMode == 'damage-not-applied') {
|
||||||
return
|
return
|
||||||
} // ?? Why ???
|
} // ?? Why ???
|
||||||
@ -668,7 +672,6 @@ export class BoLUtility {
|
|||||||
let res = myReg.exec(damageString)
|
let res = myReg.exec(damageString)
|
||||||
let nbDice = parseInt(res[1])
|
let nbDice = parseInt(res[1])
|
||||||
let postForm = 'kh' + nbDice
|
let postForm = 'kh' + nbDice
|
||||||
let modIndex = 3
|
|
||||||
// Upgrade damage if needed
|
// Upgrade damage if needed
|
||||||
if (upgradeDamage && (!res[3] || res[3] == "")) {
|
if (upgradeDamage && (!res[3] || res[3] == "")) {
|
||||||
res[3] = "B" // Upgrade to bonus
|
res[3] = "B" // Upgrade to bonus
|
||||||
@ -680,22 +683,18 @@ export class BoLUtility {
|
|||||||
if (res[3] == 'M') {
|
if (res[3] == 'M') {
|
||||||
postForm = 'kl' + nbDice
|
postForm = 'kl' + nbDice
|
||||||
nbDice++
|
nbDice++
|
||||||
modIndex = 4
|
|
||||||
}
|
}
|
||||||
if (res[3] == 'MM') {
|
if (res[3] == 'MM') {
|
||||||
postForm = 'kl' + nbDice
|
postForm = 'kl' + nbDice
|
||||||
nbDice += 2
|
nbDice += 2
|
||||||
modIndex = 4
|
|
||||||
}
|
}
|
||||||
if (res[3] == 'B') {
|
if (res[3] == 'B') {
|
||||||
postForm = 'kh' + nbDice
|
postForm = 'kh' + nbDice
|
||||||
nbDice++
|
nbDice++
|
||||||
modIndex = 4
|
|
||||||
}
|
}
|
||||||
if (res[3] == 'BB') {
|
if (res[3] == 'BB') {
|
||||||
postForm = 'kh' + nbDice
|
postForm = 'kh' + nbDice
|
||||||
nbDice += 2
|
nbDice += 2
|
||||||
modIndex = 4
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
formula = "(" + nbDice + "d" + res[2] + reroll + postForm + "+" + modifier + ") *" + multiplier
|
formula = "(" + nbDice + "d" + res[2] + reroll + postForm + "+" + modifier + ") *" + multiplier
|
||||||
@ -742,8 +741,8 @@ export class BoLUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static removeGroupHoroscope(rollData) {
|
static removeGroupHoroscope(rollData) {
|
||||||
let horo = rollData.horoscopeGroupList[rollData.selectedGroupHoroscopeIndex]
|
let horo = rollData.horoscopeGroupList[rollData.selectedGroupHoroscopeIndex]
|
||||||
let horoscopes = duplicate(game.settings.get("bol", "horoscope-group"))
|
let horoscopes = foundry.utils.duplicate(game.settings.get("bol", "horoscope-group"))
|
||||||
let toChange = duplicate(horoscopes[horo.id])
|
let toChange = foundry.utils.duplicate(horoscopes[horo.id])
|
||||||
toChange.availableDice -= horo.nbDice // Remove the dice
|
toChange.availableDice -= horo.nbDice // Remove the dice
|
||||||
if (toChange.availableDice <= 0) {
|
if (toChange.availableDice <= 0) {
|
||||||
horoscopes[horo.id] = undefined
|
horoscopes[horo.id] = undefined
|
||||||
|
@ -31,6 +31,15 @@ BOL.damageMultiplier = {
|
|||||||
"8": "x8"
|
"8": "x8"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOL.listTypes = {
|
||||||
|
"attribute": "BOL.ui.attribute",
|
||||||
|
"aptitude": "BOL.ui.aptitude",
|
||||||
|
"career": "BOL.ui.career",
|
||||||
|
"boon": "BOL.ui.boon",
|
||||||
|
"flaw": "BOL.ui.flaw",
|
||||||
|
"other": "BOL.ui.other"
|
||||||
|
}
|
||||||
|
|
||||||
BOL.spellType = {
|
BOL.spellType = {
|
||||||
"0": "BOL.spellItem.charm",
|
"0": "BOL.spellItem.charm",
|
||||||
"1": "BOL.spellItem.circle1",
|
"1": "BOL.spellItem.circle1",
|
||||||
@ -180,6 +189,61 @@ BOL.vehicleSubtypes = {
|
|||||||
// "other" : "BOL.equipmentCategory.other"
|
// "other" : "BOL.equipmentCategory.other"
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
BOL.rangeModifiers = {
|
||||||
|
"1": "BOL.dialog.pointblank",
|
||||||
|
"0": "BOL.dialog.close",
|
||||||
|
"-1": "BOL.dialog.medium",
|
||||||
|
"-2": "BOL.dialog.long",
|
||||||
|
"-4": "BOL.dialog.distant",
|
||||||
|
"-6": "BOL.dialog.extreme",
|
||||||
|
"-8": "BOL.dialog.utmost"
|
||||||
|
}
|
||||||
|
|
||||||
|
BOL.difficultyModifiers = {
|
||||||
|
"4": "BOL.dialog.soeasy",
|
||||||
|
"2": "BOL.dialog.veryeasy",
|
||||||
|
"1": "BOL.dialog.easy",
|
||||||
|
"0": "BOL.dialog.moderate",
|
||||||
|
"-1": "BOL.dialog.hard",
|
||||||
|
"-2": "BOL.dialog.tough",
|
||||||
|
"-4": "BOL.dialog.demanding",
|
||||||
|
"-6": "BOL.dialog.formidable",
|
||||||
|
"-8": "BOL.dialog.heroic",
|
||||||
|
"-10": "BOL.dialog.mythic",
|
||||||
|
"-12": "BOL.dialog.divine"
|
||||||
|
}
|
||||||
|
|
||||||
|
BOL.alchemyModifiers = {
|
||||||
|
"2": "BOL.dialog.veryeasy",
|
||||||
|
"1": "BOL.dialog.easy",
|
||||||
|
"0": "BOL.dialog.moderate",
|
||||||
|
"-1": "BOL.dialog.hard",
|
||||||
|
"-2": "BOL.dialog.tough",
|
||||||
|
"-4": "BOL.dialog.demanding",
|
||||||
|
"-6": "BOL.dialog.formidable",
|
||||||
|
"-8": "BOL.dialog.heroic",
|
||||||
|
}
|
||||||
|
BOL.spellModifiers = BOL.alchemyModifiers
|
||||||
|
|
||||||
|
BOL.spellMandatoryConditions = {
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4"
|
||||||
|
}
|
||||||
|
BOL.spellOptionnalConditions = {
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7",
|
||||||
|
"8": "8"
|
||||||
|
}
|
||||||
|
BOL.effectIdentifiers = {
|
||||||
|
"always": "BOL.ui.always",
|
||||||
|
}
|
||||||
BOL.protectionCategories = {
|
BOL.protectionCategories = {
|
||||||
"armor" : "BOL.protectionCategory.armor",
|
"armor" : "BOL.protectionCategory.armor",
|
||||||
"shield" : "BOL.protectionCategory.shield",
|
"shield" : "BOL.protectionCategory.shield",
|
||||||
@ -271,6 +335,7 @@ BOL.featureSubtypes = {
|
|||||||
"fightoption" : "BOL.featureSubtypes.fightOption",
|
"fightoption" : "BOL.featureSubtypes.fightOption",
|
||||||
"boleffect": "BOL.featureSubtypes.effect",
|
"boleffect": "BOL.featureSubtypes.effect",
|
||||||
"horoscope": "BOL.featureSubtypes.horoscope",
|
"horoscope": "BOL.featureSubtypes.horoscope",
|
||||||
|
"xplog": "BOL.featureSubtypes.xplog",
|
||||||
}
|
}
|
||||||
|
|
||||||
BOL.fightOptionTypes = {
|
BOL.fightOptionTypes = {
|
||||||
@ -286,7 +351,7 @@ BOL.fightOptionTypes = {
|
|||||||
|
|
||||||
BOL.itemIcons = {
|
BOL.itemIcons = {
|
||||||
"item": "icons/containers/chest/chest-worn-oak-tan.webp",
|
"item": "icons/containers/chest/chest-worn-oak-tan.webp",
|
||||||
"capacity": "icons/sundries/scrolls/scroll-plain-tan-red.webp",
|
"feature": "icons/sundries/scrolls/scroll-plain-tan-red.webp",
|
||||||
"species": "icons/environment/people/group.webp",
|
"species": "icons/environment/people/group.webp",
|
||||||
"profile": "icons/sundries/documents/blueprint-axe.webp",
|
"profile": "icons/sundries/documents/blueprint-axe.webp",
|
||||||
"path": "icons/sundries/books/book-embossed-gold-red.webp"
|
"path": "icons/sundries/books/book-embossed-gold-red.webp"
|
||||||
|
@ -10,7 +10,7 @@ export const registerHandlebarsHelpers = function () {
|
|||||||
|
|
||||||
Handlebars.registerHelper('isEmpty', function (list) {
|
Handlebars.registerHelper('isEmpty', function (list) {
|
||||||
if (list) return list.length == 0;
|
if (list) return list.length == 0;
|
||||||
else return 0;
|
else return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
Handlebars.registerHelper('notEmpty', function (list) {
|
Handlebars.registerHelper('notEmpty', function (list) {
|
||||||
@ -64,8 +64,8 @@ export const registerHandlebarsHelpers = function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Handlebars.registerHelper('for', function (from, to, incr, block) {
|
Handlebars.registerHelper('for', function (from, to, incr, block) {
|
||||||
var accum = '';
|
let accum = '';
|
||||||
for (var i = from; i < to; i += incr)
|
for (let i = from; i < to; i += incr)
|
||||||
accum += block.fn(i);
|
accum += block.fn(i);
|
||||||
return accum;
|
return accum;
|
||||||
})
|
})
|
||||||
@ -89,8 +89,8 @@ export const registerHandlebarsHelpers = function () {
|
|||||||
|
|
||||||
// If you need to add Handlebars helpers, here are a few useful examples:
|
// If you need to add Handlebars helpers, here are a few useful examples:
|
||||||
Handlebars.registerHelper('concat', function () {
|
Handlebars.registerHelper('concat', function () {
|
||||||
var outStr = '';
|
let outStr = '';
|
||||||
for (var arg in arguments) {
|
for (let arg in arguments) {
|
||||||
if (typeof arguments[arg] != 'object') {
|
if (typeof arguments[arg] != 'object') {
|
||||||
outStr += arguments[arg];
|
outStr += arguments[arg];
|
||||||
}
|
}
|
||||||
@ -117,7 +117,6 @@ export const registerHandlebarsHelpers = function () {
|
|||||||
return arr[idx];
|
return arr[idx];
|
||||||
})
|
})
|
||||||
Handlebars.registerHelper('includesKey', function (items, type, key) {
|
Handlebars.registerHelper('includesKey', function (items, type, key) {
|
||||||
// console.log(items);
|
|
||||||
return items.filter(i => i.type === type).map(i => i.system.key).includes(key);
|
return items.filter(i => i.type === type).map(i => i.system.key).includes(key);
|
||||||
})
|
})
|
||||||
Handlebars.registerHelper('includes', function (array, val) {
|
Handlebars.registerHelper('includes', function (array, val) {
|
||||||
@ -128,10 +127,7 @@ export const registerHandlebarsHelpers = function () {
|
|||||||
})
|
})
|
||||||
Handlebars.registerHelper('isOwnerOrGM', function (actor) {
|
Handlebars.registerHelper('isOwnerOrGM', function (actor) {
|
||||||
console.log("Testing actor", actor.isOwner, game.userId)
|
console.log("Testing actor", actor.isOwner, game.userId)
|
||||||
if (actor.isOwner || game.isGM) {
|
return actor.isOwner || game.isGM;
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
})
|
})
|
||||||
Handlebars.registerHelper('upperFirst', function (text) {
|
Handlebars.registerHelper('upperFirst', function (text) {
|
||||||
if (typeof text !== 'string') return text
|
if (typeof text !== 'string') return text
|
||||||
@ -141,6 +137,9 @@ export const registerHandlebarsHelpers = function () {
|
|||||||
if (typeof text !== 'string') return text
|
if (typeof text !== 'string') return text
|
||||||
return text.charAt(0).toUpperCase()
|
return text.charAt(0).toUpperCase()
|
||||||
})
|
})
|
||||||
|
Handlebars.registerHelper('isCreature', function (key) {
|
||||||
|
return key == "creature" || key == "daemon";
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -29,18 +29,6 @@ export default function registerHooks() {
|
|||||||
if (data.type == "Item") {
|
if (data.type == "Item") {
|
||||||
let item = data.data;
|
let item = data.data;
|
||||||
console.log(item);
|
console.log(item);
|
||||||
// let command = `let onlyDamage = false;\nlet customLabel = "";\nlet skillDescription = "";\nlet dmgDescription = "";\n\nif (event) {\n if (event.shiftKey) onlyDamage = true;\n}\n\ngame.cof.macros.rollItemMacro("${item._id}", "${item.name}", "${item.type}", 0, 0, 0, onlyDamage, customLabel, skillDescription, dmgDescription);`;
|
|
||||||
|
|
||||||
// let macro = game.macros.entities.find(m => (m.name === item.name) && (m.command === command));
|
|
||||||
// if (!macro) {
|
|
||||||
// macro = await Macro.create({
|
|
||||||
// name: item.name,
|
|
||||||
// type : "script",
|
|
||||||
// img: item.img,
|
|
||||||
// command : command
|
|
||||||
// }, {displaySheet: false})
|
|
||||||
// }
|
|
||||||
// game.user.assignHotbarMacro(macro, slot);
|
|
||||||
}
|
}
|
||||||
// Create a macro to open the actor sheet of the actor dropped on the hotbar
|
// Create a macro to open the actor sheet of the actor dropped on the hotbar
|
||||||
else if (data.type == "Actor") {
|
else if (data.type == "Actor") {
|
||||||
|
@ -43,6 +43,7 @@ export const preloadHandlebarsTemplates = async function () {
|
|||||||
"systems/bol/templates/item/parts/properties/feature/fightoption-properties.hbs",
|
"systems/bol/templates/item/parts/properties/feature/fightoption-properties.hbs",
|
||||||
"systems/bol/templates/item/parts/properties/item/weapon-vehicle-properties.hbs",
|
"systems/bol/templates/item/parts/properties/item/weapon-vehicle-properties.hbs",
|
||||||
"systems/bol/templates/item/parts/properties/feature/horoscope-properties.hbs",
|
"systems/bol/templates/item/parts/properties/feature/horoscope-properties.hbs",
|
||||||
|
"systems/bol/templates/item/parts/properties/feature/xplog-properties.hbs",
|
||||||
|
|
||||||
// DIALOGS
|
// DIALOGS
|
||||||
"systems/bol/templates/chat/rolls/attack-damage-card.hbs",
|
"systems/bol/templates/chat/rolls/attack-damage-card.hbs",
|
||||||
|
Binary file not shown.
BIN
packs/aides-de-jeu/000261.ldb
Normal file
BIN
packs/aides-de-jeu/000261.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000111
|
MANIFEST-000262
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.412914 7f5b813fe6c0 Recovering log #109
|
2024/04/26-11:56:58.161260 7f78fa0006c0 Recovering log #259
|
||||||
2023/12/05-10:19:09.423992 7f5b813fe6c0 Delete type=3 #107
|
2024/04/26-11:56:58.172348 7f78fa0006c0 Delete type=3 #257
|
||||||
2023/12/05-10:19:09.424077 7f5b813fe6c0 Delete type=0 #109
|
2024/04/26-11:56:58.172412 7f78fa0006c0 Delete type=0 #259
|
||||||
2023/12/05-10:22:46.862878 7f58eb7fe6c0 Level-0 table #114: started
|
2024/04/26-14:04:50.930192 7f78f90006c0 Level-0 table #265: started
|
||||||
2023/12/05-10:22:46.862963 7f58eb7fe6c0 Level-0 table #114: 0 bytes OK
|
2024/04/26-14:04:50.930219 7f78f90006c0 Level-0 table #265: 0 bytes OK
|
||||||
2023/12/05-10:22:46.869980 7f58eb7fe6c0 Delete type=0 #112
|
2024/04/26-14:04:50.936493 7f78f90006c0 Delete type=0 #263
|
||||||
2023/12/05-10:22:46.891683 7f58eb7fe6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.950259 7f78f90006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.891779 7f58eb7fe6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.950292 7f78f90006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.430277 7f84f7fff6c0 Recovering log #105
|
2024/04/19-08:19:44.083034 7f94642006c0 Recovering log #255
|
||||||
2023/12/04-21:16:34.440834 7f84f7fff6c0 Delete type=3 #103
|
2024/04/19-08:19:44.095849 7f94642006c0 Delete type=3 #253
|
||||||
2023/12/04-21:16:34.440885 7f84f7fff6c0 Delete type=0 #105
|
2024/04/19-08:19:44.095950 7f94642006c0 Delete type=0 #255
|
||||||
2023/12/04-21:29:36.294789 7f84f5ffb6c0 Level-0 table #110: started
|
2024/04/19-08:30:00.016102 7f94632006c0 Level-0 table #260: started
|
||||||
2023/12/04-21:29:36.294815 7f84f5ffb6c0 Level-0 table #110: 0 bytes OK
|
2024/04/19-08:30:00.020232 7f94632006c0 Level-0 table #260: 27751 bytes OK
|
||||||
2023/12/04-21:29:36.301173 7f84f5ffb6c0 Delete type=0 #108
|
2024/04/19-08:30:00.027004 7f94632006c0 Delete type=0 #258
|
||||||
2023/12/04-21:29:36.301317 7f84f5ffb6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.027264 7f94632006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.301343 7f84f5ffb6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.049736 7f94632006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 159 : 1
|
||||||
|
2024/04/19-08:30:00.049751 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:30:00.054303 7f94632006c0 Generated table #261@1: 24 keys, 27751 bytes
|
||||||
|
2024/04/19-08:30:00.054348 7f94632006c0 Compacted 1@1 + 1@2 files => 27751 bytes
|
||||||
|
2024/04/19-08:30:00.060656 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:30:00.060882 7f94632006c0 Delete type=2 #204
|
||||||
|
2024/04/19-08:30:00.061163 7f94632006c0 Delete type=2 #260
|
||||||
|
2024/04/19-08:30:00.073152 7f94632006c0 Manual compaction at level-1 from '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 159 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/aides-de-jeu/MANIFEST-000262
Normal file
BIN
packs/aides-de-jeu/MANIFEST-000262
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/armors/000167.ldb
Normal file
BIN
packs/armors/000167.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000018
|
MANIFEST-000168
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.388365 7f58ebfff6c0 Recovering log #16
|
2024/04/26-11:56:58.134706 7f78fbe006c0 Recovering log #165
|
||||||
2023/12/05-10:19:09.399094 7f58ebfff6c0 Delete type=3 #14
|
2024/04/26-11:56:58.144933 7f78fbe006c0 Delete type=3 #163
|
||||||
2023/12/05-10:19:09.399150 7f58ebfff6c0 Delete type=0 #16
|
2024/04/26-11:56:58.145031 7f78fbe006c0 Delete type=0 #165
|
||||||
2023/12/05-10:22:46.848470 7f58eb7fe6c0 Level-0 table #21: started
|
2024/04/26-14:04:50.923546 7f78f90006c0 Level-0 table #171: started
|
||||||
2023/12/05-10:22:46.848503 7f58eb7fe6c0 Level-0 table #21: 0 bytes OK
|
2024/04/26-14:04:50.923576 7f78f90006c0 Level-0 table #171: 0 bytes OK
|
||||||
2023/12/05-10:22:46.855871 7f58eb7fe6c0 Delete type=0 #19
|
2024/04/26-14:04:50.930043 7f78f90006c0 Delete type=0 #169
|
||||||
2023/12/05-10:22:46.862471 7f58eb7fe6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.950239 7f78f90006c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.862599 7f58eb7fe6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.950346 7f78f90006c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.402100 7f84f6ffd6c0 Recovering log #12
|
2024/04/19-08:19:44.050910 7f94656006c0 Recovering log #161
|
||||||
2023/12/04-21:16:34.413052 7f84f6ffd6c0 Delete type=3 #10
|
2024/04/19-08:19:44.062747 7f94656006c0 Delete type=3 #159
|
||||||
2023/12/04-21:16:34.413101 7f84f6ffd6c0 Delete type=0 #12
|
2024/04/19-08:19:44.062841 7f94656006c0 Delete type=0 #161
|
||||||
2023/12/04-21:29:36.274254 7f84f5ffb6c0 Level-0 table #17: started
|
2024/04/19-08:29:59.998576 7f94632006c0 Level-0 table #166: started
|
||||||
2023/12/04-21:29:36.274306 7f84f5ffb6c0 Level-0 table #17: 0 bytes OK
|
2024/04/19-08:30:00.001989 7f94632006c0 Level-0 table #166: 5548 bytes OK
|
||||||
2023/12/04-21:29:36.281091 7f84f5ffb6c0 Delete type=0 #15
|
2024/04/19-08:30:00.008530 7f94632006c0 Delete type=0 #164
|
||||||
2023/12/04-21:29:36.301284 7f84f5ffb6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.027235 7f94632006c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.301326 7f84f5ffb6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.038530 7f94632006c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at '!items!xhEcsi3WHjbt2ro9' @ 18 : 1
|
||||||
|
2024/04/19-08:30:00.038547 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:30:00.042082 7f94632006c0 Generated table #167@1: 6 keys, 5548 bytes
|
||||||
|
2024/04/19-08:30:00.042108 7f94632006c0 Compacted 1@1 + 1@2 files => 5548 bytes
|
||||||
|
2024/04/19-08:30:00.048990 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:30:00.049179 7f94632006c0 Delete type=2 #110
|
||||||
|
2024/04/19-08:30:00.049479 7f94632006c0 Delete type=2 #166
|
||||||
|
2024/04/19-08:30:00.061357 7f94632006c0 Manual compaction at level-1 from '!items!xhEcsi3WHjbt2ro9' @ 18 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/armors/MANIFEST-000168
Normal file
BIN
packs/armors/MANIFEST-000168
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/boons/000260.ldb
Normal file
BIN
packs/boons/000260.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000261
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.243453 7f58ebfff6c0 Recovering log #108
|
2024/04/26-11:56:58.024961 7f78fbe006c0 Recovering log #258
|
||||||
2023/12/05-10:19:09.254734 7f58ebfff6c0 Delete type=3 #106
|
2024/04/26-11:56:58.034823 7f78fbe006c0 Delete type=3 #256
|
||||||
2023/12/05-10:19:09.254855 7f58ebfff6c0 Delete type=0 #108
|
2024/04/26-11:56:58.034882 7f78fbe006c0 Delete type=0 #258
|
||||||
2023/12/05-10:22:46.807255 7f58eb7fe6c0 Level-0 table #113: started
|
2024/04/26-14:04:50.869646 7f78f90006c0 Level-0 table #264: started
|
||||||
2023/12/05-10:22:46.807291 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/04/26-14:04:50.869694 7f78f90006c0 Level-0 table #264: 0 bytes OK
|
||||||
2023/12/05-10:22:46.813375 7f58eb7fe6c0 Delete type=0 #111
|
2024/04/26-14:04:50.876074 7f78f90006c0 Delete type=0 #262
|
||||||
2023/12/05-10:22:46.828324 7f58eb7fe6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.896825 7f78f90006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.835287 7f58eb7fe6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.896897 7f78f90006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.244782 7f84f6ffd6c0 Recovering log #104
|
2024/04/19-08:19:43.920264 7f94656006c0 Recovering log #254
|
||||||
2023/12/04-21:16:34.255803 7f84f6ffd6c0 Delete type=3 #102
|
2024/04/19-08:19:43.932138 7f94656006c0 Delete type=3 #252
|
||||||
2023/12/04-21:16:34.255859 7f84f6ffd6c0 Delete type=0 #104
|
2024/04/19-08:19:43.932303 7f94656006c0 Delete type=0 #254
|
||||||
2023/12/04-21:29:36.227120 7f84f5ffb6c0 Level-0 table #109: started
|
2024/04/19-08:29:59.809068 7f94632006c0 Level-0 table #259: started
|
||||||
2023/12/04-21:29:36.227155 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/04/19-08:29:59.813175 7f94632006c0 Level-0 table #259: 18151 bytes OK
|
||||||
2023/12/04-21:29:36.233490 7f84f5ffb6c0 Delete type=0 #107
|
2024/04/19-08:29:59.819452 7f94632006c0 Delete type=0 #257
|
||||||
2023/12/04-21:29:36.247612 7f84f5ffb6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.851866 7f94632006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.247638 7f84f5ffb6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.851973 7f94632006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at '!items!zgspy1QKaxdEetEw' @ 236 : 1
|
||||||
|
2024/04/19-08:29:59.851985 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:29:59.856258 7f94632006c0 Generated table #260@1: 59 keys, 18151 bytes
|
||||||
|
2024/04/19-08:29:59.856292 7f94632006c0 Compacted 1@1 + 1@2 files => 18151 bytes
|
||||||
|
2024/04/19-08:29:59.862772 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:29:59.862925 7f94632006c0 Delete type=2 #203
|
||||||
|
2024/04/19-08:29:59.863159 7f94632006c0 Delete type=2 #259
|
||||||
|
2024/04/19-08:29:59.896639 7f94632006c0 Manual compaction at level-1 from '!items!zgspy1QKaxdEetEw' @ 236 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/boons/MANIFEST-000261
Normal file
BIN
packs/boons/MANIFEST-000261
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/boonsflawscreatures/000260.ldb
Normal file
BIN
packs/boonsflawscreatures/000260.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000261
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.257627 7f5b80bfd6c0 Recovering log #108
|
2024/04/26-11:56:58.038384 7f78faa006c0 Recovering log #258
|
||||||
2023/12/05-10:19:09.267269 7f5b80bfd6c0 Delete type=3 #106
|
2024/04/26-11:56:58.049190 7f78faa006c0 Delete type=3 #256
|
||||||
2023/12/05-10:19:09.267320 7f5b80bfd6c0 Delete type=0 #108
|
2024/04/26-11:56:58.049324 7f78faa006c0 Delete type=0 #258
|
||||||
2023/12/05-10:22:46.813487 7f58eb7fe6c0 Level-0 table #113: started
|
2024/04/26-14:04:50.890102 7f78f90006c0 Level-0 table #264: started
|
||||||
2023/12/05-10:22:46.813513 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/04/26-14:04:50.890126 7f78f90006c0 Level-0 table #264: 0 bytes OK
|
||||||
2023/12/05-10:22:46.821758 7f58eb7fe6c0 Delete type=0 #111
|
2024/04/26-14:04:50.896657 7f78f90006c0 Delete type=0 #262
|
||||||
2023/12/05-10:22:46.828335 7f58eb7fe6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.896882 7f78f90006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.835270 7f58eb7fe6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.896947 7f78f90006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.258787 7f84f77fe6c0 Recovering log #104
|
2024/04/19-08:19:43.937500 7f9464c006c0 Recovering log #254
|
||||||
2023/12/04-21:16:34.268652 7f84f77fe6c0 Delete type=3 #102
|
2024/04/19-08:19:43.949011 7f9464c006c0 Delete type=3 #252
|
||||||
2023/12/04-21:16:34.268705 7f84f77fe6c0 Delete type=0 #104
|
2024/04/19-08:19:43.949130 7f9464c006c0 Delete type=0 #254
|
||||||
2023/12/04-21:29:36.233597 7f84f5ffb6c0 Level-0 table #109: started
|
2024/04/19-08:29:59.829996 7f94632006c0 Level-0 table #259: started
|
||||||
2023/12/04-21:29:36.233621 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/04/19-08:29:59.833757 7f94632006c0 Level-0 table #259: 2399 bytes OK
|
||||||
2023/12/04-21:29:36.239701 7f84f5ffb6c0 Delete type=0 #107
|
2024/04/19-08:29:59.840517 7f94632006c0 Delete type=0 #257
|
||||||
2023/12/04-21:29:36.247623 7f84f5ffb6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.851922 7f94632006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.247651 7f84f5ffb6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.873788 7f94632006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at '!items!yofwG0YrsL902G77' @ 32 : 1
|
||||||
|
2024/04/19-08:29:59.873804 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:29:59.877246 7f94632006c0 Generated table #260@1: 8 keys, 2399 bytes
|
||||||
|
2024/04/19-08:29:59.877287 7f94632006c0 Compacted 1@1 + 1@2 files => 2399 bytes
|
||||||
|
2024/04/19-08:29:59.884259 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:29:59.884426 7f94632006c0 Delete type=2 #203
|
||||||
|
2024/04/19-08:29:59.884735 7f94632006c0 Delete type=2 #259
|
||||||
|
2024/04/19-08:29:59.896671 7f94632006c0 Manual compaction at level-1 from '!items!yofwG0YrsL902G77' @ 32 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/boonsflawscreatures/MANIFEST-000261
Normal file
BIN
packs/boonsflawscreatures/MANIFEST-000261
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/careers/000260.ldb
Normal file
BIN
packs/careers/000260.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000261
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.282801 7f5b81bff6c0 Recovering log #108
|
2024/04/26-11:56:58.065626 7f78fb4006c0 Recovering log #258
|
||||||
2023/12/05-10:19:09.293479 7f5b81bff6c0 Delete type=3 #106
|
2024/04/26-11:56:58.075327 7f78fb4006c0 Delete type=3 #256
|
||||||
2023/12/05-10:19:09.293574 7f5b81bff6c0 Delete type=0 #108
|
2024/04/26-11:56:58.075454 7f78fb4006c0 Delete type=0 #258
|
||||||
2023/12/05-10:22:46.828345 7f58eb7fe6c0 Level-0 table #113: started
|
2024/04/26-14:04:50.882862 7f78f90006c0 Level-0 table #264: started
|
||||||
2023/12/05-10:22:46.828365 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/04/26-14:04:50.882919 7f78f90006c0 Level-0 table #264: 0 bytes OK
|
||||||
2023/12/05-10:22:46.835090 7f58eb7fe6c0 Delete type=0 #111
|
2024/04/26-14:04:50.889962 7f78f90006c0 Delete type=0 #262
|
||||||
2023/12/05-10:22:46.835303 7f58eb7fe6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.896865 7f78f90006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.835334 7f58eb7fe6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.896926 7f78f90006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.285844 7f84f67fc6c0 Recovering log #104
|
2024/04/19-08:19:43.969794 7f94660006c0 Recovering log #254
|
||||||
2023/12/04-21:16:34.295915 7f84f67fc6c0 Delete type=3 #102
|
2024/04/19-08:19:43.980384 7f94660006c0 Delete type=3 #252
|
||||||
2023/12/04-21:16:34.295974 7f84f67fc6c0 Delete type=0 #104
|
2024/04/19-08:19:43.980502 7f94660006c0 Delete type=0 #254
|
||||||
2023/12/04-21:29:36.267733 7f84f5ffb6c0 Level-0 table #109: started
|
2024/04/19-08:29:59.840760 7f94632006c0 Level-0 table #259: started
|
||||||
2023/12/04-21:29:36.267761 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/04/19-08:29:59.845225 7f94632006c0 Level-0 table #259: 41173 bytes OK
|
||||||
2023/12/04-21:29:36.273875 7f84f5ffb6c0 Delete type=0 #107
|
2024/04/19-08:29:59.851577 7f94632006c0 Delete type=0 #257
|
||||||
2023/12/04-21:29:36.274078 7f84f5ffb6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.851940 7f94632006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.274142 7f84f5ffb6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.884948 7f94632006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at '!items!zxY3sW0iCJBvwjOS' @ 107 : 1
|
||||||
|
2024/04/19-08:29:59.884972 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:29:59.889715 7f94632006c0 Generated table #260@1: 27 keys, 41173 bytes
|
||||||
|
2024/04/19-08:29:59.889752 7f94632006c0 Compacted 1@1 + 1@2 files => 41173 bytes
|
||||||
|
2024/04/19-08:29:59.896200 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:29:59.896338 7f94632006c0 Delete type=2 #203
|
||||||
|
2024/04/19-08:29:59.896535 7f94632006c0 Delete type=2 #259
|
||||||
|
2024/04/19-08:29:59.896685 7f94632006c0 Manual compaction at level-1 from '!items!zxY3sW0iCJBvwjOS' @ 107 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/careers/MANIFEST-000261
Normal file
BIN
packs/careers/MANIFEST-000261
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/cartes/000122.ldb
Normal file
BIN
packs/cartes/000122.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000259
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.427439 7f5b81bff6c0 Recovering log #108
|
2024/04/26-11:56:58.176077 7f78fb4006c0 Recovering log #257
|
||||||
2023/12/05-10:19:09.437209 7f5b81bff6c0 Delete type=3 #106
|
2024/04/26-11:56:58.186350 7f78fb4006c0 Delete type=3 #255
|
||||||
2023/12/05-10:19:09.437271 7f5b81bff6c0 Delete type=0 #108
|
2024/04/26-11:56:58.186407 7f78fb4006c0 Delete type=0 #257
|
||||||
2023/12/05-10:22:46.876957 7f58eb7fe6c0 Level-0 table #113: started
|
2024/04/26-14:04:50.943258 7f78f90006c0 Level-0 table #262: started
|
||||||
2023/12/05-10:22:46.876983 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/04/26-14:04:50.943288 7f78f90006c0 Level-0 table #262: 0 bytes OK
|
||||||
2023/12/05-10:22:46.884392 7f58eb7fe6c0 Delete type=0 #111
|
2024/04/26-14:04:50.950031 7f78f90006c0 Delete type=0 #260
|
||||||
2023/12/05-10:22:46.891737 7f58eb7fe6c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.950283 7f78f90006c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.891822 7f58eb7fe6c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.950309 7f78f90006c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/04-21:16:34.444268 7f84f67fc6c0 Recovering log #104
|
2024/04/19-08:19:44.103925 7f94660006c0 Recovering log #253
|
||||||
2023/12/04-21:16:34.454337 7f84f67fc6c0 Delete type=3 #102
|
2024/04/19-08:19:44.147003 7f94660006c0 Delete type=3 #251
|
||||||
2023/12/04-21:16:34.454390 7f84f67fc6c0 Delete type=0 #104
|
2024/04/19-08:19:44.147169 7f94660006c0 Delete type=0 #253
|
||||||
2023/12/04-21:29:36.307716 7f84f5ffb6c0 Level-0 table #109: started
|
2024/04/19-08:30:00.008693 7f94632006c0 Level-0 table #258: started
|
||||||
2023/12/04-21:29:36.307782 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/04/19-08:30:00.008732 7f94632006c0 Level-0 table #258: 0 bytes OK
|
||||||
2023/12/04-21:29:36.314556 7f84f5ffb6c0 Delete type=0 #107
|
2024/04/19-08:30:00.015925 7f94632006c0 Delete type=0 #256
|
||||||
2023/12/04-21:29:36.327965 7f84f5ffb6c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.027251 7f94632006c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.328032 7f84f5ffb6c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.049675 7f94632006c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/cartes/MANIFEST-000259
Normal file
BIN
packs/cartes/MANIFEST-000259
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/creatures/000203.ldb
Normal file
BIN
packs/creatures/000203.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000208
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.537819 7f5b80bfd6c0 Recovering log #108
|
2024/02/23-23:05:36.345111 7fe93a0006c0 Recovering log #206
|
||||||
2023/12/05-10:19:09.548670 7f5b80bfd6c0 Delete type=3 #106
|
2024/02/23-23:05:36.355350 7fe93a0006c0 Delete type=3 #204
|
||||||
2023/12/05-10:19:09.548725 7f5b80bfd6c0 Delete type=0 #108
|
2024/02/23-23:05:36.355397 7fe93a0006c0 Delete type=0 #206
|
||||||
2023/12/05-10:22:46.934967 7f58eb7fe6c0 Level-0 table #113: started
|
2024/02/23-23:11:16.411887 7fe9336006c0 Level-0 table #211: started
|
||||||
2023/12/05-10:22:46.935007 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/02/23-23:11:16.411923 7fe9336006c0 Level-0 table #211: 0 bytes OK
|
||||||
2023/12/05-10:22:46.942182 7f58eb7fe6c0 Delete type=0 #111
|
2024/02/23-23:11:16.418695 7fe9336006c0 Delete type=0 #209
|
||||||
2023/12/05-10:22:46.949024 7f58eb7fe6c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
2024/02/23-23:11:16.419070 7fe9336006c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.949059 7f58eb7fe6c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
2024/02/23-23:11:16.419088 7fe9336006c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/04-21:16:34.555441 7f84f77fe6c0 Recovering log #104
|
2024/02/22-16:41:06.582756 7fe93be006c0 Recovering log #201
|
||||||
2023/12/04-21:16:34.566877 7f84f77fe6c0 Delete type=3 #102
|
2024/02/22-16:41:06.592273 7fe93be006c0 Delete type=3 #199
|
||||||
2023/12/04-21:16:34.566941 7f84f77fe6c0 Delete type=0 #104
|
2024/02/22-16:41:06.592326 7fe93be006c0 Delete type=0 #201
|
||||||
2023/12/04-21:29:36.355366 7f84f5ffb6c0 Level-0 table #109: started
|
2024/02/22-17:53:02.294923 7fe9336006c0 Level-0 table #207: started
|
||||||
2023/12/04-21:29:36.355392 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/02/22-17:53:02.294959 7fe9336006c0 Level-0 table #207: 0 bytes OK
|
||||||
2023/12/04-21:29:36.362705 7f84f5ffb6c0 Delete type=0 #107
|
2024/02/22-17:53:02.313594 7fe9336006c0 Delete type=0 #205
|
||||||
2023/12/04-21:29:36.362912 7f84f5ffb6c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
2024/02/22-17:53:02.322132 7fe9336006c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.362955 7f84f5ffb6c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
2024/02/22-17:53:02.322180 7fe9336006c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/creatures/MANIFEST-000208
Normal file
BIN
packs/creatures/MANIFEST-000208
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/effets-exemples/000259.ldb
Normal file
BIN
packs/effets-exemples/000259.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000260
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.524919 7f58ebfff6c0 Recovering log #108
|
2024/04/26-11:56:58.274057 7f78fbe006c0 Recovering log #257
|
||||||
2023/12/05-10:19:09.535781 7f58ebfff6c0 Delete type=3 #106
|
2024/04/26-11:56:58.285249 7f78fbe006c0 Delete type=3 #255
|
||||||
2023/12/05-10:19:09.535872 7f58ebfff6c0 Delete type=0 #108
|
2024/04/26-11:56:58.285383 7f78fbe006c0 Delete type=0 #257
|
||||||
2023/12/05-10:22:46.927846 7f58eb7fe6c0 Level-0 table #113: started
|
2024/04/26-14:04:50.977171 7f78f90006c0 Level-0 table #263: started
|
||||||
2023/12/05-10:22:46.927875 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/04/26-14:04:50.977197 7f78f90006c0 Level-0 table #263: 0 bytes OK
|
||||||
2023/12/05-10:22:46.934810 7f58eb7fe6c0 Delete type=0 #111
|
2024/04/26-14:04:50.984422 7f78f90006c0 Delete type=0 #261
|
||||||
2023/12/05-10:22:46.949014 7f58eb7fe6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:51.009734 7f78f90006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.949051 7f58eb7fe6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:51.009781 7f78f90006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.543411 7f84f6ffd6c0 Recovering log #104
|
2024/04/19-08:19:44.259456 7f94656006c0 Recovering log #253
|
||||||
2023/12/04-21:16:34.553517 7f84f6ffd6c0 Delete type=3 #102
|
2024/04/19-08:19:44.271045 7f94656006c0 Delete type=3 #251
|
||||||
2023/12/04-21:16:34.553574 7f84f6ffd6c0 Delete type=0 #104
|
2024/04/19-08:19:44.271171 7f94656006c0 Delete type=0 #253
|
||||||
2023/12/04-21:29:36.348547 7f84f5ffb6c0 Level-0 table #109: started
|
2024/04/19-08:30:00.174557 7f94632006c0 Level-0 table #258: started
|
||||||
2023/12/04-21:29:36.348582 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/04/19-08:30:00.178272 7f94632006c0 Level-0 table #258: 995 bytes OK
|
||||||
2023/12/04-21:29:36.355093 7f84f5ffb6c0 Delete type=0 #107
|
2024/04/19-08:30:00.184949 7f94632006c0 Delete type=0 #256
|
||||||
2023/12/04-21:29:36.355262 7f84f5ffb6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.196844 7f94632006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.355296 7f84f5ffb6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.219861 7f94632006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at '!items!zwSNMO9HpiqUCMt8' @ 12 : 1
|
||||||
|
2024/04/19-08:30:00.219880 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:30:00.223286 7f94632006c0 Generated table #259@1: 4 keys, 995 bytes
|
||||||
|
2024/04/19-08:30:00.223305 7f94632006c0 Compacted 1@1 + 1@2 files => 995 bytes
|
||||||
|
2024/04/19-08:30:00.230007 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:30:00.230147 7f94632006c0 Delete type=2 #202
|
||||||
|
2024/04/19-08:30:00.230383 7f94632006c0 Delete type=2 #258
|
||||||
|
2024/04/19-08:30:00.242012 7f94632006c0 Manual compaction at level-1 from '!items!zwSNMO9HpiqUCMt8' @ 12 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/effets-exemples/MANIFEST-000260
Normal file
BIN
packs/effets-exemples/MANIFEST-000260
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/equipment/000261.ldb
Normal file
BIN
packs/equipment/000261.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000112
|
MANIFEST-000262
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.321953 7f5b813fe6c0 Recovering log #110
|
2024/04/26-11:56:58.107651 7f78fa0006c0 Recovering log #259
|
||||||
2023/12/05-10:19:09.331688 7f5b813fe6c0 Delete type=3 #108
|
2024/04/26-11:56:58.117467 7f78fa0006c0 Delete type=3 #257
|
||||||
2023/12/05-10:19:09.331799 7f5b813fe6c0 Delete type=0 #110
|
2024/04/26-11:56:58.117610 7f78fa0006c0 Delete type=0 #259
|
||||||
2023/12/05-10:22:46.856017 7f58eb7fe6c0 Level-0 table #115: started
|
2024/04/26-14:04:50.910072 7f78f90006c0 Level-0 table #265: started
|
||||||
2023/12/05-10:22:46.856048 7f58eb7fe6c0 Level-0 table #115: 0 bytes OK
|
2024/04/26-14:04:50.910098 7f78f90006c0 Level-0 table #265: 0 bytes OK
|
||||||
2023/12/05-10:22:46.862204 7f58eb7fe6c0 Delete type=0 #113
|
2024/04/26-14:04:50.916483 7f78f90006c0 Delete type=0 #263
|
||||||
2023/12/05-10:22:46.862520 7f58eb7fe6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.923413 7f78f90006c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.862626 7f58eb7fe6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.923450 7f78f90006c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.326886 7f84f7fff6c0 Recovering log #106
|
2024/04/19-08:19:44.019625 7f94642006c0 Recovering log #255
|
||||||
2023/12/04-21:16:34.337231 7f84f7fff6c0 Delete type=3 #104
|
2024/04/19-08:19:44.030373 7f94642006c0 Delete type=3 #253
|
||||||
2023/12/04-21:16:34.337341 7f84f7fff6c0 Delete type=0 #106
|
2024/04/19-08:19:44.030526 7f94642006c0 Delete type=0 #255
|
||||||
2023/12/04-21:29:36.247774 7f84f5ffb6c0 Level-0 table #111: started
|
2024/04/19-08:29:59.918387 7f94632006c0 Level-0 table #260: started
|
||||||
2023/12/04-21:29:36.247806 7f84f5ffb6c0 Level-0 table #111: 0 bytes OK
|
2024/04/19-08:29:59.922021 7f94632006c0 Level-0 table #260: 11238 bytes OK
|
||||||
2023/12/04-21:29:36.253805 7f84f5ffb6c0 Delete type=0 #109
|
2024/04/19-08:29:59.928489 7f94632006c0 Delete type=0 #258
|
||||||
2023/12/04-21:29:36.274024 7f84f5ffb6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.940377 7f94632006c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.274096 7f84f5ffb6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
2024/04/19-08:29:59.962979 7f94632006c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at '!items!yE8UH6YAgNGjKDEu' @ 327 : 1
|
||||||
|
2024/04/19-08:29:59.962990 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:29:59.966809 7f94632006c0 Generated table #261@1: 43 keys, 11238 bytes
|
||||||
|
2024/04/19-08:29:59.966843 7f94632006c0 Compacted 1@1 + 1@2 files => 11238 bytes
|
||||||
|
2024/04/19-08:29:59.974600 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:29:59.974784 7f94632006c0 Delete type=2 #204
|
||||||
|
2024/04/19-08:29:59.975112 7f94632006c0 Delete type=2 #260
|
||||||
|
2024/04/19-08:29:59.986927 7f94632006c0 Manual compaction at level-1 from '!items!yE8UH6YAgNGjKDEu' @ 327 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/equipment/MANIFEST-000262
Normal file
BIN
packs/equipment/MANIFEST-000262
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/fightoptions/000259.ldb
Normal file
BIN
packs/fightoptions/000259.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000110
|
MANIFEST-000260
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2023/12/05-10:19:09.486474 7f5b80bfd6c0 Recovering log #108
|
2024/04/26-11:56:58.234275 7f78faa006c0 Recovering log #257
|
||||||
2023/12/05-10:19:09.497087 7f5b80bfd6c0 Delete type=3 #106
|
2024/04/26-11:56:58.244632 7f78faa006c0 Delete type=3 #255
|
||||||
2023/12/05-10:19:09.497144 7f5b80bfd6c0 Delete type=0 #108
|
2024/04/26-11:56:58.244781 7f78faa006c0 Delete type=0 #257
|
||||||
2023/12/05-10:22:46.906415 7f58eb7fe6c0 Level-0 table #113: started
|
2024/04/26-14:04:50.963407 7f78f90006c0 Level-0 table #263: started
|
||||||
2023/12/05-10:22:46.906438 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
2024/04/26-14:04:50.963434 7f78f90006c0 Level-0 table #263: 0 bytes OK
|
||||||
2023/12/05-10:22:46.912712 7f58eb7fe6c0 Delete type=0 #111
|
2024/04/26-14:04:50.970529 7f78f90006c0 Delete type=0 #261
|
||||||
2023/12/05-10:22:46.921346 7f58eb7fe6c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.977009 7f78f90006c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||||
2023/12/05-10:22:46.921382 7f58eb7fe6c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
2024/04/26-14:04:50.977040 7f78f90006c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
2023/12/04-21:16:34.503638 7f84f77fe6c0 Recovering log #104
|
2024/04/19-08:19:44.212596 7f9464c006c0 Recovering log #253
|
||||||
2023/12/04-21:16:34.513495 7f84f77fe6c0 Delete type=3 #102
|
2024/04/19-08:19:44.224303 7f9464c006c0 Delete type=3 #251
|
||||||
2023/12/04-21:16:34.513540 7f84f77fe6c0 Delete type=0 #104
|
2024/04/19-08:19:44.224391 7f9464c006c0 Delete type=0 #253
|
||||||
2023/12/04-21:29:36.328177 7f84f5ffb6c0 Level-0 table #109: started
|
2024/04/19-08:30:00.095765 7f94632006c0 Level-0 table #258: started
|
||||||
2023/12/04-21:29:36.328221 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
2024/04/19-08:30:00.099582 7f94632006c0 Level-0 table #258: 15776 bytes OK
|
||||||
2023/12/04-21:29:36.334799 7f84f5ffb6c0 Delete type=0 #107
|
2024/04/19-08:30:00.107187 7f94632006c0 Delete type=0 #256
|
||||||
2023/12/04-21:29:36.355226 7f84f5ffb6c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.118151 7f94632006c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||||
2023/12/04-21:29:36.355270 7f84f5ffb6c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
2024/04/19-08:30:00.140008 7f94632006c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at '!items!vGydqADwTsHZ9B3j' @ 90 : 1
|
||||||
|
2024/04/19-08:30:00.140020 7f94632006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/04/19-08:30:00.144757 7f94632006c0 Generated table #259@1: 30 keys, 15776 bytes
|
||||||
|
2024/04/19-08:30:00.144786 7f94632006c0 Compacted 1@1 + 1@2 files => 15776 bytes
|
||||||
|
2024/04/19-08:30:00.151053 7f94632006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/04/19-08:30:00.151191 7f94632006c0 Delete type=2 #202
|
||||||
|
2024/04/19-08:30:00.151438 7f94632006c0 Delete type=2 #258
|
||||||
|
2024/04/19-08:30:00.163491 7f94632006c0 Manual compaction at level-1 from '!items!vGydqADwTsHZ9B3j' @ 90 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/fightoptions/MANIFEST-000260
Normal file
BIN
packs/fightoptions/MANIFEST-000260
Normal file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user