Compare commits
22 Commits
foundryvtt
...
foundryvtt
Author | SHA1 | Date | |
---|---|---|---|
9ba6bde6e0 | |||
1ff7be02d4 | |||
bd113b6ef3 | |||
db1bf4e23a | |||
4cf52343c6 | |||
83822ade7f | |||
e79474ab8d | |||
8d5fb68182 | |||
54612628b8 | |||
3f861ed86c | |||
a15260bff7 | |||
541e2836ca | |||
73133b0abf | |||
7ceaa73233 | |||
a888502952 | |||
a1f1861172 | |||
0335ffb354 | |||
303cdece36 | |||
71b45c0cad | |||
1408122c59 | |||
7305a9c370 | |||
e427e3702b |
@ -72,6 +72,7 @@ Pour info, il existe énormément de cas particuliers dans le système de règle
|
||||
* compendium/talents -> LeRatier/Dr.Droide/Moilu/Gharazel
|
||||
* various modules and fixes -> Ashburry77
|
||||
* various modules and fixes -> Bimkiz
|
||||
* contributions au code et améliorations -> Pallando
|
||||
|
||||
## Feedback
|
||||
|
||||
|
@ -41,7 +41,7 @@ Hooks.once('init', () => {
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) {
|
||||
/* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) {
|
||||
try {
|
||||
|
||||
formula = formula.toLowerCase();
|
||||
@ -85,10 +85,10 @@ Hooks.once('init', () => {
|
||||
catch (e) {
|
||||
throw ui.notifications.error("Error: could not parse spell damage. See console for details")
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellPrayerFormula = function (type, aoe = false, formulaOverride) {
|
||||
/* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellPrayerFormula = function (type, aoe = false, formulaOverride) {
|
||||
let formula = formulaOverride || this[type]?.value
|
||||
if (Number.isNumeric(formula))
|
||||
return formula
|
||||
@ -134,7 +134,7 @@ Hooks.once('init', () => {
|
||||
|
||||
//console.log("calculateSpellAttributes -> " + formula );
|
||||
return formula.capitalize();
|
||||
}
|
||||
}*/
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
// Converters area
|
||||
@ -158,29 +158,32 @@ Hooks.once('init', () => {
|
||||
for (i = 0; i < len; i++) {
|
||||
skills_list[i] = skills_list[i].trim();
|
||||
for (let compData of validCompendiums) {
|
||||
let transl = game.babele.translate(compData.metadata.id, { name: skills_list[i], type: "skill" }, true).name;
|
||||
let translItem = game.babele.translate(compData.metadata.id, { name: skills_list[i], type: "skill" }, true)
|
||||
let transl = translItem?.name || undefined
|
||||
if (!transl) transl = skills_list[i]
|
||||
//console.log("List ...", skills_list[i]);
|
||||
//console.log("List ...", skills_list[i], compData.metadata.id, translItem);
|
||||
if (transl == skills_list[i]) {
|
||||
let res = re.exec(skills_list[i]);
|
||||
if (res) {
|
||||
//console.log("Matched/split:", res[1], res[2]);
|
||||
let subword = game.i18n.localize(res[2].trim());
|
||||
let s1 = res[1].trim() + " ()";
|
||||
let translw = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true).name;
|
||||
if (translw != s1) {
|
||||
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
|
||||
let translw = translItem?.name || undefined
|
||||
if (translw && translw != s1) {
|
||||
let res2 = re.exec(translw);
|
||||
transl = res2[1] + "(" + subword + ")";
|
||||
} else {
|
||||
s1 = res[1].trim() + " ( )";
|
||||
translw = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true).name;
|
||||
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "skill" }, true)
|
||||
translw = translItem?.name || undefined
|
||||
let res2 = re.exec(translw);
|
||||
transl = res2[1] + "(" + subword + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
skills_list[i] = transl;
|
||||
if (transl?.system)
|
||||
if (translItem?.system)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -241,26 +244,26 @@ Hooks.once('init', () => {
|
||||
let len = talents_list.length;
|
||||
let re = /(.*)\((.*)\)/i;
|
||||
for (i = 0; i < len; i++) {
|
||||
let translated = false;
|
||||
for (let compData of validCompendiums) {
|
||||
//console.log("TALENT - Parsing : ", talents_list)
|
||||
let transl = game.babele.translate(compData.metadata.id, { name: talents_list[i], type: "talent" }, true).name;
|
||||
let translItem = game.babele.translate(compData.metadata.id, { name: talents_list[i], type: "talent" }, true);
|
||||
let transl = translItem?.name || undefined
|
||||
if (!transl) transl = talents_list[i]
|
||||
if (transl == talents_list[i]) {
|
||||
let res = re.exec(talents_list[i]);
|
||||
if (res) {
|
||||
let subword = game.i18n.localize(res[2].trim());
|
||||
let s1 = res[1].trim(); // No () in talents table
|
||||
let translw = game.babele.translate(compData.metadata.id, { name: s1, type: "talent" }, true).name;
|
||||
translItem = game.babele.translate(compData.metadata.id, { name: s1, type: "talent" }, true)
|
||||
let translw = translItem?.name || undefined
|
||||
//console.log("Ssearch talent name:", compData.metadata.id, s1, translw);
|
||||
if (translw && translw != s1) {
|
||||
transl = translw + " (" + subword + ")";
|
||||
translated = true
|
||||
}
|
||||
}
|
||||
}
|
||||
talents_list[i] = transl;
|
||||
if (translated)
|
||||
if (translItem?.system)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -541,6 +544,7 @@ Hooks.once('init', () => {
|
||||
var translw = value;
|
||||
var re = /(.*) Bonus (\w*)/i;
|
||||
var res = re.exec(value);
|
||||
console.log("RES1:", res);
|
||||
var unit = "";
|
||||
if (res) { // Test "<charac> Bonus <unit>" pattern
|
||||
if (res[1]) { // We have char name, then convert it
|
||||
@ -567,7 +571,12 @@ Hooks.once('init', () => {
|
||||
if (unit == "days") unit = "jours";
|
||||
if (unit == "yard") unit = "mètre";
|
||||
if (unit == "yards") unit = "mètres";
|
||||
translw += " " + unit;
|
||||
if (unit == "Bonus") { // Another weird management
|
||||
translw = "Bonus de " + translw;
|
||||
} else {
|
||||
translw += " " + unit;
|
||||
}
|
||||
console.log("Spell duration/range/damage/target :", value, translw);
|
||||
return translw;
|
||||
}
|
||||
});
|
||||
|
@ -998,7 +998,7 @@
|
||||
{
|
||||
"id": "Informer",
|
||||
"trappings": [
|
||||
"Bâtonnet de fusain",,
|
||||
"Bâtonnet de fusain",
|
||||
"Besace contenant 2 tenues vestimentaires différentes et une Cape à capuchon"
|
||||
],
|
||||
"description": "<p>@UUID[Compendium.wfrp4e-core.journal-entries.wczCPcuHT4VQDLpL.JournalEntryPage.ssJHG82vEHHRoAUF]{Espion}<\/p>",
|
||||
|
@ -7580,7 +7580,7 @@
|
||||
"effects": {
|
||||
"label0": "Frénésie"
|
||||
},
|
||||
"id": "Frenzy",
|
||||
"id": "DrNUTPeodEgpWTnT",
|
||||
"name": "Frénésie"
|
||||
},
|
||||
{
|
||||
@ -7760,7 +7760,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>Le souffle de la créature est une arme puissante. Pendant son tour, au prix de 2 Avantages, elle peut activer son Souffle en tant qu'Attaque gratuite. Choisissez 1 cible qu'elle peut voir, située à une distance en mètres égale à son Bonus d'Endurance + 20. Tous les personnages situés à une distance en mètres égale à son Bonus de Force de cette cible sont touchés, ainsi que tous les personnages entre la créature et la cible.</p>\n<p>Effectuez un Test opposé de <strong>CT/Esquive</strong> contre toutes les cibles affectées (un lancer pour chaque cible). Toutes les cibles qui échouent subissent un montant de Dégâts d'Arme égal à son <em>Indice</em>.</p>\n<p>De plus, si le trait indique l'un des <em>Types</em> suivants entre parenthèses, appliquez également les règles correspondantes :</p><ul><li><strong>Froid :</strong> Les cibles gagnent l'État @Condition[Assommé] pour chaque tranche de 5 Blessures subies (minimum 1);</li><li><strong>Corrosif :</strong> Toutes les Armures et Armes portées par les cibles subissent 1 Dégât;</li><li><strong>Feu :</strong> Toutes les Blessures infligées ignorent les PA. Les cibles gagnent l'Etat @Condition[En flammes]{Enflammé};</li><li><strong>Électricité :</strong> Toutes les Blessures infligées ignorent les PA. Les cibles gagnent l'État @Condition[Assommé];</li><li><strong>Poison :</strong> Toutes les Blessures infligées ignorent les PA. Les cibles gagnent l'Etat @Condition[Empoisonné];</li><li><strong>Fumée :</strong> La zone se remplit de fumée, bloquant les Lignes de vue pendant un nombre de Rounds égal au Bonus d'Endurance de la créature.</li></ul></p>\n<p>La créature est immunisée à votre propre Souffle. Il s'agit d'une Attaque Magique.</p>",
|
||||
"id": "Breath",
|
||||
"id": "uqGxFOEqeurwkAO3",
|
||||
"name": "Souffle"
|
||||
},
|
||||
{
|
||||
@ -7866,7 +7866,7 @@
|
||||
},
|
||||
{
|
||||
"description": "Le sang de la créature est corrosif. Chaque fois qu'elle subit des Blessures dont le sang éclabousse, tous ceux qui sont <em>Engagés</em> avec elle reçoivent ldl0 Points de Blessure modifiés par le Bonus d'Endurance et les PA, avec un minimum de 1.",
|
||||
"id": "Corrosive Blood",
|
||||
"id": "M5QSWOYt2Rbv2yxW",
|
||||
"name": "Sang corrosif",
|
||||
"effects": [
|
||||
{
|
||||
@ -7908,7 +7908,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>La créature peut voir dans l'obscurité comme en plein jour.</p>",
|
||||
"id": "Dark Vision",
|
||||
"id": "JQa5DLnTs2SEzRrc",
|
||||
"name": "Infravision"
|
||||
},
|
||||
{
|
||||
@ -7923,7 +7923,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>La créature perturbe ou désoriente ses ennemis : peut-être qu’elle dégage un musc soporifique ou une odeur nauséabonde, ou peut-être que son apparence est horrifiante ou étrange. Toute personne se trouvant à un nombre de mètres égal à son Bonus d’Endurance obtient une pénalité de -20 à tous ses Tests. Les créatures touchées ne peuvent subir cette pénalité qu’une seule fois, peu importe le nombre d’ennemis Perturbants.</p>",
|
||||
"id": "Distracting",
|
||||
"id": "MVI0lXcg6vvtooAF",
|
||||
"name": "Perturbant",
|
||||
"effects": [
|
||||
{
|
||||
@ -7992,12 +7992,12 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>Quand la créature se Déplace, elle peut voler jusqu’à <em>Indice</em> mètres. Elle ignore alors tous les terrains, obstacles et personnages qui s’interposent. À la fin de son Mouvement, elle décide si elle atterrit ou si elle continue de voler. Elle peut utiliser ce Mouvement pour Charger.<p>\n</p>Si elle commence son tour en volant, elle doit choisir le Vol pour son Mouvement. Si elle ne peut pas voler, le MJ décide à quelle distance elle tombe.<p>\n<p>Lorsqu’elle est une cible en vol, il faut mesurer la distance horizontale normalement, puis augmenter la distance de 1. Ainsi, une Longue Distance devient une Distance Extrême, et une créature volante à une Distance Extrême ne peut pas être touchée.</p>\n<p>Quand elle vole, elle subit une pénalité de -20 à toutes les tentatives de combat à distance, alors qu’elle virevolte dans le ciel.</p>",
|
||||
"id": "Flight",
|
||||
"id": "EO05HX7jql0g605A",
|
||||
"name": "Vol"
|
||||
},
|
||||
{
|
||||
"description": "<p style=\"text-align: justify:\">La créature peut, par le biais d'un Test de Force Mentale, se mettre dans un état psychologique dans lequel elle va se surmotiver, mordre son bouclier, etc. Sur un succès, elle entre en <em>Frénésie</em>. </p>\n<p style=\"text-align: justify:\">Tant qu'elle est en <em>Frénésie</em>, elle est immunisée à tous les autres Traits Psychologiques, et sous aucun prétexte elle ne fuira, ni ne battra en retraite. À l'inverse, elle doit se déplacer à son maximum en direction de l'ennemi le plus proche dans sa Ligne de Vue pour l'attaquer. La seule Action possible est un Test de <strong>Capacité de Combat</strong> ou un Test d'<strong>Athlétisme</strong> pour atteindre son ennemi le plus rapidement possible. De plus, elle peut effectuer un Test de <strong>Capacité de Combat</strong> gratuit chaque round car elle se lance à corps perdu dans son attaque. Enfin, elle gagne un Bonus de Force de + 1 grâce à sa férocité.\n<p style=\"text-align: justify:\"> Elle reste en <em>Frénésie</em> jusqu'à ce que tous ses ennemis dans sa Ligne de Vue soient neutralisés ou qu'elle gagne l'État <em><a class='condition-chat'>Assommé</a></em> ou <em><a class='condition-chat'>Inconscient</a></em>. Dès que sa <em>Frénésie</em> s'achève, elle gagne l'État <em><a class='condition-chat'>Extenué</a></em>.</p>",
|
||||
"id": "Frenzy",
|
||||
"id": "yRhhOlt18COq4e1q",
|
||||
"name": "Frénésie",
|
||||
"effects": [
|
||||
{
|
||||
@ -8056,7 +8056,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>La créature peut encaisser plus de Dégâts que la plupart des autres. Augmentez ses Points de Blessure d'un nombre égal à son Bonus d'Endurance (appliqué avant tout modificateur de Taille).</p>",
|
||||
"id": "Hardy",
|
||||
"id": "HbrwGhUl0ZXz4kLA",
|
||||
"name": "Endurant",
|
||||
"effects": [
|
||||
{
|
||||
@ -8083,7 +8083,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p style=\"text-align: justify:\">La créature hait profondément la Cible, qui représente en général un groupe de personnes ou de créatures, comme les « hochlanders », les « pieuvres des tourbières » ou les « esclavagistes ». Elle n'interagit jamais avec des personnes qu'elle hait à ce point. Lorsqu'elle rencontre ceux qui vous provoquent la <em>Haine</em>, elle doit effectuer un Test de Psychologie. Sur un échec, elle ressent de la <em>Haine</em>. À la fin de chaque round qui suivra, elle pourra tenter un autre Test de Psychologie afin de mettre fin à son État de <em>Haine</em>. Si elle ne le fait pas, les effets de la <em>Haine</em> se dissiperont d'eux-mêmes lorsque tous les membres du groupe concerné dans sa Ligne de Vue seront morts ou auront disparu, ou qu'elle gagne l'État @Condition[Inconscient]. Tant qu'elle ressent de la <em>Haine</em>, elle doit faire tout ce qui est en son pouvoir pour détruire le groupe haï, et ce, le plus rapidement et de manière la plus violente possible. Elle gagne + 1 DR à tous ses Tests de Combat effectués contre le groupe en question et est immunisée à @Compendium[wfrp4e-core.items.Ib2YQYChktDFN93y]{Peur} et @Compendium[wfrp4e-core.items.I0yPc4PH5erWJLmu]{Intimidation} (mais pas @UUID[Compendium.wfrp4e-core.items.meMkLEwdJIDLxM0B]{Terreur}) causés par ceux de ce groupe.</p>",
|
||||
"id": "Hatred",
|
||||
"id": "aE3pyW20Orvdjzj0",
|
||||
"name": "Haine"
|
||||
},
|
||||
{
|
||||
@ -8172,7 +8172,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>La Magie n’affecte pas la créature autant que les autres. Le DR de tous les Sorts l'affectant est réduit du nombre indiqué. Ainsi, Résistance à la Magie 2 réduit le DR de 2.</p>",
|
||||
"id": "Magic Resistance",
|
||||
"id": "yrkI7ATjqLPDTFmZ",
|
||||
"name": "Résistance à la Magie",
|
||||
"effects": [
|
||||
{
|
||||
@ -8219,7 +8219,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>La créature possède le Talent Vision nocturne. Elle peut voir parfaitement dans les ténèbres naturelles. En présumant qu'il y ait une faible source de lumière (telle que la lumière des étoiles, le clair de lune, la bioluminescence), elle peut voir clairement jusqu'à 20 mètres par Niveau de Vision nocturne. De plus, elle peut étendre la distance d'illumination effective de toutes les sources de lumière de 20 mètres par niveau de Vision nocturne.</p>",
|
||||
"id": "Night Vision",
|
||||
"id": "FmHDbCOy3pH8yKhm",
|
||||
"name": "Vision Nocturne"
|
||||
},
|
||||
{
|
||||
@ -8259,7 +8259,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>La créature est capable de guérir à une vitesse extraordinaire, et même de faire repousser ses membres amputés.<p></p>Au début de chaque round, s'il reste plus de 0 Point de Blessure à la créature, elle régénère 1d10 Points de Blessure. Si elle est à 0 Point de Blessure, lancez 1d10. Sur un résultat de 8+, elle régénère 1 seul Point de Blessure. Sur un résultat de 10, elle régénère également une Blessure Critique, et ne souffre plus des pénalités et États associés.<p></p>Les Blessures et Blessures Critiques infligées par le Feu ne peuvent pas être régénérées, et doivent être notées séparément.</p>",
|
||||
"id": "Regenerate",
|
||||
"id": "SfUUdOGjdYpr3KSR",
|
||||
"name": "Régénération",
|
||||
"effects": [
|
||||
{
|
||||
@ -8536,7 +8536,7 @@
|
||||
"transfer": true
|
||||
}
|
||||
],
|
||||
"id": "Tracker",
|
||||
"id": "ClOlztW6hH8rslbp",
|
||||
"name": "Pisteur"
|
||||
},
|
||||
{
|
||||
@ -8620,7 +8620,7 @@
|
||||
},
|
||||
{
|
||||
"description": "<p>Parce qu'elles sont magiques, bénéficient d'un talisman particulier ou sont simplement chanceuses, certaines créatures semblent éviter les coups. Lancer 1d10 après chaque coup reçu. En cas de résultat supérieur ou égal à <em>Indice</em>, le coup est ignoré même s’il s’agit d’un Critique.</p>",
|
||||
"id": "Ward",
|
||||
"id": "Bvd2aZ0gQUXHfCTh",
|
||||
"name": "Protection"
|
||||
},
|
||||
{
|
||||
@ -9404,7 +9404,7 @@
|
||||
{
|
||||
"description": "<p>Vous avez voué votre douleur au service de votre Dieu. Chaque jour, vous devez passer une demi-cloche (une demi-heure) à prier en continuant à vous infliger un nombre de Blessures égal à votre Niveau de Flagellant. Jusqu’à votre prochain repos, si vous possédez le Talent @Compendium[wfrp4e-core.items.hXcfygzujgyMN1uI], vous pouvez entrer en <em>Frénésie</em> immédiatement sans effectuer de Test.<p>Le Talent @Compendium[wfrp4e-core.items.hXcfygzujgyMN1uI] est ajouté à la liste des Talents de n’importe laquelle de vos Carrière. Si vous ne réussissez pas à vous flageller un jour donné, ou si vous permettez à votre chair meurtrie de guérir, vous ne pouvez dépenser aucune Résilience et aucune Détermination jusqu’à une nouvelle flagellation. </p>",
|
||||
"effects": [],
|
||||
"id": "Flagellant",
|
||||
"id": "Gs10qhA4CDmZyb1g",
|
||||
"name": "Flagellant",
|
||||
"tests": "Tout Test pour résister aux Puissances de la Ruine"
|
||||
},
|
||||
@ -9449,7 +9449,7 @@
|
||||
"tests": ""
|
||||
},
|
||||
{
|
||||
"description": "<p>Vous pouvez entrer en @Compendium[wfrp4e-corepsychologies.DrNUTPeodEgpWTnT].</p>",
|
||||
"description": "<p>Vous pouvez entrer en @Compendium[wfrp4e-core.items.DrNUTPeodEgpWTnT].</p>",
|
||||
"effects": [
|
||||
{
|
||||
"_id": "y1pfxqA1jLh5Ywca",
|
||||
@ -10992,7 +10992,7 @@
|
||||
{
|
||||
"description": "<p>Vous êtes doué pour repérer et utiliser des pièges. Vous pouvez effectuer un Test de Perception pour en repérer automatiquement, sans avoir à prévenir le MJ de votre intention ; le MJ peut préférer effectuer ces Tests secrètement, à votre place.</p>",
|
||||
"effects": [],
|
||||
"id": "Trapper",
|
||||
"id": "a7v422EZcOUUC20X",
|
||||
"name": "Trappeur",
|
||||
"tests": "Tests de Perception pour repérer des pièges, Piégeage"
|
||||
},
|
||||
@ -26240,4 +26240,4 @@
|
||||
"name": "Zélote"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
23
compendium/wfrp4e-starter-set.tables.json
Normal file
23
compendium/wfrp4e-starter-set.tables.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"label": "Tables (Starter Set)",
|
||||
"mapping": {
|
||||
"results": {
|
||||
"path": "results",
|
||||
"converter": "resultConverter"
|
||||
}
|
||||
},
|
||||
"entries": {
|
||||
"3m4LPj58xoNju80B": {
|
||||
"name": "Blessures Critiques - Tête (Starter Set)"
|
||||
},
|
||||
"BlDLji1LeqHOVj8r": {
|
||||
"name": "Blessures Critiques - Jambe (Starter Set)"
|
||||
},
|
||||
"yYfGtudjckO3bubF": {
|
||||
"name": "Blessures Critiques - Bras (Starter Set)"
|
||||
},
|
||||
"yvzv7xxQuxX7N16b": {
|
||||
"name": "Blessures Critiques - Corps (Starter Set)"
|
||||
}
|
||||
}
|
||||
}
|
23
compendium/wfrp4e-up-in-arms.tables.json
Normal file
23
compendium/wfrp4e-up-in-arms.tables.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"label": "Tables (Up In Arms)",
|
||||
"mapping": {
|
||||
"results": {
|
||||
"path": "results",
|
||||
"converter": "resultConverter"
|
||||
}
|
||||
},
|
||||
"entries": {
|
||||
"Head Critical Wounds (Up In Arms)": {
|
||||
"name": "Head Critical Wounds (Up In Arms)"
|
||||
},
|
||||
"Leg Critical Wounds (Up In Arms)": {
|
||||
"name": "Leg Critical Wounds (Up In Arms)"
|
||||
},
|
||||
"Arm Critical Wounds (Up In Arms)": {
|
||||
"name": "Arm Critical Wounds (Up In Arms)"
|
||||
},
|
||||
"Body Critical Wounds (Up In Arms)": {
|
||||
"name": "Body Critical Wounds (Up In Arms)"
|
||||
}
|
||||
}
|
||||
}
|
1791
compendium/wfrp4e-wom.items.json
Normal file
1791
compendium/wfrp4e-wom.items.json
Normal file
File diff suppressed because one or more lines are too long
11
module.json
11
module.json
@ -8,7 +8,7 @@
|
||||
}
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||
"version": "7.0.13",
|
||||
"version": "7.0.21",
|
||||
"esmodules": [
|
||||
"babele-register.js",
|
||||
"addon-register.js",
|
||||
@ -111,14 +111,15 @@
|
||||
"aides-de-jeu-fr",
|
||||
"dons-de-rhya",
|
||||
"plats-dauberges"
|
||||
]
|
||||
],
|
||||
"folders": []
|
||||
}
|
||||
],
|
||||
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/raw/v10/module.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-7.0.13.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-7.0.21.zip",
|
||||
"id": "wh4-fr-translation",
|
||||
"compatibility": {
|
||||
"minimum": "10",
|
||||
"minimum": "11",
|
||||
"verified": "11"
|
||||
},
|
||||
"relationships": {
|
||||
@ -137,4 +138,4 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -176,6 +176,22 @@ export class WH4FRPatchConfig {
|
||||
game.wfrp4e.config.species["welf"] = "Elfe Sylvain";
|
||||
}
|
||||
|
||||
if (game.wfrp4e.config.charastericticsBonus) {
|
||||
game.wfrp4e.config.charastericticsBonus =
|
||||
{
|
||||
"ws": "Bonus de Capacité de Combat",
|
||||
"bs": "Bonus de Capacité de Tir",
|
||||
"s": "Bonus de Force",
|
||||
"t": "Bonus d'Endurance",
|
||||
"i": "Bonus d'Initiative",
|
||||
"ag": "Bonus d'Agilité",
|
||||
"dex": "Bonus de Dexterité",
|
||||
"int": "Bonus d'Intelligence",
|
||||
"wp": "Bonus de Force Mentale",
|
||||
"fel": "Bonus de Sociabilité"
|
||||
}
|
||||
}
|
||||
|
||||
if (game.wfrp4e.config.classTrappings) {
|
||||
for(const c of Object.keys(game.wfrp4e.config.classTrappings)) {
|
||||
game.wfrp4e.config.classTrappings[game.i18n.localize(c)] = game.wfrp4e.config.classTrappings[c];
|
||||
|
@ -52,13 +52,13 @@ import "./xregexp-all.js";
|
||||
const us_carac = 'm\\s+ws\\s+bs\\s+s\\s+t\\s+i\\s+agi?\\s+dex\\s+int\\s+\\wp\\s+fel\\s+w';
|
||||
const fr_carac = 'm\\s+cc\\s+ct\\s+f\\s+e\\s+i\\s+agi?\\s+dex\\s+int\\s+fm\\s+soc\\s+b';
|
||||
const carac_val = '(?<m>[0-9\\-]+)\\s+(?<ws>[0-9\\-]+)\\s+(?<bs>[0-9\\-]+)\\s+(?<s>[0-9\\-]+)\\s+(?<t>[0-9\\-]+)\\s+(?<i>[0-9\\-]+)\\s+(?<ag>[0-9\\-]+)\\s+(?<dex>[0-9\\-]+)\\s+(?<int>[0-9\\-]+)\\s+(?<wp>[0-9\\-]+)\\s+(?<fel>[0-9\\-]+)\\s+(?<w>[0-9\\-\*]+)';
|
||||
const name_val = '(?<name>[a-zA-Z\\s\\-,]*)[\\s\\r\\na-zA-Z]*(?<tiers>.*|[\\(\\)a-z0-9]+)';
|
||||
const name_val = '(?<name>[a-zA-Z\\s\\-,\']*)[\\s\\r\\na-zA-Z]*(?<tiers>.*|[\\(\\)a-z0-9]+)';
|
||||
let sectionDataFR = [
|
||||
{ name: "trait", toFind: "Traits\\s*:", secondParse: '(?<name>[a-zöàéè\\s]*)[\\s\\+]*(?<value>.*|[\\+0-9]+)', index: -1 },
|
||||
{ name: "skill", toFind: "Compétences\\s*:", secondParse: '(?<name>[a-zàéè\\s\\(\\)]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-zöàéè\\-\\(\\)\\s\\/\'’]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-zöàéè\\-\\!\\(\\)\\s\\/\'’]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zöàéè\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "trapping", toFind: "Equipement\\s*:", secondParse: '(?<name>[a-zöàéè0-9\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "trapping", toFind: "Equipement\\s*:", secondParse: '(?<name>[a-zöàéè0-9\\s(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "spell", toFind: "Sorts\\s*\\([a-z\\s]*\\)*:", secondParse: '(?<name>[a-zöàéè\\s]*)', index: -1 },
|
||||
{ name: "spellpetty", toFind: "Spells\\s*\\(Magie Mineure\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
|
||||
{ name: "spellarcane", toFind: "Spells\\s*\\(Arcane[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
|
||||
@ -67,13 +67,17 @@ let sectionDataFR = [
|
||||
let sectionDataUS = [
|
||||
{ name: "trait", toFind: "Traits\\s*:", secondParse: '(?<name>[a-z\\s]*)[\\s\\+]*(?<value>.*|[\\+0-9]+)', index: -1 },
|
||||
{ name: "skill", toFind: "Skills\\s*:", secondParse: '(?<name>[a-z\\s\\(\\)]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-z\\-\\s\\(\\)\\/\'’]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "talent", toFind: "Talents\\s*:", secondParse: '(?<name>[a-z\\-\\s\\!\\(\\)\\/\'’]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "mutation", toFind: "Mutations\\s*:", secondParse: '(?<name>[a-zö\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-zö0-9\\s]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "trapping", toFind: "Trappings\\s*:", secondParse: '(?<name>[a-zö0-9\\s\\(\\)\\-]*)[\\s\\+]*(?<value>.*|[0-9]+)', index: -1 },
|
||||
{ name: "spellpetty", toFind: "Spells\\s*\\(Petty\\s*[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
|
||||
{ name: "spellarcane", toFind: "Spells\\s*\\(Arcane\\s*[a-z\\s]*\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 },
|
||||
{ name: "spelllore", toFind: "Spells\\s*\\(Lore\\s*of\\s*(?<lore>[a-z\\s]*)\\)*:", secondParse: '(?<name>[a-zö\\-\\s]*)', index: -1 }
|
||||
]
|
||||
let moneyUS = [ {name:" gold crown", key: "gc"}, {name: " gc", key: "gc"},
|
||||
{name:" silver shilling", key:"ss"}, {name:" ss", key: "ss"}, {name:"/-", key: "ss"}, {name:" brass penn", key: "bp"}, {name:" bp", key: "bp"} ]
|
||||
let moneyFR = [ {name:" couronnes d", key: "gc"}, {name: " co", key: "gc"},
|
||||
{name:" pistoles ", key:"ss"}, {name:" pa", key: "ss"}, {name:"/-", key: "ss"}, {name:" sous de cuivre", key: "bp"}, {name:" sc", key: "bp"} ]
|
||||
let regSep = XRegExp('\\s*,\\s*', 'gi'); // Term separator, with auto trim
|
||||
let regLine1 = XRegExp('[\\r\\n\\.]', 'gi'); // Term separator, with auto trim
|
||||
let regName = XRegExp(name_val, 'gi');
|
||||
@ -178,7 +182,7 @@ async function __findSkill(skillName, value = undefined) {
|
||||
|
||||
/************************************************************************************/
|
||||
async function __findTalent(talentName) {
|
||||
let parseStr = '(?<name>[a-z\\s\\/\']*)[\\s\\+]*(?<specialized>[a-z\\s\\(\\)\'’]*)';
|
||||
let parseStr = '(?<name>[a-z\\s\\!\\/\']*)[\\s\\+]*(?<specialized>[a-z\\s\\(\\)\'’]*)';
|
||||
let talentSplit = XRegExp.exec(talentName, XRegExp(parseStr, 'gi'));
|
||||
let toSearch = talentSplit.name.toLowerCase().trim();
|
||||
|
||||
@ -246,16 +250,19 @@ export default async function statParserFR(statString, type = "npc") {
|
||||
|
||||
// Patch wront/strange carac value before processing
|
||||
statString = statString.replace(/ –/g, " 0")
|
||||
let moneys = { gc: 0, ss: 0, bp: 0 }
|
||||
|
||||
let statNameReg = us_carac
|
||||
let sectionData = sectionDataUS
|
||||
let sectionData = duplicate(sectionDataUS)
|
||||
let skillGrouping = __SkillGroupsUS
|
||||
let moneyLang = moneyUS
|
||||
// Detect French stat block
|
||||
if (statString.includes('CC') && statString.includes('CT') && statString.includes('FM')) {
|
||||
//ui.notifications.warn("Le parsing de stablock en Français n'est pas encore prêt")
|
||||
statNameReg = fr_carac
|
||||
sectionData = sectionDataFR
|
||||
sectionData = duplicate(sectionDataFR)
|
||||
skillGrouping = __SkillGroupsFR
|
||||
moneyLang = moneyFR
|
||||
}
|
||||
|
||||
let reg1 = XRegExp(statNameReg, 'gi')
|
||||
@ -368,7 +375,7 @@ export default async function statParserFR(statString, type = "npc") {
|
||||
} else {
|
||||
itemFound.system.specification.value = game.i18n.localize(value)
|
||||
}
|
||||
itemFound.name += "(" + value + ")"
|
||||
//itemFound.name += "(" + value + ")"
|
||||
}
|
||||
if (!itemFound)
|
||||
ui.notifications.error("Trait non trouvé, à ajouter manuellement : " + name, { permanent: true })
|
||||
@ -405,6 +412,7 @@ export default async function statParserFR(statString, type = "npc") {
|
||||
if (!itemFound) {
|
||||
ui.notifications.error("Talent non trouvé, à ajouter manuellement : " + name, { permanent: true })
|
||||
}
|
||||
|
||||
} else if (def.name == 'trapping') {
|
||||
itemFound = await __findItem(name, "trapping");
|
||||
if (!itemFound) {
|
||||
@ -415,7 +423,7 @@ export default async function statParserFR(statString, type = "npc") {
|
||||
}
|
||||
if (!itemFound && name) {
|
||||
if (name.toLowerCase().includes("armor") || name.toLowerCase().includes("armure") || name.toLowerCase().includes("armour")) {
|
||||
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "armor", system: game.system.model.Item.armor })
|
||||
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "armour", system: game.system.model.Item.armor })
|
||||
} else if (name.toLowerCase().includes("weapon") || name.toLowerCase().includes("arme")) {
|
||||
itemFound = new ItemWfrp4e({ img: "systems/wfrp4e/icons/blank.png", name: name, type: "weapon", system: game.system.model.Item.weapon })
|
||||
} else {
|
||||
@ -427,13 +435,22 @@ export default async function statParserFR(statString, type = "npc") {
|
||||
}
|
||||
itemFound = itemFound.toObject()
|
||||
}
|
||||
// Searching money stuff
|
||||
for (let mondeyDef of moneyLang) {
|
||||
if (name.toLowerCase().includes(mondeyDef.name)) {
|
||||
let regMoney = XRegExp("(\\d+)\\s*" + mondeyDef.name.trim(), 'gi')
|
||||
let moneyParsed = XRegExp.exec(name.toLowerCase(), regMoney)
|
||||
console.log("Parsing money", name, moneyParsed)
|
||||
moneys[mondeyDef.key] += (moneyParsed && moneyParsed[1]) ? Number(moneyParsed[1]) : 0
|
||||
}
|
||||
}
|
||||
} else if (def.name.includes('spell')) {
|
||||
console.log("Found spells section!!!!", name, def, def.lore || "NO LORE")
|
||||
// Lore management, firs pass
|
||||
if ( def.lore ) {
|
||||
if (def.lore) {
|
||||
let newName = name + " (" + def.lore + ")"
|
||||
itemFound = await __findItem(newName, "spell");
|
||||
console.log("Trying to find ", newName, itemFound)
|
||||
//console.log("Trying to find ", newName, itemFound)
|
||||
}
|
||||
if (!itemFound) { // If not found with Lore, try without the lore
|
||||
itemFound = await __findItem(name, "spell");
|
||||
@ -455,14 +472,39 @@ export default async function statParserFR(statString, type = "npc") {
|
||||
}
|
||||
let moneyItems = await game.wfrp4e.utility.allMoneyItems() || [];
|
||||
moneyItems = moneyItems.sort((a, b) => (a.system.coinValue.value > b.system.coinValue.value) ? -1 : 1);
|
||||
moneyItems.forEach(m => m.system.quantity.value = 0)
|
||||
for (let m of moneyItems) {
|
||||
m.system.quantity.value = 0
|
||||
if (m.system.coinValue.value == 1) {
|
||||
m.system.quantity.value += moneys.bp
|
||||
}
|
||||
if (m.system.coinValue.value == 240) {
|
||||
m.system.quantity.value += moneys.gc
|
||||
}
|
||||
if (m.system.coinValue.value == 12) {
|
||||
m.system.quantity.value += moneys.ss
|
||||
}
|
||||
}
|
||||
globalItemList = globalItemList.concat(moneyItems);
|
||||
//console.log("My liste :", globalItemList);
|
||||
//DEBUG : console.log("My liste :", moneyItems, moneys);
|
||||
let name = pnjName;
|
||||
|
||||
let effects = globalItemList.reduce((total, globItem) => total.concat(globItem.effects), [])
|
||||
effects = effects.filter(e => !!e)
|
||||
effects = effects.filter(e => e.transfer)
|
||||
for (let e of effects) {
|
||||
for (let c of e.changes) {
|
||||
// Charac management stuff
|
||||
if (c.key?.includes("characteristics")) {
|
||||
let cKey = c.key.split(".")[2]
|
||||
model.characteristics[cKey].initial -= Number(c.value)
|
||||
}
|
||||
// Move management
|
||||
if (c.key?.includes("move")) {
|
||||
model.details.move.value -= Number(c.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
//DEBUG : console.log("EFFECTS", effects)
|
||||
|
||||
return { name, type, data: model, items: globalItemList, effects }
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
MANIFEST-000280
|
||||
MANIFEST-000342
|
||||
|
@ -1,8 +1,11 @@
|
||||
2023/10/01-21:10:38.974988 7f58077fe6c0 Recovering log #278
|
||||
2023/10/01-21:10:38.985805 7f58077fe6c0 Delete type=3 #276
|
||||
2023/10/01-21:10:38.985946 7f58077fe6c0 Delete type=0 #278
|
||||
2023/10/01-21:13:13.383766 7f58067fc6c0 Level-0 table #283: started
|
||||
2023/10/01-21:13:13.383822 7f58067fc6c0 Level-0 table #283: 0 bytes OK
|
||||
2023/10/01-21:13:13.390830 7f58067fc6c0 Delete type=0 #281
|
||||
2023/10/01-21:13:13.405858 7f58067fc6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:13:13.405935 7f58067fc6c0 Manual compaction at level-1 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.276682 7f4c327fc6c0 Delete type=3 #1
|
||||
2023/11/12-16:30:07.848922 7f4c30ff96c0 Level-0 table #345: started
|
||||
2023/11/12-16:30:07.848963 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||
2023/11/12-16:30:07.855601 7f4c30ff96c0 Delete type=0 #343
|
||||
2023/11/12-16:30:07.882513 7f4c30ff96c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at '!journal!suuYN87Al1ZZWtQQ' @ 5 : 1
|
||||
2023/11/12-16:30:07.882529 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||
2023/11/12-16:30:07.887126 7f4c30ff96c0 Generated table #346@0: 5 keys, 49338 bytes
|
||||
2023/11/12-16:30:07.887163 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 49338 bytes
|
||||
2023/11/12-16:30:07.894400 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2023/11/12-16:30:07.894598 7f4c30ff96c0 Delete type=2 #5
|
||||
2023/11/12-16:30:07.919620 7f4c30ff96c0 Manual compaction at level-0 from '!journal!suuYN87Al1ZZWtQQ' @ 5 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,4 @@
|
||||
2023/10/01-21:07:46.030847 7f5a9cdff6c0 Recovering log #274
|
||||
2023/10/01-21:07:46.042191 7f5a9cdff6c0 Delete type=3 #272
|
||||
2023/10/01-21:07:46.042382 7f5a9cdff6c0 Delete type=0 #274
|
||||
2023/10/01-21:08:33.272248 7f58067fc6c0 Level-0 table #279: started
|
||||
2023/10/01-21:08:33.272308 7f58067fc6c0 Level-0 table #279: 0 bytes OK
|
||||
2023/10/01-21:08:33.312079 7f58067fc6c0 Delete type=0 #277
|
||||
2023/10/01-21:08:33.348444 7f58067fc6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:08:33.348574 7f58067fc6c0 Manual compaction at level-1 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.253740 7f4c32ffd6c0 Log #340: 0 ops saved to Table #341 OK
|
||||
2023/11/12-16:28:45.253935 7f4c32ffd6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/aides-de-jeu-fr/000340.log: OK
|
||||
2023/11/12-16:28:45.255237 7f4c32ffd6c0 Table #5: 5 entries OK
|
||||
2023/11/12-16:28:45.259457 7f4c32ffd6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/aides-de-jeu-fr; recovered 1 files; 49338 bytes. Some data may have been lost. ****
|
||||
|
Binary file not shown.
BIN
packs/aides-de-jeu-fr/MANIFEST-000342
Normal file
BIN
packs/aides-de-jeu-fr/MANIFEST-000342
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000281
|
||||
MANIFEST-000343
|
||||
|
@ -1,8 +1,11 @@
|
||||
2023/10/01-21:10:38.988544 7f5a9cdff6c0 Recovering log #279
|
||||
2023/10/01-21:10:38.998072 7f5a9cdff6c0 Delete type=3 #277
|
||||
2023/10/01-21:10:38.998191 7f5a9cdff6c0 Delete type=0 #279
|
||||
2023/10/01-21:13:13.376689 7f58067fc6c0 Level-0 table #284: started
|
||||
2023/10/01-21:13:13.376746 7f58067fc6c0 Level-0 table #284: 0 bytes OK
|
||||
2023/10/01-21:13:13.383338 7f58067fc6c0 Delete type=0 #282
|
||||
2023/10/01-21:13:13.383578 7f58067fc6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:13:13.383644 7f58067fc6c0 Manual compaction at level-1 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.304949 7f4c31ffb6c0 Delete type=3 #1
|
||||
2023/11/12-16:30:07.855778 7f4c30ff96c0 Level-0 table #346: started
|
||||
2023/11/12-16:30:07.855832 7f4c30ff96c0 Level-0 table #346: 0 bytes OK
|
||||
2023/11/12-16:30:07.862356 7f4c30ff96c0 Delete type=0 #344
|
||||
2023/11/12-16:30:07.894853 7f4c30ff96c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at '!items!ylFhk7mGZOnAJTUT' @ 103 : 1
|
||||
2023/11/12-16:30:07.894875 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||
2023/11/12-16:30:07.900627 7f4c30ff96c0 Generated table #347@0: 89 keys, 96484 bytes
|
||||
2023/11/12-16:30:07.900658 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 96484 bytes
|
||||
2023/11/12-16:30:07.906863 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2023/11/12-16:30:07.907101 7f4c30ff96c0 Delete type=2 #272
|
||||
2023/11/12-16:30:07.919636 7f4c30ff96c0 Manual compaction at level-0 from '!items!ylFhk7mGZOnAJTUT' @ 103 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,4 @@
|
||||
2023/10/01-21:07:46.045590 7f58077fe6c0 Recovering log #275
|
||||
2023/10/01-21:07:46.055651 7f58077fe6c0 Delete type=3 #273
|
||||
2023/10/01-21:07:46.055767 7f58077fe6c0 Delete type=0 #275
|
||||
2023/10/01-21:08:33.312327 7f58067fc6c0 Level-0 table #280: started
|
||||
2023/10/01-21:08:33.312390 7f58067fc6c0 Level-0 table #280: 0 bytes OK
|
||||
2023/10/01-21:08:33.348111 7f58067fc6c0 Delete type=0 #278
|
||||
2023/10/01-21:08:33.348472 7f58067fc6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:08:33.348602 7f58067fc6c0 Manual compaction at level-1 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.280834 7f4c327fc6c0 Log #341: 0 ops saved to Table #342 OK
|
||||
2023/11/12-16:28:45.281059 7f4c327fc6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/antidotes-and-remedes/000341.log: OK
|
||||
2023/11/12-16:28:45.282622 7f4c327fc6c0 Table #272: 89 entries OK
|
||||
2023/11/12-16:28:45.286508 7f4c327fc6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/antidotes-and-remedes; recovered 1 files; 96484 bytes. Some data may have been lost. ****
|
||||
|
Binary file not shown.
BIN
packs/antidotes-and-remedes/MANIFEST-000343
Normal file
BIN
packs/antidotes-and-remedes/MANIFEST-000343
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000280
|
||||
MANIFEST-000342
|
||||
|
@ -1,8 +1,11 @@
|
||||
2023/10/01-21:10:39.014833 7f5806ffd6c0 Recovering log #278
|
||||
2023/10/01-21:10:39.025762 7f5806ffd6c0 Delete type=3 #276
|
||||
2023/10/01-21:10:39.025839 7f5806ffd6c0 Delete type=0 #278
|
||||
2023/10/01-21:13:13.397373 7f58067fc6c0 Level-0 table #283: started
|
||||
2023/10/01-21:13:13.397569 7f58067fc6c0 Level-0 table #283: 0 bytes OK
|
||||
2023/10/01-21:13:13.405604 7f58067fc6c0 Delete type=0 #281
|
||||
2023/10/01-21:13:13.405915 7f58067fc6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:13:13.405972 7f58067fc6c0 Manual compaction at level-1 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.354171 7f4c32ffd6c0 Delete type=3 #1
|
||||
2023/11/12-16:30:07.919758 7f4c30ff96c0 Level-0 table #345: started
|
||||
2023/11/12-16:30:07.919806 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||
2023/11/12-16:30:07.926377 7f4c30ff96c0 Delete type=0 #343
|
||||
2023/11/12-16:30:07.926603 7f4c30ff96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at '!journal!cZtNgayIw2QFhC9u' @ 1 : 1
|
||||
2023/11/12-16:30:07.926620 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||
2023/11/12-16:30:07.931147 7f4c30ff96c0 Generated table #346@0: 1 keys, 18667 bytes
|
||||
2023/11/12-16:30:07.931182 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 18667 bytes
|
||||
2023/11/12-16:30:07.937420 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2023/11/12-16:30:07.937601 7f4c30ff96c0 Delete type=2 #5
|
||||
2023/11/12-16:30:07.937809 7f4c30ff96c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 1 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,4 @@
|
||||
2023/10/01-21:07:46.074362 7f5806ffd6c0 Recovering log #274
|
||||
2023/10/01-21:07:46.084818 7f5806ffd6c0 Delete type=3 #272
|
||||
2023/10/01-21:07:46.084936 7f5806ffd6c0 Delete type=0 #274
|
||||
2023/10/01-21:08:33.348740 7f58067fc6c0 Level-0 table #279: started
|
||||
2023/10/01-21:08:33.348805 7f58067fc6c0 Level-0 table #279: 0 bytes OK
|
||||
2023/10/01-21:08:33.384650 7f58067fc6c0 Delete type=0 #277
|
||||
2023/10/01-21:08:33.384857 7f58067fc6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:08:33.384892 7f58067fc6c0 Manual compaction at level-1 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.334424 7f4c317fa6c0 Log #340: 0 ops saved to Table #341 OK
|
||||
2023/11/12-16:28:45.334594 7f4c317fa6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/apothicarium/000340.log: OK
|
||||
2023/11/12-16:28:45.335422 7f4c317fa6c0 Table #5: 1 entries OK
|
||||
2023/11/12-16:28:45.338815 7f4c317fa6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/apothicarium; recovered 1 files; 18667 bytes. Some data may have been lost. ****
|
||||
|
Binary file not shown.
BIN
packs/apothicarium/MANIFEST-000342
Normal file
BIN
packs/apothicarium/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/dons-de-rhya/000344.log
Normal file
0
packs/dons-de-rhya/000344.log
Normal file
@ -1 +1 @@
|
||||
MANIFEST-000280
|
||||
MANIFEST-000342
|
||||
|
@ -1,8 +1,11 @@
|
||||
2023/10/01-21:10:38.961794 7f5806ffd6c0 Recovering log #278
|
||||
2023/10/01-21:10:38.972606 7f5806ffd6c0 Delete type=3 #276
|
||||
2023/10/01-21:10:38.972680 7f5806ffd6c0 Delete type=0 #278
|
||||
2023/10/01-21:13:13.368981 7f58067fc6c0 Level-0 table #283: started
|
||||
2023/10/01-21:13:13.369042 7f58067fc6c0 Level-0 table #283: 0 bytes OK
|
||||
2023/10/01-21:13:13.376475 7f58067fc6c0 Delete type=0 #281
|
||||
2023/10/01-21:13:13.383557 7f58067fc6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:13:13.383626 7f58067fc6c0 Manual compaction at level-1 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.249196 7f4c32ffd6c0 Delete type=3 #1
|
||||
2023/11/12-16:30:07.842308 7f4c30ff96c0 Level-0 table #345: started
|
||||
2023/11/12-16:30:07.842386 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||
2023/11/12-16:30:07.848757 7f4c30ff96c0 Delete type=0 #343
|
||||
2023/11/12-16:30:07.869748 7f4c30ff96c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at '!journal!yzw9I0r3hCK7PJnz' @ 23 : 1
|
||||
2023/11/12-16:30:07.870212 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||
2023/11/12-16:30:07.875695 7f4c30ff96c0 Generated table #346@0: 23 keys, 53814 bytes
|
||||
2023/11/12-16:30:07.875744 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 53814 bytes
|
||||
2023/11/12-16:30:07.882149 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2023/11/12-16:30:07.882321 7f4c30ff96c0 Delete type=2 #5
|
||||
2023/11/12-16:30:07.919602 7f4c30ff96c0 Manual compaction at level-0 from '!journal!yzw9I0r3hCK7PJnz' @ 23 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,4 @@
|
||||
2023/10/01-21:07:46.015537 7f5806ffd6c0 Recovering log #274
|
||||
2023/10/01-21:07:46.026924 7f5806ffd6c0 Delete type=3 #272
|
||||
2023/10/01-21:07:46.027062 7f5806ffd6c0 Delete type=0 #274
|
||||
2023/10/01-21:08:33.176716 7f58067fc6c0 Level-0 table #279: started
|
||||
2023/10/01-21:08:33.176770 7f58067fc6c0 Level-0 table #279: 0 bytes OK
|
||||
2023/10/01-21:08:33.236417 7f58067fc6c0 Delete type=0 #277
|
||||
2023/10/01-21:08:33.348379 7f58067fc6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:08:33.348519 7f58067fc6c0 Manual compaction at level-1 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.216086 7f4c317fa6c0 Log #340: 0 ops saved to Table #341 OK
|
||||
2023/11/12-16:28:45.216263 7f4c317fa6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/dons-de-rhya/000340.log: OK
|
||||
2023/11/12-16:28:45.217493 7f4c317fa6c0 Table #5: 23 entries OK
|
||||
2023/11/12-16:28:45.221094 7f4c317fa6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/dons-de-rhya; recovered 1 files; 53814 bytes. Some data may have been lost. ****
|
||||
|
Binary file not shown.
BIN
packs/dons-de-rhya/MANIFEST-000342
Normal file
BIN
packs/dons-de-rhya/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/dons-de-rhya/lost/000340.log
Normal file
0
packs/dons-de-rhya/lost/000340.log
Normal file
0
packs/plats-dauberges/000344.log
Normal file
0
packs/plats-dauberges/000344.log
Normal file
@ -1 +1 @@
|
||||
MANIFEST-000280
|
||||
MANIFEST-000342
|
||||
|
@ -1,8 +1,11 @@
|
||||
2023/10/01-21:10:38.946582 7f5807fff6c0 Recovering log #278
|
||||
2023/10/01-21:10:38.956394 7f5807fff6c0 Delete type=3 #276
|
||||
2023/10/01-21:10:38.956460 7f5807fff6c0 Delete type=0 #278
|
||||
2023/10/01-21:13:13.362008 7f58067fc6c0 Level-0 table #283: started
|
||||
2023/10/01-21:13:13.362069 7f58067fc6c0 Level-0 table #283: 0 bytes OK
|
||||
2023/10/01-21:13:13.368748 7f58067fc6c0 Delete type=0 #281
|
||||
2023/10/01-21:13:13.383538 7f58067fc6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:13:13.383607 7f58067fc6c0 Manual compaction at level-1 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.211861 7f4c317fa6c0 Delete type=3 #1
|
||||
2023/11/12-16:30:07.824306 7f4c30ff96c0 Level-0 table #345: started
|
||||
2023/11/12-16:30:07.824373 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||
2023/11/12-16:30:07.830848 7f4c30ff96c0 Delete type=0 #343
|
||||
2023/11/12-16:30:07.831080 7f4c30ff96c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 227 : 1
|
||||
2023/11/12-16:30:07.831097 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||
2023/11/12-16:30:07.835289 7f4c30ff96c0 Generated table #346@0: 234 keys, 19449 bytes
|
||||
2023/11/12-16:30:07.835330 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 19449 bytes
|
||||
2023/11/12-16:30:07.841639 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2023/11/12-16:30:07.841825 7f4c30ff96c0 Delete type=2 #5
|
||||
2023/11/12-16:30:07.842195 7f4c30ff96c0 Manual compaction at level-0 from '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 227 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,4 @@
|
||||
2023/10/01-21:07:46.000243 7f5807fff6c0 Recovering log #274
|
||||
2023/10/01-21:07:46.010997 7f5807fff6c0 Delete type=3 #272
|
||||
2023/10/01-21:07:46.011125 7f5807fff6c0 Delete type=0 #274
|
||||
2023/10/01-21:08:33.133970 7f58067fc6c0 Level-0 table #279: started
|
||||
2023/10/01-21:08:33.134046 7f58067fc6c0 Level-0 table #279: 0 bytes OK
|
||||
2023/10/01-21:08:33.176099 7f58067fc6c0 Delete type=0 #277
|
||||
2023/10/01-21:08:33.176487 7f58067fc6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:08:33.176588 7f58067fc6c0 Manual compaction at level-1 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.038839 7f4c31ffb6c0 Log #340: 0 ops saved to Table #341 OK
|
||||
2023/11/12-16:28:45.039026 7f4c31ffb6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/plats-dauberges/000340.log: OK
|
||||
2023/11/12-16:28:45.039821 7f4c31ffb6c0 Table #5: 234 entries OK
|
||||
2023/11/12-16:28:45.045897 7f4c31ffb6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/plats-dauberges; recovered 1 files; 19449 bytes. Some data may have been lost. ****
|
||||
|
Binary file not shown.
BIN
packs/plats-dauberges/MANIFEST-000342
Normal file
BIN
packs/plats-dauberges/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/plats-dauberges/lost/000340.log
Normal file
0
packs/plats-dauberges/lost/000340.log
Normal file
0
packs/tables-des-traductions/000344.log
Normal file
0
packs/tables-des-traductions/000344.log
Normal file
@ -1 +1 @@
|
||||
MANIFEST-000280
|
||||
MANIFEST-000342
|
||||
|
@ -1,8 +1,11 @@
|
||||
2023/10/01-21:10:39.001525 7f5807fff6c0 Recovering log #278
|
||||
2023/10/01-21:10:39.012047 7f5807fff6c0 Delete type=3 #276
|
||||
2023/10/01-21:10:39.012110 7f5807fff6c0 Delete type=0 #278
|
||||
2023/10/01-21:13:13.391014 7f58067fc6c0 Level-0 table #283: started
|
||||
2023/10/01-21:13:13.391059 7f58067fc6c0 Level-0 table #283: 0 bytes OK
|
||||
2023/10/01-21:13:13.397210 7f58067fc6c0 Delete type=0 #281
|
||||
2023/10/01-21:13:13.405890 7f58067fc6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:13:13.405954 7f58067fc6c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.330471 7f4c317fa6c0 Delete type=3 #1
|
||||
2023/11/12-16:30:07.862607 7f4c30ff96c0 Level-0 table #345: started
|
||||
2023/11/12-16:30:07.862667 7f4c30ff96c0 Level-0 table #345: 0 bytes OK
|
||||
2023/11/12-16:30:07.869562 7f4c30ff96c0 Delete type=0 #343
|
||||
2023/11/12-16:30:07.907474 7f4c30ff96c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at '!journal!yfZxl4I7XAuUF6r3' @ 12 : 1
|
||||
2023/11/12-16:30:07.907497 7f4c30ff96c0 Compacting 1@0 + 0@1 files
|
||||
2023/11/12-16:30:07.913133 7f4c30ff96c0 Generated table #346@0: 12 keys, 64134 bytes
|
||||
2023/11/12-16:30:07.913182 7f4c30ff96c0 Compacted 1@0 + 0@1 files => 64134 bytes
|
||||
2023/11/12-16:30:07.919296 7f4c30ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2023/11/12-16:30:07.919431 7f4c30ff96c0 Delete type=2 #5
|
||||
2023/11/12-16:30:07.919655 7f4c30ff96c0 Manual compaction at level-0 from '!journal!yfZxl4I7XAuUF6r3' @ 12 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,4 @@
|
||||
2023/10/01-21:07:46.059107 7f5807fff6c0 Recovering log #274
|
||||
2023/10/01-21:07:46.070473 7f5807fff6c0 Delete type=3 #272
|
||||
2023/10/01-21:07:46.070701 7f5807fff6c0 Delete type=0 #274
|
||||
2023/10/01-21:08:33.236588 7f58067fc6c0 Level-0 table #279: started
|
||||
2023/10/01-21:08:33.236629 7f58067fc6c0 Level-0 table #279: 0 bytes OK
|
||||
2023/10/01-21:08:33.272000 7f58067fc6c0 Delete type=0 #277
|
||||
2023/10/01-21:08:33.348414 7f58067fc6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end)
|
||||
2023/10/01-21:08:33.348547 7f58067fc6c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end)
|
||||
2023/11/12-16:28:45.310132 7f4c31ffb6c0 Log #340: 0 ops saved to Table #341 OK
|
||||
2023/11/12-16:28:45.310346 7f4c31ffb6c0 Archiving /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/tables-des-traductions/000340.log: OK
|
||||
2023/11/12-16:28:45.311453 7f4c31ffb6c0 Table #5: 12 entries OK
|
||||
2023/11/12-16:28:45.314949 7f4c31ffb6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v11/Data/modules/wh4-fr-translation/packs/tables-des-traductions; recovered 1 files; 64134 bytes. Some data may have been lost. ****
|
||||
|
Binary file not shown.
BIN
packs/tables-des-traductions/MANIFEST-000342
Normal file
BIN
packs/tables-des-traductions/MANIFEST-000342
Normal file
Binary file not shown.
0
packs/tables-des-traductions/lost/000340.log
Normal file
0
packs/tables-des-traductions/lost/000340.log
Normal file
@ -1,298 +0,0 @@
|
||||
|
||||
SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS
|
||||
|
||||
Commands marked with * may be preceded by a number, _N.
|
||||
Notes in parentheses indicate the behavior if _N is given.
|
||||
A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
|
||||
|
||||
h H Display this help.
|
||||
q :q Q :Q ZZ Exit.
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
MMOOVVIINNGG
|
||||
|
||||
e ^E j ^N CR * Forward one line (or _N lines).
|
||||
y ^Y k ^K ^P * Backward one line (or _N lines).
|
||||
f ^F ^V SPACE * Forward one window (or _N lines).
|
||||
b ^B ESC-v * Backward one window (or _N lines).
|
||||
z * Forward one window (and set window to _N).
|
||||
w * Backward one window (and set window to _N).
|
||||
ESC-SPACE * Forward one window, but don't stop at end-of-file.
|
||||
d ^D * Forward one half-window (and set half-window to _N).
|
||||
u ^U * Backward one half-window (and set half-window to _N).
|
||||
ESC-) RightArrow * Right one half screen width (or _N positions).
|
||||
ESC-( LeftArrow * Left one half screen width (or _N positions).
|
||||
ESC-} ^RightArrow Right to last column displayed.
|
||||
ESC-{ ^LeftArrow Left to first column.
|
||||
F Forward forever; like "tail -f".
|
||||
ESC-F Like F but stop when search pattern is found.
|
||||
r ^R ^L Repaint screen.
|
||||
R Repaint screen, discarding buffered input.
|
||||
---------------------------------------------------
|
||||
Default "window" is the screen height.
|
||||
Default "half-window" is half of the screen height.
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
SSEEAARRCCHHIINNGG
|
||||
|
||||
/_p_a_t_t_e_r_n * Search forward for (_N-th) matching line.
|
||||
?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line.
|
||||
n * Repeat previous search (for _N-th occurrence).
|
||||
N * Repeat previous search in reverse direction.
|
||||
ESC-n * Repeat previous search, spanning files.
|
||||
ESC-N * Repeat previous search, reverse dir. & spanning files.
|
||||
ESC-u Undo (toggle) search highlighting.
|
||||
ESC-U Clear search highlighting.
|
||||
&_p_a_t_t_e_r_n * Display only matching lines.
|
||||
---------------------------------------------------
|
||||
A search pattern may begin with one or more of:
|
||||
^N or ! Search for NON-matching lines.
|
||||
^E or * Search multiple files (pass thru END OF FILE).
|
||||
^F or @ Start search at FIRST file (for /) or last file (for ?).
|
||||
^K Highlight matches, but don't move (KEEP position).
|
||||
^R Don't use REGULAR EXPRESSIONS.
|
||||
^S _n Search for match in _n-th parenthesized subpattern.
|
||||
^W WRAP search if no match found.
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
JJUUMMPPIINNGG
|
||||
|
||||
g < ESC-< * Go to first line in file (or line _N).
|
||||
G > ESC-> * Go to last line in file (or line _N).
|
||||
p % * Go to beginning of file (or _N percent into file).
|
||||
t * Go to the (_N-th) next tag.
|
||||
T * Go to the (_N-th) previous tag.
|
||||
{ ( [ * Find close bracket } ) ].
|
||||
} ) ] * Find open bracket { ( [.
|
||||
ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>.
|
||||
ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_>.
|
||||
---------------------------------------------------
|
||||
Each "find close bracket" command goes forward to the close bracket
|
||||
matching the (_N-th) open bracket in the top line.
|
||||
Each "find open bracket" command goes backward to the open bracket
|
||||
matching the (_N-th) close bracket in the bottom line.
|
||||
|
||||
m_<_l_e_t_t_e_r_> Mark the current top line with <letter>.
|
||||
M_<_l_e_t_t_e_r_> Mark the current bottom line with <letter>.
|
||||
'_<_l_e_t_t_e_r_> Go to a previously marked position.
|
||||
'' Go to the previous position.
|
||||
^X^X Same as '.
|
||||
ESC-m_<_l_e_t_t_e_r_> Clear a mark.
|
||||
---------------------------------------------------
|
||||
A mark is any upper-case or lower-case letter.
|
||||
Certain marks are predefined:
|
||||
^ means beginning of the file
|
||||
$ means end of the file
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
CCHHAANNGGIINNGG FFIILLEESS
|
||||
|
||||
:e [_f_i_l_e] Examine a new file.
|
||||
^X^V Same as :e.
|
||||
:n * Examine the (_N-th) next file from the command line.
|
||||
:p * Examine the (_N-th) previous file from the command line.
|
||||
:x * Examine the first (or _N-th) file from the command line.
|
||||
:d Delete the current file from the command line list.
|
||||
= ^G :f Print current file name.
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS
|
||||
|
||||
-_<_f_l_a_g_> Toggle a command line option [see OPTIONS below].
|
||||
--_<_n_a_m_e_> Toggle a command line option, by name.
|
||||
__<_f_l_a_g_> Display the setting of a command line option.
|
||||
___<_n_a_m_e_> Display the setting of an option, by name.
|
||||
+_c_m_d Execute the less cmd each time a new file is examined.
|
||||
|
||||
!_c_o_m_m_a_n_d Execute the shell command with $LESSSHELL.
|
||||
#_c_o_m_m_a_n_d Execute the shell command, expanded like a prompt.
|
||||
|XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command.
|
||||
s _f_i_l_e Save input to a file.
|
||||
v Edit the current file with $VISUAL or $EDITOR.
|
||||
V Print version number of "less".
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
OOPPTTIIOONNSS
|
||||
|
||||
Most options may be changed either on the command line,
|
||||
or from within less by using the - or -- command.
|
||||
Options may be given in one of two forms: either a single
|
||||
character preceded by a -, or a name preceded by --.
|
||||
|
||||
-? ........ --help
|
||||
Display help (from command line).
|
||||
-a ........ --search-skip-screen
|
||||
Search skips current screen.
|
||||
-A ........ --SEARCH-SKIP-SCREEN
|
||||
Search starts just after target line.
|
||||
-b [_N] .... --buffers=[_N]
|
||||
Number of buffers.
|
||||
-B ........ --auto-buffers
|
||||
Don't automatically allocate buffers for pipes.
|
||||
-c ........ --clear-screen
|
||||
Repaint by clearing rather than scrolling.
|
||||
-d ........ --dumb
|
||||
Dumb terminal.
|
||||
-D xx_c_o_l_o_r . --color=xx_c_o_l_o_r
|
||||
Set screen colors.
|
||||
-e -E .... --quit-at-eof --QUIT-AT-EOF
|
||||
Quit at end of file.
|
||||
-f ........ --force
|
||||
Force open non-regular files.
|
||||
-F ........ --quit-if-one-screen
|
||||
Quit if entire file fits on first screen.
|
||||
-g ........ --hilite-search
|
||||
Highlight only last match for searches.
|
||||
-G ........ --HILITE-SEARCH
|
||||
Don't highlight any matches for searches.
|
||||
-h [_N] .... --max-back-scroll=[_N]
|
||||
Backward scroll limit.
|
||||
-i ........ --ignore-case
|
||||
Ignore case in searches that do not contain uppercase.
|
||||
-I ........ --IGNORE-CASE
|
||||
Ignore case in all searches.
|
||||
-j [_N] .... --jump-target=[_N]
|
||||
Screen position of target lines.
|
||||
-J ........ --status-column
|
||||
Display a status column at left edge of screen.
|
||||
-k [_f_i_l_e] . --lesskey-file=[_f_i_l_e]
|
||||
Use a lesskey file.
|
||||
-K ........ --quit-on-intr
|
||||
Exit less in response to ctrl-C.
|
||||
-L ........ --no-lessopen
|
||||
Ignore the LESSOPEN environment variable.
|
||||
-m -M .... --long-prompt --LONG-PROMPT
|
||||
Set prompt style.
|
||||
-n ......... --line-numbers
|
||||
Suppress line numbers in prompts and messages.
|
||||
-N ......... --LINE-NUMBERS
|
||||
Display line number at start of each line.
|
||||
-o [_f_i_l_e] . --log-file=[_f_i_l_e]
|
||||
Copy to log file (standard input only).
|
||||
-O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e]
|
||||
Copy to log file (unconditionally overwrite).
|
||||
-p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n]
|
||||
Start at pattern (from command line).
|
||||
-P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t]
|
||||
Define new prompt.
|
||||
-q -Q .... --quiet --QUIET --silent --SILENT
|
||||
Quiet the terminal bell.
|
||||
-r -R .... --raw-control-chars --RAW-CONTROL-CHARS
|
||||
Output "raw" control characters.
|
||||
-s ........ --squeeze-blank-lines
|
||||
Squeeze multiple blank lines.
|
||||
-S ........ --chop-long-lines
|
||||
Chop (truncate) long lines rather than wrapping.
|
||||
-t [_t_a_g] .. --tag=[_t_a_g]
|
||||
Find a tag.
|
||||
-T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e]
|
||||
Use an alternate tags file.
|
||||
-u -U .... --underline-special --UNDERLINE-SPECIAL
|
||||
Change handling of backspaces, tabs and carriage returns.
|
||||
-V ........ --version
|
||||
Display the version number of "less".
|
||||
-w ........ --hilite-unread
|
||||
Highlight first new line after forward-screen.
|
||||
-W ........ --HILITE-UNREAD
|
||||
Highlight first new line after any forward movement.
|
||||
-x [_N[,...]] --tabs=[_N[,...]]
|
||||
Set tab stops.
|
||||
-X ........ --no-init
|
||||
Don't use termcap init/deinit strings.
|
||||
-y [_N] .... --max-forw-scroll=[_N]
|
||||
Forward scroll limit.
|
||||
-z [_N] .... --window=[_N]
|
||||
Set size of window.
|
||||
-" [_c[_c]] . --quotes=[_c[_c]]
|
||||
Set shell quote characters.
|
||||
-~ ........ --tilde
|
||||
Don't display tildes after end of file.
|
||||
-# [_N] .... --shift=[_N]
|
||||
Set horizontal scroll amount (0 = one half screen width).
|
||||
--exit-follow-on-close
|
||||
Exit F command on a pipe when writer closes pipe.
|
||||
--file-size
|
||||
Automatically determine the size of the input file.
|
||||
--follow-name
|
||||
The F command changes files if the input file is renamed.
|
||||
--header=[_N[,_M]]
|
||||
Use N lines and M columns to display file headers.
|
||||
--incsearch
|
||||
Search file as each pattern character is typed in.
|
||||
--intr=_C
|
||||
Use _C instead of ^X to interrupt a read.
|
||||
--line-num-width=_N
|
||||
Set the width of the -N line number field to _N characters.
|
||||
--modelines=_N
|
||||
Read _N lines from the input file and look for vim modelines.
|
||||
--mouse
|
||||
Enable mouse input.
|
||||
--no-keypad
|
||||
Don't send termcap keypad init/deinit strings.
|
||||
--no-histdups
|
||||
Remove duplicates from command history.
|
||||
--no-number-headers
|
||||
Don't give line numbers to header lines.
|
||||
--no-search-headers
|
||||
Don't search in header lines or columns.
|
||||
--no-vbell
|
||||
Disable the terminal's visual bell.
|
||||
--redraw-on-quit
|
||||
Redraw final screen when quitting.
|
||||
--rscroll=_C
|
||||
Set the character used to mark truncated lines.
|
||||
--save-marks
|
||||
Retain marks across invocations of less.
|
||||
--search-options=[EFKNRW-]
|
||||
Set default options for every search.
|
||||
--show-preproc-errors
|
||||
Display a message if preprocessor exits with an error status.
|
||||
--proc-backspace
|
||||
Process backspaces for bold/underline.
|
||||
--SPECIAL-BACKSPACE
|
||||
Treat backspaces as control characters.
|
||||
--proc-return
|
||||
Delete carriage returns before newline.
|
||||
--SPECIAL-RETURN
|
||||
Treat carriage returns as control characters.
|
||||
--proc-tab
|
||||
Expand tabs to spaces.
|
||||
--SPECIAL-TAB
|
||||
Treat tabs as control characters.
|
||||
--status-col-width=_N
|
||||
Set the width of the -J status column to _N characters.
|
||||
--status-line
|
||||
Highlight or color the entire line containing a mark.
|
||||
--use-backslash
|
||||
Subsequent options use backslash as escape char.
|
||||
--use-color
|
||||
Enables colored text.
|
||||
--wheel-lines=_N
|
||||
Each click of the mouse wheel moves _N lines.
|
||||
--wordwrap
|
||||
Wrap lines at spaces.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
LLIINNEE EEDDIITTIINNGG
|
||||
|
||||
These keys can be used to edit text being entered
|
||||
on the "command line" at the bottom of the screen.
|
||||
|
||||
RightArrow ..................... ESC-l ... Move cursor right one character.
|
||||
LeftArrow ...................... ESC-h ... Move cursor left one character.
|
||||
ctrl-RightArrow ESC-RightArrow ESC-w ... Move cursor right one word.
|
||||
ctrl-LeftArrow ESC-LeftArrow ESC-b ... Move cursor left one word.
|
||||
HOME ........................... ESC-0 ... Move cursor to start of line.
|
||||
END ............................ ESC-$ ... Move cursor to end of line.
|
||||
BACKSPACE ................................ Delete char to left of cursor.
|
||||
DELETE ......................... ESC-x ... Delete char under cursor.
|
||||
ctrl-BACKSPACE ESC-BACKSPACE ........... Delete word to left of cursor.
|
||||
ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor.
|
||||
ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line.
|
||||
UpArrow ........................ ESC-k ... Retrieve previous command line.
|
||||
DownArrow ...................... ESC-j ... Retrieve next command line.
|
||||
TAB ...................................... Complete filename & cycle.
|
||||
SHIFT-TAB ...................... ESC-TAB Complete filename & reverse cycle.
|
||||
ctrl-L ................................... Complete filename, list all.
|
Reference in New Issue
Block a user