Compare commits
6 Commits
bol-v11.1.
...
bol-v12.0.
Author | SHA1 | Date | |
---|---|---|---|
321052fd33 | |||
165a18e897 | |||
7ed9265a26 | |||
ae43c7c920 | |||
20ab9a17a4 | |||
5de40d4998 |
16
css/bol.css
16
css/bol.css
@ -803,6 +803,18 @@ body.system-bol img#logo {
|
||||
max-width: calc(250px - 10px);
|
||||
margin-right: 10px;
|
||||
}
|
||||
.sheet-profile-img {
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
background-color: #EEE;
|
||||
height: auto;
|
||||
width: 96px;
|
||||
height: 96px;
|
||||
min-width: 96px;
|
||||
min-height: 96px;
|
||||
max-width: 96px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.bol.sheet.actor .window-content form .main .sheet-body {
|
||||
overflow: hidden;
|
||||
}
|
||||
@ -937,6 +949,7 @@ body.system-bol img#logo {
|
||||
min-height: 400px;
|
||||
}
|
||||
.bol.sheet.item h1 input.itemname {
|
||||
margin-top: 32px;
|
||||
font-family: "Wolfsbane2Expanded", cursive;
|
||||
}
|
||||
.bol.sheet.item .item-properties {
|
||||
@ -1051,9 +1064,10 @@ body.system-bol img#logo {
|
||||
.tokenhudext.right2 {
|
||||
justify-content: flex-start;
|
||||
flex-direction: column;
|
||||
transform: translate(0, -30%);
|
||||
position: absolute;
|
||||
top: -4rem;
|
||||
left: 12rem;
|
||||
left: -12rem;
|
||||
}
|
||||
.control-icon.tokenhudicon {
|
||||
width: fit-content;
|
||||
|
110
lang/en.json
110
lang/en.json
@ -1,10 +1,18 @@
|
||||
{
|
||||
"ACTOR.TypeCharacter": "Character",
|
||||
"ACTOR.TypeEncounter": "Encounter",
|
||||
"ITEM.TypeItem": "Item",
|
||||
"ITEM.TypeFeature": "Feature",
|
||||
"ITEM.TypeWeapon": "Weapon",
|
||||
"ITEM.TypeArmor": "Armor",
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"character": "PC",
|
||||
"encounter": "NPC",
|
||||
"npc": "NPC",
|
||||
"vehicle": "Vehicle"
|
||||
},
|
||||
"Item": {
|
||||
"item": "Object",
|
||||
"feature": "Trait",
|
||||
"weapon": "Weapon",
|
||||
"armure": "Armor"
|
||||
}
|
||||
},
|
||||
|
||||
"BOL.attributes.vigor": "Strength",
|
||||
"BOL.attributes.halfvigor" : "Half-Strength",
|
||||
@ -46,6 +54,9 @@
|
||||
"BOL.ui.horoscopesMalus": "Horoscopes (Malus)",
|
||||
"BOL.ui.groupHoroscope": "Horoscrope de Groupe de ",
|
||||
|
||||
"BOL.ui.rabble": "Rabble",
|
||||
"BOL.ui.tough": "Tough",
|
||||
"BOL.ui.villain": "Villain",
|
||||
"BOL.ui.properties": "Properties",
|
||||
"BOL.ui.description": "Description",
|
||||
"BOL.ui.actions": "Actions",
|
||||
@ -166,8 +177,43 @@
|
||||
"BOL.ui.attackValue": "Attack Value",
|
||||
"BOL.ui.weaponbonus": "Cette arme bénéficie déja d'un Dé de Bonus (Arme Favorite prise en compte, par exemple)",
|
||||
"BOL.ui.initMalus": "Init malus",
|
||||
"BOL.ui.isspecial": "Spécial ?",
|
||||
"BOL.ui.createEquipment": "Create Equipment",
|
||||
"BOL.ui.creature": "Creature",
|
||||
"BOL.ui.undead": "Undead",
|
||||
"BOL.ui.daemon": "Daemon",
|
||||
"BOL.ui.attributaptitude": "Attribut ou Aptitude",
|
||||
"BOL.ui.always": "Tout les jets (ie toujours)",
|
||||
"BOL.ui.effectbonusmalus": "Bonus ou Malus à appliquer",
|
||||
"BOL.ui.boleffects": "Effects (automatic)",
|
||||
"BOL.ui.modifier": "Modifier",
|
||||
"BOL.ui.effects": "Ongoing effects",
|
||||
"BOL.ui.pcname": "PCs",
|
||||
"BOL.ui.npcname": "NPCs",
|
||||
"BOL.ui.pclistbutton": "Compact view",
|
||||
"BOL.ui.noactorfound": "Unknown NPC. The NPC must be known in the world to be displayed here.",
|
||||
"BOL.ui.deletetitle": "Delete",
|
||||
"BOL.ui.confirmdelete": "Are you sure to delete this item ?",
|
||||
"BOL.ui.nomorealchemypoints": "No more Creation Point !",
|
||||
"BOL.ui.armornoformula": "The Armor {protect.name} has no protection formula !",
|
||||
"BOL.ui.selectactor": "Select the actors to apply the macro",
|
||||
"BOL.ui.itemnotfound": "Impossible to find the object of this macro",
|
||||
"BOL.ui.noinit": "No initiative recorded. Roll initiative from the actor's sheet.",
|
||||
"BOL.ui.warninitiative": "No available initiative. Roll Initiative for this combat.",
|
||||
"BOL.ui.isspecial": "Special ?",
|
||||
"BOL.ui.createEquipment": "Create an equipment",
|
||||
"BOL.ui.astrology": "Astrology and Horoscope",
|
||||
"BOL.ui.astrologyMinor": "Build a Minor Horoscope",
|
||||
"BOL.ui.astrologyMajor": "Build a Major Horoscope",
|
||||
"BOL.ui.astrologyMajorGroup": "Build a Major Group Horoscope",
|
||||
"BOL.ui.makeHoroscope": "Build a Horoscope",
|
||||
"BOL.ui.astrologerRank": "Astrologer Rank",
|
||||
"BOL.ui.horoscopeCost": "Astrology Points cost",
|
||||
"BOL.ui.minor": "Minor",
|
||||
"BOL.ui.major": "Major",
|
||||
"BOL.ui.majorgroup": "Group Major",
|
||||
"BOL.ui.horoscopeGroup": "Group Horoscope",
|
||||
"BOL.ui.horoscopeDiceRemaining": "Remaining Dice",
|
||||
"BOL.ui.horoscopeDiceMax": "Max Dice",
|
||||
"BOL.ui.astrologyNoPoints": "You do not have enough Astrology Points!",
|
||||
|
||||
"BOL.featureCategory.origins": "Origins",
|
||||
"BOL.featureCategory.races": "Races",
|
||||
@ -185,6 +231,11 @@
|
||||
"BOL.featureSubtypes.language": "Language",
|
||||
"BOL.featureSubtypes.gods": "Faith & Gods",
|
||||
"BOL.featureSubtypes.fightOption": "Combat Option",
|
||||
"BOL.featureSubtypes.effect": "Effcet",
|
||||
"BOL.featureSubtypes.effects": "Effects",
|
||||
"BOL.featureSubtypes.boleffect": "Effect",
|
||||
"BOL.featureSubtypes.horoscope": "Horoscope",
|
||||
"BOL.featureSubtypes.xplog": "XP Journal",
|
||||
|
||||
"BOL.bougette.nomoney": "Nothing",
|
||||
"BOL.bougette.tolive": "To live",
|
||||
@ -413,6 +464,7 @@
|
||||
"BOL.chat.applydamagetotarget": "Apply damages to the target",
|
||||
"BOL.chat.fightoption": "Combat options",
|
||||
"BOL.chat.reroll": "Reroll (1 HP)",
|
||||
"BOL.chat.heroicreminder": "In addition of the actions below, you can : <ul><li>Carnage : Do a second free attack on the same opponent</li><li>Precise : 1 Malus Die on your opponent on a chosen location</li><li>Disarm</li><li>Rabble Massacre</li><li>Prone : Push your opponent on the ground (max +1 size)</li></ul>If you spent 1 Hero Point in addition, all these effects can be doubled.",
|
||||
"BOL.chat.toheroic": "Convert to Mighty success (1 HP)",
|
||||
"BOL.chat.tolegend": "Convert to Legendary succes (1 HP)",
|
||||
"BOL.chat.hurttitle": "{name} is going to receive {damageTotal} damages !",
|
||||
@ -430,6 +482,48 @@
|
||||
"BOL.chat.spell": "Spell",
|
||||
"BOL.chat.spellcost": "Power Points cost",
|
||||
"BOL.chat.spellremaining": "Remaining Power Points",
|
||||
"BOL.chat.nodamagesummary": "No damage ....",
|
||||
"BOL.chat.damageresume": "{name} as taken wounds ...",
|
||||
"BOL.chat.fumblemessage": "If you accept the consequences of a fumble (GM choice), you can get 1 additionnal Hero Point.",
|
||||
"BOL.chat.rangeinfo": "Range/Throw of {attackerName} to {defenderName}",
|
||||
"BOL.chat.rangeweaponinfo": "Weapon : {weaponName} - Base range {weaponRange}",
|
||||
"BOL.chat.rangeout": "Modifier : Out of range",
|
||||
"BOL.chat.range0": "Modifier : Point blank (+1)",
|
||||
"BOL.chat.range1": "Modifier : Short Range (0)",
|
||||
"BOL.chat.range2": "Modifier : Middle Range (-1)",
|
||||
"BOL.chat.range3": "Modifier : Long Range (-2)",
|
||||
"BOL.chat.range4": "Modifier : Very Long Range (-4)",
|
||||
"BOL.chat.range5": "Modifier : Extrem Range (-6)",
|
||||
"BOL.chat.range6": "Modifier : Max Range (-8)",
|
||||
"BOL.chat.rangeprefix": "Evaluated distance : ",
|
||||
"BOL.chat.rangevisible": "Line of sight is cleared between tokens.",
|
||||
"BOL.chat.rangenotvisible": "Line of sight is blocked between tokens.",
|
||||
"BOL.chat.rangetitle": "GM Information",
|
||||
"BOL.chat.weaponreroll1": "As a reminder, this weapon re-roll 1 whend rolling for damage.",
|
||||
"BOL.chat.rollbougette": "Budget roll",
|
||||
"BOL.chat.bougettesuccess": "Your budget remains unchanged !",
|
||||
"BOL.chat.bougettefailure": "You spent too much money, your budget is going down by one level...",
|
||||
"BOL.chat.initiative": "Initiative rank (10 to 1)",
|
||||
"BOL.chat.horoscope": "Horoscope",
|
||||
"BOL.chat.horoscopepoints": "Cost : {points} Astrology Points",
|
||||
"BOL.chat.horoscopeminorsuccess": "Your minor horoscope is a success : change the horoscope name in your sheet. You will benefit of 1 Bonus Die for the given situation.",
|
||||
"BOL.chat.horoscopeminorfailure": "Your minor horoscope mineur isa failure : change the horoscope name in your sheet. Vous will suffer 1 Malus Die for the given situation.",
|
||||
"BOL.chat.horoscopemajorsuccess": "Your major horoscope is a success : {horoscopeName} gets 1 new Hero Point for this adventure. This point has been automatically added.",
|
||||
"BOL.chat.horoscopemajorfailure": "Your major horoscope is a failure : {horoscopeName} looses 1 Hero Point for this adventure. This point has been automatically substracted.",
|
||||
"BOL.chat.horoscopemajorgroupsuccess": "Your major group horoscope majeur is a success. Your and your party gets {careerBonus} Bonus Dice during this adventure.",
|
||||
"BOL.chat.horoscopemajorgroupfailure": "Your major group horoscope is a failure. You and your party suffers {careerBonus} Malus Dice durig this adventure.",
|
||||
"BOL.chat.usedhoroscope": "Horoscope has been used",
|
||||
"BOL.chat.horoscopedeleted": "The Horoscopes used are deleted automatically.",
|
||||
"BOL.chat.criticaloptions": "Critical success !! You can (select 1 option) :",
|
||||
"BOL.chat.criticalcarnage": "Dual attack : you gain 1 free attack. This second attack can't benefit from a Hero/Villain Point.",
|
||||
"BOL.chat.criticalplus6": "Devastating : damage +6 aux dommages (cf button below).",
|
||||
"BOL.chat.criticalprecise": "Precise : You hit to harm your opponent. Describe what your are doing, and if the GM agree, your opponent will suffer 1 Malus Die for the relevant actions.",
|
||||
"BOL.chat.criticalunarm": "Disarm : Si your opponnent has a weapon in hand, you disarm him.",
|
||||
"BOL.chat.criticalrabble": "Rabble Massacre : If you fight against rabble, damages results indicate the amount of rabble you kill.",
|
||||
"BOL.chat.criticalpush": "Prone : If the size allow it, you push your opponent on the ground. He suffer 1 Malus Die for all his actions during the next round.",
|
||||
"BOL.chat.criticalup": "Transform to Legendary : If you spent 1 Hero Point/Villain, you can transform this Heroic success into a Legendary success.You can the choose 2 options in this list above.",
|
||||
"BOL.chat.criticalinfo": "This is a Legendary or Heroic succes ! Choose your options and effects !",
|
||||
"BOL.chat.criticalbuttonjournal": "Legendary/Heroic Success",
|
||||
|
||||
"BOL.dialog.soeasy": "So easy (+4)",
|
||||
"BOL.dialog.veryeasy": "Very easy (+2)",
|
||||
|
23
lang/fr.json
23
lang/fr.json
@ -2,6 +2,7 @@
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"character": "Personnage",
|
||||
"encounter": "PNJ",
|
||||
"npc": "PNJ",
|
||||
"vehicle": "Véhicule"
|
||||
},
|
||||
@ -139,6 +140,12 @@
|
||||
"BOL.ui.registerInit": "Enregistrer comme Init. de combat",
|
||||
"BOL.ui.initMalus": "Malus d'initiative",
|
||||
"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.isAlchemist": "Carrière d'Alchimiste ?",
|
||||
@ -201,7 +208,9 @@
|
||||
"BOL.ui.crewDamage": "D.équipage",
|
||||
"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.creature": "Creature",
|
||||
"BOL.ui.creature": "Créature",
|
||||
"BOL.ui.undead": "Mort vivant",
|
||||
"BOL.ui.daemon": "Démon",
|
||||
"BOL.ui.rabble": "Piétaille",
|
||||
"BOL.ui.tough": "Coriace",
|
||||
"BOL.ui.villain": "Rival",
|
||||
@ -251,6 +260,7 @@
|
||||
"BOL.featureSubtypes.effects": "Effets",
|
||||
"BOL.featureSubtypes.boleffect": "Effet",
|
||||
"BOL.featureSubtypes.horoscope": "Horoscope",
|
||||
"BOL.featureSubtypes.xplog": "Log d'XP",
|
||||
|
||||
"BOL.fightOptionTypes.armor": "Attaque au défaut d'armure",
|
||||
"BOL.fightOptionTypes.intrepid": "Attaque intrépide",
|
||||
@ -581,6 +591,8 @@
|
||||
"BOL.ui.biosigns": "Signes distinctifs",
|
||||
"BOL.ui.biodescription": "Description",
|
||||
"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.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.welcome6": "Bon jeu en Lemurie !",
|
||||
"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.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.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.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 */
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["bol", "sheet", "actor"],
|
||||
template: "systems/bol/templates/actor/actor-sheet.hbs",
|
||||
width: 860,
|
||||
@ -27,7 +27,7 @@ export class BoLActorSheet extends ActorSheet {
|
||||
|
||||
function onLoad() {
|
||||
let logoSheet = BoLUtility.getLogoActorSheet()
|
||||
$(".bol-actor-form").css("backgroundImage",`url(${logoSheet})`)
|
||||
$(".bol-actor-form").css("backgroundImage", `url(${logoSheet})`)
|
||||
}
|
||||
// Setup everything onload
|
||||
$(function () { onLoad(); });
|
||||
@ -122,8 +122,8 @@ export class BoLActorSheet extends ActorSheet {
|
||||
/** @override */
|
||||
async getData(options) {
|
||||
const data = super.getData(options)
|
||||
const actorData = duplicate(data)
|
||||
let formData = duplicate(data)
|
||||
const actorData = foundry.utils.duplicate(data)
|
||||
let formData = foundry.utils.duplicate(data)
|
||||
|
||||
formData.config = game.bol.config
|
||||
formData.data = actorData
|
||||
@ -147,6 +147,7 @@ export class BoLActorSheet extends ActorSheet {
|
||||
formData.fightoptions = this.actor.fightoptions
|
||||
formData.ammos = this.actor.ammos
|
||||
formData.misc = this.actor.misc
|
||||
formData.xplog = this.actor.xplog
|
||||
formData.combat = this.actor.buildCombat()
|
||||
formData.initiativeRank = this.actor.getInitiativeRank()
|
||||
//formData.combatCreature = this.actor.buildCombatCreature()
|
||||
@ -155,12 +156,13 @@ export class BoLActorSheet extends ActorSheet {
|
||||
formData.options = this.options
|
||||
formData.owner = this.document.isOwner
|
||||
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.charType = this.actor.getCharType()
|
||||
formData.villainy = this.actor.getVillainy()
|
||||
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.villainy = this.actor.getVillainy()
|
||||
formData.isUndead = this.actor.isUndead()
|
||||
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.isAlchemist = this.actor.isAlchemist()
|
||||
formData.isAstrologer = this.actor.isAstrologer()
|
||||
@ -186,7 +188,7 @@ export class BoLActorSheet extends ActorSheet {
|
||||
// Get the type of item to create.
|
||||
const type = header.dataset.type;
|
||||
// Grab any data associated with this control.
|
||||
const data = duplicate(header.dataset);
|
||||
const data = foundry.utils.duplicate(header.dataset);
|
||||
// Initialize a default name.
|
||||
const name = `New ${type.capitalize()}`;
|
||||
// Prepare the item object.
|
||||
@ -248,22 +250,22 @@ export class BoLActorSheet extends ActorSheet {
|
||||
case "attributexp":
|
||||
this.actor.incAttributeXP(dataset.key)
|
||||
break;
|
||||
case "bougette":
|
||||
this.actor.rollBougette()
|
||||
break;
|
||||
case "careerxp":
|
||||
this.actor.incCareerXP( li.data("item-id"))
|
||||
this.actor.incCareerXP(li.data("item-id"))
|
||||
break;
|
||||
case "horoscope-minor":
|
||||
BoLRoll.horoscopeCheck(this.actor, event, "minor")
|
||||
break
|
||||
case "horoscope-major":
|
||||
BoLRoll.horoscopeCheck(this.actor, event, "major")
|
||||
break
|
||||
break
|
||||
case "horoscope-major-group":
|
||||
BoLRoll.horoscopeCheck(this.actor, event, "majorgroup")
|
||||
break
|
||||
|
||||
break
|
||||
case "bougette":
|
||||
this.actor.rollBougette()
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
@ -38,10 +38,7 @@ export class BoLActor extends Actor {
|
||||
if (this.type === 'character') {
|
||||
return true
|
||||
}
|
||||
if (this.type === 'encounter' && this.chartype == "adversary") {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
return (this.type === 'encounter' && this.chartype == "adversary")
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -54,10 +51,10 @@ export class BoLActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getVillainy() {
|
||||
if (this.type === 'encounter' && this.chartype == "adversary") {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
return (this.type === 'encounter' && this.chartype == "adversary")
|
||||
}
|
||||
isUndead() {
|
||||
return (this.type == "encounter" && this.system.isundead)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getInitiativeMalus() {
|
||||
@ -69,7 +66,7 @@ export class BoLActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
getBougette() {
|
||||
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.diceImg = "icons/dice/" + game.bol.config.bougetteDice[String(this.system.bougette.value)] + "black.svg"
|
||||
return b
|
||||
@ -80,7 +77,7 @@ export class BoLActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async rollBougette() {
|
||||
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)
|
||||
rollData.formula = game.bol.config.bougetteDice[String(this.system.bougette.value)]
|
||||
let r = new BoLDefaultRoll(rollData)
|
||||
@ -91,7 +88,7 @@ export class BoLActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
decBougette() {
|
||||
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)
|
||||
this.update({ 'system.bougette': bougette })
|
||||
}
|
||||
@ -145,7 +142,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
}
|
||||
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.")
|
||||
return attrList
|
||||
}
|
||||
@ -199,21 +196,40 @@ export class BoLActor extends Actor {
|
||||
getActiveFightOption() {
|
||||
let it = this.items.find(i => i.type === "feature" && i.system.subtype === "fightoption" && i.system.properties.activated)
|
||||
if (it) {
|
||||
return duplicate(it)
|
||||
return foundry.utils.duplicate(it)
|
||||
}
|
||||
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) {
|
||||
let attr = duplicate(this.system.attributes[key])
|
||||
let attr = foundry.utils.duplicate(this.system.attributes[key])
|
||||
if (attr) {
|
||||
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) {
|
||||
attr.value += 1
|
||||
xp.spent += nextXP
|
||||
this.update({ [`system.attributes.${key}`]: attr, [`system.xp`]: xp })
|
||||
this.addXPLog("attribute", key, nextXP, attr.value)
|
||||
} else {
|
||||
ui.notifications.warn("Pas assez de points d'expérience !")
|
||||
}
|
||||
@ -222,14 +238,15 @@ export class BoLActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
incAptitudeXP(key) {
|
||||
let apt = duplicate(this.system.aptitudes[key])
|
||||
let apt = foundry.utils.duplicate(this.system.aptitudes[key])
|
||||
if (apt) {
|
||||
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) {
|
||||
apt.value += 1
|
||||
xp.spent += nextXP
|
||||
this.update({ [`system.aptitudes.${key}`]: apt, [`system.xp`]: xp })
|
||||
this.addXPLog("aptitude", key, nextXP, apt.value)
|
||||
} else {
|
||||
ui.notifications.warn("Pas assez de points d'expérience !")
|
||||
}
|
||||
@ -239,13 +256,14 @@ export class BoLActor extends Actor {
|
||||
incCareerXP(itemId) {
|
||||
let career = this.items.get(itemId)
|
||||
if (career) {
|
||||
career = duplicate(career)
|
||||
career = foundry.utils.duplicate(career)
|
||||
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) {
|
||||
xp.spent += nextXP
|
||||
this.update({ [`system.xp`]: xp })
|
||||
this.updateEmbeddedDocuments('Item', [{ _id: career._id, 'system.rank': career.system.rank + 1 }])
|
||||
this.addXPLog("career", career.name, nextXP, career.system.rank+1)
|
||||
} else {
|
||||
ui.notifications.warn("Pas assez de points d'expérience !")
|
||||
}
|
||||
@ -259,7 +277,7 @@ export class BoLActor extends Actor {
|
||||
let updates = []
|
||||
|
||||
if (fightOption) {
|
||||
fightOption = duplicate(fightOption)
|
||||
fightOption = foundry.utils.duplicate(fightOption)
|
||||
if (fightOption.system.properties.activated) {
|
||||
state = false
|
||||
} else {
|
||||
@ -298,17 +316,20 @@ export class BoLActor extends Actor {
|
||||
get boleffects() {
|
||||
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() {
|
||||
return this.items.filter(i => i.type === "feature" && i.system.subtype === "horoscope")
|
||||
}
|
||||
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() {
|
||||
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() {
|
||||
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() {
|
||||
return this.items.filter(i => i.type === "feature" && i.system.subtype === "origin");
|
||||
@ -390,31 +411,23 @@ export class BoLActor extends Actor {
|
||||
|
||||
get bonusBoons() {
|
||||
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() {
|
||||
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() {
|
||||
if (this.careers.find(item => item.system.properties.sorcerer == true))
|
||||
return true
|
||||
return false
|
||||
return (this.careers.find(item => item.system.properties.sorcerer ))
|
||||
}
|
||||
isAlchemist() {
|
||||
if (this.careers.find(item => item.system.properties.alchemist == true))
|
||||
return true
|
||||
return false
|
||||
return (this.careers.find(item => item.system.properties.alchemist))
|
||||
}
|
||||
isAstrologer() {
|
||||
if (this.careers.find(item => item.system.properties.astrologer == true))
|
||||
return true
|
||||
return false
|
||||
return (this.careers.find(item => item.system.properties.astrologer))
|
||||
}
|
||||
isPriest() {
|
||||
if (this.careers.find(item => item.system.properties.priest == true))
|
||||
return true
|
||||
return false
|
||||
return (this.careers.find(item => item.system.properties.priest))
|
||||
}
|
||||
|
||||
/*-------------------------------------------- */
|
||||
@ -484,7 +497,7 @@ export class BoLActor extends Actor {
|
||||
|
||||
/*-------------------------------------------- */
|
||||
spentAstrologyPoints(points) {
|
||||
let astrology = duplicate(this.system.resources.astrologypoints)
|
||||
let astrology = foundry.utils.duplicate(this.system.resources.astrologypoints)
|
||||
astrology.value -= points
|
||||
astrology.value = Math.max(astrology.value, 0)
|
||||
this.update({ 'system.resources.astrologypoints': astrology })
|
||||
@ -535,8 +548,8 @@ export class BoLActor extends Actor {
|
||||
rollData.horoscopeName = actorHoroscope.name
|
||||
}
|
||||
if (rollData.horoscopeType == "majorgroup") {
|
||||
let rID = randomID(16)
|
||||
let horoscopes = duplicate(game.settings.get("bol", "horoscope-group"))
|
||||
let rID = foundry.utils.randomID(16)
|
||||
let horoscopes = foundry.utils.duplicate(game.settings.get("bol", "horoscope-group"))
|
||||
horoscopes[rID] = {
|
||||
id: rID,
|
||||
name: game.i18n.localize("BOL.ui.groupHoroscope") + this.name,
|
||||
@ -568,7 +581,7 @@ export class BoLActor extends Actor {
|
||||
async spendAlchemyPoint(alchemyId, pcCost) {
|
||||
let alchemy = this.items.get(alchemyId)
|
||||
if (alchemy) {
|
||||
pcCost = Number(pcCost) ?? 0
|
||||
pcCost = Number(pcCost) || 0
|
||||
if (this.system.resources.alchemypoints.value >= pcCost) {
|
||||
let newPC = this.system.resources.alchemypoints.value - pcCost
|
||||
newPC = (newPC < 0) ? 0 : newPC
|
||||
@ -582,7 +595,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
getAstrologerBonus() {
|
||||
let astrologer = this.careers.find(item => item.system.properties.astrologer == true)
|
||||
let astrologer = this.careers.find(item => item.system.properties.astrologer)
|
||||
if (astrologer) {
|
||||
return astrologer.system.rank
|
||||
}
|
||||
@ -590,7 +603,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
getAlchemistBonus() {
|
||||
let sorcerer = this.careers.find(item => item.system.properties.alchemist == true)
|
||||
let sorcerer = this.careers.find(item => item.system.properties.alchemist)
|
||||
if (sorcerer) {
|
||||
return sorcerer.system.rank
|
||||
}
|
||||
@ -598,7 +611,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
getSorcererBonus() {
|
||||
let sorcerer = this.careers.find(item => item.system.properties.sorcerer == true)
|
||||
let sorcerer = this.careers.find(item => item.system.properties.sorcerer )
|
||||
if (sorcerer) {
|
||||
return sorcerer.system.rank
|
||||
}
|
||||
@ -629,7 +642,7 @@ export class BoLActor extends Actor {
|
||||
resources['power'] = this.system.resources.power
|
||||
}
|
||||
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"
|
||||
}
|
||||
} else {
|
||||
@ -775,17 +788,17 @@ export class BoLActor extends Actor {
|
||||
let lastHP = await this.getFlag("world", hpID)
|
||||
if (lastHP != this.system.resources.hp.value && game.user.isGM) { // Only GM sends this
|
||||
await this.setFlag("world", hpID, this.system.resources.hp.value)
|
||||
let prone = this.effects.find(ef => ef.label == "EFFECT.StatusProne")
|
||||
let dead = this.effects.find(ef => ef.label == "EFFECT.StatusDead")
|
||||
let prone = this.effects.find(ef => ef.name == game.i18n.localize("EFFECT.StatusProne"))
|
||||
let dead = this.effects.find(ef => ef.name == game.i18n.localize("EFFECT.StatusDead"))
|
||||
if (this.system.resources.hp.value <= 0) {
|
||||
if (!prone) {
|
||||
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) {
|
||||
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({
|
||||
@ -812,7 +825,7 @@ export class BoLActor extends Actor {
|
||||
|
||||
/*-------------------------------------------- */
|
||||
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() {
|
||||
@ -836,7 +849,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
async applyRecuperation(recupHP) {
|
||||
let hp = duplicate(this.system.resources.hp)
|
||||
let hp = foundry.utils.duplicate(this.system.resources.hp)
|
||||
//console.log("RECUP !!!!", hp, recupHP)
|
||||
hp.value += Number(recupHP)
|
||||
hp.value = Math.min(hp.value, hp.max)
|
||||
@ -864,10 +877,7 @@ export class BoLActor extends Actor {
|
||||
checkNumeric(myObject) {
|
||||
if (myObject) {
|
||||
for (let key in myObject) {
|
||||
if (myObject[key].value === null) {
|
||||
myObject[key].value = 0
|
||||
}
|
||||
if (myObject[key].value === NaN) {
|
||||
if (myObject[key].value === null || isNaN(myObject[key].value)) {
|
||||
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
|
||||
if (this.type == 'character') {
|
||||
fvttInit = 5
|
||||
@ -988,7 +998,7 @@ export class BoLActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollProtection(itemId) {
|
||||
let armor = duplicate(this.items.get(itemId))
|
||||
let armor = foundry.utils.duplicate(this.items.get(itemId))
|
||||
if (armor) {
|
||||
let armorFormula = "max(" + armor.system.properties.soak.formula + ", 0)"
|
||||
let rollArmor = new Roll(armorFormula)
|
||||
@ -998,9 +1008,9 @@ export class BoLActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollWeaponDamage(itemId) {
|
||||
let weapon = duplicate(this.items.get(itemId))
|
||||
let weapon = foundry.utils.duplicate(this.items.get(itemId))
|
||||
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.rollDamage()
|
||||
}
|
||||
@ -1010,7 +1020,7 @@ export class BoLActor extends Actor {
|
||||
toggleEquipItem(item) {
|
||||
const equipable = item.system.properties.equipable;
|
||||
if (equipable) {
|
||||
let itemData = duplicate(item);
|
||||
let itemData = foundry.utils.duplicate(item);
|
||||
itemData.system.worn = !itemData.system.worn;
|
||||
return item.update(itemData);
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ export class BoLVehicleSheet extends ActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["bol", "sheet", "actor"],
|
||||
template: "systems/bol/templates/actor/vehicle-sheet.hbs",
|
||||
width: 860,
|
||||
@ -116,13 +116,12 @@ export class BoLVehicleSheet extends ActorSheet {
|
||||
/** @override */
|
||||
async getData(options) {
|
||||
const data = super.getData(options)
|
||||
const actorData = duplicate(data)
|
||||
let formData = duplicate(data)
|
||||
let formData = foundry.utils.duplicate(data)
|
||||
|
||||
formData.config = game.bol.config
|
||||
formData.name = this.actor.name
|
||||
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.isGM = game.user.isGM
|
||||
formData.options = this.options
|
||||
@ -148,7 +147,7 @@ export class BoLVehicleSheet extends ActorSheet {
|
||||
// Get the type of item to create.
|
||||
const type = header.dataset.type;
|
||||
// Grab any data associated with this control.
|
||||
const data = duplicate(header.dataset);
|
||||
const data = foundry.utils.duplicate(header.dataset);
|
||||
// Initialize a default name.
|
||||
const name = `New ${type.capitalize()}`;
|
||||
// Prepare the item object.
|
||||
|
@ -14,10 +14,8 @@ import { BoLUtility } from "./system/bol-utility.js"
|
||||
import { BoLCombatManager } from "./system/bol-combat.js"
|
||||
import { BoLTokenHud } from "./system/bol-action-hud.js"
|
||||
import { BoLHotbar } from "./system/bol-hotbar.js"
|
||||
import { BoLAdventureGenerator } from "./system/bol-adventure-generator.js"
|
||||
import { BoLCommands} from "./system/bol-commands.js"
|
||||
import { BoLCharacterSummary} from "./system/bol-character-summary.js"
|
||||
import { BoLRoll} from "./controllers/bol-rolls.js"
|
||||
import { BoLCommands } from "./system/bol-commands.js"
|
||||
import { BoLRoll } from "./controllers/bol-rolls.js"
|
||||
|
||||
/* -------------------------------------------- */
|
||||
Hooks.once('init', async function () {
|
||||
@ -27,10 +25,11 @@ Hooks.once('init', async function () {
|
||||
BoLItem,
|
||||
BoLHotbar,
|
||||
BoLRoll,
|
||||
BoLUtility,
|
||||
macros: Macros,
|
||||
config: BOL
|
||||
};
|
||||
|
||||
|
||||
// Game socket
|
||||
game.socket.on("system.bol", sockmsg => {
|
||||
BoLUtility.onSocketMessage(sockmsg);
|
||||
@ -64,8 +63,7 @@ Hooks.once('init', async function () {
|
||||
BoLTokenHud.init()
|
||||
BoLHotbar.init()
|
||||
BoLCommands.init()
|
||||
BoLAdventureGenerator.init()
|
||||
|
||||
|
||||
// Preload Handlebars Templates
|
||||
await preloadHandlebarsTemplates();
|
||||
|
||||
@ -77,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() {
|
||||
@ -110,24 +83,44 @@ function welcomeMessage() {
|
||||
whisper: [game.user.id],
|
||||
content: `<div id="welcome-message-pegasus"><span class="rdd-roll-part">
|
||||
<strong>` + game.i18n.localize("BOL.chat.welcome1") + `</strong><p>` +
|
||||
game.i18n.localize("BOL.chat.welcome2") + "<p>" +
|
||||
game.i18n.localize("BOL.chat.welcome3") + "<p>" +
|
||||
game.i18n.localize("BOL.chat.welcome4") + "</p>" +
|
||||
game.i18n.localize("BOL.chat.welcome5") + "<br>" +
|
||||
game.i18n.localize("BOL.chat.welcome6")
|
||||
} )
|
||||
game.i18n.localize("BOL.chat.welcome2") + "<p>" +
|
||||
game.i18n.localize("BOL.chat.welcome3") + "<p>" +
|
||||
game.i18n.localize("BOL.chat.welcome4") + "</p>" +
|
||||
game.i18n.localize("BOL.chat.welcome5") + "<br>" +
|
||||
game.i18n.localize("BOL.chat.welcome6")
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
Hooks.once('ready', async function () {
|
||||
|
||||
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()
|
||||
|
||||
// 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) {
|
||||
let appEffects = []
|
||||
for (let effect of rollData.bolEffects) {
|
||||
if (effect.system.properties.identifier == "always") {
|
||||
appEffects.push(effect)
|
||||
} else if (effect.system.properties.identifier.includes(rollData.attribute.key)) {
|
||||
appEffects.push(effect)
|
||||
} else if (rollData.aptitude && effect.system.properties.identifier.includes(rollData.aptitude.key)) {
|
||||
if ( (effect.system.properties.identifier == "always") ||
|
||||
(effect.system.properties.identifier.includes(rollData.attribute.key)) ||
|
||||
(rollData.aptitude && effect.system.properties.identifier.includes(rollData.aptitude.key)) ){
|
||||
appEffects.push(effect)
|
||||
}
|
||||
}
|
||||
@ -62,6 +60,7 @@ export class BoLRoll {
|
||||
armorInitMalus: actor.getArmorInitMalus(),
|
||||
horoscopeBonusList: actor.getHoroscopesBonus(),
|
||||
horoscopeMalusList: actor.getHoroscopesMalus(),
|
||||
config: game.bol.config,
|
||||
adv: "0",
|
||||
mod: 0,
|
||||
modRanged: 0,
|
||||
@ -184,7 +183,7 @@ export class BoLRoll {
|
||||
ui.notifications.warn("Unable to find weapon !")
|
||||
return
|
||||
}
|
||||
weapon = duplicate(weapon)
|
||||
weapon = foundry.utils.duplicate(weapon)
|
||||
return this.weaponCheckWithWeapon(actor, weapon)
|
||||
}
|
||||
|
||||
@ -196,7 +195,7 @@ export class BoLRoll {
|
||||
ui.notifications.warn("Unable to find Alchemy !");
|
||||
return;
|
||||
}
|
||||
alchemy = duplicate(alchemy)
|
||||
alchemy = foundry.utils.duplicate(alchemy)
|
||||
let alchemyData = alchemy.system
|
||||
if (alchemyData.properties.pccurrent < alchemyData.properties.pccost) {
|
||||
ui.notifications.warn("Pas assez de Points de Création investis dans la Préparation !")
|
||||
@ -270,7 +269,7 @@ export class BoLRoll {
|
||||
ui.notifications.warn("Impossible de trouver ce sort !")
|
||||
return
|
||||
}
|
||||
spell = duplicate(spell)
|
||||
spell = foundry.utils.duplicate(spell)
|
||||
return this.spellCheckWithSpell(actor, spell)
|
||||
}
|
||||
|
||||
@ -403,7 +402,7 @@ export class BoLRoll {
|
||||
html.find('#attr').change((event) => {
|
||||
let attrKey = event.currentTarget.value
|
||||
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.bolApplicableEffects = this.updateApplicableEffects(this.rollData)
|
||||
this.updateTotalDice()
|
||||
@ -411,7 +410,7 @@ export class BoLRoll {
|
||||
html.find('#apt').change((event) => {
|
||||
let aptKey = event.currentTarget.value
|
||||
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.bolApplicableEffects = this.updateApplicableEffects(this.rollData)
|
||||
this.updateTotalDice()
|
||||
@ -454,7 +453,7 @@ export class BoLRoll {
|
||||
html.find('#horoscope-bonus-applied').change((event) => {
|
||||
this.rollData.selectedHoroscope = []
|
||||
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()
|
||||
this.rollData.horoscopeBonus = (!horoscopes || horoscopes.length == 0) ? 0 : horoscopes.length
|
||||
@ -464,7 +463,7 @@ export class BoLRoll {
|
||||
html.find('#horoscope-malus-applied').change((event) => {
|
||||
this.rollData.selectedHoroscope = []
|
||||
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()
|
||||
this.rollData.horoscopeMalus = (!horoscopes || horoscopes.length == 0) ? 0 : horoscopes.length
|
||||
@ -532,7 +531,7 @@ export class BoLRoll {
|
||||
rollData.careerBonus = rollData.careerBonus ?? 0
|
||||
rollData.modRanged = rollData.modRanged ?? 0
|
||||
rollData.mod = rollData.mod ?? 0
|
||||
rollData.id = randomID(16)
|
||||
rollData.id = foundry.utils.randomID(16)
|
||||
rollData.weaponModifier = 0
|
||||
rollData.attackBonusDice = false
|
||||
rollData.armorMalus = 0
|
||||
@ -618,16 +617,15 @@ export class BoLDefaultRoll {
|
||||
if (this.rollData.applyId) {
|
||||
BoLUtility.cleanupButtons(this.rollData.applyId)
|
||||
}
|
||||
this.rollData.optionsId = randomID(16)
|
||||
this.rollData.applyId = randomID(16)
|
||||
this.rollData.optionsId = foundry.utils.randomID(16)
|
||||
this.rollData.applyId = foundry.utils.randomID(16)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async roll() {
|
||||
|
||||
const r = new Roll(this.rollData.formula)
|
||||
//console.log("Roll formula", this.rollData.formula)
|
||||
await r.roll({ "async": false })
|
||||
await r.roll()
|
||||
|
||||
let diceData = BoLUtility.getDiceData()
|
||||
//console.log("DICEDATA", diceData)
|
||||
@ -690,7 +688,7 @@ export class BoLDefaultRoll {
|
||||
flavor: msgFlavor,
|
||||
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)
|
||||
})
|
||||
}
|
||||
@ -743,7 +741,7 @@ export class BoLDefaultRoll {
|
||||
speaker: ChatMessage.getSpeaker({ actor: actor }),
|
||||
flags: { msgType: "default" }
|
||||
})
|
||||
this.rollData.damageRoll = duplicate(this.rollData.damageRoll)
|
||||
this.rollData.damageRoll = foundry.utils.duplicate(this.rollData.damageRoll)
|
||||
this.rollData.actor = undefined // Cleanup
|
||||
msg.setFlag("world", "bol-roll-data", this.rollData)
|
||||
})
|
||||
@ -778,7 +776,7 @@ export class BoLDefaultRoll {
|
||||
//console.log("Formula", weaponFormula, damageFormula, this.rollData.weapon.data.data.properties.damage)
|
||||
this.rollData.damageFormula = damageFormula
|
||||
this.rollData.damageRoll = new Roll(damageFormula)
|
||||
await this.rollData.damageRoll.roll({ "async": false })
|
||||
await this.rollData.damageRoll.roll()
|
||||
this.rollData.damageTotal = this.rollData.damageRoll.total
|
||||
console.log("DAMAGE !!!", damageFormula, attrDamageValue, this.rollData)
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ export class BoLItemSheet extends ItemSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["bol", "sheet", "item"],
|
||||
template: "systems/bol/templates/item/item-sheet.hbs",
|
||||
width: 650,
|
||||
@ -21,14 +21,16 @@ export class BoLItemSheet extends ItemSheet {
|
||||
/** @override */
|
||||
async 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.item = itemData
|
||||
data.category = itemData.system.category
|
||||
data.isGM = game.user.isGM;
|
||||
data.itemProperties = this.item.itemProperties;
|
||||
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
|
||||
if (itemData.type == "item") {
|
||||
if (!itemData.system.category) {
|
||||
@ -76,7 +78,7 @@ export class BoLItemSheet extends ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
postItem() {
|
||||
let chatData = duplicate(this.item)
|
||||
let chatData = foundry.utils.duplicate(this.item)
|
||||
if (this.actor) {
|
||||
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]
|
||||
const actionItem = actor.items.get(action._id)
|
||||
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") {
|
||||
let chatData = duplicate(actionItem)
|
||||
let chatData = foundry.utils.duplicate(actionItem)
|
||||
if (actionItem.actor) {
|
||||
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() {
|
||||
super();
|
||||
// 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) {
|
||||
this.calendrierPos = BoLCalendar.createCalendarPos()
|
||||
game.settings.set("bol", "calendar-pos", this.calendarPos)
|
||||
}
|
||||
|
||||
// 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.month = 0
|
||||
|
||||
@ -58,7 +58,7 @@ export class BoLCalendar extends Application {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
template: "systems/bol/templates/calendar-template.html",
|
||||
popOut: false,
|
||||
resizable: false
|
||||
@ -95,11 +95,11 @@ export class BoLCalendar extends Application {
|
||||
this.calendar.hour -= 24
|
||||
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
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||
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) {
|
||||
this.calendrier = duplicate(calendrier); // Local copy update
|
||||
this.calendrier = foundry.utils.duplicate(calendrier); // Local copy update
|
||||
this.updateDisplay();
|
||||
}
|
||||
|
||||
@ -123,7 +123,7 @@ export class BoLCalendar extends Application {
|
||||
}
|
||||
this.calendrier.heureRdD = indexHeure;
|
||||
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.moisRdD = RdDCalendrier.getChiffreFromSigne(calendrierData.moisKey);
|
||||
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();
|
||||
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||
msg: "msg_sync_time",
|
||||
data: duplicate(this.calendrier)
|
||||
data: foundry.utils.duplicate(this.calendrier)
|
||||
});
|
||||
|
||||
this.updateDisplay();
|
||||
@ -326,7 +326,7 @@ export class BoLCalendar extends Application {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async showCalendarEditor() {
|
||||
let calendrierData = duplicate(this.fillCalendrierData());
|
||||
let calendrierData = foundry.utils.duplicate(this.fillCalendrierData());
|
||||
if (this.editeur == undefined) {
|
||||
calendrierData.jourMoisOptions = RdDCalendrier.buildJoursMois();
|
||||
calendrierData.heuresOptions = [0, 1];
|
||||
@ -344,7 +344,7 @@ export class BoLCalendar extends Application {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async showAstrologieEditor() {
|
||||
let calendrierData = duplicate(this.fillCalendrierData());
|
||||
let calendrierData = foundry.utils.duplicate(this.fillCalendrierData());
|
||||
let astrologieArray = [];
|
||||
this.listeNombreAstral = this.listeNombreAstral || [];
|
||||
for (let astralData of this.listeNombreAstral) {
|
||||
@ -353,7 +353,7 @@ export class BoLCalendar extends Application {
|
||||
let actor = game.actors.get(vf.actorId);
|
||||
vf.actorName = (actor) ? actor.name : "Inconnu";
|
||||
}
|
||||
astrologieArray.push(duplicate(astralData));
|
||||
astrologieArray.push(foundry.utils.duplicate(astralData));
|
||||
}
|
||||
let heuresParActeur = {};
|
||||
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.left = xPos;
|
||||
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.left = 200;
|
||||
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);
|
||||
}
|
||||
|
@ -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 {
|
||||
@ -8,8 +5,6 @@ export class BoLCommands {
|
||||
static init() {
|
||||
if (!game.bol.commands) {
|
||||
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
|
||||
}
|
||||
|
||||
@ -88,7 +83,7 @@ export class BoLCommands {
|
||||
console.log("===> Processing command")
|
||||
let command = commandsTable[name];
|
||||
path = path + name + " ";
|
||||
if (command && command.subTable) {
|
||||
if (command?.subTable) {
|
||||
if (params[0]) {
|
||||
return this._processCommand(command.subTable, params[0], params.slice(1), content, msg, path)
|
||||
}
|
||||
@ -97,9 +92,9 @@ export class BoLCommands {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (command && command.func) {
|
||||
if (command?.func) {
|
||||
const result = command.func(content, msg, params);
|
||||
if (result == false) {
|
||||
if (!result) {
|
||||
BoLCommands._chatAnswer(msg, command.descr);
|
||||
}
|
||||
return true;
|
||||
|
@ -136,6 +136,10 @@ export class BoLUtility {
|
||||
this.successValue = Number(game.settings.get("bol", "dice-success-value"))
|
||||
this.criticalSuccessValue = Number(game.settings.get("bol", "dice-critical-success-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").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) {
|
||||
let chatGM = duplicate(chatOptions);
|
||||
let chatGM = foundry.utils.duplicate(chatOptions);
|
||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
||||
chatGM.content = "Blind message of " + game.user.name + "<br>" + chatOptions.content;
|
||||
console.log("blindMessageToGM", chatGM);
|
||||
@ -323,7 +327,7 @@ export class BoLUtility {
|
||||
if (rollData.targetId) {
|
||||
// Broadcast to GM or process it directly in case of GM defense
|
||||
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 {
|
||||
BoLUtility.processAttackSuccess(rollData)
|
||||
}
|
||||
@ -337,7 +341,7 @@ export class BoLUtility {
|
||||
// If the user is the message author or the actor owner, proceed
|
||||
const actor = game.actors.get(data.message.speaker.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
|
||||
|
||||
const divButtons = chatCard.find('.actions-section')
|
||||
@ -354,7 +358,7 @@ export class BoLUtility {
|
||||
/* -------------------------------------------- */
|
||||
static requestInitRoll(actorId, combatData) {
|
||||
let actor = game.actors.get(actorId)
|
||||
if (actor && actor.isOwner) {
|
||||
if (actor?.isOwner) {
|
||||
ui.notifications.info(game.i18n.localize("BOL.ui.warninitiative"))
|
||||
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) {
|
||||
return
|
||||
}
|
||||
@ -457,7 +461,7 @@ export class BoLUtility {
|
||||
|
||||
console.log("Damage Handling", attackId, defenseMode, weaponId)
|
||||
// Only GM process this
|
||||
if (rollData && rollData.defenderId) {
|
||||
if (rollData?.defenderId) {
|
||||
if (rollData.defenseDone || defenseMode == 'damage-not-applied') {
|
||||
return
|
||||
} // ?? Why ???
|
||||
@ -469,7 +473,7 @@ export class BoLUtility {
|
||||
if (defenseMode == 'damage-with-armor') {
|
||||
let armorFormula = defender.getArmorFormula()
|
||||
rollData.rollArmor = new Roll(armorFormula)
|
||||
rollData.rollArmor.roll({ async: false })
|
||||
await rollData.rollArmor.roll()
|
||||
rollData.armorProtect = (rollData.rollArmor.total < 0) ? 0 : rollData.rollArmor.total
|
||||
rollData.finalDamage = rollData.damageTotal - rollData.armorProtect
|
||||
rollData.finalDamage = (rollData.finalDamage < 0) ? 0 : rollData.finalDamage
|
||||
@ -483,10 +487,10 @@ export class BoLUtility {
|
||||
if (defenseMode == 'hero-reduce-damage') {
|
||||
let armorFormula = defender.getArmorFormula()
|
||||
rollData.rollArmor = new Roll(armorFormula)
|
||||
rollData.rollArmor.roll({ async: false })
|
||||
await rollData.rollArmor.roll()
|
||||
rollData.armorProtect = (rollData.rollArmor.total < 0) ? 0 : rollData.rollArmor.total
|
||||
rollData.rollHero = new Roll("1d6")
|
||||
rollData.rollHero.roll({ async: false })
|
||||
await rollData.rollHero.roll()
|
||||
rollData.finalDamage = rollData.damageTotal - rollData.rollHero.total - rollData.armorProtect
|
||||
rollData.finalDamage = (rollData.finalDamage < 0) ? 0 : rollData.finalDamage
|
||||
defender.sufferDamage(rollData.finalDamage)
|
||||
@ -668,7 +672,6 @@ export class BoLUtility {
|
||||
let res = myReg.exec(damageString)
|
||||
let nbDice = parseInt(res[1])
|
||||
let postForm = 'kh' + nbDice
|
||||
let modIndex = 3
|
||||
// Upgrade damage if needed
|
||||
if (upgradeDamage && (!res[3] || res[3] == "")) {
|
||||
res[3] = "B" // Upgrade to bonus
|
||||
@ -680,22 +683,18 @@ export class BoLUtility {
|
||||
if (res[3] == 'M') {
|
||||
postForm = 'kl' + nbDice
|
||||
nbDice++
|
||||
modIndex = 4
|
||||
}
|
||||
if (res[3] == 'MM') {
|
||||
postForm = 'kl' + nbDice
|
||||
nbDice += 2
|
||||
modIndex = 4
|
||||
}
|
||||
if (res[3] == 'B') {
|
||||
postForm = 'kh' + nbDice
|
||||
nbDice++
|
||||
modIndex = 4
|
||||
}
|
||||
if (res[3] == 'BB') {
|
||||
postForm = 'kh' + nbDice
|
||||
nbDice += 2
|
||||
modIndex = 4
|
||||
}
|
||||
}
|
||||
formula = "(" + nbDice + "d" + res[2] + reroll + postForm + "+" + modifier + ") *" + multiplier
|
||||
@ -742,8 +741,8 @@ export class BoLUtility {
|
||||
/* -------------------------------------------- */
|
||||
static removeGroupHoroscope(rollData) {
|
||||
let horo = rollData.horoscopeGroupList[rollData.selectedGroupHoroscopeIndex]
|
||||
let horoscopes = duplicate(game.settings.get("bol", "horoscope-group"))
|
||||
let toChange = duplicate(horoscopes[horo.id])
|
||||
let horoscopes = foundry.utils.duplicate(game.settings.get("bol", "horoscope-group"))
|
||||
let toChange = foundry.utils.duplicate(horoscopes[horo.id])
|
||||
toChange.availableDice -= horo.nbDice // Remove the dice
|
||||
if (toChange.availableDice <= 0) {
|
||||
horoscopes[horo.id] = undefined
|
||||
|
@ -31,6 +31,15 @@ BOL.damageMultiplier = {
|
||||
"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 = {
|
||||
"0": "BOL.spellItem.charm",
|
||||
"1": "BOL.spellItem.circle1",
|
||||
@ -180,6 +189,61 @@ BOL.vehicleSubtypes = {
|
||||
// "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 = {
|
||||
"armor" : "BOL.protectionCategory.armor",
|
||||
"shield" : "BOL.protectionCategory.shield",
|
||||
@ -271,6 +335,7 @@ BOL.featureSubtypes = {
|
||||
"fightoption" : "BOL.featureSubtypes.fightOption",
|
||||
"boleffect": "BOL.featureSubtypes.effect",
|
||||
"horoscope": "BOL.featureSubtypes.horoscope",
|
||||
"xplog": "BOL.featureSubtypes.xplog",
|
||||
}
|
||||
|
||||
BOL.fightOptionTypes = {
|
||||
@ -286,7 +351,7 @@ BOL.fightOptionTypes = {
|
||||
|
||||
BOL.itemIcons = {
|
||||
"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",
|
||||
"profile": "icons/sundries/documents/blueprint-axe.webp",
|
||||
"path": "icons/sundries/books/book-embossed-gold-red.webp"
|
||||
|
@ -10,7 +10,7 @@ export const registerHandlebarsHelpers = function () {
|
||||
|
||||
Handlebars.registerHelper('isEmpty', function (list) {
|
||||
if (list) return list.length == 0;
|
||||
else return 0;
|
||||
else return false;
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('notEmpty', function (list) {
|
||||
@ -64,8 +64,8 @@ export const registerHandlebarsHelpers = function () {
|
||||
})
|
||||
|
||||
Handlebars.registerHelper('for', function (from, to, incr, block) {
|
||||
var accum = '';
|
||||
for (var i = from; i < to; i += incr)
|
||||
let accum = '';
|
||||
for (let i = from; i < to; i += incr)
|
||||
accum += block.fn(i);
|
||||
return accum;
|
||||
})
|
||||
@ -79,7 +79,7 @@ export const registerHandlebarsHelpers = function () {
|
||||
Handlebars.registerHelper('countKeys', function (obj) {
|
||||
return Object.keys(obj).length;
|
||||
})
|
||||
|
||||
|
||||
Handlebars.registerHelper('isEnabled', function (configKey) {
|
||||
return game.settings.get("bol", configKey);
|
||||
})
|
||||
@ -89,8 +89,8 @@ export const registerHandlebarsHelpers = function () {
|
||||
|
||||
// If you need to add Handlebars helpers, here are a few useful examples:
|
||||
Handlebars.registerHelper('concat', function () {
|
||||
var outStr = '';
|
||||
for (var arg in arguments) {
|
||||
let outStr = '';
|
||||
for (let arg in arguments) {
|
||||
if (typeof arguments[arg] != 'object') {
|
||||
outStr += arguments[arg];
|
||||
}
|
||||
@ -108,16 +108,15 @@ export const registerHandlebarsHelpers = function () {
|
||||
return parseInt(a) - parseInt(b);
|
||||
})
|
||||
Handlebars.registerHelper('abbrev2', function (a) {
|
||||
return a.substring(0,2);
|
||||
return a.substring(0, 2);
|
||||
})
|
||||
Handlebars.registerHelper('abbrev3', function (a) {
|
||||
return a.substring(0,3);
|
||||
return a.substring(0, 3);
|
||||
})
|
||||
Handlebars.registerHelper('valueAtIndex', function (arr, idx) {
|
||||
return arr[idx];
|
||||
})
|
||||
Handlebars.registerHelper('includesKey', function (items, type, key) {
|
||||
// console.log(items);
|
||||
return items.filter(i => i.type === type).map(i => i.system.key).includes(key);
|
||||
})
|
||||
Handlebars.registerHelper('includes', function (array, val) {
|
||||
@ -128,10 +127,7 @@ export const registerHandlebarsHelpers = function () {
|
||||
})
|
||||
Handlebars.registerHelper('isOwnerOrGM', function (actor) {
|
||||
console.log("Testing actor", actor.isOwner, game.userId)
|
||||
if (actor.isOwner || game.isGM) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
return actor.isOwner || game.isGM;
|
||||
})
|
||||
Handlebars.registerHelper('upperFirst', function (text) {
|
||||
if (typeof text !== 'string') return text
|
||||
@ -141,6 +137,16 @@ export const registerHandlebarsHelpers = function () {
|
||||
if (typeof text !== 'string') return text
|
||||
return text.charAt(0).toUpperCase()
|
||||
})
|
||||
Handlebars.registerHelper('isCreature', function (key) {
|
||||
return key == "creature" || key == "daemon";
|
||||
})
|
||||
|
||||
// Handle v12 removal of this helper
|
||||
Handlebars.registerHelper('select', function (selected, options) {
|
||||
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
|
||||
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
|
||||
const html = options.fn(this);
|
||||
return html.replace(rgx, "$& selected");
|
||||
});
|
||||
|
||||
}
|
@ -29,18 +29,6 @@ export default function registerHooks() {
|
||||
if (data.type == "Item") {
|
||||
let item = data.data;
|
||||
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
|
||||
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/item/weapon-vehicle-properties.hbs",
|
||||
"systems/bol/templates/item/parts/properties/feature/horoscope-properties.hbs",
|
||||
"systems/bol/templates/item/parts/properties/feature/xplog-properties.hbs",
|
||||
|
||||
// DIALOGS
|
||||
"systems/bol/templates/chat/rolls/attack-damage-card.hbs",
|
||||
|
Binary file not shown.
BIN
packs/aides-de-jeu/000294.ldb
Normal file
BIN
packs/aides-de-jeu/000294.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000124
|
||||
MANIFEST-000303
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.177839 7f99f3fff6c0 Recovering log #121
|
||||
2024/01/02-23:25:25.189308 7f99f3fff6c0 Delete type=3 #119
|
||||
2024/01/02-23:25:25.189419 7f99f3fff6c0 Delete type=0 #121
|
||||
2024/01/02-23:34:00.361361 7f9772fef6c0 Level-0 table #127: started
|
||||
2024/01/02-23:34:00.361387 7f9772fef6c0 Level-0 table #127: 0 bytes OK
|
||||
2024/01/02-23:34:00.367523 7f9772fef6c0 Delete type=0 #125
|
||||
2024/01/02-23:34:00.389488 7f9772fef6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.389531 7f9772fef6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.614939 7f14756006c0 Recovering log #301
|
||||
2024/08/12-22:22:36.625124 7f14756006c0 Delete type=3 #299
|
||||
2024/08/12-22:22:36.625176 7f14756006c0 Delete type=0 #301
|
||||
2024/08/12-22:24:19.300777 7f146fe006c0 Level-0 table #306: started
|
||||
2024/08/12-22:24:19.300851 7f146fe006c0 Level-0 table #306: 0 bytes OK
|
||||
2024/08/12-22:24:19.307219 7f146fe006c0 Delete type=0 #304
|
||||
2024/08/12-22:24:19.328842 7f146fe006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.328887 7f146fe006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,15 +1,8 @@
|
||||
2023/12/13-08:52:21.682896 7f61367fc6c0 Recovering log #117
|
||||
2023/12/13-08:52:21.693810 7f61367fc6c0 Delete type=3 #115
|
||||
2023/12/13-08:52:21.693981 7f61367fc6c0 Delete type=0 #117
|
||||
2023/12/13-08:53:48.355543 7f6134ff96c0 Level-0 table #122: started
|
||||
2023/12/13-08:53:48.359570 7f6134ff96c0 Level-0 table #122: 17814 bytes OK
|
||||
2023/12/13-08:53:48.366596 7f6134ff96c0 Delete type=0 #120
|
||||
2023/12/13-08:53:48.384645 7f6134ff96c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.384691 7f6134ff96c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 111 : 1
|
||||
2023/12/13-08:53:48.384700 7f6134ff96c0 Compacting 1@1 + 1@2 files
|
||||
2023/12/13-08:53:48.389527 7f6134ff96c0 Generated table #123@1: 24 keys, 26928 bytes
|
||||
2023/12/13-08:53:48.389558 7f6134ff96c0 Compacted 1@1 + 1@2 files => 26928 bytes
|
||||
2023/12/13-08:53:48.395755 7f6134ff96c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/12/13-08:53:48.395871 7f6134ff96c0 Delete type=2 #62
|
||||
2023/12/13-08:53:48.396062 7f6134ff96c0 Delete type=2 #122
|
||||
2023/12/13-08:53:48.421562 7f6134ff96c0 Manual compaction at level-1 from '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 111 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.749548 7f14756006c0 Recovering log #297
|
||||
2024/08/12-14:24:59.759617 7f14756006c0 Delete type=3 #295
|
||||
2024/08/12-14:24:59.759718 7f14756006c0 Delete type=0 #297
|
||||
2024/08/12-15:14:31.888362 7f146fe006c0 Level-0 table #302: started
|
||||
2024/08/12-15:14:31.888390 7f146fe006c0 Level-0 table #302: 0 bytes OK
|
||||
2024/08/12-15:14:31.894838 7f146fe006c0 Delete type=0 #300
|
||||
2024/08/12-15:14:31.894997 7f146fe006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.895028 7f146fe006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/aides-de-jeu/MANIFEST-000303
Normal file
BIN
packs/aides-de-jeu/MANIFEST-000303
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/armors/000200.ldb
Normal file
BIN
packs/armors/000200.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000030
|
||||
MANIFEST-000209
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.151493 7f99f37fe6c0 Recovering log #28
|
||||
2024/01/02-23:25:25.161529 7f99f37fe6c0 Delete type=3 #26
|
||||
2024/01/02-23:25:25.161581 7f99f37fe6c0 Delete type=0 #28
|
||||
2024/01/02-23:34:00.375735 7f9772fef6c0 Level-0 table #33: started
|
||||
2024/01/02-23:34:00.375759 7f9772fef6c0 Level-0 table #33: 0 bytes OK
|
||||
2024/01/02-23:34:00.381825 7f9772fef6c0 Delete type=0 #31
|
||||
2024/01/02-23:34:00.389510 7f9772fef6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.389544 7f9772fef6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.584046 7f1476a006c0 Recovering log #207
|
||||
2024/08/12-22:22:36.594399 7f1476a006c0 Delete type=3 #205
|
||||
2024/08/12-22:22:36.594454 7f1476a006c0 Delete type=0 #207
|
||||
2024/08/12-22:24:19.315310 7f146fe006c0 Level-0 table #212: started
|
||||
2024/08/12-22:24:19.315377 7f146fe006c0 Level-0 table #212: 0 bytes OK
|
||||
2024/08/12-22:24:19.321841 7f146fe006c0 Delete type=0 #210
|
||||
2024/08/12-22:24:19.328866 7f146fe006c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.328902 7f146fe006c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/13-08:52:21.618084 7f61357fa6c0 Recovering log #24
|
||||
2023/12/13-08:52:21.629228 7f61357fa6c0 Delete type=3 #22
|
||||
2023/12/13-08:52:21.629353 7f61357fa6c0 Delete type=0 #24
|
||||
2023/12/13-08:53:48.340876 7f6134ff96c0 Level-0 table #29: started
|
||||
2023/12/13-08:53:48.340949 7f6134ff96c0 Level-0 table #29: 0 bytes OK
|
||||
2023/12/13-08:53:48.348214 7f6134ff96c0 Delete type=0 #27
|
||||
2023/12/13-08:53:48.366756 7f6134ff96c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.384659 7f6134ff96c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.720560 7f1474c006c0 Recovering log #203
|
||||
2024/08/12-14:24:59.731538 7f1474c006c0 Delete type=3 #201
|
||||
2024/08/12-14:24:59.731601 7f1474c006c0 Delete type=0 #203
|
||||
2024/08/12-15:14:31.868072 7f146fe006c0 Level-0 table #208: started
|
||||
2024/08/12-15:14:31.868103 7f146fe006c0 Level-0 table #208: 0 bytes OK
|
||||
2024/08/12-15:14:31.874133 7f146fe006c0 Delete type=0 #206
|
||||
2024/08/12-15:14:31.894963 7f146fe006c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.895004 7f146fe006c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/armors/MANIFEST-000209
Normal file
BIN
packs/armors/MANIFEST-000209
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/boons/000294.ldb
Normal file
BIN
packs/boons/000294.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000123
|
||||
MANIFEST-000303
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.045777 7f99f37fe6c0 Recovering log #120
|
||||
2024/01/02-23:25:25.055383 7f99f37fe6c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.055657 7f99f37fe6c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.303015 7f9772fef6c0 Level-0 table #126: started
|
||||
2024/01/02-23:34:00.303046 7f9772fef6c0 Level-0 table #126: 0 bytes OK
|
||||
2024/01/02-23:34:00.309951 7f9772fef6c0 Delete type=0 #124
|
||||
2024/01/02-23:34:00.316757 7f9772fef6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.323992 7f9772fef6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.471458 7f1476a006c0 Recovering log #301
|
||||
2024/08/12-22:22:36.483054 7f1476a006c0 Delete type=3 #299
|
||||
2024/08/12-22:22:36.483128 7f1476a006c0 Delete type=0 #301
|
||||
2024/08/12-22:24:19.266903 7f146fe006c0 Level-0 table #306: started
|
||||
2024/08/12-22:24:19.266943 7f146fe006c0 Level-0 table #306: 0 bytes OK
|
||||
2024/08/12-22:24:19.273091 7f146fe006c0 Delete type=0 #304
|
||||
2024/08/12-22:24:19.273227 7f146fe006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.273257 7f146fe006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,15 +1,8 @@
|
||||
2023/12/13-08:52:21.436244 7f61357fa6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.447788 7f61357fa6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.447917 7f61357fa6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.177402 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.181304 7f6134ff96c0 Level-0 table #121: 17449 bytes OK
|
||||
2023/12/13-08:53:48.188376 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.198764 7f6134ff96c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.198814 7f6134ff96c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at '!items!zgspy1QKaxdEetEw' @ 118 : 1
|
||||
2023/12/13-08:53:48.198824 7f6134ff96c0 Compacting 1@1 + 1@2 files
|
||||
2023/12/13-08:53:48.203066 7f6134ff96c0 Generated table #122@1: 59 keys, 17449 bytes
|
||||
2023/12/13-08:53:48.203099 7f6134ff96c0 Compacted 1@1 + 1@2 files => 17449 bytes
|
||||
2023/12/13-08:53:48.209650 7f6134ff96c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/12/13-08:53:48.209797 7f6134ff96c0 Delete type=2 #5
|
||||
2023/12/13-08:53:48.209998 7f6134ff96c0 Delete type=2 #121
|
||||
2023/12/13-08:53:48.242992 7f6134ff96c0 Manual compaction at level-1 from '!items!zgspy1QKaxdEetEw' @ 118 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.604150 7f1474c006c0 Recovering log #297
|
||||
2024/08/12-14:24:59.615057 7f1474c006c0 Delete type=3 #295
|
||||
2024/08/12-14:24:59.615112 7f1474c006c0 Delete type=0 #297
|
||||
2024/08/12-15:14:31.833556 7f146fe006c0 Level-0 table #302: started
|
||||
2024/08/12-15:14:31.833611 7f146fe006c0 Level-0 table #302: 0 bytes OK
|
||||
2024/08/12-15:14:31.840431 7f146fe006c0 Delete type=0 #300
|
||||
2024/08/12-15:14:31.840645 7f146fe006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.840677 7f146fe006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/boons/MANIFEST-000303
Normal file
BIN
packs/boons/MANIFEST-000303
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/boonsflawscreatures/000294.ldb
Normal file
BIN
packs/boonsflawscreatures/000294.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000123
|
||||
MANIFEST-000303
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.058623 7f9a097fa6c0 Recovering log #120
|
||||
2024/01/02-23:25:25.068614 7f9a097fa6c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.068662 7f9a097fa6c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.310209 7f9772fef6c0 Level-0 table #126: started
|
||||
2024/01/02-23:34:00.310260 7f9772fef6c0 Level-0 table #126: 0 bytes OK
|
||||
2024/01/02-23:34:00.316663 7f9772fef6c0 Delete type=0 #124
|
||||
2024/01/02-23:34:00.323982 7f9772fef6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.333515 7f9772fef6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.487187 7f14760006c0 Recovering log #301
|
||||
2024/08/12-22:22:36.497741 7f14760006c0 Delete type=3 #299
|
||||
2024/08/12-22:22:36.497799 7f14760006c0 Delete type=0 #301
|
||||
2024/08/12-22:24:19.252816 7f146fe006c0 Level-0 table #306: started
|
||||
2024/08/12-22:24:19.252870 7f146fe006c0 Level-0 table #306: 0 bytes OK
|
||||
2024/08/12-22:24:19.259892 7f146fe006c0 Delete type=0 #304
|
||||
2024/08/12-22:24:19.273201 7f146fe006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.273242 7f146fe006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,15 +1,8 @@
|
||||
2023/12/13-08:52:21.471174 7f6135ffb6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.481262 7f6135ffb6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.481340 7f6135ffb6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.210111 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.213777 7f6134ff96c0 Level-0 table #121: 2253 bytes OK
|
||||
2023/12/13-08:53:48.220546 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.243008 7f6134ff96c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.243053 7f6134ff96c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at '!items!yofwG0YrsL902G77' @ 16 : 1
|
||||
2023/12/13-08:53:48.243061 7f6134ff96c0 Compacting 1@1 + 1@2 files
|
||||
2023/12/13-08:53:48.246547 7f6134ff96c0 Generated table #122@1: 8 keys, 2253 bytes
|
||||
2023/12/13-08:53:48.246574 7f6134ff96c0 Compacted 1@1 + 1@2 files => 2253 bytes
|
||||
2023/12/13-08:53:48.252819 7f6134ff96c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/12/13-08:53:48.252934 7f6134ff96c0 Delete type=2 #5
|
||||
2023/12/13-08:53:48.253082 7f6134ff96c0 Delete type=2 #121
|
||||
2023/12/13-08:53:48.292770 7f6134ff96c0 Manual compaction at level-1 from '!items!yofwG0YrsL902G77' @ 16 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.619377 7f14760006c0 Recovering log #297
|
||||
2024/08/12-14:24:59.630095 7f14760006c0 Delete type=3 #295
|
||||
2024/08/12-14:24:59.630243 7f14760006c0 Delete type=0 #297
|
||||
2024/08/12-15:14:31.826328 7f146fe006c0 Level-0 table #302: started
|
||||
2024/08/12-15:14:31.826360 7f146fe006c0 Level-0 table #302: 0 bytes OK
|
||||
2024/08/12-15:14:31.833311 7f146fe006c0 Delete type=0 #300
|
||||
2024/08/12-15:14:31.840635 7f146fe006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.840669 7f146fe006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/boonsflawscreatures/MANIFEST-000303
Normal file
BIN
packs/boonsflawscreatures/MANIFEST-000303
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/careers/000294.ldb
Normal file
BIN
packs/careers/000294.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000123
|
||||
MANIFEST-000303
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.085234 7f9a08ff96c0 Recovering log #120
|
||||
2024/01/02-23:25:25.095129 7f9a08ff96c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.095182 7f9a08ff96c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.333534 7f9772fef6c0 Level-0 table #126: started
|
||||
2024/01/02-23:34:00.333589 7f9772fef6c0 Level-0 table #126: 0 bytes OK
|
||||
2024/01/02-23:34:00.340506 7f9772fef6c0 Delete type=0 #124
|
||||
2024/01/02-23:34:00.347405 7f9772fef6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.361237 7f9772fef6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.513300 7f1474c006c0 Recovering log #301
|
||||
2024/08/12-22:22:36.524215 7f1474c006c0 Delete type=3 #299
|
||||
2024/08/12-22:22:36.524271 7f1474c006c0 Delete type=0 #301
|
||||
2024/08/12-22:24:19.294026 7f146fe006c0 Level-0 table #306: started
|
||||
2024/08/12-22:24:19.294078 7f146fe006c0 Level-0 table #306: 0 bytes OK
|
||||
2024/08/12-22:24:19.300326 7f146fe006c0 Delete type=0 #304
|
||||
2024/08/12-22:24:19.300533 7f146fe006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.300580 7f146fe006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,15 +1,8 @@
|
||||
2023/12/13-08:52:21.514750 7f61357fa6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.525064 7f61357fa6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.525155 7f61357fa6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.232135 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.236265 7f6134ff96c0 Level-0 table #121: 37626 bytes OK
|
||||
2023/12/13-08:53:48.242838 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.243037 7f6134ff96c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.253259 7f6134ff96c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at '!items!wUUDR1XCrwdFCzIe' @ 53 : 1
|
||||
2023/12/13-08:53:48.253273 7f6134ff96c0 Compacting 1@1 + 1@2 files
|
||||
2023/12/13-08:53:48.258675 7f6134ff96c0 Generated table #122@1: 27 keys, 40640 bytes
|
||||
2023/12/13-08:53:48.258693 7f6134ff96c0 Compacted 1@1 + 1@2 files => 40640 bytes
|
||||
2023/12/13-08:53:48.265674 7f6134ff96c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/12/13-08:53:48.265771 7f6134ff96c0 Delete type=2 #5
|
||||
2023/12/13-08:53:48.265917 7f6134ff96c0 Delete type=2 #121
|
||||
2023/12/13-08:53:48.292787 7f6134ff96c0 Manual compaction at level-1 from '!items!wUUDR1XCrwdFCzIe' @ 53 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.647136 7f1476a006c0 Recovering log #297
|
||||
2024/08/12-14:24:59.658341 7f1476a006c0 Delete type=3 #295
|
||||
2024/08/12-14:24:59.658389 7f1476a006c0 Delete type=0 #297
|
||||
2024/08/12-15:14:31.810317 7f146fe006c0 Level-0 table #302: started
|
||||
2024/08/12-15:14:31.812977 7f146fe006c0 Level-0 table #302: 0 bytes OK
|
||||
2024/08/12-15:14:31.819987 7f146fe006c0 Delete type=0 #300
|
||||
2024/08/12-15:14:31.840600 7f146fe006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.840654 7f146fe006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/careers/MANIFEST-000303
Normal file
BIN
packs/careers/MANIFEST-000303
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000123
|
||||
MANIFEST-000283
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.195583 7f9a08ff96c0 Recovering log #120
|
||||
2024/01/02-23:25:25.205411 7f9a08ff96c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.205482 7f9a08ff96c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.403828 7f9772fef6c0 Level-0 table #126: started
|
||||
2024/01/02-23:34:00.403852 7f9772fef6c0 Level-0 table #126: 0 bytes OK
|
||||
2024/01/02-23:34:00.410648 7f9772fef6c0 Delete type=0 #124
|
||||
2024/01/02-23:34:00.417684 7f9772fef6c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.417728 7f9772fef6c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/07/08-22:24:33.833224 7fb8320006c0 Recovering log #281
|
||||
2024/07/08-22:24:33.895807 7fb8320006c0 Delete type=3 #279
|
||||
2024/07/08-22:24:33.895934 7fb8320006c0 Delete type=0 #281
|
||||
2024/07/08-22:24:52.466387 7fb82be006c0 Level-0 table #286: started
|
||||
2024/07/08-22:24:52.466440 7fb82be006c0 Level-0 table #286: 0 bytes OK
|
||||
2024/07/08-22:24:52.472857 7fb82be006c0 Delete type=0 #284
|
||||
2024/07/08-22:24:52.480332 7fb82be006c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/07/08-22:24:52.480427 7fb82be006c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,15 +1,8 @@
|
||||
2023/12/13-08:52:21.708212 7f61357fa6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.719348 7f61357fa6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.719497 7f61357fa6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.366771 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.377927 7f6134ff96c0 Level-0 table #121: 1212746 bytes OK
|
||||
2023/12/13-08:53:48.384205 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.384673 7f6134ff96c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.396179 7f6134ff96c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 44 : 1
|
||||
2023/12/13-08:53:48.396189 7f6134ff96c0 Compacting 1@1 + 1@2 files
|
||||
2023/12/13-08:53:48.406257 7f6134ff96c0 Generated table #122@1: 37 keys, 1212746 bytes
|
||||
2023/12/13-08:53:48.406287 7f6134ff96c0 Compacted 1@1 + 1@2 files => 1212746 bytes
|
||||
2023/12/13-08:53:48.413572 7f6134ff96c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/12/13-08:53:48.413789 7f6134ff96c0 Delete type=2 #5
|
||||
2023/12/13-08:53:48.414456 7f6134ff96c0 Delete type=2 #121
|
||||
2023/12/13-08:53:48.421585 7f6134ff96c0 Manual compaction at level-1 from '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 44 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/07/08-22:22:58.298438 7fb832a006c0 Recovering log #277
|
||||
2024/07/08-22:22:58.309146 7fb832a006c0 Delete type=3 #275
|
||||
2024/07/08-22:22:58.309315 7fb832a006c0 Delete type=0 #277
|
||||
2024/07/08-22:24:02.597516 7fb82be006c0 Level-0 table #282: started
|
||||
2024/07/08-22:24:02.597563 7fb82be006c0 Level-0 table #282: 0 bytes OK
|
||||
2024/07/08-22:24:02.685456 7fb82be006c0 Delete type=0 #280
|
||||
2024/07/08-22:24:02.775806 7fb82be006c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/07/08-22:24:02.775850 7fb82be006c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
|
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-000123
|
||||
MANIFEST-000208
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.310347 7f9a097fa6c0 Recovering log #120
|
||||
2024/01/02-23:25:25.319646 7f9a097fa6c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.319693 7f9a097fa6c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.445149 7f9772fef6c0 Level-0 table #126: started
|
||||
2024/01/02-23:34:00.445172 7f9772fef6c0 Level-0 table #126: 0 bytes OK
|
||||
2024/01/02-23:34:00.451743 7f9772fef6c0 Delete type=0 #124
|
||||
2024/01/02-23:34:00.451918 7f9772fef6c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.451974 7f9772fef6c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2024/02/23-23:05:36.345111 7fe93a0006c0 Recovering log #206
|
||||
2024/02/23-23:05:36.355350 7fe93a0006c0 Delete type=3 #204
|
||||
2024/02/23-23:05:36.355397 7fe93a0006c0 Delete type=0 #206
|
||||
2024/02/23-23:11:16.411887 7fe9336006c0 Level-0 table #211: started
|
||||
2024/02/23-23:11:16.411923 7fe9336006c0 Level-0 table #211: 0 bytes OK
|
||||
2024/02/23-23:11:16.418695 7fe9336006c0 Delete type=0 #209
|
||||
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)
|
||||
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,15 +1,8 @@
|
||||
2023/12/13-08:52:21.905098 7f6136ffd6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.921828 7f6136ffd6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.921979 7f6136ffd6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.524634 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.529685 7f6134ff96c0 Level-0 table #121: 90965 bytes OK
|
||||
2023/12/13-08:53:48.536056 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.536363 7f6134ff96c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.536410 7f6134ff96c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 307 : 1
|
||||
2023/12/13-08:53:48.536421 7f6134ff96c0 Compacting 1@1 + 1@2 files
|
||||
2023/12/13-08:53:48.543445 7f6134ff96c0 Generated table #122@1: 155 keys, 90965 bytes
|
||||
2023/12/13-08:53:48.543490 7f6134ff96c0 Compacted 1@1 + 1@2 files => 90965 bytes
|
||||
2023/12/13-08:53:48.549818 7f6134ff96c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/12/13-08:53:48.549934 7f6134ff96c0 Delete type=2 #5
|
||||
2023/12/13-08:53:48.550099 7f6134ff96c0 Delete type=2 #121
|
||||
2023/12/13-08:53:48.550408 7f6134ff96c0 Manual compaction at level-1 from '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 307 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2024/02/22-16:41:06.582756 7fe93be006c0 Recovering log #201
|
||||
2024/02/22-16:41:06.592273 7fe93be006c0 Delete type=3 #199
|
||||
2024/02/22-16:41:06.592326 7fe93be006c0 Delete type=0 #201
|
||||
2024/02/22-17:53:02.294923 7fe9336006c0 Level-0 table #207: started
|
||||
2024/02/22-17:53:02.294959 7fe9336006c0 Level-0 table #207: 0 bytes OK
|
||||
2024/02/22-17:53:02.313594 7fe9336006c0 Delete type=0 #205
|
||||
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)
|
||||
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/000292.ldb
Normal file
BIN
packs/effets-exemples/000292.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000122
|
||||
MANIFEST-000301
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.296875 7f99f37fe6c0 Recovering log #120
|
||||
2024/01/02-23:25:25.308292 7f99f37fe6c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.308344 7f99f37fe6c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.437770 7f9772fef6c0 Level-0 table #125: started
|
||||
2024/01/02-23:34:00.437996 7f9772fef6c0 Level-0 table #125: 0 bytes OK
|
||||
2024/01/02-23:34:00.444921 7f9772fef6c0 Delete type=0 #123
|
||||
2024/01/02-23:34:00.445053 7f9772fef6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.445084 7f9772fef6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.709096 7f14760006c0 Recovering log #299
|
||||
2024/08/12-22:22:36.719849 7f14760006c0 Delete type=3 #297
|
||||
2024/08/12-22:22:36.719957 7f14760006c0 Delete type=0 #299
|
||||
2024/08/12-22:24:19.364925 7f146fe006c0 Level-0 table #304: started
|
||||
2024/08/12-22:24:19.364969 7f146fe006c0 Level-0 table #304: 0 bytes OK
|
||||
2024/08/12-22:24:19.372290 7f146fe006c0 Delete type=0 #302
|
||||
2024/08/12-22:24:19.389594 7f146fe006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.389641 7f146fe006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/13-08:52:21.886820 7f61357fa6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.898896 7f61357fa6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.898983 7f61357fa6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.517363 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.517438 7f6134ff96c0 Level-0 table #121: 0 bytes OK
|
||||
2023/12/13-08:53:48.524502 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.536344 7f6134ff96c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.550391 7f6134ff96c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.845850 7f14760006c0 Recovering log #295
|
||||
2024/08/12-14:24:59.856716 7f14760006c0 Delete type=3 #293
|
||||
2024/08/12-14:24:59.856868 7f14760006c0 Delete type=0 #295
|
||||
2024/08/12-15:14:31.940476 7f146fe006c0 Level-0 table #300: started
|
||||
2024/08/12-15:14:31.940532 7f146fe006c0 Level-0 table #300: 0 bytes OK
|
||||
2024/08/12-15:14:31.946997 7f146fe006c0 Delete type=0 #298
|
||||
2024/08/12-15:14:31.953834 7f146fe006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.965266 7f146fe006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/effets-exemples/MANIFEST-000301
Normal file
BIN
packs/effets-exemples/MANIFEST-000301
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/equipment/000295.ldb
Normal file
BIN
packs/equipment/000295.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000124
|
||||
MANIFEST-000304
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.125818 7f99f3fff6c0 Recovering log #122
|
||||
2024/01/02-23:25:25.136045 7f99f3fff6c0 Delete type=3 #120
|
||||
2024/01/02-23:25:25.136118 7f99f3fff6c0 Delete type=0 #122
|
||||
2024/01/02-23:34:00.354227 7f9772fef6c0 Level-0 table #127: started
|
||||
2024/01/02-23:34:00.354258 7f9772fef6c0 Level-0 table #127: 0 bytes OK
|
||||
2024/01/02-23:34:00.361101 7f9772fef6c0 Delete type=0 #125
|
||||
2024/01/02-23:34:00.361255 7f9772fef6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.361282 7f9772fef6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.555704 7f14756006c0 Recovering log #302
|
||||
2024/08/12-22:22:36.566632 7f14756006c0 Delete type=3 #300
|
||||
2024/08/12-22:22:36.566685 7f14756006c0 Delete type=0 #302
|
||||
2024/08/12-22:24:19.273389 7f146fe006c0 Level-0 table #307: started
|
||||
2024/08/12-22:24:19.273414 7f146fe006c0 Level-0 table #307: 0 bytes OK
|
||||
2024/08/12-22:24:19.279499 7f146fe006c0 Delete type=0 #305
|
||||
2024/08/12-22:24:19.300478 7f146fe006c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.300735 7f146fe006c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/13-08:52:21.579735 7f61367fc6c0 Recovering log #118
|
||||
2023/12/13-08:52:21.589985 7f61367fc6c0 Delete type=3 #116
|
||||
2023/12/13-08:52:21.590126 7f61367fc6c0 Delete type=0 #118
|
||||
2023/12/13-08:53:48.316033 7f6134ff96c0 Level-0 table #123: started
|
||||
2023/12/13-08:53:48.316078 7f6134ff96c0 Level-0 table #123: 0 bytes OK
|
||||
2023/12/13-08:53:48.322725 7f6134ff96c0 Delete type=0 #121
|
||||
2023/12/13-08:53:48.329736 7f6134ff96c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.340858 7f6134ff96c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.689555 7f14756006c0 Recovering log #298
|
||||
2024/08/12-14:24:59.700195 7f14756006c0 Delete type=3 #296
|
||||
2024/08/12-14:24:59.700248 7f14756006c0 Delete type=0 #298
|
||||
2024/08/12-15:14:31.853236 7f146fe006c0 Level-0 table #303: started
|
||||
2024/08/12-15:14:31.853280 7f146fe006c0 Level-0 table #303: 0 bytes OK
|
||||
2024/08/12-15:14:31.860223 7f146fe006c0 Delete type=0 #301
|
||||
2024/08/12-15:14:31.867937 7f146fe006c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.867974 7f146fe006c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/equipment/MANIFEST-000304
Normal file
BIN
packs/equipment/MANIFEST-000304
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/fightoptions/000293.ldb
Normal file
BIN
packs/fightoptions/000293.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000122
|
||||
MANIFEST-000302
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/01/02-23:25:25.256452 7f9a097fa6c0 Recovering log #120
|
||||
2024/01/02-23:25:25.267071 7f9a097fa6c0 Delete type=3 #118
|
||||
2024/01/02-23:25:25.267152 7f9a097fa6c0 Delete type=0 #120
|
||||
2024/01/02-23:34:00.417785 7f9772fef6c0 Level-0 table #125: started
|
||||
2024/01/02-23:34:00.417832 7f9772fef6c0 Level-0 table #125: 0 bytes OK
|
||||
2024/01/02-23:34:00.423865 7f9772fef6c0 Delete type=0 #123
|
||||
2024/01/02-23:34:00.445018 7f9772fef6c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/01/02-23:34:00.445059 7f9772fef6c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:22:36.669427 7f14756006c0 Recovering log #300
|
||||
2024/08/12-22:22:36.679352 7f14756006c0 Delete type=3 #298
|
||||
2024/08/12-22:22:36.679408 7f14756006c0 Delete type=0 #300
|
||||
2024/08/12-22:24:19.343213 7f146fe006c0 Level-0 table #305: started
|
||||
2024/08/12-22:24:19.343237 7f146fe006c0 Level-0 table #305: 0 bytes OK
|
||||
2024/08/12-22:24:19.350586 7f146fe006c0 Delete type=0 #303
|
||||
2024/08/12-22:24:19.357356 7f146fe006c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-22:24:19.357462 7f146fe006c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/13-08:52:21.820052 7f6135ffb6c0 Recovering log #116
|
||||
2023/12/13-08:52:21.830555 7f6135ffb6c0 Delete type=3 #114
|
||||
2023/12/13-08:52:21.830633 7f6135ffb6c0 Delete type=0 #116
|
||||
2023/12/13-08:53:48.432934 7f6134ff96c0 Level-0 table #121: started
|
||||
2023/12/13-08:53:48.432985 7f6134ff96c0 Level-0 table #121: 0 bytes OK
|
||||
2023/12/13-08:53:48.439201 7f6134ff96c0 Delete type=0 #119
|
||||
2023/12/13-08:53:48.450529 7f6134ff96c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2023/12/13-08:53:48.450589 7f6134ff96c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-14:24:59.805392 7f14756006c0 Recovering log #296
|
||||
2024/08/12-14:24:59.815257 7f14756006c0 Delete type=3 #294
|
||||
2024/08/12-14:24:59.815311 7f14756006c0 Delete type=0 #296
|
||||
2024/08/12-15:14:31.908687 7f146fe006c0 Level-0 table #301: started
|
||||
2024/08/12-15:14:31.908731 7f146fe006c0 Level-0 table #301: 0 bytes OK
|
||||
2024/08/12-15:14:31.915933 7f146fe006c0 Delete type=0 #299
|
||||
2024/08/12-15:14:31.922743 7f146fe006c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/08/12-15:14:31.922808 7f146fe006c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/fightoptions/MANIFEST-000302
Normal file
BIN
packs/fightoptions/MANIFEST-000302
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/flaws/000294.ldb
Normal file
BIN
packs/flaws/000294.ldb
Normal file
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