Compare commits
13 Commits
foundryvtt
...
v10
Author | SHA1 | Date | |
---|---|---|---|
f7fec1fba2 | |||
f6202d70e0 | |||
43312b86db | |||
a01fec2367 | |||
c0e42f7f59 | |||
f0a0b055ea | |||
c51877f945 | |||
e7a56e15a2 | |||
35ae4012f6 | |||
3cec04ae8c | |||
b7bb897a46 | |||
4ebaad012b | |||
8a5c62fafd |
@ -9382,6 +9382,10 @@
|
||||
},
|
||||
"label": "Items (Livre de Base)",
|
||||
"mapping": {
|
||||
"effects": {
|
||||
"converter": "process_effects",
|
||||
"path": "effects"
|
||||
},
|
||||
"careergroup": {
|
||||
"converter": "career_careergroup",
|
||||
"path": "system.careergroup.value"
|
||||
|
@ -4,7 +4,7 @@
|
||||
"Career Tables": "Table des Carrières",
|
||||
"Character Creation": "Création de Personnage",
|
||||
"Core Rulebook": "Livre de Base",
|
||||
"Corruption & Mutation Tables": "ables de Corruption & Mutations",
|
||||
"Corruption & Mutation Tables": "Tables de Corruption & Mutations",
|
||||
"Critical Hit Tables": "Tables de Critiques",
|
||||
"GM Booklet": "Livret du MJ",
|
||||
"Hit Location": "Table de Localisation",
|
||||
|
89
fr.json
89
fr.json
@ -367,6 +367,8 @@
|
||||
"ITEM.Ritual":"Rituel",
|
||||
"ITEM.Standard":"Standard",
|
||||
"ITEM.TestSkill":"Test de compétence",
|
||||
"ITEM.Roles":"Roles",
|
||||
"ITEM.VitalRoles":"Roles vitaux",
|
||||
|
||||
"BleedCrit":"L'hémorrage de <b>{name}</b> coagule un peu : 1 Hémorragie peut-être retirée.",
|
||||
"BleedFail":"<b>{name}</b> meur de sa perte de sang !",
|
||||
@ -601,6 +603,9 @@
|
||||
"Law": "Loi",
|
||||
"SinReduced":"Péché réduit de 1",
|
||||
"TargetingCancelled":"Ciblage échoué: Un Test opposé est déja en cours",
|
||||
"Halved":"Divisé par 2",
|
||||
"SkillsOr":"ou",
|
||||
"TestPlaceholder":"e.g. Compétence d'arme, Projectiles (Poudre Noire), Résistance",
|
||||
|
||||
"Career Selector":"Selecteur de Carrière",
|
||||
"Completed":"Completé",
|
||||
@ -844,6 +849,11 @@
|
||||
"CHARGEN.Message.ReplacedTalent":"<p>Remplacement de <b>{talent}</b> par <b>{replacement}</b>!</p>",
|
||||
"CHARGEN.SkillsTalents.ReplaceTalentDialog.Content":"<p>Voulez vous remplacer {talent} avec {replacement}?</p>",
|
||||
"CHARGEN.SkillsTalents.ReplaceTalentDialog.Title":"Remplacer un Talent",
|
||||
"CHARGEN.Message.Income":"<p><b>Revenu:</b> {quantity} {name}</p>",
|
||||
"CHARGEN.SkillsTalents.Traits":"Traits",
|
||||
"CHARGEN.Species.ExtraSpeciesOptions":"Options spéciales des espèces",
|
||||
"CHARGEN.Species.RandomTalents":"{num} Talents aléatoires",
|
||||
"CHARGEN.Trappings.RollIncome":"Lancer pour le Revenu",
|
||||
|
||||
"CAREER.DifferentClass": "Entrée dans une nouvelle Classe",
|
||||
"CAREER.LeaveIncomplete": "Départ d'une carrière incomplète",
|
||||
@ -1089,6 +1099,7 @@
|
||||
"CHAT.VehicleTBTooltipMultiply":"{number} × BE",
|
||||
"CHAT.VehicleTBTooltipSubtract":"BE - {number}",
|
||||
"CHAT.Vital":"Vital",
|
||||
"CHAT.DiseaseRollError":"Une erreur s'est produite lors du jet d'incubation ou de durée de la maladie.",
|
||||
|
||||
"Error.SpeciesSkills" : "Impossible d'ajouter des compétences pour les races",
|
||||
"Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races",
|
||||
@ -1756,6 +1767,22 @@
|
||||
"NAME.Arcane":"Arcane",
|
||||
"NAME.Lingering":"Persistant",
|
||||
"NAME.FearExtendedTest":"Test étendu de Peur",
|
||||
"NAME.ArcaneMagic":"Magie des Arcanes",
|
||||
"NAME.ChaosMagic":"Magie du Chaos",
|
||||
"NAME.Distract":"Distraire",
|
||||
"NAME.Ethereal":"Ethéré",
|
||||
"NAME.FastHands":"Mains agiles",
|
||||
"NAME.Frenzy":"Frénésie",
|
||||
"NAME.FuriousAssault":"Assaut féroce",
|
||||
"NAME.MagicResistanceTalent":"Résistance à la Magie",
|
||||
"NAME.MagicResistanceTrait":"Résistance à la Magie",
|
||||
"NAME.MagicalSense":"Sens de la Magie",
|
||||
"NAME.PettyMagic":"Magie Mineure",
|
||||
"NAME.Schemer":"Intrigant",
|
||||
"NAME.SeaLegsTalent":"Pied marin",
|
||||
"NAME.SecondSight":"Seconde vue",
|
||||
"NAME.WarWizard":"Mage de guerre",
|
||||
"NAME.Witch":"Sorcier!",
|
||||
|
||||
"SPEC.Tiny" : "Minuscule",
|
||||
"SPEC.Little" : "Très petite",
|
||||
@ -1765,6 +1792,19 @@
|
||||
"SPEC.Enormous" : "Enorme",
|
||||
"SPEC.Monstrous" : "Monstrueuse",
|
||||
"SPEC.Vehicle": "Véhicule",
|
||||
"SPEC.Any":"Any",
|
||||
"SPEC.Cathayan":"Cathayan",
|
||||
"SPEC.Eltharin":"Elthárin",
|
||||
"SPEC.Hearing":"Ouie",
|
||||
"SPEC.Horse":"Cheval",
|
||||
"SPEC.Lute":"Luth",
|
||||
"SPEC.Rural":"Rural",
|
||||
"SPEC.Sight":"Vue",
|
||||
"SPEC.Sing":"Chant",
|
||||
"SPEC.Singing":"Chanter",
|
||||
"SPEC.Smell":"Odorat",
|
||||
"SPEC.Underground":"Sous-terrain",
|
||||
"SPEC.Urban":"Urbain",
|
||||
|
||||
"SPELL.Lore":"Domaine:",
|
||||
|
||||
@ -2100,6 +2140,26 @@
|
||||
"VEHICLE.Starting":"Démarre",
|
||||
"VEHICLE.Type":"Type de véhicule",
|
||||
"VEHICLE.WeekLabel":"Label de Semaine",
|
||||
"VEHICLE.AssignedActors":"Acteur(s) assigné(s)",
|
||||
"VEHICLE.Change":"Changer",
|
||||
"VEHICLE.ChooseSkill":"Selectionnez la compétence à utiliser",
|
||||
"VEHICLE.Delete":"Supprimer ?",
|
||||
"VEHICLE.HandlingNoPenalty":"Encombrement en dessous du maximum : aucune pénalité.",
|
||||
"VEHICLE.HandlingPenalty":"Les tests de Maneouvre on un malus de -{penalty} DR.",
|
||||
"VEHICLE.LabelError":"Entrez un label pour le jet",
|
||||
"VEHICLE.ManannsMoodRolls":"Jet d'Humeur de Manann",
|
||||
"VEHICLE.MoraleRolls":"Jet de Moral",
|
||||
"VEHICLE.Move":"Mouvement de Véhicule",
|
||||
"VEHICLE.NewRole":"Nouveau role",
|
||||
"VEHICLE.NoManannsMoodModifiers":"Aucun modificateur d'humeur",
|
||||
"VEHICLE.NoMoraleModifiers":"Aucun modificateur de moral",
|
||||
"VEHICLE.NoSkill":"Cet acteur n'a aucune compétence utilisable avec ce role",
|
||||
"VEHICLE.O":"O",
|
||||
"VEHICLE.Roles":"Roles ",
|
||||
"VEHICLE.S":"S",
|
||||
"VEHICLE.SellCargo":"Vendre la cargaison",
|
||||
"VEHICLE.VehicleCrew":"Equipage du véhicule",
|
||||
"VEHICLE.VehicleMorale":"Moral du véhicule",
|
||||
|
||||
"CONFIGURE.CalcTokenSize" : "Calculer automatiquement la taille des Tokens",
|
||||
"CONFIGURE.CalcRun" : "Calculer automatiquement la vitesse de course",
|
||||
@ -2172,7 +2232,8 @@
|
||||
"EFFECT.AffectTheSourceOfFear":"Tests affectés par la source de la Peur",
|
||||
"EFFECT.AffectTheSourceOfFearName":"Tests qui affectent {name}",
|
||||
"EFFECT.DeletingEffectItems":"Suppression des items d'effets: {items}",
|
||||
|
||||
"EFFECT.BlackpowderShock":"Contre-coup de Poudre Noire",
|
||||
|
||||
"GRIEVANCE.Warning1":"Attention",
|
||||
"GRIEVANCE.Warning2":": Cette information est envoyé sur l'espace Github, qui est un espace publique, donc le Tag Discord est préférable. Sinon, contactez moi (MooMan) directement. Si vous avez l'impression que le bug concerne le module FR, contactez LeRatierBretonnier (Discord Foundry FR)",
|
||||
"GRIEVANCE.Warning3":"Avant de soumettre un rapport de bug",
|
||||
@ -2493,6 +2554,30 @@
|
||||
"BREAKDOWN.ShieldMoo":"Défense échouée - Ignore Shield AP ({ignored})",
|
||||
"BREAKDOWN.Undamaging":"<strong>Inoffensive</strong>: {originalAP} AP * 2 = {modifiedAP}",
|
||||
"BREAKDOWN.Weakpoints":"Points faibles - Ignore {ignored} ({item})",
|
||||
"BREAKDOWN.Zzap":"Zzap! - Ignore {ignored}"
|
||||
"BREAKDOWN.Zzap":"Zzap! - Ignore {ignored}",
|
||||
|
||||
"Heal Wounds": "Soigner les blessures",
|
||||
"Heal": "Soigner" ,
|
||||
"Staunch": "Bander",
|
||||
"Staunch Bleeding Conditions": "Soigner des Hémoragies",
|
||||
"Acrobatie Equestre": "Acrobatie Equestre",
|
||||
"No penalty to dodging on horseback": "Pas de pénalité pour esquiver à cheval",
|
||||
"Suave": "Affable",
|
||||
"Animal Affinity": "Affinité avec les animaux",
|
||||
"Ambidextrous": "Ambidextre",
|
||||
"Pure Soul": "Âme pure",
|
||||
"Gunner": "Artilleur",
|
||||
"Artistic": "Artiste",
|
||||
"Furious Assault": "Assaut furieux",
|
||||
"Magical Attacks" : "Attaques magiques",
|
||||
"Daemonic Ward": "Barrière démoniaque",
|
||||
"Relies on two hands": "Nécessite les deux mains",
|
||||
"Useless": "Inutile",
|
||||
|
||||
"WH":{
|
||||
"TransferType":{
|
||||
"Crew":"Equipage"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
}
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||
"version": "7.2.0",
|
||||
"version": "8.0.2",
|
||||
"esmodules": [
|
||||
"modules/babele-register.js",
|
||||
"modules/addon-register.js",
|
||||
@ -117,10 +117,10 @@
|
||||
}
|
||||
],
|
||||
"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.2.0.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-8.0.2.zip",
|
||||
"id": "wh4-fr-translation",
|
||||
"compatibility": {
|
||||
"minimum": "11",
|
||||
"minimum": "12",
|
||||
"verified": "12"
|
||||
},
|
||||
"relationships": {
|
||||
@ -139,4 +139,4 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
/************************************************************************************/
|
||||
//import WFRP_Tables from "/systems/wfrp4e/modules/system/tables-wfrp4e.js";
|
||||
import { WH4FRPatchConfig } from "./config-patch.js";
|
||||
import {TranslatedCompendium} from "../../babele/script/translated-compendium.js";
|
||||
|
||||
/************************************************************************************/
|
||||
const _patch_eis = () => {
|
||||
if (game.wfrp4e.config && game.wfrp4e.config.symptoms && game.wfrp4e.config.symptoms["delirium"] ) {
|
||||
if (game.wfrp4e?.config?.symptoms && game.wfrp4e.config.symptoms["delirium"] ) {
|
||||
game.wfrp4e.config.symptoms["delirium"] = "Délire";
|
||||
|
||||
game.wfrp4e.config.symptomDescriptions["delirium"] = "Votre sensibilité va et vient, avec des moments de clarté remplaçés subitement Your sensibility comes and goes, with moments of clarity replaced suddenly par des accès de délire, des hallucinations et de la terreur. Faites un <b>Test de Force Mentale Intermédiaire (+0)</b> chaque heure, et consultez la table <b><a class='table-click' data-table='delirium'>Délires</a></b> table.";
|
||||
|
@ -268,9 +268,32 @@ Hooks.once('init', () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
return skills_list;
|
||||
return skills_list
|
||||
},
|
||||
"process_effects": (effectsData, translations, data, tc, tc_translations) => {
|
||||
//console.log("Effects :", effectsData, translations, data, tc, tc_translations)
|
||||
for (let e of effectsData) {
|
||||
let origName = e.name
|
||||
e.name = tc_translations.name || game.i18n.localize(e.name)
|
||||
if ( e.flags?.wfrp4e?.scriptData) {
|
||||
for (let script of e.flags.wfrp4e.scriptData) {
|
||||
if (script?.label) {
|
||||
// Quand le label du script est strictement identique au nom de l'item concerné
|
||||
if ( script.label.toLowerCase() == origName.toLowerCase() ) {
|
||||
script.label = e.name
|
||||
} else if (script.label.toLowerCase().includes("tests to affect")) {
|
||||
script.label = script.label.replace("Tests to affect", "Tests relatifs à ")
|
||||
} else if (script.label.toLowerCase().includes("using torn muscle")) {
|
||||
script.label = script.label.replace("Using Torn Muscle", "Utilisation du muscle déchiré ")
|
||||
} else {
|
||||
script.label = game.i18n.localize(script.label)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return effectsData
|
||||
},
|
||||
|
||||
"resultConverter": (results, translated) => {
|
||||
//console.log("STUF PARSING", results, translated)
|
||||
if (translated) {
|
||||
@ -300,7 +323,7 @@ Hooks.once('init', () => {
|
||||
}
|
||||
}
|
||||
if (results[0].documentCollection) {
|
||||
return game.babele.instance.converters.tableResults(results)
|
||||
return game.babele.converters.tableResults(results)
|
||||
}
|
||||
return results
|
||||
},
|
||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
MANIFEST-000760
|
||||
MANIFEST-000772
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-22:05:54.498036 7fcfb2a006c0 Recovering log #758
|
||||
2024/06/06-22:05:54.508511 7fcfb2a006c0 Delete type=3 #756
|
||||
2024/06/06-22:05:54.508571 7fcfb2a006c0 Delete type=0 #758
|
||||
2024/06/06-22:06:40.979294 7fcfb16006c0 Level-0 table #763: started
|
||||
2024/06/06-22:06:40.979314 7fcfb16006c0 Level-0 table #763: 0 bytes OK
|
||||
2024/06/06-22:06:40.986553 7fcfb16006c0 Delete type=0 #761
|
||||
2024/06/06-22:06:40.993209 7fcfb16006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:41:36.913478 7fc8820006c0 Recovering log #770
|
||||
2024/07/13-10:41:36.924385 7fc8820006c0 Delete type=3 #768
|
||||
2024/07/13-10:41:36.924475 7fc8820006c0 Delete type=0 #770
|
||||
2024/07/13-10:42:24.874947 7fc87de006c0 Level-0 table #775: started
|
||||
2024/07/13-10:42:24.874996 7fc87de006c0 Level-0 table #775: 0 bytes OK
|
||||
2024/07/13-10:42:24.881904 7fc87de006c0 Delete type=0 #773
|
||||
2024/07/13-10:42:24.882157 7fc87de006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-20:54:36.421316 7fcfb2a006c0 Recovering log #754
|
||||
2024/06/06-20:54:36.431498 7fcfb2a006c0 Delete type=3 #752
|
||||
2024/06/06-20:54:36.431579 7fcfb2a006c0 Delete type=0 #754
|
||||
2024/06/06-21:16:20.284455 7fcfb16006c0 Level-0 table #759: started
|
||||
2024/06/06-21:16:20.284514 7fcfb16006c0 Level-0 table #759: 0 bytes OK
|
||||
2024/06/06-21:16:20.327048 7fcfb16006c0 Delete type=0 #757
|
||||
2024/06/06-21:16:20.401073 7fcfb16006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-08:59:32.951569 7f16d82006c0 Recovering log #766
|
||||
2024/06/19-08:59:32.962423 7f16d82006c0 Delete type=3 #764
|
||||
2024/06/19-08:59:32.962476 7f16d82006c0 Delete type=0 #766
|
||||
2024/06/19-09:28:27.125238 7f16d50006c0 Level-0 table #771: started
|
||||
2024/06/19-09:28:27.125265 7f16d50006c0 Level-0 table #771: 0 bytes OK
|
||||
2024/06/19-09:28:27.132191 7f16d50006c0 Delete type=0 #769
|
||||
2024/06/19-09:28:27.132366 7f16d50006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000762
|
||||
MANIFEST-000774
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-22:05:54.510086 7fcfb3e006c0 Recovering log #760
|
||||
2024/06/06-22:05:54.520324 7fcfb3e006c0 Delete type=3 #758
|
||||
2024/06/06-22:05:54.520387 7fcfb3e006c0 Delete type=0 #760
|
||||
2024/06/06-22:06:40.964988 7fcfb16006c0 Level-0 table #765: started
|
||||
2024/06/06-22:06:40.965009 7fcfb16006c0 Level-0 table #765: 0 bytes OK
|
||||
2024/06/06-22:06:40.972320 7fcfb16006c0 Delete type=0 #763
|
||||
2024/06/06-22:06:40.979118 7fcfb16006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:41:36.930430 7fc8816006c0 Recovering log #772
|
||||
2024/07/13-10:41:36.940714 7fc8816006c0 Delete type=3 #770
|
||||
2024/07/13-10:41:36.940805 7fc8816006c0 Delete type=0 #772
|
||||
2024/07/13-10:42:24.889098 7fc87de006c0 Level-0 table #777: started
|
||||
2024/07/13-10:42:24.889141 7fc87de006c0 Level-0 table #777: 0 bytes OK
|
||||
2024/07/13-10:42:24.897469 7fc87de006c0 Delete type=0 #775
|
||||
2024/07/13-10:42:24.905414 7fc87de006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-20:54:36.435801 7fcfb34006c0 Recovering log #756
|
||||
2024/06/06-20:54:36.446523 7fcfb34006c0 Delete type=3 #754
|
||||
2024/06/06-20:54:36.446619 7fcfb34006c0 Delete type=0 #756
|
||||
2024/06/06-21:16:20.247619 7fcfb16006c0 Level-0 table #761: started
|
||||
2024/06/06-21:16:20.247668 7fcfb16006c0 Level-0 table #761: 0 bytes OK
|
||||
2024/06/06-21:16:20.284176 7fcfb16006c0 Delete type=0 #759
|
||||
2024/06/06-21:16:20.401044 7fcfb16006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-08:59:32.965803 7f16d8c006c0 Recovering log #768
|
||||
2024/06/19-08:59:32.975452 7f16d8c006c0 Delete type=3 #766
|
||||
2024/06/19-08:59:32.975585 7f16d8c006c0 Delete type=0 #768
|
||||
2024/06/19-09:28:27.103510 7f16d50006c0 Level-0 table #773: started
|
||||
2024/06/19-09:28:27.103534 7f16d50006c0 Level-0 table #773: 0 bytes OK
|
||||
2024/06/19-09:28:27.111298 7f16d50006c0 Delete type=0 #771
|
||||
2024/06/19-09:28:27.132326 7f16d50006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000760
|
||||
MANIFEST-000772
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-22:05:54.535617 7fcfb3e006c0 Recovering log #758
|
||||
2024/06/06-22:05:54.546232 7fcfb3e006c0 Delete type=3 #756
|
||||
2024/06/06-22:05:54.546283 7fcfb3e006c0 Delete type=0 #758
|
||||
2024/06/06-22:06:40.986761 7fcfb16006c0 Level-0 table #763: started
|
||||
2024/06/06-22:06:40.986809 7fcfb16006c0 Level-0 table #763: 0 bytes OK
|
||||
2024/06/06-22:06:40.993088 7fcfb16006c0 Delete type=0 #761
|
||||
2024/06/06-22:06:40.993226 7fcfb16006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:41:36.961368 7fc8816006c0 Recovering log #770
|
||||
2024/07/13-10:41:36.972209 7fc8816006c0 Delete type=3 #768
|
||||
2024/07/13-10:41:36.972302 7fc8816006c0 Delete type=0 #770
|
||||
2024/07/13-10:42:24.897709 7fc87de006c0 Level-0 table #775: started
|
||||
2024/07/13-10:42:24.897763 7fc87de006c0 Level-0 table #775: 0 bytes OK
|
||||
2024/07/13-10:42:24.905156 7fc87de006c0 Delete type=0 #773
|
||||
2024/07/13-10:42:24.905434 7fc87de006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-20:54:36.466388 7fcfb34006c0 Recovering log #754
|
||||
2024/06/06-20:54:36.476745 7fcfb34006c0 Delete type=3 #752
|
||||
2024/06/06-20:54:36.476826 7fcfb34006c0 Delete type=0 #754
|
||||
2024/06/06-21:16:20.363505 7fcfb16006c0 Level-0 table #759: started
|
||||
2024/06/06-21:16:20.363562 7fcfb16006c0 Level-0 table #759: 0 bytes OK
|
||||
2024/06/06-21:16:20.400707 7fcfb16006c0 Delete type=0 #757
|
||||
2024/06/06-21:16:20.401115 7fcfb16006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-08:59:32.992996 7f16d8c006c0 Recovering log #766
|
||||
2024/06/19-08:59:33.003868 7f16d8c006c0 Delete type=3 #764
|
||||
2024/06/19-08:59:33.003940 7f16d8c006c0 Delete type=0 #766
|
||||
2024/06/19-09:28:27.118046 7f16d50006c0 Level-0 table #771: started
|
||||
2024/06/19-09:28:27.118087 7f16d50006c0 Level-0 table #771: 0 bytes OK
|
||||
2024/06/19-09:28:27.125103 7f16d50006c0 Delete type=0 #769
|
||||
2024/06/19-09:28:27.132355 7f16d50006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000760
|
||||
MANIFEST-000772
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-22:05:54.485070 7fcfb3e006c0 Recovering log #758
|
||||
2024/06/06-22:05:54.496169 7fcfb3e006c0 Delete type=3 #756
|
||||
2024/06/06-22:05:54.496286 7fcfb3e006c0 Delete type=0 #758
|
||||
2024/06/06-22:06:40.951380 7fcfb16006c0 Level-0 table #763: started
|
||||
2024/06/06-22:06:40.951454 7fcfb16006c0 Level-0 table #763: 0 bytes OK
|
||||
2024/06/06-22:06:40.958729 7fcfb16006c0 Delete type=0 #761
|
||||
2024/06/06-22:06:40.979070 7fcfb16006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:41:36.897525 7fc8816006c0 Recovering log #770
|
||||
2024/07/13-10:41:36.908614 7fc8816006c0 Delete type=3 #768
|
||||
2024/07/13-10:41:36.908748 7fc8816006c0 Delete type=0 #770
|
||||
2024/07/13-10:42:24.867229 7fc87de006c0 Level-0 table #775: started
|
||||
2024/07/13-10:42:24.867279 7fc87de006c0 Level-0 table #775: 0 bytes OK
|
||||
2024/07/13-10:42:24.874776 7fc87de006c0 Delete type=0 #773
|
||||
2024/07/13-10:42:24.882142 7fc87de006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-20:54:36.406301 7fcfb34006c0 Recovering log #754
|
||||
2024/06/06-20:54:36.416875 7fcfb34006c0 Delete type=3 #752
|
||||
2024/06/06-20:54:36.416980 7fcfb34006c0 Delete type=0 #754
|
||||
2024/06/06-21:16:20.204896 7fcfb16006c0 Level-0 table #759: started
|
||||
2024/06/06-21:16:20.204934 7fcfb16006c0 Level-0 table #759: 0 bytes OK
|
||||
2024/06/06-21:16:20.247088 7fcfb16006c0 Delete type=0 #757
|
||||
2024/06/06-21:16:20.247377 7fcfb16006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-08:59:32.938282 7f16d8c006c0 Recovering log #766
|
||||
2024/06/19-08:59:32.948828 7f16d8c006c0 Delete type=3 #764
|
||||
2024/06/19-08:59:32.948931 7f16d8c006c0 Delete type=0 #766
|
||||
2024/06/19-09:28:27.111507 7f16d50006c0 Level-0 table #771: started
|
||||
2024/06/19-09:28:27.111555 7f16d50006c0 Level-0 table #771: 0 bytes OK
|
||||
2024/06/19-09:28:27.117869 7f16d50006c0 Delete type=0 #769
|
||||
2024/06/19-09:28:27.132343 7f16d50006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000760
|
||||
MANIFEST-000772
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-22:05:54.472889 7fcfb2a006c0 Recovering log #758
|
||||
2024/06/06-22:05:54.482510 7fcfb2a006c0 Delete type=3 #756
|
||||
2024/06/06-22:05:54.482574 7fcfb2a006c0 Delete type=0 #758
|
||||
2024/06/06-22:06:40.958847 7fcfb16006c0 Level-0 table #763: started
|
||||
2024/06/06-22:06:40.958868 7fcfb16006c0 Level-0 table #763: 0 bytes OK
|
||||
2024/06/06-22:06:40.964877 7fcfb16006c0 Delete type=0 #761
|
||||
2024/06/06-22:06:40.979096 7fcfb16006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:41:36.878320 7fc8820006c0 Recovering log #770
|
||||
2024/07/13-10:41:36.889382 7fc8820006c0 Delete type=3 #768
|
||||
2024/07/13-10:41:36.889475 7fc8820006c0 Delete type=0 #770
|
||||
2024/07/13-10:42:24.860432 7fc87de006c0 Level-0 table #775: started
|
||||
2024/07/13-10:42:24.860477 7fc87de006c0 Level-0 table #775: 0 bytes OK
|
||||
2024/07/13-10:42:24.866988 7fc87de006c0 Delete type=0 #773
|
||||
2024/07/13-10:42:24.882123 7fc87de006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/06/06-20:54:36.390344 7fcfb2a006c0 Recovering log #754
|
||||
2024/06/06-20:54:36.401236 7fcfb2a006c0 Delete type=3 #752
|
||||
2024/06/06-20:54:36.401373 7fcfb2a006c0 Delete type=0 #754
|
||||
2024/06/06-21:16:20.167277 7fcfb16006c0 Level-0 table #759: started
|
||||
2024/06/06-21:16:20.167332 7fcfb16006c0 Level-0 table #759: 0 bytes OK
|
||||
2024/06/06-21:16:20.204704 7fcfb16006c0 Delete type=0 #757
|
||||
2024/06/06-21:16:20.247359 7fcfb16006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-08:59:32.924533 7f16d82006c0 Recovering log #766
|
||||
2024/06/19-08:59:32.935079 7f16d82006c0 Delete type=3 #764
|
||||
2024/06/19-08:59:32.935221 7f16d82006c0 Delete type=0 #766
|
||||
2024/06/19-09:28:27.089378 7f16d50006c0 Level-0 table #771: started
|
||||
2024/06/19-09:28:27.089413 7f16d50006c0 Level-0 table #771: 0 bytes OK
|
||||
2024/06/19-09:28:27.096669 7f16d50006c0 Delete type=0 #769
|
||||
2024/06/19-09:28:27.103319 7f16d50006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000403
|
||||
MANIFEST-000415
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/06/06-22:05:54.522431 7fcfb2a006c0 Recovering log #401
|
||||
2024/06/06-22:05:54.533382 7fcfb2a006c0 Delete type=3 #399
|
||||
2024/06/06-22:05:54.533456 7fcfb2a006c0 Delete type=0 #401
|
||||
2024/06/06-22:06:40.972432 7fcfb16006c0 Level-0 table #406: started
|
||||
2024/06/06-22:06:40.972455 7fcfb16006c0 Level-0 table #406: 0 bytes OK
|
||||
2024/06/06-22:06:40.978838 7fcfb16006c0 Delete type=0 #404
|
||||
2024/06/06-22:06:40.979138 7fcfb16006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/06/06-22:06:40.979181 7fcfb16006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:41:36.946044 7fc8820006c0 Recovering log #413
|
||||
2024/07/13-10:41:36.956775 7fc8820006c0 Delete type=3 #411
|
||||
2024/07/13-10:41:36.956919 7fc8820006c0 Delete type=0 #413
|
||||
2024/07/13-10:42:24.882375 7fc87de006c0 Level-0 table #418: started
|
||||
2024/07/13-10:42:24.882443 7fc87de006c0 Level-0 table #418: 0 bytes OK
|
||||
2024/07/13-10:42:24.888900 7fc87de006c0 Delete type=0 #416
|
||||
2024/07/13-10:42:24.905386 7fc87de006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/07/13-10:42:24.905451 7fc87de006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/06/06-20:54:36.451532 7fcfb2a006c0 Recovering log #397
|
||||
2024/06/06-20:54:36.462207 7fcfb2a006c0 Delete type=3 #395
|
||||
2024/06/06-20:54:36.462346 7fcfb2a006c0 Delete type=0 #397
|
||||
2024/06/06-21:16:20.327305 7fcfb16006c0 Level-0 table #402: started
|
||||
2024/06/06-21:16:20.327387 7fcfb16006c0 Level-0 table #402: 0 bytes OK
|
||||
2024/06/06-21:16:20.363229 7fcfb16006c0 Delete type=0 #400
|
||||
2024/06/06-21:16:20.401092 7fcfb16006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/06/06-21:16:20.401155 7fcfb16006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-08:59:32.979073 7f16d82006c0 Recovering log #409
|
||||
2024/06/19-08:59:32.989562 7f16d82006c0 Delete type=3 #407
|
||||
2024/06/19-08:59:32.989628 7f16d82006c0 Delete type=0 #409
|
||||
2024/06/19-09:28:27.096857 7f16d50006c0 Level-0 table #414: started
|
||||
2024/06/19-09:28:27.096890 7f16d50006c0 Level-0 table #414: 0 bytes OK
|
||||
2024/06/19-09:28:27.103160 7f16d50006c0 Delete type=0 #412
|
||||
2024/06/19-09:28:27.103332 7f16d50006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/06/19-09:28:27.103355 7f16d50006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
@ -17,5 +17,5 @@ let scriptLoader = `export default function()
|
||||
|
||||
}`
|
||||
|
||||
fs.writeFileSync(".modules/loadScripts.js", scriptLoader)
|
||||
fs.writeFileSync("./modules/loadScripts.js", scriptLoader)
|
||||
console.log(`Packed ${count} scripts`);
|
@ -73,7 +73,7 @@ for (let c of choice)
|
||||
{
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(mergeObject(item, (c.diff || {})))
|
||||
items.push(foundry.utils.mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true})
|
||||
|
@ -13,7 +13,7 @@ let choices = await ItemDialog.create(ItemDialog.objectToArray(symptoms), roll.t
|
||||
|
||||
if (choices.length)
|
||||
{
|
||||
let symptomEffects = duplicate(game.wfrp4e.config.symptomEffects)
|
||||
let symptomEffects = foundry.utils.duplicate(game.wfrp4e.config.symptomEffects)
|
||||
let added = []
|
||||
for(let choice of choices)
|
||||
{
|
||||
|
@ -1,8 +1,9 @@
|
||||
let lore = this.effect.name.split("(")[1].split(")")[0].toLowerCase();
|
||||
let spellLore = game.wfrp4e.config.magicLores[args.spell.system.lore.value].toLowerCase();
|
||||
|
||||
// If channelling corresponding lore
|
||||
if (args.type == "channelling" && args.spell.system.lore.value == lore)
|
||||
if (args.type == "channelling" && spellLore == lore)
|
||||
args.prefillModifiers.slBonus += 2
|
||||
// If channelling or casting different lore
|
||||
else if (args.spell.system.lore.value != lore && args.spell.system.lore.value != "petty")
|
||||
else if (spellLore != lore && args.spell.system.lore.value != "petty")
|
||||
args.prefillModifiers.slBonus -= 1
|
@ -1,7 +1,7 @@
|
||||
let chatData = { whisper: ChatMessage.getWhisperRecipients("GM") }
|
||||
let message = ""
|
||||
|
||||
let wounds = duplicate(this.actor.status.wounds)
|
||||
let wounds = foundry.utils.duplicate(this.actor.status.wounds)
|
||||
let regenRoll = await new Roll("1d10").roll();
|
||||
let regen = regenRoll.total;
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
// This script needs to be separate because equipTransfer is off on the other effect, and thus won't execute when added to an actor
|
||||
|
||||
let mainEffect = this.item.effects.contents[0];
|
||||
if (mainEffect.name.includes("(Savoir)"))
|
||||
if (mainEffect.name.includes("(Lore)"))
|
||||
{
|
||||
let choice = await ItemDialog.create(ItemDialog.objectToArray(game.wfrp4e.config.magicLores, this.item.img), 1, "Choisissez le Savoir");
|
||||
if (choice.length)
|
||||
{
|
||||
mainEffect.update({name : mainEffect.name.replace("Savoir", choice[0].name)})
|
||||
mainEffect.update({name : mainEffect.name.replace("Lore", choice[0].name)})
|
||||
this.item.update({name : this.item.name += ` (${choice[0].name})`})
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ fromUuid(this.effect.origin).then(caster => {
|
||||
if (caster) {
|
||||
if (actor.items.find(it => it.name == game.i18n.localize("Bestial"))) {
|
||||
let healed = caster.characteristics.wp.bonus
|
||||
let wounds = duplicate(args.actor.status.wounds)
|
||||
let wounds = foundry.utils.duplicate(args.actor.status.wounds)
|
||||
wounds.value += healed
|
||||
|
||||
if (wounds.value > wounds.max)
|
||||
|
@ -1,8 +1,9 @@
|
||||
let lore = this.effect.name.split("(")[1].split(")")[0].toLowerCase();
|
||||
let spellLore = game.wfrp4e.config.magicLores[args.spell.system.lore.value].toLowerCase();
|
||||
|
||||
// If channelling corresponding lore
|
||||
if (args.type == "channelling" && args.spell.system.lore.value == lore)
|
||||
if (args.type == "channelling" && spellLore == lore)
|
||||
args.prefillModifiers.slBonus += 1
|
||||
// If channelling or casting different lore
|
||||
else if (args.spell.system.lore.value != lore && args.spell.system.lore.value != "petty")
|
||||
else if (spellLore != lore && args.spell.system.lore.value != "petty")
|
||||
args.prefillModifiers.slBonus -= 1
|
@ -30,7 +30,7 @@ else if (roll = 10)
|
||||
message = `Résultat de ${roll}, gagnez ${item.name}, ${modifier} en Force`
|
||||
dice.toMessage(this.script.getChatData())
|
||||
|
||||
let changes = duplicate(this.effect.changes)
|
||||
let changes = foundry.utils.duplicate(this.effect.changes)
|
||||
changes[0].value = modifier
|
||||
|
||||
this.effect.updateSource({changes})
|
||||
|
@ -1,4 +1,4 @@
|
||||
let test = await this.actor.setupCharacteristic("ag", {skipTargets: true, appendTitle : ` - ${this.effect.name}`, context: { failure: "Goes Prone" }})
|
||||
let test = await this.actor.setupCharacteristic("ag", {skipTargets: true, appendTitle : ` - ${this.effect.name}`, context: { failure: "A Terre" }})
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
{
|
||||
|
@ -109,7 +109,7 @@ for (let c of choice) {
|
||||
if (item) {
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(mergeObject(item, (c.diff || {})))
|
||||
items.push(foundry.utils.mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${c.name}`, { permanent: true })
|
||||
|
@ -112,7 +112,7 @@ for (let c of choice)
|
||||
{
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(mergeObject(item, (c.diff || {})))
|
||||
items.push(foundry.utils.mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${c.name}`, {permanent : true})
|
||||
|
@ -1,2 +1,3 @@
|
||||
let lore = this.effect.name.split("(")[1].split(")")[0].toLowerCase();
|
||||
return !args.spell || (args.type == "cast" && ["petty", lore].includes(args.spell.system.lore.value));
|
||||
let spellLore = game.wfrp4e.config.magicLores[args.spell.system.lore.value].toLowerCase();
|
||||
return !args.spell || (args.type == "cast" && [game.wfrp4e.config.magicLores["petty"].toLowerCase(), lore].includes(spellLore));
|
@ -1,8 +1,9 @@
|
||||
let lore = this.effect.name.split("(")[1].split(")")[0].toLowerCase();
|
||||
let spellLore = game.wfrp4e.config.magicLores[args.spell.system.lore.value].toLowerCase();
|
||||
|
||||
// If channelling corresponding lore
|
||||
if (args.type == "channelling" && args.spell.system.lore.value == lore)
|
||||
if (args.type == "channelling" && spellLore == lore)
|
||||
args.prefillModifiers.slBonus += 3
|
||||
// If channelling or casting different lore
|
||||
else if (args.spell.system.lore.value != lore && args.spell.system.lore.value != "petty")
|
||||
else if (spellLore != lore && args.spell.system.lore.value != "petty")
|
||||
args.prefillModifiers.slBonus -= 1
|
@ -1,7 +1,7 @@
|
||||
let chatData = { whisper: ChatMessage.getWhisperRecipients("GM") }
|
||||
let message = ""
|
||||
|
||||
let wounds = duplicate(this.actor.status.wounds)
|
||||
let wounds = foundry.utils.duplicate(this.actor.status.wounds)
|
||||
let regenRoll = await new Roll("1d10").roll();
|
||||
let regen = regenRoll.total;
|
||||
|
||||
|
@ -4,39 +4,32 @@ let targetedItem = this.actor.items.get(this.effect.flags.wfrp4e.itemTargets[0])
|
||||
let qualities = foundry.utils.deepClone(game.wfrp4e.config.itemQualities);
|
||||
let flaws = foundry.utils.deepClone(game.wfrp4e.config.itemFlaws);
|
||||
|
||||
if (targetedItem.type == "weapon")
|
||||
{
|
||||
mergeObject(qualities, game.wfrp4e.config.weaponQualities)
|
||||
mergeObject(flaws, game.wfrp4e.config.weaponFlaws)
|
||||
if (targetedItem.type == "weapon") {
|
||||
foundry.utils.mergeObject(qualities, game.wfrp4e.config.weaponQualities)
|
||||
foundry.utils.mergeObject(flaws, game.wfrp4e.config.weaponFlaws)
|
||||
}
|
||||
else if (targetedItem.type == "armour")
|
||||
{
|
||||
mergeObject(qualities, game.wfrp4e.config.armorQualities)
|
||||
mergeObject(flaws, game.wfrp4e.config.armorFlaws)
|
||||
else if (targetedItem.type == "armour") {
|
||||
foundry.utils.mergeObject(qualities, game.wfrp4e.config.armorQualities)
|
||||
foundry.utils.mergeObject(flaws, game.wfrp4e.config.armorFlaws)
|
||||
}
|
||||
|
||||
for(let q in qualities)
|
||||
{
|
||||
// If the weapon already has a flaw, don't put it in the dialog
|
||||
if (targetedItem.system.properties.qualities[q])
|
||||
{
|
||||
delete qualities[q]
|
||||
}
|
||||
for (let q in qualities) {
|
||||
// If the weapon already has a flaw, don't put it in the dialog
|
||||
if (targetedItem.system.properties.qualities[q]) {
|
||||
delete qualities[q]
|
||||
}
|
||||
}
|
||||
for(let f in flaws)
|
||||
{
|
||||
// If a weapon doesn't have a flaw, don't put it in the dialog
|
||||
if (!targetedItem.system.properties.flaws[f])
|
||||
{
|
||||
delete flaws[f]
|
||||
}
|
||||
for (let f in flaws) {
|
||||
// If a weapon doesn't have a flaw, don't put it in the dialog
|
||||
if (!targetedItem.system.properties.flaws[f]) {
|
||||
delete flaws[f]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let added = await ItemDialog.create(ItemDialog.objectToArray(qualities), "unlimited", "Choisissez la Qualité à ajouter");
|
||||
let removed = []
|
||||
if (!foundry.utils.isEmpty(flaws))
|
||||
{
|
||||
removed = await ItemDialog.create(ItemDialog.objectToArray(flaws), "unlimited", "Choisissez le Défaut à enlever");
|
||||
if (!foundry.utils.isEmpty(flaws)) {
|
||||
removed = await ItemDialog.create(ItemDialog.objectToArray(flaws), "unlimited", "Choisissez le Défaut à enlever");
|
||||
}
|
||||
|
||||
this.effect.updateSource({"flags.wfrp4e.propertiesChanged" : {added : added.map(i => i.id), removed : removed.map(i => i.id)}})
|
||||
this.effect.updateSource({ "flags.wfrp4e.propertiesChanged": { added: added.map(i => i.id), removed: removed.map(i => i.id) } })
|
||||
|
@ -1,11 +1,13 @@
|
||||
let injury = this.effect.itemTargets[0]
|
||||
if (injury && this.effect.sourceTest.result.outcome == "success") {
|
||||
let days = new Roll(injury.system.duration.value).roll( {async: false} ).total
|
||||
let num = 1 + Number(this.effect.sourceTest.result.SL);
|
||||
let roll = await new Roll(num+'d10').roll({async: false})
|
||||
await roll.toMessage(this.script.getChatData())
|
||||
let newDays = Math.max(days - roll.total, 1)
|
||||
this.actor.updateEmbeddedDocuments("Item", [{_id: injury.id, 'system.duration.value': newDays} ])
|
||||
let message = "Blessures réduites à "+newDays+" (-" + roll.total + ") au lieu de "+days
|
||||
this.script.scriptMessage(message)
|
||||
let roll1 = new Roll(injury.system.duration.value)
|
||||
await roll1.roll()
|
||||
let days = roll1.total
|
||||
let num = 1 + Number(this.effect.sourceTest.result.SL);
|
||||
let roll = await new Roll(num + 'd10').roll()
|
||||
await roll.toMessage(this.script.getChatData())
|
||||
let newDays = Math.max(days - roll.total, 1)
|
||||
this.actor.updateEmbeddedDocuments("Item", [{ _id: injury.id, 'system.duration.value': newDays }])
|
||||
let message = "Blessures réduites à " + newDays + " (-" + roll.total + ") au lieu de " + days
|
||||
this.script.scriptMessage(message)
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ let aoeDamage = this.effect.sourceTest.result.damage - 5 // Easily handle magic
|
||||
|
||||
this.script.scriptMessage(await this.actor.applyBasicDamage(aoeDamage, {damageType : game.wfrp4e.config.DAMAGE_TYPE.IGNORE_AP, suppressMsg : true}))
|
||||
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Dodge"), {skipTargets: true, appendTitle : ` - Ablaze`})
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Dodge"), {skipTargets: true, appendTitle : ` - En Flammes`})
|
||||
|
||||
await test.roll();
|
||||
|
||||
|
@ -69,7 +69,7 @@ for (let c of choice)
|
||||
{
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(mergeObject(item, (c.diff || {})))
|
||||
items.push(foundry.utils.mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true})
|
||||
|
@ -94,7 +94,7 @@ for (let c of choice)
|
||||
{
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(mergeObject(item, (c.diff || {})))
|
||||
items.push(foundry.utils.mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true})
|
||||
|
@ -25,7 +25,7 @@ if (test.failed)
|
||||
`
|
||||
this.script.scriptMessage(msg);
|
||||
|
||||
let characteristics = duplicate(this.actor.system.characteristics)
|
||||
let characteristics = foundry.utils.duplicate(this.actor.system.characteristics)
|
||||
|
||||
characteristics.ws.initial -= ws
|
||||
characteristics.bs.initial -= bs
|
||||
|
@ -1,5 +1,5 @@
|
||||
let lore = this.effect.name.split(" ")[2].toLowerCase();
|
||||
if (args.item.type == "spell" && args.item.system.lore.value == lore)
|
||||
if (args.item.type == "spell" && game.wfrp4e.config.magicLores[args.item.system.lore.value].toLowerCase() == lore)
|
||||
{
|
||||
args.item.system.cn.value -= 1
|
||||
}
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
// This script needs to be separate because equipTransfer is off on the other effect, and thus won't execute when added to an actor
|
||||
|
||||
let mainEffect = this.item.effects.contents[0];
|
||||
if (mainEffect.name.includes("<Savoir>"))
|
||||
if (mainEffect.name.includes("<Lore>"))
|
||||
{
|
||||
let choice = await ItemDialog.create(ItemDialog.objectToArray(game.wfrp4e.config.magicLores, this.item.img), 1, "Choisissez le Savoir");
|
||||
if (choice.length)
|
||||
{
|
||||
mainEffect.update({name : mainEffect.name.replace("<Savoir>", choice[0].name)})
|
||||
mainEffect.update({name : mainEffect.name.replace("<Lore>", choice[0].name)})
|
||||
this.item.update({name : this.item.name += ` (${choice[0].name})`})
|
||||
}
|
||||
}
|
||||
|
@ -1,30 +1,30 @@
|
||||
let choice1 = [
|
||||
{
|
||||
type : "skill",
|
||||
name : "Projectiles (Arc)",
|
||||
diff : {
|
||||
system : {
|
||||
advances : {
|
||||
value : 10
|
||||
}
|
||||
}
|
||||
{
|
||||
type: "skill",
|
||||
name: "Projectiles (Arc)",
|
||||
diff: {
|
||||
system: {
|
||||
advances: {
|
||||
value: 10
|
||||
}
|
||||
},
|
||||
{
|
||||
type : "weapon",
|
||||
name : "Arc long",
|
||||
},
|
||||
{
|
||||
type : "ammunition",
|
||||
name : "Flèche",
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "weapon",
|
||||
name: "Arc long",
|
||||
},
|
||||
{
|
||||
type: "ammunition",
|
||||
name: "Flèche",
|
||||
}
|
||||
]
|
||||
let choice2 = [
|
||||
]
|
||||
|
||||
let choice = await Dialog.wait({
|
||||
title : "Option",
|
||||
content :
|
||||
title: "Option",
|
||||
content:
|
||||
`<p>
|
||||
Ajouter l'ption?
|
||||
</p>
|
||||
@ -32,59 +32,53 @@ let choice = await Dialog.wait({
|
||||
<li>Ranged (Bow) +10 and a Longbow with 12 Arrows</li>
|
||||
</ol>
|
||||
`,
|
||||
buttons : {
|
||||
1 : {
|
||||
label : "Oui",
|
||||
callback : () => {
|
||||
return choice1;
|
||||
}
|
||||
},
|
||||
2 : {
|
||||
label : "Non",
|
||||
callback : () => {
|
||||
return choice2;
|
||||
}
|
||||
}
|
||||
buttons: {
|
||||
1: {
|
||||
label: "Oui",
|
||||
callback: () => {
|
||||
return choice1;
|
||||
}
|
||||
},
|
||||
2: {
|
||||
label: "Non",
|
||||
callback: () => {
|
||||
return choice2;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
let updateObj = this.actor.toObject();
|
||||
let items = []
|
||||
for (let c of choice)
|
||||
{
|
||||
let existing
|
||||
if (c.type == "skill")
|
||||
{
|
||||
existing = updateObj.items.find(i => i.name == c.name && i.type == c.type)
|
||||
if (existing && c.diff?.system?.advances?.value)
|
||||
{
|
||||
existing.system.advances.value += c.diff.system.advances.value
|
||||
}
|
||||
for (let c of choice) {
|
||||
let existing
|
||||
if (c.type == "skill") {
|
||||
existing = updateObj.items.find(i => i.name == c.name && i.type == c.type)
|
||||
if (existing && c.diff?.system?.advances?.value) {
|
||||
existing.system.advances.value += c.diff.system.advances.value
|
||||
}
|
||||
}
|
||||
|
||||
if (!existing)
|
||||
{
|
||||
let item = await game.wfrp4e.utility.find(c.name, c.type)
|
||||
if (item)
|
||||
{
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true})
|
||||
if (!existing) {
|
||||
let item = await game.wfrp4e.utility.find(c.name, c.type)
|
||||
if (item) {
|
||||
item = item.toObject()
|
||||
equip(item);
|
||||
items.push(foundry.utils.mergeObject(item, (c.diff || {})))
|
||||
}
|
||||
else
|
||||
ui.notifications.warn(`Impossible de trouver ${talent}`, { permanent: true })
|
||||
}
|
||||
|
||||
}
|
||||
await this.actor.update(updateObj)
|
||||
this.actor.createEmbeddedDocuments("Item", items);
|
||||
|
||||
function equip(item)
|
||||
{
|
||||
if (item.type == "armour")
|
||||
item.system.worn.value = true
|
||||
else if (item.type == "weapon")
|
||||
item.system.equipped = true
|
||||
else if (item.type == "trapping" && item.system.trappingType.value == "clothingAccessories")
|
||||
item.system.worn = true
|
||||
function equip(item) {
|
||||
if (item.type == "armour")
|
||||
item.system.worn.value = true
|
||||
else if (item.type == "weapon")
|
||||
item.system.equipped = true
|
||||
else if (item.type == "trapping" && item.system.trappingType.value == "clothingAccessories")
|
||||
item.system.worn = true
|
||||
}
|
24
tools/detect_identical_files.lua
Normal file
24
tools/detect_identical_files.lua
Normal file
@ -0,0 +1,24 @@
|
||||
local lfs = require"lfs"
|
||||
|
||||
local src = "../reference_scripts/"
|
||||
local dst = "../scripts/"
|
||||
|
||||
for file in lfs.dir(src) do
|
||||
if file == '.' or file == '..' then
|
||||
else
|
||||
local fp1 = io.open(dst..file, "r+")
|
||||
local fp2 = io.open(src..file, "r+")
|
||||
if fp1 and fp2 then
|
||||
-- Compare files
|
||||
local content1 = fp1:read("*all")
|
||||
local content2 = fp2:read("*all")
|
||||
if content1 == content2 then
|
||||
print("Identical files: "..file)
|
||||
end
|
||||
fp1:close()
|
||||
fp2:close()
|
||||
else
|
||||
print("Error: Could not open file: "..file)
|
||||
end
|
||||
end
|
||||
end
|
@ -29,8 +29,25 @@ table.sort(todisplay, function (a, b)
|
||||
return a.tag < b.tag
|
||||
end
|
||||
)
|
||||
|
||||
for _, tagDef in pairs(todisplay) do
|
||||
print('"'.. tagDef.tag ..'":"'.. tagDef.value..'",')
|
||||
if type(tagDef.value) == "table" then
|
||||
print('"'.. tagDef.tag ..'":{')
|
||||
for k, v in pairs(tagDef.value) do
|
||||
if type(v) == "table" then
|
||||
print('"'.. k ..'":{')
|
||||
for kk, vv in pairs(v) do
|
||||
print('"'.. kk ..'":"'.. vv..'",')
|
||||
end
|
||||
print('},')
|
||||
else
|
||||
print('"'.. k ..'":"'.. v..'",')
|
||||
end
|
||||
end
|
||||
print('},')
|
||||
else
|
||||
print('"'.. tagDef.tag ..'":"'.. tagDef.value..'",')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user