Compare commits
	
		
			12 Commits
		
	
	
		
			foundryvtt
			...
			foundryvtt
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c0e42f7f59 | |||
| f0a0b055ea | |||
| c51877f945 | |||
| e7a56e15a2 | |||
| 35ae4012f6 | |||
| 3cec04ae8c | |||
| b7bb897a46 | |||
| 4ebaad012b | |||
| 8a5c62fafd | |||
| 2c5ff15830 | |||
| e46d68b315 | |||
| da6fe66887 | 
| @@ -4,7 +4,7 @@ | |||||||
|     "Career Tables": "Table des Carrières", |     "Career Tables": "Table des Carrières", | ||||||
|     "Character Creation": "Création de Personnage", |     "Character Creation": "Création de Personnage", | ||||||
|     "Core Rulebook": "Livre de Base", |     "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", |     "Critical Hit Tables": "Tables de Critiques", | ||||||
|     "GM Booklet": "Livret du MJ", |     "GM Booklet": "Livret du MJ", | ||||||
|     "Hit Location": "Table de Localisation", |     "Hit Location": "Table de Localisation", | ||||||
|   | |||||||
							
								
								
									
										79
									
								
								fr.json
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								fr.json
									
									
									
									
									
								
							| @@ -365,7 +365,9 @@ | |||||||
|     "ITEM.Maximum":"Maximum", |     "ITEM.Maximum":"Maximum", | ||||||
|     "ITEM.RandomVortex":"Vortex aléatoire", |     "ITEM.RandomVortex":"Vortex aléatoire", | ||||||
|     "ITEM.Ritual":"Rituel", |     "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.", |     "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 !", |     "BleedFail":"<b>{name}</b> meur de sa perte de sang !", | ||||||
|     "BleedRoll":"Jet d'Hémmoragie", |     "BleedRoll":"Jet d'Hémmoragie", | ||||||
| @@ -839,7 +841,10 @@ | |||||||
|     "CHARGEN.Trappings.Remove":"Supprimer", |     "CHARGEN.Trappings.Remove":"Supprimer", | ||||||
|     "CHARGEN.Career.LoadingCareers":"Chargement des carrières...", |     "CHARGEN.Career.LoadingCareers":"Chargement des carrières...", | ||||||
|     "CHARGEN.Message.RerolledDuplicateTalent":"<p>Relance du Talent dupliqué: <b>{rolled}</b>!</p>", |     "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.DifferentClass": "Entrée dans une nouvelle Classe", | ||||||
|     "CAREER.LeaveIncomplete": "Départ d'une carrière incomplète", |     "CAREER.LeaveIncomplete": "Départ d'une carrière incomplète", | ||||||
|     "CAREER.LeaveComplete": "Départ d'une carrière complétée", |     "CAREER.LeaveComplete": "Départ d'une carrière complétée", | ||||||
| @@ -920,6 +925,8 @@ | |||||||
|     "DIALOG.MemorizeSpell":"Mémoriser un Sort", |     "DIALOG.MemorizeSpell":"Mémoriser un Sort", | ||||||
|     "DIALOG.MemorizeSpellContent":"Mémoriser ce sort vous coutera {xp} XP.", |     "DIALOG.MemorizeSpellContent":"Mémoriser ce sort vous coutera {xp} XP.", | ||||||
|     "DIALOG.ErrorMustSelectItem":"Au moins 1 item doit être selectionné", |     "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.CareerChoose" : "Choisissez votre carrière", | ||||||
|     "CHAT.DamageError" : "Erreur de calcul des dégâts:", |     "CHAT.DamageError" : "Erreur de calcul des dégâts:", | ||||||
| @@ -1073,7 +1080,16 @@ | |||||||
|     "CHAT.ApplyHack":"Appliquer Hack", |     "CHAT.ApplyHack":"Appliquer Hack", | ||||||
|     "CHAT.ModifiersBreakdown":"Liste des modificateurs", |     "CHAT.ModifiersBreakdown":"Liste des modificateurs", | ||||||
|     "CHAT.Place":"Placer", |     "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.SpeciesSkills" : "Impossible d'ajouter des compétences pour les races", | ||||||
|     "Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races", |     "Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races", | ||||||
|     "Error.CriticalWound" : "Erreur lors de l'application des blessures", |     "Error.CriticalWound" : "Erreur lors de l'application des blessures", | ||||||
| @@ -1112,6 +1128,10 @@ | |||||||
|     "ERROR.PrayerAoEOvercast":"La zone d'effet des Prières ne peut être augemntée", |     "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.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.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.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.", |     "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.Trade":"Métier", | ||||||
|     "NAME.Arcane":"Arcane", |     "NAME.Arcane":"Arcane", | ||||||
|     "NAME.Lingering":"Persistant", |     "NAME.Lingering":"Persistant", | ||||||
|  |     "NAME.FearExtendedTest":"Test étendu de Peur", | ||||||
|  |  | ||||||
|     "SPEC.Tiny" : "Minuscule", |     "SPEC.Tiny" : "Minuscule", | ||||||
|     "SPEC.Little" : "Très petite", |     "SPEC.Little" : "Très petite", | ||||||
| @@ -1852,6 +1873,7 @@ | |||||||
|     "SHEET.Target":"Cible", |     "SHEET.Target":"Cible", | ||||||
|     "SHEET.ToggleTraits":"Basculer le(s) Trait(s) de Creature", |     "SHEET.ToggleTraits":"Basculer le(s) Trait(s) de Creature", | ||||||
|     "SHEET.SortItems":"Trier les items", |     "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. ", |     "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.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.TestNotPermitted": "Vous n'avez pas la permission de réaliser ce test", | ||||||
|     "VEHICLE.ft":"ft", |     "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.CalcTokenSize" : "Calculer automatiquement la taille des Tokens", | ||||||
|     "CONFIGURE.CalcRun" : "Calculer automatiquement la vitesse de course", |     "CONFIGURE.CalcRun" : "Calculer automatiquement la vitesse de course", | ||||||
| @@ -2195,6 +2235,11 @@ | |||||||
|     "TRADE.Excellent": "Excellente", |     "TRADE.Excellent": "Excellente", | ||||||
|     "TRADE.Topshelf": "Suprême", |     "TRADE.Topshelf": "Suprême", | ||||||
|     "TRADE.NoCargoFound":"Il n'y a pas de cargaison disponible à l'achat à <b>{town}</b>.", |     "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.C":"Ca", | ||||||
|     "RANDOMIZER.S":"C", |     "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>", |     "ROLL.HitAnotherEngagedTarget":"<b>Oops! Vous avez touche la mauvaise cible, sélectionnez aléatoirement un personnage et appliquez lui les dommages </b>", | ||||||
|     "Rounds":"rounds", |     "Rounds":"rounds", | ||||||
|     "SHEET.NoCareers":"Aucune carrière trouvée", |     "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.AdditionalRandomTalent":"Talent aléatoire additionnel", | ||||||
|     "CHARGEN.Message.RerolledDuplicate":"<p>Relance de Talent dupliqué: <b>{rolled}</b>!</p>", |     "CHARGEN.Message.RerolledDuplicate":"<p>Relance de Talent dupliqué: <b>{rolled}</b>!</p>", | ||||||
| @@ -2342,7 +2390,9 @@ | |||||||
|     "TYPES.Item.trapping":"Possession", |     "TYPES.Item.trapping":"Possession", | ||||||
|     "TYPES.Item.vehicleMod":"Modification de Véhicule", |     "TYPES.Item.vehicleMod":"Modification de Véhicule", | ||||||
|     "TYPES.Item.weapon":"Arme", |     "TYPES.Item.weapon":"Arme", | ||||||
|      |     "TYPES.Item.vehicleRole":"Role de Véhicule", | ||||||
|  |     "TYPES.Item.vehicleTest":"Test d'équipage de véhicule", | ||||||
|  |  | ||||||
|     "Badger": "Blaireau", |     "Badger": "Blaireau", | ||||||
|     "Badgers": "Blaireaux", |     "Badgers": "Blaireaux", | ||||||
|     "Choose one": "A choisir", |     "Choose one": "A choisir", | ||||||
| @@ -2425,5 +2475,24 @@ | |||||||
|     "Touch": "Toucher",  |     "Touch": "Toucher",  | ||||||
|  |  | ||||||
|     "SOCKET.SendingSocketRequest":"Envoi d'une requête par Socket", |     "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}" | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|     } |     } | ||||||
|   ], |   ], | ||||||
|   "url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr", |   "url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr", | ||||||
|   "version": "7.1.6", |   "version": "7.2.3", | ||||||
|   "esmodules": [ |   "esmodules": [ | ||||||
|     "modules/babele-register.js", |     "modules/babele-register.js", | ||||||
|     "modules/addon-register.js", |     "modules/addon-register.js", | ||||||
| @@ -117,7 +117,7 @@ | |||||||
|     } |     } | ||||||
|   ], |   ], | ||||||
|   "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/raw/v10/module.json", |   "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-7.2.3.zip", | ||||||
|   "id": "wh4-fr-translation", |   "id": "wh4-fr-translation", | ||||||
|   "compatibility": { |   "compatibility": { | ||||||
|     "minimum": "11", |     "minimum": "11", | ||||||
|   | |||||||
| @@ -218,15 +218,15 @@ Hooks.once('init', () => { | |||||||
|  |  | ||||||
|   /*---------------------------------------------------------------------*/ |   /*---------------------------------------------------------------------*/ | ||||||
|   // Converters area |   // Converters area | ||||||
|   if (typeof Babele !== 'undefined') { |   if (game.babele !== 'undefined') { | ||||||
|  |  | ||||||
|     Babele.get().register({ |     game.babele.register({ | ||||||
|       module: 'wh4-fr-translation', |       module: 'wh4-fr-translation', | ||||||
|       lang: 'fr', |       lang: 'fr', | ||||||
|       dir: 'compendium' |       dir: 'compendium' | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     Babele.get().registerConverters({ |     game.babele.registerConverters({ | ||||||
|  |  | ||||||
|       "career_skills": (skills_list) => { |       "career_skills": (skills_list) => { | ||||||
|         let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill") |         let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill") | ||||||
| @@ -294,13 +294,13 @@ Hooks.once('init', () => { | |||||||
|             let career = data.text.match(/{(.*)}/) |             let career = data.text.match(/{(.*)}/) | ||||||
|             //console.log(">>>>>", career) |             //console.log(">>>>>", career) | ||||||
|             if (career && career[1]) { |             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) |               data.text = data.text.replace(career[1], careerFR) | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|         if (results[0].documentCollection) { |         if (results[0].documentCollection) { | ||||||
|           return Babele.instance.converters.tableResults(results) |           return game.babele.converters.tableResults(results) | ||||||
|         } |         } | ||||||
|         return results |         return results | ||||||
|       }, |       }, | ||||||
|   | |||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000746 | MANIFEST-000760 | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/31-09:37:32.376772 7f19c7e006c0 Recovering log #744 | 2024/06/06-22:05:54.498036 7fcfb2a006c0 Recovering log #758 | ||||||
| 2024/05/31-09:37:32.432762 7f19c7e006c0 Delete type=3 #742 | 2024/06/06-22:05:54.508511 7fcfb2a006c0 Delete type=3 #756 | ||||||
| 2024/05/31-09:37:32.432815 7f19c7e006c0 Delete type=0 #744 | 2024/06/06-22:05:54.508571 7fcfb2a006c0 Delete type=0 #758 | ||||||
| 2024/05/31-10:40:01.792285 7f19c56006c0 Level-0 table #749: started | 2024/06/06-22:06:40.979294 7fcfb16006c0 Level-0 table #763: started | ||||||
| 2024/05/31-10:40:01.792317 7f19c56006c0 Level-0 table #749: 0 bytes OK | 2024/06/06-22:06:40.979314 7fcfb16006c0 Level-0 table #763: 0 bytes OK | ||||||
| 2024/05/31-10:40:01.798878 7f19c56006c0 Delete type=0 #747 | 2024/06/06-22:06:40.986553 7fcfb16006c0 Delete type=0 #761 | ||||||
| 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-22:06:40.993209 7fcfb16006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/29-22:15:26.921445 7f5b0b8006c0 Recovering log #739 | 2024/06/06-20:54:36.421316 7fcfb2a006c0 Recovering log #754 | ||||||
| 2024/05/29-22:15:26.945868 7f5b0b8006c0 Delete type=3 #737 | 2024/06/06-20:54:36.431498 7fcfb2a006c0 Delete type=3 #752 | ||||||
| 2024/05/29-22:15:26.945925 7f5b0b8006c0 Delete type=0 #739 | 2024/06/06-20:54:36.431579 7fcfb2a006c0 Delete type=0 #754 | ||||||
| 2024/05/29-22:42:08.086719 7f5b0a8006c0 Level-0 table #745: started | 2024/06/06-21:16:20.284455 7fcfb16006c0 Level-0 table #759: started | ||||||
| 2024/05/29-22:42:08.086744 7f5b0a8006c0 Level-0 table #745: 0 bytes OK | 2024/06/06-21:16:20.284514 7fcfb16006c0 Level-0 table #759: 0 bytes OK | ||||||
| 2024/05/29-22:42:08.093895 7f5b0a8006c0 Delete type=0 #743 | 2024/06/06-21:16:20.327048 7fcfb16006c0 Delete type=0 #757 | ||||||
| 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/06-21:16:20.401073 7fcfb16006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000748 | MANIFEST-000762 | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/31-09:37:32.440532 7f19c60006c0 Recovering log #746 | 2024/06/06-22:05:54.510086 7fcfb3e006c0 Recovering log #760 | ||||||
| 2024/05/31-09:37:32.493255 7f19c60006c0 Delete type=3 #744 | 2024/06/06-22:05:54.520324 7fcfb3e006c0 Delete type=3 #758 | ||||||
| 2024/05/31-09:37:32.493359 7f19c60006c0 Delete type=0 #746 | 2024/06/06-22:05:54.520387 7fcfb3e006c0 Delete type=0 #760 | ||||||
| 2024/05/31-10:40:01.811747 7f19c56006c0 Level-0 table #751: started | 2024/06/06-22:06:40.964988 7fcfb16006c0 Level-0 table #765: started | ||||||
| 2024/05/31-10:40:01.811783 7f19c56006c0 Level-0 table #751: 0 bytes OK | 2024/06/06-22:06:40.965009 7fcfb16006c0 Level-0 table #765: 0 bytes OK | ||||||
| 2024/05/31-10:40:01.817818 7f19c56006c0 Delete type=0 #749 | 2024/06/06-22:06:40.972320 7fcfb16006c0 Delete type=0 #763 | ||||||
| 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-22:06:40.979118 7fcfb16006c0 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/06/06-20:54:36.435801 7fcfb34006c0 Recovering log #756 | ||||||
| 2024/05/29-22:15:26.961978 7f5b0d6006c0 Delete type=3 #739 | 2024/06/06-20:54:36.446523 7fcfb34006c0 Delete type=3 #754 | ||||||
| 2024/05/29-22:15:26.962039 7f5b0d6006c0 Delete type=0 #741 | 2024/06/06-20:54:36.446619 7fcfb34006c0 Delete type=0 #756 | ||||||
| 2024/05/29-22:42:08.094093 7f5b0a8006c0 Level-0 table #747: started | 2024/06/06-21:16:20.247619 7fcfb16006c0 Level-0 table #761: started | ||||||
| 2024/05/29-22:42:08.094135 7f5b0a8006c0 Level-0 table #747: 0 bytes OK | 2024/06/06-21:16:20.247668 7fcfb16006c0 Level-0 table #761: 0 bytes OK | ||||||
| 2024/05/29-22:42:08.100255 7f5b0a8006c0 Delete type=0 #745 | 2024/06/06-21:16:20.284176 7fcfb16006c0 Delete type=0 #759 | ||||||
| 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/06-21:16:20.401044 7fcfb16006c0 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-000760 | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/31-09:37:32.579979 7f19c60006c0 Recovering log #744 | 2024/06/06-22:05:54.535617 7fcfb3e006c0 Recovering log #758 | ||||||
| 2024/05/31-09:37:32.634808 7f19c60006c0 Delete type=3 #742 | 2024/06/06-22:05:54.546232 7fcfb3e006c0 Delete type=3 #756 | ||||||
| 2024/05/31-09:37:32.634871 7f19c60006c0 Delete type=0 #744 | 2024/06/06-22:05:54.546283 7fcfb3e006c0 Delete type=0 #758 | ||||||
| 2024/05/31-10:40:01.798996 7f19c56006c0 Level-0 table #749: started | 2024/06/06-22:06:40.986761 7fcfb16006c0 Level-0 table #763: started | ||||||
| 2024/05/31-10:40:01.799024 7f19c56006c0 Level-0 table #749: 0 bytes OK | 2024/06/06-22:06:40.986809 7fcfb16006c0 Level-0 table #763: 0 bytes OK | ||||||
| 2024/05/31-10:40:01.805113 7f19c56006c0 Delete type=0 #747 | 2024/06/06-22:06:40.993088 7fcfb16006c0 Delete type=0 #761 | ||||||
| 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-22:06:40.993226 7fcfb16006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/29-22:15:26.981610 7f5b0c2006c0 Recovering log #739 | 2024/06/06-20:54:36.466388 7fcfb34006c0 Recovering log #754 | ||||||
| 2024/05/29-22:15:26.991864 7f5b0c2006c0 Delete type=3 #737 | 2024/06/06-20:54:36.476745 7fcfb34006c0 Delete type=3 #752 | ||||||
| 2024/05/29-22:15:26.991966 7f5b0c2006c0 Delete type=0 #739 | 2024/06/06-20:54:36.476826 7fcfb34006c0 Delete type=0 #754 | ||||||
| 2024/05/29-22:42:08.100370 7f5b0a8006c0 Level-0 table #745: started | 2024/06/06-21:16:20.363505 7fcfb16006c0 Level-0 table #759: started | ||||||
| 2024/05/29-22:42:08.100395 7f5b0a8006c0 Level-0 table #745: 0 bytes OK | 2024/06/06-21:16:20.363562 7fcfb16006c0 Level-0 table #759: 0 bytes OK | ||||||
| 2024/05/29-22:42:08.107039 7f5b0a8006c0 Delete type=0 #743 | 2024/06/06-21:16:20.400707 7fcfb16006c0 Delete type=0 #757 | ||||||
| 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/06-21:16:20.401115 7fcfb16006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000746 | MANIFEST-000760 | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/31-09:37:32.306200 7f19c60006c0 Recovering log #744 | 2024/06/06-22:05:54.485070 7fcfb3e006c0 Recovering log #758 | ||||||
| 2024/05/31-09:37:32.365977 7f19c60006c0 Delete type=3 #742 | 2024/06/06-22:05:54.496169 7fcfb3e006c0 Delete type=3 #756 | ||||||
| 2024/05/31-09:37:32.366032 7f19c60006c0 Delete type=0 #744 | 2024/06/06-22:05:54.496286 7fcfb3e006c0 Delete type=0 #758 | ||||||
| 2024/05/31-10:40:01.779134 7f19c56006c0 Level-0 table #749: started | 2024/06/06-22:06:40.951380 7fcfb16006c0 Level-0 table #763: started | ||||||
| 2024/05/31-10:40:01.779173 7f19c56006c0 Level-0 table #749: 0 bytes OK | 2024/06/06-22:06:40.951454 7fcfb16006c0 Level-0 table #763: 0 bytes OK | ||||||
| 2024/05/31-10:40:01.785789 7f19c56006c0 Delete type=0 #747 | 2024/06/06-22:06:40.958729 7fcfb16006c0 Delete type=0 #761 | ||||||
| 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-22:06:40.979070 7fcfb16006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/29-22:15:26.903601 7f5b0c2006c0 Recovering log #739 | 2024/06/06-20:54:36.406301 7fcfb34006c0 Recovering log #754 | ||||||
| 2024/05/29-22:15:26.917559 7f5b0c2006c0 Delete type=3 #737 | 2024/06/06-20:54:36.416875 7fcfb34006c0 Delete type=3 #752 | ||||||
| 2024/05/29-22:15:26.917932 7f5b0c2006c0 Delete type=0 #739 | 2024/06/06-20:54:36.416980 7fcfb34006c0 Delete type=0 #754 | ||||||
| 2024/05/29-22:42:08.040267 7f5b0a8006c0 Level-0 table #745: started | 2024/06/06-21:16:20.204896 7fcfb16006c0 Level-0 table #759: started | ||||||
| 2024/05/29-22:42:08.040295 7f5b0a8006c0 Level-0 table #745: 0 bytes OK | 2024/06/06-21:16:20.204934 7fcfb16006c0 Level-0 table #759: 0 bytes OK | ||||||
| 2024/05/29-22:42:08.068788 7f5b0a8006c0 Delete type=0 #743 | 2024/06/06-21:16:20.247088 7fcfb16006c0 Delete type=0 #757 | ||||||
| 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/06-21:16:20.247377 7fcfb16006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000746 | MANIFEST-000760 | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/31-09:37:32.229735 7f19c7e006c0 Recovering log #744 | 2024/06/06-22:05:54.472889 7fcfb2a006c0 Recovering log #758 | ||||||
| 2024/05/31-09:37:32.290900 7f19c7e006c0 Delete type=3 #742 | 2024/06/06-22:05:54.482510 7fcfb2a006c0 Delete type=3 #756 | ||||||
| 2024/05/31-09:37:32.290955 7f19c7e006c0 Delete type=0 #744 | 2024/06/06-22:05:54.482574 7fcfb2a006c0 Delete type=0 #758 | ||||||
| 2024/05/31-10:40:01.745865 7f19c56006c0 Level-0 table #749: started | 2024/06/06-22:06:40.958847 7fcfb16006c0 Level-0 table #763: started | ||||||
| 2024/05/31-10:40:01.745898 7f19c56006c0 Level-0 table #749: 0 bytes OK | 2024/06/06-22:06:40.958868 7fcfb16006c0 Level-0 table #763: 0 bytes OK | ||||||
| 2024/05/31-10:40:01.752538 7f19c56006c0 Delete type=0 #747 | 2024/06/06-22:06:40.964877 7fcfb16006c0 Delete type=0 #761 | ||||||
| 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-22:06:40.979096 7fcfb16006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/29-22:15:26.888481 7f5b0cc006c0 Recovering log #739 | 2024/06/06-20:54:36.390344 7fcfb2a006c0 Recovering log #754 | ||||||
| 2024/05/29-22:15:26.899481 7f5b0cc006c0 Delete type=3 #737 | 2024/06/06-20:54:36.401236 7fcfb2a006c0 Delete type=3 #752 | ||||||
| 2024/05/29-22:15:26.899538 7f5b0cc006c0 Delete type=0 #739 | 2024/06/06-20:54:36.401373 7fcfb2a006c0 Delete type=0 #754 | ||||||
| 2024/05/29-22:42:08.080368 7f5b0a8006c0 Level-0 table #745: started | 2024/06/06-21:16:20.167277 7fcfb16006c0 Level-0 table #759: started | ||||||
| 2024/05/29-22:42:08.080405 7f5b0a8006c0 Level-0 table #745: 0 bytes OK | 2024/06/06-21:16:20.167332 7fcfb16006c0 Level-0 table #759: 0 bytes OK | ||||||
| 2024/05/29-22:42:08.086437 7f5b0a8006c0 Delete type=0 #743 | 2024/06/06-21:16:20.204704 7fcfb16006c0 Delete type=0 #757 | ||||||
| 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/06-21:16:20.247359 7fcfb16006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000389 | MANIFEST-000403 | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| 2024/05/31-09:37:32.503566 7f19c7e006c0 Recovering log #387 | 2024/06/06-22:05:54.522431 7fcfb2a006c0 Recovering log #401 | ||||||
| 2024/05/31-09:37:32.572091 7f19c7e006c0 Delete type=3 #385 | 2024/06/06-22:05:54.533382 7fcfb2a006c0 Delete type=3 #399 | ||||||
| 2024/05/31-09:37:32.572143 7f19c7e006c0 Delete type=0 #387 | 2024/06/06-22:05:54.533456 7fcfb2a006c0 Delete type=0 #401 | ||||||
| 2024/05/31-10:40:01.805216 7f19c56006c0 Level-0 table #392: started | 2024/06/06-22:06:40.972432 7fcfb16006c0 Level-0 table #406: started | ||||||
| 2024/05/31-10:40:01.805249 7f19c56006c0 Level-0 table #392: 0 bytes OK | 2024/06/06-22:06:40.972455 7fcfb16006c0 Level-0 table #406: 0 bytes OK | ||||||
| 2024/05/31-10:40:01.811475 7f19c56006c0 Delete type=0 #390 | 2024/06/06-22:06:40.978838 7fcfb16006c0 Delete type=0 #404 | ||||||
| 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/06/06-22:06:40.979138 7fcfb16006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end) | ||||||
| 2024/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-22:06:40.979181 7fcfb16006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| 2024/05/29-22:15:26.967160 7f5b0cc006c0 Recovering log #382 | 2024/06/06-20:54:36.451532 7fcfb2a006c0 Recovering log #397 | ||||||
| 2024/05/29-22:15:26.977447 7f5b0cc006c0 Delete type=3 #380 | 2024/06/06-20:54:36.462207 7fcfb2a006c0 Delete type=3 #395 | ||||||
| 2024/05/29-22:15:26.977504 7f5b0cc006c0 Delete type=0 #382 | 2024/06/06-20:54:36.462346 7fcfb2a006c0 Delete type=0 #397 | ||||||
| 2024/05/29-22:42:08.107240 7f5b0a8006c0 Level-0 table #388: started | 2024/06/06-21:16:20.327305 7fcfb16006c0 Level-0 table #402: started | ||||||
| 2024/05/29-22:42:08.107291 7f5b0a8006c0 Level-0 table #388: 0 bytes OK | 2024/06/06-21:16:20.327387 7fcfb16006c0 Level-0 table #402: 0 bytes OK | ||||||
| 2024/05/29-22:42:08.113903 7f5b0a8006c0 Delete type=0 #386 | 2024/06/06-21:16:20.363229 7fcfb16006c0 Delete type=0 #400 | ||||||
| 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/06/06-21:16:20.401092 7fcfb16006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end) | ||||||
| 2024/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/06-21:16:20.401155 7fcfb16006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											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); | 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; | 	existingSkill.system.advances.costModifier = -5; | ||||||
| } | } | ||||||
| else  | else  | ||||||
| { | { | ||||||
|  | 	craftsmanAdded[skill] = true; | ||||||
| 	currentCareer.system.skills.push(skill); | 	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); | 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; | 	existingSkill.system.advances.costModifier = -5; | ||||||
| } | } | ||||||
| else  | else  | ||||||
| { | { | ||||||
|  | 	perfectPitchAdded[skill] = true; | ||||||
| 	currentCareer.system.skills.push(skill); | 	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") | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  | }) | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user