Compare commits
31 Commits
foundryvtt
...
foundryvtt
Author | SHA1 | Date | |
---|---|---|---|
b2fbf46a4f | |||
533709281b | |||
d9f7dfa5e8 | |||
1bb7d0b248 | |||
95018f1d48 | |||
fc4fa1deb5 | |||
37f3eb3997 | |||
3c7366ce04 | |||
1d0f390a18 | |||
d61e2d5666 | |||
3f0dcc1ea2 | |||
1f1d871e53 | |||
c04d47a99d | |||
005452eaf0 | |||
e801cfe06b | |||
f7fec1fba2 | |||
f6202d70e0 | |||
43312b86db | |||
a01fec2367 | |||
c0e42f7f59 | |||
f0a0b055ea | |||
c51877f945 | |||
e7a56e15a2 | |||
35ae4012f6 | |||
3cec04ae8c | |||
b7bb897a46 | |||
4ebaad012b | |||
8a5c62fafd | |||
2c5ff15830 | |||
e46d68b315 | |||
da6fe66887 |
@ -1,5 +1,6 @@
|
||||
[Dolphin]
|
||||
Timestamp=2023,2,28,20,42,35.428
|
||||
HeaderColumnWidths=407,65,124,124
|
||||
Timestamp=2024,10,8,20,19,27.19
|
||||
Version=4
|
||||
ViewMode=1
|
||||
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails
|
||||
|
@ -5329,7 +5329,7 @@
|
||||
"name": "Le Second Signe d'Amul"
|
||||
},
|
||||
{
|
||||
"description": "<p>Tant que le Sort est actif, vous pouvez dépenser des Points de Chance pour forcer un adversaire à relancer ses Tests.</p>",
|
||||
"description": "<p>Gagnez +1 Point de Destin. Si ce point de Destin n'a pas été utilisé à la fin de la durée du sort, il est perdu.</p>",
|
||||
"id": "The Third Portent of Amul",
|
||||
"name": "Le Troisième Signe d'Amul"
|
||||
},
|
||||
@ -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",
|
||||
|
81
compendium/wfrp4e-soc.items.json
Normal file
81
compendium/wfrp4e-soc.items.json
Normal file
@ -0,0 +1,81 @@
|
||||
{
|
||||
"label": "Items (Sea of Claws)",
|
||||
"mapping": {
|
||||
"description": "system.description.value",
|
||||
"trappings": "system.trappings",
|
||||
"class": {
|
||||
"path": "system.class.value",
|
||||
"converter": "generic_localization"
|
||||
},
|
||||
"skills": {
|
||||
"path": "system.skills",
|
||||
"converter": "career_skills"
|
||||
},
|
||||
"careergroup": {
|
||||
"path": "system.careergroup.value",
|
||||
"converter": "career_careergroup"
|
||||
},
|
||||
"talents": {
|
||||
"path": "system.talents",
|
||||
"converter": "career_talents"
|
||||
},
|
||||
"pduration": {
|
||||
"path": "system.duration.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"prange": {
|
||||
"path": "system.range.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"ptarget": {
|
||||
"path": "system.target.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"pdamage": {
|
||||
"path": "system.damage.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"test": {
|
||||
"path": "system.test",
|
||||
"converter": "role_skills"
|
||||
},
|
||||
"tests": "system.tests.value",
|
||||
"sduration": {
|
||||
"path": "system.duration.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"srange": {
|
||||
"path": "system.range.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"starget": {
|
||||
"path": "system.target.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"sdamage": {
|
||||
"path": "system.damage.value",
|
||||
"converter": "spells_duration_range_target_damage"
|
||||
},
|
||||
"penalty": "system.penalty.value",
|
||||
"location": {
|
||||
"path": "system.location.value",
|
||||
"converter": "generic_localization"
|
||||
},
|
||||
"durationValue": "system.duration.value",
|
||||
"durationUnit": "system.duration.unit",
|
||||
"contraction": "system.contraction.value",
|
||||
"incubationValue": "system.incubation.value",
|
||||
"incubationUnit": "system.incubation.unit",
|
||||
"symptoms": "system.symptoms.value",
|
||||
"permanent": "system.permanent.value",
|
||||
"special": "system.special.value",
|
||||
"qualities": {
|
||||
"path": "system.qualities.value",
|
||||
"converter": "trapping_qualities_flaws"
|
||||
},
|
||||
"flaws": {
|
||||
"path": "system.flaws.value",
|
||||
"converter": "trapping_qualities_flaws"
|
||||
}
|
||||
}
|
||||
}
|
167
fr.json
167
fr.json
@ -193,6 +193,8 @@
|
||||
"SETTINGS.TABLE_oops":"Maladresse!",
|
||||
"SETTINGS.TABLE_species":"Espèces",
|
||||
"SETTINGS.TABLE_wrath":"Colère des Dieux",
|
||||
"SETTINGS.TABLE_port-stay-events":"Port Stay Events",
|
||||
"SETTINGS.TABLE_shipboard-events":"Shipboard Events",
|
||||
"SETTINGS.useWoMOvercast":"Utiliser les règles de sur-incantation de Winods of Magic",
|
||||
"SETTINGS.useWoMOvercastHint":"Utiliser les règles de sur-incantation proposées par le supplément Winds of Magic, cf page 23.",
|
||||
"SETTINGS.ChannellingIngredients":"Ingedients de Focalisation",
|
||||
@ -365,6 +367,10 @@
|
||||
"ITEM.Maximum":"Maximum",
|
||||
"ITEM.RandomVortex":"Vortex aléatoire",
|
||||
"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 !",
|
||||
@ -599,6 +605,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é",
|
||||
@ -839,6 +848,14 @@
|
||||
"CHARGEN.Trappings.Remove":"Supprimer",
|
||||
"CHARGEN.Career.LoadingCareers":"Chargement des carrières...",
|
||||
"CHARGEN.Message.RerolledDuplicateTalent":"<p>Relance du Talent dupliqué: <b>{rolled}</b>!</p>",
|
||||
"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",
|
||||
@ -920,6 +937,8 @@
|
||||
"DIALOG.MemorizeSpell":"Mémoriser un Sort",
|
||||
"DIALOG.MemorizeSpellContent":"Mémoriser ce sort vous coutera {xp} XP.",
|
||||
"DIALOG.ErrorMustSelectItem":"Au moins 1 item doit être selectionné",
|
||||
"DIALOG.ChooseActor":"Choisissez l'Acteur pour réaliser le test",
|
||||
"DIALOG.ItemDialog":"Fenêtre d'Item",
|
||||
|
||||
"CHAT.CareerChoose" : "Choisissez votre carrière",
|
||||
"CHAT.DamageError" : "Erreur de calcul des dégâts:",
|
||||
@ -1073,6 +1092,16 @@
|
||||
"CHAT.ApplyHack":"Appliquer Hack",
|
||||
"CHAT.ModifiersBreakdown":"Liste des modificateurs",
|
||||
"CHAT.Place":"Placer",
|
||||
"CHAT.AttackerTooSmallDamage":"Attacker is too small to damage this vehicle",
|
||||
"CHAT.CrewTest":"Test d'équipage",
|
||||
"CHAT.CrewTestVital":"Test d'équipage (Vital)",
|
||||
"CHAT.NoCrewWithRole":"Aucun role d'équipage!",
|
||||
"CHAT.RoleNotFound":"Le role <strong>{role}</strong> n'a pas été trouvé!",
|
||||
"CHAT.TotalSL":"DR Totaux",
|
||||
"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",
|
||||
@ -1112,6 +1141,10 @@
|
||||
"ERROR.PrayerAoEOvercast":"La zone d'effet des Prières ne peut être augemntée",
|
||||
"ERROR.AMMO_MODS":"La munition '{type}' ne peut pas être trouvée. Consultez la console (F12) pour les détails`",
|
||||
"ERROR.CannotUseArm":"Bras non utilisable!",
|
||||
"ERROR.NoAvailableActors":"Aucun acteur disponible pour le choix!",
|
||||
"ERROR.NoOwnedCrew":"Vous ne contrôlez aucun membre d'équipage qui possède ce rôle",
|
||||
"ERROR.StandardTraitsOnVehicle":"Impossible d'ajouter des Trais standards à un Véhicule",
|
||||
"ERROR.VehicleTraitsOnStandard":"Impossible d'ajouter des Traits de Véhicule à un Acteur",
|
||||
|
||||
"WARNING.Target":"Sélectionnez une cible pour appliquer l'effet.",
|
||||
"WARNING.ActorTest":"Les classes de jet d'acteur ne sont plus utilisées. Appelez désormais `roll()` sur l'objet lui-même.",
|
||||
@ -1735,6 +1768,23 @@
|
||||
"NAME.Trade":"Métier",
|
||||
"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",
|
||||
@ -1744,6 +1794,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:",
|
||||
|
||||
@ -1852,6 +1915,7 @@
|
||||
"SHEET.Target":"Cible",
|
||||
"SHEET.ToggleTraits":"Basculer le(s) Trait(s) de Creature",
|
||||
"SHEET.SortItems":"Trier les items",
|
||||
"SHEET.CannotDeleteCrewEffect":"Cet effet provient d'un véhicule dont cet acteur est membre d'équipage, et doit donc être effacé depuis le véhicule.",
|
||||
|
||||
"DISEASE.IncubationFinished" : "Incubation de la maladie {disease} terminée. ",
|
||||
|
||||
@ -2060,6 +2124,44 @@
|
||||
"VEHICLE.NoActorOnBoard": "Le personnage qui vous est assigné n'est pas dans le véhicule",
|
||||
"VEHICLE.TestNotPermitted": "Vous n'avez pas la permission de réaliser ce test",
|
||||
"VEHICLE.ft":"ft",
|
||||
"VEHICLE.CollisionRating":"Mesure de Collision",
|
||||
"VEHICLE.Crew":"Equipage",
|
||||
"VEHICLE.CrewTests":"Tests d'équipage",
|
||||
"VEHICLE.Custom":"Custom",
|
||||
"VEHICLE.Enabled":"Activé",
|
||||
"VEHICLE.Man":"Man.",
|
||||
"VEHICLE.ManannsMood":"Manann's Mood",
|
||||
"VEHICLE.Morale":"Moral",
|
||||
"VEHICLE.MoraleEffects":"Effet du moral",
|
||||
"VEHICLE.Oars":"Rames",
|
||||
"VEHICLE.PrimaryMode":"Mode primaire",
|
||||
"VEHICLE.Sail":"Voile",
|
||||
"VEHICLE.SetValue":"Valeur",
|
||||
"VEHICLE.SetValueToolTip":"Positionner une valeur particulière au lieu de lancer.",
|
||||
"VEHICLE.Sources":"Moral",
|
||||
"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",
|
||||
@ -2132,6 +2234,7 @@
|
||||
"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)",
|
||||
@ -2195,6 +2298,11 @@
|
||||
"TRADE.Excellent": "Excellente",
|
||||
"TRADE.Topshelf": "Suprême",
|
||||
"TRADE.NoCargoFound":"Il n'y a pas de cargaison disponible à l'achat à <b>{town}</b>.",
|
||||
"TRADE.Demand":"Demande",
|
||||
"TRADE.Maritime":"Maritime",
|
||||
"TRADE.MerchantTest":"<strong>Test de Marchand</strong>: {SL} DR (Résultat {roll})",
|
||||
"TRADE.River":"Rivière",
|
||||
"TRADE.Surplus":"Surplus",
|
||||
|
||||
"RANDOMIZER.C":"Ca",
|
||||
"RANDOMIZER.S":"C",
|
||||
@ -2267,6 +2375,9 @@
|
||||
"ROLL.HitAnotherEngagedTarget":"<b>Oops! Vous avez touche la mauvaise cible, sélectionnez aléatoirement un personnage et appliquez lui les dommages </b>",
|
||||
"Rounds":"rounds",
|
||||
"SHEET.NoCareers":"Aucune carrière trouvée",
|
||||
"EFFECT.ShooterEngagedError":"Vous ne pouvez réaliser d'attaque à étant engagé, à moins que vous ne sooyez équipé d'une arme avec la qualité Pistolet",
|
||||
"EffectApplication.RadiusHint":"Rayon du template (Note: si cet effet provient d'un sort, c'est son diamètre actuel)",
|
||||
"EffectApplication.Type.Crew":"Equipage",
|
||||
|
||||
"CHARGEN.AdditionalRandomTalent":"Talent aléatoire additionnel",
|
||||
"CHARGEN.Message.RerolledDuplicate":"<p>Relance de Talent dupliqué: <b>{rolled}</b>!</p>",
|
||||
@ -2342,6 +2453,8 @@
|
||||
"TYPES.Item.trapping":"Possession",
|
||||
"TYPES.Item.vehicleMod":"Modification de Véhicule",
|
||||
"TYPES.Item.weapon":"Arme",
|
||||
"TYPES.Item.vehicleRole":"Role de Véhicule",
|
||||
"TYPES.Item.vehicleTest":"Test d'équipage de véhicule",
|
||||
|
||||
"Badger": "Blaireau",
|
||||
"Badgers": "Blaireaux",
|
||||
@ -2425,5 +2538,57 @@
|
||||
"Touch": "Toucher",
|
||||
|
||||
"SOCKET.SendingSocketRequest":"Envoi d'une requête par Socket",
|
||||
"UpdaterTitle":"Mise à jour du contenu {title}"
|
||||
"UpdaterTitle":"Mise à jour du contenu {title}",
|
||||
|
||||
"BREAKADOWN.UserEntry":"Saisie utilisateur",
|
||||
"BEAKDOWN.UserEntry":"Saisie utilisateur",
|
||||
"BREAKDOWN.AttackerBase":"Base Attaquant",
|
||||
"BREAKDOWN.Base":"Base",
|
||||
"BREAKDOWN.Dice":"Dé",
|
||||
"BREAKDOWN.Ignored":"Ignoré",
|
||||
"BREAKDOWN.Minimum1":"1 Blessure minimum",
|
||||
"BREAKDOWN.Moo":"Règles maison de MooMan",
|
||||
"BREAKDOWN.Multiplier":"Multiplieur",
|
||||
"BREAKDOWN.OpposedSL":"DR Opposé",
|
||||
"BREAKDOWN.Partial":"Partiel - Ignore {ignored} ({item})",
|
||||
"BREAKDOWN.Penetrating":"Pénétrant - Ignore {ignored} ({item})",
|
||||
"BREAKDOWN.PenetratingMoo":"Pénétrant - Ignore {ignored}",
|
||||
"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}",
|
||||
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
||||
"CORRUPTION.Major":"Majeur",
|
||||
"CORRUPTION.Minor":"Mineur",
|
||||
"CORRUPTION.Moderate":"Modérée",
|
||||
"EFFECT.CalculationBonusModifier":"CBM",
|
||||
"EFFECT.CalculationBonusModifiers":"Calcul des modificateurs",
|
||||
"EFFECT.CharacteristicsInitial":"Caractéristiques (Initiale)",
|
||||
"EFFECT.CharacteristicsModifier":"Caractéristiques (Modifiée)",
|
||||
"SHEET.Encumbrance":"Encombrement",
|
||||
"SHEET.ExperienceLog":"Journal d'Expérince"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
}
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
|
||||
"version": "7.1.6",
|
||||
"version": "8.1.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.1.6.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-8.1.2.zip",
|
||||
"id": "wh4-fr-translation",
|
||||
"compatibility": {
|
||||
"minimum": "11",
|
||||
"minimum": "12",
|
||||
"verified": "12"
|
||||
},
|
||||
"relationships": {
|
||||
|
@ -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.";
|
||||
@ -369,7 +370,7 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
||||
|
||||
/************************************************************************************/
|
||||
/* Additionnal hooks ready */
|
||||
Hooks.once('ready', () => {
|
||||
Hooks.on('ready', () => {
|
||||
|
||||
if (game.user.isGM) {
|
||||
let chatData = {
|
||||
@ -381,6 +382,9 @@ Hooks.once('ready', () => {
|
||||
ChatMessage.create(chatData);
|
||||
}
|
||||
|
||||
// Patch function for effects
|
||||
game.wfrp4e.utility.findKey = warhammer.utility.findKey
|
||||
|
||||
/** New modifiers */
|
||||
game.wfrp4e.config.difficultyModifiers = {
|
||||
"veasy": 60,
|
||||
@ -396,7 +400,7 @@ Hooks.once('ready', () => {
|
||||
}
|
||||
game.wfrp4e.config.difficultyLabels = {
|
||||
|
||||
"veasy": "Trés Facile (+60)",
|
||||
"veasy": "Très Facile (+60)",
|
||||
"easy": "Facile (+40)",
|
||||
"banal": "Banal (+30)",
|
||||
"average": "Accessible (+20)",
|
||||
@ -408,8 +412,7 @@ Hooks.once('ready', () => {
|
||||
"doom": "Maudit (-40)"
|
||||
}
|
||||
|
||||
|
||||
|
||||
console.log("WFRP4E-TRANSLATION | Loading timeout");
|
||||
//setTimeout( __check_fix_wrong_modules, 2000, true, false);
|
||||
setTimeout(__check_fix_wrong_modules, 20000, true, true);
|
||||
setTimeout(__add_actors_translation, 21000, false, true);
|
||||
|
@ -218,15 +218,15 @@ Hooks.once('init', () => {
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
// Converters area
|
||||
if (typeof Babele !== 'undefined') {
|
||||
if (game.babele !== 'undefined') {
|
||||
|
||||
Babele.get().register({
|
||||
game.babele.register({
|
||||
module: 'wh4-fr-translation',
|
||||
lang: 'fr',
|
||||
dir: 'compendium'
|
||||
})
|
||||
|
||||
Babele.get().registerConverters({
|
||||
game.babele.registerConverters({
|
||||
|
||||
"career_skills": (skills_list) => {
|
||||
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill")
|
||||
@ -268,9 +268,37 @@ Hooks.once('init', () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
return skills_list;
|
||||
return skills_list
|
||||
},
|
||||
"role_skills": (skills) => {
|
||||
let skills_list = skills.split(',');
|
||||
let skillsFR = game.babele.converters.career_skills(skills_list);
|
||||
return skillsFR.join(', ')
|
||||
},
|
||||
"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) {
|
||||
@ -294,13 +322,13 @@ Hooks.once('init', () => {
|
||||
let career = data.text.match(/{(.*)}/)
|
||||
//console.log(">>>>>", career)
|
||||
if (career && career[1]) {
|
||||
let careerFR = Babele.instance.converters.career_careergroup(career[1])
|
||||
let careerFR = game.babele.converters.career_careergroup(career[1])
|
||||
data.text = data.text.replace(career[1], careerFR)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (results[0].documentCollection) {
|
||||
return Babele.instance.converters.tableResults(results)
|
||||
return game.babele.converters.tableResults(results)
|
||||
}
|
||||
return results
|
||||
},
|
||||
@ -487,6 +515,17 @@ Hooks.once('init', () => {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (trait_en.type == "vehicleRole") {
|
||||
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("vehicleRole")
|
||||
for (let compData of validCompendiums) {
|
||||
let role_fr = game.babele.translate(compData.metadata.id, trait_en, true);
|
||||
if (role_fr?.system) {
|
||||
trait_en.name = role_fr.name || trait_en.name
|
||||
// DEBG: console.log(">>>>> Role ?", role_fr.name );
|
||||
trait_en.system = foundry.utils.duplicate(role_fr.system);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (trait_en.type == "trapping" || trait_en.type == "weapon" || trait_en.type == "armour" || trait_en.type == "container" || trait_en.type == "money") {
|
||||
let validCompendiums = game.wfrp4e.tags.getPacksWithTag(["trapping"], ["weapon", "armour", "container", "money"])
|
||||
for (let compData of validCompendiums) {
|
||||
|
@ -4,10 +4,7 @@ export class WH4FRPatchConfig {
|
||||
/************************************************************************************/
|
||||
static translateSkillList( skillList) {
|
||||
|
||||
let compendiumName = 'wfrp4e-core.skills' // Per default
|
||||
if (game.system.version.match("7.")) {
|
||||
compendiumName = 'wfrp4e-core.items'
|
||||
}
|
||||
let compendiumName = 'wfrp4e-core.items'
|
||||
|
||||
let newList = [];
|
||||
for( let compName of skillList) {
|
||||
@ -32,10 +29,7 @@ export class WH4FRPatchConfig {
|
||||
/************************************************************************************/
|
||||
static translateTalentList( talentList) {
|
||||
|
||||
let compendiumName = 'wfrp4e-core.talents' // Per default
|
||||
if (game.system.version.match("7.")) {
|
||||
compendiumName = 'wfrp4e-core.items'
|
||||
}
|
||||
let compendiumName = 'wfrp4e-core.items'
|
||||
|
||||
let newList = [];
|
||||
for( let talentLine of talentList) {
|
||||
@ -86,8 +80,10 @@ export class WH4FRPatchConfig {
|
||||
|
||||
/************************************************************************************/
|
||||
static patch_species_skills( ) {
|
||||
console.log("Patching species skills....");
|
||||
for (let speciesName in game.wfrp4e.config.speciesSkills) {
|
||||
let speciesComp = game.wfrp4e.config.speciesSkills[speciesName];
|
||||
console.log("SpeciesName", speciesName, speciesComp);
|
||||
game.wfrp4e.config.speciesSkills[speciesName] = this.translateSkillList( speciesComp )
|
||||
}
|
||||
}
|
||||
@ -102,10 +98,7 @@ export class WH4FRPatchConfig {
|
||||
|
||||
/************************************************************************************/
|
||||
static patch_career() {
|
||||
let compendiumName = 'wfrp4e-core.careers' // Per default
|
||||
if (game.system.version.match("7.")) {
|
||||
compendiumName = 'wfrp4e-core.items'
|
||||
}
|
||||
let compendiumName = 'wfrp4e-core.items'
|
||||
|
||||
if ( game.wfrp4e.tables.career) {
|
||||
for( let row of game.wfrp4e.tables.career.rows) {
|
||||
@ -138,8 +131,7 @@ export class WH4FRPatchConfig {
|
||||
}
|
||||
|
||||
// Detect and patch as necessary
|
||||
if (game.wfrp4e.config?.talentBonuses && game.wfrp4e.config.talentBonuses["vivacité"] == undefined) {
|
||||
console.log("Patching WFRP4E now ....");
|
||||
if (game.wfrp4e.config?.talentBonuses ) {
|
||||
game.wfrp4e.config.qualityDescriptions["distract"] = game.i18n.localize("WFRP4E.Properties.Distract"); // Patch missing quality
|
||||
|
||||
game.wfrp4e.config.talentBonuses = {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
MANIFEST-000746
|
||||
MANIFEST-000820
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/05/31-09:37:32.376772 7f19c7e006c0 Recovering log #744
|
||||
2024/05/31-09:37:32.432762 7f19c7e006c0 Delete type=3 #742
|
||||
2024/05/31-09:37:32.432815 7f19c7e006c0 Delete type=0 #744
|
||||
2024/05/31-10:40:01.792285 7f19c56006c0 Level-0 table #749: started
|
||||
2024/05/31-10:40:01.792317 7f19c56006c0 Level-0 table #749: 0 bytes OK
|
||||
2024/05/31-10:40:01.798878 7f19c56006c0 Delete type=0 #747
|
||||
2024/05/31-10:40:01.811597 7f19c56006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:33:51.246176 7f8fad6006c0 Recovering log #818
|
||||
2024/10/09-12:33:51.256600 7f8fad6006c0 Delete type=3 #816
|
||||
2024/10/09-12:33:51.256689 7f8fad6006c0 Delete type=0 #818
|
||||
2024/10/09-12:34:27.883711 7f8fab2006c0 Level-0 table #823: started
|
||||
2024/10/09-12:34:27.883739 7f8fab2006c0 Level-0 table #823: 0 bytes OK
|
||||
2024/10/09-12:34:27.890855 7f8fab2006c0 Delete type=0 #821
|
||||
2024/10/09-12:34:27.897380 7f8fab2006c0 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/05/29-22:15:26.921445 7f5b0b8006c0 Recovering log #739
|
||||
2024/05/29-22:15:26.945868 7f5b0b8006c0 Delete type=3 #737
|
||||
2024/05/29-22:15:26.945925 7f5b0b8006c0 Delete type=0 #739
|
||||
2024/05/29-22:42:08.086719 7f5b0a8006c0 Level-0 table #745: started
|
||||
2024/05/29-22:42:08.086744 7f5b0a8006c0 Level-0 table #745: 0 bytes OK
|
||||
2024/05/29-22:42:08.093895 7f5b0a8006c0 Delete type=0 #743
|
||||
2024/05/29-22:42:08.114027 7f5b0a8006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:31:29.814238 7f8facc006c0 Recovering log #814
|
||||
2024/10/09-12:31:29.823788 7f8facc006c0 Delete type=3 #812
|
||||
2024/10/09-12:31:29.823840 7f8facc006c0 Delete type=0 #814
|
||||
2024/10/09-12:32:50.243762 7f8fab2006c0 Level-0 table #819: started
|
||||
2024/10/09-12:32:50.243784 7f8fab2006c0 Level-0 table #819: 0 bytes OK
|
||||
2024/10/09-12:32:50.251307 7f8fab2006c0 Delete type=0 #817
|
||||
2024/10/09-12:32:50.267529 7f8fab2006c0 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-000748
|
||||
MANIFEST-000822
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/05/31-09:37:32.440532 7f19c60006c0 Recovering log #746
|
||||
2024/05/31-09:37:32.493255 7f19c60006c0 Delete type=3 #744
|
||||
2024/05/31-09:37:32.493359 7f19c60006c0 Delete type=0 #746
|
||||
2024/05/31-10:40:01.811747 7f19c56006c0 Level-0 table #751: started
|
||||
2024/05/31-10:40:01.811783 7f19c56006c0 Level-0 table #751: 0 bytes OK
|
||||
2024/05/31-10:40:01.817818 7f19c56006c0 Delete type=0 #749
|
||||
2024/05/31-10:40:01.818008 7f19c56006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:33:51.258939 7f8fac2006c0 Recovering log #820
|
||||
2024/10/09-12:33:51.269186 7f8fac2006c0 Delete type=3 #818
|
||||
2024/10/09-12:33:51.269310 7f8fac2006c0 Delete type=0 #820
|
||||
2024/10/09-12:34:27.897515 7f8fab2006c0 Level-0 table #825: started
|
||||
2024/10/09-12:34:27.897549 7f8fab2006c0 Level-0 table #825: 0 bytes OK
|
||||
2024/10/09-12:34:27.904796 7f8fab2006c0 Delete type=0 #823
|
||||
2024/10/09-12:34:27.932543 7f8fab2006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/05/29-22:15:26.951019 7f5b0d6006c0 Recovering log #741
|
||||
2024/05/29-22:15:26.961978 7f5b0d6006c0 Delete type=3 #739
|
||||
2024/05/29-22:15:26.962039 7f5b0d6006c0 Delete type=0 #741
|
||||
2024/05/29-22:42:08.094093 7f5b0a8006c0 Level-0 table #747: started
|
||||
2024/05/29-22:42:08.094135 7f5b0a8006c0 Level-0 table #747: 0 bytes OK
|
||||
2024/05/29-22:42:08.100255 7f5b0a8006c0 Delete type=0 #745
|
||||
2024/05/29-22:42:08.114040 7f5b0a8006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:31:29.829285 7f8fae0006c0 Recovering log #816
|
||||
2024/10/09-12:31:29.893000 7f8fae0006c0 Delete type=3 #814
|
||||
2024/10/09-12:31:29.893129 7f8fae0006c0 Delete type=0 #816
|
||||
2024/10/09-12:32:50.259667 7f8fab2006c0 Level-0 table #821: started
|
||||
2024/10/09-12:32:50.259717 7f8fab2006c0 Level-0 table #821: 0 bytes OK
|
||||
2024/10/09-12:32:50.267226 7f8fab2006c0 Delete type=0 #819
|
||||
2024/10/09-12:32:50.267570 7f8fab2006c0 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-000746
|
||||
MANIFEST-000820
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/05/31-09:37:32.579979 7f19c60006c0 Recovering log #744
|
||||
2024/05/31-09:37:32.634808 7f19c60006c0 Delete type=3 #742
|
||||
2024/05/31-09:37:32.634871 7f19c60006c0 Delete type=0 #744
|
||||
2024/05/31-10:40:01.798996 7f19c56006c0 Level-0 table #749: started
|
||||
2024/05/31-10:40:01.799024 7f19c56006c0 Level-0 table #749: 0 bytes OK
|
||||
2024/05/31-10:40:01.805113 7f19c56006c0 Delete type=0 #747
|
||||
2024/05/31-10:40:01.811607 7f19c56006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:33:51.286728 7f8fae0006c0 Recovering log #818
|
||||
2024/10/09-12:33:51.296474 7f8fae0006c0 Delete type=3 #816
|
||||
2024/10/09-12:33:51.296577 7f8fae0006c0 Delete type=0 #818
|
||||
2024/10/09-12:34:27.926209 7f8fab2006c0 Level-0 table #823: started
|
||||
2024/10/09-12:34:27.926239 7f8fab2006c0 Level-0 table #823: 0 bytes OK
|
||||
2024/10/09-12:34:27.932402 7f8fab2006c0 Delete type=0 #821
|
||||
2024/10/09-12:34:27.932587 7f8fab2006c0 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/05/29-22:15:26.981610 7f5b0c2006c0 Recovering log #739
|
||||
2024/05/29-22:15:26.991864 7f5b0c2006c0 Delete type=3 #737
|
||||
2024/05/29-22:15:26.991966 7f5b0c2006c0 Delete type=0 #739
|
||||
2024/05/29-22:42:08.100370 7f5b0a8006c0 Level-0 table #745: started
|
||||
2024/05/29-22:42:08.100395 7f5b0a8006c0 Level-0 table #745: 0 bytes OK
|
||||
2024/05/29-22:42:08.107039 7f5b0a8006c0 Delete type=0 #743
|
||||
2024/05/29-22:42:08.114048 7f5b0a8006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:31:29.912415 7f8fac2006c0 Recovering log #814
|
||||
2024/10/09-12:31:29.921942 7f8fac2006c0 Delete type=3 #812
|
||||
2024/10/09-12:31:29.921994 7f8fac2006c0 Delete type=0 #814
|
||||
2024/10/09-12:32:50.267797 7f8fab2006c0 Level-0 table #819: started
|
||||
2024/10/09-12:32:50.267848 7f8fab2006c0 Level-0 table #819: 0 bytes OK
|
||||
2024/10/09-12:32:50.274015 7f8fab2006c0 Delete type=0 #817
|
||||
2024/10/09-12:32:50.299677 7f8fab2006c0 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-000746
|
||||
MANIFEST-000820
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/05/31-09:37:32.306200 7f19c60006c0 Recovering log #744
|
||||
2024/05/31-09:37:32.365977 7f19c60006c0 Delete type=3 #742
|
||||
2024/05/31-09:37:32.366032 7f19c60006c0 Delete type=0 #744
|
||||
2024/05/31-10:40:01.779134 7f19c56006c0 Level-0 table #749: started
|
||||
2024/05/31-10:40:01.779173 7f19c56006c0 Level-0 table #749: 0 bytes OK
|
||||
2024/05/31-10:40:01.785789 7f19c56006c0 Delete type=0 #747
|
||||
2024/05/31-10:40:01.785917 7f19c56006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:33:51.231508 7f8fae0006c0 Recovering log #818
|
||||
2024/10/09-12:33:51.242888 7f8fae0006c0 Delete type=3 #816
|
||||
2024/10/09-12:33:51.242941 7f8fae0006c0 Delete type=0 #818
|
||||
2024/10/09-12:34:27.890986 7f8fab2006c0 Level-0 table #823: started
|
||||
2024/10/09-12:34:27.891013 7f8fab2006c0 Level-0 table #823: 0 bytes OK
|
||||
2024/10/09-12:34:27.897193 7f8fab2006c0 Delete type=0 #821
|
||||
2024/10/09-12:34:27.897402 7f8fab2006c0 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/05/29-22:15:26.903601 7f5b0c2006c0 Recovering log #739
|
||||
2024/05/29-22:15:26.917559 7f5b0c2006c0 Delete type=3 #737
|
||||
2024/05/29-22:15:26.917932 7f5b0c2006c0 Delete type=0 #739
|
||||
2024/05/29-22:42:08.040267 7f5b0a8006c0 Level-0 table #745: started
|
||||
2024/05/29-22:42:08.040295 7f5b0a8006c0 Level-0 table #745: 0 bytes OK
|
||||
2024/05/29-22:42:08.068788 7f5b0a8006c0 Delete type=0 #743
|
||||
2024/05/29-22:42:08.086595 7f5b0a8006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:31:29.798950 7f8fac2006c0 Recovering log #814
|
||||
2024/10/09-12:31:29.809632 7f8fac2006c0 Delete type=3 #812
|
||||
2024/10/09-12:31:29.809693 7f8fac2006c0 Delete type=0 #814
|
||||
2024/10/09-12:32:50.251480 7f8fab2006c0 Level-0 table #819: started
|
||||
2024/10/09-12:32:50.251516 7f8fab2006c0 Level-0 table #819: 0 bytes OK
|
||||
2024/10/09-12:32:50.259226 7f8fab2006c0 Delete type=0 #817
|
||||
2024/10/09-12:32:50.267549 7f8fab2006c0 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-000746
|
||||
MANIFEST-000820
|
||||
|
@ -1,7 +1,7 @@
|
||||
2024/05/31-09:37:32.229735 7f19c7e006c0 Recovering log #744
|
||||
2024/05/31-09:37:32.290900 7f19c7e006c0 Delete type=3 #742
|
||||
2024/05/31-09:37:32.290955 7f19c7e006c0 Delete type=0 #744
|
||||
2024/05/31-10:40:01.745865 7f19c56006c0 Level-0 table #749: started
|
||||
2024/05/31-10:40:01.745898 7f19c56006c0 Level-0 table #749: 0 bytes OK
|
||||
2024/05/31-10:40:01.752538 7f19c56006c0 Delete type=0 #747
|
||||
2024/05/31-10:40:01.759248 7f19c56006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:33:51.217921 7f8facc006c0 Recovering log #818
|
||||
2024/10/09-12:33:51.228098 7f8facc006c0 Delete type=3 #816
|
||||
2024/10/09-12:33:51.228152 7f8facc006c0 Delete type=0 #818
|
||||
2024/10/09-12:34:27.867410 7f8fab2006c0 Level-0 table #823: started
|
||||
2024/10/09-12:34:27.867439 7f8fab2006c0 Level-0 table #823: 0 bytes OK
|
||||
2024/10/09-12:34:27.874695 7f8fab2006c0 Delete type=0 #821
|
||||
2024/10/09-12:34:27.897331 7f8fab2006c0 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/05/29-22:15:26.888481 7f5b0cc006c0 Recovering log #739
|
||||
2024/05/29-22:15:26.899481 7f5b0cc006c0 Delete type=3 #737
|
||||
2024/05/29-22:15:26.899538 7f5b0cc006c0 Delete type=0 #739
|
||||
2024/05/29-22:42:08.080368 7f5b0a8006c0 Level-0 table #745: started
|
||||
2024/05/29-22:42:08.080405 7f5b0a8006c0 Level-0 table #745: 0 bytes OK
|
||||
2024/05/29-22:42:08.086437 7f5b0a8006c0 Delete type=0 #743
|
||||
2024/05/29-22:42:08.086618 7f5b0a8006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:31:29.784241 7f8fad6006c0 Recovering log #814
|
||||
2024/10/09-12:31:29.794019 7f8fad6006c0 Delete type=3 #812
|
||||
2024/10/09-12:31:29.794079 7f8fad6006c0 Delete type=0 #814
|
||||
2024/10/09-12:32:50.236330 7f8fab2006c0 Level-0 table #819: started
|
||||
2024/10/09-12:32:50.236385 7f8fab2006c0 Level-0 table #819: 0 bytes OK
|
||||
2024/10/09-12:32:50.243649 7f8fab2006c0 Delete type=0 #817
|
||||
2024/10/09-12:32:50.267500 7f8fab2006c0 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-000389
|
||||
MANIFEST-000463
|
||||
|
@ -1,8 +1,8 @@
|
||||
2024/05/31-09:37:32.503566 7f19c7e006c0 Recovering log #387
|
||||
2024/05/31-09:37:32.572091 7f19c7e006c0 Delete type=3 #385
|
||||
2024/05/31-09:37:32.572143 7f19c7e006c0 Delete type=0 #387
|
||||
2024/05/31-10:40:01.805216 7f19c56006c0 Level-0 table #392: started
|
||||
2024/05/31-10:40:01.805249 7f19c56006c0 Level-0 table #392: 0 bytes OK
|
||||
2024/05/31-10:40:01.811475 7f19c56006c0 Delete type=0 #390
|
||||
2024/05/31-10:40:01.811622 7f19c56006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/05/31-10:40:01.811643 7f19c56006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:33:51.272460 7f8facc006c0 Recovering log #461
|
||||
2024/10/09-12:33:51.284039 7f8facc006c0 Delete type=3 #459
|
||||
2024/10/09-12:33:51.284106 7f8facc006c0 Delete type=0 #461
|
||||
2024/10/09-12:34:27.905003 7f8fab2006c0 Level-0 table #466: started
|
||||
2024/10/09-12:34:27.905036 7f8fab2006c0 Level-0 table #466: 0 bytes OK
|
||||
2024/10/09-12:34:27.913460 7f8fab2006c0 Delete type=0 #464
|
||||
2024/10/09-12:34:27.932562 7f8fab2006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:34:27.932596 7f8fab2006c0 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/05/29-22:15:26.967160 7f5b0cc006c0 Recovering log #382
|
||||
2024/05/29-22:15:26.977447 7f5b0cc006c0 Delete type=3 #380
|
||||
2024/05/29-22:15:26.977504 7f5b0cc006c0 Delete type=0 #382
|
||||
2024/05/29-22:42:08.107240 7f5b0a8006c0 Level-0 table #388: started
|
||||
2024/05/29-22:42:08.107291 7f5b0a8006c0 Level-0 table #388: 0 bytes OK
|
||||
2024/05/29-22:42:08.113903 7f5b0a8006c0 Delete type=0 #386
|
||||
2024/05/29-22:42:08.114056 7f5b0a8006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/05/29-22:42:08.114092 7f5b0a8006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:31:29.897703 7f8fad6006c0 Recovering log #457
|
||||
2024/10/09-12:31:29.907971 7f8fad6006c0 Delete type=3 #455
|
||||
2024/10/09-12:31:29.908069 7f8fad6006c0 Delete type=0 #457
|
||||
2024/10/09-12:32:50.274184 7f8fab2006c0 Level-0 table #462: started
|
||||
2024/10/09-12:32:50.274224 7f8fab2006c0 Level-0 table #462: 0 bytes OK
|
||||
2024/10/09-12:32:50.281749 7f8fab2006c0 Delete type=0 #460
|
||||
2024/10/09-12:32:50.299697 7f8fab2006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/10/09-12:32:50.299742 7f8fab2006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
7
reference_scripts/18MeEQ0As3JvER71.js
Normal file
7
reference_scripts/18MeEQ0As3JvER71.js
Normal file
@ -0,0 +1,7 @@
|
||||
let state = !this.effect.disabled;
|
||||
this.effect.update({"disabled": state});
|
||||
|
||||
if (state)
|
||||
return ui.notifications.info("EFFECT.CreatureBackInWater", {localize: true})
|
||||
|
||||
return ui.notifications.info("EFFECT.CreatureOutOfWater", {localize: true});
|
1
reference_scripts/1LDSzXeO5CzXgTOc.js
Normal file
1
reference_scripts/1LDSzXeO5CzXgTOc.js
Normal file
@ -0,0 +1 @@
|
||||
return args.skill?.name.includes(game.i18n.localize("NAME.Channelling")) || args.skill?.name == `${game.i18n.localize("NAME.Language")} (${game.i18n.localize("SPEC.Magick")})`
|
20
reference_scripts/1jQq9v8fXK8zuEBU.js
Normal file
20
reference_scripts/1jQq9v8fXK8zuEBU.js
Normal file
@ -0,0 +1,20 @@
|
||||
let damage = this.effect.sourceActor.hasCondition("fatigued") ? 6 : 10;
|
||||
|
||||
let loc = "body"
|
||||
|
||||
let APatLoc = this.actor.system.status.armour[loc];
|
||||
|
||||
let metalAP = APatLoc.layers.reduce((metal, layer) => metal += ((layer.metal && !layer.magical) ? layer.value : 0), 0)
|
||||
|
||||
let APused = Math.max(0, APatLoc.value - metalAP); // remove metal AP at location;
|
||||
|
||||
damage -= (APused + this.actor.system.characteristics.t.bonus)
|
||||
|
||||
let msg = await this.actor.applyBasicDamage(damage, {suppressMsg : true, damageType : game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL});
|
||||
msg += ` (ignored ${metalAP} metal AP on ${game.wfrp4e.config.locations[loc]})`
|
||||
this.script.scriptMessage(msg)
|
||||
|
||||
let test = await this.actor.setupSkill("Endurance", {fields : {difficulty : "difficult"}, appendTitle : ` - ${this.effect.name}`});
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
this.actor.addCondition("stunned");
|
8
reference_scripts/2QB0LjueuJcIaHaC.js
Normal file
8
reference_scripts/2QB0LjueuJcIaHaC.js
Normal file
@ -0,0 +1,8 @@
|
||||
if (isNaN(parseInt(this.item.system.specification.value)))
|
||||
{
|
||||
let value = await ValueDialog.create("Enter Armour value", this.effect.name);
|
||||
if (value)
|
||||
{
|
||||
this.item.updateSource({"system.specification.value" : value});
|
||||
}
|
||||
}
|
@ -6,13 +6,14 @@ if (!currentCareer) return
|
||||
|
||||
|
||||
let inCurrentCareer = currentCareer.system.skills.includes(skill);
|
||||
if (existingSkill && inCurrentCareer)
|
||||
let craftsmanAdded = this.actor.getFlag("wfrp4e", "craftsmanAdded") || {};
|
||||
if (existingSkill && inCurrentCareer && !craftsmanAdded[existingSkill.name])
|
||||
{
|
||||
existingSkill.system.advances.costModifier = -5;
|
||||
}
|
||||
else
|
||||
{
|
||||
craftsmanAdded[skill] = true;
|
||||
currentCareer.system.skills.push(skill);
|
||||
setProperty(this.actor, "flags.wfrp4e.craftsmanAdded", craftsmanAdded)
|
||||
}
|
||||
|
||||
|
||||
|
3
reference_scripts/3CdYFcInQVCIBUiE.js
Normal file
3
reference_scripts/3CdYFcInQVCIBUiE.js
Normal file
@ -0,0 +1,3 @@
|
||||
args.actor.system.details.move.value += 2;
|
||||
args.actor.system.status.carries.max = Math.floor(args.actor.system.status.carries.max * 0.5);
|
||||
args.actor.system.details.price.gc *= 1.1;
|
1
reference_scripts/3nTSOcCmNZpQWK8b.js
Normal file
1
reference_scripts/3nTSOcCmNZpQWK8b.js
Normal file
@ -0,0 +1 @@
|
||||
this.actor.addCondition("blinded", 3);
|
4
reference_scripts/4cumLUlcuJ7m8C6t.js
Normal file
4
reference_scripts/4cumLUlcuJ7m8C6t.js
Normal file
@ -0,0 +1,4 @@
|
||||
let item = args.actor.items.find(i => i.name.includes("Smoothing"));
|
||||
let smoothing = item?.effects.find(e => e.name === "Smoothing");
|
||||
if (smoothing)
|
||||
smoothing.disabled = true;
|
1
reference_scripts/4drWKXjMgasxY7Jy.js
Normal file
1
reference_scripts/4drWKXjMgasxY7Jy.js
Normal file
@ -0,0 +1 @@
|
||||
args.actor.system.details.price.gc += Math.floor(args.actor.system.details.price.gc * 0.1);
|
1
reference_scripts/4otpLq2TnDdgzpvc.js
Normal file
1
reference_scripts/4otpLq2TnDdgzpvc.js
Normal file
@ -0,0 +1 @@
|
||||
args.actor.system.details.man -= 3;
|
2
reference_scripts/4uAUUZmLgxBKSmXA.js
Normal file
2
reference_scripts/4uAUUZmLgxBKSmXA.js
Normal file
@ -0,0 +1,2 @@
|
||||
if (args.totalWoundLoss > 0)
|
||||
this.effect.delete();
|
53
reference_scripts/5ScjIdRUOxblHdWS.js
Normal file
53
reference_scripts/5ScjIdRUOxblHdWS.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Trade (Carpenter)';
|
||||
const difficulty = 'challenging';
|
||||
const target = 40;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
19
reference_scripts/5sYpJkT2WXIe0gIZ.js
Normal file
19
reference_scripts/5sYpJkT2WXIe0gIZ.js
Normal file
@ -0,0 +1,19 @@
|
||||
const rating = parseInt(this.effect.name.match(/\d+/)?.[0]) || 1;
|
||||
|
||||
let crewList = foundry.utils.duplicate(this.actor.system.passengers.list);
|
||||
let selectedCrew = [];
|
||||
|
||||
while (selectedCrew.length < rating && crewList.length) {
|
||||
selectedCrew.push(crewList.splice(crewList.length * Math.random() | 0, 1)[0]);
|
||||
}
|
||||
|
||||
for (let member of selectedCrew) {
|
||||
let actor = game.actors.get(member.id);
|
||||
actor.applyBasicDamage(9, {
|
||||
damageType: game.wfrp4e.config.DAMAGE_TYPE.NORMAL,
|
||||
minimumOne: true,
|
||||
loc: "roll",
|
||||
suppressMsg: false,
|
||||
hideDSN: false
|
||||
});
|
||||
}
|
8
reference_scripts/6Ws3ieQ7pG5poUyT.js
Normal file
8
reference_scripts/6Ws3ieQ7pG5poUyT.js
Normal file
@ -0,0 +1,8 @@
|
||||
if (isNaN(parseInt(this.item.system.specification.value)))
|
||||
{
|
||||
let value = await ValueDialog.create("Enter Spellcasting Lore", this.effect.name, "", Object.values(game.wfrp4e.config.magicLores));
|
||||
if (value)
|
||||
{
|
||||
this.item.updateSource({"system.specification.value" : value});
|
||||
}
|
||||
}
|
5
reference_scripts/6gRixT3zIOAberJb.js
Normal file
5
reference_scripts/6gRixT3zIOAberJb.js
Normal file
@ -0,0 +1,5 @@
|
||||
const disease = await fromUuid("Compendium.wfrp4e-soc.items.Item.8Q9JYtR1y3B5J6UH");
|
||||
const data = disease.toObject();
|
||||
data.system.incubation.value = 0;
|
||||
data.system.duration.active = true;
|
||||
this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id});
|
1
reference_scripts/6jp8slPU33oBQe1V.js
Normal file
1
reference_scripts/6jp8slPU33oBQe1V.js
Normal file
@ -0,0 +1 @@
|
||||
return args.options.crewTest?.system.handling !== true;
|
2
reference_scripts/6oSs8qKFNFz2lSmh.js
Normal file
2
reference_scripts/6oSs8qKFNFz2lSmh.js
Normal file
@ -0,0 +1,2 @@
|
||||
if (args.actorsystem.details.move.sail.value > 0)
|
||||
args.actor.system.details.move.sail.value = 0;
|
31
reference_scripts/6qJP0hpShEM43ohx.js
Normal file
31
reference_scripts/6qJP0hpShEM43ohx.js
Normal file
@ -0,0 +1,31 @@
|
||||
const actor = args.actor;
|
||||
|
||||
if (actor.itemTypes.skill.find(s => s.name === "Lore (Oceans)")) {
|
||||
const loreTest = await actor.setupSkill('Lore (Oceans)', {
|
||||
appendTitle: ` – ${this.effect.name}`,
|
||||
skipTargets: true,
|
||||
fields: {difficulty: 'hard'},
|
||||
characteristic: 'int',
|
||||
});
|
||||
await loreTest.roll();
|
||||
|
||||
if (loreTest.succeeded) {
|
||||
loreTest.result.other.push(`<b>${actor.name}</b> recognizes lure of the Leviathan.`);
|
||||
loreTest.renderRollCard();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let test = await actor.setupSkill('Cool', {
|
||||
appendTitle: ` – ${this.effect.name}`,
|
||||
skipTargets: true,
|
||||
fields: {difficulty: 'easy'},
|
||||
characteristic: 'wp',
|
||||
});
|
||||
await test.roll();
|
||||
|
||||
if (!test.succeeded) {
|
||||
test.result.other.push(`<b>${actor.name}</b> became @Condition[Stunned] by the sight.`);
|
||||
test.renderRollCard();
|
||||
actor.addCondition("stunned");
|
||||
}
|
1
reference_scripts/6ubojp9zwbfJnosT.js
Normal file
1
reference_scripts/6ubojp9zwbfJnosT.js
Normal file
@ -0,0 +1 @@
|
||||
args.actor.system.details.move.value += 1;
|
32
reference_scripts/7w7QA7GBhzZ98OS0.js
Normal file
32
reference_scripts/7w7QA7GBhzZ98OS0.js
Normal file
@ -0,0 +1,32 @@
|
||||
const sin = this.effect.sourceActor.system.status.sin.value;
|
||||
const result = await WFRP_Tables.rollTable("manann-mood-made-meaningless", sin);
|
||||
let match = result.text.match(/b>([^<]+)/i);
|
||||
let key = match[1];
|
||||
let roll = new Roll("5d10");
|
||||
let value = undefined;
|
||||
|
||||
await this.script.scriptMessage(result.text, {flavor: result.title});
|
||||
|
||||
switch (key) {
|
||||
case 'Stromfels Triumphant!':
|
||||
value = 0;
|
||||
break;
|
||||
case 'Stromfels Ascends!':
|
||||
await roll.evaluate();
|
||||
if (this.actor.system.status.mood.value > 0)
|
||||
value = -roll.total;
|
||||
else if (this.actor.system.status.mood.value < 0)
|
||||
value = roll.total;
|
||||
break;
|
||||
case 'No effect.':
|
||||
break;
|
||||
case 'Manann Provoked!':
|
||||
await roll.evaluate();
|
||||
value = -roll.total;
|
||||
break;
|
||||
}
|
||||
|
||||
if (roll._evaluated)
|
||||
await roll.toMessage();
|
||||
|
||||
await this.effect.setFlag("wfrp4e-soc", "m4result", {result: key, value});
|
6
reference_scripts/86ivOsBQAuu0UmFg.js
Normal file
6
reference_scripts/86ivOsBQAuu0UmFg.js
Normal file
@ -0,0 +1,6 @@
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {fields : {difficulty : "hard"}, appendTitle : ` - ${this.effect.name}`, skipTargets: true});
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
{
|
||||
this.actor.addCondition("poisoned");
|
||||
}
|
53
reference_scripts/8xqYrBIf1Zhlwizg.js
Normal file
53
reference_scripts/8xqYrBIf1Zhlwizg.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished raisint <em>the anchor</em>.</p>`;
|
||||
const test = 'Strength';
|
||||
const difficulty = 'vhard';
|
||||
const target = 20;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
3
reference_scripts/9HWEDsnNxSykqbF5.js
Normal file
3
reference_scripts/9HWEDsnNxSykqbF5.js
Normal file
@ -0,0 +1,3 @@
|
||||
args.actor.system.details.move.value += 3;
|
||||
args.actor.system.status.carries.max = Math.floor(args.actor.system.status.carries.max * 0.25);
|
||||
args.actor.system.details.price.gc *= 1.1;
|
2
reference_scripts/AFiB20FaOBmBv2Kz.js
Normal file
2
reference_scripts/AFiB20FaOBmBv2Kz.js
Normal file
@ -0,0 +1,2 @@
|
||||
if (args.actorsystem.details.move.sail.value > 0)
|
||||
args.actor.system.details.move.sail.value = Math.floor(args.actor.system.details.move.sail.value * .5);
|
1
reference_scripts/AaPPmnv7AtxsRVUs.js
Normal file
1
reference_scripts/AaPPmnv7AtxsRVUs.js
Normal file
@ -0,0 +1 @@
|
||||
args.actor.details.move.value = 1;
|
28
reference_scripts/BVNKF9omCppWPLys.js
Normal file
28
reference_scripts/BVNKF9omCppWPLys.js
Normal file
@ -0,0 +1,28 @@
|
||||
let actor = game.user.character ?? canvas.tokens.controlled[0]?.actor;
|
||||
if (!actor || !(actor.system instanceof StandardActorModel))
|
||||
return ui.notifications.warn("You must control an Actor capable of performing a Strength Test");
|
||||
|
||||
let test = await actor.setupCharacteristic("s", {
|
||||
skipTargets: true,
|
||||
appendTitle: " - Bailing Out",
|
||||
fields: {
|
||||
difficulty: "challenging"
|
||||
},
|
||||
context: {
|
||||
success: "Reduced the Holed rating!"
|
||||
}
|
||||
});
|
||||
|
||||
await test.roll();
|
||||
if (test.succeeded) {
|
||||
let SL = parseInt(test.result.SL);
|
||||
let name = this.effect.name.replace(/\d+/, rating => parseInt(rating) - SL);
|
||||
await this.effect.update({name});
|
||||
}
|
||||
|
||||
let rating = parseInt(this.effect.name.match(/\d+/)?.[0]);
|
||||
if (rating <= 1) {
|
||||
const scriptData = this.effect.flags.wfrp4e.scriptData;
|
||||
scriptData[2].trigger = '';
|
||||
await this.effect.update({disabled: true, "flags.wfrp4e.scriptData": scriptData});
|
||||
}
|
11
reference_scripts/BZETMpgrI5k1ol5b.js
Normal file
11
reference_scripts/BZETMpgrI5k1ol5b.js
Normal file
@ -0,0 +1,11 @@
|
||||
// If the creature currently has a Surprised, Unconscious, or Entangled Condition, it does not gain this Advantage.
|
||||
const surprised = this.actor.hasCondition("surprised")
|
||||
const unconscious = this.actor.hasCondition("unconscious")
|
||||
const entangled = this.actor.hasCondition("entangled")
|
||||
if (entangled || unconscious || surprised) return
|
||||
|
||||
// If, at the beginning of its turn, this creature does not have at least Rating Advantage points, its Advantage pool immediately increases to Rating.
|
||||
const grimRating = parseInt(this.item.specification.value) || 1
|
||||
if (grimRating > this.actor.status.advantage.value) {
|
||||
this.actor.setAdvantage(grimRating)
|
||||
}
|
3
reference_scripts/C69xngEMghfwUx13.js
Normal file
3
reference_scripts/C69xngEMghfwUx13.js
Normal file
@ -0,0 +1,3 @@
|
||||
let easier = ['challenging', 'average', 'easy', 'veasy'];
|
||||
if (easier.includes(args.fields.difficulty))
|
||||
args.fields.difficulty = "difficult";
|
2
reference_scripts/CD4RnDpXZ9hnqVPQ.js
Normal file
2
reference_scripts/CD4RnDpXZ9hnqVPQ.js
Normal file
@ -0,0 +1,2 @@
|
||||
if (!this.actor.hasCondition("entangled"))
|
||||
this.actor.addCondition("entangled");
|
10
reference_scripts/CS6O7UUjQcUJoOUP.js
Normal file
10
reference_scripts/CS6O7UUjQcUJoOUP.js
Normal file
@ -0,0 +1,10 @@
|
||||
if (args.test.failed)
|
||||
{
|
||||
let SL = Number(args.test.result.SL)
|
||||
if (SL <= -2 && SL > -4)
|
||||
this.actor.addCondition("stunned")
|
||||
else if (SL <= -4 && SL > -6)
|
||||
this.script.scriptMessage(this.actor.prototypeToken.name + " must make a <b>Willpower</b> Test or fall @Condition[Prone].")
|
||||
else if (SL <= -6)
|
||||
this.actor.addCondition("unconscious")
|
||||
}
|
3
reference_scripts/Dzi2CKpYapRGwNVr.js
Normal file
3
reference_scripts/Dzi2CKpYapRGwNVr.js
Normal file
@ -0,0 +1,3 @@
|
||||
if (args.actor.system instanceof StandardActorModel) {
|
||||
args.actor.addCondition("unconscious");
|
||||
}
|
6
reference_scripts/E3om295BMQojnM2F.js
Normal file
6
reference_scripts/E3om295BMQojnM2F.js
Normal file
@ -0,0 +1,6 @@
|
||||
let fatigued = this.actor.hasCondition("fatigued")
|
||||
if (fatigued)
|
||||
{
|
||||
fatigued.delete();
|
||||
this.script.scriptNotification("Removed Fatigued")
|
||||
}
|
1
reference_scripts/EBNrA6FNX4d05EUx.js
Normal file
1
reference_scripts/EBNrA6FNX4d05EUx.js
Normal file
@ -0,0 +1 @@
|
||||
return !args.options.crewTest;
|
31
reference_scripts/EC8cZmqrE095cDc2.js
Normal file
31
reference_scripts/EC8cZmqrE095cDc2.js
Normal file
@ -0,0 +1,31 @@
|
||||
const actor = args.actor;
|
||||
|
||||
if (actor.itemTypes.skill.find(s => s.name === "Lore (Riverways)")) {
|
||||
const loreTest = await actor.setupSkill('Lore (Riverways)', {
|
||||
appendTitle: ` – ${this.effect.name}`,
|
||||
skipTargets: true,
|
||||
fields: {difficulty: 'hard'},
|
||||
characteristic: 'int',
|
||||
});
|
||||
await loreTest.roll();
|
||||
|
||||
if (loreTest.succeeded) {
|
||||
loreTest.result.other.push(`<b>${actor.name}</b> recognizes lures of Lurkerfish.`);
|
||||
loreTest.renderRollCard();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let test = await actor.setupSkill('Cool', {
|
||||
appendTitle: ` – ${this.effect.name}`,
|
||||
skipTargets: true,
|
||||
fields: {difficulty: 'easy'},
|
||||
characteristic: 'wp',
|
||||
});
|
||||
await test.roll();
|
||||
|
||||
if (!test.succeeded) {
|
||||
test.result.other.push(`<b>${actor.name}</b> became beguiled by the sight and unable to perform any action except moving towards the light.`);
|
||||
test.renderRollCard();
|
||||
actor.addCondition("unconscious");
|
||||
}
|
1
reference_scripts/EDAMEOzdBfkoKHxP.js
Normal file
1
reference_scripts/EDAMEOzdBfkoKHxP.js
Normal file
@ -0,0 +1 @@
|
||||
return args.skill?.name !== game.i18n.localize("NAME.Navigation");
|
8
reference_scripts/F2u4L4o0r1LTWeWK.js
Normal file
8
reference_scripts/F2u4L4o0r1LTWeWK.js
Normal file
@ -0,0 +1,8 @@
|
||||
if (isNaN(parseInt(this.item.system.specification.value)))
|
||||
{
|
||||
let value = await ValueDialog.create("Enter Terror value", this.effect.name);
|
||||
if (value)
|
||||
{
|
||||
this.item.updateSource({"system.specification.value" : value});
|
||||
}
|
||||
}
|
18
reference_scripts/FPYNcxm21678boLT.js
Normal file
18
reference_scripts/FPYNcxm21678boLT.js
Normal file
@ -0,0 +1,18 @@
|
||||
if (args.attackerTest.data.preData.rollClass !== "CharacteristicTest") return;
|
||||
if (args.attackerTest.data.preData.characteristic !== "s") return;
|
||||
|
||||
const SL = args.opposedTest.data.opposeResult.differenceSL;
|
||||
|
||||
const targetId = this.effect.getFlag("wfrp4e", "target");
|
||||
const target = canvas.scene.tokens.get(targetId);
|
||||
|
||||
if (SL > 4) {
|
||||
args.opposedTest.data.opposeResult.other.push(`<b>${args.defenderTest.actor.name}</b> was forced to let go of <b>${target.name}</b>.`);
|
||||
return await this.effect.delete();
|
||||
}
|
||||
|
||||
if (SL > 0) {
|
||||
args.opposedTest.data.opposeResult.other.push(`<b>${args.defenderTest.actor.name}</b> was prevented from squeezing <b>${target.name}</b> for one turn.`);
|
||||
let turns = this.effect.getFlag("wfrp4e", "turns");
|
||||
this.effect.setFlag("wfrp4e", "turns", turns + 1);
|
||||
}
|
53
reference_scripts/FtZf56VI6Qsspu0D.js
Normal file
53
reference_scripts/FtZf56VI6Qsspu0D.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Trade (Carpenter)';
|
||||
const difficulty = 'difficult';
|
||||
const target = 20;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
1
reference_scripts/Fwk8WA8NfRivLFWJ.js
Normal file
1
reference_scripts/Fwk8WA8NfRivLFWJ.js
Normal file
@ -0,0 +1 @@
|
||||
return args.skill?.name === "Entertain (Singing)";
|
53
reference_scripts/GsAyB5xnK3ASeoah.js
Normal file
53
reference_scripts/GsAyB5xnK3ASeoah.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Trade (Carpentry)';
|
||||
const difficulty = 'easy';
|
||||
const target = 20;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
53
reference_scripts/H85k4L3yICm7cfIk.js
Normal file
53
reference_scripts/H85k4L3yICm7cfIk.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Sail';
|
||||
const difficulty = 'easy';
|
||||
const target = 10;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
11
reference_scripts/HUKzssLxeQo1wbx9.js
Normal file
11
reference_scripts/HUKzssLxeQo1wbx9.js
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {fields: {difficulty : "average"}, appendTitle : " - Wounded"})
|
||||
await test.roll();
|
||||
if (test.failed)
|
||||
{
|
||||
fromUuid("Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb").then(disease => {
|
||||
this.actor.createEmbeddedDocuments("Item", [disease.toObject()])
|
||||
this.script.scriptNotification("Gained " + disease.name)
|
||||
})
|
||||
}
|
||||
|
8
reference_scripts/HYrl5aNMm8BAdqH7.js
Normal file
8
reference_scripts/HYrl5aNMm8BAdqH7.js
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
let modifier = 0
|
||||
if (this.effect.name.includes("Moderate"))
|
||||
modifier = -20
|
||||
else
|
||||
modifier = -10
|
||||
args.fields.modifier += modifier
|
||||
|
@ -6,13 +6,16 @@ if (!currentCareer) return
|
||||
|
||||
|
||||
let inCurrentCareer = currentCareer.system.skills.includes(skill);
|
||||
if (existingSkill && inCurrentCareer)
|
||||
let perfectPitchAdded = this.actor.getFlag("wfrp4e", "perfectPitchAdded") || {};
|
||||
if (existingSkill && inCurrentCareer && !perfectPitchAdded[existingSkill.name])
|
||||
{
|
||||
existingSkill.system.advances.costModifier = -5;
|
||||
}
|
||||
else
|
||||
{
|
||||
perfectPitchAdded[skill] = true;
|
||||
currentCareer.system.skills.push(skill);
|
||||
setProperty(this.actor, "flags.wfrp4e.perfectPitchAdded", perfectPitchAdded)
|
||||
}
|
||||
|
||||
|
||||
|
2
reference_scripts/IOroJBqTsWvoakJN.js
Normal file
2
reference_scripts/IOroJBqTsWvoakJN.js
Normal file
@ -0,0 +1,2 @@
|
||||
if (args.actorsystem.details.move.oars.value > 0)
|
||||
args.actor.system.details.move.oars.value -= 2;
|
7
reference_scripts/IrkWq7IiFS65bTvC.js
Normal file
7
reference_scripts/IrkWq7IiFS65bTvC.js
Normal file
@ -0,0 +1,7 @@
|
||||
if (this.actor.flags.holed.half !== true) return;
|
||||
if (this.actor.flags.holed.reminded === true) return;
|
||||
|
||||
const speaker = ChatMessage.getSpeaker({actor: this.actor});
|
||||
this.script.scriptMessage(`<p><b>${speaker.alias}</b> sits heavily in the water. Unless the cargo is waterproof, it loses [[d10]]% of its value.</p>`);
|
||||
|
||||
this.actor.flags.holed.reminded = true;
|
19
reference_scripts/IzoOmDywGLqLNljN.js
Normal file
19
reference_scripts/IzoOmDywGLqLNljN.js
Normal file
@ -0,0 +1,19 @@
|
||||
let skill = `Language (Magick)`
|
||||
let currentCareer = this.actor.system.currentCareer;
|
||||
let existingSkill = this.actor.itemTypes.skill.find(i => i.name == skill);
|
||||
|
||||
if (!currentCareer) return
|
||||
|
||||
|
||||
let inCurrentCareer = currentCareer.system.skills.includes(skill);
|
||||
let witchAdded = actor.getFlag("wfrp4e", "witchAdded") || {};
|
||||
if (existingSkill && inCurrentCareer && !witchAdded[existingSkill.name])
|
||||
{
|
||||
existingSkill.system.advances.costModifier = -5;
|
||||
}
|
||||
else
|
||||
{
|
||||
witchAdded[skill] = true;
|
||||
currentCareer.system.skills.push(skill);
|
||||
setProperty(this.actor, "flags.wfrp4e.witchAdded", witchAdded)
|
||||
}
|
1
reference_scripts/JBoKPBr27C3PMoSD.js
Normal file
1
reference_scripts/JBoKPBr27C3PMoSD.js
Normal file
@ -0,0 +1 @@
|
||||
return args.skill?.name === game.i18n.localize("NAME.Navigation");
|
18
reference_scripts/JXBUE0XuJOJNG7zE.js
Normal file
18
reference_scripts/JXBUE0XuJOJNG7zE.js
Normal file
@ -0,0 +1,18 @@
|
||||
if (args.totalWoundLoss <= 7) return;
|
||||
|
||||
let options = {
|
||||
appendTitle : " – " + this.effect.name,
|
||||
skipTargets: true,
|
||||
fields: {difficulty: 'average'},
|
||||
characteristic: 'wp',
|
||||
}
|
||||
|
||||
let test = await args.actor.setupSkill('Cool', options);
|
||||
await test.roll();
|
||||
|
||||
if (!test.succeeded) {
|
||||
const targetId = this.effect.getFlag("wfrp4e", "target");
|
||||
const target = canvas.scene.tokens.get(targetId);
|
||||
await this.effect.delete();
|
||||
args.extraMessages.push(`<b>${args.actor.name}</b> lost ${args.totalWoundLoss} Wounds to an attack, which caused it to let go of <b>${target.name}</b>.`);
|
||||
}
|
53
reference_scripts/JhbZWZhOJ23yOBmG.js
Normal file
53
reference_scripts/JhbZWZhOJ23yOBmG.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Trade (Carpentry)';
|
||||
const difficulty = 'hard';
|
||||
const target = 30;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
9
reference_scripts/LjfScVGBf0Egr70E.js
Normal file
9
reference_scripts/LjfScVGBf0Egr70E.js
Normal file
@ -0,0 +1,9 @@
|
||||
let animalCare = this.actor.itemTypes.skill.find(s => s.name === game.i18n.localize("NAME.AnimalCare"));
|
||||
let animalTrainings = this.actor.itemTypes.skill.filter(s => s.name.includes(game.i18n.localize("NAME.AnimalTraining")));
|
||||
|
||||
if (animalCare)
|
||||
animalCare.system.modifier.value += 20;
|
||||
|
||||
for (let training of animalTrainings) {
|
||||
training.system.modifier.value += 30;
|
||||
}
|
4
reference_scripts/MIhYSuJ6MI9B65UT.js
Normal file
4
reference_scripts/MIhYSuJ6MI9B65UT.js
Normal file
@ -0,0 +1,4 @@
|
||||
let specification = Number(this.item.specification.value) || 1;
|
||||
args.actor.system.status.wounds.max += Math.floor(args.actor.system.status.wounds.max * 0.3 * specification);
|
||||
args.actor.system.status.carries.max -= Math.floor(args.actor.system.status.carries.max * 0.1 * specification);
|
||||
args.actor.system.details.price.gc += Math.floor(args.actor.system.details.price.gc * 0.2 * specification);
|
52
reference_scripts/MMv2B8TH7jxNCtdl.js
Normal file
52
reference_scripts/MMv2B8TH7jxNCtdl.js
Normal file
@ -0,0 +1,52 @@
|
||||
let actor = this.actor;
|
||||
let effect = this.effect;
|
||||
let bleedingAmt;
|
||||
let bleedingRoll;
|
||||
let msg = ""
|
||||
|
||||
let damage = effect.conditionValue;
|
||||
let scriptArgs = {msg, damage};
|
||||
await Promise.all(actor.runScripts("preApplyCondition", {effect, data : scriptArgs}))
|
||||
msg = scriptArgs.msg;
|
||||
damage = scriptArgs.damage;
|
||||
msg += await actor.applyBasicDamage(damage, {damageType : game.wfrp4e.config.DAMAGE_TYPE.IGNORE_ALL, minimumOne : false, suppressMsg : true})
|
||||
|
||||
if (actor.status.wounds.value == 0 && !actor.hasCondition("unconscious"))
|
||||
{
|
||||
await actor.addCondition("unconscious")
|
||||
msg += "<br>" + game.i18n.format("BleedUnc", {name: actor.prototypeToken.name })
|
||||
}
|
||||
|
||||
if (actor.hasCondition("unconscious"))
|
||||
{
|
||||
bleedingAmt = effect.conditionValue;
|
||||
bleedingRoll = (await new Roll("1d100").roll()).total;
|
||||
if (bleedingRoll <= bleedingAmt * 10)
|
||||
{
|
||||
msg += "<br>" + game.i18n.format("BleedFail", {name: actor.prototypeToken.name}) + " (" + game.i18n.localize("Rolled") + " " + bleedingRoll + ")";
|
||||
await actor.addCondition("dead")
|
||||
}
|
||||
else if (bleedingRoll % 11 == 0)
|
||||
{
|
||||
msg += "<br>" + game.i18n.format("BleedCrit", { name: actor.prototypeToken.name } ) + " (" + game.i18n.localize("Rolled") + bleedingRoll + ")"
|
||||
await actor.removeCondition("bleeding")
|
||||
}
|
||||
else
|
||||
{
|
||||
msg += "<br>" + game.i18n.localize("BleedRoll") + ": " + bleedingRoll;
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(actor.runScripts("applyCondition", {effect, data : {bleedingRoll}}))
|
||||
if (args.suppressMessage)
|
||||
{
|
||||
let messageData = game.wfrp4e.utility.chatDataSetup(msg);
|
||||
messageData.speaker = {alias: this.effect.name}
|
||||
messageData.flavor = this.effect.name;
|
||||
return messageData
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.script.scriptMessage(msg)
|
||||
}
|
||||
|
1
reference_scripts/MMx8f5uJ15XOgJGg.js
Normal file
1
reference_scripts/MMx8f5uJ15XOgJGg.js
Normal file
@ -0,0 +1 @@
|
||||
return args.skill?.name !== game.i18n.localize("NAME.Row") && args.skill?.name !== game.i18n.localize("NAME.Swim") && !args.skill?.name.includes(game.i18n.localize("NAME.Sail"));
|
5
reference_scripts/Me1wS5XdqUEy7OGt.js
Normal file
5
reference_scripts/Me1wS5XdqUEy7OGt.js
Normal file
@ -0,0 +1,5 @@
|
||||
let loc = (await game.wfrp4e.tables.rollTable("hitloc")).result;
|
||||
let critTable = `crit${this.generalizeTable(loc)`;
|
||||
let crit = (await game.wfrp4e.tables.rollTable(critTable)).result;
|
||||
|
||||
this.script.scriptMessage(`{this.actor.name} suffers a ${crit} (location : ${loc}). Do not apply bleeding or any additonnal wounds.`);
|
8
reference_scripts/NI3ZzIAlpQfVSjvf.js
Normal file
8
reference_scripts/NI3ZzIAlpQfVSjvf.js
Normal file
@ -0,0 +1,8 @@
|
||||
if (isNaN(parseInt(this.item.system.specification.value)))
|
||||
{
|
||||
let value = await ValueDialog.create("Enter Fear value", this.item.name);
|
||||
if (value)
|
||||
{
|
||||
this.item.updateSource({"system.specification.value" : value});
|
||||
}
|
||||
}
|
13
reference_scripts/O45vpR4jDbQQnmvJ.js
Normal file
13
reference_scripts/O45vpR4jDbQQnmvJ.js
Normal file
@ -0,0 +1,13 @@
|
||||
let items = [];
|
||||
|
||||
let etiquette = (await fromUuid("Compendium.wfrp4e-core.items.Item.sYbgpSnRqSZWgwFP")).toObject();
|
||||
etiquette.name += " (Followers of Khorne)";
|
||||
|
||||
items.push(etiquette);
|
||||
|
||||
let animosity = (await fromUuid("Compendium.wfrp4e-core.items.Item.Q2MCUrG2HppMcvN0")).toObject();
|
||||
animosity.name = animosity.name.replace("(Target)", "(Followers of Slaanesh)");
|
||||
|
||||
items.push(animosity);
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", items, {fromEffect : this.effect.id});
|
53
reference_scripts/OsLXutfXyQCAkhAf.js
Normal file
53
reference_scripts/OsLXutfXyQCAkhAf.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Sail';
|
||||
const difficulty = 'average';
|
||||
const target = 30;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
53
reference_scripts/Pn5fekTbkwlr61XU.js
Normal file
53
reference_scripts/Pn5fekTbkwlr61XU.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Trade (Engineer)';
|
||||
const difficulty = 'easy';
|
||||
const target = 10;
|
||||
|
||||
const extendedTestData = {
|
||||
name: this.item.name,
|
||||
type: "extendedTest",
|
||||
img: this.item.img,
|
||||
system: {
|
||||
SL: {
|
||||
current: 0,
|
||||
target: target
|
||||
},
|
||||
test: {
|
||||
value: test
|
||||
},
|
||||
completion: {
|
||||
value: "remove"
|
||||
},
|
||||
difficulty: {
|
||||
value: difficulty
|
||||
}
|
||||
},
|
||||
effects: [
|
||||
{
|
||||
name: `Repair the ${this.item.name}`,
|
||||
icon: this.item.img,
|
||||
flags: {
|
||||
wfrp4e: {
|
||||
applicationData: {
|
||||
type: "document",
|
||||
documentType: "Item"
|
||||
},
|
||||
scriptData: [
|
||||
{
|
||||
label: this.item.name,
|
||||
script: `
|
||||
let id = this.item.flags.wfrp4e.fromEffect;
|
||||
let effect = this.actor.appliedEffects.find(e => e.id === id);
|
||||
this.script.scriptMessage("${repaired_message}");
|
||||
await effect.item.delete();
|
||||
`,
|
||||
trigger: "deleteEffect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await this.actor.createEmbeddedDocuments("Item", [extendedTestData], {fromEffect: this.effect.id});
|
10
reference_scripts/PsO7aTdELJt35eHP.js
Normal file
10
reference_scripts/PsO7aTdELJt35eHP.js
Normal file
@ -0,0 +1,10 @@
|
||||
let morale = await new Roll("-1d10").roll();
|
||||
let mood = await new Roll("-2d10").roll();
|
||||
|
||||
morale.toMessage(this.script.getChatData({flavor : "Morale"}));
|
||||
mood.toMessage(this.script.getChatData({flavor : "Manann's Mood"}));
|
||||
|
||||
await this.actor.system.status.morale.addEntry("Albatross Died", morale.total)
|
||||
await this.actor.system.status.mood.addEntry("Albatross Died", mood.total);
|
||||
|
||||
this.effect.delete();
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user