Compare commits

...

21 Commits

Author SHA1 Message Date
12faf34631 Fix roll with armor 0
Some checks failed
Release Creation / build (release) Failing after 48s
2026-01-19 20:19:36 +01:00
afa6e7a323 Fix roll with armor 0 2026-01-19 20:19:09 +01:00
89f5674fb9 Fix roll with armor 0 2026-01-19 20:18:54 +01:00
cd06d2e5ec Fix roll with armor 0 2026-01-19 20:18:16 +01:00
cdddcb6aee Fix roll with armor 0 2026-01-19 20:14:24 +01:00
2abd2c881a Sync bol compendiums 2026-01-12 23:01:53 +01:00
3fa5ca66d1 Minor fix for chronicles v1 2025-12-04 18:26:26 +01:00
6de15eeda7 Ajout alignement Mythic+
Some checks failed
Release Creation / build (release) Failing after 43s
2025-09-28 20:52:09 +02:00
724c096743 Ajout alignement Mythic+
Some checks failed
Release Creation / build (release) Failing after 39s
2025-09-28 20:47:31 +02:00
3e3a4b9ec1 Ajout alignement Mythic+
Some checks failed
Release Creation / build (release) Failing after 41s
2025-09-28 20:42:01 +02:00
425a2a1fc0 Fix odd difficulties
Some checks failed
Release Creation / build (release) Failing after 45s
2025-08-24 22:18:39 +02:00
203d7add66 FIx journals color
Some checks failed
Release Creation / build (release) Failing after 1m38s
2025-07-08 22:34:13 +02:00
8ae193dc34 Fix items sheets
Some checks failed
Release Creation / build (release) Failing after 1m0s
2025-05-15 18:18:40 +02:00
3904f595b5 Add repo
Some checks failed
Release Creation / build (release) Failing after 1m1s
2025-05-15 15:29:49 +02:00
1bf21fae7f Add repo 2025-05-15 14:29:11 +02:00
22579c21bc Update for Foundry v13
Some checks failed
Release Creation / build (release) Failing after 58s
2025-05-09 21:58:37 +02:00
50c5c31e7b Update for Foundry v13 2025-05-09 21:56:03 +02:00
a8c05cd4de Update for Foundry v13 2025-05-09 21:54:29 +02:00
e1cea78059 Update for Foundry v13 2025-05-09 21:54:10 +02:00
c2f9934f5f Fix welcome message 2025-03-31 07:21:30 +02:00
313c8a85fa Fix welcome message 2025-03-31 07:15:38 +02:00
188 changed files with 1105 additions and 669 deletions

View File

@@ -1,6 +1,6 @@
name: Release Creation name: Release Creation
on: on:
release: release:
types: [published] types: [published]
@@ -8,47 +8,47 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner." - run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
#- uses: actions/checkout@v3
- uses: RouxAntoine/checkout@v3.5.4
with:
ref: 'v10'
# get part of the tag after the `v` #- uses: actions/checkout@v3
- name: Extract tag version number - uses: RouxAntoine/checkout@v3.5.4
id: get_version with:
uses: battila7/get-version-action@v2 ref: "v13"
# Substitute the Manifest and Download URLs in the module.json # get part of the tag after the `v`
- name: Substitute Manifest and Download Links For Versioned Ones - name: Extract tag version number
id: sub_manifest_link_version id: get_version
uses: microsoft/variable-substitution@v1 uses: battila7/get-version-action@v2
with:
files: 'system.json'
env:
version: ${{steps.get_version.outputs.version-without-v}}
url: https://www.uberwald.me/gitea/public/bol
manifest: https://www.uberwald.me/gitea/public/bol/releases/latest/system.json
download: https://www.uberwald.me/gitea/public/bol/releases/download/${{github.event.release.tag_name}}/bol.zip
# Create a zip file with all files required by the module to add to the release
- run: |
apt update -y
apt install -y zip
- run: zip -r ./bol.zip system.json template.json README.md LICENSE assets/ css/ fonts/ images/ lang/ module/ packs/ styles/ templates/ ui/ # Substitute the Manifest and Download URLs in the module.json
- name: Substitute Manifest and Download Links For Versioned Ones
- name: setup go id: sub_manifest_link_version
uses: https://github.com/actions/setup-go@v4 uses: microsoft/variable-substitution@v1
with: with:
go-version: '>=1.20.1' files: "system.json"
env:
- name: Use Go Action version: ${{steps.get_version.outputs.version-without-v}}
id: use-go-action url: https://www.uberwald.me/gitea/public/bol
uses: https://gitea.com/actions/release-action@main manifest: https://www.uberwald.me/gitea/public/bol/releases/latest/system.json
with: download: https://www.uberwald.me/gitea/public/bol/releases/download/${{github.event.release.tag_name}}/bol.zip
files: |-
./bol.zip # Create a zip file with all files required by the module to add to the release
system.json - run: |
api_key: '${{secrets.RELEASE_TOKEN_UBERWALD}}' apt update -y
apt install -y zip
- run: zip -r ./bol.zip system.json template.json README.md LICENSE assets/ compendiums/ css/ fonts/ images/ lang/ module/ packs/ styles/ templates/ ui/
- name: setup go
uses: https://github.com/actions/setup-go@v4
with:
go-version: ">=1.20.1"
- name: Use Go Action
id: use-go-action
uses: https://gitea.com/actions/release-action@main
with:
files: |-
./bol.zip
system.json
api_key: "${{secrets.RELEASE_TOKEN_BOL}}"

View File

@@ -1,25 +1,33 @@
Changes :
# v12.1.0 # v13.0.0
- Foundry v13 only
# v12.1.7
- Enhance welcome message
# v12.1.1
## French ## French
- Correction sur les conditions des sorts - Correction sur les conditions des sorts
- Jet d'armures correctement affichés - Jet d'armures correctement affichés
- Dégat à 0 possibles sur les armes/capacités - Dégat à 0 possibles sur les armes/capacités
## English ## English
- Corrected spell conditions - Corrected spell conditions
- Armor rolls are now correctly displayed - Armor rolls are now correctly displayed
- Weapon/capacity damage can now be set to 0 - Weapon/capacity damage can now be set to 0
# v12.1.0 # v12.1.0
- Gestion des Hordes - Gestion des Hordes
- Ajout de la traduction Espagnole - Ajout de la traduction Espagnole
- Nouvelles clés de traduction - Nouvelles clés de traduction
- Petites amélioration diverses - Petites amélioration diverses
# v11.1.2 # v11.1.2
- Ajout des traductions manquantes en anglais - Ajout des traductions manquantes en anglais
@@ -39,20 +47,19 @@ Changes :
# v11.0.8 # v11.0.8
- Correction sur les malus de bouclier (blocage) - Correction sur les malus de bouclier (blocage)
- Corrrection sur le malus d'init des boucliers qui était mal affiché dans la fiche d'item - Corrrection sur le malus d'init des boucliers qui était mal affiché dans la fiche d'item
# v10.4.0 # v10.4.0
- Ajout de la gestion d'effets - Ajout de la gestion d'effets
- Aide intégré - Aide intégré
- Intégration du PDF de la bougette - Intégration du PDF de la bougette
# v10.3.3 # v10.3.3
- Nouvelles clés de traduction - Nouvelles clés de traduction
- Lorsqu'une arme a un dé bonus, prise en compte plus claire du dé bonus et affichage de l'information dans la fenêtre de jet - Lorsqu'une arme a un dé bonus, prise en compte plus claire du dé bonus et affichage de l'information dans la fenêtre de jet
- Lorsqu'une arme relance les 1 sur ses dégats, l'information est affichée dans le tchat - Lorsqu'une arme relance les 1 sur ses dégats, l'information est affichée dans le tchat
- Termes corrects pour les PNJs (ie rival) - Termes corrects pour les PNJs (ie rival)
- Nouveaux équipements issus du Dieu Voilé - Nouveaux équipements issus du Dieu Voilé

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +0,0 @@
[Dolphin]
Timestamp=2024,11,2,20,30,2.2800000000000002
Version=4
ViewMode=1
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

View File

@@ -111,7 +111,7 @@
"BOL.ui.defender": "Verteidiger", "BOL.ui.defender": "Verteidiger",
"BOL.ui.difficulty": "Schwierigkeit", "BOL.ui.difficulty": "Schwierigkeit",
"BOL.ui.spellProperties": "Zaubereigenschaften", "BOL.ui.spellProperties": "Zaubereigenschaften",
"BOL.ui.duration": "Dauer", "BOL.ui.duration": "Dauer",
"BOL.ui.spellkeep": "Aufrechterhalten", "BOL.ui.spellkeep": "Aufrechterhalten",
"BOL.ui.concentrate": "Konzentrieren", "BOL.ui.concentrate": "Konzentrieren",
"BOL.ui.registerInit": "Register Init.", "BOL.ui.registerInit": "Register Init.",
@@ -134,7 +134,7 @@
"BOL.ui.makeAlchemy": "Alchemika herstellen", "BOL.ui.makeAlchemy": "Alchemika herstellen",
"BOL.ui.alchemyCostTotal": "Alchemiepunkte ingesamt", "BOL.ui.alchemyCostTotal": "Alchemiepunkte ingesamt",
"BOL.ui.alchemyInvest": "Alchemiepunkte investieren", "BOL.ui.alchemyInvest": "Alchemiepunkte investieren",
"BOL.ui.alchemyCurrent": "Aktuelle Alchemiepunkte in Objekten", "BOL.ui.alchemyCurrent": "Aktuelle Alchemiepunkte in Objekten",
"BOL.ui.advance": "Status", "BOL.ui.advance": "Status",
"BOL.ui.isadvantage": "Gibt zusätzlichen Würfel?", "BOL.ui.isadvantage": "Gibt zusätzlichen Würfel?",
"BOL.ui.isbonusdice": "Gibt zusätzlichen Würfel?", "BOL.ui.isbonusdice": "Gibt zusätzlichen Würfel?",
@@ -153,8 +153,8 @@
"BOL.ui.status": "Status", "BOL.ui.status": "Status",
"BOL.ui.toactivated": "Aktiv (>Deaktivieren)", "BOL.ui.toactivated": "Aktiv (>Deaktivieren)",
"BOL.ui.todeactivated": "Inaktiv (>Aktivieren)", "BOL.ui.todeactivated": "Inaktiv (>Aktivieren)",
"BOL.ui.armorAgiMalus": "Rüschtung+Schild-Malus (Geschick)", "BOL.ui.armorAgiMalus": "Rüschtung+Schild-Malus (Geschick)",
"BOL.ui.armorInitMalus": "Rüstungsmalus (Init)", "BOL.ui.armorInitMalus": "Rüstungsmalus (Init)",
"BOL.ui.attackValue": "Angriffswert", "BOL.ui.attackValue": "Angriffswert",
"BOL.ui.initMalus": "Init malus", "BOL.ui.initMalus": "Init malus",
"BOL.ui.createEquipment": "Create Equipment", "BOL.ui.createEquipment": "Create Equipment",
@@ -177,7 +177,7 @@
"BOL.featureSubtypes.fightOption": "Kampfoption", "BOL.featureSubtypes.fightOption": "Kampfoption",
"BOL.bougette.nomoney": "Mittellos", "BOL.bougette.nomoney": "Mittellos",
"BOL.bougette.tolive": "Zum Überleben", "BOL.bougette.tolive": "Zum Überleben",
"BOL.bougette.easylife": "Einfaches Leben", "BOL.bougette.easylife": "Einfaches Leben",
"BOL.bougette.luxury" : "Luxuriöses Leben", "BOL.bougette.luxury" : "Luxuriöses Leben",
"BOL.bougette.rich": "Reich!", "BOL.bougette.rich": "Reich!",
@@ -224,14 +224,14 @@
"BOL.protectionCategory.other": "Verschiedenes", "BOL.protectionCategory.other": "Verschiedenes",
"BOL.spellItem.charm": "Zauber", "BOL.spellItem.charm": "Zauber",
"BOL.spellItem.circle1": "Erster Kreis", "BOL.spellItem.circle1": "Erster Kreis",
"BOL.spellItem.circle2": "Zweiter Kreis", "BOL.spellItem.circle2": "Zweiter Kreis",
"BOL.spellItem.circle3": "Dritter Kreis", "BOL.spellItem.circle3": "Dritter Kreis",
"BOL.alchemyItem.common": "Häufig", "BOL.alchemyItem.common": "Häufig",
"BOL.alchemyItem.scarce": "Selten", "BOL.alchemyItem.scarce": "Selten",
"BOL.alchemyItem.legend": "Legendär", "BOL.alchemyItem.legend": "Legendär",
"BOL.alchemyItem.mythic": "Mystisch", "BOL.alchemyItem.mythic": "Mystisch",
"BOL.weaponCategory.melee": "Nahkampf", "BOL.weaponCategory.melee": "Nahkampf",
"BOL.weaponCategory.ranged": "Fernkampf", "BOL.weaponCategory.ranged": "Fernkampf",
@@ -290,6 +290,7 @@
"BOL.itemProperty.difficulty": "Schwierigkeit", "BOL.itemProperty.difficulty": "Schwierigkeit",
"BOL.itemProperty.natural": "Natürliche Waffe", "BOL.itemProperty.natural": "Natürliche Waffe",
"BOL.itemProperty.onlymodifier": "Nur Modifikator (d.h. Angriffe von Kreaturen)", "BOL.itemProperty.onlymodifier": "Nur Modifikator (d.h. Angriffe von Kreaturen)",
"BOL.itemProperty.attackMalusDice": "Angriffsmalus (Würfel)",
"BOL.itemStat.quantity": "Anzahl", "BOL.itemStat.quantity": "Anzahl",
"BOL.itemStat.weight": "Gewicht", "BOL.itemStat.weight": "Gewicht",
@@ -359,7 +360,7 @@
"BOL.ui.astrologerPoints": "Points d'Astrologie", "BOL.ui.astrologerPoints": "Points d'Astrologie",
"BOL.ui.astrologerPointsLabel": "Points d'Astrologie actuels", "BOL.ui.astrologerPointsLabel": "Points d'Astrologie actuels",
"BOL.ui.ishoroscopemajor": "Horoscope Majeur (ie de groupe) ?", "BOL.ui.ishoroscopemajor": "Horoscope Majeur (ie de groupe) ?",
"BOL.ui.answer": "Réponse", "BOL.ui.answer": "Réponse",
"BOL.ui.horoscopefavorable": "Favorable (1dB)", "BOL.ui.horoscopefavorable": "Favorable (1dB)",
"BOL.ui.horoscopeunfavorable": "Défavorable (1dM)", "BOL.ui.horoscopeunfavorable": "Défavorable (1dM)",
"BOL.ui.horoscopes": "Horoscopes", "BOL.ui.horoscopes": "Horoscopes",
@@ -468,7 +469,7 @@
"BOL.chat.welcome4": "Im Discord findet ihr Support für die FoundryVTT-Implementierung dieses Systems: https://discord.gg/pPSDNJk", "BOL.chat.welcome4": "Im Discord findet ihr Support für die FoundryVTT-Implementierung dieses Systems: https://discord.gg/pPSDNJk",
"BOL.chat.welcome5": "Auf ein gutes Spiel in Lemuria!", "BOL.chat.welcome5": "Auf ein gutes Spiel in Lemuria!",
"BOL.chat.welcome6": "", "BOL.chat.welcome6": "",
"BOL.chat.bolRulebookMessage": "Don't miss the full Rulebook module (including Sagas) available at : https://www.ludospherik-editions.com/en_gb/ !", "BOL.chat.bolRulebookMessage": "Don't miss the full Rulebook module (including Sagas) available at : https://www.ludospherik-editions.com/en_gb/ !",
"BOL.settings.rollArmor": "Roll for armor", "BOL.settings.rollArmor": "Roll for armor",
"BOL.settings.rollArmorTooltip": "Roll for armor value, fixed value if unchecked", "BOL.settings.rollArmorTooltip": "Roll for armor value, fixed value if unchecked",

View File

@@ -47,7 +47,7 @@
"BOL.ui.astrologerPoints": "Points d'Astrologie", "BOL.ui.astrologerPoints": "Points d'Astrologie",
"BOL.ui.astrologerPointsLabel": "Points d'Astrologie actuels", "BOL.ui.astrologerPointsLabel": "Points d'Astrologie actuels",
"BOL.ui.ishoroscopemajor": "Horoscope Majeur (ie de groupe) ?", "BOL.ui.ishoroscopemajor": "Horoscope Majeur (ie de groupe) ?",
"BOL.ui.answer": "Réponse", "BOL.ui.answer": "Réponse",
"BOL.ui.horoscopefavorable": "Favorable (1dB)", "BOL.ui.horoscopefavorable": "Favorable (1dB)",
"BOL.ui.horoscopeunfavorable": "Défavorable (1dM)", "BOL.ui.horoscopeunfavorable": "Défavorable (1dM)",
"BOL.ui.horoscopes": "Horoscopes", "BOL.ui.horoscopes": "Horoscopes",
@@ -132,7 +132,7 @@
"BOL.ui.defender": "Defender", "BOL.ui.defender": "Defender",
"BOL.ui.difficulty": "Difficulty", "BOL.ui.difficulty": "Difficulty",
"BOL.ui.spellProperties": "Spell Properties", "BOL.ui.spellProperties": "Spell Properties",
"BOL.ui.duration": "Duration", "BOL.ui.duration": "Duration",
"BOL.ui.spellkeep": "Maintain", "BOL.ui.spellkeep": "Maintain",
"BOL.ui.concentrate": "Concentrate", "BOL.ui.concentrate": "Concentrate",
"BOL.ui.registerInit": "Register Init.", "BOL.ui.registerInit": "Register Init.",
@@ -156,7 +156,7 @@
"BOL.ui.makeAlchemy": "Make Alchemy", "BOL.ui.makeAlchemy": "Make Alchemy",
"BOL.ui.alchemyCostTotal": "Alchemy Points Total Cost", "BOL.ui.alchemyCostTotal": "Alchemy Points Total Cost",
"BOL.ui.alchemyInvest": "Invest Alchemy Points", "BOL.ui.alchemyInvest": "Invest Alchemy Points",
"BOL.ui.alchemyCurrent": "Current Alchemy Points in Object", "BOL.ui.alchemyCurrent": "Current Alchemy Points in Object",
"BOL.ui.advance": "Status", "BOL.ui.advance": "Status",
"BOL.ui.isadvantage": "Provides a bonus dice?", "BOL.ui.isadvantage": "Provides a bonus dice?",
"BOL.ui.bonusmalus": "Additional bonus/penalty", "BOL.ui.bonusmalus": "Additional bonus/penalty",
@@ -173,8 +173,8 @@
"BOL.ui.status": "Status", "BOL.ui.status": "Status",
"BOL.ui.toactivated": "Active (>Deactivated)", "BOL.ui.toactivated": "Active (>Deactivated)",
"BOL.ui.todeactivated": "Inactive (>Active)", "BOL.ui.todeactivated": "Inactive (>Active)",
"BOL.ui.armorAgiMalus": "Armor+Shield Modifier (Agi)", "BOL.ui.armorAgiMalus": "Armor+Shield Modifier (Agi)",
"BOL.ui.armorInitMalus": "Armor Modifier (Init)", "BOL.ui.armorInitMalus": "Armor Modifier (Init)",
"BOL.ui.attackValue": "Attack Value", "BOL.ui.attackValue": "Attack Value",
"BOL.ui.attackModifier": "Attack Modifier", "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.weaponbonus": "Cette arme bénéficie déja d'un Dé de Bonus (Arme Favorite prise en compte, par exemple)",
@@ -251,7 +251,7 @@
"BOL.featureSubtypes.xplog": "XP Journal", "BOL.featureSubtypes.xplog": "XP Journal",
"BOL.bougette.nomoney": "Nothing", "BOL.bougette.nomoney": "Nothing",
"BOL.bougette.tolive": "To live", "BOL.bougette.tolive": "To live",
"BOL.bougette.easylife": "Easy Life", "BOL.bougette.easylife": "Easy Life",
"BOL.bougette.luxury" : "Luxury life", "BOL.bougette.luxury" : "Luxury life",
"BOL.bougette.rich": "Rich!", "BOL.bougette.rich": "Rich!",
@@ -299,15 +299,15 @@
"BOL.protectionCategory.helm": "Helm", "BOL.protectionCategory.helm": "Helm",
"BOL.protectionCategory.other": "Other", "BOL.protectionCategory.other": "Other",
"BOL.spellItem.charm": "Charm", "BOL.spellItem.charm": "Charm",
"BOL.spellItem.circle1": "First Circle", "BOL.spellItem.circle1": "First Circle",
"BOL.spellItem.circle2": "Second Circle", "BOL.spellItem.circle2": "Second Circle",
"BOL.spellItem.circle3": "Third Circle", "BOL.spellItem.circle3": "Third Circle",
"BOL.alchemyItem.common": "Common", "BOL.alchemyItem.common": "Common",
"BOL.alchemyItem.scarce": "Scarce", "BOL.alchemyItem.scarce": "Scarce",
"BOL.alchemyItem.legend": "Legendary", "BOL.alchemyItem.legend": "Legendary",
"BOL.alchemyItem.mythic": "Mythic", "BOL.alchemyItem.mythic": "Mythic",
"BOL.weaponCategory.melee": "Melee", "BOL.weaponCategory.melee": "Melee",
"BOL.weaponCategory.ranged": "Ranged", "BOL.weaponCategory.ranged": "Ranged",
@@ -365,6 +365,7 @@
"BOL.itemProperty.difficulty": "Difficulty", "BOL.itemProperty.difficulty": "Difficulty",
"BOL.itemProperty.natural": "Natural weapon", "BOL.itemProperty.natural": "Natural weapon",
"BOL.itemProperty.onlymodifier": "Modifier only (ie creatures attacks)", "BOL.itemProperty.onlymodifier": "Modifier only (ie creatures attacks)",
"BOL.itemProperty.attackMalusDice": "Attack Malus (Dice)",
"BOL.itemStat.quantity": "Quantity", "BOL.itemStat.quantity": "Quantity",
"BOL.itemStat.weight": "Weight", "BOL.itemStat.weight": "Weight",
@@ -458,7 +459,7 @@
"BOL.size.colossal": "Colossal", "BOL.size.colossal": "Colossal",
"BOL.chat.fightactive": "{name} activates the fight option {foName} for this round !", "BOL.chat.fightactive": "{name} activates the fight option {foName} for this round !",
"BOL.chat.fightunactive": "{name} deactivates the fight option {foName} for this round !", "BOL.chat.fightunactive": "{name} deactivates the fight option {foName} for this round !",
"BOL.chat.isdead": "{name} is dead !", "BOL.chat.isdead": "{name} is dead !",
"BOL.chat.epitaph": "Keep his name and memory in honor !", "BOL.chat.epitaph": "Keep his name and memory in honor !",
"BOL.chat.vitalityzero": "Lifeblood of {name} is now {hp} : he is going to fall unconscious !", "BOL.chat.vitalityzero": "Lifeblood of {name} is now {hp} : he is going to fall unconscious !",
@@ -543,18 +544,24 @@
"BOL.chat.criticalbuttonjournal": "Legendary/Heroic Success", "BOL.chat.criticalbuttonjournal": "Legendary/Heroic Success",
"BOL.chat.nodamage": "Do not apply damages", "BOL.chat.nodamage": "Do not apply damages",
"BOL.chat.armorRoll": "Armor roll", "BOL.chat.armorRoll": "Armor roll",
"BOL.chat.bolRulebookMessage": "Don't miss the full Rulebook module (including Sagas) available at : https://www.ludospherik-editions.com/en_gb/ !", "BOL.chat.bolRulebookMessage": "Don't miss the full Rulebook module (including Sagas) available at : https://www.ludospherik-editions.com/en_gb/ !",
"BOL.dialog.soeasy": "So easy (+4)", "BOL.dialog.soeasy": "So easy (+4)",
"BOL.dialog.soeasy3": "So easy (+3)",
"BOL.dialog.veryeasy": "Very easy (+2)", "BOL.dialog.veryeasy": "Very easy (+2)",
"BOL.dialog.easy": "Easy (+1)", "BOL.dialog.easy": "Easy (+1)",
"BOL.dialog.moderate": "Moderate (0)", "BOL.dialog.moderate": "Moderate (0)",
"BOL.dialog.hard": "Hard (-1)", "BOL.dialog.hard": "Hard (-1)",
"BOL.dialog.tough": "Tough (-2)", "BOL.dialog.tough": "Tough (-2)",
"BOL.dialog.tough3": "Tough (-3)",
"BOL.dialog.demanding": "Demanding (-4)", "BOL.dialog.demanding": "Demanding (-4)",
"BOL.dialog.demanding5": "Demanding (-5)",
"BOL.dialog.formidable": "Formidable (-6)", "BOL.dialog.formidable": "Formidable (-6)",
"BOL.dialog.formidable7": "Formidable (-7)",
"BOL.dialog.heroic": "Heroic (-8)", "BOL.dialog.heroic": "Heroic (-8)",
"BOL.dialog.heroic9": "Heroic (-9)",
"BOL.dialog.mythic": "Mythic (-10)", "BOL.dialog.mythic": "Mythic (-10)",
"BOL.dialog.mythic11": "Mythic (-11)",
"BOL.dialog.divine": "Divine (-12)", "BOL.dialog.divine": "Divine (-12)",
"BOL.dialog.pointblank": "Point blank (+1)", "BOL.dialog.pointblank": "Point blank (+1)",
@@ -563,7 +570,7 @@
"BOL.dialog.long": "Long (-2)", "BOL.dialog.long": "Long (-2)",
"BOL.dialog.distant": "Distant (-4)", "BOL.dialog.distant": "Distant (-4)",
"BOL.dialog.extreme": "Extreme (-6)", "BOL.dialog.extreme": "Extreme (-6)",
"BOL.dialog.utmost": "Utmost (-8)", "BOL.dialog.utmost": "Utmost (-8)",
"BOL.ui.name": "Name", "BOL.ui.name": "Name",
"BOL.ui.xp": "Experience", "BOL.ui.xp": "Experience",
@@ -579,11 +586,11 @@
"BOL.ui.bionotes": "Notes", "BOL.ui.bionotes": "Notes",
"BOL.chat.welcome1": "Welcome to Barbarians of Lemuria (Ludospherik version)", "BOL.chat.welcome1": "Welcome to Barbarians of Lemuria (Ludospherik version)",
"BOL.chat.welcome2": "Books are necessary to play, and ca be found here : http://www.ludospherik.fr/content/14-barbarians-of-lemuria", "BOL.chat.welcome2": "Books are necessary to play, and <a href='http://www.ludospherik.fr/content/14-barbarians-of-lemuria'>can be found here.</a> ",
"BOL.chat.welcome3": "The integrated maps are authorized by Guillaume Tavernier and Ludospherik. Thanks to them !.", "BOL.chat.welcome3": "The integrated maps are authorized by Emmanuel Roudier and Ludospherik. Thanks to them !.",
"BOL.chat.welcome4": "All support for this system is available on this Discord server : https://discord.gg/pPSDNJk", "BOL.chat.welcome4": "All support for this system is available on this Discord server : https://discord.gg/pPSDNJk",
"BOL.chat.welcome5": "Good game in Lemuria !", "BOL.chat.welcome5": "<strong>In order to see compendiums in English, you must install and enable the Babele module.</strong>",
"BOL.chat.welcome6": "", "BOL.chat.welcome6": "Good game in Lemuria !",
"BOL.settings.rollArmor": "Roll for armor", "BOL.settings.rollArmor": "Roll for armor",
"BOL.settings.rollArmorTooltip": "Roll for armor value, fixed value if unchecked", "BOL.settings.rollArmorTooltip": "Roll for armor value, fixed value if unchecked",

View File

@@ -132,7 +132,7 @@
"BOL.ui.defender": "Defensor", "BOL.ui.defender": "Defensor",
"BOL.ui.difficulty": "Dificultad", "BOL.ui.difficulty": "Dificultad",
"BOL.ui.spellProperties": "Propiedades Conjuro", "BOL.ui.spellProperties": "Propiedades Conjuro",
"BOL.ui.duration": "Duración", "BOL.ui.duration": "Duración",
"BOL.ui.spellkeep": "Mantenimiento", "BOL.ui.spellkeep": "Mantenimiento",
"BOL.ui.concentrate": "Concentración", "BOL.ui.concentrate": "Concentración",
"BOL.ui.registerInit": "Registrar Inic.", "BOL.ui.registerInit": "Registrar Inic.",
@@ -156,7 +156,7 @@
"BOL.ui.makeAlchemy": "Realizar Alquimia", "BOL.ui.makeAlchemy": "Realizar Alquimia",
"BOL.ui.alchemyCostTotal": "Coste Total Puntos Alquimia", "BOL.ui.alchemyCostTotal": "Coste Total Puntos Alquimia",
"BOL.ui.alchemyInvest": "Invertir Puntos Alquimia", "BOL.ui.alchemyInvest": "Invertir Puntos Alquimia",
"BOL.ui.alchemyCurrent": "Puntos Alquimia actuales en Objeto", "BOL.ui.alchemyCurrent": "Puntos Alquimia actuales en Objeto",
"BOL.ui.advance": "Estado", "BOL.ui.advance": "Estado",
"BOL.ui.isadvantage": "¿Da un dado ventaja?", "BOL.ui.isadvantage": "¿Da un dado ventaja?",
"BOL.ui.bonusmalus": "Ventaja/desventaja adicional", "BOL.ui.bonusmalus": "Ventaja/desventaja adicional",
@@ -245,7 +245,7 @@
"BOL.featureSubtypes.xplog": "Diario PX", "BOL.featureSubtypes.xplog": "Diario PX",
"BOL.bougette.nomoney": "Nada", "BOL.bougette.nomoney": "Nada",
"BOL.bougette.tolive": "Vivir justo", "BOL.bougette.tolive": "Vivir justo",
"BOL.bougette.easylife": "Vida simple", "BOL.bougette.easylife": "Vida simple",
"BOL.bougette.luxury" : "Vida lujosa", "BOL.bougette.luxury" : "Vida lujosa",
"BOL.bougette.rich": "¡Rico!", "BOL.bougette.rich": "¡Rico!",
@@ -293,15 +293,15 @@
"BOL.protectionCategory.helm": "Casco", "BOL.protectionCategory.helm": "Casco",
"BOL.protectionCategory.other": "Otro", "BOL.protectionCategory.other": "Otro",
"BOL.spellItem.charm": "Truco", "BOL.spellItem.charm": "Truco",
"BOL.spellItem.circle1": "Primer Círculo", "BOL.spellItem.circle1": "Primer Círculo",
"BOL.spellItem.circle2": "Segundo Círculo", "BOL.spellItem.circle2": "Segundo Círculo",
"BOL.spellItem.circle3": "Tercer Círculo", "BOL.spellItem.circle3": "Tercer Círculo",
"BOL.alchemyItem.common": "Común", "BOL.alchemyItem.common": "Común",
"BOL.alchemyItem.scarce": "Escaso", "BOL.alchemyItem.scarce": "Escaso",
"BOL.alchemyItem.legend": "Legendario", "BOL.alchemyItem.legend": "Legendario",
"BOL.alchemyItem.mythic": "Mítico", "BOL.alchemyItem.mythic": "Mítico",
"BOL.weaponCategory.melee": "Melé", "BOL.weaponCategory.melee": "Melé",
"BOL.weaponCategory.ranged": "Distancia", "BOL.weaponCategory.ranged": "Distancia",
@@ -359,6 +359,7 @@
"BOL.itemProperty.difficulty": "Dificultad", "BOL.itemProperty.difficulty": "Dificultad",
"BOL.itemProperty.natural": "Arma natural", "BOL.itemProperty.natural": "Arma natural",
"BOL.itemProperty.onlymodifier": "Sólo modificador (ej criatura)", "BOL.itemProperty.onlymodifier": "Sólo modificador (ej criatura)",
"BOL.itemProperty.attackMalusDice": "Dado Desventaja Ataque",
"BOL.itemStat.quantity": "Cantidad", "BOL.itemStat.quantity": "Cantidad",
"BOL.itemStat.weight": "Peso", "BOL.itemStat.weight": "Peso",
@@ -452,7 +453,7 @@
"BOL.size.colossal": "Colosal", "BOL.size.colossal": "Colosal",
"BOL.chat.fightactive": "¡Activa la opción de combate {foName} este asalto!", "BOL.chat.fightactive": "¡Activa la opción de combate {foName} este asalto!",
"BOL.chat.fightunactive": "¡Desactiva la opción de combate {foName} este asalto!", "BOL.chat.fightunactive": "¡Desactiva la opción de combate {foName} este asalto!",
"BOL.chat.isdead": "¡{name} esta muerto!", "BOL.chat.isdead": "¡{name} esta muerto!",
"BOL.chat.epitaph": "¡Guardar el honor de su nombre y su memoria!", "BOL.chat.epitaph": "¡Guardar el honor de su nombre y su memoria!",
"BOL.chat.vitalityzero": "Vitalidad de {name} es {hp}: ¡va a caer inconsciente!", "BOL.chat.vitalityzero": "Vitalidad de {name} es {hp}: ¡va a caer inconsciente!",
@@ -534,7 +535,7 @@
"BOL.chat.criticalinfo": "¡Esto es un éxito Asombroso o Legendario! Escoge tus opciones y efectos", "BOL.chat.criticalinfo": "¡Esto es un éxito Asombroso o Legendario! Escoge tus opciones y efectos",
"BOL.chat.criticalbuttonjournal": "Éxito Asombroso/Legendario", "BOL.chat.criticalbuttonjournal": "Éxito Asombroso/Legendario",
"BOL.chat.armorRoll": "Tirada de Armadura", "BOL.chat.armorRoll": "Tirada de Armadura",
"BOL.chat.bolRulebookMessage": "Don't miss the full Rulebook module (including Sagas) available at : https://www.ludospherik-editions.com/en_gb/ !", "BOL.chat.bolRulebookMessage": "Don't miss the full Rulebook module (including Sagas) available at : https://www.ludospherik-editions.com/en_gb/ !",
"BOL.dialog.soeasy": "Demasiado fácil (+4)", "BOL.dialog.soeasy": "Demasiado fácil (+4)",
"BOL.dialog.veryeasy": "Muy fácil (+2)", "BOL.dialog.veryeasy": "Muy fácil (+2)",
@@ -554,7 +555,7 @@
"BOL.dialog.long": "Larga (-2)", "BOL.dialog.long": "Larga (-2)",
"BOL.dialog.distant": "Distante (-4)", "BOL.dialog.distant": "Distante (-4)",
"BOL.dialog.extreme": "Extrema (-6)", "BOL.dialog.extreme": "Extrema (-6)",
"BOL.dialog.utmost": "Límite (-8)", "BOL.dialog.utmost": "Límite (-8)",
"BOL.ui.name": "Nombre", "BOL.ui.name": "Nombre",
"BOL.ui.xp": "Experiencia", "BOL.ui.xp": "Experiencia",

View File

@@ -50,7 +50,7 @@
"BOL.ui.astrologerPoints": "Points d'Astrologie", "BOL.ui.astrologerPoints": "Points d'Astrologie",
"BOL.ui.astrologerPointsLabel": "Points d'Astrologie actuels", "BOL.ui.astrologerPointsLabel": "Points d'Astrologie actuels",
"BOL.ui.ishoroscopemajor": "Horoscope Majeur (ie de groupe) ?", "BOL.ui.ishoroscopemajor": "Horoscope Majeur (ie de groupe) ?",
"BOL.ui.answer": "Réponse", "BOL.ui.answer": "Réponse",
"BOL.ui.horoscopefavorable": "Favorable (1dB)", "BOL.ui.horoscopefavorable": "Favorable (1dB)",
"BOL.ui.horoscopeunfavorable": "Défavorable (1dM)", "BOL.ui.horoscopeunfavorable": "Défavorable (1dM)",
"BOL.ui.horoscopes": "Horoscopes", "BOL.ui.horoscopes": "Horoscopes",
@@ -137,7 +137,7 @@
"BOL.ui.duration": "Durée", "BOL.ui.duration": "Durée",
"BOL.ui.spellkeep": "Prolongation possible ?", "BOL.ui.spellkeep": "Prolongation possible ?",
"BOL.ui.concentrate": "Concentration à maintenir ?", "BOL.ui.concentrate": "Concentration à maintenir ?",
"BOL.ui.aggressive": "Sort aggressif ?", "BOL.ui.aggressive": "Sort aggressif ?",
"BOL.ui.registerInit": "Enregistrer comme Init. de combat", "BOL.ui.registerInit": "Enregistrer comme Init. de combat",
"BOL.ui.initMalus": "Malus d'initiative", "BOL.ui.initMalus": "Malus d'initiative",
"BOL.ui.magicnewrules": "Règles supplémentaires (cf. supplément fan-made Sorcellerie!)", "BOL.ui.magicnewrules": "Règles supplémentaires (cf. supplément fan-made Sorcellerie!)",
@@ -147,7 +147,7 @@
"BOL.ui.flaw":"Désanvatage", "BOL.ui.flaw":"Désanvatage",
"BOL.ui.cost":"Cout XP", "BOL.ui.cost":"Cout XP",
"BOL.ui.date":"Date", "BOL.ui.date":"Date",
"BOL.ui.isSorcerer": "Carrière de Sorcier ?", "BOL.ui.isSorcerer": "Carrière de Sorcier ?",
"BOL.ui.isAlchemist": "Carrière d'Alchimiste ?", "BOL.ui.isAlchemist": "Carrière d'Alchimiste ?",
"BOL.ui.isPriest": "Carrière de Prêtre/Druide ?", "BOL.ui.isPriest": "Carrière de Prêtre/Druide ?",
@@ -259,7 +259,7 @@
"BOL.bougette.easylife": "A l'aise", "BOL.bougette.easylife": "A l'aise",
"BOL.bougette.luxury": "Luxe&Volupté", "BOL.bougette.luxury": "Luxe&Volupté",
"BOL.bougette.rich": "Richissime", "BOL.bougette.rich": "Richissime",
"BOL.featureSubtypes.origin": "Origine", "BOL.featureSubtypes.origin": "Origine",
"BOL.featureSubtypes.race": "Race", "BOL.featureSubtypes.race": "Race",
"BOL.featureSubtypes.career": "Carrière", "BOL.featureSubtypes.career": "Carrière",
@@ -393,8 +393,9 @@
"BOL.itemProperty.crewDamageMultiplier": "Multiplicateur", "BOL.itemProperty.crewDamageMultiplier": "Multiplicateur",
"BOL.itemProperty.isboarding": "Abordage", "BOL.itemProperty.isboarding": "Abordage",
"BOL.itemProperty.isspur": "Eperonnage", "BOL.itemProperty.isspur": "Eperonnage",
"BOL.itemProperty.isbreakrow": "Briser les rames", "BOL.itemProperty.isbreakrow": "Briser les rames",
"BOL.itemProperty.attackMalusDice": "Malus d'attaque (Dés)",
"BOL.itemStat.quantity": "Quantité", "BOL.itemStat.quantity": "Quantité",
"BOL.itemStat.weight": "Poids", "BOL.itemStat.weight": "Poids",
"BOL.itemStat.price": "Prix", "BOL.itemStat.price": "Prix",
@@ -486,7 +487,7 @@
"BOL.size.colossal": "Monstrueuse", "BOL.size.colossal": "Monstrueuse",
"BOL.chat.fightactive": "{name} active son option de combat {foName} pour ce round !", "BOL.chat.fightactive": "{name} active son option de combat {foName} pour ce round !",
"BOL.chat.fightunactive": "{name} désactive son option de combat {foName} pour ce round !", "BOL.chat.fightunactive": "{name} désactive son option de combat {foName} pour ce round !",
"BOL.chat.isdead": "{name} est mort !", "BOL.chat.isdead": "{name} est mort !",
"BOL.chat.epitaph": "Que son nom soit honoré sur les champs de batailles de Lémurie !", "BOL.chat.epitaph": "Que son nom soit honoré sur les champs de batailles de Lémurie !",
"BOL.chat.vitalityzero": "La Vitalité de {name} est {hp} : il va s'écrouler au sol et sombrer dans l'inconscience !", "BOL.chat.vitalityzero": "La Vitalité de {name} est {hp} : il va s'écrouler au sol et sombrer dans l'inconscience !",
@@ -569,21 +570,29 @@
"BOL.chat.criticalinfo": "C'est un succès Héroïque ! Choisissez vos options et effets !", "BOL.chat.criticalinfo": "C'est un succès Héroïque ! Choisissez vos options et effets !",
"BOL.chat.criticallegendaryinfo": "C'est un succès Légendaire ! Choisissez vos options et effets !", "BOL.chat.criticallegendaryinfo": "C'est un succès Légendaire ! Choisissez vos options et effets !",
"BOL.chat.criticalbuttonjournal": "Succès Héroïque/Légendaire", "BOL.chat.criticalbuttonjournal": "Succès Héroïque/Légendaire",
"BOL.chat.bolRulebookMessage": "N'oubliez pas le module complet du Livre de Règle et des Sagas disponible ici : https://www.ludospherik-editions.com !", "BOL.chat.bolRulebookMessage": "N'oubliez pas le module complet du Livre de Règle et des Sagas disponible ici : https://www.ludospherik-editions.com !",
"BOL.chat.losshp": "{name} a perdu {lossHP} points de Vitalité. Si il se repose quelques minutes, il peut récupérer {recupHP} points de Vitalité.", "BOL.chat.losshp": "{name} a perdu {lossHP} points de Vitalité. Si il se repose quelques minutes, il peut récupérer {recupHP} points de Vitalité.",
"BOL.chat.applyrecup": "Récupérer pendant quelques minutes (+{recupHP} Vitalité)", "BOL.chat.applyrecup": "Récupérer pendant quelques minutes (+{recupHP} Vitalité)",
"BOL.chat.inforecup": "{name} vient de récupérer {recupHP} points de Vitalité après quelques minutes de repos.", "BOL.chat.inforecup": "{name} vient de récupérer {recupHP} points de Vitalité après quelques minutes de repos.",
"BOL.chat.defenseReduceDamage2": "Vous pouvez également dépenser 1 Point d'Héroisme/Vilainie pour regagner [[/r 2d6KH(1D6B)]] points de vitalité, cela vous coutera votre prochaine action.",
"BOL.chat.armorRoll": "Jet d'armure ",
"BOL.dialog.soeasy": "Inmanquable (+4)", "BOL.dialog.soeasy": "Inmanquable (+4)",
"BOL.dialog.soeasy3": "Inmanquable (+3)",
"BOL.dialog.veryeasy": "Trés Facile (+2)", "BOL.dialog.veryeasy": "Trés Facile (+2)",
"BOL.dialog.easy": "Facile (+1)", "BOL.dialog.easy": "Facile (+1)",
"BOL.dialog.moderate": "Moyenne (0)", "BOL.dialog.moderate": "Moyenne (0)",
"BOL.dialog.hard": "Ardue (-1)", "BOL.dialog.hard": "Ardue (-1)",
"BOL.dialog.tough": "Difficile (-2)", "BOL.dialog.tough": "Difficile (-2)",
"BOL.dialog.tough3": "Difficile (-3)",
"BOL.dialog.demanding": "Très Difficile (-4)", "BOL.dialog.demanding": "Très Difficile (-4)",
"BOL.dialog.demanding5": "Très Difficile (-5)",
"BOL.dialog.formidable": "Impossible (-6)", "BOL.dialog.formidable": "Impossible (-6)",
"BOL.dialog.formidable7": "Impossible (-7)",
"BOL.dialog.heroic": "Héroïque (-8)", "BOL.dialog.heroic": "Héroïque (-8)",
"BOL.dialog.heroic9": "Héroïque (-9)",
"BOL.dialog.mythic": "Mythique (-10)", "BOL.dialog.mythic": "Mythique (-10)",
"BOL.dialog.mythic11": "Mythique (-11)",
"BOL.dialog.divine": "Divine (-12)", "BOL.dialog.divine": "Divine (-12)",
"BOL.dialog.pointblank": "Bout portant (+1)", "BOL.dialog.pointblank": "Bout portant (+1)",
@@ -611,16 +620,15 @@
"BOL.chat.welcome1": "Bienvenue dans Barbarians of Lemuria (Ludospherik version)", "BOL.chat.welcome1": "Bienvenue dans Barbarians of Lemuria (Ludospherik version)",
"BOL.chat.welcome2": "Les livres nécessaires pour jouer sont disponibles sur le site de <a href='http://www.ludospherik.fr/content/14-barbarians-of-lemuria'>l'éditeur Ludospherik.</a>", "BOL.chat.welcome2": "Les livres nécessaires pour jouer sont disponibles sur le site de <a href='http://www.ludospherik.fr/content/14-barbarians-of-lemuria'>l'éditeur Ludospherik.</a>",
"BOL.chat.welcome3": "Les cartes intégrées au système le sont grace à l'aimable autorisation de leur auteur Guillaume Tavernier et des éditions Ludospherik. Merci à eux !.", "BOL.chat.welcome3": "Les cartes intégrées au système le sont grace à l'aimable autorisation d'Emmanuel Roudier et des éditions Ludospherik. Merci à eux !.",
"BOL.chat.welcome4": "Tout le support et le suivi de ce système est disponible via le <a href='https://discord.gg/pPSDNJk'>Discord Foundry FR</a>.", "BOL.chat.welcome4": "Tout le support et le suivi de ce système est disponible via le <a href='https://discord.gg/pPSDNJk'>Discord Foundry FR</a>.",
"BOL.chat.welcome5": "Consulter l'aide en ligne pour plus d'informations : @UUID[Compendium.bol.aides-de-jeu.JournalEntry.8ihDiCxC47fcdKVA]{Aide du Jeu}.", "BOL.chat.welcome5": "Consulter l'aide en ligne pour plus d'informations : @UUID[Compendium.bol.aides-de-jeu.JournalEntry.8ihDiCxC47fcdKVA]{Aide du Jeu}.<br>Si vous souhaitez jouer en anglais, n'oubliez pas d'activer le module Babele.",
"BOL.chat.welcome6": "Bon jeu en Lemurie !", "BOL.chat.welcome6": "Bon jeu en Lemurie !",
"BOL.chat.nodamage": "Ne pas appliquer les dommages", "BOL.chat.nodamage": "Ne pas appliquer les dommages",
"BOL.chat.pcwarning": "Attention ! Aucun personnage n'est relié au joueur !", "BOL.chat.pcwarning": "Attention ! Aucun personnage n'est relié au joueur !",
"BOL.chat.pcwarningmsg": "<b>ATTENTION</b> Le joueur n'est relié à aucun personnage !", "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.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.chat.pcnotlinkedmsg": "<b>ATTENTION</b> Le token du personnage joueur n'est pas relié à l'acteur !",
"BOL.chat.armorRoll": "Jet d'armure",
"BOL.settings.rollArmor": "Effectuer des jets pour les armures", "BOL.settings.rollArmor": "Effectuer des jets pour les armures",
"BOL.settings.rollArmorTooltip": "Effectue un jet de dés pour les armures (valeur fixe si désactivé)", "BOL.settings.rollArmorTooltip": "Effectue un jet de dés pour les armures (valeur fixe si désactivé)",
@@ -643,4 +651,4 @@
"EFFECT.StatusProne": "A terre", "EFFECT.StatusProne": "A terre",
"EFFECT.StatusDead": "Mort" "EFFECT.StatusDead": "Mort"
} }

View File

@@ -5,7 +5,7 @@
import { BoLRoll } from "../controllers/bol-rolls.js"; import { BoLRoll } from "../controllers/bol-rolls.js";
import { BoLUtility } from "../system/bol-utility.js"; import { BoLUtility } from "../system/bol-utility.js";
export class BoLActorSheet extends ActorSheet { export class BoLActorSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -59,7 +59,7 @@ export class BoLActorSheet extends ActorSheet {
let system = foundry.utils.duplicate(game.bol.config.defaultNaturalProtection) 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 }); this.actor.createEmbeddedDocuments('Item', [{ name: game.i18n.localize("BOL.ui.newNaturalProtection"), type: "item", system }], { renderSheet: true });
}); });
html.find(".toggle-fight-option").click((ev) => { html.find(".toggle-fight-option").click((ev) => {
const li = $(ev.currentTarget).parents(".item") const li = $(ev.currentTarget).parents(".item")
this.actor.toggleFightOption(li.data("itemId")) this.actor.toggleFightOption(li.data("itemId"))
@@ -170,8 +170,8 @@ export class BoLActorSheet extends ActorSheet {
formData.charType = this.actor.getCharType() formData.charType = this.actor.getCharType()
formData.villainy = this.actor.getVillainy() formData.villainy = this.actor.getVillainy()
formData.isUndead = this.actor.isUndead() formData.isUndead = this.actor.isUndead()
formData.biography = await TextEditor.enrichHTML(this.object.system.details?.biography || "", { async: true }) formData.biography = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.details?.biography || "", { async: true })
formData.notes = await TextEditor.enrichHTML(this.object.system.details.notes || "", { async: true }) formData.notes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.details.notes || "", { async: true })
formData.isSorcerer = this.actor.isSorcerer() formData.isSorcerer = this.actor.isSorcerer()
formData.isAlchemist = this.actor.isAlchemist() formData.isAlchemist = this.actor.isAlchemist()
formData.isAstrologer = this.actor.isAstrologer() formData.isAstrologer = this.actor.isAstrologer()

View File

@@ -5,7 +5,7 @@
import { BoLRoll } from "../controllers/bol-rolls.js"; import { BoLRoll } from "../controllers/bol-rolls.js";
import { BoLUtility } from "../system/bol-utility.js"; import { BoLUtility } from "../system/bol-utility.js";
export class BoLHordeSheet extends ActorSheet { export class BoLHordeSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -116,7 +116,7 @@ export class BoLHordeSheet extends ActorSheet {
formData.options = this.options formData.options = this.options
formData.owner = this.document.isOwner formData.owner = this.document.isOwner
formData.editScore = this.options.editScore formData.editScore = this.options.editScore
formData.description = await TextEditor.enrichHTML(this.actor.system.description, {async: true}) formData.description = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.actor.system.description, {async: true})
formData.isGM = game.user.isGM formData.isGM = game.user.isGM

View File

@@ -5,7 +5,7 @@
import { BoLRoll } from "../controllers/bol-rolls.js"; import { BoLRoll } from "../controllers/bol-rolls.js";
import { BoLUtility } from "../system/bol-utility.js"; import { BoLUtility } from "../system/bol-utility.js";
export class BoLVehicleSheet extends ActorSheet { export class BoLVehicleSheet extends foundry.appv1.sheets.ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -127,7 +127,7 @@ export class BoLVehicleSheet extends ActorSheet {
formData.options = this.options formData.options = this.options
formData.owner = this.document.isOwner formData.owner = this.document.isOwner
formData.editScore = this.options.editScore formData.editScore = this.options.editScore
formData.description = await TextEditor.enrichHTML(this.actor.system.description, {async: true}) formData.description = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.actor.system.description, {async: true})
formData.isGM = game.user.isGM formData.isGM = game.user.isGM

View File

@@ -18,6 +18,9 @@ import { BoLHotbar } from "./system/bol-hotbar.js"
import { BoLCommands } from "./system/bol-commands.js" import { BoLCommands } from "./system/bol-commands.js"
import { BoLRoll } from "./controllers/bol-rolls.js" import { BoLRoll } from "./controllers/bol-rolls.js"
/* -------------------------------------------- */
const BOL_WELCOME_MESSAGE_URL = "https://www.uberwald.me/gitea/public/bol/raw/branch/v13/welcome-message-bol.html"
/* -------------------------------------------- */ /* -------------------------------------------- */
Hooks.once('init', async function () { Hooks.once('init', async function () {
@@ -31,7 +34,7 @@ Hooks.once('init', async function () {
config: BOL config: BOL
}; };
// Game socket // Game socket
game.socket.on("system.bol", sockmsg => { game.socket.on("system.bol", sockmsg => {
BoLUtility.onSocketMessage(sockmsg); BoLUtility.onSocketMessage(sockmsg);
}) })
@@ -51,13 +54,13 @@ Hooks.once('init', async function () {
CONFIG.Combat.documentClass = BoLCombatManager; CONFIG.Combat.documentClass = BoLCombatManager;
// Register sheet application classes // Register sheet application classes
Actors.unregisterSheet("core", ActorSheet); foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
Actors.registerSheet("bol", BoLActorSheet, { types: ["character", "encounter"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("bol", BoLActorSheet, { types: ["character", "encounter"], makeDefault: true })
Actors.registerSheet("bol", BoLVehicleSheet, { types: ["vehicle"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("bol", BoLVehicleSheet, { types: ["vehicle"], makeDefault: true })
Actors.registerSheet("bol", BoLHordeSheet, { types: ["horde"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("bol", BoLHordeSheet, { types: ["horde"], makeDefault: true })
Items.unregisterSheet("core", ItemSheet); foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
Items.registerSheet("bol", BoLItemSheet, { makeDefault: true }); foundry.documents.collections.Items.registerSheet("bol", BoLItemSheet, { makeDefault: true });
// Inot useful stuff // Inot useful stuff
BoLUtility.init() BoLUtility.init()
@@ -78,7 +81,7 @@ Hooks.once('init', async function () {
Babele.get().setSystemTranslationsDir("compendiums"); Babele.get().setSystemTranslationsDir("compendiums");
} }
}); });
@@ -86,14 +89,14 @@ Hooks.once('init', async function () {
function welcomeMessage() { function welcomeMessage() {
let content = `<div id="welcome-message-bol"><span class="rdd-roll-part"> let content = `<div id="welcome-message-bol"><span class="rdd-roll-part">
<strong>` + game.i18n.localize("BOL.chat.welcome1") + `</strong><p>` + <strong>` + game.i18n.localize("BOL.chat.welcome1") + `</strong><p>` +
game.i18n.localize("BOL.chat.welcome2") + "<p>" + game.i18n.localize("BOL.chat.welcome2") + "</p><p>" +
game.i18n.localize("BOL.chat.welcome3") + "<p>" + game.i18n.localize("BOL.chat.welcome3") + "</p><p>" +
game.i18n.localize("BOL.chat.welcome4") + "</p>" + game.i18n.localize("BOL.chat.welcome4") + "</p><p>" +
game.i18n.localize("BOL.chat.welcome5") + "<br>" + game.i18n.localize("BOL.chat.welcome5") + "</p>" +
game.i18n.localize("BOL.chat.welcome6") game.i18n.localize("BOL.chat.welcome6")
let rulebook = game.modules.find( m => m.id === "bol-rulebook") let rulebook = game.modules.find(m => m.id === "bol-rulebook")
if ( !rulebook ) { if (!rulebook) {
content += "<p>" + game.i18n.localize("BOL.chat.bolRulebookMessage") + "</p>" content += "<p>" + game.i18n.localize("BOL.chat.bolRulebookMessage") + "</p>"
} }
ChatMessage.create({ ChatMessage.create({
@@ -101,19 +104,38 @@ function welcomeMessage() {
whisper: [game.user.id], whisper: [game.user.id],
content: content content: content
}) })
if (game.user.isGM && game.i18n.lang == 'en' && !game.modules.find(m => m.id == "babele") ){ if (game.user.isGM && game.i18n.lang == 'en' && !game.modules.find(m => m.id == "babele")) {
ChatMessage.create({ ChatMessage.create({
user: game.user.id, user: game.user.id,
whisper: [game.user.id], whisper: [game.user.id],
content: `<div id="welcome-message-bol"><span class="rdd-roll-part"> content: `<div id="welcome-message-bol"><span class="rdd-roll-part">
<strong>WARNING ! English language selected, but Babele module is not installed !<br>Please install babele from the module tab in Foundry interface.` <strong>WARNING ! English language selected, but Babele module is not installed !<br>Please install babele from the module tab in Foundry interface.`
} ) })
ui.notifications.warn("WARNING ! English language selected, but babele module is not installed !<br>Please install babele from the module tab in Foundry interface.") ui.notifications.warn("WARNING ! English language selected, but babele module is not installed !<br>Please install babele from the module tab in Foundry interface.")
} }
} }
/* -------------------------------------------- */
function welcomeMessageRepository() {
if (game.user.isGM) {
// Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
fetch(BOL_WELCOME_MESSAGE_URL)
.then(response => response.text())
.then(html => {
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: html
});
})
.catch(error => {
console.error("Error fetching welcome message:", error);
});
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
Hooks.once('ready', async function () { Hooks.once('ready', async function () {
@@ -127,6 +149,7 @@ Hooks.once('ready', async function () {
) )
welcomeMessage() welcomeMessage()
welcomeMessageRepository();
// User warning // User warning
if (!game.user.isGM && game.user.character == undefined) { if (!game.user.isGM && game.user.character == undefined) {
@@ -166,13 +189,11 @@ Hooks.once('ready', async function () {
"d6B": "d6H (Bonus)", "d6B": "d6H (Bonus)",
"d6BB": "d6H + Bonus die", "d6BB": "d6H + Bonus die",
} }
if (game.i18n.lang === "fr") { if (game.i18n.lang === "fr") {
game.bol.config.damageValues = damageFR; game.bol.config.damageValues = damageFR;
} else { } else {
game.bol.config.damageValues = damageEN; game.bol.config.damageValues = damageEN;
} }
}) })

View File

@@ -19,9 +19,9 @@ export class BoLRoll {
static updateApplicableEffects(rollData) { static updateApplicableEffects(rollData) {
let appEffects = [] let appEffects = []
for (let effect of rollData.bolEffects) { for (let effect of rollData.bolEffects) {
if ( (effect.system.properties.identifier == "always") || if ((effect.system.properties.identifier == "always") ||
(effect.system.properties.identifier.includes(rollData.attribute.key)) || (effect.system.properties.identifier.includes(rollData.attribute.key)) ||
(rollData.aptitude && effect.system.properties.identifier.includes(rollData.aptitude.key)) ){ (rollData.aptitude && effect.system.properties.identifier.includes(rollData.aptitude.key))) {
appEffects.push(effect) appEffects.push(effect)
} }
} }
@@ -76,7 +76,7 @@ export class BoLRoll {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static attributeCheck(actor, key="vigor", event=undefined, combatData=undefined) { static attributeCheck(actor, key = "vigor", event = undefined, combatData = undefined) {
let attribute = eval(`actor.system.attributes.${key}`) let attribute = eval(`actor.system.attributes.${key}`)
@@ -89,7 +89,7 @@ export class BoLRoll {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static aptitudeCheck(actor, key="init", event=undefined, combatData=undefined) { static aptitudeCheck(actor, key = "init", event = undefined, combatData = undefined) {
let aptitude = eval(`actor.system.aptitudes.${key}`) let aptitude = eval(`actor.system.aptitudes.${key}`)
let attrKey = this.getDefaultAttribute(key) let attrKey = this.getDefaultAttribute(key)
@@ -305,7 +305,7 @@ export class BoLRoll {
// Keep track of the final effect modifier // Keep track of the final effect modifier
this.rollData.effectModifier = effectModifier this.rollData.effectModifier = effectModifier
// Final number of dices // Final number of dices
this.rollData.nbDice = 2 + Math.abs(this.rollData.bmDice) this.rollData.nbDice = 2 + Math.abs(this.rollData.bmDice)
// Bonus or Malus ? // Bonus or Malus ?
if (this.rollData.bmDice == 0) { if (this.rollData.bmDice == 0) {
@@ -482,14 +482,19 @@ export class BoLRoll {
if (rollData.mode == "weapon") { if (rollData.mode == "weapon") {
rollData.weaponModifier = rollData.weapon.system.properties.attackModifiers ?? 0 rollData.weaponModifier = rollData.weapon.system.properties.attackModifiers ?? 0
rollData.attackBonusDice = rollData.weapon.system.properties.attackBonusDice rollData.attackBonusDice = rollData.weapon.system.properties.attackBonusDice
rollData.attackMalusDice = rollData.weapon.system.properties.attackMalusDice
if (rollData.attackBonusDice) { if (rollData.attackBonusDice) {
rollData.adv = "1B" rollData.adv = "1B"
rollData.bDice = 1 rollData.bDice = 1
} }
if (rollData.attackMalusDice) {
rollData.adv = "1M"
rollData.mDice = 1
}
if (defender) { // If target is selected if (defender) { // If target is selected
rollData.defence = defender.defenseValue rollData.defence = defender.defenseValue
rollData.armorMalus = defender.armorMalusValue rollData.armorMalus = defender.armorMalusValue
rollData.defenderHeroPoints = defender.getHeroPoints() rollData.defenderHeroPoints = defender.getHeroPoints()
rollData.shieldBlock = 'none' rollData.shieldBlock = 'none'
let shields = defender.shields let shields = defender.shields
//console.log("Defender stats", defender) //console.log("Defender stats", defender)
@@ -534,8 +539,9 @@ export class BoLRoll {
rollData.id = foundry.utils.randomID(16) rollData.id = foundry.utils.randomID(16)
rollData.weaponModifier = 0 rollData.weaponModifier = 0
rollData.attackBonusDice = false rollData.attackBonusDice = false
rollData.attackMalusDice = false
rollData.armorMalus = 0 rollData.armorMalus = 0
// Specific stuff // Specific stuff
this.preProcessWeapon(rollData, defender) this.preProcessWeapon(rollData, defender)
this.preProcessFightOption(rollData) this.preProcessFightOption(rollData)
this.updateArmorMalus(rollData) this.updateArmorMalus(rollData)
@@ -551,7 +557,7 @@ export class BoLRoll {
console.log("ROLLDATA", rollData) console.log("ROLLDATA", rollData)
// Then display+process the dialog // Then display+process the dialog
const rollOptionContent = await renderTemplate(rollOptionTpl, rollData); const rollOptionContent = await foundry.applications.handlebars.renderTemplate(rollOptionTpl, rollData);
let d = new Dialog({ let d = new Dialog({
title: rollData.label, title: rollData.label,
content: rollOptionContent, content: rollOptionContent,
@@ -582,7 +588,7 @@ export class BoLRoll {
rollbase = 0 rollbase = 0
} }
let diceData = BoLUtility.getDiceData() let diceData = BoLUtility.getDiceData()
let malusInit = rollData.combatData?.malusInit || 0 let malusInit = rollData.combatData?.malusInit || 0
const modifiers = rollbase + rollData.careerBonus + rollData.mod + rollData.weaponModifier - rollData.defence - rollData.modArmorMalus + rollData.shieldMalus + rollData.attackModifier + rollData.appliedArmorMalus + rollData.effectModifier - malusInit const modifiers = rollbase + rollData.careerBonus + rollData.mod + rollData.weaponModifier - rollData.defence - rollData.modArmorMalus + rollData.shieldMalus + rollData.attackModifier + rollData.appliedArmorMalus + rollData.effectModifier - malusInit
const formula = (isMalus) ? rollData.nbDice + "d" + diceData.diceFormula + "kl2 + " + modifiers : rollData.nbDice + "d" + diceData.diceFormula + "kh2 + " + modifiers const formula = (isMalus) ? rollData.nbDice + "d" + diceData.diceFormula + "kl2 + " + modifiers : rollData.nbDice + "d" + diceData.diceFormula + "kh2 + " + modifiers
rollData.formula = formula rollData.formula = formula
@@ -634,16 +640,16 @@ export class BoLDefaultRoll {
const diceTotal = activeDice.map(r => r.result).reduce((a, b) => a + b) const diceTotal = activeDice.map(r => r.result).reduce((a, b) => a + b)
this.rollData.roll = r this.rollData.roll = r
this.rollData.isFumble = (diceTotal <= diceData.criticalFailureValue) this.rollData.isFumble = (diceTotal <= diceData.criticalFailureValue)
if ( this.rollData.isFumble ) { if (this.rollData.isFumble) {
this.rollData.isSuccess = false this.rollData.isSuccess = false
this.rollData.isCritical = false this.rollData.isCritical = false
this.rollData.isRealCritical = false this.rollData.isRealCritical = false
this.rollData.isHeroic = false this.rollData.isHeroic = false
this.rollData.isFailure = true this.rollData.isFailure = true
} else { } else {
this.rollData.isCritical = (diceTotal >= diceData.criticalSuccessValue) this.rollData.isCritical = (diceTotal >= diceData.criticalSuccessValue)
if ( this.rollData.isCritical) { if (this.rollData.isCritical) {
this.rollData.isSuccess = true this.rollData.isSuccess = true
} else { } else {
this.rollData.isSuccess = (r.total >= diceData.successValue) this.rollData.isSuccess = (r.total >= diceData.successValue)
} }
@@ -805,13 +811,13 @@ export class BoLDefaultRoll {
/* -------------------------------------------- */ /* -------------------------------------------- */
_buildDamageChatMessage(rollData) { _buildDamageChatMessage(rollData) {
const rollMessageTpl = 'systems/bol/templates/chat/rolls/damage-roll-card.hbs'; const rollMessageTpl = 'systems/bol/templates/chat/rolls/damage-roll-card.hbs';
return renderTemplate(rollMessageTpl, rollData) return foundry.applications.handlebars.renderTemplate(rollMessageTpl, rollData)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
_buildChatMessage(rollData) { _buildChatMessage(rollData) {
const rollMessageTpl = 'systems/bol/templates/chat/rolls/default-roll-card.hbs' const rollMessageTpl = 'systems/bol/templates/chat/rolls/default-roll-card.hbs'
return renderTemplate(rollMessageTpl, rollData) return foundry.applications.handlebars.renderTemplate(rollMessageTpl, rollData)
} }
} }

View File

@@ -4,7 +4,7 @@ import { BoLUtility } from "../system/bol-utility.js";
* Extend the basic ItemSheet with some very simple modifications * Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet} * @extends {ItemSheet}
*/ */
export class BoLItemSheet extends ItemSheet { export class BoLItemSheet extends foundry.appv1.sheets.ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
@@ -13,6 +13,7 @@ export class BoLItemSheet extends ItemSheet {
template: "systems/bol/templates/item/item-sheet.hbs", template: "systems/bol/templates/item/item-sheet.hbs",
width: 650, width: 650,
height: 780, height: 780,
dragDrop: [{ dragSelector: null, dropSelector: null }],
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }] tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }]
}); });
} }
@@ -27,7 +28,7 @@ export class BoLItemSheet extends ItemSheet {
data.category = itemData.system.category data.category = itemData.system.category
data.isGM = game.user.isGM; data.isGM = game.user.isGM;
data.itemProperties = this.item.itemProperties; data.itemProperties = this.item.itemProperties;
data.description = await TextEditor.enrichHTML(this.object.system.description, { async: true }) data.description = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true })
if (data.document.actor) { if (data.document.actor) {
data.careers = data.document.actor.careers data.careers = data.document.actor.careers
} }
@@ -102,6 +103,7 @@ export class BoLItemSheet extends ItemSheet {
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
// Everything below here is only needed if the sheet is editable // Everything below here is only needed if the sheet is editable
if (!this.options.editable) return; if (!this.options.editable) return;
// Roll handlers, click handlers, etc. would go here. // Roll handlers, click handlers, etc. would go here.

View File

@@ -12,8 +12,8 @@ export class BoLTokenHud {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async removeExtensionHud(app, html, tokenId) { static async removeExtensionHud(app, html, tokenId) {
html.find('.control-icon.bol-roll').remove() $(html).find('.control-icon.bol-roll').remove()
html.find('.control-icon.bol-action').remove() $(html).find('.control-icon.bol-action').remove()
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -25,7 +25,7 @@ export class BoLTokenHud {
const hudData = { actor: actor, actionsList: actor.buildListeActions(), rollsList: actor.buildRollList() } const hudData = { actor: actor, actionsList: actor.buildListeActions(), rollsList: actor.buildRollList() }
const controlIconActions = html.find('.control-icon[data-action=combat]'); const controlIconActions = $(html).find('.control-icon[data-action=combat]');
// initiative // initiative
await BoLTokenHud._configureSubMenu(controlIconActions, 'systems/bol/templates/token/hud-actor-actions.hbs', hudData, await BoLTokenHud._configureSubMenu(controlIconActions, 'systems/bol/templates/token/hud-actor-actions.hbs', hudData,
(event) => { (event) => {
@@ -43,7 +43,7 @@ export class BoLTokenHud {
} }
}) })
const controlIconTarget = html.find('.control-icon[data-action=target]'); const controlIconTarget = $(html).find('.control-icon[data-action=target]');
// att+apt+career // att+apt+career
await BoLTokenHud._configureSubMenu(controlIconTarget, 'systems/bol/templates/token/hud-actor-rolls.hbs', hudData, await BoLTokenHud._configureSubMenu(controlIconTarget, 'systems/bol/templates/token/hud-actor-rolls.hbs', hudData,
(event) => { (event) => {
@@ -59,7 +59,7 @@ export class BoLTokenHud {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async addTokenHudExtensions(app, html, tokenId) { static async addTokenHudExtensions(app, html, tokenId) {
const controlIconCombat = html.find('.control-icon[data-action=combat]') const controlIconCombat = $(html).find('.control-icon[data-action=combat]')
if (controlIconCombat.length > 0) { if (controlIconCombat.length > 0) {
BoLTokenHud.addExtensionHud(app, html, tokenId); BoLTokenHud.addExtensionHud(app, html, tokenId);
} }
@@ -67,7 +67,7 @@ export class BoLTokenHud {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) { static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
const hud = $(await renderTemplate(template, hudData)) const hud = $(await foundry.applications.handlebars.renderTemplate(template, hudData))
const list = hud.find('div.bol-hud-list') const list = hud.find('div.bol-hud-list')
BoLTokenHud._toggleHudListActive(hud, list); BoLTokenHud._toggleHudListActive(hud, list);

View File

@@ -221,10 +221,10 @@ export class BoLCalendar extends Application {
let hn = defHeure.heure; let hn = defHeure.heure;
let chiffreAstral = this.getCurrentNombreAstral() ?? 0; let chiffreAstral = this.getCurrentNombreAstral() ?? 0;
heuresChancesMalchances[0] = { value : "+4", heures: [this.getHeureNumber((hn + chiffreAstral) % RDD_HEURES_PAR_JOUR).label]}; heuresChancesMalchances[0] = { value : "+4", heures: [this.getHeureNumber((hn + chiffreAstral) % RDD_HEURES_PAR_JOUR).label]};
heuresChancesMalchances[1] = { value : "+2", heures: [this.getHeureNumber((hn + chiffreAstral+4) % RDD_HEURES_PAR_JOUR).label, heuresChancesMalchances[1] = { value : "+2", heures: [this.getHeureNumber((hn + chiffreAstral+4) % RDD_HEURES_PAR_JOUR).label,
this.getHeureNumber((hn + chiffreAstral + 8) % RDD_HEURES_PAR_JOUR).label ] }; this.getHeureNumber((hn + chiffreAstral + 8) % RDD_HEURES_PAR_JOUR).label ] };
heuresChancesMalchances[2] = { value : "-4", heures: [this.getHeureNumber((hn + chiffreAstral+6) % RDD_HEURES_PAR_JOUR).label]}; heuresChancesMalchances[2] = { value : "-4", heures: [this.getHeureNumber((hn + chiffreAstral+6) % RDD_HEURES_PAR_JOUR).label]};
heuresChancesMalchances[3] = { value : "-2", heures: [this.getHeureNumber((hn + chiffreAstral+3) % RDD_HEURES_PAR_JOUR).label, heuresChancesMalchances[3] = { value : "-2", heures: [this.getHeureNumber((hn + chiffreAstral+3) % RDD_HEURES_PAR_JOUR).label,
this.getHeureNumber((hn + chiffreAstral + 9) % RDD_HEURES_PAR_JOUR).label ]}; this.getHeureNumber((hn + chiffreAstral + 9) % RDD_HEURES_PAR_JOUR).label ]};
} }
return heuresChancesMalchances; return heuresChancesMalchances;
@@ -331,7 +331,7 @@ export class BoLCalendar extends Application {
calendrierData.jourMoisOptions = RdDCalendrier.buildJoursMois(); calendrierData.jourMoisOptions = RdDCalendrier.buildJoursMois();
calendrierData.heuresOptions = [0, 1]; calendrierData.heuresOptions = [0, 1];
calendrierData.minutesOptions = Array(RDD_MINUTES_PAR_HEURES).fill().map((item, index) => 0 + index); calendrierData.minutesOptions = Array(RDD_MINUTES_PAR_HEURES).fill().map((item, index) => 0 + index);
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/calendar-editor-template.html', calendrierData); let html = await foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/calendar-editor-template.html', calendrierData);
this.editeur = new RdDCalendrierEditeur(html, this, calendrierData) this.editeur = new RdDCalendrierEditeur(html, this, calendrierData)
} }
this.editeur.updateData(calendrierData); this.editeur.updateData(calendrierData);
@@ -360,7 +360,7 @@ export class BoLCalendar extends Application {
let heureNaissance = actor.getHeureNaissance(); let heureNaissance = actor.getHeureNaissance();
if ( heureNaissance) { if ( heureNaissance) {
heuresParActeur[actor.name] = this.getHeuresChanceMalchance(heureNaissance); heuresParActeur[actor.name] = this.getHeuresChanceMalchance(heureNaissance);
} }
} }
//console.log("ASTRO", astrologieArray); //console.log("ASTRO", astrologieArray);
calendrierData.astrologieData = astrologieArray; calendrierData.astrologieData = astrologieArray;
@@ -398,7 +398,7 @@ export class BoLCalendar extends Application {
let isRightMB = false; let isRightMB = false;
if ("which" in ev) { // Gecko (Firefox), WebKit (Safari/Chrome) & Opera if ("which" in ev) { // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB = ev.which == 3; isRightMB = ev.which == 3;
} else if ("button" in ev) { // IE, Opera } else if ("button" in ev) { // IE, Opera
isRightMB = ev.button == 2; isRightMB = ev.button == 2;
} }

View File

@@ -28,7 +28,7 @@ export class BoLUtility {
}) })
game.settings.register("bol", "auto-remove-dead", { game.settings.register("bol", "auto-remove-dead", {
name: game.i18n.localize("BOL.settings.removeDead"), name: game.i18n.localize("BOL.settings.removeDead"),
hint: game.i18n.localize("BOL.settings.removeDeadTooltip"), hint: game.i18n.localize("BOL.settings.removeDeadTooltip"),
scope: "world", scope: "world",
config: true, config: true,
default: false, default: false,
@@ -344,7 +344,7 @@ export class BoLUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async chatMessageHandler(message, html, data) { static async chatMessageHandler(message, html, data) {
const chatCard = html.find('.flavor-text') const chatCard = $(html).find('.flavor-text')
if (chatCard.length > 0) { if (chatCard.length > 0) {
// If the user is the message author or the actor owner, proceed // If the user is the message author or the actor owner, proceed
const actor = game.actors.get(data.message.speaker.actor) const actor = game.actors.get(data.message.speaker.actor)
@@ -381,6 +381,8 @@ export class BoLUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async chatListeners(html) { static async chatListeners(html) {
html = $(html);
// Damage handling // Damage handling
html.on("click", '.chat-damage-apply', event => { html.on("click", '.chat-damage-apply', event => {
let rollData = BoLUtility.getRollDataFromMessage(event) let rollData = BoLUtility.getRollDataFromMessage(event)
@@ -427,7 +429,7 @@ export class BoLUtility {
html.on("click", '.damage-handling', event => { html.on("click", '.damage-handling', event => {
event.preventDefault() event.preventDefault()
let attr = event.currentTarget.attributes['data-attack-id'] let attr = event.currentTarget.attributes['data-attack-id']
if ( !attr) { if (!attr) {
ui.notifications.warn("Impossible de trouver l'attaque correspondante, erreur de suivi de combat.") ui.notifications.warn("Impossible de trouver l'attaque correspondante, erreur de suivi de combat.")
return return
} }
@@ -480,17 +482,20 @@ export class BoLUtility {
if (defenseMode == 'damage-with-armor') { if (defenseMode == 'damage-with-armor') {
let armorFormula = defender.getArmorFormula() let armorFormula = defender.getArmorFormula()
rollData.rollArmor = new Roll(armorFormula) rollData.armorProtect = 0
await rollData.rollArmor.roll() armorFormula = String(armorFormula) || "0"
let msg = await rollData.rollArmor.toMessage({ flavor: "BOL.chat.armorRoll : " + armorFormula }); if (armorFormula && armorFormula != "0" ) {
if ( game.dice3d) { // wait animation end when DsN is there rollData.rollArmor = new Roll(armorFormula)
await game.dice3d.waitFor3DAnimationByMessageID(msg.id); await rollData.rollArmor.roll()
let msg = await rollData.rollArmor.toMessage({ flavor: game.i18n.localize("BOL.chat.armorRoll") + " : " + armorFormula });
if (game.dice3d) { // wait animation end when DsN is there
await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
}
rollData.armorProtect = (rollData.rollArmor.total < 0) ? 0 : rollData.rollArmor.total
} }
rollData.armorProtect = (rollData.rollArmor.total < 0) ? 0 : rollData.rollArmor.total
rollData.finalDamage = rollData.damageTotal - rollData.armorProtect rollData.finalDamage = rollData.damageTotal - rollData.armorProtect
rollData.finalDamage = (rollData.finalDamage < 0) ? 0 : rollData.finalDamage rollData.finalDamage = (rollData.finalDamage < 0) ? 0 : rollData.finalDamage
await defender.sufferDamage(rollData.finalDamage) await defender.sufferDamage(rollData.finalDamage)
console.log("Armor roll -> result ", rollData)
} }
if (defenseMode == 'damage-without-armor') { if (defenseMode == 'damage-without-armor') {
rollData.finalDamage = rollData.damageTotal rollData.finalDamage = rollData.damageTotal
@@ -632,7 +637,7 @@ export class BoLUtility {
attackId: rollData.id, attackId: rollData.id,
attacker: rollData.attacker, attacker: rollData.attacker,
defender: defender, defender: defender,
defenderHeroPoints:defender.getHeroPoints(), defenderHeroPoints: defender.getHeroPoints(),
defenderWeapons: defenderWeapons, defenderWeapons: defenderWeapons,
damageTotal: rollData.damageTotal, damageTotal: rollData.damageTotal,
damagesIgnoresArmor: rollData.damagesIgnoresArmor, damagesIgnoresArmor: rollData.damagesIgnoresArmor,

View File

@@ -190,15 +190,21 @@ BOL.rangeModifiers = {
BOL.difficultyModifiers = { BOL.difficultyModifiers = {
"4": "BOL.dialog.soeasy", "4": "BOL.dialog.soeasy",
"3": "BOL.dialog.soeasy3",
"2": "BOL.dialog.veryeasy", "2": "BOL.dialog.veryeasy",
"1": "BOL.dialog.easy", "1": "BOL.dialog.easy",
"0": "BOL.dialog.moderate", "0": "BOL.dialog.moderate",
"-1": "BOL.dialog.hard", "-1": "BOL.dialog.hard",
"-2": "BOL.dialog.tough", "-2": "BOL.dialog.tough",
"-3": "BOL.dialog.tough3",
"-4": "BOL.dialog.demanding", "-4": "BOL.dialog.demanding",
"-5": "BOL.dialog.demanding5",
"-6": "BOL.dialog.formidable", "-6": "BOL.dialog.formidable",
"-7": "BOL.dialog.formidable7",
"-8": "BOL.dialog.heroic", "-8": "BOL.dialog.heroic",
"-9": "BOL.dialog.heroic9",
"-10": "BOL.dialog.mythic", "-10": "BOL.dialog.mythic",
"-11": "BOL.dialog.mythic11",
"-12": "BOL.dialog.divine" "-12": "BOL.dialog.divine"
} }

View File

@@ -15,7 +15,7 @@ export default function registerHooks() {
})) }))
Hooks.on('renderChatLog', (log, html, data) => BoLUtility.chatListeners(html)) Hooks.on('renderChatLog', (log, html, data) => BoLUtility.chatListeners(html))
Hooks.on('renderChatMessage', (message, html, data) => BoLUtility.chatMessageHandler(message, html, data)) Hooks.on('renderChatMessageHTML', (message, html, data) => BoLUtility.chatMessageHandler(message, html, data))
/** /**
* Create a macro when dropping an entity on the hotbar * Create a macro when dropping an entity on the hotbar
@@ -73,8 +73,8 @@ export default function registerHooks() {
button.addEventListener('click', () => { button.addEventListener('click', () => {
game.bol.charSummary.render(true) game.bol.charSummary.render(true)
}) })
html.find('.header-actions').after(button) $(html).find('.header-actions').after(button)
} }
}) })
} }

View File

@@ -60,11 +60,11 @@ export const preloadHandlebarsTemplates = async function () {
"systems/bol/templates/dialogs/effect-roll-part.hbs", "systems/bol/templates/dialogs/effect-roll-part.hbs",
"systems/bol/templates/dialogs/boons-roll-part.hbs", "systems/bol/templates/dialogs/boons-roll-part.hbs",
"systems/bol/templates/dialogs/flaws-roll-part.hbs", "systems/bol/templates/dialogs/flaws-roll-part.hbs",
"systems/bol/templates/dialogs/total-roll-part.hbs", "systems/bol/templates/dialogs/total-roll-part.hbs",
"systems/bol/templates/dialogs/fightoptions-roll-part.hbs", "systems/bol/templates/dialogs/fightoptions-roll-part.hbs",
"systems/bol/templates/dialogs/horoscope-roll-part.hbs" "systems/bol/templates/dialogs/horoscope-roll-part.hbs"
]; ];
// Load the template parts // Load the template parts
return loadTemplates(templatePaths); return foundry.applications.handlebars.loadTemplates(templatePaths);
}; };

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000745 MANIFEST-000990

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.555724 7f92b4ff96c0 Recovering log #743 2026/01/19-19:47:49.729596 7f14da7fc6c0 Recovering log #988
2025/02/11-21:57:02.565718 7f92b4ff96c0 Delete type=3 #741 2026/01/19-19:47:49.739434 7f14da7fc6c0 Delete type=3 #986
2025/02/11-21:57:02.565771 7f92b4ff96c0 Delete type=0 #743 2026/01/19-19:47:49.739512 7f14da7fc6c0 Delete type=0 #988
2025/02/11-21:57:34.342889 7f92b3bff6c0 Level-0 table #748: started 2026/01/19-20:19:02.579851 7f1243fff6c0 Level-0 table #993: started
2025/02/11-21:57:34.342910 7f92b3bff6c0 Level-0 table #748: 0 bytes OK 2026/01/19-20:19:02.579872 7f1243fff6c0 Level-0 table #993: 0 bytes OK
2025/02/11-21:57:34.349382 7f92b3bff6c0 Delete type=0 #746 2026/01/19-20:19:02.585797 7f1243fff6c0 Delete type=0 #991
2025/02/11-21:57:34.358371 7f92b3bff6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.586018 7f1243fff6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.358400 7f92b3bff6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:03.987644 7f92b57fa6c0 Recovering log #739 2026/01/18-20:07:47.845406 7f14d8ff96c0 Recovering log #984
2025/02/11-21:52:03.997651 7f92b57fa6c0 Delete type=3 #737 2026/01/18-20:07:47.861224 7f14d8ff96c0 Delete type=3 #982
2025/02/11-21:52:03.997734 7f92b57fa6c0 Delete type=0 #739 2026/01/18-20:07:47.861280 7f14d8ff96c0 Delete type=0 #984
2025/02/11-21:54:35.598552 7f92b3bff6c0 Level-0 table #744: started 2026/01/18-20:13:44.130598 7f1243fff6c0 Level-0 table #989: started
2025/02/11-21:54:35.598583 7f92b3bff6c0 Level-0 table #744: 0 bytes OK 2026/01/18-20:13:44.130625 7f1243fff6c0 Level-0 table #989: 0 bytes OK
2025/02/11-21:54:35.604608 7f92b3bff6c0 Delete type=0 #742 2026/01/18-20:13:44.157241 7f1243fff6c0 Delete type=0 #987
2025/02/11-21:54:35.611345 7f92b3bff6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) 2026/01/18-20:13:44.192634 7f1243fff6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.611398 7f92b3bff6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/armors/000882.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000650 MANIFEST-000895

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.529611 7f92b47f86c0 Recovering log #648 2026/01/19-19:47:49.702991 7f14d97fa6c0 Recovering log #893
2025/02/11-21:57:02.540039 7f92b47f86c0 Delete type=3 #646 2026/01/19-19:47:49.714316 7f14d97fa6c0 Delete type=3 #891
2025/02/11-21:57:02.540092 7f92b47f86c0 Delete type=0 #648 2026/01/19-19:47:49.714383 7f14d97fa6c0 Delete type=0 #893
2025/02/11-21:57:34.336618 7f92b3bff6c0 Level-0 table #653: started 2026/01/19-20:19:02.560145 7f1243fff6c0 Level-0 table #898: started
2025/02/11-21:57:34.336638 7f92b3bff6c0 Level-0 table #653: 0 bytes OK 2026/01/19-20:19:02.560173 7f1243fff6c0 Level-0 table #898: 0 bytes OK
2025/02/11-21:57:34.342793 7f92b3bff6c0 Delete type=0 #651 2026/01/19-20:19:02.566093 7f1243fff6c0 Delete type=0 #896
2025/02/11-21:57:34.358357 7f92b3bff6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.585964 7f1243fff6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.358393 7f92b3bff6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:03.961891 7f92b5ffb6c0 Recovering log #644 2026/01/18-20:07:47.807797 7f14d9ffb6c0 Recovering log #889
2025/02/11-21:52:03.971934 7f92b5ffb6c0 Delete type=3 #642 2026/01/18-20:07:47.824331 7f14d9ffb6c0 Delete type=3 #887
2025/02/11-21:52:03.972018 7f92b5ffb6c0 Delete type=0 #644 2026/01/18-20:07:47.824381 7f14d9ffb6c0 Delete type=0 #889
2025/02/11-21:54:35.590985 7f92b3bff6c0 Level-0 table #649: started 2026/01/18-20:13:44.157350 7f1243fff6c0 Level-0 table #894: started
2025/02/11-21:54:35.591011 7f92b3bff6c0 Level-0 table #649: 0 bytes OK 2026/01/18-20:13:44.157372 7f1243fff6c0 Level-0 table #894: 0 bytes OK
2025/02/11-21:54:35.598433 7f92b3bff6c0 Delete type=0 #647 2026/01/18-20:13:44.192480 7f1243fff6c0 Delete type=0 #892
2025/02/11-21:54:35.611337 7f92b3bff6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end) 2026/01/18-20:13:44.192647 7f1243fff6c0 Manual compaction at level-0 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.611373 7f92b3bff6c0 Manual compaction at level-1 from '!items!G3dZTHIabA3LA1hY' @ 72057594037927935 : 1 .. '!items!xhEcsi3WHjbt2ro9' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/boons/000976.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000743 MANIFEST-000989

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.425947 7f92b47f86c0 Recovering log #741 2026/01/19-19:47:49.594444 7f14d8ff96c0 Recovering log #987
2025/02/11-21:57:02.436463 7f92b47f86c0 Delete type=3 #739 2026/01/19-19:47:49.605020 7f14d8ff96c0 Delete type=3 #985
2025/02/11-21:57:02.436516 7f92b47f86c0 Delete type=0 #741 2026/01/19-19:47:49.605095 7f14d8ff96c0 Delete type=0 #987
2025/02/11-21:57:34.292501 7f92b3bff6c0 Level-0 table #746: started 2026/01/19-20:19:02.521702 7f1243fff6c0 Level-0 table #992: started
2025/02/11-21:57:34.292523 7f92b3bff6c0 Level-0 table #746: 0 bytes OK 2026/01/19-20:19:02.521733 7f1243fff6c0 Level-0 table #992: 0 bytes OK
2025/02/11-21:57:34.298927 7f92b3bff6c0 Delete type=0 #744 2026/01/19-20:19:02.528339 7f1243fff6c0 Delete type=0 #990
2025/02/11-21:57:34.305057 7f92b3bff6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.534634 7f1243fff6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.305098 7f92b3bff6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:03.851261 7f92b5ffb6c0 Recovering log #737 2026/01/18-20:07:47.640110 7f14da7fc6c0 Recovering log #983
2025/02/11-21:52:03.861605 7f92b5ffb6c0 Delete type=3 #735 2026/01/18-20:07:47.659075 7f14da7fc6c0 Delete type=3 #981
2025/02/11-21:52:03.861680 7f92b5ffb6c0 Delete type=0 #737 2026/01/18-20:07:47.659147 7f14da7fc6c0 Delete type=0 #983
2025/02/11-21:54:35.551224 7f92b3bff6c0 Level-0 table #742: started 2026/01/18-20:13:43.881522 7f1243fff6c0 Level-0 table #988: started
2025/02/11-21:54:35.551250 7f92b3bff6c0 Level-0 table #742: 0 bytes OK 2026/01/18-20:13:43.881548 7f1243fff6c0 Level-0 table #988: 0 bytes OK
2025/02/11-21:54:35.557302 7f92b3bff6c0 Delete type=0 #740 2026/01/18-20:13:43.921371 7f1243fff6c0 Delete type=0 #986
2025/02/11-21:54:35.557440 7f92b3bff6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) 2026/01/18-20:13:43.921513 7f1243fff6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.557467 7f92b3bff6c0 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-000989 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000743 MANIFEST-000988

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.438456 7f92b57fa6c0 Recovering log #741 2026/01/19-19:47:49.609310 7f14da7fc6c0 Recovering log #986
2025/02/11-21:57:02.449765 7f92b57fa6c0 Delete type=3 #739 2026/01/19-19:47:49.619302 7f14da7fc6c0 Delete type=3 #984
2025/02/11-21:57:02.449822 7f92b57fa6c0 Delete type=0 #741 2026/01/19-19:47:49.619373 7f14da7fc6c0 Delete type=0 #986
2025/02/11-21:57:34.299022 7f92b3bff6c0 Level-0 table #746: started 2026/01/19-20:19:02.515027 7f1243fff6c0 Level-0 table #991: started
2025/02/11-21:57:34.299042 7f92b3bff6c0 Level-0 table #746: 0 bytes OK 2026/01/19-20:19:02.515048 7f1243fff6c0 Level-0 table #991: 0 bytes OK
2025/02/11-21:57:34.304926 7f92b3bff6c0 Delete type=0 #744 2026/01/19-20:19:02.521555 7f1243fff6c0 Delete type=0 #989
2025/02/11-21:57:34.305064 7f92b3bff6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.534623 7f1243fff6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.305083 7f92b3bff6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:03.864307 7f92b4ff96c0 Recovering log #737 2026/01/18-20:07:47.664234 7f14d8ff96c0 Recovering log #982
2025/02/11-21:52:03.874891 7f92b4ff96c0 Delete type=3 #735 2026/01/18-20:07:47.679427 7f14d8ff96c0 Delete type=3 #980
2025/02/11-21:52:03.874942 7f92b4ff96c0 Delete type=0 #737 2026/01/18-20:07:47.679484 7f14d8ff96c0 Delete type=0 #982
2025/02/11-21:54:35.544201 7f92b3bff6c0 Level-0 table #742: started 2026/01/18-20:13:43.851971 7f1243fff6c0 Level-0 table #987: started
2025/02/11-21:54:35.544228 7f92b3bff6c0 Level-0 table #742: 0 bytes OK 2026/01/18-20:13:43.851994 7f1243fff6c0 Level-0 table #987: 0 bytes OK
2025/02/11-21:54:35.551120 7f92b3bff6c0 Delete type=0 #740 2026/01/18-20:13:43.881382 7f1243fff6c0 Delete type=0 #985
2025/02/11-21:54:35.557431 7f92b3bff6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) 2026/01/18-20:13:43.921506 7f1243fff6c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.557476 7f92b3bff6c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/careers/000975.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000743 MANIFEST-000988

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.465029 7f92b5ffb6c0 Recovering log #741 2026/01/19-19:47:49.635172 7f14d8ff96c0 Recovering log #986
2025/02/11-21:57:02.475250 7f92b5ffb6c0 Delete type=3 #739 2026/01/19-19:47:49.644889 7f14d8ff96c0 Delete type=3 #984
2025/02/11-21:57:02.475302 7f92b5ffb6c0 Delete type=0 #741 2026/01/19-19:47:49.644941 7f14d8ff96c0 Delete type=0 #986
2025/02/11-21:57:34.311288 7f92b3bff6c0 Level-0 table #746: started 2026/01/19-20:19:02.508864 7f1243fff6c0 Level-0 table #991: started
2025/02/11-21:57:34.311318 7f92b3bff6c0 Level-0 table #746: 0 bytes OK 2026/01/19-20:19:02.508913 7f1243fff6c0 Level-0 table #991: 0 bytes OK
2025/02/11-21:57:34.317240 7f92b3bff6c0 Delete type=0 #744 2026/01/19-20:19:02.514913 7f1243fff6c0 Delete type=0 #989
2025/02/11-21:57:34.330537 7f92b3bff6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.534608 7f1243fff6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.330559 7f92b3bff6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:03.893611 7f92b47f86c0 Recovering log #737 2026/01/18-20:07:47.704039 7f14d8ff96c0 Recovering log #982
2025/02/11-21:52:03.903497 7f92b47f86c0 Delete type=3 #735 2026/01/18-20:07:47.721242 7f14d8ff96c0 Delete type=3 #980
2025/02/11-21:52:03.903562 7f92b47f86c0 Delete type=0 #737 2026/01/18-20:07:47.721902 7f14d8ff96c0 Delete type=0 #982
2025/02/11-21:54:35.537763 7f92b3bff6c0 Level-0 table #742: started 2026/01/18-20:13:43.777269 7f1243fff6c0 Level-0 table #987: started
2025/02/11-21:54:35.537788 7f92b3bff6c0 Level-0 table #742: 0 bytes OK 2026/01/18-20:13:43.777312 7f1243fff6c0 Level-0 table #987: 0 bytes OK
2025/02/11-21:54:35.544087 7f92b3bff6c0 Delete type=0 #740 2026/01/18-20:13:43.819988 7f1243fff6c0 Delete type=0 #985
2025/02/11-21:54:35.557421 7f92b3bff6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) 2026/01/18-20:13:43.921486 7f1243fff6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.557458 7f92b3bff6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000741 MANIFEST-000986

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.646092 7f92b57fa6c0 Recovering log #739 2026/01/19-19:47:49.822315 7f14d9ffb6c0 Recovering log #984
2025/02/11-21:57:02.656332 7f92b57fa6c0 Delete type=3 #737 2026/01/19-19:47:49.833348 7f14d9ffb6c0 Delete type=3 #982
2025/02/11-21:57:02.656398 7f92b57fa6c0 Delete type=0 #739 2026/01/19-19:47:49.833401 7f14d9ffb6c0 Delete type=0 #984
2025/02/11-21:57:34.394240 7f92b3bff6c0 Level-0 table #744: started 2026/01/19-20:19:02.619154 7f1243fff6c0 Level-0 table #989: started
2025/02/11-21:57:34.394261 7f92b3bff6c0 Level-0 table #744: 0 bytes OK 2026/01/19-20:19:02.619176 7f1243fff6c0 Level-0 table #989: 0 bytes OK
2025/02/11-21:57:34.401540 7f92b3bff6c0 Delete type=0 #742 2026/01/19-20:19:02.626822 7f1243fff6c0 Delete type=0 #987
2025/02/11-21:57:34.421045 7f92b3bff6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.639748 7f1243fff6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.421097 7f92b3bff6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:04.078087 7f92b4ff96c0 Recovering log #735 2026/01/18-20:07:48.004635 7f14d9ffb6c0 Recovering log #980
2025/02/11-21:52:04.088545 7f92b4ff96c0 Delete type=3 #733 2026/01/18-20:07:48.021334 7f14d9ffb6c0 Delete type=3 #978
2025/02/11-21:52:04.088597 7f92b4ff96c0 Delete type=0 #735 2026/01/18-20:07:48.021403 7f14d9ffb6c0 Delete type=0 #980
2025/02/11-21:54:35.646391 7f92b3bff6c0 Level-0 table #740: started 2026/01/18-20:13:44.336530 7f1243fff6c0 Level-0 table #985: started
2025/02/11-21:54:35.646414 7f92b3bff6c0 Level-0 table #740: 0 bytes OK 2026/01/18-20:13:44.336556 7f1243fff6c0 Level-0 table #985: 0 bytes OK
2025/02/11-21:54:35.652511 7f92b3bff6c0 Delete type=0 #738 2026/01/18-20:13:44.372711 7f1243fff6c0 Delete type=0 #983
2025/02/11-21:54:35.665492 7f92b3bff6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) 2026/01/18-20:13:44.502487 7f1243fff6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.665529 7f92b3bff6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

BIN
packs/equipment/000976.ldb Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000744 MANIFEST-000989

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.503615 7f92b4ff96c0 Recovering log #742 2026/01/19-19:47:49.675978 7f14d8ff96c0 Recovering log #987
2025/02/11-21:57:02.513856 7f92b4ff96c0 Delete type=3 #740 2026/01/19-19:47:49.685972 7f14d8ff96c0 Delete type=3 #985
2025/02/11-21:57:02.513924 7f92b4ff96c0 Delete type=0 #742 2026/01/19-19:47:49.686034 7f14d8ff96c0 Delete type=0 #987
2025/02/11-21:57:34.324550 7f92b3bff6c0 Level-0 table #747: started 2026/01/19-20:19:02.553787 7f1243fff6c0 Level-0 table #992: started
2025/02/11-21:57:34.324572 7f92b3bff6c0 Level-0 table #747: 0 bytes OK 2026/01/19-20:19:02.553814 7f1243fff6c0 Level-0 table #992: 0 bytes OK
2025/02/11-21:57:34.330429 7f92b3bff6c0 Delete type=0 #745 2026/01/19-20:19:02.559887 7f1243fff6c0 Delete type=0 #990
2025/02/11-21:57:34.330552 7f92b3bff6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.560019 7f1243fff6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.330578 7f92b3bff6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:03.931941 7f92b57fa6c0 Recovering log #738 2026/01/18-20:07:47.766393 7f14d8ff96c0 Recovering log #983
2025/02/11-21:52:03.943266 7f92b57fa6c0 Delete type=3 #736 2026/01/18-20:07:47.781538 7f14d8ff96c0 Delete type=3 #981
2025/02/11-21:52:03.943400 7f92b57fa6c0 Delete type=0 #738 2026/01/18-20:07:47.781589 7f14d8ff96c0 Delete type=0 #983
2025/02/11-21:54:35.557565 7f92b3bff6c0 Level-0 table #743: started 2026/01/18-20:13:43.983716 7f1243fff6c0 Level-0 table #988: started
2025/02/11-21:54:35.557592 7f92b3bff6c0 Level-0 table #743: 0 bytes OK 2026/01/18-20:13:43.983740 7f1243fff6c0 Level-0 table #988: 0 bytes OK
2025/02/11-21:54:35.564441 7f92b3bff6c0 Delete type=0 #741 2026/01/18-20:13:44.023789 7f1243fff6c0 Delete type=0 #986
2025/02/11-21:54:35.584708 7f92b3bff6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) 2026/01/18-20:13:44.053229 7f1243fff6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.584749 7f92b3bff6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000743 MANIFEST-000988

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.594518 7f92b57fa6c0 Recovering log #741 2026/01/19-19:47:49.769389 7f14d8ff96c0 Recovering log #986
2025/02/11-21:57:02.604172 7f92b57fa6c0 Delete type=3 #739 2026/01/19-19:47:49.779377 7f14d8ff96c0 Delete type=3 #984
2025/02/11-21:57:02.604221 7f92b57fa6c0 Delete type=0 #741 2026/01/19-19:47:49.779429 7f14d8ff96c0 Delete type=0 #986
2025/02/11-21:57:34.358461 7f92b3bff6c0 Level-0 table #746: started 2026/01/19-20:19:02.593611 7f1243fff6c0 Level-0 table #991: started
2025/02/11-21:57:34.358486 7f92b3bff6c0 Level-0 table #746: 0 bytes OK 2026/01/19-20:19:02.593633 7f1243fff6c0 Level-0 table #991: 0 bytes OK
2025/02/11-21:57:34.371147 7f92b3bff6c0 Delete type=0 #744 2026/01/19-20:19:02.599673 7f1243fff6c0 Delete type=0 #989
2025/02/11-21:57:34.394094 7f92b3bff6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.612871 7f1243fff6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.394130 7f92b3bff6c0 Manual compaction at level-1 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:04.027483 7f92b4ff96c0 Recovering log #737 2026/01/18-20:07:47.909338 7f14d9ffb6c0 Recovering log #982
2025/02/11-21:52:04.037860 7f92b4ff96c0 Delete type=3 #735 2026/01/18-20:07:47.941648 7f14d9ffb6c0 Delete type=3 #980
2025/02/11-21:52:04.037909 7f92b4ff96c0 Delete type=0 #737 2026/01/18-20:07:47.941699 7f14d9ffb6c0 Delete type=0 #982
2025/02/11-21:54:35.611457 7f92b3bff6c0 Level-0 table #742: started 2026/01/18-20:13:44.233085 7f1243fff6c0 Level-0 table #987: started
2025/02/11-21:54:35.611509 7f92b3bff6c0 Level-0 table #742: 0 bytes OK 2026/01/18-20:13:44.233108 7f1243fff6c0 Level-0 table #987: 0 bytes OK
2025/02/11-21:54:35.618478 7f92b3bff6c0 Delete type=0 #740 2026/01/18-20:13:44.259693 7f1243fff6c0 Delete type=0 #985
2025/02/11-21:54:35.639412 7f92b3bff6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) 2026/01/18-20:13:44.336426 7f1243fff6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.639448 7f92b3bff6c0 Manual compaction at level-1 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000226 MANIFEST-000471

View File

@@ -1,8 +1,7 @@
2025/02/11-21:57:02.606516 7f92b4ff96c0 Recovering log #224 2026/01/19-19:47:49.781873 7f14d9ffb6c0 Recovering log #469
2025/02/11-21:57:02.616865 7f92b4ff96c0 Delete type=3 #222 2026/01/19-19:47:49.791906 7f14d9ffb6c0 Delete type=3 #467
2025/02/11-21:57:02.616941 7f92b4ff96c0 Delete type=0 #224 2026/01/19-19:47:49.791963 7f14d9ffb6c0 Delete type=0 #469
2025/02/11-21:57:34.380859 7f92b3bff6c0 Level-0 table #229: started 2026/01/19-20:19:02.599791 7f1243fff6c0 Level-0 table #474: started
2025/02/11-21:57:34.380888 7f92b3bff6c0 Level-0 table #229: 0 bytes OK 2026/01/19-20:19:02.599817 7f1243fff6c0 Level-0 table #474: 0 bytes OK
2025/02/11-21:57:34.387733 7f92b3bff6c0 Delete type=0 #227 2026/01/19-20:19:02.606216 7f1243fff6c0 Delete type=0 #472
2025/02/11-21:57:34.394115 7f92b3bff6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) 2026/01/19-20:19:02.612886 7f1243fff6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end)
2025/02/11-21:57:34.394142 7f92b3bff6c0 Manual compaction at level-1 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,7 @@
2025/02/11-21:52:04.039947 7f92b57fa6c0 Recovering log #220 2026/01/18-20:07:47.944158 7f14da7fc6c0 Recovering log #465
2025/02/11-21:52:04.049995 7f92b57fa6c0 Delete type=3 #218 2026/01/18-20:07:47.960589 7f14da7fc6c0 Delete type=3 #463
2025/02/11-21:52:04.050056 7f92b57fa6c0 Delete type=0 #220 2026/01/18-20:07:47.960660 7f14da7fc6c0 Delete type=0 #465
2025/02/11-21:54:35.633150 7f92b3bff6c0 Level-0 table #225: started 2026/01/18-20:13:44.259805 7f1243fff6c0 Level-0 table #470: started
2025/02/11-21:54:35.633173 7f92b3bff6c0 Level-0 table #225: 0 bytes OK 2026/01/18-20:13:44.259831 7f1243fff6c0 Level-0 table #470: 0 bytes OK
2025/02/11-21:54:35.639265 7f92b3bff6c0 Delete type=0 #223 2026/01/18-20:13:44.295095 7f1243fff6c0 Delete type=0 #468
2025/02/11-21:54:35.639442 7f92b3bff6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) 2026/01/18-20:13:44.336439 7f1243fff6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end)
2025/02/11-21:54:35.639467 7f92b3bff6c0 Manual compaction at level-1 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end)

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More