Sync to v7.2.0
This commit is contained in:
parent
90214619d6
commit
da6fe66887
71
fr.json
71
fr.json
@ -365,6 +365,8 @@
|
||||
"ITEM.Maximum":"Maximum",
|
||||
"ITEM.RandomVortex":"Vortex aléatoire",
|
||||
"ITEM.Ritual":"Rituel",
|
||||
"ITEM.Standard":"Standard",
|
||||
"ITEM.TestSkill":"Test de compétence",
|
||||
|
||||
"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 !",
|
||||
@ -839,6 +841,9 @@
|
||||
"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",
|
||||
|
||||
"CAREER.DifferentClass": "Entrée dans une nouvelle Classe",
|
||||
"CAREER.LeaveIncomplete": "Départ d'une carrière incomplète",
|
||||
@ -920,6 +925,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 +1080,15 @@
|
||||
"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",
|
||||
|
||||
"Error.SpeciesSkills" : "Impossible d'ajouter des compétences pour les races",
|
||||
"Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races",
|
||||
@ -1112,6 +1128,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 +1755,7 @@
|
||||
"NAME.Trade":"Métier",
|
||||
"NAME.Arcane":"Arcane",
|
||||
"NAME.Lingering":"Persistant",
|
||||
"NAME.FearExtendedTest":"Test étendu de Peur",
|
||||
|
||||
"SPEC.Tiny" : "Minuscule",
|
||||
"SPEC.Little" : "Très petite",
|
||||
@ -1852,6 +1873,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 +2082,24 @@
|
||||
"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",
|
||||
|
||||
"CONFIGURE.CalcTokenSize" : "Calculer automatiquement la taille des Tokens",
|
||||
"CONFIGURE.CalcRun" : "Calculer automatiquement la vitesse de course",
|
||||
@ -2195,6 +2235,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 +2312,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 +2390,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 +2475,24 @@
|
||||
"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}"
|
||||
|
||||
}
|
||||
|
@ -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")
|
||||
@ -294,13 +294,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.instance.converters.tableResults(results)
|
||||
}
|
||||
return results
|
||||
},
|
||||
|
@ -1 +1 @@
|
||||
MANIFEST-000746
|
||||
MANIFEST-000756
|
||||
|
@ -1,7 +1,3 @@
|
||||
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/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
|
||||
|
@ -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/06/01-20:41:11.767917 7f47516006c0 Recovering log #751
|
||||
2024/06/01-20:41:11.778523 7f47516006c0 Delete type=0 #751
|
||||
2024/06/01-20:41:11.778570 7f47516006c0 Delete type=3 #750
|
||||
2024/06/01-20:41:56.329216 7f474f8006c0 Level-0 table #755: started
|
||||
2024/06/01-20:41:56.329241 7f474f8006c0 Level-0 table #755: 0 bytes OK
|
||||
2024/06/01-20:41:56.335388 7f474f8006c0 Delete type=0 #753
|
||||
2024/06/01-20:41:56.348176 7f474f8006c0 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-000758
|
||||
|
@ -1,7 +1,3 @@
|
||||
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/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
|
||||
|
@ -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/06/01-20:41:11.781332 7f47520006c0 Recovering log #753
|
||||
2024/06/01-20:41:11.791330 7f47520006c0 Delete type=0 #753
|
||||
2024/06/01-20:41:11.791383 7f47520006c0 Delete type=3 #752
|
||||
2024/06/01-20:41:56.335472 7f474f8006c0 Level-0 table #757: started
|
||||
2024/06/01-20:41:56.335492 7f474f8006c0 Level-0 table #757: 0 bytes OK
|
||||
2024/06/01-20:41:56.341778 7f474f8006c0 Delete type=0 #755
|
||||
2024/06/01-20:41:56.348186 7f474f8006c0 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-000756
|
||||
|
@ -1,7 +1,3 @@
|
||||
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/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
|
||||
|
@ -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/06/01-20:41:11.810548 7f47502006c0 Recovering log #751
|
||||
2024/06/01-20:41:11.865308 7f47502006c0 Delete type=0 #751
|
||||
2024/06/01-20:41:11.865356 7f47502006c0 Delete type=3 #750
|
||||
2024/06/01-20:41:56.348302 7f474f8006c0 Level-0 table #755: started
|
||||
2024/06/01-20:41:56.348325 7f474f8006c0 Level-0 table #755: 0 bytes OK
|
||||
2024/06/01-20:41:56.354398 7f474f8006c0 Delete type=0 #753
|
||||
2024/06/01-20:41:56.385741 7f474f8006c0 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-000756
|
||||
|
@ -1,7 +1,3 @@
|
||||
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/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
|
||||
|
@ -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/06/01-20:41:11.755391 7f47502006c0 Recovering log #751
|
||||
2024/06/01-20:41:11.764693 7f47502006c0 Delete type=0 #751
|
||||
2024/06/01-20:41:11.764768 7f47502006c0 Delete type=3 #750
|
||||
2024/06/01-20:41:56.312298 7f474f8006c0 Level-0 table #755: started
|
||||
2024/06/01-20:41:56.312320 7f474f8006c0 Level-0 table #755: 0 bytes OK
|
||||
2024/06/01-20:41:56.318409 7f474f8006c0 Delete type=0 #753
|
||||
2024/06/01-20:41:56.318543 7f474f8006c0 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-000756
|
||||
|
@ -1,7 +1,3 @@
|
||||
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/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
|
||||
|
@ -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/06/01-20:41:11.741198 7f4750c006c0 Recovering log #751
|
||||
2024/06/01-20:41:11.752851 7f4750c006c0 Delete type=0 #751
|
||||
2024/06/01-20:41:11.752903 7f4750c006c0 Delete type=3 #750
|
||||
2024/06/01-20:41:56.304431 7f474f8006c0 Level-0 table #755: started
|
||||
2024/06/01-20:41:56.304456 7f474f8006c0 Level-0 table #755: 0 bytes OK
|
||||
2024/06/01-20:41:56.312191 7f474f8006c0 Delete type=0 #753
|
||||
2024/06/01-20:41:56.318536 7f474f8006c0 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-000399
|
||||
|
@ -1,8 +1,3 @@
|
||||
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/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
|
||||
|
@ -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/06/01-20:41:11.796336 7f4750c006c0 Recovering log #394
|
||||
2024/06/01-20:41:11.805903 7f4750c006c0 Delete type=0 #394
|
||||
2024/06/01-20:41:11.805963 7f4750c006c0 Delete type=3 #393
|
||||
2024/06/01-20:41:56.341877 7f474f8006c0 Level-0 table #398: started
|
||||
2024/06/01-20:41:56.341900 7f474f8006c0 Level-0 table #398: 0 bytes OK
|
||||
2024/06/01-20:41:56.348074 7f474f8006c0 Delete type=0 #396
|
||||
2024/06/01-20:41:56.348194 7f474f8006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
|
||||
2024/06/01-20:41:56.348213 7f474f8006c0 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();
|
1
reference_scripts/Q5gh5Y9dCdclcwsD.js
Normal file
1
reference_scripts/Q5gh5Y9dCdclcwsD.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")})`
|
53
reference_scripts/Q7eULXQ9AfDRmUGO.js
Normal file
53
reference_scripts/Q7eULXQ9AfDRmUGO.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 = 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});
|
4
reference_scripts/QHQ7XmFOjT9wXgw1.js
Normal file
4
reference_scripts/QHQ7XmFOjT9wXgw1.js
Normal file
@ -0,0 +1,4 @@
|
||||
if (args.actorsystem.details.move.oars.value > 0)
|
||||
args.actor.system.details.move.oars.value -= 1;
|
||||
|
||||
args.actor.system.details.man -= 2;
|
3
reference_scripts/QNxmImpLTou6WdMQ.js
Normal file
3
reference_scripts/QNxmImpLTou6WdMQ.js
Normal file
@ -0,0 +1,3 @@
|
||||
let test = args.test
|
||||
if (test.result.minormis || test.result.majormis || test.result.catastrophicmis)
|
||||
test.result.other.push("Can make a <b>Difficult (-10) Willpower</b> Test to prevent the Miscast")
|
18
reference_scripts/QfTBRGXVfwQSghmd.js
Normal file
18
reference_scripts/QfTBRGXVfwQSghmd.js
Normal file
@ -0,0 +1,18 @@
|
||||
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)
|
||||
wounds.value += healed
|
||||
|
||||
if (wounds.value > wounds.max)
|
||||
wounds.value = wounds.max
|
||||
|
||||
args.actor.update({ "system.status.wounds": wounds })
|
||||
ChatMessage.create({ content: `${this.actor.prototypeToken.name} regains ${healed} Wounds`, speaker: { alias: this.effect.name } })
|
||||
} else {
|
||||
ui.notifications.warn("Target actor has no Bestial trait")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
53
reference_scripts/R8FBHZaaARA3z9pB.js
Normal file
53
reference_scripts/R8FBHZaaARA3z9pB.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 = 'hard';
|
||||
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});
|
53
reference_scripts/R8ecKGRzOr4ThvVa.js
Normal file
53
reference_scripts/R8ecKGRzOr4ThvVa.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Maintenance Crew Test';
|
||||
const difficulty = 'hard';
|
||||
const target = 80;
|
||||
|
||||
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/RPqgRUkiLY5thVbC.js
Normal file
53
reference_scripts/RPqgRUkiLY5thVbC.js
Normal file
@ -0,0 +1,53 @@
|
||||
const repaired_message = `<p>Finished repairing <em>${this.item.name}</em>.</p>`;
|
||||
const test = 'Strength';
|
||||
const difficulty = 'average';
|
||||
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});
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user