Compare commits
8 Commits
5c4c6d73ee
...
bol-v12.0.
Author | SHA1 | Date | |
---|---|---|---|
e6bdc427f2 | |||
321052fd33 | |||
165a18e897 | |||
7ed9265a26 | |||
ae43c7c920 | |||
20ab9a17a4 | |||
5de40d4998 | |||
c7c26c0033 |
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;
|
||||
|
119
lang/en.json
119
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",
|
||||
@ -164,11 +175,52 @@
|
||||
"BOL.ui.armorAgiMalus": "Armor+Shield Modifier (Agi)",
|
||||
"BOL.ui.armorInitMalus": "Armor Modifier (Init)",
|
||||
"BOL.ui.attackValue": "Attack Value",
|
||||
"BOL.ui.attackModifier": "Attack Modifier",
|
||||
"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.ui.newEquipment": "New equipment",
|
||||
"BOL.ui.newNaturalWeapon": "Natural weapon",
|
||||
"BOL.ui.newNaturalProtection": "Natural protection",
|
||||
"BOL.ui.createNaturalWeapon": "Create a natural weapon",
|
||||
"BOL.ui.createNaturalProtection": "Create a natural protection",
|
||||
|
||||
"BOL.featureCategory.origins": "Origins",
|
||||
"BOL.featureCategory.races": "Races",
|
||||
"BOL.featureCategory.careers": "Careers",
|
||||
@ -185,6 +237,11 @@
|
||||
"BOL.featureSubtypes.language": "Language",
|
||||
"BOL.featureSubtypes.gods": "Faith & Gods",
|
||||
"BOL.featureSubtypes.fightOption": "Combat Option",
|
||||
"BOL.featureSubtypes.effect": "Effect",
|
||||
"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",
|
||||
@ -209,6 +266,7 @@
|
||||
"BOL.itemCategory.other": "Other",
|
||||
"BOL.itemCategory.capacity" : "Capacity",
|
||||
"BOL.itemCategory.alchemy": "Alchemy",
|
||||
"BOL.itemCategory.vehicleweapon": "Vehicle weapon",
|
||||
|
||||
"BOL.combatCategory.protections": "Protections",
|
||||
"BOL.combatCategory.shields": "Shields",
|
||||
@ -413,6 +471,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 +489,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)",
|
||||
|
31
lang/fr.json
31
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 ?",
|
||||
@ -196,12 +203,15 @@
|
||||
"BOL.ui.armorAgiMalus": "Malus d'Armure+Bouclier (Agi)",
|
||||
"BOL.ui.armorInitMalus": "Malus d'Armure (Init)",
|
||||
"BOL.ui.attackValue": "Valeur d'attaque",
|
||||
"BOL.ui.attackModifier": "Attaque",
|
||||
"BOL.ui.vehicleWeapons": "Armes de véhicules",
|
||||
"BOL.ui.hullDamage": "D.coque",
|
||||
"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",
|
||||
@ -225,7 +235,12 @@
|
||||
"BOL.ui.warninitiative": "Votre initiative n'est pas disponible. Effectuez un jet d'Initiative pour ce combat.",
|
||||
"BOL.ui.isspecial": "Spéciale ?",
|
||||
"BOL.ui.createEquipment": "Créer un Equipement",
|
||||
|
||||
"BOL.ui.newEquipment": "Nouvel équipement",
|
||||
"BOL.ui.newNaturalWeapon": "Arme naturelle",
|
||||
"BOL.ui.newNaturalProtection": "Protection naturelle",
|
||||
"BOL.ui.createNaturalWeapon": "Créer une arme naturelle",
|
||||
"BOL.ui.createNaturalProtection": "Créer une protection naturelle",
|
||||
|
||||
"BOL.featureCategory.origins": "Origines",
|
||||
"BOL.featureCategory.races": "Races",
|
||||
"BOL.featureCategory.careers": "Carrières",
|
||||
@ -251,6 +266,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 +597,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 +607,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 +629,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(); });
|
||||
@ -47,10 +47,19 @@ export class BoLActorSheet extends ActorSheet {
|
||||
// Equip/Unequip item
|
||||
html.find('.item-equip').click(this._onToggleEquip.bind(this));
|
||||
|
||||
html.find('.create_item').click(ev => {
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvel Equipement", type: "item" }], { renderSheet: true });
|
||||
html.find('.create-item').click(ev => {
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: game.i18n.localize("BOL.ui.newEquipment"), type: "item" }], { renderSheet: true });
|
||||
});
|
||||
|
||||
html.find('.create-natural-weapon').click(ev => {
|
||||
let system = foundry.utils.duplicate(game.bol.config.defaultNaturalWeapon)
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: game.i18n.localize("BOL.ui.newNaturalWeapon"), type: "item", system }], { renderSheet: true });
|
||||
});
|
||||
html.find('.create-natural-protection').click(ev => {
|
||||
let system = foundry.utils.duplicate(game.bol.config.defaultNaturalProtection)
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: game.i18n.localize("BOL.ui.newNaturalProtection"), type: "item", system }], { renderSheet: true });
|
||||
});
|
||||
|
||||
html.find(".toggle-fight-option").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
this.actor.toggleFightOption(li.data("itemId"))
|
||||
@ -122,8 +131,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 +156,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 +165,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 +197,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 +259,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;
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
super.prepareData()
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _preCreate(data, options, user) {
|
||||
@ -38,10 +39,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 +52,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 +67,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 +78,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 +89,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 +143,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 +197,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 +239,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 +257,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 +278,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 +317,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 +412,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 +498,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 +549,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 +582,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 +596,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 +604,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 +612,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 +643,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 +789,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 +826,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 +850,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 +878,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 +900,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 +999,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 +1009,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 +1021,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,9 +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 { BoLCommands } from "./system/bol-commands.js"
|
||||
import { BoLRoll } from "./controllers/bol-rolls.js"
|
||||
|
||||
/* -------------------------------------------- */
|
||||
Hooks.once('init', async function () {
|
||||
@ -25,10 +24,12 @@ Hooks.once('init', async function () {
|
||||
BoLActor,
|
||||
BoLItem,
|
||||
BoLHotbar,
|
||||
BoLRoll,
|
||||
BoLUtility,
|
||||
macros: Macros,
|
||||
config: BOL
|
||||
};
|
||||
|
||||
|
||||
// Game socket
|
||||
game.socket.on("system.bol", sockmsg => {
|
||||
BoLUtility.onSocketMessage(sockmsg);
|
||||
@ -62,8 +63,7 @@ Hooks.once('init', async function () {
|
||||
BoLTokenHud.init()
|
||||
BoLHotbar.init()
|
||||
BoLCommands.init()
|
||||
BoLAdventureGenerator.init()
|
||||
|
||||
|
||||
// Preload Handlebars Templates
|
||||
await preloadHandlebarsTemplates();
|
||||
|
||||
@ -75,31 +75,6 @@ Hooks.once('init', async function () {
|
||||
|
||||
});
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Register world usage statistics
|
||||
function registerUsageCount( registerKey ) {
|
||||
if ( game.user.isGM ) {
|
||||
game.settings.register(registerKey, "world-key", {
|
||||
name: "Unique world key",
|
||||
scope: "world",
|
||||
config: false,
|
||||
default: "",
|
||||
type: String
|
||||
});
|
||||
|
||||
let worldKey = game.settings.get(registerKey, "world-key")
|
||||
if ( worldKey == undefined || worldKey == "" ) {
|
||||
worldKey = randomID(32)
|
||||
game.settings.set(registerKey, "world-key", worldKey )
|
||||
}
|
||||
// Simple API counter
|
||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
||||
//$.ajaxSetup({
|
||||
//headers: { 'Access-Control-Allow-Origin': '*' }
|
||||
//})
|
||||
$.ajax(regURL)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
function welcomeMessage() {
|
||||
@ -108,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,10 +60,10 @@ export class BoLRoll {
|
||||
armorInitMalus: actor.getArmorInitMalus(),
|
||||
horoscopeBonusList: actor.getHoroscopesBonus(),
|
||||
horoscopeMalusList: actor.getHoroscopesMalus(),
|
||||
config: game.bol.config,
|
||||
adv: "0",
|
||||
mod: 0,
|
||||
modRanged: 0,
|
||||
aptValue: 0,
|
||||
bolEffects: actor.boleffects,
|
||||
horoscopeGroupList: this.buildHoroscopeGroupList()
|
||||
}
|
||||
@ -78,7 +76,7 @@ export class BoLRoll {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static attributeCheck(actor, key, event, combatData) {
|
||||
static attributeCheck(actor, key="vigor", event=undefined, combatData=undefined) {
|
||||
|
||||
let attribute = eval(`actor.system.attributes.${key}`)
|
||||
|
||||
@ -91,7 +89,7 @@ export class BoLRoll {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static aptitudeCheck(actor, key, event, combatData) {
|
||||
static aptitudeCheck(actor, key="init", event=undefined, combatData=undefined) {
|
||||
|
||||
let aptitude = eval(`actor.system.aptitudes.${key}`)
|
||||
let attrKey = this.getDefaultAttribute(key)
|
||||
@ -185,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)
|
||||
}
|
||||
|
||||
@ -197,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 !")
|
||||
@ -271,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)
|
||||
}
|
||||
|
||||
@ -404,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()
|
||||
@ -412,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()
|
||||
@ -455,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
|
||||
@ -465,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
|
||||
@ -533,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
|
||||
@ -619,29 +617,40 @@ 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)
|
||||
const activeDice = r.terms[0].results.filter(r => r.active)
|
||||
const diceTotal = activeDice.map(r => r.result).reduce((a, b) => a + b)
|
||||
this.rollData.roll = r
|
||||
this.rollData.isSuccess = (r.total >= diceData.successValue)
|
||||
this.rollData.isCritical = (diceTotal >= diceData.criticalSuccessValue)
|
||||
this.rollData.isRealCritical = (diceTotal >= diceData.criticalSuccessValue)
|
||||
this.rollData.isHeroic = (diceTotal >= diceData.criticalSuccessValue)
|
||||
this.rollData.isLegendary = false
|
||||
this.rollData.isFumble = (diceTotal <= diceData.criticalFailureValue)
|
||||
this.rollData.isFailure = !this.rollData.isSuccess
|
||||
if ( this.rollData.isFumble ) {
|
||||
this.rollData.isSuccess = false
|
||||
this.rollData.isCritical = false
|
||||
this.rollData.isRealCritical = false
|
||||
this.rollData.isHeroic = false
|
||||
this.rollData.isFailure = true
|
||||
} else {
|
||||
this.rollData.isCritical = (diceTotal >= diceData.criticalSuccessValue)
|
||||
if ( this.rollData.isCritical) {
|
||||
this.rollData.isSuccess = true
|
||||
} else {
|
||||
this.rollData.isSuccess = (r.total >= diceData.successValue)
|
||||
}
|
||||
this.rollData.isRealCritical = (diceTotal >= diceData.criticalSuccessValue)
|
||||
this.rollData.isHeroic = (diceTotal >= diceData.criticalSuccessValue)
|
||||
this.rollData.isFailure = !this.rollData.isSuccess
|
||||
}
|
||||
this.rollData.isLegendary = false
|
||||
|
||||
let actor = BoLUtility.getActorFromRollData(this.rollData)
|
||||
if (this.rollData.reroll == undefined) {
|
||||
@ -691,7 +700,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)
|
||||
})
|
||||
}
|
||||
@ -744,7 +753,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)
|
||||
})
|
||||
@ -779,7 +788,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
|
||||
|
@ -10,14 +10,14 @@ System.debugMode = true;
|
||||
export const BOL = {};
|
||||
|
||||
BOL.damageValues = {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"d3" : "d3",
|
||||
"d6M" : "d6M (Malus)",
|
||||
"d6" : "d6",
|
||||
"d6B" : "d6B (Bonus)",
|
||||
"d6BB" : "d6B + dé bonus",
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"d3": "d3",
|
||||
"d6M": "d6M (Malus)",
|
||||
"d6": "d6",
|
||||
"d6B": "d6B (Bonus)",
|
||||
"d6BB": "d6B + dé bonus",
|
||||
}
|
||||
|
||||
BOL.damageMultiplier = {
|
||||
@ -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",
|
||||
@ -46,125 +55,125 @@ BOL.alchemyType = {
|
||||
}
|
||||
|
||||
BOL.equipmentSlots = {
|
||||
"none" : "BOL.equipmentSlots.none",
|
||||
"head" : "BOL.equipmentSlots.head",
|
||||
"neck" : "BOL.equipmentSlots.neck",
|
||||
"shoulders" : "BOL.equipmentSlots.shoulders",
|
||||
"body" : "BOL.equipmentSlots.body",
|
||||
"rhand" : "BOL.equipmentSlots.rhand",
|
||||
"lhand" : "BOL.equipmentSlots.lhand",
|
||||
"2hands" : "BOL.equipmentSlots.2hands",
|
||||
"rarm" : "BOL.equipmentSlots.rarm",
|
||||
"larm" : "BOL.equipmentSlots.larm",
|
||||
"chest" : "BOL.equipmentSlots.chest",
|
||||
"belt" : "BOL.equipmentSlots.belt",
|
||||
"legs" : "BOL.equipmentSlots.legs",
|
||||
"feet" : "BOL.equipmentSlots.feet",
|
||||
"finder" : "BOL.equipmentSlots.finder",
|
||||
"ear" : "BOL.equipmentSlots.ear"
|
||||
"none": "BOL.equipmentSlots.none",
|
||||
"head": "BOL.equipmentSlots.head",
|
||||
"neck": "BOL.equipmentSlots.neck",
|
||||
"shoulders": "BOL.equipmentSlots.shoulders",
|
||||
"body": "BOL.equipmentSlots.body",
|
||||
"rhand": "BOL.equipmentSlots.rhand",
|
||||
"lhand": "BOL.equipmentSlots.lhand",
|
||||
"2hands": "BOL.equipmentSlots.2hands",
|
||||
"rarm": "BOL.equipmentSlots.rarm",
|
||||
"larm": "BOL.equipmentSlots.larm",
|
||||
"chest": "BOL.equipmentSlots.chest",
|
||||
"belt": "BOL.equipmentSlots.belt",
|
||||
"legs": "BOL.equipmentSlots.legs",
|
||||
"feet": "BOL.equipmentSlots.feet",
|
||||
"finder": "BOL.equipmentSlots.finder",
|
||||
"ear": "BOL.equipmentSlots.ear"
|
||||
}
|
||||
|
||||
BOL.armorQualities = {
|
||||
"none" : "BOL.armorQuality.none",
|
||||
"light" : "BOL.armorQuality.light",
|
||||
"lightQ" : "BOL.armorQuality.lightQ",
|
||||
"lightSup" : "BOL.armorQuality.lightSup",
|
||||
"lightLeg" : "BOL.armorQuality.lightLeg",
|
||||
"medium" : "BOL.armorQuality.medium",
|
||||
"mediumQ" : "BOL.armorQuality.mediumQ",
|
||||
"mediumSup" : "BOL.armorQuality.mediumSup",
|
||||
"mediumLeg" : "BOL.armorQuality.mediumLeg",
|
||||
"heavy" : "BOL.armorQuality.heavy",
|
||||
"heavyQ" : "BOL.armorQuality.heavyQ",
|
||||
"heavySup" : "BOL.armorQuality.heavySup",
|
||||
"heavyLeg" : "BOL.armorQuality.heavyLeg"
|
||||
"none": "BOL.armorQuality.none",
|
||||
"light": "BOL.armorQuality.light",
|
||||
"lightQ": "BOL.armorQuality.lightQ",
|
||||
"lightSup": "BOL.armorQuality.lightSup",
|
||||
"lightLeg": "BOL.armorQuality.lightLeg",
|
||||
"medium": "BOL.armorQuality.medium",
|
||||
"mediumQ": "BOL.armorQuality.mediumQ",
|
||||
"mediumSup": "BOL.armorQuality.mediumSup",
|
||||
"mediumLeg": "BOL.armorQuality.mediumLeg",
|
||||
"heavy": "BOL.armorQuality.heavy",
|
||||
"heavyQ": "BOL.armorQuality.heavyQ",
|
||||
"heavySup": "BOL.armorQuality.heavySup",
|
||||
"heavyLeg": "BOL.armorQuality.heavyLeg"
|
||||
}
|
||||
|
||||
BOL.soakFormulas = {
|
||||
"none" : "0",
|
||||
"light" : "1d6-3",
|
||||
"lightQ" : "1d6r1-3",
|
||||
"lightSup" : "1d6-2",
|
||||
"lightLeg" : "2d6kh1-2",
|
||||
"medium" : "1d6-2",
|
||||
"mediumQ" : "1d6r1-2",
|
||||
"mediumSup" : "1d6-1",
|
||||
"mediumLeg" : "2d6kh1-1",
|
||||
"heavy" : "1d6-1",
|
||||
"heavyQ" : "1d6r1-1",
|
||||
"heavySup" : "1d6",
|
||||
"heavyLeg" : "2d6kh1"
|
||||
"none": "0",
|
||||
"light": "1d6-3",
|
||||
"lightQ": "1d6r1-3",
|
||||
"lightSup": "1d6-2",
|
||||
"lightLeg": "2d6kh1-2",
|
||||
"medium": "1d6-2",
|
||||
"mediumQ": "1d6r1-2",
|
||||
"mediumSup": "1d6-1",
|
||||
"mediumLeg": "2d6kh1-1",
|
||||
"heavy": "1d6-1",
|
||||
"heavyQ": "1d6r1-1",
|
||||
"heavySup": "1d6",
|
||||
"heavyLeg": "2d6kh1"
|
||||
}
|
||||
|
||||
BOL.attackAttributes = {
|
||||
"vigor" : "BOL.attributes.vigor",
|
||||
"agility" : "BOL.attributes.agility",
|
||||
"mind" : "BOL.attributes.mind",
|
||||
"appeal" : "BOL.attributes.appeal"
|
||||
"vigor": "BOL.attributes.vigor",
|
||||
"agility": "BOL.attributes.agility",
|
||||
"mind": "BOL.attributes.mind",
|
||||
"appeal": "BOL.attributes.appeal"
|
||||
}
|
||||
|
||||
BOL.attackAptitudes = {
|
||||
"melee" : "BOL.aptitudes.melee",
|
||||
"ranged" : "BOL.aptitudes.ranged"
|
||||
"melee": "BOL.aptitudes.melee",
|
||||
"ranged": "BOL.aptitudes.ranged"
|
||||
}
|
||||
|
||||
BOL.aptitudes = {
|
||||
"melee" : "BOL.aptitudes.melee",
|
||||
"ranged" : "BOL.aptitudes.ranged",
|
||||
"init" : "BOL.aptitudes.init",
|
||||
"def" : "BOL.aptitudes.def"
|
||||
"melee": "BOL.aptitudes.melee",
|
||||
"ranged": "BOL.aptitudes.ranged",
|
||||
"init": "BOL.aptitudes.init",
|
||||
"def": "BOL.aptitudes.def"
|
||||
}
|
||||
|
||||
BOL.resources = {
|
||||
"hp" : "BOL.resources.hp",
|
||||
"hero" : "BOL.resources.hero",
|
||||
"faith" : "BOL.resources.faith",
|
||||
"power" : "BOL.resources.power",
|
||||
"alchemypoints" : "BOL.resources.alchemypoints"
|
||||
"hp": "BOL.resources.hp",
|
||||
"hero": "BOL.resources.hero",
|
||||
"faith": "BOL.resources.faith",
|
||||
"power": "BOL.resources.power",
|
||||
"alchemypoints": "BOL.resources.alchemypoints"
|
||||
}
|
||||
|
||||
BOL.weaponSizes = {
|
||||
"unarmed" : "BOL.weaponSize.unarmed",
|
||||
"improvised" : "BOL.weaponSize.improvised",
|
||||
"light" : "BOL.weaponSize.light",
|
||||
"medium" : "BOL.weaponSize.medium",
|
||||
"heavy" : "BOL.weaponSize.heavy"
|
||||
"unarmed": "BOL.weaponSize.unarmed",
|
||||
"improvised": "BOL.weaponSize.improvised",
|
||||
"light": "BOL.weaponSize.light",
|
||||
"medium": "BOL.weaponSize.medium",
|
||||
"heavy": "BOL.weaponSize.heavy"
|
||||
}
|
||||
|
||||
BOL.damageAttributes = {
|
||||
"zero" : "0",
|
||||
"vigor" : "BOL.attributes.vigor",
|
||||
"half-vigor" : "BOL.attributes.halfvigor"
|
||||
"zero": "0",
|
||||
"vigor": "BOL.attributes.vigor",
|
||||
"half-vigor": "BOL.attributes.halfvigor"
|
||||
}
|
||||
|
||||
BOL.itemCategories = {
|
||||
"equipment" : "BOL.itemCategory.equipment",
|
||||
"capacity" : "BOL.itemCategory.capacity",
|
||||
"spell" : "BOL.itemCategory.spell",
|
||||
"alchemy" : "BOL.itemCategory.alchemy",
|
||||
"vehicle" : "BOL.itemCategory.vehicle",
|
||||
"vehicleweapon": "BOL.itemCategory.vehicleweapon",
|
||||
"other" : "BOL.itemCategory.other"
|
||||
"equipment": "BOL.itemCategory.equipment",
|
||||
"capacity": "BOL.itemCategory.capacity",
|
||||
"spell": "BOL.itemCategory.spell",
|
||||
"alchemy": "BOL.itemCategory.alchemy",
|
||||
"vehicle": "BOL.itemCategory.vehicle",
|
||||
"vehicleweapon": "BOL.itemCategory.vehicleweapon",
|
||||
"other": "BOL.itemCategory.other"
|
||||
}
|
||||
|
||||
BOL.itemSubtypes = {
|
||||
"armor" : "BOL.equipmentCategory.armor",
|
||||
"weapon" : "BOL.equipmentCategory.weapon",
|
||||
"shield" : "BOL.equipmentCategory.shield",
|
||||
"helm" : "BOL.equipmentCategory.helm",
|
||||
"jewel" : "BOL.equipmentCategory.jewel",
|
||||
"scroll" : "BOL.equipmentCategory.scroll",
|
||||
"container" : "BOL.equipmentCategory.container",
|
||||
"ammunition" : "BOL.equipmentCategory.ammunition",
|
||||
"currency" : "BOL.equipmentCategory.currency",
|
||||
"other" : "BOL.equipmentCategory.other"
|
||||
"armor": "BOL.equipmentCategory.armor",
|
||||
"weapon": "BOL.equipmentCategory.weapon",
|
||||
"shield": "BOL.equipmentCategory.shield",
|
||||
"helm": "BOL.equipmentCategory.helm",
|
||||
"jewel": "BOL.equipmentCategory.jewel",
|
||||
"scroll": "BOL.equipmentCategory.scroll",
|
||||
"container": "BOL.equipmentCategory.container",
|
||||
"ammunition": "BOL.equipmentCategory.ammunition",
|
||||
"currency": "BOL.equipmentCategory.currency",
|
||||
"other": "BOL.equipmentCategory.other"
|
||||
}
|
||||
|
||||
BOL.vehicleSubtypes = {
|
||||
"mount" : "BOL.vehicleCategory.mount",
|
||||
"flying" : "BOL.vehicleCategory.flying",
|
||||
"boat" : "BOL.vehicleCategory.boat",
|
||||
"other" : "BOL.vehicleCategory.other"
|
||||
"mount": "BOL.vehicleCategory.mount",
|
||||
"flying": "BOL.vehicleCategory.flying",
|
||||
"boat": "BOL.vehicleCategory.boat",
|
||||
"other": "BOL.vehicleCategory.other"
|
||||
}
|
||||
|
||||
// BOL.equipmentCategories = {
|
||||
@ -180,97 +189,153 @@ 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",
|
||||
"helm" : "BOL.protectionCategory.helm",
|
||||
"other" : "BOL.protectionCategory.other"
|
||||
"armor": "BOL.protectionCategory.armor",
|
||||
"shield": "BOL.protectionCategory.shield",
|
||||
"helm": "BOL.protectionCategory.helm",
|
||||
"other": "BOL.protectionCategory.other"
|
||||
}
|
||||
|
||||
BOL.weaponCategories = {
|
||||
"melee" : "BOL.weaponCategory.melee",
|
||||
"ranged" : "BOL.weaponCategory.ranged",
|
||||
"other" : "BOL.weaponCategory.other"
|
||||
"melee": "BOL.weaponCategory.melee",
|
||||
"ranged": "BOL.weaponCategory.ranged",
|
||||
"other": "BOL.weaponCategory.other"
|
||||
}
|
||||
|
||||
BOL.itemProperties1 = {
|
||||
"equipable" : "BOL.itemProperty.equipable",
|
||||
"protection" : "BOL.itemProperty.protection",
|
||||
"magical" : "BOL.itemProperty.magical",
|
||||
"worn" : "BOL.itemProperty.worn",
|
||||
"equipable": "BOL.itemProperty.equipable",
|
||||
"protection": "BOL.itemProperty.protection",
|
||||
"magical": "BOL.itemProperty.magical",
|
||||
"worn": "BOL.itemProperty.worn",
|
||||
}
|
||||
|
||||
BOL.itemProperties2 = {
|
||||
"equipable" : "BOL.itemProperty.equipable",
|
||||
"protection" : "BOL.itemProperty.protection",
|
||||
"blocking" : "BOL.itemProperty.blocking",
|
||||
"magical" : "BOL.itemProperty.magical",
|
||||
"concealable" : "BOL.itemProperty.concealable",
|
||||
"2H" : "BOL.itemProperty.2H",
|
||||
"helm" : "BOL.itemProperty.helm",
|
||||
"improvised" : "BOL.itemProperty.improvised",
|
||||
"shield" : "BOL.itemProperty.shield",
|
||||
"melee" : "BOL.itemProperty.melee",
|
||||
"throwable" : "BOL.itemProperty.throwable",
|
||||
"ignoreshield" : "BOL.itemProperty.ignoreshield",
|
||||
"bashing" : "BOL.itemProperty.bashing",
|
||||
"stackable" : "BOL.itemProperty.stackable",
|
||||
"ranged" : "BOL.itemProperty.ranged",
|
||||
"weapon" : "BOL.itemProperty.weapon",
|
||||
"reloadable" : "BOL.itemProperty.reloadable",
|
||||
"worn" : "BOL.itemProperty.worn",
|
||||
"spell" : "BOL.itemProperty.spell",
|
||||
"armor" : "BOL.itemProperty.armor",
|
||||
"consumable" : "BOL.itemProperty.consumable",
|
||||
"bow" : "BOL.itemProperty.bow",
|
||||
"crossbow" : "BOL.itemProperty.crossbow",
|
||||
"throwing" : "BOL.itemProperty.throwing",
|
||||
"activable" : "BOL.itemProperty.activable",
|
||||
"powder" : "BOL.itemProperty.powder",
|
||||
"damage" : "BOL.itemProperty.damage",
|
||||
"difficulty": "BOL.itemProperty.difficulty"
|
||||
"equipable": "BOL.itemProperty.equipable",
|
||||
"protection": "BOL.itemProperty.protection",
|
||||
"blocking": "BOL.itemProperty.blocking",
|
||||
"magical": "BOL.itemProperty.magical",
|
||||
"concealable": "BOL.itemProperty.concealable",
|
||||
"2H": "BOL.itemProperty.2H",
|
||||
"helm": "BOL.itemProperty.helm",
|
||||
"improvised": "BOL.itemProperty.improvised",
|
||||
"shield": "BOL.itemProperty.shield",
|
||||
"melee": "BOL.itemProperty.melee",
|
||||
"throwable": "BOL.itemProperty.throwable",
|
||||
"ignoreshield": "BOL.itemProperty.ignoreshield",
|
||||
"bashing": "BOL.itemProperty.bashing",
|
||||
"stackable": "BOL.itemProperty.stackable",
|
||||
"ranged": "BOL.itemProperty.ranged",
|
||||
"weapon": "BOL.itemProperty.weapon",
|
||||
"reloadable": "BOL.itemProperty.reloadable",
|
||||
"worn": "BOL.itemProperty.worn",
|
||||
"spell": "BOL.itemProperty.spell",
|
||||
"armor": "BOL.itemProperty.armor",
|
||||
"consumable": "BOL.itemProperty.consumable",
|
||||
"bow": "BOL.itemProperty.bow",
|
||||
"crossbow": "BOL.itemProperty.crossbow",
|
||||
"throwing": "BOL.itemProperty.throwing",
|
||||
"activable": "BOL.itemProperty.activable",
|
||||
"powder": "BOL.itemProperty.powder",
|
||||
"damage": "BOL.itemProperty.damage",
|
||||
"difficulty": "BOL.itemProperty.difficulty"
|
||||
}
|
||||
|
||||
BOL.itemStats = {
|
||||
"quantity" : "BOL.itemStat.quantity",
|
||||
"weight" : "BOL.itemStat.weight",
|
||||
"price" : "BOL.itemStat.price",
|
||||
"range" : "BOL.itemStat.range",
|
||||
"damage" : "BOL.itemStat.damage",
|
||||
"reload" : "BOL.itemStat.reload",
|
||||
"soak" : "BOL.itemStat.soak",
|
||||
"blocking" : "BOL.itemStat.blocking",
|
||||
"modifiers" : "BOL.itemStat.modifiers"
|
||||
"quantity": "BOL.itemStat.quantity",
|
||||
"weight": "BOL.itemStat.weight",
|
||||
"price": "BOL.itemStat.price",
|
||||
"range": "BOL.itemStat.range",
|
||||
"damage": "BOL.itemStat.damage",
|
||||
"reload": "BOL.itemStat.reload",
|
||||
"soak": "BOL.itemStat.soak",
|
||||
"blocking": "BOL.itemStat.blocking",
|
||||
"modifiers": "BOL.itemStat.modifiers"
|
||||
}
|
||||
|
||||
BOL.itemModifiers = {
|
||||
"init" : "BOL.itemModifiers.init",
|
||||
"social" : "BOL.itemModifiers.social",
|
||||
"agility" : "BOL.itemModifiers.agility",
|
||||
"powercost" : "BOL.itemModifiers.powercost"
|
||||
"init": "BOL.itemModifiers.init",
|
||||
"social": "BOL.itemModifiers.social",
|
||||
"agility": "BOL.itemModifiers.agility",
|
||||
"powercost": "BOL.itemModifiers.powercost"
|
||||
}
|
||||
|
||||
BOL.itemBlocking = {
|
||||
"malus" : "BOL.itemBlocking.malus",
|
||||
"nbAttacksPerRound" : "BOL.itemBlocking.nbAttacksPerRound"
|
||||
"malus": "BOL.itemBlocking.malus",
|
||||
"nbAttacksPerRound": "BOL.itemBlocking.nbAttacksPerRound"
|
||||
}
|
||||
|
||||
BOL.itemSoak = {
|
||||
"formula" : "BOL.itemSoak.formula",
|
||||
"value" : "BOL.itemSoak.value"
|
||||
"formula": "BOL.itemSoak.formula",
|
||||
"value": "BOL.itemSoak.value"
|
||||
}
|
||||
|
||||
BOL.featureSubtypes = {
|
||||
"origin" : "BOL.featureSubtypes.origin",
|
||||
"race" : "BOL.featureSubtypes.race",
|
||||
"career" : "BOL.featureSubtypes.career",
|
||||
"boon" : "BOL.featureSubtypes.boon",
|
||||
"flaw" : "BOL.featureSubtypes.flaw",
|
||||
"language" : "BOL.featureSubtypes.language",
|
||||
"godsfaith" : "BOL.featureSubtypes.gods",
|
||||
"fightoption" : "BOL.featureSubtypes.fightOption",
|
||||
"boleffect": "BOL.featureSubtypes.effect",
|
||||
"horoscope": "BOL.featureSubtypes.horoscope",
|
||||
"origin": "BOL.featureSubtypes.origin",
|
||||
"race": "BOL.featureSubtypes.race",
|
||||
"career": "BOL.featureSubtypes.career",
|
||||
"boon": "BOL.featureSubtypes.boon",
|
||||
"flaw": "BOL.featureSubtypes.flaw",
|
||||
"language": "BOL.featureSubtypes.language",
|
||||
"godsfaith": "BOL.featureSubtypes.gods",
|
||||
"fightoption": "BOL.featureSubtypes.fightOption",
|
||||
"boleffect": "BOL.featureSubtypes.effect",
|
||||
"horoscope": "BOL.featureSubtypes.horoscope",
|
||||
"xplog": "BOL.featureSubtypes.xplog",
|
||||
}
|
||||
|
||||
BOL.fightOptionTypes = {
|
||||
@ -285,17 +350,17 @@ BOL.fightOptionTypes = {
|
||||
}
|
||||
|
||||
BOL.itemIcons = {
|
||||
"item": "icons/containers/chest/chest-worn-oak-tan.webp",
|
||||
"capacity": "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"
|
||||
"item": "icons/containers/chest/chest-worn-oak-tan.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"
|
||||
}
|
||||
|
||||
BOL.actorIcons = {
|
||||
"npc": "icons/environment/people/commoner.webp",
|
||||
"encounter": "icons/svg/mystery-man-black.svg",
|
||||
"loot": "icons/containers/bags/sack-simple-leather-brown.webp"
|
||||
"npc": "icons/environment/people/commoner.webp",
|
||||
"encounter": "icons/svg/mystery-man-black.svg",
|
||||
"loot": "icons/containers/bags/sack-simple-leather-brown.webp"
|
||||
}
|
||||
|
||||
BOL.bougetteState = {
|
||||
@ -314,18 +379,18 @@ BOL.bougetteDice = {
|
||||
}
|
||||
|
||||
BOL.creatureSize = {
|
||||
"tiny": {order: 1, label: "BOL.size.tiny"},
|
||||
"verysmall": {order: 2, label: "BOL.size.verysmall"},
|
||||
"small": {order: 3, label: "BOL.size.small"},
|
||||
"medium": {order: 4, label: "BOL.size.medium"},
|
||||
"large": {order: 5, label: "BOL.size.large"},
|
||||
"verylarge": {order: 6, label: "BOL.size.verylarge"},
|
||||
"huge": {order: 7, label: "BOL.size.huge"},
|
||||
"massive": {order: 8, label: "BOL.size.massive"},
|
||||
"enormous": {order: 9, label: "BOL.size.enormous"},
|
||||
"gigantic": {order: 10, label: "BOL.size.gigantic"},
|
||||
"immense": {order: 11, label: "BOL.size.immense"},
|
||||
"colossal": {order: 12, label: "BOL.size.colossal"}
|
||||
"tiny": { order: 1, label: "BOL.size.tiny" },
|
||||
"verysmall": { order: 2, label: "BOL.size.verysmall" },
|
||||
"small": { order: 3, label: "BOL.size.small" },
|
||||
"medium": { order: 4, label: "BOL.size.medium" },
|
||||
"large": { order: 5, label: "BOL.size.large" },
|
||||
"verylarge": { order: 6, label: "BOL.size.verylarge" },
|
||||
"huge": { order: 7, label: "BOL.size.huge" },
|
||||
"massive": { order: 8, label: "BOL.size.massive" },
|
||||
"enormous": { order: 9, label: "BOL.size.enormous" },
|
||||
"gigantic": { order: 10, label: "BOL.size.gigantic" },
|
||||
"immense": { order: 11, label: "BOL.size.immense" },
|
||||
"colossal": { order: 12, label: "BOL.size.colossal" }
|
||||
}
|
||||
|
||||
BOL.horoscopeAnswer = {
|
||||
@ -352,110 +417,208 @@ BOL.bolEffectModifier = {
|
||||
|
||||
BOL.statusEffects = [
|
||||
{
|
||||
"id": "dead",
|
||||
"label": "EFFECT.StatusDead",
|
||||
"icon": "icons/svg/skull.svg"
|
||||
"id": "dead",
|
||||
"label": "EFFECT.StatusDead",
|
||||
"icon": "icons/svg/skull.svg"
|
||||
},
|
||||
{
|
||||
"id": "unconscious",
|
||||
"label": "EFFECT.StatusUnconscious",
|
||||
"icon": "icons/svg/unconscious.svg"
|
||||
"id": "unconscious",
|
||||
"label": "EFFECT.StatusUnconscious",
|
||||
"icon": "icons/svg/unconscious.svg"
|
||||
},
|
||||
{
|
||||
"id": "sleep",
|
||||
"label": "EFFECT.StatusAsleep",
|
||||
"icon": "icons/svg/sleep.svg"
|
||||
"id": "sleep",
|
||||
"label": "EFFECT.StatusAsleep",
|
||||
"icon": "icons/svg/sleep.svg"
|
||||
},
|
||||
{
|
||||
"id": "stun",
|
||||
"label": "EFFECT.StatusStunned",
|
||||
"icon": "icons/svg/daze.svg"
|
||||
"id": "stun",
|
||||
"label": "EFFECT.StatusStunned",
|
||||
"icon": "icons/svg/daze.svg"
|
||||
},
|
||||
{
|
||||
"id": "prone",
|
||||
"label": "EFFECT.StatusProne",
|
||||
"icon": "icons/svg/falling.svg"
|
||||
"id": "prone",
|
||||
"label": "EFFECT.StatusProne",
|
||||
"icon": "icons/svg/falling.svg"
|
||||
},
|
||||
{
|
||||
"id": "restrain",
|
||||
"label": "EFFECT.StatusRestrained",
|
||||
"icon": "icons/svg/net.svg"
|
||||
"id": "restrain",
|
||||
"label": "EFFECT.StatusRestrained",
|
||||
"icon": "icons/svg/net.svg"
|
||||
},
|
||||
{
|
||||
"id": "paralysis",
|
||||
"label": "EFFECT.StatusParalysis",
|
||||
"icon": "icons/svg/paralysis.svg"
|
||||
"id": "paralysis",
|
||||
"label": "EFFECT.StatusParalysis",
|
||||
"icon": "icons/svg/paralysis.svg"
|
||||
},
|
||||
{
|
||||
"id": "fly",
|
||||
"label": "EFFECT.StatusFlying",
|
||||
"icon": "icons/svg/wing.svg"
|
||||
"id": "fly",
|
||||
"label": "EFFECT.StatusFlying",
|
||||
"icon": "icons/svg/wing.svg"
|
||||
},
|
||||
{
|
||||
"id": "blind",
|
||||
"label": "EFFECT.StatusBlind",
|
||||
"icon": "icons/svg/blind.svg"
|
||||
"id": "blind",
|
||||
"label": "EFFECT.StatusBlind",
|
||||
"icon": "icons/svg/blind.svg"
|
||||
},
|
||||
{
|
||||
"id": "deaf",
|
||||
"label": "EFFECT.StatusDeaf",
|
||||
"icon": "icons/svg/deaf.svg"
|
||||
"id": "deaf",
|
||||
"label": "EFFECT.StatusDeaf",
|
||||
"icon": "icons/svg/deaf.svg"
|
||||
},
|
||||
{
|
||||
"id": "silence",
|
||||
"label": "EFFECT.StatusSilenced",
|
||||
"icon": "icons/svg/silenced.svg"
|
||||
"id": "silence",
|
||||
"label": "EFFECT.StatusSilenced",
|
||||
"icon": "icons/svg/silenced.svg"
|
||||
},
|
||||
{
|
||||
"id": "fear",
|
||||
"label": "EFFECT.StatusFear",
|
||||
"icon": "icons/svg/terror.svg"
|
||||
"id": "fear",
|
||||
"label": "EFFECT.StatusFear",
|
||||
"icon": "icons/svg/terror.svg"
|
||||
},
|
||||
{
|
||||
"id": "burning",
|
||||
"label": "EFFECT.StatusBurning",
|
||||
"icon": "icons/svg/fire.svg"
|
||||
"id": "burning",
|
||||
"label": "EFFECT.StatusBurning",
|
||||
"icon": "icons/svg/fire.svg"
|
||||
},
|
||||
{
|
||||
"id": "frozen",
|
||||
"label": "EFFECT.StatusFrozen",
|
||||
"icon": "icons/svg/frozen.svg"
|
||||
"id": "frozen",
|
||||
"label": "EFFECT.StatusFrozen",
|
||||
"icon": "icons/svg/frozen.svg"
|
||||
},
|
||||
{
|
||||
"id": "shock",
|
||||
"label": "EFFECT.StatusShocked",
|
||||
"icon": "icons/svg/lightning.svg"
|
||||
"id": "shock",
|
||||
"label": "EFFECT.StatusShocked",
|
||||
"icon": "icons/svg/lightning.svg"
|
||||
},
|
||||
{
|
||||
"id": "disease",
|
||||
"label": "EFFECT.StatusDisease",
|
||||
"icon": "icons/svg/biohazard.svg"
|
||||
"id": "disease",
|
||||
"label": "EFFECT.StatusDisease",
|
||||
"icon": "icons/svg/biohazard.svg"
|
||||
},
|
||||
{
|
||||
"id": "poison",
|
||||
"label": "EFFECT.StatusPoison",
|
||||
"icon": "icons/svg/poison.svg"
|
||||
"id": "poison",
|
||||
"label": "EFFECT.StatusPoison",
|
||||
"icon": "icons/svg/poison.svg"
|
||||
},
|
||||
{
|
||||
"id": "curse",
|
||||
"label": "EFFECT.StatusCursed",
|
||||
"icon": "icons/svg/sun.svg"
|
||||
"id": "curse",
|
||||
"label": "EFFECT.StatusCursed",
|
||||
"icon": "icons/svg/sun.svg"
|
||||
},
|
||||
{
|
||||
"id": "invisible",
|
||||
"label": "EFFECT.StatusInvisible",
|
||||
"icon": "icons/svg/invisible.svg"
|
||||
"id": "invisible",
|
||||
"label": "EFFECT.StatusInvisible",
|
||||
"icon": "icons/svg/invisible.svg"
|
||||
},
|
||||
{
|
||||
"id": "target",
|
||||
"label": "EFFECT.StatusTarget",
|
||||
"icon": "icons/svg/target.svg"
|
||||
"id": "target",
|
||||
"label": "EFFECT.StatusTarget",
|
||||
"icon": "icons/svg/target.svg"
|
||||
},
|
||||
{
|
||||
"id": "eye",
|
||||
"label": "EFFECT.StatusMarked",
|
||||
"icon": "icons/svg/eye.svg"
|
||||
"id": "eye",
|
||||
"label": "EFFECT.StatusMarked",
|
||||
"icon": "icons/svg/eye.svg"
|
||||
}
|
||||
]
|
||||
|
||||
BOL.defaultNaturalWeapon = {
|
||||
"category": "equipment",
|
||||
"subtype": "weapon",
|
||||
"description": "",
|
||||
"properties": {
|
||||
"ranged": false,
|
||||
"melee": false,
|
||||
"spell": false,
|
||||
"protection": false,
|
||||
"weapon": true,
|
||||
"armor": false,
|
||||
"helm": false,
|
||||
"shield": false,
|
||||
"equipable": false,
|
||||
"consumable": false,
|
||||
"magical": false,
|
||||
"2H": false,
|
||||
"reloadable": false,
|
||||
"bow": false,
|
||||
"crossbow": false,
|
||||
"throwing": false,
|
||||
"stackable": false,
|
||||
"natural": true,
|
||||
"concealable": false,
|
||||
"ignoreshield": false,
|
||||
"attackBonusDice": false,
|
||||
"onlymodifier": true,
|
||||
"attackAttribute": "vigor",
|
||||
"attackAptitude": "melee",
|
||||
"attackModifiers": 1,
|
||||
"weaponSize": "unarmed",
|
||||
"damage": "d6B",
|
||||
"damageAttribute": "vigor",
|
||||
"damageModifiers": null,
|
||||
"damageMultiplier": "1",
|
||||
"damageReroll1": false
|
||||
},
|
||||
"quantity": 1,
|
||||
"weight": 0,
|
||||
"price": 0,
|
||||
"worn": false
|
||||
}
|
||||
|
||||
BOL.defaultNaturalProtection = {
|
||||
"category": "equipment",
|
||||
"subtype": "armor",
|
||||
"description": "",
|
||||
"properties": {
|
||||
"ranged": false,
|
||||
"melee": false,
|
||||
"spell": false,
|
||||
"protection": true,
|
||||
"weapon": false,
|
||||
"armor": true,
|
||||
"helm": false,
|
||||
"shield": false,
|
||||
"equipable": true,
|
||||
"consumable": false,
|
||||
"magical": false,
|
||||
"2H": false,
|
||||
"reloadable": false,
|
||||
"bow": false,
|
||||
"crossbow": false,
|
||||
"throwing": false,
|
||||
"stackable": false,
|
||||
"natural": true,
|
||||
"concealable": false,
|
||||
"ignoreshield": false,
|
||||
"attackBonusDice": false,
|
||||
"onlymodifier": true,
|
||||
"attackAttribute": "vigor",
|
||||
"attackAptitude": "melee",
|
||||
"attackModifiers": 1,
|
||||
"weaponSize": "unarmed",
|
||||
"damage": "d6B",
|
||||
"damageAttribute": "vigor",
|
||||
"damageModifiers": null,
|
||||
"damageMultiplier": "1",
|
||||
"damageReroll1": false,
|
||||
"modifiers": {
|
||||
"init": null,
|
||||
"agility": null,
|
||||
"powercost": null,
|
||||
"social": false
|
||||
},
|
||||
"armorQuality": "none",
|
||||
"soak": {
|
||||
"formula": "",
|
||||
"value": 1
|
||||
},
|
||||
"slot": "none"
|
||||
},
|
||||
"quantity": 1,
|
||||
"weight": 0,
|
||||
"price": 0,
|
||||
"worn": true
|
||||
}
|
||||
|
||||
BOL.debug = false;
|
@ -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-000111
|
||||
MANIFEST-000315
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.412914 7f5b813fe6c0 Recovering log #109
|
||||
2023/12/05-10:19:09.423992 7f5b813fe6c0 Delete type=3 #107
|
||||
2023/12/05-10:19:09.424077 7f5b813fe6c0 Delete type=0 #109
|
||||
2023/12/05-10:22:46.862878 7f58eb7fe6c0 Level-0 table #114: started
|
||||
2023/12/05-10:22:46.862963 7f58eb7fe6c0 Level-0 table #114: 0 bytes OK
|
||||
2023/12/05-10:22:46.869980 7f58eb7fe6c0 Delete type=0 #112
|
||||
2023/12/05-10:22:46.891683 7f58eb7fe6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.891779 7f58eb7fe6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.600289 7f80f3e006c0 Recovering log #313
|
||||
2024/09/04-08:29:45.624187 7f80f3e006c0 Delete type=3 #311
|
||||
2024/09/04-08:29:45.624335 7f80f3e006c0 Delete type=0 #313
|
||||
2024/09/04-08:55:35.075489 7f80f10006c0 Level-0 table #318: started
|
||||
2024/09/04-08:55:35.075528 7f80f10006c0 Level-0 table #318: 0 bytes OK
|
||||
2024/09/04-08:55:35.081858 7f80f10006c0 Delete type=0 #316
|
||||
2024/09/04-08:55:35.082117 7f80f10006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.082171 7f80f10006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.430277 7f84f7fff6c0 Recovering log #105
|
||||
2023/12/04-21:16:34.440834 7f84f7fff6c0 Delete type=3 #103
|
||||
2023/12/04-21:16:34.440885 7f84f7fff6c0 Delete type=0 #105
|
||||
2023/12/04-21:29:36.294789 7f84f5ffb6c0 Level-0 table #110: started
|
||||
2023/12/04-21:29:36.294815 7f84f5ffb6c0 Level-0 table #110: 0 bytes OK
|
||||
2023/12/04-21:29:36.301173 7f84f5ffb6c0 Delete type=0 #108
|
||||
2023/12/04-21:29:36.301317 7f84f5ffb6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.301343 7f84f5ffb6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!Yl1RKQb0BjVUtilk.kNb9ZrMbgONi1mlE' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:02.404112 7f80f3e006c0 Recovering log #309
|
||||
2024/09/03-23:57:02.504332 7f80f3e006c0 Delete type=3 #307
|
||||
2024/09/03-23:57:02.504411 7f80f3e006c0 Delete type=0 #309
|
||||
2024/09/04-00:02:12.553825 7f80f10006c0 Level-0 table #314: started
|
||||
2024/09/04-00:02:12.553904 7f80f10006c0 Level-0 table #314: 0 bytes OK
|
||||
2024/09/04-00:02:12.560122 7f80f10006c0 Delete type=0 #312
|
||||
2024/09/04-00:02:12.566679 7f80f10006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.566727 7f80f10006c0 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-000315
Normal file
BIN
packs/aides-de-jeu/MANIFEST-000315
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-000018
|
||||
MANIFEST-000221
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.388365 7f58ebfff6c0 Recovering log #16
|
||||
2023/12/05-10:19:09.399094 7f58ebfff6c0 Delete type=3 #14
|
||||
2023/12/05-10:19:09.399150 7f58ebfff6c0 Delete type=0 #16
|
||||
2023/12/05-10:22:46.848470 7f58eb7fe6c0 Level-0 table #21: started
|
||||
2023/12/05-10:22:46.848503 7f58eb7fe6c0 Level-0 table #21: 0 bytes OK
|
||||
2023/12/05-10:22:46.855871 7f58eb7fe6c0 Delete type=0 #19
|
||||
2023/12/05-10:22:46.862471 7f58eb7fe6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.862599 7f58eb7fe6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.543967 7f80f2a006c0 Recovering log #219
|
||||
2024/09/04-08:29:45.568470 7f80f2a006c0 Delete type=3 #217
|
||||
2024/09/04-08:29:45.568609 7f80f2a006c0 Delete type=0 #219
|
||||
2024/09/04-08:55:35.053637 7f80f10006c0 Level-0 table #224: started
|
||||
2024/09/04-08:55:35.053701 7f80f10006c0 Level-0 table #224: 0 bytes OK
|
||||
2024/09/04-08:55:35.060581 7f80f10006c0 Delete type=0 #222
|
||||
2024/09/04-08:55:35.082061 7f80f10006c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.082130 7f80f10006c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.402100 7f84f6ffd6c0 Recovering log #12
|
||||
2023/12/04-21:16:34.413052 7f84f6ffd6c0 Delete type=3 #10
|
||||
2023/12/04-21:16:34.413101 7f84f6ffd6c0 Delete type=0 #12
|
||||
2023/12/04-21:29:36.274254 7f84f5ffb6c0 Level-0 table #17: started
|
||||
2023/12/04-21:29:36.274306 7f84f5ffb6c0 Level-0 table #17: 0 bytes OK
|
||||
2023/12/04-21:29:36.281091 7f84f5ffb6c0 Delete type=0 #15
|
||||
2023/12/04-21:29:36.301284 7f84f5ffb6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.301326 7f84f5ffb6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:02.191364 7f80f2a006c0 Recovering log #215
|
||||
2024/09/03-23:57:02.292367 7f80f2a006c0 Delete type=3 #213
|
||||
2024/09/03-23:57:02.292426 7f80f2a006c0 Delete type=0 #215
|
||||
2024/09/04-00:02:12.560295 7f80f10006c0 Level-0 table #220: started
|
||||
2024/09/04-00:02:12.560338 7f80f10006c0 Level-0 table #220: 0 bytes OK
|
||||
2024/09/04-00:02:12.566575 7f80f10006c0 Delete type=0 #218
|
||||
2024/09/04-00:02:12.566717 7f80f10006c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.566746 7f80f10006c0 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-000221
Normal file
BIN
packs/armors/MANIFEST-000221
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-000110
|
||||
MANIFEST-000315
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.243453 7f58ebfff6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.254734 7f58ebfff6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.254855 7f58ebfff6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.807255 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.807291 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.813375 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.828324 7f58eb7fe6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.835287 7f58eb7fe6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.183554 7f80f2a006c0 Recovering log #313
|
||||
2024/09/04-08:29:45.233441 7f80f2a006c0 Delete type=3 #311
|
||||
2024/09/04-08:29:45.233583 7f80f2a006c0 Delete type=0 #313
|
||||
2024/09/04-08:55:34.993899 7f80f10006c0 Level-0 table #318: started
|
||||
2024/09/04-08:55:34.993962 7f80f10006c0 Level-0 table #318: 0 bytes OK
|
||||
2024/09/04-08:55:35.001825 7f80f10006c0 Delete type=0 #316
|
||||
2024/09/04-08:55:35.023994 7f80f10006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.024130 7f80f10006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.244782 7f84f6ffd6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.255803 7f84f6ffd6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.255859 7f84f6ffd6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.227120 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.227155 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.233490 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.247612 7f84f5ffb6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.247638 7f84f5ffb6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:01.593096 7f80f2a006c0 Recovering log #309
|
||||
2024/09/03-23:57:01.647346 7f80f2a006c0 Delete type=3 #307
|
||||
2024/09/03-23:57:01.647452 7f80f2a006c0 Delete type=0 #309
|
||||
2024/09/04-00:02:12.502227 7f80f10006c0 Level-0 table #314: started
|
||||
2024/09/04-00:02:12.502249 7f80f10006c0 Level-0 table #314: 0 bytes OK
|
||||
2024/09/04-00:02:12.508162 7f80f10006c0 Delete type=0 #312
|
||||
2024/09/04-00:02:12.521455 7f80f10006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.521494 7f80f10006c0 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-000315
Normal file
BIN
packs/boons/MANIFEST-000315
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-000110
|
||||
MANIFEST-000315
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.257627 7f5b80bfd6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.267269 7f5b80bfd6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.267320 7f5b80bfd6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.813487 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.813513 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.821758 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.828335 7f58eb7fe6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.835270 7f58eb7fe6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.236757 7f80f34006c0 Recovering log #313
|
||||
2024/09/04-08:29:45.285076 7f80f34006c0 Delete type=3 #311
|
||||
2024/09/04-08:29:45.285171 7f80f34006c0 Delete type=0 #313
|
||||
2024/09/04-08:55:35.008961 7f80f10006c0 Level-0 table #318: started
|
||||
2024/09/04-08:55:35.009000 7f80f10006c0 Level-0 table #318: 0 bytes OK
|
||||
2024/09/04-08:55:35.015744 7f80f10006c0 Delete type=0 #316
|
||||
2024/09/04-08:55:35.024074 7f80f10006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.024182 7f80f10006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.258787 7f84f77fe6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.268652 7f84f77fe6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.268705 7f84f77fe6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.233597 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.233621 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.239701 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.247623 7f84f5ffb6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.247651 7f84f5ffb6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:01.659093 7f80f20006c0 Recovering log #309
|
||||
2024/09/03-23:57:01.714808 7f80f20006c0 Delete type=3 #307
|
||||
2024/09/03-23:57:01.714865 7f80f20006c0 Delete type=0 #309
|
||||
2024/09/04-00:02:12.496079 7f80f10006c0 Level-0 table #314: started
|
||||
2024/09/04-00:02:12.496122 7f80f10006c0 Level-0 table #314: 0 bytes OK
|
||||
2024/09/04-00:02:12.502129 7f80f10006c0 Delete type=0 #312
|
||||
2024/09/04-00:02:12.521438 7f80f10006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.521486 7f80f10006c0 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-000315
Normal file
BIN
packs/boonsflawscreatures/MANIFEST-000315
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-000110
|
||||
MANIFEST-000315
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.282801 7f5b81bff6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.293479 7f5b81bff6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.293574 7f5b81bff6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.828345 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.828365 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.835090 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.835303 7f58eb7fe6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.835334 7f58eb7fe6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.337427 7f80f20006c0 Recovering log #313
|
||||
2024/09/04-08:29:45.385247 7f80f20006c0 Delete type=3 #311
|
||||
2024/09/04-08:29:45.385347 7f80f20006c0 Delete type=0 #313
|
||||
2024/09/04-08:55:35.015910 7f80f10006c0 Level-0 table #318: started
|
||||
2024/09/04-08:55:35.015983 7f80f10006c0 Level-0 table #318: 0 bytes OK
|
||||
2024/09/04-08:55:35.023688 7f80f10006c0 Delete type=0 #316
|
||||
2024/09/04-08:55:35.024104 7f80f10006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.024208 7f80f10006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.285844 7f84f67fc6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.295915 7f84f67fc6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.295974 7f84f67fc6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.267733 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.267761 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.273875 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.274078 7f84f5ffb6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.274142 7f84f5ffb6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:01.783330 7f80f3e006c0 Recovering log #309
|
||||
2024/09/03-23:57:01.838726 7f80f3e006c0 Delete type=3 #307
|
||||
2024/09/03-23:57:01.838785 7f80f3e006c0 Delete type=0 #309
|
||||
2024/09/04-00:02:12.508272 7f80f10006c0 Level-0 table #314: started
|
||||
2024/09/04-00:02:12.508294 7f80f10006c0 Level-0 table #314: 0 bytes OK
|
||||
2024/09/04-00:02:12.514198 7f80f10006c0 Delete type=0 #312
|
||||
2024/09/04-00:02:12.521467 7f80f10006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.521503 7f80f10006c0 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-000315
Normal file
BIN
packs/careers/MANIFEST-000315
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/cartes/000122.ldb
Normal file
BIN
packs/cartes/000122.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000110
|
||||
MANIFEST-000283
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.427439 7f5b81bff6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.437209 7f5b81bff6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.437271 7f5b81bff6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.876957 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.876983 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.884392 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.891737 7f58eb7fe6c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.891822 7f58eb7fe6c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/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,8 +1,8 @@
|
||||
2023/12/04-21:16:34.444268 7f84f67fc6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.454337 7f84f67fc6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.454390 7f84f67fc6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.307716 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.307782 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.314556 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.327965 7f84f5ffb6c0 Manual compaction at level-0 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.328032 7f84f5ffb6c0 Manual compaction at level-1 from '!scenes!1ZDXKpKixS12xzW3' @ 72057594037927935 : 1 .. '!scenes.tiles!78gEyXvSfBJi9iL1.rJglQmZXB0eRIL8y' @ 0 : 0; will stop at (end)
|
||||
2024/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.
BIN
packs/cartes/MANIFEST-000283
Normal file
BIN
packs/cartes/MANIFEST-000283
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/creatures/000203.ldb
Normal file
BIN
packs/creatures/000203.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000110
|
||||
MANIFEST-000208
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.537819 7f5b80bfd6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.548670 7f5b80bfd6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.548725 7f5b80bfd6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.934967 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.935007 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.942182 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.949024 7f58eb7fe6c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.949059 7f58eb7fe6c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2024/02/23-23: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,8 +1,8 @@
|
||||
2023/12/04-21:16:34.555441 7f84f77fe6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.566877 7f84f77fe6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.566941 7f84f77fe6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.355366 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.355392 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.362705 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.362912 7f84f5ffb6c0 Manual compaction at level-0 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.362955 7f84f5ffb6c0 Manual compaction at level-1 from '!actors!1QGaindSWLCT4QXD' @ 72057594037927935 : 1 .. '!actors.items!yGlDTCiMiaH4vJTH.mvXGkWoCcRGjUpYV' @ 0 : 0; will stop at (end)
|
||||
2024/02/22-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-000110
|
||||
MANIFEST-000313
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.524919 7f58ebfff6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.535781 7f58ebfff6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.535872 7f58ebfff6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.927846 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.927875 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.934810 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.949014 7f58eb7fe6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.949051 7f58eb7fe6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.792446 7f80f34006c0 Recovering log #311
|
||||
2024/09/04-08:29:45.814564 7f80f34006c0 Delete type=3 #309
|
||||
2024/09/04-08:29:45.814808 7f80f34006c0 Delete type=0 #311
|
||||
2024/09/04-08:55:35.119784 7f80f10006c0 Level-0 table #316: started
|
||||
2024/09/04-08:55:35.119834 7f80f10006c0 Level-0 table #316: 0 bytes OK
|
||||
2024/09/04-08:55:35.127260 7f80f10006c0 Delete type=0 #314
|
||||
2024/09/04-08:55:35.146545 7f80f10006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.146620 7f80f10006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.543411 7f84f6ffd6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.553517 7f84f6ffd6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.553574 7f84f6ffd6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.348547 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.348582 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.355093 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.355262 7f84f5ffb6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.355296 7f84f5ffb6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:02.921085 7f80f34006c0 Recovering log #307
|
||||
2024/09/03-23:57:02.974041 7f80f34006c0 Delete type=3 #305
|
||||
2024/09/03-23:57:02.974104 7f80f34006c0 Delete type=0 #307
|
||||
2024/09/04-00:02:12.594370 7f80f10006c0 Level-0 table #312: started
|
||||
2024/09/04-00:02:12.594419 7f80f10006c0 Level-0 table #312: 0 bytes OK
|
||||
2024/09/04-00:02:12.600538 7f80f10006c0 Delete type=0 #310
|
||||
2024/09/04-00:02:12.625472 7f80f10006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.625539 7f80f10006c0 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-000313
Normal file
BIN
packs/effets-exemples/MANIFEST-000313
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-000112
|
||||
MANIFEST-000316
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.321953 7f5b813fe6c0 Recovering log #110
|
||||
2023/12/05-10:19:09.331688 7f5b813fe6c0 Delete type=3 #108
|
||||
2023/12/05-10:19:09.331799 7f5b813fe6c0 Delete type=0 #110
|
||||
2023/12/05-10:22:46.856017 7f58eb7fe6c0 Level-0 table #115: started
|
||||
2023/12/05-10:22:46.856048 7f58eb7fe6c0 Level-0 table #115: 0 bytes OK
|
||||
2023/12/05-10:22:46.862204 7f58eb7fe6c0 Delete type=0 #113
|
||||
2023/12/05-10:22:46.862520 7f58eb7fe6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.862626 7f58eb7fe6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.493437 7f80f3e006c0 Recovering log #314
|
||||
2024/09/04-08:29:45.515415 7f80f3e006c0 Delete type=3 #312
|
||||
2024/09/04-08:29:45.515533 7f80f3e006c0 Delete type=0 #314
|
||||
2024/09/04-08:55:35.039308 7f80f10006c0 Level-0 table #319: started
|
||||
2024/09/04-08:55:35.039346 7f80f10006c0 Level-0 table #319: 0 bytes OK
|
||||
2024/09/04-08:55:35.045797 7f80f10006c0 Delete type=0 #317
|
||||
2024/09/04-08:55:35.053432 7f80f10006c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.053506 7f80f10006c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.326886 7f84f7fff6c0 Recovering log #106
|
||||
2023/12/04-21:16:34.337231 7f84f7fff6c0 Delete type=3 #104
|
||||
2023/12/04-21:16:34.337341 7f84f7fff6c0 Delete type=0 #106
|
||||
2023/12/04-21:29:36.247774 7f84f5ffb6c0 Level-0 table #111: started
|
||||
2023/12/04-21:29:36.247806 7f84f5ffb6c0 Level-0 table #111: 0 bytes OK
|
||||
2023/12/04-21:29:36.253805 7f84f5ffb6c0 Delete type=0 #109
|
||||
2023/12/04-21:29:36.274024 7f84f5ffb6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.274096 7f84f5ffb6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:01.978005 7f80f34006c0 Recovering log #310
|
||||
2024/09/03-23:57:02.062495 7f80f34006c0 Delete type=3 #308
|
||||
2024/09/03-23:57:02.062561 7f80f34006c0 Delete type=0 #310
|
||||
2024/09/04-00:02:12.540620 7f80f10006c0 Level-0 table #315: started
|
||||
2024/09/04-00:02:12.540655 7f80f10006c0 Level-0 table #315: 0 bytes OK
|
||||
2024/09/04-00:02:12.547462 7f80f10006c0 Delete type=0 #313
|
||||
2024/09/04-00:02:12.547615 7f80f10006c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.547641 7f80f10006c0 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-000316
Normal file
BIN
packs/equipment/MANIFEST-000316
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-000110
|
||||
MANIFEST-000314
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/05-10:19:09.486474 7f5b80bfd6c0 Recovering log #108
|
||||
2023/12/05-10:19:09.497087 7f5b80bfd6c0 Delete type=3 #106
|
||||
2023/12/05-10:19:09.497144 7f5b80bfd6c0 Delete type=0 #108
|
||||
2023/12/05-10:22:46.906415 7f58eb7fe6c0 Level-0 table #113: started
|
||||
2023/12/05-10:22:46.906438 7f58eb7fe6c0 Level-0 table #113: 0 bytes OK
|
||||
2023/12/05-10:22:46.912712 7f58eb7fe6c0 Delete type=0 #111
|
||||
2023/12/05-10:22:46.921346 7f58eb7fe6c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2023/12/05-10:22:46.921382 7f58eb7fe6c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:29:45.709007 7f80f3e006c0 Recovering log #312
|
||||
2024/09/04-08:29:45.733181 7f80f3e006c0 Delete type=3 #310
|
||||
2024/09/04-08:29:45.733331 7f80f3e006c0 Delete type=0 #312
|
||||
2024/09/04-08:55:35.089354 7f80f10006c0 Level-0 table #317: started
|
||||
2024/09/04-08:55:35.089399 7f80f10006c0 Level-0 table #317: 0 bytes OK
|
||||
2024/09/04-08:55:35.096826 7f80f10006c0 Delete type=0 #315
|
||||
2024/09/04-08:55:35.112520 7f80f10006c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-08:55:35.112626 7f80f10006c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2023/12/04-21:16:34.503638 7f84f77fe6c0 Recovering log #104
|
||||
2023/12/04-21:16:34.513495 7f84f77fe6c0 Delete type=3 #102
|
||||
2023/12/04-21:16:34.513540 7f84f77fe6c0 Delete type=0 #104
|
||||
2023/12/04-21:29:36.328177 7f84f5ffb6c0 Level-0 table #109: started
|
||||
2023/12/04-21:29:36.328221 7f84f5ffb6c0 Level-0 table #109: 0 bytes OK
|
||||
2023/12/04-21:29:36.334799 7f84f5ffb6c0 Delete type=0 #107
|
||||
2023/12/04-21:29:36.355226 7f84f5ffb6c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2023/12/04-21:29:36.355270 7f84f5ffb6c0 Manual compaction at level-1 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/09/03-23:57:02.729641 7f80f3e006c0 Recovering log #308
|
||||
2024/09/03-23:57:02.791542 7f80f3e006c0 Delete type=3 #306
|
||||
2024/09/03-23:57:02.791637 7f80f3e006c0 Delete type=0 #308
|
||||
2024/09/04-00:02:12.587081 7f80f10006c0 Level-0 table #313: started
|
||||
2024/09/04-00:02:12.587145 7f80f10006c0 Level-0 table #313: 0 bytes OK
|
||||
2024/09/04-00:02:12.593984 7f80f10006c0 Delete type=0 #311
|
||||
2024/09/04-00:02:12.594221 7f80f10006c0 Manual compaction at level-0 from '!items!4EmWdK1cv7EX0X3E' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
|
||||
2024/09/04-00:02:12.594283 7f80f10006c0 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-000314
Normal file
BIN
packs/fightoptions/MANIFEST-000314
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