diff --git a/CHANGELOG.md b/CHANGELOG.md index 2160bd6..8bbe800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,30 @@ - [#211](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/211) - Move macros to System macros folder in compendium. +## Version 1.6.3 - 2025-12-12 + +> Skips v1.6.2 due to a mistake in the release process. Oops. + +\--- + +> Thanks to [delgar89](https://github.com/delgar89) for updating the Polish translation. + +### **Features:** + +- [#258](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/258) - Added a keybind option for hovering tooltips and option to hide all. +- [#245](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/245) - Automate damage from STR score to melee and unarmed attacks for NPCs. Agents were already doing it. + +### **Bug Fixes:** + +- [#269](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/269) - Added calculation for max HP and max WP for unnatural and allow to edit them. +- [#274](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/274) - Automated fail marking now works after dice so nice resolve roll. +- [#268](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/268) - Removed unnecessary tooltips. +- [#278](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/278) - It shows the tooltip only once for skills without proficiency. +- [#281](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/281) - Add tooltips to adaptation area. +- [#298](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/298) - Don't add art skill in actor creation. +- [#301](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/301) - SAN doesn't zero out when player updates sheet and the sanity is private. +- [#272](https://github.com/deltagreen-foundryvtt/delta-green-foundry-vtt-system/issues/272) - Fixed auto-marked skill failure rollbacks in chat bubbles. + ## Version 1.6.1 - 2025-09-09 > Thanks to the following new contributor: [Tobifroe](https://github.com/tobifroe). diff --git a/lang/en.json b/lang/en.json index e36837f..7d0be72 100644 --- a/lang/en.json +++ b/lang/en.json @@ -186,7 +186,9 @@ "DG.Mental.Reset": "Reset", "DG.Mental.SanityLossIncidentsLabel": "Incidents of SAN Loss Without Going Insane", "DG.Mental.Violence": "Violence", + "DG.Mental.Tooltip.Violence": "Adapting to Violence: After losing SAN to violence three times without going insane, you become hardened to it. You automatically succeed SAN rolls against violence, but permanently lose 1D6 CHA and that much from each Bond. Agents Handbook Page 73.", "DG.Mental.Helplessness": "Helplessness", + "DG.Mental.Tooltip.Helplessness": "Adapting to Helplessness: After losing SAN to helplessness three times without going insane, you become hardened to it. You automatically succeed SAN rolls against helplessness, but permanently lose 1D6 POW. Agents handbook page 73.", "DG.Mental.AdaptedToViolence": "Adapted to Violence", "DG.Mental.AdaptedToHelplessness": "Adapted to Helplessness", "DG.Mental.Motivations": "Motivation", @@ -395,8 +397,11 @@ "DG.Settings.charactersheet.program": "The Program", "DG.Settings.sortskills.name": "Sort Skills By Column?", "DG.Settings.sortskills.hint": "Checked sorts by column. Unchecked sorts by row.", - "DG.Settings.hideSkillTooltips.name": "Hide Skill Tooltips", - "DG.Settings.hideSkillTooltips.hint": "Do not display skill tooltips in Agent sheets.", + "DG.Settings.skillTooltipDisplay.name": "Display tooltips", + "DG.Settings.skillTooltipDisplay.hint": "Choose when to display skill tooltips in Agent sheets.", + "DG.Settings.skillTooltipDisplay.hover": "On hover (default)", + "DG.Settings.skillTooltipDisplay.never": "Never", + "DG.Settings.skillTooltipDisplay.hoverShift": "On hover + Shift", "DG.Settings.keepSanityPrivate.name": "Keep Sanity Private", "DG.Settings.keepSanityPrivate.hint": "Hide sanity from players in both Agent sheets and rolls.", "DG.Settings.skillImprovementFormula.name": "Default Skill Improvement Roll", diff --git a/lang/pl.json b/lang/pl.json index 9cd3841..c0bbc59 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -4,7 +4,6 @@ "DG.RollLuck": "Test Szczęścia", "DG.Luck": "Szczęście", - "DG.FallbackText.ProfessionAndOrRank": "ZAWÓD (RANGA, JESLI DOTYCZY)", "DG.FallbackText.newItem": "Nowy {type}", "DG.Skills.accounting": "Księgowość", @@ -46,14 +45,52 @@ "DG.Skills.unnatural": "Zjawiska Nadnaturalne", "DG.Skills.flight": "Latanie", + "DG.Skills.Tooltip.accounting": "Wykrywanie finansowych sygnałów ostrzegawczych, takich jak ukryte aktywa, firmy fasadowe lub defraudacje.", + "DG.Skills.Tooltip.alertness": "Dostrzegaj ukryte zagrożenia, subtelne ruchy lub ciche dźwięki, zanim staną się one niebezpieczeństwem.", + "DG.Skills.Tooltip.anthropology": "Zrozumienie przekonań, zachowań i tematów tabu w współczesnych kulturach i społeczeństwach.", + "DG.Skills.Tooltip.archeology": "Analiza starożytnych artefaktów i ruin w celu interpretacji dawno wymarłych cywilizacji.", + "DG.Skills.Tooltip.artillery": "Precyzyjna obsługa broni ciężkiej, takiej jak moździerze czy działa czołgowe.", + "DG.Skills.Tooltip.athletics": "Biegaj, wspinaj się, skacz i rzucaj z wyćwiczoną siłą i zwinnością.", + "DG.Skills.Tooltip.bureaucracy": "Poruszaj się po biurokracji, zawieraj umowy z urzędnikami i uzyskaj dostęp do ograniczonych zasobów.", + "DG.Skills.Tooltip.computer_science": "Hakowanie, ochrona lub manipulowanie systemami komputerowymi i odzyskiwanie usuniętych danych.", + "DG.Skills.Tooltip.criminology": "Profilowanie zachowań przestępczych i analizowanie spisków lub wzorców nielegalnej działalności.", + "DG.Skills.Tooltip.demolitions": "Bezpieczne ustawianie, rozbrajanie lub analizowanie urządzeń wybuchowych.", + "DG.Skills.Tooltip.disguise": "Zmień swój wygląd i maniery, aby uniknąć rozpoznania.", + "DG.Skills.Tooltip.dodge": "Unikaj nadchodzących ataków lub ukrywaj się.", + "DG.Skills.Tooltip.drive": "Obsługa pojazdów pod presją, w tym pościgi i trudnym terenie.", + "DG.Skills.Tooltip.firearms": "Celne strzelanie pod presją z pistoletów, karabinów i innej broni strzeleckiej.", + "DG.Skills.Tooltip.first_aid": "Stabilizacja urazów i przywrócenie HP w krótkim okresie.", + "DG.Skills.Tooltip.forensics": "Analizowanie miejsc zbrodni pod kątem ukrytych dowodów przy użyciu metod kryminalistycznych - lub ukrywanie śladów przestępstwa w celu zmylenia śledczych.", + "DG.Skills.Tooltip.heavy_machiner": "Obsługa dużego sprzętu, takiego jak dźwigi, buldożery lub cysterny w sytuacjach wysokiego stresu.", + "DG.Skills.Tooltip.heavy_weapons": "Używaj w walce przenośnej broni ciężkiej, takiej jak karabiny maszynowe lub wyrzutnie rakiet.", + "DG.Skills.Tooltip.history": "Przypomnij sobie fakty historyczne, niejasne odniesienia lub znajdź ukrytą wiedzę.", + "DG.Skills.Tooltip.humint": "Czytaj ludzi, wykrywaj oszustwa i odkrywaj ukryte motywy poprzez interakcję.", + "DG.Skills.Tooltip.law": "Stosowanie lub wykorzystywanie wiedzy prawniczej w celu wygrania spraw sądowych lub uniknięcia oskarżenia.", + "DG.Skills.Tooltip.medicine": "Diagnozowanie i leczenie urazów lub chorób w celu zapewnienia długoterminowej opieki i powrotu do zdrowia.", + "DG.Skills.Tooltip.melee_weapons": "Skuteczna walka w zwarciu przy użyciu noży, pałek lub improwizowanej broni ręcznej.", + "DG.Skills.Tooltip.navigate": "Korzystaj z map, przyrządów lub intuicji, aby znaleźć drogę w nieznanym terenie.", + "DG.Skills.Tooltip.occult": "Zidentyfikuj mity, rytuały i poboczne wierzenia - ale nie oddzielaj prawdy od przesądów.", + "DG.Skills.Tooltip.persuade": "Przekonaj innych do zmiany zdania lub podjęcia działań, których normalnie by nie podjęli.", + "DG.Skills.Tooltip.pharmacy": "Identyfikacja, produkcja lub niewłaściwe użycie narkotyków, odtrutek i trucizn.", + "DG.Skills.Tooltip.psychotherapy": "Diagnozowanie i leczenie zaburzeń psychicznych; uspokajanie lub wspieranie innych w sytuacjach napięcia psychicznego.", + "DG.Skills.Tooltip.ride": "Kontrola i opieka nad wierzchowcami, takimi jak konie czy wielbłądy.", + "DG.Skills.Tooltip.search": "Dokładnie zlokalizuj ukryte przedmioty, pułapki lub wskazówki na danym obszarze.", + "DG.Skills.Tooltip.sigint": "Przechwytywanie, szyfrowanie lub manipulowanie łącznością elektroniczną i systemami nadzoru.", + "DG.Skills.Tooltip.stealth": "Unikaj wykrywania lub ukrywaj obiekty i działania przed wzrokiem.", + "DG.Skills.Tooltip.surgery": "Wykonywanie procedur inwazyjnych w celu ratowania życia lub naprawy krytycznych obrażeń.", + "DG.Skills.Tooltip.survival": "Trop, poluj i przeżyj w dziczy, znajdując pożywienie, schronienie i oznaki niebezpieczeństwa.", + "DG.Skills.Tooltip.swim": "Przetrwanie w wodzie pod przymusem - ratowanie innych, ucieczka lub znoszenie niebezpieczeństw.", + "DG.Skills.Tooltip.unarmed_combat": "Poskromienie lub zranienie przeciwników przy użyciu pięści, chwytów, kopnięć i innych technik walki wręcz.", + "DG.Skills.Tooltip.unnatural": "Rozpoznawanie, badanie lub przypominanie sobie prawd o bytach i siłach wykraczających poza ludzkie zrozumienie.", + "DG.Skills.AddTypedOrCustomSkill": "Dodaj Typową/Niestandardową Umiejętność", "DG.Skills.AddSkill": "Dodaj Umiejętność", "DG.Skills.Apply": "Zastosuj", - "DG.Skills.ApplySkillImprovements": "Zastosuj Ulepszenie Umiejętnośći", - "DG.Skills.ApplySkillImprovementsChatFlavor": "Ulepszono następującą umiejętność o", - "DG.Skills.ApplySkillImprovementsDialogLabel": "Ulepsz nastepujące umiejętności zgonie z formułą:", - "DG.Skills.ApplySkillImprovementsDialogEffectsFollowing": "Dotyczy następujących umiejętności:", - "DG.Skills.ApplySkillImprovementsWarning": "Brak nieudanych umiejętności do poprawy..", + "DG.Skills.ApplySkillImprovements.Title": "Zastosuj ulepszenia umiejętności", + "DG.Skills.ApplySkillImprovements.ChatFlavor": "Ulepszono następujące umiejętności o {formula}:", + "DG.Skills.ApplySkillImprovements.DialogLabel": "Ulepsz umiejętności według następującego wzoru: {formula}", + "DG.Skills.ApplySkillImprovements.DialogEffectsFollowing": "Wpływa na następujące umiejętności: {skillList}", + "DG.Skills.ApplySkillImprovements.Warning": "Brak nieudanych umiejętności do ulepszenia.", "DG.Skills.EditTypedOrCustomSkill": "Edytuj Umiejętność Typowaną/Niestandardową", "DG.Skills.EditSkill": "Edytuj Umiejętność", "DG.Skills.SkillGroup": "Grupa Umiejętności", @@ -67,6 +104,14 @@ "DG.TypeSkills.Science": "Nauka", "DG.TypeSkills.Other": "Inne", + "DG.TypeSkills.Tooltip.Art": "Twórz lub oceniaj dzieła artystyczne i wykrywaj fałszerstwa w danej dziedzinie.", + "DG.TypeSkills.Tooltip.Craft": "Budowanie, naprawianie lub sabotowanie specjalistycznych narzędzi lub systemów, takich jak silniki, zamki lub okablowanie.", + "DG.TypeSkills.Tooltip.ForeignLanguage": "Mówisz, czytasz i rozumiesz dany język.", + "DG.TypeSkills.Tooltip.MilitaryScience": "Interpretowanie warunków na polu bitwy, taktyki lub zachowań wojskowych w walce lądowej, morskiej lub powietrznej.", + "DG.TypeSkills.Tooltip.Pilot": "Kontrolowanie i nawigowanie pojazdami powietrznymi, morskimi lub kosmicznymi w krytycznych sytuacjach lub warunkach.", + "DG.TypeSkills.Tooltip.Science": "Zastosowanie specjalistycznej wiedzy naukowej do interpretacji lub badania świata fizycznego.", + "DG.TypeSkills.Tooltip.Other": "Inne", + "DG.SpecialTraining.Dialog.CreateSpecialTraining": "Dodaj Dodatkowe Szkolenie", "DG.SpecialTraining.Dialog.DropDown.CustomSkills": "Niestandardowe Umiejętności", "DG.SpecialTraining.Dialog.DropDown.Skills": "Umiejętności", @@ -86,13 +131,30 @@ "DG.Attributes.pow": "MOC", "DG.Attributes.cha": "CHA", - "DG.Navigation.Skills": "Umiejętności", - "DG.Navigation.Physical": "Statystyki", - "DG.Navigation.Mental": "Psychologia", - "DG.Navigation.Gear": "Wyposażenie", - "DG.Navigation.CV": "Osobiste", - "DG.Navigation.Contacts": "Więzi", + "DG.Attributes.Tooltip.HP": "Punkty Wytrzymałości, postać traci przytomność przy 2 PW i umiera przy 0 PW.", + "DG.Attributes.Tooltip.WP": "Punkty Siły Woli to paliwo mentalne. Agenci potrzebują Punktów Siły Woli, aby kontynuować mimo wyczerpania lub mentalnych trudności. Zobacz stronę 47 w Podręczniku Agenta po więcej szczegółów.", + "DG.Attributes.Tooltip.SAN": "Kliknij, aby wykonać test na Poczytalność...", + "DG.Attributes.Tooltip.str": "Zobacz stronę 19 Podręcznika Agenta – Siła", + "DG.Attributes.Tooltip.con": "Zobacz stronę 19 Podręcznika Agenta – Kondycja", + "DG.Attributes.Tooltip.dex": "Zobacz stronę 19 Podręcznika Agenta – Zręczność", + "DG.Attributes.Tooltip.int": "Zobacz stronę 19 Podręcznika Agenta – Inteligencja", + "DG.Attributes.Tooltip.pow": "Zobacz stronę 19 Podręcznika Agenta – Siła Woli", + "DG.Attributes.Tooltip.cha": "Zobacz stronę 19 Podręcznika Agenta – Charyzma", + "DG.Navigation.Agent.skills": "Umiejętności", + "DG.Navigation.Agent.physical": "Statystyki", + "DG.Navigation.Agent.motivations": "Psychika", + "DG.Navigation.Agent.gear": "Wyposażenie", + "DG.Navigation.Agent.bio": "Osobiste", + "DG.Navigation.Agent.bonds": "Więzi", + "DG.Navigation.NPC.skills": "Umiejętności i szkolenia", + "DG.Navigation.NPC.gear": "Ataki i Zdolności", + "DG.Navigation.Vehicle.gear": "Wyposażenie", + "DG.Navigation.Vehicle.notes": "Uwagi", + + "DG.About.Changelog": "DZIENNIK ZMIAN (ONLINE)", + "DG.About.Copyright": "Opublikowano przez Arc Dream Publishing na mocy umowy z Delta Green Partnership. Własność intelektualna znana jako Delta Green jest znakiem towarowym i prawem autorskim należącym do Delta Green Partnership, które udzieliło tutaj licencji na jej wykorzystanie.", + "DG.About.License": "Zawartość tego systemu jest licencjonowana zgodnie z warunkami dołączonego pliku licencyjnego, z wyjątkiem tych elementów, które są składnikami własności intelektualnej Delta Green.", "DG.About.OnlineHelp": "Dokumentacja systemu (ONLINE)", "DG.About.OnlineHelpTooltip": "Uruchom przeglądarkę z dokumentacją online na GitHubie.", "DG.About.OnlineBugTracker": "Pytania, zgłoszenia błędów lub prośby o funkcje (ONLINE)", @@ -102,7 +164,8 @@ "DG.Roll.Target": "Cel: ", "DG.Roll.Success": "Sukces", "DG.Roll.Failure": "Porażka", - "DG.Roll.Critical": "Krytyczny", + "DG.Roll.CriticalSuccess": "Krytyczny sukces!", + "DG.Roll.CriticalFailure": "Krytyczna porażka!", "DG.Roll.Lethality": "Śmiertelność", "DG.Roll.Lethal": "Śmiertelny", "DG.Roll.For": "Dla", @@ -119,6 +182,7 @@ "DG.Generic.AddButtonLabel": "Dodaj", "DG.Mental.BreakingPoint": "Punkt Załamania: ", + "DG.Mental.Tooltip.BreakingPoint": "Punkt Załamania to dokładna wartość Poczytalności, przy której Twój Agent został wystarczająco wyczerpany traumą, by rozwinąć nową, długotrwałą chorobę psychiczną. Jeśli Poczytalność osiągnie ten punkt lub spadnie poniżej niego, odejmij Siłę Woli Agenta od nowej Poczytalności. To będzie nowy Punkt Załamania Twojego Agenta.", "DG.Mental.Reset": "Reset", "DG.Mental.SanityLossIncidentsLabel": "Utrata PP (Bez Niepoczytalności)", "DG.Mental.Violence": "Przemoc", @@ -128,6 +192,8 @@ "DG.Mental.Motivations": "Motywacje", "DG.Mental.Disorders": "Zaburzenia", + "DG.Gear.WeaponTypes.Firearms": "Broń Palna", + "DG.Gear.WeaponTypes.Melee": "Walka wręcz", "DG.Gear.Weapons": "Broń", "DG.Gear.Armor": "Pancerz", "DG.Gear.OtherGear": "Inny Sprzęt", @@ -153,14 +219,11 @@ "DG.Bonds.Score": "Wynik", "DG.Bonds.NewBond": "Nowa Więź", - "DG.Attributes.Tooltip.HP": "Punkty Wytrzymałości, postać traci przytomność przy 2 PW i umiera przy 0 PW.", "DG.Tooltip.MaximumHP": "Maksymalne Punkty Wytrzymałości to średnia STR + CON, zaokrąglona w górę.", - "DG.Attributes.Tooltip.WP": "Punkty Siły Woli to paliwo mentalne. Agenci potrzebują Punktów Siły Woli, aby kontynuować mimo wyczerpania lub mentalnych trudności. Zobacz stronę 47 w Podręczniku Agenta po więcej szczegółów.", "DG.Tooltip.MaximumWP": "Maksymalne PSW to wartość MOC.", - "DG.Attributes.Tooltip.SAN": "Kliknij, aby wykonać test na Poczytalność...", "DG.Tooltip.CurrentSanityPartOne": "Aktualne PP, aktualny punkt załamania to ", "DG.Tooltip.CurrentSanityPartTwo": ", kliknij powyższą etykietę PP, aby wykonać test poczytalności.", - "DG.Tooltip.MaximumSanity": "Maksymalne PP to 99 - umiejętność Nienaturalne.", + "DG.Tooltip.MaximumSanity": "Maksymalne PP to 99 - umiejętność Nadnaturalne.", "DG.Tooltip.SkillLabel": "Kliknij, aby wykonać test umiejętności.", "DG.Tooltip.CannotRollSkillLabel": "Umiejętność na poziomie 0% nie może zostać użyta. Zobacz stronę 28 w Podręczniku Agenta.", "DG.Tooltip.SkillFailCheckbox": "Po niepowodzeniu w teście tej umiejętności (jeśli biegłość wynosi co najmniej 1%), zaznacz to pole. Na końcu sesji dodaj 1D4 punkty procentowe do umiejętności i odznacz pole. Nie dotyczy umiejętności Nienaturalne lub Rituału. Zobacz stronę 29 w Podręczniku Agenta.", @@ -249,9 +312,11 @@ "DG.Sheet.BlockHeaders.PersonalInfoCV": "DANE OSOBOWE / CV", "DG.Sheet.BlockHeaders.BondsRelationshipsContacts": "WIĘZI / RELACJE / KONTAKTY", + "DG.AgentSheet.ProfessionPlaceholder": "ZAWÓD (RANGA, JEŚLI DOTYCZY)", + "DG.UnnaturalSheet.HideUntrainedSkillsLabel": "Ukryj Niewyuczone", "DG.UnnaturalSheet.NotesLabel": "Uwagi", - "DG.UnnaturalSheet.ShortDescriptionFallbackText": "Opis stworzenia lub typu stworzenia", + "DG.UnnaturalSheet.ShortDescriptionPlaceholder": "Opis stworzenia lub typu stworzenia", "DG.UnnaturalSheet.ShowUntrainedSkillsLabel": "Pokaż Niewyuczone", "DG.UnnaturalSheet.Tabs.NotesTabLabel": "Umiejętności i Uwagi", "DG.UnnaturalSheet.Tabs.ItemsTabLabel": "Ataki i Zdolności", @@ -278,9 +343,15 @@ "DG.ItemWindow.Weapons.SkillModifier": "Modyfikator Umiejętności", "DG.ItemWindow.Custom": "Niestandardowy", + "DG.Sheet.class.item": "Karta Przedmiotu", + "DG.Sheet.class.agent": "Karta Agenta", + "DG.Sheet.class.npc": "Karta NPC", + "DG.Sheet.class.unnatural": "Karta Nadnaturalnego", + "DG.Sheet.class.vehicle": "Karta Pojazdu", + "TYPES.Actor.agent": "Agent", "TYPES.Actor.npc": "NPC", - "TYPES.Actor.unnatural": "Nienaturalne", + "TYPES.Actor.unnatural": "Nadnaturalne", "TYPES.Actor.vehicle": "Pojazd", "TYPES.Item.armor": "Pancerz", @@ -304,7 +375,7 @@ "DG.ItemWindow.Tome.LanguagePlaceholder": "Język", "DG.ItemWindow.Tome.StudyTime": "Czas Nauki", "DG.ItemWindow.Tome.OccultIncrease": "Zwiększenie Umiejętności Okultyzm", - "DG.ItemWindow.Tome.UnnaturalIncrease": "Zwiększenie Umiejętności Nienaturalne", + "DG.ItemWindow.Tome.UnnaturalIncrease": "Zwiększenie Umiejętności Nadnaturalne", "DG.ItemWindow.Tome.StudySanityDamage": "Uszkodzenie PP po Studiowaniu", "DG.ItemWindow.Tome.HandlerOnlyTabHeader": "Tylko dla Oficera Prowadzącego", "DG.ItemWindow.Tome.HandlerNotes": "Uwagi dla Oficera Prowadzącego", @@ -315,6 +386,41 @@ "DG.ItemWindow.Ritual.StudyTime": "Czas Nauki", "DG.ItemWindow.Ritual.LearnedSanityDamage": "Utrata PP po Nauce", + "DG.MissionPaused": "Misja wstrzymana", + + "DG.Settings.charactersheet.name": "Styl karty postaci", + "DG.Settings.charactersheet.hint": "Wybierz styl kart postaci. „Program” to nowocześniejszy, rządowy styl, natomiast „Kowboj/Banita” to starszy, bardziej surowy styl przypominający maszynę do pisania.", + "DG.Settings.charactersheet.cowboys": "Kowboje", + "DG.Settings.charactersheet.outlaws": "The Outlaws", + "DG.Settings.charactersheet.program": "Program", + "DG.Settings.sortskills.name": "Sortowanie umiejętności według kolumn?", + "DG.Settings.sortskills.hint": "Zaznaczone sortuje według kolumny. Niezaznaczone sortuje według wierszy.", + "DG.Settings.hideSkillTooltips.name": "Ukryj podpowiedzi umiejętności", + "DG.Settings.hideSkillTooltips.hint": "Nie wyświetlaj podpowiedzi umiejętności na kartach Agenta.", + "DG.Settings.keepSanityPrivate.name": "Ukryj Poczytalność", + "DG.Settings.keepSanityPrivate.hint": "Ukryj Poczytalność przed graczami zarówno na kartach Agentów, jak i w rzutach.", + "DG.Settings.skillImprovementFormula.name": "Domyślny rzut na rozwój umiejętności", + "DG.Settings.skillImprovementFormula.hint": "Domyślnie 1k4. Istniało kilka errat w tej kwestii — wybierz tę opcję, która najlepiej pasuje do tempa twojej gry.", + "DG.Settings.skillImprovementFormula.1": "Stałe +1%", + "DG.Settings.skillImprovementFormula.2": "+1D3%", + "DG.Settings.skillImprovementFormula.3": "+1D4%", + "DG.Settings.skillImprovementFormula.4": "+1D4-1%", + "DG.Settings.alwaysShowHypergeometrySectionForPlayers.name": "Pokaż sekcję Hipergeometrii", + "DG.Settings.alwaysShowHypergeometrySectionForPlayers.hint": "Zawsze pokazuj sekcję przedmiotów z Hipergeometrii (np. Rytuały i Tomy) na kartach Agentów, nawet jeśli Agent nie posiada żadnych przedmiotów tego typu.", + "DG.Settings.showImpossibleLandscapesContent.name": "Pokaż zawartość Impossible Landscapes", + "DG.Settings.showImpossibleLandscapesContent.hint": "Pokaż pola specyficzne dla Impossible Landscapes na kartach Agentów. Pola te są zawsze widoczne tylko dla Oficera prowadzącego, nawet jeśli ta opcja jest zaznaczona.", + "DG.Settings.skillFailure.name": "Automatyczne zaznaczanie niepowodzenia w umiejętności", + "DG.Settings.skillFailure.hint": "Aktywuj tę opcję, aby zawsze zaznaczać pole niepowodzenia po nieudanym teście umiejętności. Oficer prowadzący może cofnąć tę akcję z wiadomości na czacie dotyczącej rzutu.", + "DG.Settings.Saved": "Bieżące ustawienia zostały zapisane.", + + "DG.SettingsMenu.automation.name": "Menu automatyzacji", + "DG.SettingsMenu.automation.label": "Menu automatyzacji", + "DG.SettingsMenu.automation.title": "Ustawienia automatyzacji", + + "DG.SettingsMenu.handler.name": "Ustawienia Oficera Prowadzącego", + "DG.SettingsMenu.handler.label": "Ustawienia Oficera Prowadzącego", + "DG.SettingsMenu.handler.title": "Ustawienia tylko dla Oficera prowadzącego", + "DG.Messages.Skillsmark.Marked": "Ta umiejętność jest oznaczona.", "DG.Messages.Skillsmark.Tooltip": "Zobacz str. 29 Podręcznika Agenta." } diff --git a/module/actor/actor.js b/module/actor/actor.js index c8d79c4..fc1690d 100644 --- a/module/actor/actor.js +++ b/module/actor/actor.js @@ -10,8 +10,6 @@ export default class DeltaGreenActor extends Actor { super.prepareData(); const actorData = this; - const { system } = actorData; - const { flags } = actorData; // console.log('actor.js prepareData'); // console.log(this); @@ -56,7 +54,7 @@ export default class DeltaGreenActor extends Actor { const { system } = actor; // Loop through ability scores, and add their modifiers to our sheet output. - for (const [key, statistic] of Object.entries(system.statistics)) { + for (const statistic of Object.values(system.statistics)) { // the x5 is just whatever the raw statistic is x 5 to turn it into a d100 percentile statistic.x5 = statistic.value * 5; } @@ -76,25 +74,13 @@ export default class DeltaGreenActor extends Actor { system.health.max = Math.ceil( (system.statistics.con.value + system.statistics.str.value) / 2, ); - } catch (ex) { + } catch { system.health.max = 10; } - /* - system.skills.ritual = { - label: "Ritual", - proficiency: 99 - system.sanity.value, - cannotBeImprovedByFailure: true, - failure: false, - }; - - if (system.skills.ritual.proficiency > 99) { - system.skills.ritual.proficiency = 99; - } else if (system.skills.ritual.proficiency < 1) { - system.skills.ritual.proficiency = 1; - } - - */ + const strength = system.statistics.str; + system.statistics.str.meleeDamageBonusFormula = + this._calculateMeleeDamageBonusFormula(strength.value); try { delete system.skills.ritual; // try to remove legacy skill for ritual if it exists @@ -122,7 +108,7 @@ export default class DeltaGreenActor extends Actor { system.health.protection = protection; - for (const [_key, skill] of Object.entries(system.skills)) { + for (const skill of Object.values(system.skills)) { skill.targetProficiency = skill.proficiency; } } @@ -135,11 +121,25 @@ export default class DeltaGreenActor extends Actor { const { system } = actor; // Loop through ability scores, and add their modifiers to our sheet output. - for (const [key, statistic] of Object.entries(system.statistics)) { + for (const statistic of Object.values(system.statistics)) { // the x5 is just whatever the raw statistic is x 5 to turn it into a d100 percentile statistic.x5 = statistic.value * 5; } + if (system.wp.maxNeedsUpdate) { + system.wp.max = system.statistics.pow.value; + } + + if (system.health.maxNeedsUpdate) { + try { + system.health.max = Math.ceil( + (system.statistics.con.value + system.statistics.str.value) / 2, + ); + } catch { + system.health.max = 10; + } + } + // calculate total armor rating let protection = 0; for (const i of actor.items) { @@ -152,7 +152,7 @@ export default class DeltaGreenActor extends Actor { system.health.protection = protection; - for (const [_key, skill] of Object.entries(system.skills)) { + for (const skill of Object.values(system.skills)) { skill.targetProficiency = skill.proficiency; } } @@ -166,29 +166,11 @@ export default class DeltaGreenActor extends Actor { // Make modifications to data here. For example: // Loop through ability scores, and add their modifiers to our sheet output. - for (const [key, statistic] of Object.entries(system.statistics)) { + for (const statistic of Object.values(system.statistics)) { // the x5 is just whatever the raw statistic is x 5 to turn it into a d100 percentile statistic.x5 = statistic.value * 5; } - // The ritual skill is from the Handler's Guide, it is for activating a ritual and is always equal to 99 - current sanity. - // The rules can be found on page 166, under 'Ritual Activation'. - /* - system.skills.ritual = { - label: "Ritual", - proficiency: 99 - system.sanity.value, - cannotBeImprovedByFailure: true, - failure: false, - }; - - if (system.skills.ritual.proficiency > 99) { - system.skills.ritual.proficiency = 99; - } else if (system.skills.ritual.proficiency < 1) { - system.skills.ritual.proficiency = 1; - } - - */ - try { delete system.skills.ritual; // try to remove legacy skill for ritual if it exists } catch { @@ -284,34 +266,31 @@ export default class DeltaGreenActor extends Actor { system.health.protection = protection; - // Damage Bonus/Malus From Strength in Hand-to-hand Combat (melee/unarmed) - let bonus = 0; - let sbonus = ""; const strength = system.statistics.str; - - if (strength.value < 5) { - sbonus = "-2"; - bonus = -2; - } else if (strength.value < 9) { - sbonus = "-1"; - bonus = -1; - } else if (strength.value > 12 && strength.value < 17) { - sbonus = "+1"; - bonus = 1; - } else if (strength.value > 16) { - sbonus = "+2"; - bonus = 2; - } - - system.statistics.str.meleeDamageBonus = bonus; - system.statistics.str.meleeDamageBonusFormula = sbonus; + system.statistics.str.meleeDamageBonusFormula = + this._calculateMeleeDamageBonusFormula(strength.value); if (system.physical.exhaustedPenalty > 0) { system.physical.exhaustedPenalty = -1 * Math.abs(system.physical.exhaustedPenalty); } + } - // console.log(agent); + // Returns Bonus From Strength in Hand-to-hand Combat (melee/unarmed) + _calculateMeleeDamageBonusFormula(strengthValue) { + if (strengthValue < 5) { + return "-2"; + } + if (strengthValue < 9) { + return "-1"; + } + if (strengthValue > 12 && strengthValue < 17) { + return "+1"; + } + if (strengthValue > 16) { + return "+2"; + } + return ""; } /** @override */ diff --git a/module/deltagreen.js b/module/deltagreen.js index f481204..78f7716 100644 --- a/module/deltagreen.js +++ b/module/deltagreen.js @@ -166,30 +166,6 @@ Hooks.on("renderActorDirectory", (app, html, data) => { } }); -/** - * We use this hook to translate the sample Typed Skill - * Note - this event is fired on only the client who did the create action. - */ -// eslint-disable-next-line no-unused-vars -Hooks.on("preCreateActor", async (actor, creationData, options, userId) => { - // On brand new actors, creationData only has properties: `name`, and `type`. - // If creationData has `system` then the new actor is either duplicated or imported, - // We only want to translate the sample Typed Skill on brand new actors, - // thus we return early if creationData has the `system` property so we do not override anything. - // Also, only translate actor types with a default Typed Skill (agents and NPCs) - if (creationData?.system || !["agent", "npc"].includes(actor.type)) return; - - // Translate the default typed skill for brand new actors. - actor.updateSource({ - "system.typedSkills.tskill_01": { - label: game.i18n.localize("DG.TypeSkills.Subskills.Painting"), - group: game.i18n.localize("DG.TypeSkills.Art"), - proficiency: 0, - failure: false, - }, - }); -}); - // Note - this event is fired on ALL connected clients... Hooks.on("createActor", async (actor, options, userId) => { try { @@ -226,7 +202,7 @@ Hooks.on("renderGamePause", function (_, html, options) { } }); -Hooks.on("renderChatLog", async (app, element, context, options) => { +function addEventListenerToChatMessage(element) { element.addEventListener("click", (event) => { const btnWithAction = event.target.closest("button[data-action]"); const message = event.target.closest("li[data-message-id]"); @@ -236,4 +212,14 @@ Hooks.on("renderChatLog", async (app, element, context, options) => { handleInlineActions(btnWithAction, messageId); } }); +} + +Hooks.on("renderChatLog", async (app, element) => { + addEventListenerToChatMessage(element); +}); + +Hooks.on("renderChatMessageHTML", async (app, element, context) => { + // ignore non chat card notifications + if (!context.canClose) return; + addEventListenerToChatMessage(element); }); diff --git a/module/item/item-sheet.js b/module/item/item-sheet.js index 2bcec8e..5313fbf 100644 --- a/module/item/item-sheet.js +++ b/module/item/item-sheet.js @@ -136,7 +136,7 @@ export default class DeltaGreenItemSheet extends foundry.appv1.sheets let diceFormula = this.item.system.damage; const { skill } = this.item.system; if ( - this.actor.type === "agent" && + (this.actor.type === "agent" || this.actor.type === "npc") && (skill === "unarmed_combat" || skill === "melee_weapons") ) { diceFormula += diff --git a/module/roll/roll.js b/module/roll/roll.js index 02ab37f..768a8a0 100644 --- a/module/roll/roll.js +++ b/module/roll/roll.js @@ -256,6 +256,10 @@ export class DGPercentileRoll extends DGRoll { this.options.rollMode = "blindroll"; } + const diceSoNice = + game.modules.has("dice-so-nice") && + game.modules.get("dice-so-nice").active; + const label = this.createLabel(); let resultString = ""; @@ -299,12 +303,7 @@ export class DGPercentileRoll extends DGRoll { if (failureMark) { const keyForUpdate = `${this.skillPath}.failure`; - // TODO: auto-update actor or post icon with manual apply - await this.actor.update({ - [keyForUpdate]: true, - }); - - return this.toMessage({ + const message = await this.toMessage({ flags: { deltagreen: { rollbacks: { @@ -315,7 +314,19 @@ export class DGPercentileRoll extends DGRoll { content: html, flavor: label, }); + + if (diceSoNice) { + await game.dice3d.waitFor3DAnimationByMessageID(message.id); + } + + // TODO: auto-update actor or post icon with manual apply + await this.actor.update({ + [keyForUpdate]: true, + }); + + return message; } + return this.toMessage({ content: html, flavor: label }); } @@ -434,9 +445,9 @@ export class DGPercentileRoll extends DGRoll { * @returns {Boolean} */ get isInhuman() { - /* + /* Changing this to only consider the base x5 stat target for whether something is 'inhuman' - because I do not think the intent was an Agent with a high strength getting a +40% bonus to be considered 'inhuman' + because I do not think the intent was an Agent with a high strength getting a +40% bonus to be considered 'inhuman' and therefore benefit from the increased crit threshold, although could be wrong about this. */ if (this.target > 99 && this.type === "stat") { diff --git a/module/settings.js b/module/settings.js index e9f7b11..2e3ad25 100644 --- a/module/settings.js +++ b/module/settings.js @@ -313,13 +313,20 @@ export default function registerSystemSettings() { default: false, }); - game.settings.register("deltagreen", "hideSkillTooltips", { - name: game.i18n.localize("DG.Settings.hideSkillTooltips.name"), - hint: game.i18n.localize("DG.Settings.hideSkillTooltips.hint"), + game.settings.register("deltagreen", "skillTooltipDisplay", { + name: game.i18n.localize("DG.Settings.skillTooltipDisplay.name"), + hint: game.i18n.localize("DG.Settings.skillTooltipDisplay.hint"), scope: "client", config: true, - type: Boolean, - default: false, + type: String, + choices: { + hover: game.i18n.localize("DG.Settings.skillTooltipDisplay.hover"), + never: game.i18n.localize("DG.Settings.skillTooltipDisplay.never"), + hoverShift: game.i18n.localize( + "DG.Settings.skillTooltipDisplay.hoverShift", + ), + }, + default: "hover", onChange: () => { foundry.applications.instances.forEach((app) => { if (app instanceof DGActorSheet) { diff --git a/module/sheets/base-actor-sheet.js b/module/sheets/base-actor-sheet.js index c82f66b..64a11eb 100644 --- a/module/sheets/base-actor-sheet.js +++ b/module/sheets/base-actor-sheet.js @@ -36,7 +36,11 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { static BASE_PARTS = /** @type {const} */ ({ header: { template: `${this.TEMPLATE_PATH}/parts/header.html`, - templates: [`${this.TEMPLATE_PATH}/partials/sanity-partial.html`], + templates: [ + `${this.TEMPLATE_PATH}/partials/health-partial.html`, + `${this.TEMPLATE_PATH}/partials/willpower-partial.html`, + `${this.TEMPLATE_PATH}/partials/sanity-partial.html`, + ], }, tabs: { template: `templates/generic/tab-navigation.hbs`, // From FoundryVTT @@ -59,6 +63,25 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { }, }); + /** @override */ + async _processSubmitData(event, form, submitData, options) { + const submittedData = foundry.utils.expandObject(submitData); + + // we need to update max WP if POW has changed (only for unnatural, but doesn't hurt others) + submittedData.system.wp.maxNeedsUpdate = + submittedData.system?.statistics.pow.value !== + this.actor.system.statistics.pow.value; + + // we need to update max HP if STR or CON have changed (only for unnatural, but doesn't hurt others) + submittedData.system.health.maxNeedsUpdate = + submittedData.system?.statistics.str.value !== + this.actor.system.statistics.str.value || + submittedData.system?.statistics.con.value !== + this.actor.system.statistics.con.value; + + return super._processSubmitData(event, form, submittedData, options); + } + /** @override */ async _prepareContext(options) { const context = await super._prepareContext(options); @@ -83,13 +106,13 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { this._sortSkills(); this._sortCustomSkills(); - // Wether to hide skill tooltips - context.hideSkillTooltips = game.settings.get( + // Skill tooltip display setting + context.skillTooltipDisplay = game.settings.get( "deltagreen", - "hideSkillTooltips", + "skillTooltipDisplay", ); - if (!context.hideSkillTooltips) { + if (context.skillTooltipDisplay !== "never") { // Setup tooltips this._prepareSkillTooltips(); } @@ -169,6 +192,8 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { li.setAttribute("draggable", true); li.addEventListener("dragstart", handler, false); }); + + this._tooltipsSettings(this.element); } /** @override - Add buttons to the header controls. */ @@ -422,7 +447,6 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { skill.tooltip = game.i18n.localize(`DG.Skills.Tooltip.${skill.key}`); if (!skill.proficiency) { skill.tooltip = skill.tooltip.concat( - skill.tooltip, "

", game.i18n.localize("DG.Tooltip.CannotRollSkillLabel"), ); @@ -1221,7 +1245,7 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { let diceFormula = item.system.damage; const { skill } = item.system; if ( - this.actor.type === "agent" && + (this.actor.type === "agent" || this.actor.type === "npc") && (skill === "unarmed_combat" || skill === "melee_weapons") ) { diceFormula += @@ -1367,4 +1391,85 @@ export default class DGActorSheet extends DGSheetMixin(ActorSheetV2) { const currentVal = foundry.utils.getProperty(targetDoc, prop); targetDoc.update({ [prop]: !currentVal }); } + + /** + * Require Shift while hovering to show tooltips. + * Supports either data-tooltip (preferred, may contain HTML) or title (plain text). + */ + _tooltipsSettings(root) { + const mode = game.settings.get("deltagreen", "skillTooltipDisplay"); + + // If not explicitly hoverShift or never, do nothing. + if (mode !== "hoverShift" && mode !== "never") return; + + // Query elements with either data-tooltip OR title + const nodes = root.querySelectorAll("[data-tooltip],[title]"); + + // If mode is "never": strip native attributes so no tooltips (native or custom) can appear. + if (mode === "never") { + nodes.forEach((el) => { + if (el.dataset.shiftTooltipInstalled === "true") return; + el.removeAttribute("data-tooltip"); + el.removeAttribute("title"); + el.dataset.shiftTooltipInstalled = "true"; + }); + return; + } + + // mode === "hoverShift": install Shift-to-show behavior using Foundry's tooltip + nodes.forEach((el) => { + if (el.dataset.shiftTooltipInstalled === "true") return; + + // Prefer data-tooltip, else use title + let html = el.getAttribute("data-tooltip"); + let isHtml = true; + + if (!html) { + const title = el.getAttribute("title"); + if (title) { + html = foundry.utils.escapeHTML(title); // treat title as plain text + isHtml = false; + } + } + + if (!html) return; // nothing usable + + // Remove native attributes so default tooltips don’t trigger + el.removeAttribute("data-tooltip"); + el.removeAttribute("title"); + el.dataset.shiftTooltipInstalled = "true"; + + // Always pass through { html } so
etc. render + const opts = isHtml ? { html } : { text: html }; + + const show = () => game.tooltip.activate(el, opts); + const hide = () => game.tooltip.deactivate(); + + const onKey = (ev) => { + if (ev.key !== "Shift") return; + if (!document.body.contains(el)) { + window.removeEventListener("keydown", onKey); + window.removeEventListener("keyup", onKey); + return; + } + if (ev.type === "keydown") show(); + else hide(); + }; + + const onEnter = (ev) => { + if (ev.shiftKey) show(); + window.addEventListener("keydown", onKey); + window.addEventListener("keyup", onKey); + }; + + const onLeave = () => { + hide(); + window.removeEventListener("keydown", onKey); + window.removeEventListener("keyup", onKey); + }; + + el.addEventListener("pointerenter", onEnter, { passive: true }); + el.addEventListener("pointerleave", onLeave, { passive: true }); + }); + } } diff --git a/templates/actor/partials/custom-skills-partial.html b/templates/actor/partials/custom-skills-partial.html index fd0df26..002a57f 100644 --- a/templates/actor/partials/custom-skills-partial.html +++ b/templates/actor/partials/custom-skills-partial.html @@ -1,125 +1,141 @@
- - - {{localize 'DG.Skills.AddTypedOrCustomSkill'}} - - - - - {{localize 'DG.SpecialTraining.Dialog.CreateSpecialTraining'}} - - {{#if_eq actor.type "agent" }} - - {{localize 'DG.Skills.ApplySkillImprovements.Title'}} - + + + {{localize 'DG.Skills.AddTypedOrCustomSkill'}} - {{/if_eq}} + + + + {{localize 'DG.SpecialTraining.Dialog.CreateSpecialTraining'}} + + {{#if_eq actor.type "agent" }} + + {{localize 'DG.Skills.ApplySkillImprovements.Title'}} + + + {{/if_eq}}
- {{#each actor.system.sortedCustomSkills as |skill| }} - {{#if_eq type "typeSkill" }} + {{#each actor.system.sortedCustomSkills as |skill| }} + {{#if_eq type "typeSkill" }} -
-
- - - - {{#if_eq skill.actorType "agent" }} - - {{/if_eq}} -
- -
+
+
+ + + + {{#if_eq skill.actorType "agent" }} + + {{/if_eq}} +
+ +
- {{/if_eq}} + {{/if_eq}} - {{#if_eq type "training" }} + {{#if_eq type "training" }} -
-
- {{#if_not_eq (localize (concat 'DG.Attributes.' skill.key)) (concat "DG.Attributes." skill.key) }} - - {{else}} - {{#if_not_eq (localize (concat 'DG.Skills.' skill.key)) (concat "DG.Skills." skill.key) }} - - {{else}} - - {{/if_not_eq}} - {{/if_not_eq}} - -
- - -
-
-
+
+
+ {{#if_not_eq (localize (concat 'DG.Attributes.' skill.key)) (concat "DG.Attributes." skill.key) }} + + {{else}} + {{#if_not_eq (localize (concat 'DG.Skills.' skill.key)) (concat "DG.Skills." skill.key) }} + + {{else}} + + {{/if_not_eq}} + {{/if_not_eq}} + +
+ + +
+
+
- {{/if_eq}} + {{/if_eq}} - {{/each}} + {{/each}}
diff --git a/templates/actor/partials/health-partial.html b/templates/actor/partials/health-partial.html new file mode 100644 index 0000000..d03ec45 --- /dev/null +++ b/templates/actor/partials/health-partial.html @@ -0,0 +1,28 @@ +
+ +
+ + / + {{#if (ne actor.type "unnatural") }} +
+
{{numberFormat actor.system.health.max decimals=0 sign=false}}
+
+ {{else}} + + {{/if}} +
+
diff --git a/templates/actor/partials/sanity-agent.html b/templates/actor/partials/sanity-agent.html index d3658d2..22b585d 100644 --- a/templates/actor/partials/sanity-agent.html +++ b/templates/actor/partials/sanity-agent.html @@ -1,14 +1,24 @@ - -/ -
-
{{ maxSan }}
-
+{{#if (keepSanityPrivate) }} +
+
???
+
+ / +
+
???
+
+{{else}} + + / +
+
{{numberFormat actor.system.sanity.max decimals=0 sign=false}}
+
+{{/if}} diff --git a/templates/actor/partials/willpower-partial.html b/templates/actor/partials/willpower-partial.html new file mode 100644 index 0000000..0830429 --- /dev/null +++ b/templates/actor/partials/willpower-partial.html @@ -0,0 +1,28 @@ +
+ +
+ + / + {{#if (ne actor.type "unnatural") }} +
+
{{numberFormat actor.system.wp.max decimals=0 sign=false}}
+
+ {{else}} + + {{/if}} +
+
diff --git a/templates/actor/parts/gear-tab.html b/templates/actor/parts/gear-tab.html index 0a2457c..39e290a 100644 --- a/templates/actor/parts/gear-tab.html +++ b/templates/actor/parts/gear-tab.html @@ -266,11 +266,15 @@ + title="Edit Item"> + + + title="Delete Item"> + + {{/each}} @@ -341,11 +345,15 @@ + title="Edit Item"> + + + title="Delete Item"> + + @@ -425,11 +433,15 @@ + title="Edit Item"> + + + title="Delete Item"> + + diff --git a/templates/actor/parts/header.html b/templates/actor/parts/header.html index 1adbb5f..d20d777 100644 --- a/templates/actor/parts/header.html +++ b/templates/actor/parts/header.html @@ -4,13 +4,13 @@
{{actor.name}}
-
+

{{!-- HP --}} -
- -
- - / -
-
{{numberFormat actor.system.health.max decimals=0 sign=false}}
-
-
-
+ {{> "systems/deltagreen/templates/actor/partials/health-partial.html" }} {{#if (ne actor.type "vehicle") }} {{!-- WP --}} -
- -
- - / -
-
{{numberFormat actor.system.wp.max decimals=0 sign=false}}
-
-
-
+ {{> "systems/deltagreen/templates/actor/partials/willpower-partial.html" }} {{!-- Sanity --}} {{> "systems/deltagreen/templates/actor/partials/sanity-partial.html" }} {{/if}} diff --git a/templates/actor/parts/motivations-tab.html b/templates/actor/parts/motivations-tab.html index 2f80f02..2ed3ae0 100644 --- a/templates/actor/parts/motivations-tab.html +++ b/templates/actor/parts/motivations-tab.html @@ -23,7 +23,9 @@
- + - + + + data-tooltip="{{ skill.tooltip }}"> {{localizeWithFallback (concat "DG.Skills." skill.key) skill.label }} @@ -39,7 +36,6 @@ name="system.skills.{{skill.key }}.proficiency" value="{{skill.proficiency }}" data-dtype="Number" - data-tooltip="{{skill.targetProficiency }}" {{disabled skill.isCalculatedValue }} /> {{#if (eq ../actor.type "agent") }} -
+
{{localize 'DG.ItemWindow.Motivations.IsDisorder'}}: - - - - + {{localize 'DG.ItemWindow.Motivations.Motivation'}}: - + {{!-- Only Show the Disorders Section if Motivation Lost Checked --}} + {{#if item.system.crossedOut }} - title="{{localize 'DG.ItemWindow.Motivations.MotivationNameTooltip'}}" - - {{!-- If a motivation has been crossed off after a breaking point, do a strikeout on it and disable it. --}} - {{#if item.system.crossedOut}} - style="text-decoration: line-through;" - disabled - {{/if}} - /> - - - {{!-- Only Show the Disorders Section if Motivation Lost Checked --}} - {{#if item.system.crossedOut}} - - {{localize 'DG.ItemWindow.Motivations.Disorder'}}: - - - - {{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCured'}}: - - - - {{/if}} + {{localize 'DG.ItemWindow.Motivations.Disorder'}}: + + {{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCured'}}: + + {{/if}}
-
+
{{editor enrichedDescription target="system.description" engine="prosemirror" button=true owner=owner editable=editable}}