Compare commits

...

34 Commits

Author SHA1 Message Date
d3ae59f70d Allow configurable logo 2022-07-17 18:20:05 +02:00
cf7d76fdba Fix d6BB combat roll 2022-07-16 11:06:34 +02:00
8f60aa95ee Fix d6BB combat roll 2022-07-16 11:03:33 +02:00
d27b78d1d2 Review fight automation + alchimie 2022-06-11 20:56:35 +02:00
7259d3dc21 Review fight automation 2022-06-11 10:21:18 +02:00
ef5cf6f393 BoL Migration 2022-05-24 23:27:33 +02:00
3e50a9135f Various fixes 2022-05-23 18:38:51 +02:00
82c902099f Fix sur points de creation 2022-05-23 16:12:53 +02:00
c26e43bac7 Fix files 2022-05-21 17:57:04 +02:00
4159b6b181 Fix files 2022-05-21 17:56:52 +02:00
45cb082d8e Start adv generator 2022-05-20 21:54:17 +02:00
2637f698ad Start adv generator 2022-05-20 21:50:18 +02:00
9b8762300e Start adv generator 2022-05-20 00:00:49 +02:00
dfac102925 Start adv generator 2022-05-19 23:30:29 +02:00
fad281a7b3 Sync german translations + some fixes in compendium 2022-05-13 16:20:45 +02:00
1191442f04 Merge pull request #17 from gsterling/master
German welcome message
2022-05-13 16:15:36 +02:00
fe93888c1b add mentions for truant spiele for the the german version 2022-05-13 15:38:16 +02:00
127f200c27 add german welcome message 2022-05-13 15:34:04 +02:00
b078ffa992 Translate welcome message 2022-05-12 23:21:00 +02:00
d713066b5c update De translation 2022-05-12 19:38:41 +02:00
7adfbfe148 Merge pull request #15 from gsterling/master
Add newest german translations.
2022-05-12 19:37:59 +02:00
2186d986ca Merge branch 'master' of https://github.com/ZigmundKreud/bol 2022-05-12 19:31:11 +02:00
590fba0cbd add german char bio translations 2022-05-12 19:26:16 +02:00
0c9e598958 add additional german translations 2022-05-12 19:18:55 +02:00
049604ce98 Add new translation keys 2022-05-12 10:15:21 +02:00
471a18cd14 Enhance localization stuff 2022-05-12 08:25:55 +02:00
58c781f2f2 Enhance localization stuff 2022-05-11 22:07:03 +02:00
c9722b9b04 Enhance localization stuff 2022-05-11 22:05:35 +02:00
44ce88dd17 Enhance localization stuff 2022-05-11 19:29:32 +02:00
a31fe251e0 Add german translation 2022-05-11 15:20:02 +02:00
76a050b023 Merge pull request #13 from gsterling/master
add german translation
2022-05-11 15:19:37 +02:00
b68a6dbd23 add german translation 2022-05-11 13:14:58 +02:00
34c7024191 Advantage! 2022-05-10 23:04:04 +02:00
33da01707d Advantage! 2022-05-10 22:27:21 +02:00
39 changed files with 2279 additions and 564 deletions

View File

@ -769,7 +769,7 @@ body.system-bol img#logo {
min-height: 700px; min-height: 700px;
height: 700px; height: 700px;
} }
.bol.sheet.actor .window-content form { .bol.sheet.actor .window-content .bol-actor-form {
background-image: url("/systems/bol/ui/logo.webp"); background-image: url("/systems/bol/ui/logo.webp");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 190px 115px; background-size: 190px 115px;
@ -855,11 +855,30 @@ body.system-bol img#logo {
font-weight: bold; font-weight: bold;
color: #4b4a44; color: #4b4a44;
} }
.bol.sheet.actor .bonus-text {
margin-top: 7px;
}
.bol.sheet.actor .stat-value { .bol.sheet.actor .stat-value {
font-size: 1.5rem; font-size: 1.5rem;
font-weight: bold; font-weight: bold;
color: darkred; color: darkred;
} }
.bol.sheet.actor .resource-bonus {
font-weight: bold;
color: darkred;
}
.bol.sheet.actor .resources-value {
background-color:#2a2a2a30;
border-color: #003c1e;
margin-top: 4px;
border-radius: 0.5rem;
}
.bol.sheet.actor .resources-novalue {
background-color:#2a2a2a00;
border-color: #003c1e;
margin-top: 4px;
border-radius: 0.5rem;
}
.bol.sheet.actor .stat-roll { .bol.sheet.actor .stat-roll {
font-size: 1.5rem; font-size: 1.5rem;
color: #4b4a44; color: #4b4a44;

4
images/.directory Normal file
View File

@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2022,7,17,14,58,4.757
Version=4
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

458
lang/de.json Normal file
View File

@ -0,0 +1,458 @@
{
"ACTOR.TypeCharacter": "Charakter",
"ACTOR.TypeEncounter": "NSC",
"ITEM.TypeItem": "Objekt",
"ITEM.TypeFeature": "Eigenschaft",
"ITEM.TypeWeapon": "Waffe",
"ITEM.TypeArmor": "Rüstung",
"BOL.attributes.vigor": "Stärke",
"BOL.attributes.halfvigor" : "Demi-vigueur",
"BOL.attributes.agility": "Geschicklichkeit",
"BOL.attributes.mind": "Verstand",
"BOL.attributes.appeal": "Auftreten",
"BOL.aptitudes.init": "Initiative",
"BOL.aptitudes.melee": "Nahkampf",
"BOL.aptitudes.ranged": "Fernkampf",
"BOL.aptitudes.def": "Verteidigung",
"BOL.aptitudes.prot": "Schutz",
"BOL.resources.hp": "Lebensblut",
"BOL.resources.hero": "Heldenpunkte",
"BOL.resources.faith": "Glaube",
"BOL.resources.creation": "Erschaffung",
"BOL.resources.power": "Arkane Macht",
"BOL.resources.villainy": "Boshaftigkeit",
"BOL.resources.alchemypoints": "Alchemiepunkte",
"BOL.traits.xp": "Erfahrung",
"BOL.ui.tab.stats": "Attribute",
"BOL.ui.tab.combat": "Kampf",
"BOL.ui.tab.actions": "Aktionen",
"BOL.ui.tab.features": "Eigenschaften",
"BOL.ui.tab.equipment": "Ausrüstung",
"BOL.ui.tab.description": "Beschreibung",
"BOL.ui.tab.details": "Details",
"BOL.ui.tab.spellalchemy": "Zaubersprüche & Alchemie",
"BOL.ui.properties": "Eigenschaften",
"BOL.ui.description": "Beschreibung",
"BOL.ui.actions": "Aktionen",
"BOL.ui.capacities": "Fähigkeiten",
"BOL.ui.capacityProperties": "Fähigkeitenseigenschaften",
"BOL.ui.damages": "Schaden",
"BOL.ui.details": "Details",
"BOL.ui.category": "Kategorie",
"BOL.ui.subcategory": "Unterkategorie",
"BOL.ui.type": "Typ",
"BOL.ui.subtype": "Untertyp",
"BOL.ui.attribute" : "Attribut",
"BOL.ui.aptitude" : "Einstellungen",
"BOL.ui.advantages" : "Vorteile/Nachteile",
"BOL.ui.modifiers": "Modifikatoren",
"BOL.ui.item": "Objekt",
"BOL.ui.edit": "Ändern",
"BOL.ui.unequip": "Ablegen",
"BOL.ui.equip": "Anlegen",
"BOL.ui.delete": "Löschen",
"BOL.ui.roll" : "Würfeln",
"BOL.ui.equipment" : "Ausrüstung",
"BOL.ui.equipmentProperties" : "Ausrüstungseigenschaften",
"BOL.ui.weaponAttack" : "Waffenangriff",
"BOL.ui.weaponProperties" : "Waffeneigenschaften",
"BOL.ui.protectionProperties" : "Schutzeigenschaften",
"BOL.ui.magicalProperties" : "Magieeigenschaften",
"BOL.ui.capacatyProperties" : "Fähigkeiteneigenschaften",
"BOL.ui.alchemyProperties": "Alchemieeigenschaften",
"BOL.ui.armor" : "Rüstung",
"BOL.ui.reach" : "Reichweite",
"BOL.ui.weapon" : "Waffe",
"BOL.ui.melee" : "Nahkampf",
"BOL.ui.ranged" : "Fernkampf",
"BOL.ui.protection" : "Schutz",
"BOL.ui.shield" : "Schild",
"BOL.ui.blocking" : "Blocken",
"BOL.ui.range" : "Reichweite",
"BOL.ui.quantity" : "Menge",
"BOL.ui.qty" : "Anz.",
"BOL.ui.slot" : "Slot",
"BOL.ui.weight" : "Gewicht",
"BOL.ui.price": "Preis",
"BOL.ui.cancel": "Abbrechen",
"BOL.ui.submit": "OK",
"BOL.ui.attributeCheck" : "Attributsprobe",
"BOL.ui.aptitudeCheck" : "Fähigkeitsprobe",
"BOL.ui.weaponCheck" : "Waffenprobe",
"BOL.ui.spellCheck" : "Zauberprobe",
"BOL.ui.careers" : "Laufbahnen",
"BOL.ui.boons" : "Gaben",
"BOL.ui.flaws" : "Schwächen",
"BOL.ui.rank" : "Rang",
"BOL.ui.success" : "Erfolg",
"BOL.ui.failure" : "Fehlschlag",
"BOL.ui.fumble" : "Kritischer Fehlschlag",
"BOL.ui.critical" : "Mächtiger Erfolg",
"BOL.ui.criticallegend" : "Legendärer Erfolg",
"BOL.ui.maneuvers" : "Kampfmanöver",
"BOL.ui.stacksize" : "Stapelgröße (max)",
"BOL.ui.weapons" : "Waffen",
"BOL.ui.protections" : "Schutz",
"BOL.ui.ammos" : "Munition",
"BOL.ui.containers" : "Behälter",
"BOL.ui.treasure" : "Schätze",
"BOL.ui.vehicles" : "Fahrzeuge/Reittiere",
"BOL.ui.misc" : "Verschiedenes",
"BOL.ui.vehicleProperties" : "Fahrzeugeigenschaften",
"BOL.ui.speed" : "Geschwindigkeit",
"BOL.ui.noWeaponName" : "Unbekannte Waffe",
"BOL.ui.targetDefence": "Verteidigung",
"BOL.ui.applyShieldMalus": "Schildmalus anwenden",
"BOL.ui.shieldMalus": "Schildmalus",
"BOL.ui.defenseScore": "Verteidigungswert",
"BOL.ui.defender": "Verteidiger",
"BOL.ui.difficulty": "Schwierigkeit",
"BOL.ui.spellProperties": "Zaubereigenschaften",
"BOL.ui.duration": "Dauer",
"BOL.ui.spellkeep": "Aufrechterhalten",
"BOL.ui.concentrate": "Konzentrieren",
"BOL.ui.registerInit": "Register Init.",
"BOL.ui.isSorcerer": "Ist Zauberer?",
"BOL.ui.isAlchemist": "Ist Alchemist?",
"BOL.ui.isPriest": "Ist Priester/Druide?",
"BOL.ui.circle": "Kreis",
"BOL.ui.spells": "Zaubersprüche",
"BOL.ui.focusSpell": "Zauberspruch wirken",
"BOL.ui.sorcererRank" : "Zaubererrang",
"BOL.ui.alchemistRank": "Alchemistenrang",
"BOL.ui.mandatoryconditions": "Benötigte Vorraussetzungen",
"BOL.ui.optionnalconditions": "Optionale Vorraussetzungen",
"BOL.ui.ppcost": "Arkane Macht-Kosten",
"BOL.ui.ppAvailable": "Verfügbare Arkane Macht",
"BOL.ui.pccost": "Creation Points cost",
"BOL.ui.pcnow": "Actual Creation Points",
"BOL.ui.alchemyType": "Typ",
"BOL.ui.alchemy": "Alchemie",
"BOL.ui.makeAlchemy": "Alchemika herstellen",
"BOL.ui.alchemyCostTotal": "Alchemiepunkte ingesamt",
"BOL.ui.alchemyInvest": "Alchemiepunkte investieren",
"BOL.ui.alchemyCurrent": "Aktuelle Alchemiepunkte in Objekten",
"BOL.ui.advance": "Status",
"BOL.ui.isadvantage": "Gibt zusätzlichen Würfel?",
"BOL.ui.isbonusdice": "Gibt zusätzlichen Würfel?",
"BOL.ui.ismalusdice": "Gibt zusätzlichen Würfel?",
"BOL.ui.bonusmalus": "Zusätzliche Boni/Mali?",
"BOL.ui.nbdices": "Anzahl der Würfel",
"BOL.ui.totalmod": "Kompletter Mod.",
"BOL.ui.rangeModifiers": "Reichweitenmodifikator",
"BOL.ui.money": "Gold",
"BOL.ui.moneyTitle": "Gold & Schätze",
"BOL.ui.fightOption": "Kampfoptionen",
"BOL.ui.none": "Nichts",
"BOL.ui.fightOptionType": "Kampfoptionstypen",
"BOL.ui.activated": "Aktiviert",
"BOL.ui.deactivated": "Deaktiviert",
"BOL.ui.status": "Status",
"BOL.ui.toactivated": "Aktiv (>Deaktivieren)",
"BOL.ui.todeactivated": "Inaktiv (>Aktivieren)",
"BOL.ui.armorAgiMalus": "Rüschtung+Schild-Malus (Geschick)",
"BOL.ui.armorInitMalus": "Rüstungsmalus (Init)",
"BOL.ui.attackValue": "Angriffswert",
"BOL.featureCategory.origins": "Herkünfte",
"BOL.featureCategory.races": "Rassen",
"BOL.featureCategory.careers": "Laufbahnen",
"BOL.featureCategory.boons": "Gaben",
"BOL.featureCategory.flaws": "Schwächen",
"BOL.featureCategory.languages": "Sprachen",
"BOL.featureCategory.fightoptions": "Kampfoptionen",
"BOL.featureSubtypes.origin": "Herkunft",
"BOL.featureSubtypes.race": "Rasse",
"BOL.featureSubtypes.career": "Laufbahn",
"BOL.featureSubtypes.boon": "Gabe",
"BOL.featureSubtypes.flaw": "Schwäche",
"BOL.featureSubtypes.language": "Sprache",
"BOL.featureSubtypes.gods": "Glauben & Götter",
"BOL.featureSubtypes.fightOption": "Kampfoption",
"BOL.bougette.nomoney": "Mittellos",
"BOL.bougette.tolive": "Zum Überleben",
"BOL.bougette.easylife": "Einfaches Leben",
"BOL.bougette.luxury" : "Luxuriöses Leben",
"BOL.bougette.rich": "Reich!",
"BOL.fightOptionTypes.armor": "Angriff um die Rüstung zu umgehen",
"BOL.fightOptionTypes.intrepid": "Rücksichtsloser Angriff",
"BOL.fightOptionTypes.twoweaponsdef": "Kampf mit zwei Waffen (Verteidigung)",
"BOL.fightOptionTypes.twoweaponsatt": "Kampf mit zwei Waffen (Angriff)",
"BOL.fightOptionTypes.fulldefense": "Volle Verteidigung",
"BOL.fightOptionTypes.defense": "Verteidigungshaltung",
"BOL.fightOptionTypes.attack": "Angriffshaltung",
"BOL.itemCategory.object": "Objekt",
"BOL.itemCategory.equipment": "Ausrüstung",
"BOL.itemCategory.consumable": "Verbrauchsgut",
"BOL.itemCategory.spell": "Zauber",
"BOL.itemCategory.vehicle": "Fahrzeug/Reittier",
"BOL.itemCategory.other": "Verschiedenes",
"BOL.itemCategory.capacity" : "Fähigkeiten",
"BOL.itemCategory.alchemy": "Alchemie",
"BOL.combatCategory.protections": "Schutz",
"BOL.combatCategory.shields": "Schilde",
"BOL.combatCategory.melee": "Nahkampfwaffen",
"BOL.combatCategory.ranged": "Fernkampfwaffen",
"BOL.combatCategory.fightOptions": "Kampfoptionen",
"BOL.combatCategory.natural": "Natürliche Waffen",
"BOL.equipmentCategory.weapon": "Waffe",
"BOL.equipmentCategory.armor": "Rüstung",
"BOL.equipmentCategory.protection": "Schutz",
"BOL.equipmentCategory.shield": "Schild",
"BOL.equipmentCategory.helm": "Helm",
"BOL.equipmentCategory.jewel": "Schmuck",
"BOL.equipmentCategory.scroll": "Schriftrolle",
"BOL.equipmentCategory.ammunition": "Munition",
"BOL.equipmentCategory.container": "Behälter",
"BOL.equipmentCategory.currency": "Gold",
"BOL.equipmentCategory.other": "Verschiedenes",
"BOL.protectionCategory.armor": "Rüstung",
"BOL.protectionCategory.shield": "Schild",
"BOL.protectionCategory.helm": "Helm",
"BOL.protectionCategory.other": "Verschiedenes",
"BOL.spellItem.charm": "Zauber",
"BOL.spellItem.circle1": "Erster Kreis",
"BOL.spellItem.circle2": "Zweiter Kreis",
"BOL.spellItem.circle3": "Dritter Kreis",
"BOL.alchemyItem.common": "Häufig",
"BOL.alchemyItem.scarce": "Selten",
"BOL.alchemyItem.legend": "Legendär",
"BOL.alchemyItem.mythic": "Mystisch",
"BOL.weaponCategory.melee": "Nahkampf",
"BOL.weaponCategory.ranged": "Fernkampf",
"BOL.weaponCategory.other": "Verschiedenes",
"BOL.itemProperty.damageMultiplier": "Schadensmultiplikator",
"BOL.itemProperty.attackBonusDice": "Angriffsbonuswürfel",
"BOL.itemProperty.equipable": "Ausrüstbar",
"BOL.itemProperty.protection": "Schutz",
"BOL.itemProperty.blocking": "Blocken",
"BOL.itemProperty.magical": "Magisch",
"BOL.itemProperty.magicalProperties": "Magische Eigenschaften",
"BOL.itemProperty.concealable": "Versteckbar",
"BOL.itemProperty.2H": "Zweihändig",
"BOL.itemProperty.helm": "Helm",
"BOL.itemProperty.improvised": "Improvisiert",
"BOL.itemProperty.shield": "Schild",
"BOL.itemProperty.melee": "Nahkampf",
"BOL.itemProperty.throwable": "Werfbar",
"BOL.itemProperty.ignoreshield": "Ignoriert Schilde",
"BOL.itemProperty.bashing": "Nicht-tödlicher Schaden",
"BOL.itemProperty.stackable": "Stapelbar",
"BOL.itemProperty.ranged": "Fernkampf",
"BOL.itemProperty.weapon": "Waffe",
"BOL.itemProperty.reloadable": "Nachladbar",
"BOL.itemProperty.worn": "Angelegt",
"BOL.itemProperty.spell" : "Zauber",
"BOL.itemProperty.armor" : "Rüstung",
"BOL.itemProperty.consumable" : "Verbrauchsgut",
"BOL.itemProperty.bow" : "Bogen",
"BOL.itemProperty.crossbow" : "Armbrust",
"BOL.itemProperty.throwing" : "Wurfwaffe",
"BOL.itemProperty.activable" : "Aktivierbar",
"BOL.itemProperty.powder" : "Schießpulverwaffe",
"BOL.itemProperty.attackAttribute" : "Angriff (Attribut)",
"BOL.itemProperty.attackAptitude" : "Angriff (Fähigkeit)",
"BOL.itemProperty.attackModifiers" : "Angriff (Modifikatoren)",
"BOL.itemProperty.attackReroll1" : "Angriff (bei 1 erneut würfeln)",
"BOL.itemProperty.damage" : "Schaden (Sch)",
"BOL.itemProperty.damageModifiers" : "Schaden (Modifikatoren)",
"BOL.itemProperty.damageAttribute" : "Schaden (Attribut)",
"BOL.itemProperty.damageSpecial" : "Schaden (Spezial)",
"BOL.itemProperty.damageReroll1" : "bei 1 erneut würfeln",
"BOL.itemProperty.range" : "Reichweite (in m)",
"BOL.itemProperty.soakFormula": "Auslösen (Formel)",
"BOL.itemProperty.soakModifiers": "Auslösen (Modifikatoren)",
"BOL.itemProperty.soakValue": "Auslösen (Wert)",
"BOL.itemProperty.armorQuality": "Rüstungsqualität",
"BOL.itemProperty.blockingMalus" : "Blockmalus",
"BOL.itemProperty.blockingAttacksBlocked" : "Angriff geblockt",
"BOL.itemProperty.blocking1Attack" : "Ein Angriff blocken",
"BOL.itemProperty.blockingAllAttacks" : "Alle Angriffe blocken",
"BOL.itemProperty.slot" : "Slotplatz",
"BOL.itemProperty.reload": "Nachladen (Aktion)",
"BOL.itemProperty.weaponSize" : "Waffengröße",
"BOL.itemProperty.difficulty": "Schwierigkeit",
"BOL.itemProperty.natural": "Natürliche Waffe",
"BOL.itemProperty.onlymodifier": "Nur Modifikator (d.h. Angriffe von Kreaturen)",
"BOL.itemStat.quantity": "Anzahl",
"BOL.itemStat.weight": "Gewicht",
"BOL.itemStat.price": "Preis",
"BOL.itemStat.range": "Reichweite",
"BOL.itemStat.damage": "Schaden",
"BOL.itemStat.reload": "Nachladen (Aktion)",
"BOL.itemStat.soak": "Auslösen",
"BOL.itemStat.blocking": "Blocken",
"BOL.itemStat.modifiers": "Modifikatoren",
"BOL.weaponSize.unarmed" : "Unbewaffnet",
"BOL.weaponSize.improvised" : "Improvisiert",
"BOL.weaponSize.light" : "Leicht",
"BOL.weaponSize.medium" : "Mittel",
"BOL.weaponSize.heavy" : "Schwer",
"BOL.itemModifiers.init": "Malus (Initiative)",
"BOL.itemModifiers.social": "Malus (Sozial)",
"BOL.itemModifiers.agility": "Malus (Geschick)",
"BOL.itemModifiers.powercost": "Malus (Zusatzkosten Arkane Macht)",
"BOL.itemBlocking.malus": "Sozial",
"BOL.itemBlocking.nbAttacksPerRound": "Beweglichkeit",
"BOL.soakFormula.none" : "-",
"BOL.soakFormula.light" : "Leicht (Verhindert d6-3 erlittenen Schaden)",
"BOL.soakFormula.medium" : "Mittel (Verhindert d6-2 erlittenen Schaden)",
"BOL.soakFormula.heavy" : "Schwer (Verhindert d6-1 erlittenen Schaden)",
"BOL.armorQuality.none" : "-",
"BOL.armorQuality.light" : "Leicht",
"BOL.armorQuality.lightQ" : "Leicht Qualität",
"BOL.armorQuality.lightSup" : "Leicht Überlegen",
"BOL.armorQuality.lightLeg" : "Leicht Legendär",
"BOL.armorQuality.medium" : "Mittel",
"BOL.armorQuality.mediumQ" : "Mittel Qualität",
"BOL.armorQuality.mediumSup" : "Mittel Überlegen",
"BOL.armorQuality.mediumLeg" : "Mittel Legendär",
"BOL.armorQuality.heavy" : "Schwer",
"BOL.armorQuality.heavyQ" : "Schwer Qualität",
"BOL.armorQuality.heavySup" : "Schwer Überlegen",
"BOL.armorQuality.heavyLeg" : "Schwer Legendär",
"BOL.equipmentSlots.none" : "-",
"BOL.equipmentSlots.head" : "Kopf",
"BOL.equipmentSlots.neck" : "Hals",
"BOL.equipmentSlots.shoulders" : "Schultern",
"BOL.equipmentSlots.body" : "Körper",
"BOL.equipmentSlots.rhand" : "Rechte Hand",
"BOL.equipmentSlots.lhand" : "Linke Hand",
"BOL.equipmentSlots.2hands" : "Zweihändig",
"BOL.equipmentSlots.rarm" : "Rechter Arm",
"BOL.equipmentSlots.larm" : "Linker Arm",
"BOL.equipmentSlots.chest" : "Torso",
"BOL.equipmentSlots.belt" : "Gürtel",
"BOL.equipmentSlots.legs" : "Beine",
"BOL.equipmentSlots.feet" : "Füße",
"BOL.equipmentSlots.finder" : "Finger",
"BOL.equipmentSlots.ear" : "Ohr",
"BOL.vehicleCategory.mount" : "Reittier",
"BOL.vehicleCategory.flying" : "Fluggerät",
"BOL.vehicleCategory.boat" : "Schiff",
"BOL.vehicleCategory.other" : "Anderes",
"BOL.range.PointBlank": "Direkt",
"BOL.range.Short": "Kurz",
"BOL.range.Medium": "Mittel",
"BOL.range.Long": "Weit",
"BOL.range.VeryLong": "Sehr weit",
"BOL.range.Extreme": "Extrem weit",
"BOL.range.Maximum": "Maximale Reichweite",
"BOL.notification.MacroMultipleTokensSelected": "Du hast mehrere Token ausgewählt",
"BOL.notification.MacroNoActorAvailable": "Es konnte kein Akteur gefunden werden",
"BOL.notification.MacroNoTokenSelected": "Du musst einen Token auswählen",
"BOL.size.tiny": "Winzig",
"BOL.size.verysmall": "Sehr klein",
"BOL.size.small" : "Klein",
"BOL.size.medium" : "Mittel",
"BOL.size.large" : "Groß",
"BOL.size.verylarge": "Sehr groß",
"BOL.size.huge" :"Riesig",
"BOL.size.massive" : "Massiv",
"BOL.size.enormous": "Enorm",
"BOL.size.gigantic": "Gigantisch",
"BOL.size.immense": "Immens",
"BOL.size.colossal": "Kolossal",
"BOL.chat.fightactive": "{name} aktiviert die Kampfoption {foName} für diese Runde!",
"BOL.chat.fightunactive": "{name} deaktiviert die Kampfoption {foName} für diese Runde!",
"BOL.chat.isdead": "{name} ist tot!",
"BOL.chat.epitaph": "Möge sein Name auf den Schlachtfeldern Lemurias in Ehren gehalten werden.!",
"BOL.chat.vitalityzero": "Das Lebensblut von {name} ist {hp}: {name} geht zu Boden und wird bewusstlos!",
"BOL.chat.vitalityheroism": "Gib einen Heldenpunkt aus um für eine Runde wieder auf die Beine zu kommen.",
"BOL.chat.vitalityheroismhint": "Dadurch steigt dein Lebensblut auf das Maximum geteilt durch 2 (aufgerundet).",
"BOL.chat.vitalitydying": "Das Lebensblut von {name} ist {hp}! {name} stirbt...",
"BOL.chat.vitalitydyingheroism": "Gib einen Heldenpunkt aus um den Tod herauszufordern.",
"BOL.chat.alchemytitle": "Alchemiepräparat: {name}",
"BOL.chat.alchemypoints": "Investierte Charaktererschaffungspunkte: {pcCostCurrent}",
"BOL.chat.alchemysuccess": "Das alchemistische Präparat wurde erfolgreich abgeschlossen!<br>Erstelle den entsprechenden Gegenstand oder Effekt in deinem Inventar.<br>Der Vorbereitungsfortschritt wurde auf 0 zurückgesetzt.",
"BOL.chat.alchemyfailure": "Das Alchemistische Präparat ist fehlgeschlagen!<br>Der Fortschritt wurde auf 0 zurückgesetzt.",
"BOL.chat.rolldamage": "Schaden auswürfeln",
"BOL.chat.rolldamage6": "Schaden auswürfeln +6",
"BOL.chat.rolldamage12": "Schaden auswürfeln +12 (1 Heldenpunkt)",
"BOL.chat.damageresult": "Schaden von {name}: {total}",
"BOL.chat.damagetarget": "Ziel: {target}",
"BOL.chat.applydamagetotarget": "Schaden auf Ziel anwenden",
"BOL.chat.fightoption": "Kampfoption",
"BOL.chat.reroll": "Erneut Würfeln (1 Heldenpunkt)",
"BOL.chat.toheroic": "In mächtigen Erfolg umwandeln (1 Heldenpunkt)",
"BOL.chat.tolegend": "In legendären Erfolg umwandeln (1 Heldenpunkt)",
"BOL.chat.hurttitle": "{name} wird {damageTotal} Schaden erleiden!",
"BOL.chat.armordefault": "Dieser Angriff richtet sich gegen Fehler in deiner Rüstung. Du musst den Schaden ohne den Schutz deiner Rüstung einstecken!",
"BOL.chat.witharmor": "Schaden MIT Rüstungsschutz anwenden",
"BOL.chat.withoutarmor": "Schaden OHNE Rüstungsschutz anwenden",
"BOL.chat.shakeoff": "Nur ein Kratzer (1 Heldenpunkt)",
"BOL.chat.splinteredshield": "Opfere dein Schild/Schwert {name} (1 Heldenpunkt)",
"BOL.chat.damagesummary": "Schaden durch {name} erlitten",
"BOL.chat.protectvalue": "Rüstungsschutz",
"BOL.chat.noprotectvalue": "Kein Rüstungsschutz!",
"BOL.chat.heroreducedamage": "Gib einen Heldenpunkt aus um eine zusätzliche Schadensreduktion von {total} zu bekommen.",
"BOL.chat.herosplintered": "Du hast keinen Schaden eingesteckt dank {weaponHero.name}. Leider wurde es während der Parade zerstört. Du hast einen Heldenpunkt verloren.",
"BOL.chat.finaldamage": "Endergebnis: {finalDamage} Schaden!",
"BOL.chat.spell": "Zauber",
"BOL.chat.spellcost": "Arkane Macht-Kosten",
"BOL.chat.spellremaining": "Verbleibende Arkane Macht",
"BOL.dialog.soeasy": "Trivial (+4)",
"BOL.dialog.veryeasy": "Sehr leicht (+2)",
"BOL.dialog.easy": "Leicht (+1)",
"BOL.dialog.moderate": "Normal (0)",
"BOL.dialog.hard": "Knifflig (-1)",
"BOL.dialog.tough": "Schwierig (-2)",
"BOL.dialog.demanding": "Sehr Schwierig (-4)",
"BOL.dialog.formidable": "Herausfordernd (-6)",
"BOL.dialog.heroic": "Heldenhaft (-8)",
"BOL.dialog.mythic": "Mystisch (-10)",
"BOL.dialog.divine": "Göttlich (-12)",
"BOL.dialog.pointblank": "Direkt (+1)",
"BOL.dialog.close": "Kurz (0)",
"BOL.dialog.medium": "Mittel (-1)",
"BOL.dialog.long": "Weit (-2)",
"BOL.dialog.distant": "Sehr Weit (-4)",
"BOL.dialog.extreme": "Extrem Weit (-6)",
"BOL.dialog.utmost": "Maximale Reichweite (-8)",
"BOL.ui.name": "Name",
"BOL.ui.xp": "Erfahrung",
"BOL.ui.xpspent": "Ausgegeben",
"BOL.ui.xptotal": "Insgesamt",
"BOL.ui.biosize": "Größe",
"BOL.ui.bioweight": "Gewicht",
"BOL.ui.bioage": "Alter",
"BOL.ui.biohair": "Haare",
"BOL.ui.bioeyes": "Augen",
"BOL.ui.biosigns": "Erkennungszeichen",
"BOL.ui.biodescription": "Beschreibung",
"BOL.ui.bionotes": "Notizen",
"BOL.chat.welcome1": "Willkommen zu Barbarians of Lemuria (französische Ludospherik-Version, deutsche Übersetzung von Truant Spiele)",
"BOL.chat.welcome2": "Zum Spielen werden zwingend die passenden BoL Bücher benötigt. Die französischen Originalbücher für dieses System gibt es hier: http://www.ludospherik.fr/content/14-barbarians-of-lemuria<br>Die deutsche Übersetzung gibt es bei Truant Spiele: https://truant.com/produkt/barbarians-of-lemuria-2",
"BOL.chat.welcome3": "Die enthaltenen Karten wurden von Guillaume Tavernier und Ludospherik zur Verfügung gestellt. Vielen Dank dafür!",
"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!"
}

View File

@ -1,111 +1,111 @@
{ {
"ACTOR.TypeCharacter": "Personnage", "ACTOR.TypeCharacter": "Character",
"ACTOR.TypeEncounter": "Rencontre", "ACTOR.TypeEncounter": "Encounter",
"ITEM.TypeItem": "Objet", "ITEM.TypeItem": "Item",
"ITEM.TypeFeature": "Trait", "ITEM.TypeFeature": "Feature",
"ITEM.TypeWeapon": "Arme", "ITEM.TypeWeapon": "Weapon",
"ITEM.TypeArmor": "Armure", "ITEM.TypeArmor": "Armor",
"BOL.attributes.vigor": "Vigueur", "BOL.attributes.vigor": "Vigor",
"BOL.attributes.halfvigor" : "Demi-vigueur", "BOL.attributes.halfvigor" : "Half-Vigor",
"BOL.attributes.agility": "Agilité", "BOL.attributes.agility": "Agility",
"BOL.attributes.mind": "Esprit", "BOL.attributes.mind": "Mind",
"BOL.attributes.appeal": "Aura", "BOL.attributes.appeal": "Appeal",
"BOL.aptitudes.init": "Initiative", "BOL.aptitudes.init": "Initiative",
"BOL.aptitudes.melee": "Mêlée", "BOL.aptitudes.melee": "Melee",
"BOL.aptitudes.ranged": "Tir", "BOL.aptitudes.ranged": "Ranged",
"BOL.aptitudes.def": "Défense", "BOL.aptitudes.def": "Defense",
"BOL.aptitudes.prot": "Protection", "BOL.aptitudes.prot": "Protection",
"BOL.resources.hp": "Vitalité", "BOL.resources.hp": "Vitality",
"BOL.resources.hero": "Héroïsme", "BOL.resources.hero": "Hero",
"BOL.resources.faith": "Foi", "BOL.resources.faith": "Faith",
"BOL.resources.creation": "Création", "BOL.resources.creation": "Creation",
"BOL.resources.power": "Pouvoir", "BOL.resources.power": "Power",
"BOL.resources.villainy": "Vilénie", "BOL.resources.villainy": "Villany",
"BOL.resources.alchemypoints": "Alchemy Points", "BOL.resources.alchemypoints": "Alchemy Points",
"BOL.traits.xp": "Expérience", "BOL.traits.xp": "Experience",
"BOL.ui.tab.stats": "Attributs", "BOL.ui.tab.stats": "Attributes",
"BOL.ui.tab.combat": "Combat", "BOL.ui.tab.combat": "Combat",
"BOL.ui.tab.actions": "Actions", "BOL.ui.tab.actions": "Actions",
"BOL.ui.tab.features": "Traits", "BOL.ui.tab.features": "Traits",
"BOL.ui.tab.equipment": "Equipement", "BOL.ui.tab.equipment": "Equipment",
"BOL.ui.tab.description": "Description", "BOL.ui.tab.description": "Description",
"BOL.ui.tab.details": "Details", "BOL.ui.tab.details": "Details",
"BOL.ui.tab.spellalchemy": "Spells & Alchemy", "BOL.ui.tab.spellalchemy": "Spells & Alchemy",
"BOL.ui.properties": "Propriétés", "BOL.ui.properties": "Properties",
"BOL.ui.description": "Description", "BOL.ui.description": "Description",
"BOL.ui.actions": "Actions", "BOL.ui.actions": "Actions",
"BOL.ui.capacities": "Capacités", "BOL.ui.capacities": "Capacity",
"BOL.ui.damages": "Dommages", "BOL.ui.damages": "Damage",
"BOL.ui.details": "Détails", "BOL.ui.details": "Details",
"BOL.ui.category": "Catégorie", "BOL.ui.category": "Category",
"BOL.ui.subcategory": "Sous-catégorie", "BOL.ui.subcategory": "Sub-Category",
"BOL.ui.type": "Type", "BOL.ui.type": "Type",
"BOL.ui.subtype": "Sous-type", "BOL.ui.subtype": "Subtype",
"BOL.ui.attribute" : "Attribut", "BOL.ui.attribute" : "Attribute",
"BOL.ui.aptitude" : "Aptitude", "BOL.ui.aptitude" : "Aptitude",
"BOL.ui.advantages" : "Avantages/Désavantages", "BOL.ui.advantages" : "Boons/Flaws",
"BOL.ui.modifiers": "Modificateurs", "BOL.ui.modifiers": "Modifiers",
"BOL.ui.item": "Objet", "BOL.ui.item": "Item",
"BOL.ui.edit": "Editer", "BOL.ui.edit": "Edit",
"BOL.ui.unequip": "Déséquiper", "BOL.ui.unequip": "Unequip",
"BOL.ui.equip": "Équiper", "BOL.ui.equip": "Equip",
"BOL.ui.delete": "Supprimer", "BOL.ui.delete": "Delete",
"BOL.ui.roll" : "Utiliser", "BOL.ui.roll" : "Roll",
"BOL.ui.equipment" : "Équipement", "BOL.ui.equipment" : "Equipment",
"BOL.ui.equipmentProperties" : "Propiétés d'équipement", "BOL.ui.equipmentProperties" : "Equipment properties",
"BOL.ui.weaponAttack" : "Weapon attack", "BOL.ui.weaponAttack" : "Weapon attack",
"BOL.ui.weaponProperties" : "Propiétés offensives", "BOL.ui.weaponProperties" : "Weapon properties",
"BOL.ui.protectionProperties" : "Protection", "BOL.ui.protectionProperties" : "Protection properties",
"BOL.ui.magicalProperties" : "Propriétés magiques", "BOL.ui.magicalProperties" : "Magical properties",
"BOL.ui.alchemyProperties": "Alchemy properties", "BOL.ui.alchemyProperties": "Alchemy properties",
"BOL.ui.armor" : "Armure", "BOL.ui.armor" : "Armor",
"BOL.ui.reach" : "Allonge", "BOL.ui.reach" : "Reach",
"BOL.ui.weapon" : "Arme", "BOL.ui.weapon" : "Weapon",
"BOL.ui.melee" : "Arme de contact", "BOL.ui.melee" : "Melee",
"BOL.ui.ranged" : "Arme à distance", "BOL.ui.ranged" : "Ranged",
"BOL.ui.protection" : "Protection", "BOL.ui.protection" : "Protection",
"BOL.ui.shield" : "Bouclier", "BOL.ui.shield" : "Shield",
"BOL.ui.blocking" : "Blocage", "BOL.ui.blocking" : "Blocking",
"BOL.ui.range" : "Portée", "BOL.ui.range" : "Range",
"BOL.ui.quantity" : "Quantité", "BOL.ui.quantity" : "Quantity",
"BOL.ui.qty" : "Qté", "BOL.ui.qty" : "Qty",
"BOL.ui.slot" : "Empl.", "BOL.ui.slot" : "Slot",
"BOL.ui.weight" : "Poids", "BOL.ui.weight" : "Weight",
"BOL.ui.price": "Prix", "BOL.ui.price": "Price",
"BOL.ui.cancel": "Annuler", "BOL.ui.cancel": "Cancel",
"BOL.ui.submit": "OK", "BOL.ui.submit": "OK",
"BOL.ui.attributeCheck" : "Test d'attribut", "BOL.ui.attributeCheck" : "Attribute Check",
"BOL.ui.aptitudeCheck" : "Test d'aptitude", "BOL.ui.aptitudeCheck" : "Aptitude Check",
"BOL.ui.weaponCheck" : "Jet d'attaque", "BOL.ui.weaponCheck" : "Weapon Check",
"BOL.ui.spellCheck" : "Jet de sort", "BOL.ui.spellCheck" : "Spell Check",
"BOL.ui.careers" : "Carrières", "BOL.ui.careers" : "Careers",
"BOL.ui.boons" : "Avantages", "BOL.ui.boons" : "Boons",
"BOL.ui.flaws" : "Désavantages", "BOL.ui.flaws" : "Flaws",
"BOL.ui.rank" : "Rang", "BOL.ui.rank" : "Rank",
"BOL.ui.success" : "Succès", "BOL.ui.success" : "Success",
"BOL.ui.failure" : "Échec", "BOL.ui.failure" : "Failure",
"BOL.ui.fumble" : "Échec critique", "BOL.ui.fumble" : "Fumble",
"BOL.ui.critical" : "Succès critique", "BOL.ui.critical" : "Critical Success",
"BOL.ui.maneuvers" : "Actions de combat", "BOL.ui.maneuvers" : "Maneuvers",
"BOL.ui.stacksize" : "Taille de pile (max)", "BOL.ui.stacksize" : "Stack Size (max)",
"BOL.ui.weapons" : "Armes", "BOL.ui.weapons" : "Weapons",
"BOL.ui.protections" : "Protections", "BOL.ui.protections" : "Protection",
"BOL.ui.ammos" : "Munitions", "BOL.ui.ammos" : "Ammo",
"BOL.ui.containers" : "Conteneurs", "BOL.ui.containers" : "Container",
"BOL.ui.treasure" : "Trésor", "BOL.ui.treasure" : "Treasure",
"BOL.ui.vehicles" : "Véhicules/Montures", "BOL.ui.vehicles" : "Vehicles/Mounts",
"BOL.ui.misc" : "Divers", "BOL.ui.misc" : "Misc",
"BOL.ui.vehicleProperties" : " Propriétés de véhicule", "BOL.ui.vehicleProperties" : "Vehicle properties",
"BOL.ui.speed" : "Vitesse", "BOL.ui.speed" : "Speed",
"BOL.ui.noWeaponName" : "Arme Inconnue", "BOL.ui.noWeaponName" : "Weapon Name",
"BOL.ui.targetDefence": "Défense", "BOL.ui.targetDefence": "Defense",
"BOL.ui.applyShieldMalus": "Appliquer le Malus de Petit Bouclier", "BOL.ui.applyShieldMalus": "Apply Shield Modifier",
"BOL.ui.shieldMalus": "Malus de Bouclier", "BOL.ui.shieldMalus": "Shield Modifier",
"BOL.ui.defenseScore": "Score de Defense", "BOL.ui.defenseScore": "Defense Score",
"BOL.ui.defender": "Défenseur", "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",
@ -121,7 +121,7 @@
"BOL.ui.sorcererRank" : "Sorcerer Rank", "BOL.ui.sorcererRank" : "Sorcerer Rank",
"BOL.ui.alchemistRank": "Alchemist Rank", "BOL.ui.alchemistRank": "Alchemist Rank",
"BOL.ui.mandatoryconditions": "Mandatory conditions", "BOL.ui.mandatoryconditions": "Mandatory conditions",
"BOL.ui.optionnalconditions": "Optionnal conditions", "BOL.ui.optionnalconditions": "Optional conditions",
"BOL.ui.ppcost": "Power Points cost", "BOL.ui.ppcost": "Power Points cost",
"BOL.ui.ppAvailable": "Available Power Points", "BOL.ui.ppAvailable": "Available Power Points",
"BOL.ui.pccost": "Creation Points cost", "BOL.ui.pccost": "Creation Points cost",
@ -134,38 +134,38 @@
"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": "Additionnal bonus/malus", "BOL.ui.bonusmalus": "Additional bonus/penalty",
"BOL.ui.nbdices": "Number of Dices", "BOL.ui.nbdices": "Number of Dice",
"BOL.ui.totalmod": "Total Mod.", "BOL.ui.totalmod": "Total Mod.",
"BOL.ui.rangeModifiers": "Range modifier", "BOL.ui.rangeModifiers": "Range modifier",
"BOL.ui.money": "Bougette", "BOL.ui.money": "Money",
"BOL.ui.moneyTitle": "Gold & Treasure", "BOL.ui.moneyTitle": "Gold & Treasure",
"BOL.ui.fightOption": "Fight Options", "BOL.ui.fightOption": "Fight Options",
"BOL.ui.none": "None", "BOL.ui.none": "None",
"BOL.ui.fightOptionType": "Fight Options types", "BOL.ui.fightOptionType": "Fight Option types",
"BOL.ui.activated": "Activated", "BOL.ui.activated": "Activated",
"BOL.ui.deactivated": "Deactivated", "BOL.ui.deactivated": "Deactivated",
"BOL.ui.status": "Status", "BOL.ui.status": "Status",
"BOL.ui.toactivated": "Active (>Désactiver)", "BOL.ui.toactivated": "Active (>Deactivated)",
"BOL.ui.todeactivated": "Inactive (>Activer)", "BOL.ui.todeactivated": "Inactive (>Active)",
"BOL.ui.armorAgiMalus": "Armor+Shield Malus (Agi)", "BOL.ui.armorAgiMalus": "Armor+Shield Modifier (Agi)",
"BOL.ui.armorInitMalus": "Armor Malus (Init)", "BOL.ui.armorInitMalus": "Armor Modifier (Init)",
"BOL.ui.attackValue": "Attack value", "BOL.ui.attackValue": "Attack Value",
"BOL.featureCategory.origins": "Origines", "BOL.featureCategory.origins": "Origins",
"BOL.featureCategory.races": "Races", "BOL.featureCategory.races": "Races",
"BOL.featureCategory.careers": "Carrières", "BOL.featureCategory.careers": "Careers",
"BOL.featureCategory.boons": "Avantages", "BOL.featureCategory.boons": "Boons",
"BOL.featureCategory.flaws": "Désavantages", "BOL.featureCategory.flaws": "Flaws",
"BOL.featureCategory.languages": "Langages", "BOL.featureCategory.languages": "Languages",
"BOL.featureCategory.fightoptions": "Fight Options", "BOL.featureCategory.fightoptions": "Fight Options",
"BOL.featureSubtypes.origin": "Origine", "BOL.featureSubtypes.origin": "Origin",
"BOL.featureSubtypes.race": "Race", "BOL.featureSubtypes.race": "Race",
"BOL.featureSubtypes.career": "Carrière", "BOL.featureSubtypes.career": "Career",
"BOL.featureSubtypes.boon": "Avantage", "BOL.featureSubtypes.boon": "Boon",
"BOL.featureSubtypes.flaw": "Désavantage", "BOL.featureSubtypes.flaw": "Flaw",
"BOL.featureSubtypes.language": "Langage", "BOL.featureSubtypes.language": "Language",
"BOL.featureSubtypes.gods": "Faith & Gods", "BOL.featureSubtypes.gods": "Faith & Gods",
"BOL.featureSubtypes.fightOption": "Combat Option", "BOL.featureSubtypes.fightOption": "Combat Option",
@ -175,46 +175,46 @@
"BOL.bougette.luxury" : "Luxury life", "BOL.bougette.luxury" : "Luxury life",
"BOL.bougette.rich": "Rich!", "BOL.bougette.rich": "Rich!",
"BOL.fightOptionTypes.armor": "Attaque au défaut d'armure", "BOL.fightOptionTypes.armor": "Armor Attack Option",
"BOL.fightOptionTypes.intrepid": "Attaque intrépide", "BOL.fightOptionTypes.intrepid": "Fearless Attack",
"BOL.fightOptionTypes.twoweaponsdef": "Combat à 2 armes (Défense)", "BOL.fightOptionTypes.twoweaponsdef": "Two Weapon (Defense)",
"BOL.fightOptionTypes.twoweaponsatt": "Combat à 2 armes (Attaque)", "BOL.fightOptionTypes.twoweaponsatt": "Two Weapon (Attack)",
"BOL.fightOptionTypes.fulldefense": "Défense totale", "BOL.fightOptionTypes.fulldefense": "Full Defense",
"BOL.fightOptionTypes.defense": "Posture défensive", "BOL.fightOptionTypes.defense": "Defensive Posture",
"BOL.fightOptionTypes.attack": "Posture offensive", "BOL.fightOptionTypes.attack": "Offensive Posture",
"BOL.itemCategory.object": "Objet", "BOL.itemCategory.object": "Object",
"BOL.itemCategory.equipment": "Équipement", "BOL.itemCategory.equipment": "Equipment",
"BOL.itemCategory.consumable": "Consommable", "BOL.itemCategory.consumable": "Consumable",
"BOL.itemCategory.spell": "Sort", "BOL.itemCategory.spell": "Spell",
"BOL.itemCategory.vehicle": "Monture/Véhicule", "BOL.itemCategory.vehicle": "Mount/Vehicle",
"BOL.itemCategory.other": "Autre", "BOL.itemCategory.other": "Other",
"BOL.itemCategory.capacity" : "Capacité", "BOL.itemCategory.capacity" : "Capacity",
"BOL.itemCategory.alchemy": "Alchemy", "BOL.itemCategory.alchemy": "Alchemy",
"BOL.combatCategory.protections": "Protections", "BOL.combatCategory.protections": "Protections",
"BOL.combatCategory.shields": "Boucliers", "BOL.combatCategory.shields": "Shields",
"BOL.combatCategory.melee": "Armes de contact", "BOL.combatCategory.melee": "Melee",
"BOL.combatCategory.ranged": "Armes à distance", "BOL.combatCategory.ranged": "Ranged",
"BOL.combatCategory.fightOptions": "Fight options", "BOL.combatCategory.fightOptions": "Fight options",
"BOL.combatCategory.natural": "Natural Weapons", "BOL.combatCategory.natural": "Natural Weapons",
"BOL.equipmentCategory.weapon": "Arme", "BOL.equipmentCategory.weapon": "Weapon",
"BOL.equipmentCategory.armor": "Armure", "BOL.equipmentCategory.armor": "Armor",
"BOL.equipmentCategory.protection": "Protection", "BOL.equipmentCategory.protection": "Protection",
"BOL.equipmentCategory.shield": "Bouclier", "BOL.equipmentCategory.shield": "Shield",
"BOL.equipmentCategory.helm": "Casque", "BOL.equipmentCategory.helm": "Helm",
"BOL.equipmentCategory.jewel": "Bijou", "BOL.equipmentCategory.jewel": "Jewel",
"BOL.equipmentCategory.scroll": "Parchemin", "BOL.equipmentCategory.scroll": "Scroll",
"BOL.equipmentCategory.ammunition": "Munition", "BOL.equipmentCategory.ammunition": "Ammunition",
"BOL.equipmentCategory.container": "Conteneur", "BOL.equipmentCategory.container": "Container",
"BOL.equipmentCategory.currency": "Monnaie", "BOL.equipmentCategory.currency": "Money",
"BOL.equipmentCategory.other": "Autre", "BOL.equipmentCategory.other": "Other",
"BOL.protectionCategory.armor": "Armure", "BOL.protectionCategory.armor": "Armor",
"BOL.protectionCategory.shield": "Bouclier", "BOL.protectionCategory.shield": "Shield",
"BOL.protectionCategory.helm": "Casque", "BOL.protectionCategory.helm": "Helm",
"BOL.protectionCategory.other": "Autre", "BOL.protectionCategory.other": "Other",
"BOL.spellItem.charm": "Charm", "BOL.spellItem.charm": "Charm",
"BOL.spellItem.circle1": "First Circle", "BOL.spellItem.circle1": "First Circle",
@ -226,140 +226,140 @@
"BOL.alchemyItem.legend": "Legendary", "BOL.alchemyItem.legend": "Legendary",
"BOL.alchemyItem.mythic": "Mythic", "BOL.alchemyItem.mythic": "Mythic",
"BOL.weaponCategory.melee": "Arme de mêlée", "BOL.weaponCategory.melee": "Melee",
"BOL.weaponCategory.ranged": "Arme de tir", "BOL.weaponCategory.ranged": "Ranged",
"BOL.weaponCategory.other": "Autre", "BOL.weaponCategory.other": "Other",
"BOL.itemProperty.damageMultiplier": "Damages Multiplier", "BOL.itemProperty.damageMultiplier": "Damage Multiplier",
"BOL.itemProperty.attackBonusDice": "Attack Bonus Dice", "BOL.itemProperty.attackBonusDice": "Attack Bonus Dice",
"BOL.itemProperty.equipable": "Équipable", "BOL.itemProperty.equipable": "Equipable",
"BOL.itemProperty.protection": "Protection", "BOL.itemProperty.protection": "Protection",
"BOL.itemProperty.blocking": "Blocage", "BOL.itemProperty.blocking": "Blocking",
"BOL.itemProperty.magical": "Magique", "BOL.itemProperty.magical": "Magical",
"BOL.itemProperty.concealable": "Dissimulable", "BOL.itemProperty.concealable": "Concealable",
"BOL.itemProperty.2H": "Arme à 2 mains", "BOL.itemProperty.2H": "2H Weapon",
"BOL.itemProperty.helm": "Casque", "BOL.itemProperty.helm": "Helm",
"BOL.itemProperty.improvised": "Improvisée", "BOL.itemProperty.improvised": "Improvised",
"BOL.itemProperty.shield": "Bouclier", "BOL.itemProperty.shield": "Shield",
"BOL.itemProperty.melee": "Arme de contact", "BOL.itemProperty.melee": "Melee",
"BOL.itemProperty.throwable": "Peut être lancée", "BOL.itemProperty.throwable": "Throwable",
"BOL.itemProperty.ignoreshield": "Ignore les boucliers", "BOL.itemProperty.ignoreshield": "Ignore Shield",
"BOL.itemProperty.bashing": "Dégâts non létaux", "BOL.itemProperty.bashing": "Bashing",
"BOL.itemProperty.stackable": "Empilable", "BOL.itemProperty.stackable": "Stackable",
"BOL.itemProperty.ranged": "A distance", "BOL.itemProperty.ranged": "Ranged",
"BOL.itemProperty.weapon": "Offensive", "BOL.itemProperty.weapon": "Weapon",
"BOL.itemProperty.reloadable": "Rechargeable", "BOL.itemProperty.reloadable": "Reloadable",
"BOL.itemProperty.worn": "Équipé", "BOL.itemProperty.worn": "Equipped",
"BOL.itemProperty.spell" : "Sort", "BOL.itemProperty.spell" : "Spell",
"BOL.itemProperty.armor" : "Armure", "BOL.itemProperty.armor" : "Armor",
"BOL.itemProperty.consumable" : "Consommable", "BOL.itemProperty.consumable" : "Consumable",
"BOL.itemProperty.bow" : "Arc", "BOL.itemProperty.bow" : "Bow",
"BOL.itemProperty.crossbow" : "Arbalète", "BOL.itemProperty.crossbow" : "Crossbow",
"BOL.itemProperty.throwing" : "Arme de jet", "BOL.itemProperty.throwing" : "Throwing",
"BOL.itemProperty.activable" : "Activable", "BOL.itemProperty.activable" : "Activable",
"BOL.itemProperty.powder" : "Arme à poudre", "BOL.itemProperty.powder" : "Powder",
"BOL.itemProperty.attackAttribute" : "Attaque (Attribut)", "BOL.itemProperty.attackAttribute" : "Attack (Attribute)",
"BOL.itemProperty.attackAptitude" : "Attaque (Aptitude)", "BOL.itemProperty.attackAptitude" : "Attack (Aptitude)",
"BOL.itemProperty.attackModifiers" : "Attaque (Modificateurs)", "BOL.itemProperty.attackModifiers" : "Attack (Modifiers)",
"BOL.itemProperty.attackReroll1" : "Attaque (Relancer les 1)", "BOL.itemProperty.attackReroll1" : "Attack (Reroll 1's)",
"BOL.itemProperty.damage" : "Dommages (Dés)", "BOL.itemProperty.damage" : "Damage (Dmg)",
"BOL.itemProperty.damageModifiers" : "Dommages (Modificateurs)", "BOL.itemProperty.damageModifiers" : "Damage (Modifiers)",
"BOL.itemProperty.damageAttribute" : "Dommages (Attribut)", "BOL.itemProperty.damageAttribute" : "Damage (Attribute)",
"BOL.itemProperty.damageSpecial" : "Dommages (Spécial)", "BOL.itemProperty.damageSpecial" : "Damage (Special)",
"BOL.itemProperty.damageReroll1" : "Relancer les 1", "BOL.itemProperty.damageReroll1" : "Reroll 1's",
"BOL.itemProperty.range" : "Portée (en m)", "BOL.itemProperty.range" : "Range (in m)",
"BOL.itemProperty.soakFormula": "Encaissement (Formule)", "BOL.itemProperty.soakFormula": "Soak (Formula)",
"BOL.itemProperty.soakModifiers": "Encaissement (Modificateur)", "BOL.itemProperty.soakModifiers": "Soak (Modifiers)",
"BOL.itemProperty.soakValue": "Encaissement (Valeur par défaut)", "BOL.itemProperty.soakValue": "Soak (Default Value)",
"BOL.itemProperty.armorQuality": "Qualité d'armure", "BOL.itemProperty.armorQuality": "Armor Quality",
"BOL.itemProperty.blockingMalus" : "Malus de blocage", "BOL.itemProperty.blockingMalus" : "Blocking Modifier",
"BOL.itemProperty.blockingAttacksBlocked" : "Attaques bloquée", "BOL.itemProperty.blockingAttacksBlocked" : "Attacks blocked",
"BOL.itemProperty.blocking1Attack" : "Bloque 1 attaque", "BOL.itemProperty.blocking1Attack" : "Block 1 attack",
"BOL.itemProperty.blockingAllAttacks" : "Bloque toutes les attaques", "BOL.itemProperty.blockingAllAttacks" : "Block all attacks",
"BOL.itemProperty.slot" : "Emplacement utilisé", "BOL.itemProperty.slot" : "Slot",
"BOL.itemProperty.reload": "Rechargement (Actions)", "BOL.itemProperty.reload": "Reload (Actions)",
"BOL.itemProperty.weaponSize" : "Classe d'arme", "BOL.itemProperty.weaponSize" : "Weapon Size",
"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.itemStat.quantity": "Quantité", "BOL.itemStat.quantity": "Quantity",
"BOL.itemStat.weight": "Poids", "BOL.itemStat.weight": "Weight",
"BOL.itemStat.price": "Prix", "BOL.itemStat.price": "Price",
"BOL.itemStat.range": "Portée", "BOL.itemStat.range": "Range",
"BOL.itemStat.damage": "Dommages", "BOL.itemStat.damage": "Damage",
"BOL.itemStat.reload": "Rechargement (Actions)", "BOL.itemStat.reload": "Reload (Actions)",
"BOL.itemStat.soak": "Valeur de protection", "BOL.itemStat.soak": "Soak",
"BOL.itemStat.blocking": "Bloquage", "BOL.itemStat.blocking": "Blocking",
"BOL.itemStat.modifiers": "Modificateurs", "BOL.itemStat.modifiers": "Modifiers",
"BOL.weaponSize.unarmed" : "Mains nues", "BOL.weaponSize.unarmed" : "Unarmed",
"BOL.weaponSize.improvised" : "Arme improvisée", "BOL.weaponSize.improvised" : "Improvised",
"BOL.weaponSize.light" : "Légère", "BOL.weaponSize.light" : "Light",
"BOL.weaponSize.medium" : "Moyenne", "BOL.weaponSize.medium" : "Medium",
"BOL.weaponSize.heavy" : "Lourde", "BOL.weaponSize.heavy" : "heavy",
"BOL.itemModifiers.init": "Malus (Initiative)", "BOL.itemModifiers.init": "Modifier (Initiative)",
"BOL.itemModifiers.social": "Malus (Social)", "BOL.itemModifiers.social": "Modifier (Social)",
"BOL.itemModifiers.agility": "Malus (Agilité)", "BOL.itemModifiers.agility": "Modifier (Agility)",
"BOL.itemModifiers.powercost": "Malus (Coût supplémentaire en PP)", "BOL.itemModifiers.powercost": "Modifier (Additional Cost in PP)",
"BOL.itemBlocking.malus": "Social", "BOL.itemBlocking.malus": "Modifier",
"BOL.itemBlocking.nbAttacksPerRound": "Agilité", "BOL.itemBlocking.nbAttacksPerRound": "Agility",
"BOL.soakFormula.none" : "-", "BOL.soakFormula.none" : "-",
"BOL.soakFormula.light" : "Légère (Annule d6-3 dégâts subis)", "BOL.soakFormula.light" : "Light (Cancels d6-3 damage)",
"BOL.soakFormula.medium" : "Moyenne (Annule d6-2 dégâts subis)", "BOL.soakFormula.medium" : "Medium (Cancels d6-2 damage)",
"BOL.soakFormula.heavy" : "Lourde (Annule d6-1 dégâts subis)", "BOL.soakFormula.heavy" : "Heavy (Cancels d6-1 damage)",
"BOL.armorQuality.none" : "-", "BOL.armorQuality.none" : "-",
"BOL.armorQuality.light" : "Légère", "BOL.armorQuality.light" : "Light",
"BOL.armorQuality.lightQ" : "Légère de qualité", "BOL.armorQuality.lightQ" : "Light Quality",
"BOL.armorQuality.lightSup" : "Légère Supérieure", "BOL.armorQuality.lightSup" : "Light Superior",
"BOL.armorQuality.lightLeg" : "Légère Légendaire", "BOL.armorQuality.lightLeg" : "Light Legendary",
"BOL.armorQuality.medium" : "Moyenne", "BOL.armorQuality.medium" : "Medium",
"BOL.armorQuality.mediumQ" : "Moyenne de qualité", "BOL.armorQuality.mediumQ" : "Medium Quality",
"BOL.armorQuality.mediumSup" : "Moyenne Supérieure", "BOL.armorQuality.mediumSup" : "Medium Superior",
"BOL.armorQuality.mediumLeg" : "Moyenne Légendaire", "BOL.armorQuality.mediumLeg" : "Medium Legendary",
"BOL.armorQuality.heavy" : "Lourde", "BOL.armorQuality.heavy" : "Heavy",
"BOL.armorQuality.heavyQ" : "Lourde de qualité", "BOL.armorQuality.heavyQ" : "Heavy Quality",
"BOL.armorQuality.heavySup" : "Lourde Supérieure", "BOL.armorQuality.heavySup" : "Heavy Superior",
"BOL.armorQuality.heavyLeg" : "Lourde Légendaire", "BOL.armorQuality.heavyLeg" : "Heavy Legendary",
"BOL.equipmentSlots.none" : "-", "BOL.equipmentSlots.none" : "-",
"BOL.equipmentSlots.head" : "Tête", "BOL.equipmentSlots.head" : "Head",
"BOL.equipmentSlots.neck" : "Cou", "BOL.equipmentSlots.neck" : "Neck",
"BOL.equipmentSlots.shoulders" : "Épaules", "BOL.equipmentSlots.shoulders" : "Shoulders",
"BOL.equipmentSlots.body" : "Corps", "BOL.equipmentSlots.body" : "Body",
"BOL.equipmentSlots.rhand" : "Main droite", "BOL.equipmentSlots.rhand" : "Right hand",
"BOL.equipmentSlots.lhand" : "Main gauche", "BOL.equipmentSlots.lhand" : "Left hand",
"BOL.equipmentSlots.2hands" : "2 mains", "BOL.equipmentSlots.2hands" : "2 hands",
"BOL.equipmentSlots.rarm" : "Bras droit", "BOL.equipmentSlots.rarm" : "Right arm",
"BOL.equipmentSlots.larm" : "Bras gauche", "BOL.equipmentSlots.larm" : "Left arm",
"BOL.equipmentSlots.chest" : "Torse", "BOL.equipmentSlots.chest" : "Chest",
"BOL.equipmentSlots.belt" : "Ceinture", "BOL.equipmentSlots.belt" : "Belt",
"BOL.equipmentSlots.legs" : "Jambes", "BOL.equipmentSlots.legs" : "Legs",
"BOL.equipmentSlots.feet" : "Pieds", "BOL.equipmentSlots.feet" : "Feet",
"BOL.equipmentSlots.finder" : "Doigt", "BOL.equipmentSlots.finder" : "Finger",
"BOL.equipmentSlots.ear" : "Oreille", "BOL.equipmentSlots.ear" : "Ear",
"BOL.vehicleCategory.mount" : "Monture terrestre", "BOL.vehicleCategory.mount" : "Ground Mount",
"BOL.vehicleCategory.flying" : "Monture volante", "BOL.vehicleCategory.flying" : "Flying Mount",
"BOL.vehicleCategory.boat" : "Bateau", "BOL.vehicleCategory.boat" : "Boat",
"BOL.vehicleCategory.other" : "Autre", "BOL.vehicleCategory.other" : "Other",
"BOL.range.PointBlank": "Bout portant", "BOL.range.PointBlank": "Point Blank",
"BOL.range.Short": "Courte", "BOL.range.Short": "Short",
"BOL.range.Medium": "Moyenne", "BOL.range.Medium": "Medium",
"BOL.range.Long": "Long", "BOL.range.Long": "Long",
"BOL.range.VeryLong": "Très longue", "BOL.range.VeryLong": "Very Long",
"BOL.range.Extreme": "Extrême", "BOL.range.Extreme": "Extreme",
"BOL.range.Maximum": "Maximale", "BOL.range.Maximum": "Maximum",
"BOL.notification.MacroMultipleTokensSelected": "Vous avez sélectionné plusieurs tokens", "BOL.notification.MacroMultipleTokensSelected": "You have selected several tokens!",
"BOL.notification.MacroNoActorAvailable": "Aucun acteur n'a pu être ciblé", "BOL.notification.MacroNoActorAvailable": "No actor could be targeted!",
"BOL.notification.MacroNoTokenSelected": "Vous devez sélectionner un token", "BOL.notification.MacroNoTokenSelected": "You must select a token!",
"BOL.size.tiny": "Tiny", "BOL.size.tiny": "Tiny",
"BOL.size.verysmall": "Very Small", "BOL.size.verysmall": "Very Small",
@ -372,6 +372,84 @@
"BOL.size.enormous": "Enormous", "BOL.size.enormous": "Enormous",
"BOL.size.gigantic": "Gigantic", "BOL.size.gigantic": "Gigantic",
"BOL.size.immense": "Immense", "BOL.size.immense": "Immense",
"BOL.size.colossal": "Colossal" "BOL.size.colossal": "Colossal",
"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.isdead": "{name} is dead !",
"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.vitalityheroism": "You can spent 1 Hero Point to raise up for 1 round.",
"BOL.chat.vitalityheroismhint": "In this case, your lifeblood raises up to its maximum divided by 2.",
"BOL.chat.vitalitydying": "Lifeblood of {name} is now {hp} ! He is dying ...",
"BOL.chat.vitalitydyingheroism": "You can spent 1 Hero Point to Defy Death.",
"BOL.chat.alchemytitle": "Alchemy recipe : {name}",
"BOL.chat.alchemypoints": "Craft Points cost : {pcCostCurrent}",
"BOL.chat.alchemysuccess": "The alchemy recipe is a success !<br>Create the relevant item/effect in your Inventory.<br>Stage counter has been resetted.",
"BOL.chat.alchemyfailure": "The alchemy recipe has failed !<br>Stage counter has been resetted.",
"BOL.chat.rolldamage": "Roll for damages",
"BOL.chat.rolldamage6": "Roll for damages +6",
"BOL.chat.rolldamage12": "Roll for damages +12 (1 HP)",
"BOL.chat.damageresult": "Damages of {name} : {total}",
"BOL.chat.damagetarget": "Target : {target}",
"BOL.chat.applydamagetotarget": "Apply damages to the target",
"BOL.chat.fightoption": "Combat options",
"BOL.chat.reroll": "Reroll (1 HP)",
"BOL.chat.toheroic": "Convert to Mighty success (1 HP)",
"BOL.chat.tolegend": "Convert to Legendary succes (1 HP)",
"BOL.chat.hurttitle": "{name} is going to receive {damageTotal} damages !",
"BOL.chat.armordefault": "This attack is bypassing armor : armor is not used to reduce damages !",
"BOL.chat.witharmor": "Hit with armor",
"BOL.chat.withoutarmor": "Hit without armor",
"BOL.chat.shakeoff": "Shake off Wounds (1 HP)",
"BOL.chat.splinteredshield": "Splintered Shield/Sword {name} (1 HP)",
"BOL.chat.damagesummary": "Damages received by {name}",
"BOL.chat.protectvalue": "Armor protect",
"BOL.chat.noprotectvalue": "No armor !",
"BOL.chat.heroreducedamage": "One Hero Point has been spent, for reducing damges by {total}.",
"BOL.chat.herosplintered": "No damages received, thanks to splintered shield/sword with {weaponHero.name}. The weapon/shield has been destroyed ! One HP point has been spent also.",
"BOL.chat.finaldamage": "Final Damage : {finalDamage} damages !",
"BOL.chat.spell": "Spell",
"BOL.chat.spellcost": "Power Points cost",
"BOL.chat.spellremaining": "Remaining Power Points",
"BOL.dialog.soeasy": "So easy (+4)",
"BOL.dialog.veryeasy": "Very easy (+2)",
"BOL.dialog.easy": "Easy (+1)",
"BOL.dialog.moderate": "Moderate (0)",
"BOL.dialog.hard": "Hard (-1)",
"BOL.dialog.tough": "Tough (-2)",
"BOL.dialog.demanding": "Demanding (-4)",
"BOL.dialog.formidable": "Formidable (-6)",
"BOL.dialog.heroic": "Heroic (-8)",
"BOL.dialog.mythic": "Mythic (-10)",
"BOL.dialog.divine": "Divine (-12)",
"BOL.dialog.pointblank": "Point blank (+1)",
"BOL.dialog.close": "Close (0)",
"BOL.dialog.medium": "Medium (-1))",
"BOL.dialog.long": "Long (-2)",
"BOL.dialog.distant": "Distant (-4)",
"BOL.dialog.extreme": "Extreme (-6)",
"BOL.dialog.utmost": "Utmost (-8)",
"BOL.ui.name": "Name",
"BOL.ui.xp": "Experience",
"BOL.ui.xpspent": "Spent",
"BOL.ui.xptotal": "Total",
"BOL.ui.biosize": "Size",
"BOL.ui.bioweight": "Weight",
"BOL.ui.bioage": "Age",
"BOL.ui.biohair": "Hair",
"BOL.ui.bioeyes": "Eyes",
"BOL.ui.biosigns": "Signs",
"BOL.ui.biodescription": "Description",
"BOL.ui.bionotes": "Notes",
"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.welcome3": "The integrated maps are authorized by Guillaume Tavernier 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.welcome5": "Good game in Lemuria !"
} }

View File

@ -87,6 +87,7 @@
"BOL.ui.failure": "Échec", "BOL.ui.failure": "Échec",
"BOL.ui.fumble": "Échec critique", "BOL.ui.fumble": "Échec critique",
"BOL.ui.critical": "Succès critique", "BOL.ui.critical": "Succès critique",
"BOL.ui.criticallegend": "Succès légendaire !",
"BOL.ui.maneuvers": "Actions de combat", "BOL.ui.maneuvers": "Actions de combat",
"BOL.ui.stacksize": "Taille de pile (max)", "BOL.ui.stacksize": "Taille de pile (max)",
"BOL.ui.weapons": "Armes", "BOL.ui.weapons": "Armes",
@ -348,5 +349,86 @@
"BOL.size.enormous": "Colossale", "BOL.size.enormous": "Colossale",
"BOL.size.gigantic": "Gigantesque", "BOL.size.gigantic": "Gigantesque",
"BOL.size.immense": "Immense", "BOL.size.immense": "Immense",
"BOL.size.colossal": "Monstrueuse" "BOL.size.colossal": "Monstrueuse",
"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.isdead": "{name} est mort !",
"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.vitalityheroism": "Vous pouvez dépenser 1 Point d'Héroisme pour reprendre vos esprits pendant 1 round.",
"BOL.chat.vitalityheroismhint": "Dans ce cas votre vitalité remonte à son maximum divisé par 2 (arrondi au supérieur).",
"BOL.chat.vitalitydying": "La Vitalité de {name} est de {hp} ! Il est mourant ...",
"BOL.chat.vitalitydyingheroism": "Vous pouvez cependant dépenser 1 Point d'Héroisme pour Défier la Mort (cf. page 58).",
"BOL.chat.alchemytitle": "Préparation Alchimique : {name}",
"BOL.chat.alchemypoints": "Points de Création Investis : {pcCostCurrent}",
"BOL.chat.alchemysuccess": "La préparation alchimique a été réalisée avec succès !<br>Créez l'item ou l'effet correspondant dans votre Inventaire.<br>L'avancement dans la préparation a été remis à 0.",
"BOL.chat.alchemyfailure": "La préparation alchimique a échouée !<br>L'avancement dans la préparation a été remis à 0.",
"BOL.chat.rolldamage": "Lancer les dommages",
"BOL.chat.rolldamage6": "Lancer les dommages +6",
"BOL.chat.rolldamage12": "Dommages +12 (1 Pt. d'Heroisme)",
"BOL.chat.damageresult": "Dommages de {name} : {total}",
"BOL.chat.damagetarget": "Cible : {target}",
"BOL.chat.applydamagetotarget": "Appliquer les dommages à la cible",
"BOL.chat.fightoption": "Option de combat",
"BOL.chat.reroll": "Relancer (1 P. Heroisme)",
"BOL.chat.toheroic": "Transformer en succés Héroïque (1 P. Héroisme)",
"BOL.chat.tolegend": "Transformer en succes Légendaire (1 P. Heroisme)",
"BOL.chat.hurttitle": "{name} va encaisser {damageTotal} dégats !",
"BOL.chat.armordefault": "C'est une attaque au défaut de l'armure : vous devez encaisser SANS la protection de l'armure !",
"BOL.chat.witharmor": "Encaisser avec la protection de l'armure",
"BOL.chat.withoutarmor": "Encaisser sans la protection de l'armure",
"BOL.chat.shakeoff": "Juste une égratignure (1 Point d'Héroisme)",
"BOL.chat.splinteredshield": "Parade in Extremis avec {name} (1 Point d'Héroisme)",
"BOL.chat.damagesummary": "Dégats subis par {name}",
"BOL.chat.protectvalue": "Protection de l'armure",
"BOL.chat.noprotectvalue": "Aucune protection d'armure !",
"BOL.chat.heroreducedamage": "Un point d'héroisme dépensé, pour une réduction des dommages supplémentaire de {total}.",
"BOL.chat.herosplintered": "Aucun dommage encaissé, grâce à la parade in-extremis avec {weaponHero.name}. L'arme a été détruite pendant cette parade ! Un point d'héroisme a également été dépensé.",
"BOL.chat.finaldamage": "Encaissement final : {finalDamage} dégats !",
"BOL.chat.spell": "Sort",
"BOL.chat.spellcost": "Cout en Points de Pouvoir",
"BOL.chat.spellremaining": "Points de Pouvoir restants",
"BOL.chat.nodamagesummary": "Aucun dégats n'a été subi ....",
"BOL.chat.damageresume": "{name} a subi des blessures ...",
"BOL.dialog.soeasy": "Inmanquable (+4)",
"BOL.dialog.veryeasy": "Trés Facile (+2)",
"BOL.dialog.easy": "Facile (+1)",
"BOL.dialog.moderate": "Moyenne (0)",
"BOL.dialog.hard": "Ardue (-1)",
"BOL.dialog.tough": "Difficile (-2)",
"BOL.dialog.demanding": "Très Difficile (-4)",
"BOL.dialog.formidable": "Impossible (-6)",
"BOL.dialog.heroic": "Héroïque (-8)",
"BOL.dialog.mythic": "Mythique (-10)",
"BOL.dialog.divine": "Divine (-12)",
"BOL.dialog.pointblank": "Bout portant (+1)",
"BOL.dialog.close": "Courte (0)",
"BOL.dialog.medium": "Moyenne (-1))",
"BOL.dialog.long": "Longue (-2)",
"BOL.dialog.distant": "Très longue (-4)",
"BOL.dialog.extreme": "Extrême (-6)",
"BOL.dialog.utmost": "Maximale (-8)",
"BOL.ui.name": "Nom",
"BOL.ui.xp": "Experience",
"BOL.ui.xpspent": "Dépensée",
"BOL.ui.xptotal": "Totale",
"BOL.ui.biosize": "Taille",
"BOL.ui.bioweight": "Poids",
"BOL.ui.bioage": "Age",
"BOL.ui.biohair": "Cheveux",
"BOL.ui.bioeyes": "Yeux",
"BOL.ui.biosigns": "Signes distinctifs",
"BOL.ui.biodescription": "Description",
"BOL.ui.bionotes": "Notes",
"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 l'éditeur : http://www.ludospherik.fr/content/14-barbarians-of-lemuria",
"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.welcome4": "Tout le support et le suivi de ce système est disponible via le Discord Foundry FR : https://discord.gg/pPSDNJk",
"BOL.chat.welcome5": "Bon jeu en Lemurie !"
} }

View File

@ -25,6 +25,13 @@ export class BoLActorSheet extends ActorSheet {
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
function onLoad() {
let logoSheet = BoLUtility.getLogoActorSheet()
$(".bol-actor-form").css("backgroundImage",`url(${logoSheet})`)
}
// Setup everything onload
$(function () { onLoad(); });
// 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;

View File

@ -27,11 +27,11 @@ export class BoLActor extends Actor {
if (this.type == 'character') { if (this.type == 'character') {
let newVitality = 10 + this.data.data.attributes.vigor.value + this.data.data.resources.hp.bonus let newVitality = 10 + this.data.data.attributes.vigor.value + this.data.data.resources.hp.bonus
if (this.data.data.resources.hp.max != newVitality) { if (this.data.data.resources.hp.max != newVitality) {
this.update({ 'data.resources.hp.max': newVitality }); this.update({ 'data.resources.hp.max': newVitality })
} }
let newPower = 10 + this.data.data.attributes.mind.value + this.data.data.resources.power.bonus let newPower = 10 + this.data.data.attributes.mind.value + this.data.data.resources.power.bonus
if (this.data.data.resources.power.max != newPower) { if (this.data.data.resources.power.max != newPower) {
this.update({ 'data.resources.power.max': newPower }); this.update({ 'data.resources.power.max': newPower })
} }
} }
} }
@ -212,6 +212,9 @@ export class BoLActor extends Actor {
get fightoptions() { get fightoptions() {
return this.itemData.filter(i => i.type === "feature" && i.data.subtype === "fightoption") return this.itemData.filter(i => i.type === "feature" && i.data.subtype === "fightoption")
} }
get godsfaith() {
return this.itemData.filter(i => i.type === "feature" && i.data.subtype === "godsfaith")
}
get features() { get features() {
return this.itemData.filter(i => i.type === "feature") return this.itemData.filter(i => i.type === "feature")
} }
@ -333,6 +336,7 @@ export class BoLActor extends Actor {
let newPP = this.data.data.resources.power.value - ppCost let newPP = this.data.data.resources.power.value - ppCost
newPP = (newPP < 0) ? 0 : newPP newPP = (newPP < 0) ? 0 : newPP
this.update({ 'data.resources.power.value': newPP }) this.update({ 'data.resources.power.value': newPP })
return newPP
} }
/*-------------------------------------------- */ /*-------------------------------------------- */
@ -360,6 +364,7 @@ export class BoLActor extends Actor {
} }
} }
/*-------------------------------------------- */
getAlchemistBonus() { getAlchemistBonus() {
let sorcerer = this.careers.find(item => item.data.properties.alchemist == true) let sorcerer = this.careers.find(item => item.data.properties.alchemist == true)
if (sorcerer) { if (sorcerer) {
@ -367,6 +372,7 @@ export class BoLActor extends Actor {
} }
return 0; return 0;
} }
/*-------------------------------------------- */
getSorcererBonus() { getSorcererBonus() {
let sorcerer = this.careers.find(item => item.data.properties.sorcerer == true) let sorcerer = this.careers.find(item => item.data.properties.sorcerer == true)
if (sorcerer) { if (sorcerer) {
@ -375,6 +381,7 @@ export class BoLActor extends Actor {
return 0; return 0;
} }
/*-------------------------------------------- */
heroReroll() { heroReroll() {
if (this.type == 'character') { if (this.type == 'character') {
return this.data.data.resources.hero.value > 0; return this.data.data.resources.hero.value > 0;
@ -440,6 +447,11 @@ export class BoLActor extends Actor {
"label": "BOL.featureCategory.fightoptions", "label": "BOL.featureCategory.fightoptions",
"ranked": false, "ranked": false,
"items": this.fightoptions "items": this.fightoptions
},
"godsfaith": {
"label": "BOL.featureSubtypes.gods",
"ranked": false,
"items": this.godsfaith
} }
} }
} }
@ -535,14 +547,14 @@ export class BoLActor extends Actor {
/*-------------------------------------------- */ /*-------------------------------------------- */
buildListeActions() { buildListeActions() {
return this.melee.concat(this.ranged) return this.melee.concat(this.ranged).concat(this.natural)
} }
/*-------------------------------------------- */ /*-------------------------------------------- */
async manageHealthState() { async manageHealthState() {
let hpID = "lastHP" + this.id let hpID = "lastHP" + this.id
let lastHP = await this.getFlag("world", hpID) let lastHP = await this.getFlag("world", hpID)
if (lastHP != this.data.data.resources.hp.value && this.isOwner ) { if (lastHP != this.data.data.resources.hp.value && game.user.isGM ) { // Only GM sends this
await this.setFlag("world", hpID, this.data.data.resources.hp.value) await this.setFlag("world", hpID, this.data.data.resources.hp.value)
if (this.data.data.resources.hp.value <= 0) { if (this.data.data.resources.hp.value <= 0) {
ChatMessage.create({ ChatMessage.create({
@ -573,8 +585,8 @@ export class BoLActor extends Actor {
/*-------------------------------------------- */ /*-------------------------------------------- */
async sufferDamage(damage) { async sufferDamage(damage) {
let newHP = this.data.data.resources.hp.value - damage; let newHP = this.data.data.resources.hp.value - damage
await this.update({ 'data.resources.hp.value': newHP }); await this.update({ 'data.resources.hp.value': newHP })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -589,7 +601,7 @@ export class BoLActor extends Actor {
if (!protect.data.properties.soak.formula || protect.data.properties.soak.formula == "") { if (!protect.data.properties.soak.formula || protect.data.properties.soak.formula == "") {
ui.notifications.warn(`L'armure ${protect.name} n'a pas de formule pour la protection !`) ui.notifications.warn(`L'armure ${protect.name} n'a pas de formule pour la protection !`)
} else { } else {
formula += "+" + protect.data.properties.soak.formula formula += "+" + " max(" + protect.data.properties.soak.formula +",0)"
} }
} else { } else {
if (protect.data.properties.soak.value == undefined) { if (protect.data.properties.soak.value == undefined) {
@ -606,19 +618,19 @@ export class BoLActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
rollProtection(itemId) { rollProtection(itemId) {
let armor = this.data.items.get(itemId) let armor = duplicate(this.data.items.get(itemId))
if (armor) { if (armor) {
let armorFormula = armor.data.data.properties.soak.formula; let armorFormula = "max("+armor.data.properties.soak.formula + ", 0)"
let rollArmor = new Roll(armorFormula) let rollArmor = new Roll(armorFormula)
rollArmor.roll({ async: false }).toMessage(); rollArmor.roll({ async: false }).toMessage()
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
rollWeaponDamage(itemId) { rollWeaponDamage(itemId) {
let weapon = this.data.items.get(itemId) let weapon = duplicate(this.data.items.get(itemId))
if (weapon) { if (weapon) {
let r = new BoLDefaultRoll({ id: randomID(16), isSuccess: true, mode: "weapon", weapon: weapon, actor: this }) let r = new BoLDefaultRoll({ id: randomID(16), isSuccess: true, mode: "weapon", weapon: weapon, actorId: this.id, actor: this })
r.setSuccess(true) r.setSuccess(true)
r.rollDamage() r.rollDamage()
} }

View File

@ -13,6 +13,8 @@ import { BoLUtility } from "./system/bol-utility.js"
import { BoLCombatManager } from "./system/bol-combat.js" import { BoLCombatManager } from "./system/bol-combat.js"
import { BoLTokenHud } from "./system/bol-action-hud.js" import { BoLTokenHud } from "./system/bol-action-hud.js"
import { BoLHotbar } from "./system/bol-hotbar.js" import { BoLHotbar } from "./system/bol-hotbar.js"
import { BoLAdventureGenerator } from "./system/bol-adventure-generator.js"
import { BoLCommands} from "./system/bol-commands.js"
/* -------------------------------------------- */ /* -------------------------------------------- */
Hooks.once('init', async function () { Hooks.once('init', async function () {
@ -28,7 +30,7 @@ Hooks.once('init', async function () {
// Game socket // Game socket
game.socket.on("system.bol", sockmsg => { game.socket.on("system.bol", sockmsg => {
BoLUtility.onSocketMessage(sockmsg); BoLUtility.onSocketMessage(sockmsg);
}); })
/** /**
@ -55,6 +57,8 @@ Hooks.once('init', async function () {
BoLUtility.init() BoLUtility.init()
BoLTokenHud.init() BoLTokenHud.init()
BoLHotbar.init() BoLHotbar.init()
BoLCommands.init()
BoLAdventureGenerator.init()
// Preload Handlebars Templates // Preload Handlebars Templates
await preloadHandlebarsTemplates(); await preloadHandlebarsTemplates();
@ -95,19 +99,21 @@ function welcomeMessage() {
user: game.user.id, user: game.user.id,
whisper: [game.user.id], whisper: [game.user.id],
content: `<div id="welcome-message-pegasus"><span class="rdd-roll-part"> content: `<div id="welcome-message-pegasus"><span class="rdd-roll-part">
<strong>Bienvenue dans Barbarians of Lemuria (Ludospherik version)</strong> <strong>` + game.i18n.localize("BOL.chat.welcome1") + `</strong><p>` +
<p>Les livres nécessaires pour jouer sont disponibles sur le site de l'éditeur : http://www.ludospherik.fr/content/14-barbarians-of-lemuria</p> game.i18n.localize("BOL.chat.welcome2") + "<p>" +
<p>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 !. game.i18n.localize("BOL.chat.welcome3") + "<p>" +
<p>Tout le support et le suivi de ce système es disponible via le Discord Foundry FR : https://discord.gg/pPSDNJk </p> game.i18n.localize("BOL.chat.welcome4") + "</p>" +
<p>Bon jeu en Lemurie !</p> game.i18n.localize("BOL.chat.welcome5") + "</p>"
` }); } )
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
Hooks.once('ready', async function () { Hooks.once('ready', async function () {
BoLUtility.ready()
registerUsageCount('bol') registerUsageCount('bol')
welcomeMessage() welcomeMessage()
}); })

View File

@ -25,6 +25,7 @@ export class BoLRoll {
let rollData = { let rollData = {
mode: "attribute", mode: "attribute",
actorId: actor.id, actorId: actor.id,
img: actor.img,
attribute: attribute, attribute: attribute,
attrValue: attribute.value, attrValue: attribute.value,
aptValue: 0, aptValue: 0,
@ -52,6 +53,7 @@ export class BoLRoll {
{ {
mode: "aptitude", mode: "aptitude",
actorId: actor.id, actorId: actor.id,
img: actor.img,
attribute: attribute, attribute: attribute,
aptitude: aptitude, aptitude: aptitude,
attrValue: attribute.value, attrValue: attribute.value,
@ -70,7 +72,7 @@ export class BoLRoll {
let target = BoLUtility.getTarget() let target = BoLUtility.getTarget()
let weaponData = weapon.data.data let weaponData = weapon.data
let attribute = eval(`actor.data.data.attributes.${weaponData.properties.attackAttribute}`) let attribute = eval(`actor.data.data.attributes.${weaponData.properties.attackAttribute}`)
let aptitude = eval(`actor.data.data.aptitudes.${weaponData.properties.attackAptitude}`) let aptitude = eval(`actor.data.data.aptitudes.${weaponData.properties.attackAptitude}`)
@ -84,6 +86,7 @@ export class BoLRoll {
let rolldata = { let rolldata = {
mode: "weapon", mode: "weapon",
actorId: actor.id, actorId: actor.id,
img: actor.img,
weapon: weapon, weapon: weapon,
isRanged: weaponData.properties.ranged || weaponData.properties.throwing, isRanged: weaponData.properties.ranged || weaponData.properties.throwing,
targetId: target?.id, targetId: target?.id,
@ -106,23 +109,25 @@ export class BoLRoll {
/* -------------------------------------------- */ /* -------------------------------------------- */
static weaponCheck(actor, event) { static weaponCheck(actor, event) {
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
const weapon = actor.items.get(li.data("item-id")) let weapon = actor.items.get(li.data("item-id"))
if (!weapon) { if (!weapon) {
ui.notifications.warn("Unable to find weapon !") ui.notifications.warn("Unable to find weapon !")
return return
} }
weapon = duplicate(weapon)
return this.weaponCheckWithWeapon(actor, weapon) return this.weaponCheckWithWeapon(actor, weapon)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static alchemyCheck(actor, event) { static alchemyCheck(actor, event) {
const li = $(event.currentTarget).parents(".item"); const li = $(event.currentTarget).parents(".item");
const alchemy = actor.items.get(li.data("item-id")); let alchemy = actor.items.get(li.data("item-id"));
if (!alchemy) { if (!alchemy) {
ui.notifications.warn("Unable to find Alchemy !"); ui.notifications.warn("Unable to find Alchemy !");
return; return;
} }
let alchemyData = alchemy.data.data alchemy = duplicate(alchemy)
let alchemyData = alchemy.data
if (alchemyData.properties.pccurrent < alchemyData.properties.pccost) { if (alchemyData.properties.pccurrent < alchemyData.properties.pccost) {
ui.notifications.warn("Pas assez de Points de Cration investis dans la Préparation !") ui.notifications.warn("Pas assez de Points de Cration investis dans la Préparation !")
return return
@ -131,6 +136,7 @@ export class BoLRoll {
let alchemyDef = { let alchemyDef = {
mode: "alchemy", mode: "alchemy",
actorId: actor.id, actorId: actor.id,
img: actor.img,
alchemy: alchemy, alchemy: alchemy,
attribute: actor.data.data.attributes.mind, attribute: actor.data.data.attributes.mind,
attrValue: actor.data.data.attributes.mind.value, attrValue: actor.data.data.attributes.mind.value,
@ -150,10 +156,10 @@ export class BoLRoll {
/* -------------------------------------------- */ /* -------------------------------------------- */
static spellCheckWithSpell( actor, spell ) { static spellCheckWithSpell( actor, spell ) {
let spellData = spell.data.data
let spellDef = { let spellDef = {
mode: "spell", mode: "spell",
actorId: actor.id, actorId: actor.id,
img: actor.img,
spell: spell, spell: spell,
attribute: actor.data.data.attributes.mind, attribute: actor.data.data.attributes.mind,
attrValue: actor.data.data.attributes.mind.value, attrValue: actor.data.data.attributes.mind.value,
@ -161,14 +167,14 @@ export class BoLRoll {
ppCurrent: Number(actor.data.data.resources.power.value), ppCurrent: Number(actor.data.data.resources.power.value),
careerBonus: actor.getSorcererBonus(), careerBonus: actor.getSorcererBonus(),
ppCostArmor: actor.getPPCostArmor(), ppCostArmor: actor.getPPCostArmor(),
ppCost: Number(spell.data.data.properties.ppcost), ppCost: Number(spell.data.properties.ppcost),
mod: Number(spellData.properties.difficulty), mod: Number(spell.data.properties.difficulty),
armorAgiMalus: actor.getArmorAgiMalus(), armorAgiMalus: actor.getArmorAgiMalus(),
armorInitMalus: actor.getArmorInitMalus(), armorInitMalus: actor.getArmorInitMalus(),
label: spell.name, label: spell.name,
description: game.i18n.localize('BOL.ui.focusSpell') + " : " + spell.name, description: game.i18n.localize('BOL.ui.focusSpell') + " : " + spell.name,
} }
console.log("SPELL!", spellDef) //console.log("SPELL!", spellDef)
return this.displayRollDialog(spellDef) return this.displayRollDialog(spellDef)
} }
@ -179,11 +185,12 @@ export class BoLRoll {
return return
} }
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
const spell = actor.items.get(li.data("item-id")) let spell = actor.items.get(li.data("item-id"))
if (!spell) { if (!spell) {
ui.notifications.warn("Impossible de trouver ce sort !") ui.notifications.warn("Impossible de trouver ce sort !")
return return
} }
spell = duplicate(spell)
return this.spellCheckWithSpell( actor, spell) return this.spellCheckWithSpell( actor, spell)
} }
@ -202,7 +209,7 @@ export class BoLRoll {
$('#roll-nbdice').val("2 + " + String(Math.abs(this.rollData.bmDice)) + letter) $('#roll-nbdice').val("2 + " + String(Math.abs(this.rollData.bmDice)) + letter)
} }
let rollbase = this.rollData.attrValue + "+" + this.rollData.aptValue let rollbase = this.rollData.attrValue + "+" + this.rollData.aptValue
if ( this.rollData.weapon && this.rollData.weapon.data.data.properties.onlymodifier ) { if ( this.rollData.weapon && this.rollData.weapon.data.properties.onlymodifier ) {
rollbase = "" rollbase = ""
} }
$('#roll-modifier').val(rollbase + "+" + this.rollData.careerBonus + "+" + this.rollData.mod + "+" + $('#roll-modifier').val(rollbase + "+" + this.rollData.careerBonus + "+" + this.rollData.mod + "+" +
@ -309,12 +316,12 @@ export class BoLRoll {
}) })
html.find('#boon').change((event) => { html.find('#boon').change((event) => {
let boons = $('#boon').val() let boons = $('#boon').val()
this.rollData.nbBoons = (!boons || boons.length == 0) ? 0 : Math.max(...boons.map(i => parseInt(i))) this.rollData.nbBoons = (!boons || boons.length == 0) ? 0 : boons.length
this.updateTotalDice() this.updateTotalDice()
}) })
html.find('#flaw').change((event) => { html.find('#flaw').change((event) => {
let flaws = $('#flaw').val() let flaws = $('#flaw').val()
this.rollData.nbFlaws = (!flaws || flaws.length == 0) ? 0 : Math.max(...flaws.map(i => parseInt(i))) this.rollData.nbFlaws = (!flaws || flaws.length == 0) ? 0 : flaws.length
this.updateTotalDice() this.updateTotalDice()
}) })
html.find('.bdice').click((event) => { html.find('.bdice').click((event) => {
@ -330,15 +337,15 @@ export class BoLRoll {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static preProcessWeapon(rollData) { static preProcessWeapon(rollData, defender) {
if (rollData.mode == "weapon") { if (rollData.mode == "weapon") {
rollData.weaponModifier = rollData.weapon.data.data.properties.attackModifiers ?? 0; rollData.weaponModifier = rollData.weapon.data.properties.attackModifiers ?? 0;
rollData.attackBonusDice = rollData.weapon.data.data.properties.attackBonusDice rollData.attackBonusDice = rollData.weapon.data.properties.attackBonusDice
if (rollData.defender) { // If target is selected if (defender) { // If target is selected
rollData.defence = rollData.defender.defenseValue rollData.defence = defender.defenseValue
rollData.armorMalus = rollData.defender.armorMalusValue rollData.armorMalus = defender.armorMalusValue
rollData.shieldBlock = 'none' rollData.shieldBlock = 'none'
let shields = rollData.defender.shields let shields = defender.shields
for (let shield of shields) { for (let shield of shields) {
rollData.shieldBlock = (shield.data.properties.blocking.blockingAll) ? 'blockall' : 'blockone'; rollData.shieldBlock = (shield.data.properties.blocking.blockingAll) ? 'blockall' : 'blockone';
rollData.shieldAttackMalus = (shield.data.properties.blocking.malus) ? shield.data.properties.blocking.malus : 1; rollData.shieldAttackMalus = (shield.data.properties.blocking.malus) ? shield.data.properties.blocking.malus : 1;
@ -356,6 +363,12 @@ export class BoLRoll {
const rollOptionTpl = `systems/bol/templates/dialogs/${rollData.mode}-roll-dialog.hbs` const rollOptionTpl = `systems/bol/templates/dialogs/${rollData.mode}-roll-dialog.hbs`
let actor = game.actors.get( rollData.actorId ) let actor = game.actors.get( rollData.actorId )
let defender
if ( rollData.targetId) {
let token = game.scenes.current.tokens.get(rollData.targetId)
defender = token.actor
}
rollData.careers = actor.careers rollData.careers = actor.careers
rollData.boons = actor.bonusBoons rollData.boons = actor.bonusBoons
rollData.flaws = actor.malusFlaws rollData.flaws = actor.malusFlaws
@ -381,7 +394,7 @@ export class BoLRoll {
rollData.attackBonusDice = false rollData.attackBonusDice = false
rollData.armorMalus = 0 rollData.armorMalus = 0
// Specific stuff // Specific stuff
this.preProcessWeapon(rollData) this.preProcessWeapon(rollData, defender)
this.preProcessFightOption(rollData) this.preProcessFightOption(rollData)
this.updateArmorMalus(rollData) this.updateArmorMalus(rollData)
this.updatePPCost(rollData) this.updatePPCost(rollData)
@ -418,7 +431,7 @@ export class BoLRoll {
rollData.nbDice += (rollData.attackBonusDice) ? 1 : 0 rollData.nbDice += (rollData.attackBonusDice) ? 1 : 0
let rollbase = rollData.attrValue + rollData.aptValue let rollbase = rollData.attrValue + rollData.aptValue
if ( rollData.weapon && rollData.weapon.data.data.properties.onlymodifier ) { if ( rollData.weapon && rollData.weapon.data.properties.onlymodifier ) {
rollbase = 0 rollbase = 0
} }
const modifiers = rollbase + rollData.careerBonus + rollData.mod + rollData.weaponModifier - rollData.defence - rollData.modArmorMalus + rollData.shieldMalus + rollData.attackModifier + rollData.appliedArmorMalus const modifiers = rollbase + rollData.careerBonus + rollData.mod + rollData.weaponModifier - rollData.defence - rollData.modArmorMalus + rollData.shieldMalus + rollData.attackModifier + rollData.appliedArmorMalus
@ -443,7 +456,6 @@ export class BoLRoll {
export class BoLDefaultRoll { export class BoLDefaultRoll {
constructor(rollData) { constructor(rollData) {
BoLUtility.storeRoll(rollData)
this.rollData = rollData this.rollData = rollData
if (this.rollData.isSuccess == undefined) { // First init if (this.rollData.isSuccess == undefined) { // First init
this.rollData.isSuccess = false; this.rollData.isSuccess = false;
@ -451,10 +463,10 @@ export class BoLDefaultRoll {
this.rollData.isFumble = false; this.rollData.isFumble = false;
} }
if (this.rollData.optionsId) { if (this.rollData.optionsId) {
$(`#${this.rollData.optionsId}`).hide() // Hide the options roll buttons BoLUtility.cleanupButtons( this.rollData.optionsId)
} }
if (this.rollData.applyId) { if (this.rollData.applyId) {
$(`#${this.rollData.applyId}`).hide() // Hide the options roll buttons BoLUtility.cleanupButtons( this.rollData.applyId)
} }
this.rollData.optionsId = randomID(16) this.rollData.optionsId = randomID(16)
this.rollData.applyId = randomID(16) this.rollData.applyId = randomID(16)
@ -486,10 +498,10 @@ export class BoLDefaultRoll {
actor.registerInit(r.total, this.rollData.isCritical, this.rollData.isFumble) actor.registerInit(r.total, this.rollData.isCritical, this.rollData.isFumble)
} }
if (this.rollData.isSuccess && this.rollData.mode == "spell") { // PP cost management if (this.rollData.isSuccess && this.rollData.mode == "spell") { // PP cost management
actor.spendPowerPoint(this.rollData.ppCost + this.rollData.ppCostArmor) this.rollData.remainingPP = actor.spendPowerPoint(this.rollData.ppCost + this.rollData.ppCostArmor)
} }
if (this.rollData.mode == "alchemy") { // PP cost management if (this.rollData.mode == "alchemy") { // PP cost management
actor.resetAlchemyStatus(this.rollData.alchemy.id) actor.resetAlchemyStatus(this.rollData.alchemy._id)
} }
await this.sendChatMessage() await this.sendChatMessage()
@ -498,14 +510,15 @@ export class BoLDefaultRoll {
/* -------------------------------------------- */ /* -------------------------------------------- */
async sendChatMessage() { async sendChatMessage() {
let actor = game.actors.get( this.rollData.actorId) let actor = game.actors.get( this.rollData.actorId)
this._buildChatMessage(this.rollData).then(msgFlavor => { this._buildChatMessage(this.rollData).then( async msgFlavor => {
this.rollData.roll.toMessage({ let msg = await this.rollData.roll.toMessage({
user: game.user.id, user: game.user.id,
rollMode: game.settings.get("core", "rollMode"), rollMode: game.settings.get("core", "rollMode"),
//whisper: BoLUtility.getWhisperRecipientsAndGMs(this.rollData.actor.name), //whisper: BoLUtility.getWhisperRecipientsAndGMs(this.rollData.actor.name),
flavor: msgFlavor, flavor: msgFlavor,
speaker: ChatMessage.getSpeaker({ actor: actor }), speaker: ChatMessage.getSpeaker({ actor: actor }),
}) })
msg.setFlag("world", "bol-roll-data", this.rollData)
}) })
} }
@ -544,20 +557,23 @@ export class BoLDefaultRoll {
/* -------------------------------------------- */ /* -------------------------------------------- */
async sendDamageMessage() { async sendDamageMessage() {
let actor = game.actors.get( this.rollData.actorId) let actor = game.actors.get( this.rollData.actorId)
this._buildDamageChatMessage(this.rollData).then(msgFlavor => { this._buildDamageChatMessage(this.rollData).then(async msgFlavor => {
this.rollData.damageRoll.toMessage({ let msg = await this.rollData.damageRoll.toMessage({
user: game.user.id, user: game.user.id,
flavor: msgFlavor, flavor: msgFlavor,
speaker: ChatMessage.getSpeaker({ actor: actor }), speaker: ChatMessage.getSpeaker({ actor: actor }),
flags: { msgType: "default" } flags: { msgType: "default" }
}) })
}); this.rollData.actor = undefined // Cleanup
msg.setFlag("world", "bol-roll-data", this.rollData)
})
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getDamageAttributeValue(attrDamage) { getDamageAttributeValue(attrDamage, actorId = undefined) {
let attrDamageValue = 0 let attrDamageValue = 0
let actor = game.actors.get( this.rollData.actorId)
let actor = game.actors.get( (actorId) ? actorId: this.rollData.actorId)
if (attrDamage.includes("vigor")) { if (attrDamage.includes("vigor")) {
attrDamageValue = actor.data.data.attributes.vigor.value attrDamageValue = actor.data.data.attributes.vigor.value
if (attrDamage.includes("half")) { if (attrDamage.includes("half")) {
@ -570,7 +586,7 @@ export class BoLDefaultRoll {
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollDamage() { async rollDamage() {
if (this.rollData.mode != "weapon") { // Only specific process in Weapon mode if (this.rollData.mode != "weapon") { // Only specific process in Weapon mode
return; return
} }
if (this.rollData.isSuccess) { if (this.rollData.isSuccess) {
@ -582,8 +598,8 @@ export class BoLDefaultRoll {
if (this.rollData.damageMode == 'damage-plus-12') { if (this.rollData.damageMode == 'damage-plus-12') {
bonusDmg = 12 bonusDmg = 12
} }
let attrDamageValue = this.getDamageAttributeValue(this.rollData.weapon.data.data.properties.damageAttribute) let attrDamageValue = this.getDamageAttributeValue(this.rollData.weapon.data.properties.damageAttribute)
let weaponFormula = BoLUtility.getDamageFormula(this.rollData.weapon.data.data, this.rollData.fightOption) let weaponFormula = BoLUtility.getDamageFormula(this.rollData.weapon.data, this.rollData.fightOption)
let damageFormula = weaponFormula + "+" + bonusDmg + "+" + attrDamageValue let damageFormula = weaponFormula + "+" + bonusDmg + "+" + attrDamageValue
console.log("DAMAGE !!!", damageFormula, attrDamageValue, this.rollData) console.log("DAMAGE !!!", damageFormula, attrDamageValue, this.rollData)
@ -594,7 +610,7 @@ export class BoLDefaultRoll {
await this.rollData.damageRoll.roll({ "async": false }) await this.rollData.damageRoll.roll({ "async": false })
this.rollData.damageTotal = this.rollData.damageRoll.total this.rollData.damageTotal = this.rollData.damageRoll.total
} }
$(`#${this.rollData.optionsId}`).hide() // Hide the options roll buttons BoLUtility.cleanupButtons(this.rollData.optionsId)
this.sendDamageMessage() this.sendDamageMessage()
} }
} }

View File

@ -0,0 +1,620 @@
{
"titre1": [
{
"prefix": "la",
"name": "Prophétie"
},
{
"prefix": "les",
"name": "Grottes",
"isLieu": true
},
{
"prefix": "les",
"name": "Collines",
"isLieu": true
},
{
"prefix": "les",
"name": "Voleurs",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "les",
"name": "Sorcier(s)",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "la",
"name": "Bataille"
},
{
"prefix": "la",
"name": "Légende"
},
{
"prefix": "la",
"name": "Tour",
"isLieu": true
},
{
"prefix": "l'",
"name": "Ile",
"isLieu": true
},
{
"prefix": "les",
"name": "Pirates",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "les",
"name": "Druide(s)",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "le",
"name": "Navire",
"isCarriere": false
},
{
"prefix": "la",
"name": "Couronne",
"isObjet": true
},
{
"prefix": "la",
"name": "Cité",
"isLieu": true
},
{
"prefix": "le",
"name": "Désert",
"isLieu": true
},
{
"prefix": "les",
"name": "Bête(s)",
"isEnnemi": true,
"isLieu": false
},
{
"prefix": "les",
"name": "Démon(s)",
"isEnnemi": true,
"isLieu": false
},
{
"prefix": "le",
"name": "Trésor",
"isObjet": true
},
{
"prefix": "l'",
"name": "Epée",
"isObjet": true
},
{
"prefix": "l'",
"name": "Arène",
"isLieu": true
},
{
"prefix": "les",
"name": "Marais",
"isLieu": true
},
{
"prefix": "les",
"name": "Seigneur(s)",
"isEnnemi": true,
"isLieu": false
},
{
"prefix": "les",
"name": "Assassin(s)",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "le",
"name": "Culte",
"isEnnemi": true,
"isCarriere": false
},
{
"prefix": "le",
"name": "Secret",
"isCarriere": false
},
{
"prefix": "le",
"name": "Palais",
"isLieu": true
},
{
"prefix": "la",
"name": "Mer",
"isLieu": true
},
{
"prefix": "les",
"name": "Barbares",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "le",
"name": "Manuscrit",
"isObjet": true
},
{
"prefix": "les",
"name": "Plaines",
"isLieu": true
},
{
"prefix": "le",
"name": "Sang",
"isLieu": false
},
{
"prefix": "la",
"name": "Tombe",
"isLieu": true
},
{
"prefix": "la",
"name": "Forêt",
"isLieu": true
},
{
"prefix": "les",
"name": "Esclaves",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "les",
"name": "Mendiant(s)",
"isEnnemi": true,
"isCarriere": true
},
{
"prefix": "les",
"name": "Montagnes",
"isCarriereLieu": true
}
],
"titre2": [
{
"prefix": "du",
"name": "mal"
},
{
"prefix": "et le",
"name": "Roi Maussade",
"isEnnemi": true
},
{
"prefix": "et la",
"name": "pestilence",
"isEnnemi": false
},
{
"prefix": "de",
"name": "Malakut",
"isLieu": true
},
{
"prefix": "d'",
"name": "Halakh",
"isLieu": true
},
{
"prefix": "d'",
"name": "Hyrdral",
"isLieu": true
},
{
"prefix": "des",
"name": "esprits abandonnés",
"isEnnemi": true
},
{
"prefix": "du",
"name": "chaos",
"isEnnemi": true
},
{
"prefix": "de la",
"name": "folie",
"isEnnemi": false
},
{
"prefix": "de",
"name": "Satarla",
"isLieu": true
},
{
"prefix": "d'",
"name": "Urceb",
"isLieu": true
},
{
"prefix": "des",
"name": "Terres Désolées",
"isLieu": true
},
{
"prefix": "de la",
"name": "mort",
"isLieu": false
},
{
"prefix": "des",
"name": "idoles impies",
"isObjet": true
},
{
"prefix": "des",
"name": "ténèbres",
"isObjet": false
},
{
"prefix": "de",
"name": "Parsool",
"isLieu": true
},
{
"prefix": "de",
"name": "Qiddesh",
"isLieu": true
},
{
"prefix": "de",
"name": "Kasht",
"isLieu": true
},
{
"prefix": "de la ",
"name": "falalité",
"isLieu": false
},
{
"prefix": "du",
"name": "Nécromant",
"isEnnemi": true
},
{
"prefix": "du",
"name": "Néant",
"isEnnemi": false
},
{
"prefix": "de",
"name": "Lysor",
"isLieu": true
},
{
"prefix": "d'",
"name": "Oosal",
"isLieu": true
},
{
"prefix": "de",
"name": "Thulé",
"isLieu": true
},
{
"prefix": "du",
"name": "désespoir",
"isLieu": false
},
{
"prefix": "du",
"name": "Dieu Bouffi",
"isEnnemi": true
},
{
"prefix": "du",
"name": "silence",
"isEnnemi": false
},
{
"prefix": "de",
"name": "Tyrus",
"isLieu": true
},
{
"prefix": "d'",
"name": "Ygddar",
"isLieu": true
},
{
"prefix": "de",
"name": "la Côte de Feu",
"isLieu": true
},
{
"prefix": "des",
"name": "ombres cruelles",
"isLieu": false
},
{
"prefix": "de la",
"name": "poussière écarlate",
"isLieu": false
},
{
"prefix": "du",
"name": "destin",
"isLieu": false
},
{
"prefix": "du",
"name": "Valgard",
"isLieu": true
},
{
"prefix": "de",
"name": "Qeb",
"isLieu": true
},
{
"prefix": "de",
"name": "la Mer Inconnue",
"isLieu": true
}
],
"mission": [
{
"name": "dattaquer un lieu."
},
{
"name": "de détruire un certain objet."
},
{
"name": "de kidnapper quelquun."
},
{
"name": "dobtenir une certaine chose."
},
{
"name": "dexplorer un lieu."
},
{
"name": "de sauver une personne."
},
{
"name": "déchapper à quelquun."
},
{
"name": "de fuir un lieu."
},
{
"name": "de trouver une personne."
},
{
"name": "de trouver un lieu."
},
{
"name": "de trouver chose."
},
{
"name": "de protéger une personne."
},
{
"name": "de protéger un lieu."
},
{
"name": "de protéger chose."
},
{
"name": "de dérober une certaine chose."
},
{
"name": "de tuer une personne."
},
{
"name": "de détruire une chose."
},
{
"name": "descorter une personne."
},
{
"name": "de transporter une chose."
}
],
"carriere": [
"Noble",
"Acrobate",
"Sorcier",
"Alchimiste",
"Esclave",
"Courtisane",
"Médecin",
"Marin",
"Érudit",
"Mendiant",
"Scribe",
"Poète",
"Forgeron",
"Prêtre",
"Danseur",
"Marchand",
"Pilote des airs",
"Fermier"
],
"lieux1": [
"Palais",
"Donjon",
"Ruines",
"Sanctuaire",
"Crypte",
"Forteresse",
"Tombeau",
"Grottes",
"Tour",
"Antre",
"Île",
"Montagne"
],
"lieux2": [
"de la mort.",
"de la destruction.",
"du désespoir.",
"des morts-vivants.",
"du sage.",
"de l'or.",
"de la tempête.",
"de la terreur.",
"descannibales.",
"du désespoir.",
"des Rois-Sorciers.",
"des âmes perdues."
],
"objets1": [
"Livre",
"Anneau",
"Coupe",
"Joyau",
"Casque",
"Parchemin",
"Couronne",
"Sceau",
"Cristal",
"Crâne",
"Épée",
"Bâton"
],
"objets2": [
"des sept sceaux.",
"de l'éternelle douleur.",
"du sang bouillonnant.",
"de la mort hideuse.",
"du pouvoir suprême.",
"du serpent sournois.",
"du plaisir infini.",
"de la richesse illusoire.",
"de la cruelle trahison.",
"du froid funeste.",
"des spectres inapaisés.",
"du mystère."
],
"motivation": [
"cest le genre de choses que fait Krongar.",
"sinon il finira en prison.",
"il est victime dun chantage.",
"il a trouvé une carte.",
"il a été maudit.",
"il a eu une vision (peut-être un soir de beuverie).",
"il a été engagé pour le faire.",
"il a surpris une conversation.",
"il a lu quelque chose dans un ancien manuscrit.",
"il est tombé accidentellement dans cette affaire.",
"il cherche à assouvir une vengeance.",
"il a ,été dupé."
],
"rival": [
"un poète obsédé.",
"un prince (esse) guerrier.",
"un ministre corrompu.",
"un sectateur fanatique.",
"un noble arrogant.",
"un étrange alchimiste.",
"un sorcier maléfique.",
"un druide cruel.",
"un marchand cupide.",
"un brigand sans foi ni loi.",
"un démon sanguinaire.",
"un fantôme errant."
],
"dieu": [
"Tharungozoth",
"Yrzlak",
"Dyr",
"Knothakon",
"Hadron",
"Shazzadion",
"Chiomalla",
"SaTel",
"Morgazzon",
"Hurm",
"Afyra",
"Grondil",
"Zaggath",
"Zalkyr",
"Fillana",
"Lilandra",
"Zylidith",
"Quathoomar",
"Iondal",
"Piandra",
"Nemmereth",
"Charkond",
"Karyzon",
"Zarymphyxos",
"Kryphondus"
],
"complique1": [
"cest toujours comme ça avec Krongar !",
"la situation réveille chez Krongar des peurs ancestrales.",
"un usurier et ses hommes de main veulent récupérer leur argent.",
"une grave épidémie ravage la région.",
"Krongar est traqué pour un crime passé.",
"les actions dun groupe de rebelles rendent la région peu sûre.",
"des hordes de guerriers envahissent la région pour la conquérir",
"un(e) ancien(ne) admirateur (trice) éconduit(e) cherche à se venger.",
"la loi locale est très sévère et interdit une chose nécessaire à laccomplissement de la mission.",
"un(e) admirateur (trice) inattendu(e) déclare son amour.",
"un rival qui fut défait autrefois réapparaît et met son grain de sel.",
"la folie de Morgazzon fait des ravages dans la région."
],
"obstacle": [
"dun ancien secret.",
"dun long voyage.",
"dune malédiction.",
"dun voleur rusé.",
"dune forte troupe de soldats.",
"dun énorme monstre.",
"dune horde de monstres.",
"dun manque de temps.",
"de gardes et de pièges magiques.",
"dune catastrophe naturelle sur le point de se produire.",
"dune énigme à résoudre.",
"dune bataille à gagner."
],
"retournement": [
"Lennemi est en fait Krongar lui-même, venu dune autre réalité !",
"Toute cette histoire était un piège machiavélique !",
"Lennemi est en fait un vieil ami ou un allié qui a comploté dans lombre !",
"Krongar est contraint de sassocier à un rival pour accomplir la mission !",
"Tout ce qui semblait ordinaire se révèle en fait surnaturel !",
"Lennemi est en fait le père, la mère, le frère ou la sœur de Krongar !",
"Une toute autre mission attend en fait notre héros !",
"Parfois, il ny a pas de retournement de situation !",
"i la mission est accomplie, cela entraînera de terribles répercussions !",
"Le destin offre à Krongar une chance daméliorer les choses, et il est renvoyé dans le temps au début de laventure. La saga recommence, mais cette fois sans retournement de situation !",
"Un ami ou un allié a trahi Krongar !",
"Les dieux sont furieux et lui imposent d'autres tâches"
],
"recompense": [
"Rien du tout ! On sest joué de lui !",
"Beaucoup moins quescompté.",
"Beaucoup moins quescompté, mais il gagne au moins la reconnaissance dune personne haut placée.",
"Beaucoup moins quescompté, mais il est marqué par les dieux (avantage).",
"La récompense escomptée.",
"La récompense escomptée, et il est marqué par les dieux (avantage).",
"La récompense escomptée, ainsi que la reconnaissance dune personne haut placée.",
"Plus quescompté.",
"Plus quescompté, ainsi que la reconnaissance dune personne haut placée.",
"Plus quescompté, et il est marqué par les dieux (avantage).",
"Plus quescompté, ainsi que la reconnaissance dune personne haut placée, et il est marqué par les dieux (avantage).",
"Une promotion... Longue vie au roi Krongar !"
]
}

View File

@ -31,7 +31,7 @@ export class BoLTokenHud {
let actionIndex = Number(event.currentTarget.attributes['data-action-index'].value) let actionIndex = Number(event.currentTarget.attributes['data-action-index'].value)
let action = hudData.actionsList[actionIndex] let action = hudData.actionsList[actionIndex]
const weapon = actor.items.get( action._id ) const weapon = actor.items.get( action._id )
BoLRoll.weaponCheckWithWeapon(hudData.actor, weapon) BoLRoll.weaponCheckWithWeapon(hudData.actor, duplicate(weapon))
//console.log("Clicked", action) //console.log("Clicked", action)
} ) } )

View File

@ -0,0 +1,86 @@
/* -------------------------------------------- */
import { BoLUtility } from "./bol-utility.js";
/* -------------------------------------------- */
export class BoLAdventureGenerator {
/* -------------------------------------------- */
static async init() {
this.adventureData = await fetchJsonWithTimeout("systems/bol/module/system/adventure_data.json")
}
/* -------------------------------------------- */
static async createAdventure() {
let roll1 = new Roll("1d" + this.adventureData.titre1.length).evaluate({ async: false })
let roll2 = new Roll("1d" + this.adventureData.titre2.length).evaluate({ async: false })
let p1 = this.adventureData.titre1[roll1.result - 1]
let p2 = this.adventureData.titre2[roll2.result - 1]
let story = {}
story.title = "Krongar et " + p1.prefix + " " + p1.name + " " + p2.prefix + " " + p2.name
let rollM = new Roll("1d" + this.adventureData.mission.length).evaluate({ async: false })
story.mission = "La mission de Krongar est de " + this.adventureData.mission[rollM.result - 1].name
if (!p1.isCarriere && !p2.isCarriere) {
let rollC = new Roll("1d" + this.adventureData.carriere.length).evaluate({ async: false })
story.carriere = "Une carrière : " + this.adventureData.carriere[rollC.result - 1]
}
if (!p1.isLieu && !p2.isLieu) {
let rollL1 = new Roll("1d" + this.adventureData.lieux1.length).evaluate({ async: false })
let rollL2 = new Roll("1d" + this.adventureData.lieux2.length).evaluate({ async: false })
story.lieu = "Un lieu : " + this.adventureData.lieux1[rollL1.result - 1] + " " + this.adventureData.lieux2[rollL2.result - 1]
}
if (!p1.isObjet && !p2.isObjet) {
let rollO1 = new Roll("1d" + this.adventureData.objets1.length).evaluate({ async: false })
let rollO2 = new Roll("1d" + this.adventureData.objets2.length).evaluate({ async: false })
story.objet = "Un objet : " + this.adventureData.objets1[rollO1.result - 1] + " " + this.adventureData.objets2[rollO2.result - 1]
}
let rollMOT = new Roll("1d" + this.adventureData.motivation.length).evaluate({ async: false })
story.motivation = "Krongar entreprend cette mission parce que " + this.adventureData.motivation[rollMOT.result - 1]
if (!p1.isEnnemi && !p2.isEnnemi) {
let rollE = new Roll("1d" + this.adventureData.rival.length).evaluate({ async: false })
story.rival = "Un rival : " + this.adventureData.rival[rollE.result - 1]
}
let rollDieu = new Roll("1d6").evaluate({ async: false })
if (rollDieu.result == 6) {
rollDieu = new Roll("1d" + this.adventureData.dieu.length).evaluate({ async: false })
story.dieu = "Un Dieu est impliqué : " + this.adventureData.dieu[rollDieu.result - 1]
}
let rollComp = new Roll("1d6").evaluate({ async: false })
if (rollComp.result >= 5) {
rollComp = new Roll("1d" + this.adventureData.complique1.length).evaluate({ async: false })
story.complication = "Une complication : " + this.adventureData.complique1[rollComp.result - 1]
}
let rollObs = new Roll("1d6").evaluate({ async: false })
if (rollObs.result >= 5) {
rollObs = new Roll("1d" + this.adventureData.obstacle.length).evaluate({ async: false })
story.obstacle = "Un obstacle : " + this.adventureData.obstacle[rollObs.result - 1]
}
let rollRet = new Roll("1d6").evaluate({ async: false })
if (rollRet.result == 6) {
rollRet = new Roll("1d" + this.adventureData.retournement.length).evaluate({ async: false })
story.retournement = "Un retournement : " + this.adventureData.retournement[rollRet.result - 1]
}
let rollRec = new Roll("1d" + this.adventureData.recompense.length).evaluate({ async: false })
story.recompense = "Pour sa peine, Krongar reçoit " + this.adventureData.recompense[rollRec.result - 1]
ChatMessage.create({
alias: this.name,
whisper: BoLUtility.getUsers(user => user.isGM),
content: await renderTemplate('systems/bol/templates/chat/chat-adventure-result.hbs',
{ name: "Aventure !", img: "icons/commodities/gems/gem-cluster-red.webp", story : story})
})
}
}

View File

@ -0,0 +1,108 @@
/* -------------------------------------------- */
import { BoLAdventureGenerator } from "./bol-adventure-generator.js"
/* -------------------------------------------- */
export class BoLCommands {
static init() {
if (!game.bol.commands) {
const bolCommands = new BoLCommands()
bolCommands.registerCommand({ path: ["/adventure"], func: (content, msg, params) => BoLAdventureGenerator.createAdventure(), descr: "Nouvelle idée d'aventure!" });
game.bol.commands = bolCommands
}
Hooks.on("chatMessage", (html, content, msg) => {
if (content[0] == '/') {
let regExp = /(\S+)/g;
let commands = content.match(regExp);
if (game.bol.commands.processChatCommand(commands, content, msg)) {
return false;
}
}
return true
})
}
constructor() {
this.commandsTable = {}
}
/* -------------------------------------------- */
registerCommand(command) {
this._addCommand(this.commandsTable, command.path, '', command);
}
/* -------------------------------------------- */
_addCommand(targetTable, path, fullPath, command) {
if (!this._validateCommand(targetTable, path, command)) {
return;
}
const term = path[0];
fullPath = fullPath + term + ' '
if (path.length == 1) {
command.descr = `<strong>${fullPath}</strong>: ${command.descr}`;
targetTable[term] = command;
}
else {
if (!targetTable[term]) {
targetTable[term] = { subTable: {} };
}
this._addCommand(targetTable[term].subTable, path.slice(1), fullPath, command)
}
}
/* -------------------------------------------- */
_validateCommand(targetTable, path, command) {
if (path.length > 0 && path[0] && command.descr && (path.length != 1 || targetTable[path[0]] == undefined)) {
return true;
}
console.warn("bolCommands._validateCommand failed ", targetTable, path, command);
return false;
}
/* -------------------------------------------- */
/* Manage chat commands */
processChatCommand(commandLine, content = '', msg = {}) {
// Setup new message's visibility
let rollMode = game.settings.get("core", "rollMode");
if (["gmroll", "blindroll"].includes(rollMode)) msg["whisper"] = ChatMessage.getWhisperRecipients("GM");
if (rollMode === "blindroll") msg["blind"] = true;
msg["type"] = 0;
let command = commandLine[0].toLowerCase();
let params = commandLine.slice(1);
return this.process(command, params, content, msg);
}
/* -------------------------------------------- */
process(command, params, content, msg) {
return this._processCommand(this.commandsTable, command, params, content, msg);
}
/* -------------------------------------------- */
_processCommand(commandsTable, name, params, content = '', msg = {}, path = "") {
console.log("===> Processing command")
let command = commandsTable[name];
path = path + name + " ";
if (command && command.subTable) {
if (params[0]) {
return this._processCommand(command.subTable, params[0], params.slice(1), content, msg, path)
}
else {
this.help(msg, command.subTable);
return true;
}
}
if (command && command.func) {
const result = command.func(content, msg, params);
if (result == false) {
BoLCommands._chatAnswer(msg, command.descr);
}
return true;
}
return false;
}
}

View File

@ -18,7 +18,7 @@ export class BoLUtility {
default: true, default: true,
type: Boolean, type: Boolean,
onChange: lang => window.location.reload() onChange: lang => window.location.reload()
}); })
game.settings.register("bol", "useBougette", { game.settings.register("bol", "useBougette", {
name: "Utiliser la Bougette (règle fan-made)", name: "Utiliser la Bougette (règle fan-made)",
hint: "Utilise un indicateur de Bougette, comme décrit dans l'aide de jeu Gold&Glory du RatierBretonnien (https://www.lahiette.com/leratierbretonnien/)", hint: "Utilise un indicateur de Bougette, comme décrit dans l'aide de jeu Gold&Glory du RatierBretonnien (https://www.lahiette.com/leratierbretonnien/)",
@ -27,14 +27,32 @@ export class BoLUtility {
default: false, default: false,
type: Boolean, type: Boolean,
onChange: lang => window.location.reload() onChange: lang => window.location.reload()
}); })
game.settings.register("bol", "logoActorSheet", {
name: "Chemin du logo des fiches de perso",
hint: "Vous pouvez changer le logo BoL des fiches de perso, pour jouer dans un autre univers (idéalement 346 x 200, défaut : /systems/bol/ui/logo.webp)",
scope: "world",
config: true,
default: "/systems/bol/ui/logo.webp",
type: String,
onChange: lang => window.location.reload()
})
game.settings.register("bol", "logoTopLeft", {
name: "Chemin du logo haut gauche",
hint: "Vous pouvez changer le logo BoL en haut à gauche de chaque écran (idéalement 718 x 416, défaut : /systems/bol/ui/logo2.webp)",
scope: "world",
config: true,
default: "/systems/bol/ui/logo2.webp",
type: String,
onChange: lang => window.location.reload()
})
this.rollArmor = game.settings.get("bol", "rollArmor") // Roll armor or not this.rollArmor = game.settings.get("bol", "rollArmor") // Roll armor or not
this.useBougette = game.settings.get("bol", "useBougette") // Use optionnal bougette rules this.useBougette = game.settings.get("bol", "useBougette") // Use optionnal bougette rules
this.actorSheetLogo = game.settings.get("bol", "logoActorSheet") || "/systems/bol/ui/logo.webp"
this.logoTopLeft = game.settings.get("bol", "logoTopLeft") || "/systems/bol/ui/logo2.webp"
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static getRollArmor() { static getRollArmor() {
return this.rollArmor return this.rollArmor
@ -43,9 +61,19 @@ export class BoLUtility {
static getUseBougette() { static getUseBougette() {
return this.useBougette return this.useBougette
} }
/* -------------------------------------------- */
static getLogoActorSheet() {
return this.actorSheetLogo
}
/* -------------------------------------------- */
static getLogoTopLeft() {
return this.logoTopLeft
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async ready() { static async ready() {
//$("#logo").attr("src", this.getLogoTopLeft() )
$("#logo").css("content",`url(${this.getLogoTopLeft()})`)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -63,12 +91,12 @@ export class BoLUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static storeRoll(roll) { static storeRoll(roll) {
this.lastRoll = roll this.rollTab[roll.id] = roll
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static getLastRoll() { static getRoll(rollId) {
return this.lastRoll return this.rollTab[roll.id]
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -175,32 +203,44 @@ export class BoLUtility {
else if (game.user.isGM || data.author.id === game.user.id) return else if (game.user.isGM || data.author.id === game.user.id) return
const divButtons = chatCard.find('.actions-section') const divButtons = chatCard.find('.actions-section')
console.log("FOUND 2!! ", divButtons)
divButtons.hide() divButtons.hide()
} }
} }
/* -------------------------------------------- */
static getRollDataFromMessage(event) {
let messageId = BoLUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
return message.getFlag("world", "bol-roll-data")
}
/* -------------------------------------------- */
static cleanupButtons(id) {
$(`#${id}`).hide() // Hide the options roll buttons
game.socket.emit("system.bol", { name: "msg_cleanup_buttons", data: { id: id } })
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async chatListeners(html) { static async chatListeners(html) {
// Damage handling // Damage handling
html.on("click", '.chat-damage-apply', event => { html.on("click", '.chat-damage-apply', event => {
let rollData = BoLUtility.getLastRoll() let rollData = BoLUtility.getRollDataFromMessage(event)
$(`#${rollData.applyId}`).hide() BoLUtility.cleanupButtons(rollData.applyId)
BoLUtility.sendAttackSuccess(rollData) BoLUtility.sendAttackSuccess(rollData)
}); });
html.on("click", '.chat-damage-roll', event => { html.on("click", '.chat-damage-roll', event => {
event.preventDefault(); event.preventDefault()
let rollData = BoLUtility.getLastRoll() let rollData = BoLUtility.getRollDataFromMessage(event)
rollData.damageMode = event.currentTarget.attributes['data-damage-mode'].value; rollData.damageMode = event.currentTarget.attributes['data-damage-mode'].value
let bolRoll = new BoLDefaultRoll(rollData) let bolRoll = new BoLDefaultRoll(rollData)
bolRoll.rollDamage() bolRoll.rollDamage()
}); });
html.on("click", '.transform-legendary-roll', event => { html.on("click", '.transform-legendary-roll', event => {
event.preventDefault(); event.preventDefault();
let rollData = BoLUtility.getLastRoll() let rollData = BoLUtility.getRollDataFromMessage(event)
let actor = game.actors.get(rollData.actorId) let actor = game.actors.get(rollData.actorId)
actor.subHeroPoints(1) actor.subHeroPoints(1)
let r = new BoLDefaultRoll(rollData) let r = new BoLDefaultRoll(rollData)
@ -209,7 +249,7 @@ export class BoLUtility {
html.on("click", '.transform-heroic-roll', event => { html.on("click", '.transform-heroic-roll', event => {
event.preventDefault(); event.preventDefault();
let rollData = BoLUtility.getLastRoll() let rollData = BoLUtility.getRollDataFromMessage(event)
let actor = game.actors.get(rollData.actorId) let actor = game.actors.get(rollData.actorId)
actor.subHeroPoints(1) actor.subHeroPoints(1)
let r = new BoLDefaultRoll(rollData) let r = new BoLDefaultRoll(rollData)
@ -218,7 +258,7 @@ export class BoLUtility {
html.on("click", '.hero-reroll', event => { html.on("click", '.hero-reroll', event => {
event.preventDefault(); event.preventDefault();
let rollData = BoLUtility.getLastRoll() let rollData = BoLUtility.getRollDataFromMessage(event)
let actor = game.actors.get(rollData.actorId) let actor = game.actors.get(rollData.actorId)
actor.subHeroPoints(1) actor.subHeroPoints(1)
rollData.reroll = false // Disable reroll option for second roll rollData.reroll = false // Disable reroll option for second roll
@ -231,24 +271,24 @@ export class BoLUtility {
let attackId = event.currentTarget.attributes['data-attack-id'].value let attackId = event.currentTarget.attributes['data-attack-id'].value
let defenseMode = event.currentTarget.attributes['data-defense-mode'].value let defenseMode = event.currentTarget.attributes['data-defense-mode'].value
let weaponId = (event.currentTarget.attributes['data-weapon-id']) ? event.currentTarget.attributes['data-weapon-id'].value : -1 let weaponId = (event.currentTarget.attributes['data-weapon-id']) ? event.currentTarget.attributes['data-weapon-id'].value : -1
// Remove message for all
let msgId = BoLUtility.findChatMessageId(event.currentTarget)
if (game.user.isGM) { if (game.user.isGM) {
console.log("Process handling !!! -> GM direct damage handling") BoLUtility.processDamageHandling(attackId, defenseMode, weaponId, msgId)
BoLUtility.processDamageHandling(event, attackId, defenseMode, weaponId)
} else { } else {
console.log("Process handling !!! -> socket emit") game.socket.emit("system.bol", { name: "msg_damage_handling", data: { msgId: msgId, attackId: attackId, defenseMode: defenseMode, weaponId: weaponId } })
game.socket.emit("system.bol", { name: "msg_damage_handling", data: { event: event, attackId: attackId, defenseMode: defenseMode, weaponId: weaponId } });
} }
}); })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async processDamageHandling(event, attackId, defenseMode, weaponId = -1) { static async processDamageHandling(attackId, defenseMode, weaponId = -1, msgId) {
if (!game.user.isGM) { if (!game.user.isGM) {
return; return
} }
BoLUtility.removeChatMessageId(BoLUtility.findChatMessageId(event.currentTarget)); BoLUtility.removeChatMessageId( msgId )
console.log("Damage Handling", attackId, defenseMode, weaponId)
console.log("Damage Handling", event, attackId, defenseMode, weaponId)
// Only GM process this // Only GM process this
let attackDef = this.attackStore[attackId] let attackDef = this.attackStore[attackId]
if (attackDef && attackDef.defenderId) { if (attackDef && attackDef.defenderId) {
@ -256,54 +296,70 @@ export class BoLUtility {
return return
} // ?? Why ??? } // ?? Why ???
attackDef.defenseDone = true attackDef.defenseDone = true
attackDef.defenseMode = defenseMode; attackDef.defenseMode = defenseMode
let defender = game.actors.get(attackDef.defenderId) let token = game.scenes.current.tokens.get(attackDef.targetId)
let defender = token.actor
if (defenseMode == 'damage-with-armor') { if (defenseMode == 'damage-with-armor') {
let armorFormula = defender.getArmorFormula() let armorFormula = defender.getArmorFormula()
attackDef.rollArmor = new Roll(armorFormula) attackDef.rollArmor = new Roll(armorFormula)
attackDef.rollArmor.roll({ async: false }) attackDef.rollArmor.roll({ async: false })
console.log("Armor roll ", attackDef.rollArmor) attackDef.armorProtect = (attackDef.rollArmor.total < 0) ? 0 : attackDef.rollArmor.total
attackDef.armorProtect = (attackDef.rollArmor.total < 0) ? 0 : attackDef.rollArmor.total; attackDef.finalDamage = attackDef.damageTotal - attackDef.armorProtect
attackDef.finalDamage = attackDef.damageRoll.total - attackDef.armorProtect; attackDef.finalDamage = (attackDef.finalDamage < 0) ? 0 : attackDef.finalDamage
attackDef.finalDamage = (attackDef.finalDamage < 0) ? 0 : attackDef.finalDamage; defender.sufferDamage(attackDef.finalDamage)
defender.sufferDamage(attackDef.finalDamage); console.log("Armor roll -> result ", attackDef)
} }
if (defenseMode == 'damage-without-armor') { if (defenseMode == 'damage-without-armor') {
attackDef.finalDamage = attackDef.damageRoll.total; attackDef.finalDamage = attackDef.damageTotal
defender.sufferDamage(attackDef.finalDamage); defender.sufferDamage(attackDef.finalDamage)
} }
if (defenseMode == 'hero-reduce-damage') { if (defenseMode == 'hero-reduce-damage') {
let armorFormula = defender.getArmorFormula(); let armorFormula = defender.getArmorFormula()
attackDef.rollArmor = new Roll(armorFormula) attackDef.rollArmor = new Roll(armorFormula)
attackDef.rollArmor.roll({ async: false }); attackDef.rollArmor.roll({ async: false })
attackDef.armorProtect = (attackDef.rollArmor.total < 0) ? 0 : attackDef.rollArmor.total; attackDef.armorProtect = (attackDef.rollArmor.total < 0) ? 0 : attackDef.rollArmor.total
attackDef.rollHero = new Roll("1d6"); attackDef.rollHero = new Roll("1d6")
attackDef.rollHero.roll({ async: false }); attackDef.rollHero.roll({ async: false })
attackDef.finalDamage = attackDef.damageRoll.total - attackDef.rollHero.total - attackDef.armorProtect; attackDef.finalDamage = attackDef.damageTotal - attackDef.rollHero.total - attackDef.armorProtect
attackDef.finalDamage = (attackDef.finalDamage < 0) ? 0 : attackDef.finalDamage; attackDef.finalDamage = (attackDef.finalDamage < 0) ? 0 : attackDef.finalDamage
defender.sufferDamage(attackDef.finalDamage); defender.sufferDamage(attackDef.finalDamage)
defender.subHeroPoints(1); defender.subHeroPoints(1)
} }
if (defenseMode == 'hero-in-extremis') { if (defenseMode == 'hero-in-extremis') {
attackDef.finalDamage = 0; attackDef.finalDamage = 0;
attackDef.weaponHero = defender.weapons.find(item => item._id == weaponId); attackDef.weaponHero = defender.weapons.find(item => item._id == weaponId);
defender.deleteEmbeddedDocuments("Item", [weaponId]); defender.deleteEmbeddedDocuments("Item", [weaponId]);
} }
ChatMessage.create({
alias: defender.name, let defenderUser
whisper: BoLUtility.getWhisperRecipientsAndGMs(defender.name), for (let user of game.users) {
content: await renderTemplate('systems/bol/templates/chat/rolls/defense-result-card.hbs', { if ( user.character && user.character.id == defender.id ) {
defenderUser = user
}
}
let damageResults = {
attackId: attackDef.id, attackId: attackDef.id,
attacker: attackDef.attacker, attacker: attackDef.attacker,
rollArmor: attackDef.rollArmor, rollArmor: attackDef.rollArmor,
rollHero: attackDef.rollHero, rollHero: attackDef.rollHero,
weaponHero: attackDef.weaponHero, weaponHero: attackDef.weaponHero,
armorProtect: attackDef.armorProtect, armorProtect: attackDef.armorProtect,
name: defender.name,
defender: defender, defender: defender,
defenseMode: attackDef.defenseMode, defenseMode: attackDef.defenseMode,
finalDamage: attackDef.finalDamage finalDamage: attackDef.finalDamage
}
ChatMessage.create({
alias: defender.name,
whisper: BoLUtility.getWhisperRecipientsAndGMs(defender.name),
content: await renderTemplate('systems/bol/templates/chat/rolls/defense-result-card.hbs', damageResults)
}) })
console.log("Defender data : ", defenderUser)
ChatMessage.create({
alias: defender.name,
whisper: BoLUtility.getOtherWhisperRecipients(defenderUser?.name),
content: await renderTemplate('systems/bol/templates/chat/rolls/defense-summary-card.hbs', damageResults)
}) })
} }
} }
@ -408,15 +464,18 @@ export class BoLUtility {
if (sockmsg.name == "msg_attack_success") { if (sockmsg.name == "msg_attack_success") {
BoLUtility.processAttackSuccess(sockmsg.data) BoLUtility.processAttackSuccess(sockmsg.data)
} }
if (sockmsg.name == "msg_cleanup_buttons") {
$(`#${sockmsg.data.id}`).hide() // Hide the options roll buttons
}
if (sockmsg.name == "msg_damage_handling") { if (sockmsg.name == "msg_damage_handling") {
BoLUtility.processDamageHandling(sockmsg.data.event, sockmsg.data.attackId, sockmsg.data.defenseMode) BoLUtility.processDamageHandling(sockmsg.data.attackId, sockmsg.data.defenseMode, sockmsg.data.weaponId, sockmsg.data.msgId)
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static computeSpellCost(spell, nbOptCond = 0) { static computeSpellCost(spell, nbOptCond = 0) {
let pp = spell.data.data.properties.ppcost let pp = spell.data.properties.ppcost
let minpp = __circle2minpp[spell.data.data.properties.circle] let minpp = __circle2minpp[spell.data.properties.circle]
pp = (pp - nbOptCond < minpp) ? minpp : pp - nbOptCond pp = (pp - nbOptCond < minpp) ? minpp : pp - nbOptCond
return pp return pp
} }
@ -453,11 +512,21 @@ export class BoLUtility {
nbDice++ nbDice++
modIndex = 4 modIndex = 4
} }
if (res[3] == 'MM') {
postForm = 'kl' + nbDice
nbDice += 2
modIndex = 4
}
if (res[3] == 'B') { if (res[3] == 'B') {
postForm = 'kh' + nbDice postForm = 'kh' + nbDice
nbDice++ nbDice++
modIndex = 4 modIndex = 4
} }
if (res[3] == 'BB') {
postForm = 'kh' + nbDice
nbDice += 2
modIndex = 4
}
} }
formula = "(" + nbDice + "d" + res[2] + reroll + postForm + "+" + modifier + ") *" + multiplier formula = "(" + nbDice + "d" + res[2] + reroll + postForm + "+" + modifier + ") *" + multiplier
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,17 @@
{"name":"Pinxi","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}},"_id":"4CZOPpGP1YzYGLSB"} {"_id":"4CZOPpGP1YzYGLSB","name":"Pinxi","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>la langue des Xi Lu, encore commun&eacute;ment parl&eacute;e par cette ethnie, m&ecirc;me si la plupart des Xi&nbsp;Lu apprennent au moins des rudiments de gatha&iuml;, la langue officielle du gouvernement du grand khan.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}}}
{"name":"Céruléen","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.2dZ1OrZgx6M47jl5"}},"_id":"61dDXTOhyN3VLHny"} {"_id":"61dDXTOhyN3VLHny","name":"Céruléen","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les nomades bleus parlent leur&nbsp;propre langue, qui n&rsquo;a pas de forme &eacute;crite. Les&nbsp;marchands d&rsquo;Oomis apprennent souvent le&nbsp;c&eacute;rul&eacute;en.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.2dZ1OrZgx6M47jl5"}}}
{"name":"Yggdari","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.emz8WuzZsArE0v2U"}},"_id":"8LKy7DkKy8Cd3QuX"} {"_id":"8LKy7DkKy8Cd3QuX","name":"Yggdari","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>C&rsquo;est le nom de l&rsquo;ancienne langue des&nbsp;hommes (aussi appel&eacute;e langue des Anciens). Peu&nbsp;d&rsquo;individus la parlent aujourd&rsquo;hui, et encore moins&nbsp;peuvent la lire. Il arrive cependant que d&rsquo;antiques&nbsp;textes soient retrouv&eacute;s dans les ruines d&rsquo;Ygddar,&nbsp;de Qiddesh, de Qeb, de Qar ou d&rsquo;Oosal, mais leur&nbsp;traduction requiert g&eacute;n&eacute;ralement les services d&rsquo;un&nbsp;scribe particuli&egrave;rement comp&eacute;tent.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.emz8WuzZsArE0v2U"}}}
{"name":"Beshaari","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.kzOlopZyDtVZHqca"}},"_id":"9PDA54isBWhIFGqw"} {"_id":"9PDA54isBWhIFGqw","name":"Beshaari","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les nomades du d&eacute;sert de Beshaar&nbsp;parlent et &eacute;crivent leur propre langue. La plupart&nbsp;des habitants d&rsquo;Halakh parlent le beshaari en plus&nbsp;du l&eacute;murien.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.kzOlopZyDtVZHqca"}}}
{"name":"Chant du Vent","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.Q9oqF2G0xqPzS08z"}},"_id":"AiG20gJfHhxWNF5v"} {"_id":"AiG20gJfHhxWNF5v","name":"Chant du Vent","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>La langue chantante des&nbsp;hommes-oiseaux peut &eacute;voquer tour &agrave; tour le son&nbsp;de la brise se faufilant entre les rochers escarp&eacute;s&nbsp;des sommets et le sifflement des bourrasques&nbsp;s&rsquo;engouffrant dans les canyons montagneux et les&nbsp;cavernes. Cette langue est tr&egrave;s difficile &agrave; parler&nbsp;correctement pour un &eacute;tranger. Elle poss&egrave;de une&nbsp;forme &eacute;crite, qui est tout aussi difficile &agrave; ma&icirc;triser&nbsp;et &agrave; traduire.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.Q9oqF2G0xqPzS08z"}}}
{"name":"Wei","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}},"_id":"LpdWKjWDblL4lVG8"} {"_id":"LpdWKjWDblL4lVG8","name":"Wei","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les Wei poss&egrave;dent leur propre langue, difficile &agrave; ma&icirc;triser pour des &eacute;trangers en raison de&nbsp;ses sonorit&eacute;s particuli&egrave;res, avec un emploi abondant de claquements de langue. Les Wei n&rsquo;ont pas&nbsp;d&rsquo;&eacute;criture ; leur culture repose sur la transmission orale des savoirs et des coutumes.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}}}
{"name":"Lemurien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.XDWxHZYrzDyAKPrC"}},"_id":"RzrUDaHczkxVvk1b"} {"_id":"RzrUDaHczkxVvk1b","name":"Lemurien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>La langue la plus commun&eacute;ment&nbsp;parl&eacute;e en L&eacute;murie. Chaque cit&eacute; parle cependant&nbsp;son propre dialecte l&eacute;murien, ce qui veut dire&nbsp;qu&rsquo;un voyageur aura parfois du mal &agrave; comprendre&nbsp;les gens du coin. Le MJ pourra &agrave; l&rsquo;occasion vous&nbsp;demander de r&eacute;ussir un jet d&rsquo;esprit pour communiquer avec des gens d&rsquo;autres cit&eacute;s que la v&ocirc;tre.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.XDWxHZYrzDyAKPrC"}}}
{"name":"Malakutien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.8PUJGWZtZeARrV5C"}},"_id":"SlDoVbJ5ndxbDVFR"} {"_id":"SlDoVbJ5ndxbDVFR","name":"Malakutien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Lles habitants de Malakut et de la&nbsp;r&eacute;gion environnante parlent leur propre langue.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.8PUJGWZtZeARrV5C"}}}
{"name":"Valgardien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.Kqy1EMnW5cygirUn"}},"_id":"Td6HDtdzJ2nlGDWa"} {"_id":"Td6HDtdzJ2nlGDWa","name":"Valgardien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les gens du Valgard parlent et&nbsp;&eacute;crivent leur propre langue, qui est &eacute;tonnamment&nbsp;&eacute;labor&eacute;e.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.Kqy1EMnW5cygirUn"}}}
{"name":"Festroli","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.0qYsNoL6d0rhLPKl"}},"_id":"cqJnm3azUpN4GiD5"} {"_id":"cqJnm3azUpN4GiD5","name":"Festreli","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>A l&rsquo;origine, le festreli &eacute;tait un dialecte&nbsp;du l&eacute;murien, mais il s&rsquo;en est tellement &eacute;loign&eacute;&nbsp;qu&rsquo;il est &agrave; pr&eacute;sent devenu presque inintelligible&nbsp;pour des locuteurs du l&eacute;murien.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.0qYsNoL6d0rhLPKl"}}}
{"name":"Shamite","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.hDyBLMY9ZDkcKEBs"}},"_id":"dyJoULpfzwZMlJrr"} {"_id":"dyJoULpfzwZMlJrr","name":"Shamite","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les habitants de Shamballah et de la&nbsp;r&eacute;gion environnante parlent leur propre langue.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.hDyBLMY9ZDkcKEBs"}}}
{"name":"Axien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.b0e4uZzlo4DFP2gv"}},"_id":"nMboUYMjDqzfASMM"} {"_id":"nMboUYMjDqzfASMM","name":"Axien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>L&rsquo;axien est la langue des tribus barbares qui vivent dans la cha&icirc;ne de l&rsquo;Axos. Cette langue reste plut&ocirc;t confin&eacute;e &agrave; cette r&eacute;gion montagneuse,&nbsp;&nbsp;mais on raconte que d&rsquo;anciens textes datant de l&rsquo;&eacute;poque lointaine o&ugrave; l&rsquo;axien &eacute;tait plus largement&nbsp;r&eacute;pandu seraient entrepos&eacute;s dans des grottes&nbsp;oubli&eacute;es au c&oelig;ur des montagnes.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.b0e4uZzlo4DFP2gv"}}}
{"name":"Kashtien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.RWHkb4OkXhZfURmw"}},"_id":"pUaLtMJVL0xhy2GM"} {"_id":"pUaLtMJVL0xhy2GM","name":"Kashtien","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les habitants des marais de Kasht&nbsp;ont leur propre langue, dont chaque tribu utilise&nbsp;une variante qui lui est propre.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.RWHkb4OkXhZfURmw"}}}
{"name":"Argot des Mers","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}},"_id":"tXDz4UokSbGh6Rhw"} {"_id":"tXDz4UokSbGh6Rhw","name":"Argot des Mers","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Les &icirc;les du Cr&acirc;ne, &agrave; la population&nbsp;h&eacute;t&eacute;roclite en provenance des quatre coins du&nbsp;monde, ont d&eacute;velopp&eacute; leur propre langue, un&nbsp;assemblage bigarr&eacute; d&rsquo;influences diverses. Il n&rsquo;en&nbsp;existe pas de forme &eacute;crite.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}}}
{"name":"Grooth","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.OpUZ9bTcD7k8iGd1"}},"_id":"u5RK8dQRbcwHtcbM"} {"_id":"u5RK8dQRbcwHtcbM","name":"Grooth","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Il ne s&rsquo;agit pas d&rsquo;une langue &agrave;&nbsp;proprement parler, mais plut&ocirc;t d&rsquo;un langage&nbsp;rudimentaire fait de grognements, de grimaces,&nbsp;de tapements du pied et de grands mouvements&nbsp;simiesques. Ce langage n&rsquo;a pas de forme &eacute;crite et&nbsp;est totalement inusit&eacute; en dehors des tribus des&nbsp;grooth.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.OpUZ9bTcD7k8iGd1"}}}
{"name":"Ghatai","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}},"_id":"vaAQiuAHdyQrQiUX"} {"_id":"vaAQiuAHdyQrQiUX","name":"Ghatai","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>Langue des nomades du sud du Khanat, le ghata&iuml; s&rsquo;apparente &agrave; un dialecte ancien du&nbsp;l&eacute;murien, avec de nombreux emprunts au pinxi (cf. ci-dessous), pour le vocabulaire notamment. Avec&nbsp;un peu d&rsquo; effort et beaucoup de patience, un locuteur du l&eacute;murien sera en mesure de communiquer de&nbsp;mani&egrave;re rudimentaire avec des gens qui parlent le ghata&iuml;. Cette langue, qui &agrave; l&rsquo;origine ne poss&eacute;dait pas&nbsp;son propre syst&egrave;me d&rsquo;&eacute;criture, utilise d&eacute;sormais celui du pinxi.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.yRWlUr9BF1gr0hAe"}}}
{"name":"Démonique","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.fjq6EF5RN8JXr5vT"}},"_id":"zNHxODKXOL4LtYMe"} {"_id":"zNHxODKXOL4LtYMe","name":"Démonique","type":"feature","img":"icons/skills/social/diplomacy-handshake-gray.webp","data":{"category":null,"subtype":"language","description":"<p>C&rsquo;est l&rsquo;ancienne langue des Rois-&nbsp;Sorciers, dans laquelle sont r&eacute;dig&eacute;s tous les&nbsp;textes remontant &agrave; leur &eacute;poque. Les magiciens,&nbsp;alchimistes, druides et pr&ecirc;tres doivent apprendre&nbsp;le d&eacute;monique s&rsquo;ils veulent pouvoir utiliser les&nbsp;puissants sortil&egrave;ges et recettes alchimiques de&nbsp;cette antique race. Ce langage est particuli&egrave;rement&nbsp;ardu et ses formes orale et &eacute;crite exigent d&rsquo;&ecirc;tre&nbsp;apprises s&eacute;par&eacute;ment. Les magiciens de Zalut&nbsp;conversent toujours en d&eacute;monique, &agrave; moins de&nbsp;devoir parler &agrave; des &eacute;trangers.</p>","properties":{},"rank":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.fjq6EF5RN8JXr5vT"}}}

42
packs/objets-alchimie.db Normal file
View File

@ -0,0 +1,42 @@
{"name":"Serrure ou piège élaboré","type":"item","img":"icons/environment/traps/saw-steel.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>-4 pour les&nbsp;crocheter/d&eacute;samorcer ; un pi&egrave;ge inflige d6+1&nbsp;points de d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"0Yhn3r8AFsKXEKeS"}
{"name":"Lance-éclair","type":"item","img":"icons/weapons/crossbows/handcrossbow-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>une arme qui a vaguement&nbsp;la forme d&rsquo;une arbal&egrave;te et projette un &eacute;clair.&nbsp;Facteur de port&eacute;e : 75 m ; d6 x2 points de&nbsp;d&eacute;g&acirc;ts ignorant les armure</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"1JMT3kjaWSP8umZ4"}
{"name":"Armure Mythique","type":"item","img":"icons/equipment/chest/breastplate-helmet-metal.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>comme une armure&nbsp;l&eacute;gendaire, mais sans malus d&rsquo;agilit&eacute; ; un&nbsp;h&eacute;ros pourrait m&ecirc;me nager en portant cette&nbsp;armure</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"1VKW5IwOhopbnD70"}
{"name":"Horloge","type":"item","img":"icons/sundries/misc/hourglass-wood.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"2vB2YGtQUh2Uv1Fm"}
{"name":"Habitation intelligente","type":"item","img":"icons/environment/settlement/hut.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"4loLeFR0iwfUnPuK"}
{"name":"Création par croisement et hybridation de plantes ou danimaux mortellement dangereux","type":"item","img":"icons/commodities/flowers/cornflower-gold.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"4siOagfdWzjP5zH7"}
{"name":"Substance chimique luminescente","type":"item","img":"icons/consumables/potions/flask-corked-yellow-glow.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>produit&nbsp;de la lumi&egrave;re pour une demi-journ&eacute;e</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"4tw89CLuUKdEPTjP"}
{"name":"Ceinture dallanium","type":"item","img":"icons/equipment/waist/belt-buckle-spiral-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>permet de flotter dans&nbsp;les airs</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"5mTphkODHSGq3nSQ"}
{"name":"Outil","type":"item","img":"icons/tools/hand/hammer-mason-white-grey.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Les armes et armures de cette qualit&eacute;&nbsp;permettent, une fois par round, de relancer un 1&nbsp;obtenu sur un jet de d&eacute;g&acirc;ts/de protection.</p>\n<p>En dehors des armes, les autres cr&eacute;ations&nbsp;infligeant des d&eacute;g&acirc;ts ou soignant des blessures&nbsp;provoquent respectivement la perte ou la&nbsp;r&eacute;cup&eacute;ration de d3 points de vitalit&eacute;.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"9Q5RVK5vLFffDzbF"}
{"name":"Allume-feu","type":"item","img":"icons/tools/laboratory/bowl-liquid-orange.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>permet d&rsquo;allumer un feu&nbsp;facilement et rapidement</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"BPWbng0g7yGicbo1"}
{"name":"Membre Artificiel","type":"item","img":"icons/commodities/biological/hand-yellow-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>non articul&eacute;, mais bien&nbsp;plus &eacute;l&eacute;gant qu&rsquo;un simple crochet</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"IuRy0AzysqvPBitL"}
{"name":"Arme","type":"item","img":"icons/weapons/swords/greatsword-crossguard-engraved-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Les armes et armures de cette qualit&eacute;&nbsp;permettent, une fois par round, de relancer un 1&nbsp;obtenu sur un jet de d&eacute;g&acirc;ts/de protection.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"J4dFYrwkmlm0Nmk3"}
{"name":"Arme dissimulée dans un Objet Courant","type":"item","img":"icons/weapons/fist/fist-katar-gold.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>En dehors des armes, les autres cr&eacute;ations&nbsp;infligeant des d&eacute;g&acirc;ts ou soignant des blessures&nbsp;provoquent respectivement la perte ou la&nbsp;r&eacute;cup&eacute;ration de d6 points de vitalit&eacute;.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"JaB3ain6oqdYMHO5"}
{"name":"Création de formes de vie hybrides dhomme et danimal","type":"item","img":"icons/creatures/magical/humanoid-silhouette-green.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"KNww1UqQ5xDsoipn"}
{"name":"Antirouille","type":"item","img":"icons/tools/laboratory/bowl-liquid-black.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>quantit&eacute; suffisante pour &ocirc;ter la&nbsp;rouille d&rsquo;une armure compl&egrave;te</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"KlbAhlqMv2aYrVV6"}
{"name":"Cuve de clonage des individus","type":"item","img":"icons/creatures/magical/humanoid-silhouette-aliens-green.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"LDpAggSZbGqrXmlw"}
{"name":"Armure","type":"item","img":"icons/equipment/chest/breastplate-scale-grey.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Les armes et armures de cette qualit&eacute;&nbsp;permettent, une fois par round, de relancer un 1&nbsp;obtenu sur un jet de d&eacute;g&acirc;ts/de protection.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"NOeeuqGt5sRZzjZW"}
{"name":"Huile Brulante","type":"item","img":"icons/tools/laboratory/bowl-powder-purple.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>br&ucirc;le au contact et inflige d6&nbsp;points de d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"NsWmlAIAiDgaOouM"}
{"name":"Ceinture dinvisibilité","type":"item","img":"icons/equipment/waist/belt-buckle-horned.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>quand on la boucle,&nbsp;cette ceinture offre le m&ecirc;me effet que la&nbsp;poudre d&rsquo;invisibilit&eacute;</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"RuW6v3YvbEE80rWv"}
{"name":"Armure Supérieure","type":"item","img":"icons/equipment/chest/breastplate-layered-leather-stitched.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>offre une protection&nbsp;semblable &agrave; celle d&rsquo;une armure de la cat&eacute;gorie&nbsp;sup&eacute;rieure &ndash; une armure l&eacute;g&egrave;re apporte la&nbsp;m&ecirc;me protection qu&rsquo;une armure moyenne, et&nbsp;une armure lourde apporte une protection de&nbsp;d6. De plus, l&rsquo;armure diminue de moiti&eacute; les&nbsp;d&eacute;g&acirc;ts suppl&eacute;mentaires inflig&eacute;s par un succ&egrave;s&nbsp;h&eacute;ro&iuml;que ou l&eacute;gendaire</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"WXGXDYvnGFqPznDW"}
{"name":"Arme Mythique","type":"item","img":"icons/weapons/swords/greatsword-evil-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>comme une arme l&eacute;gendaire,&nbsp;mais elle est de plus consid&eacute;r&eacute;e comme une&nbsp;arme favorite, cf. l&rsquo;avantage du m&ecirc;me nom</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"XLTcm3ZrC5f2obak"}
{"name":"Instrument de musique au son parfait","type":"item","img":"icons/tools/instruments/harp-gold-glowing.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>un d&eacute; de bonus pour en jouer</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"YZ9Pd2jmxmEf7Bfr"}
{"name":"Arme Légendaire","type":"item","img":"icons/weapons/swords/sword-guard-flanged-purple.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>ajoute un d&eacute; de bonus&nbsp;aux jets de d&eacute;g&acirc;ts et ignore les armures, &agrave;&nbsp; l&rsquo;exception de celles cr&eacute;&eacute;es par un alchimiste.&nbsp;De plus, l&rsquo;arme est incassable. Une arme aussi&nbsp;exceptionnelle se doit de recevoir un nom</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"Z16TTJJBk4gifNi4"}
{"name":"Serrure ou piège particulièrement ingénieux","type":"item","img":"icons/environment/traps/metal-spikes.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>-6 pour les crocheter/d&eacute;samorcer ; le pi&egrave;ge&nbsp;inflige d6 x2 points de d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"cH4xnb61y15y0VB9"}
{"name":"Microscope","type":"item","img":"icons/tools/scribal/magnifying-glass.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"czeLiVAATVSJXurP"}
{"name":"Dague à lame creuse en verre","type":"item","img":"icons/weapons/daggers/dagger-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>remplie&nbsp;d&rsquo;acide ou de poison</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"dPjpAs6k4oJ1PBJY"}
{"name":"Serrure","type":"item","img":"icons/skills/trades/security-locksmith-key-gray.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>malus de -2 pour la forcer</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"eyhRUXzKxs5USWn4"}
{"name":"Création de formes de vie en laboratoire","type":"item","img":"icons/environment/creatures/bug-worm-teeth-green.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"g0LHWZNu9sSppfS1"}
{"name":"Armure Légendaire","type":"item","img":"icons/equipment/chest/breastplate-pieced-black-02.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>offre une protection&nbsp;semblable &agrave; celle d&rsquo;une armure de la cat&eacute;gorie&nbsp;sup&eacute;rieure &ndash; une armure l&eacute;g&egrave;re apporte la&nbsp;m&ecirc;me protection qu&rsquo;une armure moyenne, et&nbsp;une armure lourde apporte une protection de d6. De plus, le jet de protection de l&rsquo;armure&nbsp;se fait avec un d&eacute; de bonus, et elle diminue de&nbsp;moiti&eacute; les d&eacute;g&acirc;ts suppl&eacute;mentaires inflig&eacute;s par&nbsp;un succ&egrave;s h&eacute;ro&iuml;que ou l&eacute;gendaire.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"ifyxS1mYVPrVva3D"}
{"name":"Machine Volante","type":"item","img":"icons/magic/air/wind-weather-sailing-ship.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>nef volante, par exemple</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"kGTTnSlZA6ZoQ3u3"}
{"name":"Télescope","type":"item","img":"icons/tools/navigation/spyglass-telescope-brass.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"ket3hVgoT0QwcBEq"}
{"name":"Arme Supérieure","type":"item","img":"icons/weapons/swords/greatsword-crossguard-flanged-purple.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>un d&eacute; de bonus aux jets de&nbsp;d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"ki1xuxtM0H4pgTiy"}
{"name":"Arbalète à Grappin","type":"item","img":"icons/weapons/crossbows/handcrossbow-black.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>tire un grappin attach&eacute;&nbsp;&agrave; une corde en soie avec un facteur de port&eacute;e&nbsp;de 7,5 m</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"kuypZbs1owvKVTqI"}
{"name":"Casque permettant à son porteur de respirer sous leau","type":"item","img":"icons/equipment/head/helm-spangen-ridged.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"lEfQUM98WsqLkIxz"}
{"name":"Périscope","type":"item","img":"icons/tools/scribal/magnifying-glass.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"mNOicjjxjXgZmmLy"}
{"name":"Serrure ou piège à la complexité unique","type":"item","img":"icons/commodities/tech/sensor-yellow.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>-8 pour les crocheter/d&eacute;samorcer ; un pi&egrave;ge&nbsp;inflige d6 x3 points de d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"oB6gDtBff0AxZ79M"}
{"name":"Machine dotée d'une semi-conscience","type":"item","img":"icons/creatures/magical/construct-iron-stomping-yellow.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"ok8HQzoEyF9GgSKA"}
{"name":"Automate ou golem ayant la forme dune armure animée","type":"item","img":"icons/magic/symbols/cog-orange-red.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"opFsywlBa1q9cb0z"}
{"name":"Navire submersible","type":"item","img":"icons/tools/navigation/sextant-brass-brown.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>un&nbsp; sous-marin&nbsp;descendant &agrave; une profondeur maximale de&nbsp;6 m&egrave;tres et pouvant emporter un &eacute;quipage&nbsp;de quatre personnes. Un tuyau flottant&nbsp;jusqu&rsquo;&agrave; la surface alimente le sous-marin&nbsp;en oxyg&egrave;ne (et peut &ecirc;tre rep&eacute;r&eacute; en surface).&nbsp;Le sous-marin contient suffisamment d&rsquo;air&nbsp;pour rester en plong&eacute;e pendant une heure. Il&nbsp;se d&eacute;place &agrave; une vitesse d&rsquo;environ 8 kilom&egrave;tres&nbsp;&agrave; l&rsquo;heure, propuls&eacute; par la force des membres&nbsp;de l&rsquo;&eacute;quipage qui p&eacute;dalent pour faire tourner&nbsp;l&rsquo;h&eacute;lice</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"rg9EZ0jwe2ZdNrcJ"}
{"name":"Fabrication dallanium et de janium","type":"item","img":"icons/commodities/metal/ingot-engraved-gold.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"tcKKDzPjPqTA8doj"}
{"name":"Machine de guerre blindée","type":"item","img":"icons/commodities/tech/smoke-bomb-yellow.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"vWhFzHoi5H6kVeFM"}
{"name":"Piège","type":"item","img":"icons/environment/traps/trap-jaw-tan.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>malus de -2 pour le rep&eacute;rer et le&nbsp;d&eacute;samorcer ; inflige d3+1 points de d&eacute;g&acirc;t</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"xVWrSPiX0Nwccsn6"}

37
packs/potions-alchimie.db Normal file
View File

@ -0,0 +1,37 @@
{"name":"Prouesse","type":"item","img":"icons/consumables/potions/bottle-corked-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>un d&eacute; de bonus aux jets d&rsquo;attaque de&nbsp;corps &agrave; corps ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"0a8UFoCOd3D35WBb"}
{"name":"Immortalité","type":"item","img":"icons/consumables/potions/bottle-conical-corked-labeled-skull-poison-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Pr&eacute;vient toute mort naturelle.&nbsp;Le buveur vieillit lentement, en se dess&eacute;chant&nbsp;au fil des si&egrave;cles. Seule une mort violente peut&nbsp;l&rsquo; emporter.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"1CGNqrAk8i4yZHMu"}
{"name":"Alcool de Qualité","type":"item","img":"icons/consumables/drinks/wine-amphora-clay-gray.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>3 bouteilles</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"1","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"3axZyF07LhrFoIKn"}
{"name":"Sommeil Instantané","type":"item","img":"icons/consumables/potions/conical-ornate-purple.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur doit r&eacute;ussir un&nbsp;jet de vigueur avec votre rang d&rsquo;alchimiste en&nbsp;malus, ou sombrer dans un profond sommeil&nbsp;pendant une demi-journ&eacute;e.</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"3d31dycrddqS41oH"}
{"name":"Feu Alchimique","type":"item","img":"icons/consumables/potions/flask-corked-red-glow.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>une fiole qui, quand elle est&nbsp;bris&eacute;e, explose en une boule de feu de 3 m de&nbsp;rayon, infligeant d6 x2 points de d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"3hbPr9YV5UFPT5xV"}
{"name":"Acide","type":"item","img":"icons/consumables/potions/vial-cork-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>1 petite fiole, inflige d3 points de&nbsp;d&eacute;g&acirc;ts ou peut percer 2,5 cm de bois ou de&nbsp;m&eacute;tal</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"9g9V7Khr66RkfqYp"}
{"name":"Beauté","type":"item","img":"icons/consumables/potions/bottle-pear-corked-pink.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>+1 en aura ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"CZoAbYpw5V35ICsl"}
{"name":"Puissance","type":"item","img":"icons/consumables/potions/bottle-round-corked-orante-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>+1 en vigueur ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"DPbSKaYROI8Ys2QL"}
{"name":"Somnifere","type":"item","img":"icons/consumables/potions/bottle-bulb-corked-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>A l&rsquo;ingestion, provoque 2d6 heures&nbsp;de sommeil profond, 3 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{},"_id":"DukviN6iQWAZxvO6"}
{"name":"Antidote Universel","type":"item","img":"icons/consumables/potions/bottle-circular-corked-labeled-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>soigne instantan&eacute;ment&nbsp;n&rsquo;importe quel empoisonnement, m&ecirc;me&nbsp;magique ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"DzNxbiCwykhOI8il"}
{"name":"Agrandissement ou Rapetissement","type":"item","img":"icons/consumables/potions/bottle-corked-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Dur&eacute;e : 1 sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"EScizWIAqEGey7k9"}
{"name":"Altération permanente","type":"item","img":"icons/consumables/potions/potion-jar-corked-labeled-purple-pink.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>bonus permanent&nbsp;de +1 dans un attribut ; on ne peut b&eacute;n&eacute;ficier&nbsp;qu&rsquo;une seule fois des effets de cet &eacute;lixir</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"EvAWKqbqVmOAiJuy"}
{"name":"Perspicacité","type":"item","img":"icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>+1 en esprit ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"HzRud4Pt5prjxdOp"}
{"name":"Anti-Fièvre","type":"item","img":"icons/consumables/potions/bottle-ornate-bat-teal.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>2d6 heures d'effet, 3 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"IwLxp7qwaVqFkXIT"}
{"name":"Illusion de la Jeunesse","type":"item","img":"icons/consumables/potions/flask-corked-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur retrouve&nbsp;l&rsquo;apparence qu&rsquo;il avait &agrave; 25 ans ; dur&eacute;e : une&nbsp;semaine ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"LgCquDfrRj68TpGD"}
{"name":"Résistance","type":"item","img":"icons/consumables/potions/potion-tube-corked-bat-gold-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>la peau du buveur devient aussi&nbsp;r&eacute;sistante qu&rsquo;une armure, lui offrant d6 de&nbsp;protection ; dur&eacute;e : une sc&egrave;ne ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"OPg1rCpWtrMEwdpi"}
{"name":"Régénération Suprême","type":"item","img":"icons/consumables/potions/bottle-corked-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>provoque &nbsp;la&nbsp;r&eacute;g&eacute;n&eacute;ration d&rsquo;un membre amput&eacute;, d&rsquo;un &oelig;il&nbsp;perdu, etc., annulant le d&eacute;savantage associ&eacute; &agrave;&nbsp;ce handicap</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"PCGayeKrqCe5y8Yr"}
{"name":"Paralysant","type":"item","img":"icons/consumables/potions/potion-bottle-corked-fancy-orange.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur doit r&eacute;ussir un jet de&nbsp;vigueur avec votre rang d&rsquo;alchimiste en malus&nbsp;ou se retrouver paralys&eacute; pour une dur&eacute;e de 24&nbsp;heures ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"ROaHo4M8ry9J0no8"}
{"name":"Mort aux Rats","type":"item","img":"icons/consumables/potions/conical-mushroom-poison-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Tue&nbsp; les&nbsp; petits&nbsp; animaux&nbsp;nuisibles</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"RYq5MG3t3r1yFsKZ"}
{"name":"Philtre damour","type":"item","img":"icons/consumables/potions/round-cork-leaf-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur doit r&eacute;ussir un jet&nbsp;d&rsquo;esprit avec votre rang d&rsquo;alchimiste en malus&nbsp;ou tomber follement amoureux ; dur&eacute;e : une&nbsp;lune ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"RwLL4Ps54lMaUShO"}
{"name":"Poudre dinvisibilité","type":"item","img":"icons/consumables/potions/round-decorated-snake-green.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>rend invisible aux yeux&nbsp;d&rsquo;autrui, &agrave; moins d&rsquo;entreprendre une action&nbsp;qui attire l&rsquo;attention ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"UBDnUINYuRk1MT67"}
{"name":"Antalgique","type":"item","img":"icons/consumables/potions/bottle-ornate-bat-teal.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>2d6 heures d'effet, 3 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"1","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"UlDQi8b2L5nvdfar"}
{"name":"Sens Accrus","type":"item","img":"icons/consumables/potions/bottle-round-label-cork-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Un d&eacute; de bonus aux jets d&rsquo;action&nbsp;pour d&eacute;tecter ou rep&eacute;rer quelque chose ;&nbsp;dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"aExkw1SAqQXQKfih"}
{"name":"Antidote contre les Venins Animaux et Poisons Végétaux","type":"item","img":"icons/consumables/potions/bottle-metal-yellow-gray.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>soigne l&rsquo; empoisonnement&nbsp;en 1 heure, 3 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"cnOu9ysD1SLZ9s1d"}
{"name":"Répulsifs à Insecte","type":"item","img":"icons/consumables/potions/potion-tube-corked-orange.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>4d6 heures d&rsquo;effet, 3 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"1","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"dadXiS7LGF9hsQFd"}
{"name":"Antidote aux Poisons Alchimiques","type":"item","img":"icons/consumables/potions/bottle-bulb-corked-labeled-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>Soigne&nbsp;l&rsquo; empoisonnement en 1 heure, 3 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"g2dZBvSyW8fUdmvi"}
{"name":"Neutralisant dacide","type":"item","img":"icons/consumables/potions/bottle-conical-corked-purple.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>stoppe instantan&eacute;ment&nbsp;les effets d&rsquo;une quantit&eacute; &eacute;quivalente d&rsquo;acide ;&nbsp;9 petites fioles</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"hSftVccCmrEhSYmc"}
{"name":"Teinture de respiration aquatique","type":"item","img":"icons/consumables/potions/potion-bottle-corked-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>permet&nbsp;au buveur de respirer sous l&rsquo;eau pendant une&nbsp;demi-journ&eacute;e</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"iQnztmumTwpX8vbi"}
{"name":"Remède contre la Vérole","type":"item","img":"icons/consumables/potions/bottle-conical-corked-tied-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"j0GkKyweP9tQGybn"}
{"name":"Métamorphose","type":"item","img":"icons/consumables/potions/bottle-bulb-corked-glowing-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur prend l&rsquo;apparence d&rsquo;une autre personne, pour une dur&eacute;e d&rsquo;une heure. N&eacute;cessite quelques cheveux, rognures&nbsp;d&rsquo;ongles, ou gouttes de sang de la personne en&nbsp;question ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"lVVZdSHnxj7ISSoE"}
{"name":"Vivacité","type":"item","img":"icons/consumables/potions/bottle-round-label-cork-purple.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>+1 en agilit&eacute; ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"m1TrGH7Y71bcsWvC"}
{"name":"Panacée","type":"item","img":"icons/consumables/potions/flask-decorated-label-pink.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur est gu&eacute;ri de n&rsquo;importe quelle maladie ; 2 doses</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"pBxSv3oC7qVdWk82"}
{"name":"Héroïsme","type":"item","img":"icons/consumables/potions/flask-corked-yellow-glow.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>le buveur b&eacute;n&eacute;ficie d&rsquo;un bonus de&nbsp;+1 &agrave; toutes ses aptitudes de combat ; dur&eacute;e :&nbsp;une sc&egrave;ne ; 1 dose</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"legend","difficulty":"-2","pccost":4,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"r4v0uPgUkeXiojMu"}
{"name":"Poudre de Phénix","type":"item","img":"icons/consumables/potions/potion-bottle-corked-labeled-red.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>une poudre qui br&ucirc;le au&nbsp;contact, m&ecirc;me sous l&rsquo; eau, en infligeant d6 x3&nbsp;points de d&eacute;g&acirc;ts</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"mythic","difficulty":"-4","pccost":8,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"seLHMb7EGeX5skWd"}
{"name":"Précision","type":"item","img":"icons/consumables/potions/bottle-conical-corked-yellow.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>un d&eacute; de bonus aux jets d&rsquo;attaque de&nbsp;tir ; dur&eacute;e : une sc&egrave;ne</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"scarce","difficulty":"-1","pccost":2,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"wxdS4VRUgiEZwteO"}
{"name":"Remède contre le Scorbut","type":"item","img":"icons/consumables/potions/bottle-conical-corked-tied-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"0","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"y84Et9OUilBgtqv6"}
{"name":"Encre Invisible","type":"item","img":"icons/commodities/materials/feather-blue.webp","data":{"category":"alchemy","subtype":"armor","description":"<p>R&eacute;appara&icirc;t quand elle est mouill&eacute;e ou chauff&eacute;e</p>","properties":{"ranged":false,"melee":false,"spell":false,"protection":false,"weapon":false,"armor":false,"helm":false,"shield":false,"equipable":false,"consumable":false,"magical":false,"2H":false,"reloadable":false,"bow":false,"crossbow":false,"throwing":false,"stackable":false,"alchemytype":"common","difficulty":"1","pccost":1,"pccurrent":0},"quantity":1,"weight":0,"price":0,"worn":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"kQghu0tL1dft5xLu":3},"flags":{"core":{"sourceId":"Item.my6uixIzYHN3qrzY"}},"_id":"y9NHZCxKXMZEqcRo"}

View File

View File

@ -2,19 +2,19 @@
"name": "bol", "name": "bol",
"title": "Barbarians of Lemuria", "title": "Barbarians of Lemuria",
"description": "The Barbarians of Lemuria system for FoundryVTT!", "description": "The Barbarians of Lemuria system for FoundryVTT!",
"author": "Zigmund,LeRatierBretonnien", "author": "LeRatierBretonnien,Zigmund",
"authors": [ "authors": [
{ {
"name": "Zigmund" "name": "LeRatierBretonnien"
}, },
{ {
"name": "LeRatierBretonnien" "name": "Zigmund"
} }
], ],
"url": "https://github.com/ZigmundKreud/bol", "url": "https://www.uberwald.me/gitea/public/bol",
"license": "LICENSE.txt", "license": "LICENSE.txt",
"flags": {}, "flags": {},
"version": "1.3.5", "version": "1.5.2",
"templateVersion": 10, "templateVersion": 10,
"minimumCoreVersion": "0.8.6", "minimumCoreVersion": "0.8.6",
"compatibleCoreVersion": "9", "compatibleCoreVersion": "9",
@ -35,6 +35,11 @@
"lang": "fr", "lang": "fr",
"name": "Français", "name": "Français",
"path": "lang/fr.json" "path": "lang/fr.json"
},
{
"lang": "de",
"name": "Deutsch",
"path": "lang/de.json"
} }
], ],
"packs": [ "packs": [
@ -48,7 +53,7 @@
"private": false "private": false
}, },
{ {
"name": "boons", "name": "boonsflawscreatures",
"label": "Avantages/Désavantages de Créatures", "label": "Avantages/Désavantages de Créatures",
"system": "bol", "system": "bol",
"path": "./packs/boonsflawscreatures.db", "path": "./packs/boonsflawscreatures.db",
@ -149,6 +154,22 @@
"system": "bol", "system": "bol",
"private": false "private": false
}, },
{
"label": "Alchimie - Potions",
"type": "Item",
"name": "potions-alchimie",
"path": "packs/potions-alchimie.db",
"system": "bol",
"private": false
},
{
"label": "Alchimie - Objets",
"type": "Item",
"name": "objets-alchimie",
"path": "packs/objets-alchimie.db",
"system": "bol",
"private": false
},
{ {
"label": "Créatures", "label": "Créatures",
"type": "Actor", "type": "Actor",
@ -161,8 +182,8 @@
"system": [], "system": [],
"dependencies": [], "dependencies": [],
"socket": true, "socket": true,
"manifest": "https://raw.githubusercontent.com/ZigmundKreud/bol/master/system.json", "manifest": "https://www.uberwald.me/gitea/public/bol/raw/master/system.json",
"download": "https://github.com/ZigmundKreud/bol/archive/refs/heads/master.zip", "download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v1.5.2.zip",
"protected": false, "protected": false,
"background": "images/map_lemurie.webp", "background": "images/map_lemurie.webp",
"gridDistance": 1.5, "gridDistance": 1.5,

View File

@ -1,8 +1,10 @@
<form class="{{cssClass}} flexcol" autocomplete="off"> <form class="{{cssClass}} flexcol bol-actor-form" autocomplete="off">
<!--<img class="system-img" src="/systems/bol/ui/logo.webp" height="115" width="190"/> -->
<div class="wrap flexrow"> <div class="wrap flexrow">
{{!-- Sidebar --}} {{!-- Sidebar --}}
<div class="sidebar flex0"> <div class="sidebar flex0 bol-actor-sidebar">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100" <img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"
style="border:1px outset lightgray; box-shadow: 5px 5px 5px gray" /> style="border:1px outset lightgray; box-shadow: 5px 5px 5px gray" />
</div> </div>

View File

@ -2,19 +2,19 @@
<header class="sheet-header"> <header class="sheet-header">
<div class="header-field flex1"> <div class="header-field flex1">
<div class="header-field-group flexrow"> <div class="header-field-group flexrow">
<label class="header-field-label flex2">Nom</label><br/> <label class="header-field-label flex2">{{localize "BOL.ui.name"}}</label><br/>
<input class="charname flex6" name="name" type="text" value="{{actor.name}}" placeholder="Name"/> <input class="charname flex6" name="name" type="text" value="{{actor.name}}" placeholder="Name"/>
</div> </div>
{{#if (eq data.type "player")}} {{#if (eq data.type "player")}}
<div class="header-field-group flexrow"> <div class="header-field-group flexrow">
<label class="header-field-label flex2">Experience</label><br/> <label class="header-field-label flex2">{{localize "BOL.ui.xp"}}</label><br/>
<div class="header-field-group flex3"> <div class="header-field-group flex3">
<label class="header-field-label flex1" style="font-size: 1.5em; color:#606060;">Dépensée</label><br/> <label class="header-field-label flex1" style="font-size: 1.5em; color:#606060;">{{localize "BOL.ui.xpspent"}}</label><br/>
<input class="header-field-value flex1" type="text" name="data.xp.spent" value="{{numberFormat data.xp.spent decimals=0 sign=false}}" data-dtype="Number"/><br/> <input class="header-field-value flex1" type="text" name="data.xp.spent" value="{{numberFormat data.xp.spent decimals=0 sign=false}}" data-dtype="Number"/><br/>
</div> </div>
<div class="header-field-group flex3"> <div class="header-field-group flex3">
<label class="header-field-label flex1" style="font-size: 1.5em; color:#606060;">&nbsp;Totale</label><br/> <label class="header-field-label flex1" style="font-size: 1.5em; color:#606060;">&nbsp;{{localize "BOL.ui.xptotal"}}</label><br/>
<input class="header-field-value flex1" type="text" name="data.xp.total" value="{{numberFormat data.xp.total decimals=0 sign=false}}" data-dtype="Number"/><br/> <input class="header-field-value flex1" type="text" name="data.xp.total" value="{{numberFormat data.xp.total decimals=0 sign=false}}" data-dtype="Number"/><br/>
</div> </div>
</div> </div>

View File

@ -1,21 +1,21 @@
<ol class="items-list"> <ol class="items-list">
{{#if (ne data.type "creature")}} {{#if (ne data.type "creature")}}
<li class="item flexrow item-header"> <li class="item flexrow item-header">
<div class="item-name left">Taille </div> <div class="item-name left">{{localize "BOL.ui.biosize"}}</div>
<div class="item-field flex2 left"><input type="text" name="data.details.height" value="{{data.details.height}}"></div> <div class="item-field flex2 left"><input type="text" name="data.details.height" value="{{data.details.height}}"></div>
<div class="item-name right">Poids </div> <div class="item-name right">{{localize "BOL.ui.bioweight"}}</div>
<div class="item-field flex2 "><input type="text" name="data.details.weight" value="{{data.details.weight}}"></div> <div class="item-field flex2 "><input type="text" name="data.details.weight" value="{{data.details.weight}}"></div>
<div class="item-name right">Age </div> <div class="item-name right">{{localize "BOL.ui.bioage"}} </div>
<div class="item-field flex2 "><input type="text" name="data.details.age" value="{{data.details.age}}"></div> <div class="item-field flex2 "><input type="text" name="data.details.age" value="{{data.details.age}}"></div>
</li> </li>
<li class="item flexrow item-header"> <li class="item flexrow item-header">
<div class="item-name left">Cheveux </div> <div class="item-name left">{{localize "BOL.ui.biohair"}} </div>
<div class="item-field flex2 left"><input type="text" name="data.details.hait" value="{{data.details.hait}}"></div> <div class="item-field flex2 left"><input type="text" name="data.details.hait" value="{{data.details.hait}}"></div>
<div class="item-name right">Yeux </div> <div class="item-name right">{{localize "BOL.ui.bioeyes"}} </div>
<div class="item-field flex2 "><input type="text" name="data.details.eyes" value="{{data.details.eyes}}"></div> <div class="item-field flex2 "><input type="text" name="data.details.eyes" value="{{data.details.eyes}}"></div>
</li> </li>
<li class="item flexrow item-header"> <li class="item flexrow item-header">
<div class="item-name left">Signes distinctifs </div> <div class="item-name left">{{localize "BOL.ui.biosigns"}} </div>
<div class="item-field flex2 left"><input type="text" name="data.details.signs" value="{{data.details.signs}}"></div> <div class="item-field flex2 left"><input type="text" name="data.details.signs" value="{{data.details.signs}}"></div>
</li> </li>
{{else}} {{else}}
@ -35,7 +35,7 @@
</ol> </ol>
<ol class="items-list"> <ol class="items-list">
<li class="item flexrow item-header"> <li class="item flexrow item-header">
<div class="item-name flex4 left">Description</div> <div class="item-name flex4 left">{{localize "BOL.ui.biodescription"}}</div>
<div class="item-field flex1 right"></div> <div class="item-field flex1 right"></div>
</li> </li>
</ol> </ol>
@ -45,7 +45,7 @@ editable=editable}}
<ol class="items-list"> <ol class="items-list">
<li class="item flexrow item-header"> <li class="item flexrow item-header">
<div class="item-name flex4 left">Notes</div> <div class="item-name flex4 left">{{localize "BOL.ui.bionotes"}}</div>
<div class="item-field flex1 right"></div> <div class="item-field flex1 right"></div>
</li> </li>
</ol> </ol>

View File

@ -50,25 +50,29 @@
{{#if @root.isAlchemist}} {{#if @root.isAlchemist}}
<div class="resource stat flex1 flex-group-center"> <div class="resource stat flex1 flex-group-center">
<label class="stat-label">{{localize label}}</label><br/> <label class="stat-label">{{localize label}}</label><br/>
<input class="stat-value" type="text" name="data.resources.{{key}}.value" value="{{numberFormat value decimals=0 sign=false}}" data-dtype="Number"/> <input class="stat-value resources-value" type="text" name="data.resources.{{key}}.value" value="{{numberFormat value decimals=0 sign=false}}" data-dtype="Number"/>
{{#if (eq @root.data.type 'player')}} {{#if (eq @root.data.type 'player')}}
{{#if (exists bonus)}} {{#if (exists bonus)}}
<span class="flexrow"><label class="stat-max">Bonus:</label><input class="stat-max" type="text" name="data.resources.{{key}}.bonus" value="{{numberFormat bonus decimals=0 sign=false}}" data-dtype="Number"/></span> <span class="flexrow"><label class="stat-max bonus-text">Bonus</label><input class="resource-bonus resources-value" type="text" name="data.resources.{{key}}.bonus" value="{{numberFormat bonus decimals=0 sign=false}}" data-dtype="Number"/></span>
{{else}}
<span class="flexrow"><label class="stat-max resources-value">&nbsp;</label><input class="resource-bonus resources-novalue" type="text" value="" disabled></span>
{{/if}} {{/if}}
{{/if}} {{/if}}
<input class="stat-max" type="text" name="data.resources.{{key}}.max" value="{{numberFormat max decimals=0 sign=false}}" data-dtype="Number"/> <input class="resources-value" type="text" name="data.resources.{{key}}.max" value="{{numberFormat max decimals=0 sign=false}}" data-dtype="Number"/>
</div> </div>
{{/if}} {{/if}}
{{else}} {{else}}
<div class="resource stat flex1 flex-group-center"> <div class="resource stat flex1 flex-group-center">
<label class="stat-label">{{localize label}}</label><br/> <label class="stat-label">{{localize label}}</label><br/>
<input class="stat-value" type="text" name="data.resources.{{key}}.value" value="{{numberFormat value decimals=0 sign=false}}" data-dtype="Number"/> <input class="stat-value resources-value" type="text" name="data.resources.{{key}}.value" value="{{numberFormat value decimals=0 sign=false}}" data-dtype="Number"/>
{{#if (eq @root.data.type 'player')}} {{#if (eq @root.data.type 'player')}}
{{#if (exists bonus)}} {{#if (exists bonus)}}
<span class="flexrow"><label class="stat-max">Bonus:</label><input class="stat-max" type="text" name="data.resources.{{key}}.bonus" value="{{numberFormat bonus decimals=0 sign=false}}" data-dtype="Number"/></span> <span class="flexrow"><label class="stat-max bonus-text">Bonus</label><input class="resource-bonus resources-value" type="text" name="data.resources.{{key}}.bonus" value="{{numberFormat bonus decimals=0 sign=false}}" data-dtype="Number"/></span>
{{else}}
<span class="flexrow"><label class="stat-max">&nbsp;</label><input class="resource-bonus resources-novalue" type="text" value="" disabled></span>
{{/if}} {{/if}}
{{/if}} {{/if}}
<input class="stat-max" type="text" name="data.resources.{{key}}.max" value="{{numberFormat max decimals=0 sign=false}}" data-dtype="Number"/> <input class="resources-value" type="text" name="data.resources.{{key}}.max" value="{{numberFormat max decimals=0 sign=false}}" data-dtype="Number"/>
</div> </div>
{{/if}} {{/if}}
{{/each}} {{/each}}

View File

@ -5,10 +5,9 @@
<div class="flexrow"> <div class="flexrow">
{{#if state}} {{#if state}}
{{name}} active son option de combat {{foName}} pour ce round ! {{localize "BOL.chat.fightactive" name=name foName=foName}}
{{else}} {{else}}
{{name}} désactive son option de combat {{foName}} pour ce round ! {{localize "BOL.chat.fightunactive" name=name foName=foName}}
{{/if}} {{/if}}
</div> </div>

View File

@ -0,0 +1,33 @@
<div>
<img class="chat-icon" src="{{img}}" alt="{{name}}"/>
<h2 class="bad"><strong>{{story.title}}</strong></h2>
</div>
<div class="flexrow">
<br>{{story.mission}}
{{#if story.carriere}}
<br>{{story.carriere}}
{{/if}}
{{#if story.lieu}}
<br>{{story.lieu}}
{{/if}}
{{#if story.objet}}
<br>{{story.objet}}
{{/if}}
<br>{{story.motivation}}
{{#if story.rival}}
<br>{{story.rival}}
{{/if}}
{{#if story.dieu}}
<br>{{story.dieu}}
{{/if}}
{{#if story.complication}}
<br>{{story.complication}}
{{/if}}
{{#if story.retournement}}
<br>{{story.retournement}}
{{/if}}
<br>{{story.recompense}}
</div>

View File

@ -6,17 +6,17 @@
<div class="flexrow"> <div class="flexrow">
{{#if (eq hp 0)}} {{#if (eq hp 0)}}
La Vitalité de {{name}} est {{hp}} : il va s'écrouler au sol et sombrer dans l'inconscience ! {{localize "BOL.chat.vitalityzero" name=name hp=hp}}
<br>Vous pouvez dépenser 1 Point d'Héroisme pour reprendre vos esprits pendant 1 round. <br>{{localize "BOL.chat.vitalityheroism"}}
<br>Dans ce cas votre vitalité remonte à son maximum divisé par 2 (arrondi au supérieur). <br>{{localize "BOL.chat.vitalityheroismhint"}}
{{else}} {{else}}
La Vitalité de {{name}} est de {{hp}} ! Il est mourant ... {{localize "BOL.chat.vitalitydying" name=name hp=hp}}
<br>Vous pouvez cependant dépenser 1 Point d'Héroisme pour Défier la Mort (cf. page 58). <br>{{localize "BOL.chat.vitalitydyingheroism"}}
{{/if}} {{/if}}
{{#if (lt hp -5)}} {{#if (lt hp -5)}}
<br><strong>{{name}} est mort ! </strong> <br><strong>{{localize "BOL.chat.isdead" name=name}}</strong>
<br>Que son nom soit honoré sur les champs de batailles de Lémurie ! <br>{{localize "BOL.chat.epitaph"}}
{{/if}} {{/if}}
</div> </div>

View File

@ -1,11 +1,8 @@
<h4><strong>Préparation Alchimique : {{alchemy.name}}</strong></h4> <h4><strong>{{localize "BOL.chat.alchemytitle" name=alchemy.name}}</strong></h4>
<h4><strong>Points de Création Investis : {{pcCostCurrent}}</strong></h4> <h4><strong>{{localize "BOL.chat.alchemypoints" pcCostCurrent=pcCostCurrent}}</strong></h4>
{{#if isSuccess}} {{#if isSuccess}}
La préparation alchimique a été réalisée avec succès ! {{localize "BOL.chat.alchemysuccess"}}
<br>Créez l'item ou l'effet correspondant dans votre Inventaire.
<br>L'avancement dans la préparation a été remis à 0.
{{else}} {{else}}
La préparation alchimique a échouée ! {{localize "BOL.chat.alchemyfailure"}}
<br>L'avancement dans la préparation a été remis à 0.
{{/if}} {{/if}}

View File

@ -1,7 +1,7 @@
<button class="chat-damage-roll" data-damage-mode="normal-damage" data-attack-id="{{id}}">Lancer les dommages</button> <button class="chat-damage-roll" data-damage-mode="normal-damage" data-attack-id="{{id}}">{{localize "BOL.chat.rolldamage"}}</button>
{{#if isCritical}} {{#if isCritical}}
<button class="chat-damage-roll" data-damage-mode="damage-plus-6" data-attack-id="{{id}}">Lancer les dommages +6</button> <button class="chat-damage-roll" data-damage-mode="damage-plus-6" data-attack-id="{{id}}">{{localize "BOL.chat.rolldamage6"}}</button>
<button class="chat-damage-roll" data-damage-mode="damage-plus-12" data-attack-id="{{id}}">Dommages +12 (1 Pt. d'Heroisme)</button> <button class="chat-damage-roll" data-damage-mode="damage-plus-12" data-attack-id="{{id}}">{{localize "BOL.chat.rolldamage12"}}</button>
{{/if}} {{/if}}

View File

@ -1,13 +1,13 @@
<img class="chat-icon" src="{{weapon.img}}" alt="{{weapon.name}}"/> <img class="chat-icon" src="{{weapon.img}}" alt="{{weapon.name}}"/>
<h3><strong>Dommages de {{weapon.name}} : {{damageRoll.total}}</strong></h3> <h3><strong>{{localize "BOL.chat.damageresult" name=weapon.name total=damageRoll.total}}</strong></h3>
{{#if defender}} {{#if defender}}
<h3><strong>Cible : {{defender.name}}</strong></h3> <h3><strong>{{localize "BOL.chat.damagetarget" target=defender.name}}</strong></h3>
{{/if}} {{/if}}
<div class="actions-section"> <div class="actions-section">
{{#if targetId}} {{#if targetId}}
<div id="{{applyId}}"> <div id="{{applyId}}">
<button class="chat-damage-apply" data-attack-id="{{id}}">Appliquer les dommages à la cible</button> <button class="chat-damage-apply" data-attack-id="{{id}}">{{localize "BOL.chat.applydamagetotarget"}}</button>
</div> </div>
<br> <br>
{{/if}} {{/if}}

View File

@ -1,11 +1,15 @@
<div> <div>
{{#if isSuccess}} {{#if isSuccess}}
{{#if isLegendary}}
<h2 class="success critical"><i class="fas fa-check-double"></i>&nbsp;{{localize "BOL.ui.criticallegend"}}...
{{else}}
{{#if isCritical}} {{#if isCritical}}
<h2 class="success critical"><i class="fas fa-check-double"></i>&nbsp;{{localize "BOL.ui.critical"}}... <h2 class="success critical"><i class="fas fa-check-double"></i>&nbsp;{{localize "BOL.ui.critical"}}...
{{else}} {{else}}
<h2 class="success"><i class="fas fa-check"></i>&nbsp;{{localize "BOL.ui.success"}}... <h2 class="success"><i class="fas fa-check"></i>&nbsp;{{localize "BOL.ui.success"}}...
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/if}}
{{#if isFailure}} {{#if isFailure}}
{{#if isFumble}} {{#if isFumble}}
<h2 class="failure fumble"><i class="fas fa-skull-crossbones"></i>&nbsp;{{localize "BOL.ui.fumble"}}... <h2 class="failure fumble"><i class="fas fa-skull-crossbones"></i>&nbsp;{{localize "BOL.ui.fumble"}}...
@ -13,7 +17,7 @@
<h2 class="failure"><i class="fas fa-times"></i>&nbsp;{{localize "BOL.ui.failure"}}... <h2 class="failure"><i class="fas fa-times"></i>&nbsp;{{localize "BOL.ui.failure"}}...
{{/if}} {{/if}}
{{/if}} {{/if}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}"/> <img class="chat-icon" src="{{img}}" alt="{{actor.name}}"/>
</h2> </h2>
</div> </div>
@ -22,7 +26,7 @@
<div class="actions-section"> <div class="actions-section">
{{#if fightOption}} {{#if fightOption}}
<div> <div>
Option de combat : {{fightOption.name}} {{localize "BOL.chat.fightoption"}} : {{fightOption.name}}
</div> </div>
{{/if}} {{/if}}
@ -38,14 +42,14 @@
{{/if}} {{/if}}
{{#if reroll}} {{#if reroll}}
<button class="chat-button button hero-reroll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">Relancer (1 P. Heroisme)</button> <button class="chat-button button hero-reroll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">{{localize "BOL.chat.reroll"}}</button>
{{/if}} {{/if}}
{{#if (and isSuccess (not isCritical))}} {{#if (and isSuccess (not isCritical))}}
<button class="chat-button button transform-heroic-roll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">Transformer en succés Héroïque (1 P. Héroisme)</button> <button class="chat-button button transform-heroic-roll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">{{localize "BOL.chat.toheroic"}}</button>
{{/if}} {{/if}}
{{#if isRealCritical}} {{#if isRealCritical}}
<button class="chat-button button transform-legendary-roll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">Transformer en succes Légendaire (1 P. Heroisme)</button> <button class="chat-button button transform-legendary-roll" data-roll-id=="{{rollId}}" data-actor-id="{{actor.id}}">{{localize "BOL.chat.tolegend"}}</button>
{{/if}} {{/if}}
<br> <br>
</div> </div>

View File

@ -1,18 +1,18 @@
<img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/> <img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/>
{{defender.name}} va encaisser {{damageTotal}} dégats ! {{localize "BOL.chat.hurttitle" name=defender.name damageTotal=damageTotal}}
{{#if damagesIgnoresArmor}} {{#if damagesIgnoresArmor}}
<br>C'est une attaque au défaut de l'armure : vous devez encaisser SANS la protection de l'armure ! <br>{{localize "BOL.chat.armordefault"}}
{{/if}} {{/if}}
<button class="damage-handling" data-defense-mode="damage-with-armor" data-attack-id="{{attackId}}">Encaisser avec la protection de l'armure</button> <button class="damage-handling" data-defense-mode="damage-with-armor" data-attack-id="{{attackId}}">{{localize "BOL.chat.witharmor"}}</button>
<button class="damage-handling" data-defense-mode="damage-without-armor" data-attack-id="{{attackId}}">Encaisser sans la protection de l'armure</button> <button class="damage-handling" data-defense-mode="damage-without-armor" data-attack-id="{{attackId}}">{{localize "BOL.chat.withoutarmor"}}</button>
{{#if defender.data.data.resources.hero.value}} {{#if defender.data.data.resources.hero.value}}
<button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">Juste une égratignure (1 Point d'Héroisme)</button> <button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button>
{{#each defenderWeapons as |weapon idx|}} {{#each defenderWeapons as |weapon idx|}}
<button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">Parade in Extremis avec {{weapon.name}} (1 Point d'Héroisme)</button> <button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button>
{{/each}} {{/each}}
{{/if}} {{/if}}

View File

@ -1,23 +1,22 @@
<img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/> <img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/>
<h3>Dégats subis par {{defender.name}}</h3> <h3>{{localize "BOL.chat.damagesummary" name=name}}</h3>
<ul> <ul>
<li> <li>
{{#if (eq defenseMode "damage-with-armor")}} {{#if (eq defenseMode "damage-with-armor")}}
Protection de l'armure : {{armorProtect}}. {{localize "BOL.chat.protectvalue"}} : {{armorProtect}}.
{{/if}} {{/if}}
{{#if (eq defenseMode "damage-without-armor")}} {{#if (eq defenseMode "damage-without-armor")}}
Aucune protection d'armure ! {{localize "BOL.chat.noprotectvalue"}}
{{/if}} {{/if}}
{{#if (eq defenseMode "hero-reduce-damage")}} {{#if (eq defenseMode "hero-reduce-damage")}}
Protection de l'armure : {{armorProtect}}. {{localize "BOL.chat.protectvalue"}} : {{armorProtect}}.
Un point d'héroisme dépensé, pour une réduction des dommages supplémentaire de {{rollHero.total}}. {{localize "BOL.chat.heroreducedamage" total=rollHero.total}}
{{/if}} {{/if}}
{{#if (eq defenseMode "hero-in-extremis")}} {{#if (eq defenseMode "hero-in-extremis")}}
Aucun dommage encaissé, grâce à la parade in-extremis avec {{weaponHero.name}}. L'arme a été détruite pendant cette parade ! {{localize "BOL.chat.herosplintered" name=weaponHero.name}}
Un point d'héroisme a également été dépensé.
{{/if}} {{/if}}
</li> </li>
<li> <li>
Encaissement final : {{finalDamage}} dégats ! {{localize "BOL.chat.finaldamage" finalDamage=finalDamage}}
</li> </li>
</ul> </ul>

View File

@ -0,0 +1,11 @@
<img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/>
<h3>{{localize "BOL.chat.damagesummary" name=name}}</h3>
<ul>
<li>
{{#if (eq finalDamage 0)}}
{{localize "BOL.chat.nodamagesummary"}}
{{else}}
{{localize "BOL.chat.damageresume" name=name}}
{{/if}}
</li>
</ul>

View File

@ -1,4 +1,4 @@
<h4><strong>Sort : {{spell.name}}</strong></h4> <h4><strong>{{localize "BOL.chat.spell"}} : {{spell.name}}</strong></h4>
<h4><strong>Cout en Points de Pouvoir : {{ppCost}}</strong></h4> <h4><strong>{{localize "BOL.chat.spellcost"}} : {{ppCost}}</strong></h4>
<h4><strong>Points de Pouvoir restants : {{sub ppCurrent ppCost}}</strong></h4> <h4><strong>{{localize "BOL.chat.spellremaining"}} : {{remainingPP}}</strong></h4>

View File

@ -6,13 +6,13 @@
<div class="flex1 center cell"> <div class="flex1 center cell">
<select name="modRanged" id="modRanged" value="{{mod}}"> <select name="modRanged" id="modRanged" value="{{mod}}">
{{#select modRanged}} {{#select modRanged}}
<option value="1">Bout portant (+1)</option> <option value="1">{{localize "BOL.dialog.pointblank"}}</option>
<option value="0">Courte (0)</option> <option value="0">{{localize "BOL.dialog.close"}}</option>
<option value="-1">Moyenne (-1)</option> <option value="-1">{{localize "BOL.dialog.medium"}}</option>
<option value="-2">Longue (-2)</option> <option value="-2">{{localize "BOL.dialog.long"}}</option>
<option value="-4">Très longue (-4)</option> <option value="-4">{{localize "BOL.dialog.distant"}}</option>
<option value="-6">Extrême (-6)</option> <option value="-6">{{localize "BOL.dialog.extreme"}}</option>
<option value="-8">Maximale (-8)</option> <option value="-8">{{localize "BOL.dialog.utmost"}}</option>
{{/select}} {{/select}}
</select> </select>
</div> </div>
@ -44,17 +44,17 @@
<div class="flex1 center cell"> <div class="flex1 center cell">
<select name="mod" id="mod" value="{{mod}}"> <select name="mod" id="mod" value="{{mod}}">
{{#select mod}} {{#select mod}}
<option value="4">Inmanquable (+4)</option> <option value="4">{{localize "BOL.dialog.soeasy"}}</option>
<option value="2">Trés Facile (+2)</option> <option value="2">{{localize "BOL.dialog.veryeasy"}}</option>
<option value="1">Facile (+1)</option> <option value="1">{{localize "BOL.dialog.easy"}}</option>
<option value="0">Moyenne (0)</option> <option value="0">{{localize "BOL.dialog.moderate"}}</option>
<option value="-1">Ardue (-1)</option> <option value="-1">{{localize "BOL.dialog.hard"}}</option>
<option value="-2">Difficile (-2)</option> <option value="-2">{{localize "BOL.dialog.tough"}}</option>
<option value="-4">Très Difficile (-4)</option> <option value="-4">{{localize "BOL.dialog.demanding"}}</option>
<option value="-6">Impossible (-6)</option> <option value="-6">{{localize "BOL.dialog.formidable"}}</option>
<option value="-8">Héroïque (-8)</option> <option value="-8">{{localize "BOL.dialog.heroic"}}</option>
<option value="-10">Mythique (-10)</option> <option value="-10">{{localize "BOL.dialog.mythic"}}</option>
<option value="-12">Divine (-12)</option> <option value="-12">{{localize "BOL.dialog.divine"}}</option>
{{/select}} {{/select}}
</select> </select>
</div> </div>

View File

@ -15,14 +15,14 @@
<label class="property-label">{{localize "BOL.ui.difficulty"}}</label> <label class="property-label">{{localize "BOL.ui.difficulty"}}</label>
<select name="data.properties.difficulty" value="{{data.properties.difficulty}}"> <select name="data.properties.difficulty" value="{{data.properties.difficulty}}">
{{#select data.properties.difficulty}} {{#select data.properties.difficulty}}
<option value="2">Trés Facile (+2)</option> <option value="2">{{localize "BOL.dialog.veryeasy"}}</option>
<option value="1">Facile (+1)</option> <option value="1">{{localize "BOL.dialog.easy"}}</option>
<option value="0">Moyenne (0)</option> <option value="0">{{localize "BOL.dialog.moderate"}}</option>
<option value="-1">Ardue (-1)</option> <option value="-1">{{localize "BOL.dialog.hard"}}</option>
<option value="-2">Difficile (-2)</option> <option value="-2">{{localize "BOL.dialog.tough"}}</option>
<option value="-4">Très Difficile (-4)</option> <option value="-4">{{localize "BOL.dialog.demanding"}}</option>
<option value="-6">Impossible (-6)</option> <option value="-6">{{localize "BOL.dialog.formidable"}}</option>
<option value="-8">Héroïque (-8)</option> <option value="-8">{{localize "BOL.dialog.heroic"}}</option>
{{/select}} {{/select}}
</select> </select>
</div> </div>

View File

@ -15,14 +15,14 @@
<label class="property-label">{{localize "BOL.ui.difficulty"}}</label> <label class="property-label">{{localize "BOL.ui.difficulty"}}</label>
<select name="data.properties.difficulty" value="{{data.properties.difficulty}}"> <select name="data.properties.difficulty" value="{{data.properties.difficulty}}">
{{#select data.properties.difficulty}} {{#select data.properties.difficulty}}
<option value="2">Trés Facile (+2)</option> <option value="2">{{localize "BOL.dialog.veryeasy"}}</option>
<option value="1">Facile (+1)</option> <option value="1">{{localize "BOL.dialog.easy"}}</option>
<option value="0">Moyenne (0)</option> <option value="0">{{localize "BOL.dialog.moderate"}}</option>
<option value="-1">Ardue (-1)</option> <option value="-1">{{localize "BOL.dialog.hard"}}</option>
<option value="-2">Difficile (-2)</option> <option value="-2">{{localize "BOL.dialog.tough"}}</option>
<option value="-4">Très Difficile (-4)</option> <option value="-4">{{localize "BOL.dialog.demanding"}}</option>
<option value="-6">Impossible (-6)</option> <option value="-6">{{localize "BOL.dialog.formidable"}}</option>
<option value="-8">Héroïque (-8)</option> <option value="-8">{{localize "BOL.dialog.heroic"}}</option>
{{/select}} {{/select}}
</select> </select>
</div> </div>