Merge pull request #314 from deltagreen-foundryvtt/hotfix/v1.6.2
Backport Hotfix/v1.6.2 to Master
This commit is contained in:
@@ -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).
|
||||
|
||||
+7
-2
@@ -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",
|
||||
|
||||
+126
-20
@@ -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 <b>{formula}</b>:",
|
||||
"DG.Skills.ApplySkillImprovements.DialogLabel": "Ulepsz umiejętności według następującego wzoru: <b>{formula}</b>",
|
||||
"DG.Skills.ApplySkillImprovements.DialogEffectsFollowing": "Wpływa na następujące umiejętności: <b>{skillList}</b>",
|
||||
"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 <a href=\"systems/deltagreen/LICENSE.txt\">licencyjnego</a>, 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."
|
||||
}
|
||||
|
||||
+41
-62
@@ -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 */
|
||||
|
||||
+11
-25
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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 +=
|
||||
|
||||
+19
-8
@@ -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") {
|
||||
|
||||
+12
-5
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
"<br><br>",
|
||||
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 <br> 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 });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,125 +1,141 @@
|
||||
<div class="item-controls skill-util-buttons">
|
||||
<a class="item-control typed-skill-add action-pill"
|
||||
data-action="typedSkillAction"
|
||||
data-action-type="create">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{localize 'DG.Skills.AddTypedOrCustomSkill'}}
|
||||
</a>
|
||||
|
||||
<a class="item-control action-pill"
|
||||
data-action="specialTrainingAction"
|
||||
data-action-type="create">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{localize 'DG.SpecialTraining.Dialog.CreateSpecialTraining'}}
|
||||
</a>
|
||||
{{#if_eq actor.type "agent" }}
|
||||
<a class="item-control action-pill" data-action="applySkillImprovements">
|
||||
{{localize 'DG.Skills.ApplySkillImprovements.Title'}}
|
||||
<i class="fas fa-dice"></i>
|
||||
<a class="item-control typed-skill-add action-pill"
|
||||
data-action="typedSkillAction"
|
||||
data-action-type="create">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{localize 'DG.Skills.AddTypedOrCustomSkill'}}
|
||||
</a>
|
||||
{{/if_eq}}
|
||||
|
||||
<a class="item-control action-pill"
|
||||
data-action="specialTrainingAction"
|
||||
data-action-type="create">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{localize 'DG.SpecialTraining.Dialog.CreateSpecialTraining'}}
|
||||
</a>
|
||||
{{#if_eq actor.type "agent" }}
|
||||
<a class="item-control action-pill" data-action="applySkillImprovements">
|
||||
{{localize 'DG.Skills.ApplySkillImprovements.Title'}}
|
||||
<i class="fas fa-dice"></i>
|
||||
</a>
|
||||
{{/if_eq}}
|
||||
</div>
|
||||
<div class="grid-2col">
|
||||
|
||||
{{#each actor.system.sortedCustomSkills as |skill| }}
|
||||
{{#if_eq type "typeSkill" }}
|
||||
{{#each actor.system.sortedCustomSkills as |skill| }}
|
||||
{{#if_eq type "typeSkill" }}
|
||||
|
||||
<div class="item flexrow flex-group-left flex-thin-border">
|
||||
<div class="flexrow">
|
||||
<label data-tooltip="{{localize (concat 'DG.TypeSkills.Tooltip.' skill.group)}}">
|
||||
{{localize (concat 'DG.TypeSkills.' skill.group)}} ({{skill.label}})
|
||||
</label>
|
||||
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label"
|
||||
data-action="roll"
|
||||
data-key="{{skill.key}}"
|
||||
data-rolltype="skill"
|
||||
data-roll="d100"
|
||||
data-target="{{skill.proficiency}}"
|
||||
data-label="{{skill.label}}"
|
||||
{{#if skill.proficiency }}
|
||||
data-tooltip="{{localize 'DG.Tooltip.SkillLabel' }}"
|
||||
{{/if }}
|
||||
{{#unless skill.proficiency }}
|
||||
data-tooltip="{{localize 'DG.Tooltip.CannotRollSkillLabel' }}"
|
||||
{{/unless }}>
|
||||
<i class="fas fa-dice"></i>
|
||||
</label>
|
||||
<input class="percentile-skill-input"
|
||||
type="text"
|
||||
name="system.typedSkills.{{skill.key}}.proficiency"
|
||||
value="{{skill.proficiency}}"
|
||||
data-dtype="Number" />
|
||||
{{#if_eq skill.actorType "agent" }}
|
||||
<input class="checkbox-skill-input"
|
||||
type="checkbox"
|
||||
name="system.typedSkills.{{skill.key}}.failure"
|
||||
{{checked skill.failure}}
|
||||
data-dtype="Boolean"
|
||||
{{#if skill.cannotBeImprovedByFailure }}
|
||||
disabled
|
||||
{{/if }} />
|
||||
{{/if_eq}}
|
||||
</div>
|
||||
<div class="item-controls skill-and-training-controls">
|
||||
<a class="item-control"
|
||||
data-action="typedSkillAction"
|
||||
data-action-type="edit"
|
||||
data-typedskill="{{skill.key}}"
|
||||
title="Edit Skill">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a class="item-control"
|
||||
data-action="typedSkillAction"
|
||||
data-action-type="delete"
|
||||
data-typedskill="{{skill.key}}"
|
||||
title="Delete Skill">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item flexrow flex-group-left flex-thin-border">
|
||||
<div class="flexrow">
|
||||
<label {{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
data-tooltip="{{localize (concat 'DG.TypeSkills.Tooltip.' skill.group)}}"
|
||||
{{/unless }}>
|
||||
{{localize (concat 'DG.TypeSkills.' skill.group)}} ({{skill.label }})
|
||||
</label>
|
||||
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label"
|
||||
data-action="roll"
|
||||
data-key="{{skill.key}}"
|
||||
data-rolltype="skill"
|
||||
data-roll="d100"
|
||||
data-target="{{skill.proficiency}}"
|
||||
data-label="{{skill.label}}"
|
||||
{{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
{{#if skill.proficiency }}
|
||||
data-tooltip="{{localize 'DG.Tooltip.SkillLabel' }}"
|
||||
{{/if }}
|
||||
{{#unless skill.proficiency }}
|
||||
data-tooltip="{{localize 'DG.Tooltip.CannotRollSkillLabel' }}"
|
||||
{{/unless }}
|
||||
{{/unless }}>
|
||||
<i class="fas fa-dice"></i>
|
||||
</label>
|
||||
<input class="percentile-skill-input"
|
||||
type="text"
|
||||
name="system.typedSkills.{{skill.key}}.proficiency"
|
||||
value="{{skill.proficiency}}"
|
||||
data-dtype="Number" />
|
||||
{{#if_eq skill.actorType "agent" }}
|
||||
<input class="checkbox-skill-input"
|
||||
type="checkbox"
|
||||
name="system.typedSkills.{{skill.key}}.failure"
|
||||
{{checked skill.failure}}
|
||||
data-dtype="Boolean"
|
||||
{{#if skill.cannotBeImprovedByFailure }}
|
||||
disabled
|
||||
{{/if }} />
|
||||
{{/if_eq}}
|
||||
</div>
|
||||
<div class="item-controls skill-and-training-controls">
|
||||
<a class="item-control"
|
||||
data-action="typedSkillAction"
|
||||
data-action-type="edit"
|
||||
data-typedskill="{{skill.key}}"
|
||||
{{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
title="Edit Skill"
|
||||
{{/unless }}>
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a class="item-control"
|
||||
data-action="typedSkillAction"
|
||||
data-action-type="delete"
|
||||
data-typedskill="{{skill.key}}"
|
||||
{{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
title="Delete Skill"
|
||||
{{/unless }}>
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if_eq}}
|
||||
{{/if_eq}}
|
||||
|
||||
{{#if_eq type "training" }}
|
||||
{{#if_eq type "training" }}
|
||||
|
||||
<div class="item flexrow flex-group-left flex-thin-border special-training-box">
|
||||
<div class="flexrow">
|
||||
{{#if_not_eq (localize (concat 'DG.Attributes.' skill.key)) (concat "DG.Attributes." skill.key) }}
|
||||
<label data-tooltip="{{localize (concat 'DG.Attributes.Tooltip.' skill.key)}}">
|
||||
{{skill.name}} ({{localize (concat 'DG.Attributes.' skill.key)}}, {{skill.targetNumber}}%)
|
||||
</label>
|
||||
{{else}}
|
||||
{{#if_not_eq (localize (concat 'DG.Skills.' skill.key)) (concat "DG.Skills." skill.key) }}
|
||||
<label data-tooltip="{{localize (concat 'DG.Skills.Tooltip.' skill.key)}}">
|
||||
{{skill.name}} ({{localize (concat 'DG.Skills.' skill.key)}}, {{skill.targetNumber}}%)
|
||||
</label>
|
||||
{{else}}
|
||||
<label>{{skill.name}} ({{skill.attribute}}, {{skill.targetNumber}}%)</label>
|
||||
{{/if_not_eq}}
|
||||
{{/if_not_eq}}
|
||||
<label class="{{if_gt skill.targetNumber 0 'rollable' 'not-rollable'}}"
|
||||
data-action="roll"
|
||||
data-key="{{skill.key}}"
|
||||
data-name="{{skill.name}}"
|
||||
data-rolltype="special-training">
|
||||
<i class="fas fa-dice"></i>
|
||||
</label>
|
||||
<div class="item-controls skill-and-training-controls">
|
||||
<a class="item-control"
|
||||
data-action="specialTrainingAction"
|
||||
data-action-type="edit"
|
||||
data-id="{{skill.id}}"
|
||||
title="Edit Training"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control"
|
||||
data-action="specialTrainingAction"
|
||||
data-action-type="delete"
|
||||
title="Delete Training"
|
||||
data-id="{{skill.id}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item flexrow flex-group-left flex-thin-border special-training-box">
|
||||
<div class="flexrow">
|
||||
{{#if_not_eq (localize (concat 'DG.Attributes.' skill.key)) (concat "DG.Attributes." skill.key) }}
|
||||
<label {{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
data-tooltip="{{localize (concat 'DG.Attributes.Tooltip.' skill.key)}}"
|
||||
{{/unless }}>
|
||||
{{skill.name}} ({{localize (concat 'DG.Attributes.' skill.key)}}, {{skill.targetNumber}}%)
|
||||
</label>
|
||||
{{else}}
|
||||
{{#if_not_eq (localize (concat 'DG.Skills.' skill.key)) (concat "DG.Skills." skill.key) }}
|
||||
<label {{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
data-tooltip="{{localize (concat 'DG.Skills.Tooltip.' skill.key)}}"
|
||||
{{/unless }}>
|
||||
{{skill.name}} ({{localize (concat 'DG.Skills.' skill.key)}}, {{skill.targetNumber}}%)
|
||||
</label>
|
||||
{{else}}
|
||||
<label>{{skill.name}} ({{skill.attribute}}, {{skill.targetNumber}}%)</label>
|
||||
{{/if_not_eq}}
|
||||
{{/if_not_eq}}
|
||||
<label class="{{if_gt skill.targetNumber 0 'rollable' 'not-rollable'}}"
|
||||
data-action="roll"
|
||||
data-key="{{skill.key}}"
|
||||
data-name="{{skill.name}}"
|
||||
data-rolltype="special-training">
|
||||
<i class="fas fa-dice"></i>
|
||||
</label>
|
||||
<div class="item-controls skill-and-training-controls">
|
||||
<a class="item-control"
|
||||
data-action="specialTrainingAction"
|
||||
data-action-type="edit"
|
||||
data-id="{{skill.id}}"
|
||||
{{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
title="Edit Training"
|
||||
{{/unless }}><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control"
|
||||
data-action="specialTrainingAction"
|
||||
data-action-type="delete"
|
||||
{{#unless (eq ../../skillTooltipDisplay "never") }}
|
||||
title="Delete Training"
|
||||
{{/unless }}
|
||||
data-id="{{skill.id}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if_eq}}
|
||||
{{/if_eq}}
|
||||
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="resource-outer-grid-1col">
|
||||
<label for="actor.system.health.value"
|
||||
class="resource-label"
|
||||
data-tooltip="{{localize 'DG.Attributes.Tooltip.HP'}}">
|
||||
{{localize 'DG.Attributes.HP' }} (<span>{{actor.system.health.protection}} <i class="fas fa-shield-alt"></i></span>)
|
||||
</label>
|
||||
<div class="resource-inner-grid-3col">
|
||||
<input class="centered"
|
||||
type="text"
|
||||
name="system.health.value"
|
||||
value="{{actor.system.health.value}}"
|
||||
data-dtype="Number" />
|
||||
<span>/</span>
|
||||
{{#if (ne actor.type "unnatural") }}
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumHP'}}">
|
||||
<div>{{numberFormat actor.system.health.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<input class="centered"
|
||||
type="text"
|
||||
name="system.health.max"
|
||||
value="{{actor.system.health.max}}"
|
||||
data-dtype="Number"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumHP'}}" />
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,14 +1,24 @@
|
||||
<input class="centered
|
||||
{{#if actor.system.sanity.breakingPointHit }}
|
||||
breaking-point-hit{{/if }}"
|
||||
type="text"
|
||||
name="system.sanity.value"
|
||||
{{disabled keepSanityPrivate}}
|
||||
value="{{ currentSan }}"
|
||||
data-dtype="Number"
|
||||
data-tooltip="{{localize 'DG.Tooltip.CurrentSanityPartOne' }}{{actor.system.sanity.currentBreakingPoint }}{{localize 'DG.Tooltip.CurrentSanityPartTwo' }}" />
|
||||
<span>/</span>
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumSanity'}}">
|
||||
<div>{{ maxSan }}</div>
|
||||
</div>
|
||||
{{#if (keepSanityPrivate) }}
|
||||
<div class="max-resource-value">
|
||||
<div>???</div>
|
||||
</div>
|
||||
<span>/</span>
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumSanity'}}">
|
||||
<div>???</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<input class="centered
|
||||
{{#if actor.system.sanity.breakingPointHit }}
|
||||
breaking-point-hit{{/if }}"
|
||||
type="text"
|
||||
name="system.sanity.value"
|
||||
value="{{actor.system.sanity.value }}"
|
||||
data-dtype="Number"
|
||||
data-tooltip="{{localize 'DG.Tooltip.CurrentSanityPartOne' }}{{actor.system.sanity.currentBreakingPoint }}{{localize 'DG.Tooltip.CurrentSanityPartTwo' }}" />
|
||||
<span>/</span>
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumSanity'}}">
|
||||
<div>{{numberFormat actor.system.sanity.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="resource-outer-grid-1col">
|
||||
<label for="system.wp.value"
|
||||
class="resource-label"
|
||||
data-tooltip="{{localize 'DG.Attributes.Tooltip.WP'}}">
|
||||
{{localize 'DG.Attributes.WP' }}
|
||||
</label>
|
||||
<div class="resource-inner-grid-3col">
|
||||
<input class="centered"
|
||||
type="text"
|
||||
name="system.wp.value"
|
||||
value="{{actor.system.wp.value}}"
|
||||
data-dtype="Number" />
|
||||
<span>/</span>
|
||||
{{#if (ne actor.type "unnatural") }}
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumWP'}}">
|
||||
<div>{{numberFormat actor.system.wp.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<input class="centered"
|
||||
type="text"
|
||||
name="system.wp.max"
|
||||
value="{{actor.system.wp.max}}"
|
||||
data-dtype="Number"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumWP'}}" />
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -266,11 +266,15 @@
|
||||
<a class="item-control"
|
||||
data-action="itemAction"
|
||||
data-action-type="edit"
|
||||
title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
title="Edit Item">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a class="item-control"
|
||||
data-action="itemAction"
|
||||
data-action-type="delete"
|
||||
title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
title="Delete Item">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@@ -341,11 +345,15 @@
|
||||
<a class="item-control"
|
||||
data-action="itemAction"
|
||||
data-action-type="edit"
|
||||
title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
title="Edit Item">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a class="item-control"
|
||||
data-action="itemAction"
|
||||
data-action-type="delete"
|
||||
title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
title="Delete Item">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
@@ -425,11 +433,15 @@
|
||||
<a class="item-control"
|
||||
data-action="itemAction"
|
||||
data-action-type="edit"
|
||||
title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
title="Edit Item">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a class="item-control"
|
||||
data-action="itemAction"
|
||||
data-action-type="delete"
|
||||
title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
title="Delete Item">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
<div class="header-top flexrow">
|
||||
<img class="profile-img"
|
||||
src="{{actor.img}}"
|
||||
alt="{{actor.name}}"
|
||||
data-action="editImage"
|
||||
data-edit="img"
|
||||
data-tooltip="{{actor.name}}"
|
||||
height="150"
|
||||
width="100" />
|
||||
<div>
|
||||
<div class="">
|
||||
<div>
|
||||
<h1 class="charname">
|
||||
<input name="name"
|
||||
type="text"
|
||||
@@ -30,46 +30,10 @@
|
||||
</div>
|
||||
<div class="resources grid grid-3col">
|
||||
{{!-- HP --}}
|
||||
<div class="resource-outer-grid-1col">
|
||||
<label for="actor.system.health.value"
|
||||
class="resource-label"
|
||||
data-tooltip="{{localize 'DG.Attributes.Tooltip.HP'}}">
|
||||
{{localize 'DG.Attributes.HP' }} (<span>{{actor.system.health.protection}} <i class="fas fa-shield-alt"></i></span>)
|
||||
</label>
|
||||
<div class="resource-inner-grid-3col">
|
||||
<input class="centered"
|
||||
type="text"
|
||||
name="system.health.value"
|
||||
value="{{actor.system.health.value}}"
|
||||
data-dtype="Number" />
|
||||
<span>/</span>
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumHP'}}">
|
||||
<div>{{numberFormat actor.system.health.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{> "systems/deltagreen/templates/actor/partials/health-partial.html" }}
|
||||
{{#if (ne actor.type "vehicle") }}
|
||||
{{!-- WP --}}
|
||||
<div class="resource-outer-grid-1col">
|
||||
<label for="system.wp.value"
|
||||
class="resource-label"
|
||||
data-tooltip="{{localize 'DG.Attributes.Tooltip.WP'}}">
|
||||
{{localize 'DG.Attributes.WP' }}
|
||||
</label>
|
||||
<div class="resource-inner-grid-3col">
|
||||
<input class="centered"
|
||||
type="text"
|
||||
name="system.wp.value"
|
||||
value="{{actor.system.wp.value}}"
|
||||
data-dtype="Number" />
|
||||
<span>/</span>
|
||||
<div class="max-resource-value"
|
||||
data-tooltip="{{localize 'DG.Tooltip.MaximumWP'}}">
|
||||
<div>{{numberFormat actor.system.wp.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{> "systems/deltagreen/templates/actor/partials/willpower-partial.html" }}
|
||||
{{!-- Sanity --}}
|
||||
{{> "systems/deltagreen/templates/actor/partials/sanity-partial.html" }}
|
||||
{{/if}}
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
<label class="bolded-label">{{localize 'DG.Mental.SanityLossIncidentsLabel'}}</label>
|
||||
<div class="adaptation-grid-5col">
|
||||
|
||||
<label>{{localize 'DG.Mental.Violence'}}</label>
|
||||
<label data-tooltip="{{localize 'DG.Mental.Tooltip.Violence'}}">
|
||||
{{localize 'DG.Mental.Violence'}}
|
||||
</label>
|
||||
<input class="labeled-resource-checkbox"
|
||||
type="checkbox"
|
||||
name="system.sanity.adaptations.violence.incident1"
|
||||
@@ -47,7 +49,9 @@
|
||||
{{/if}}
|
||||
</label>
|
||||
|
||||
<label>{{localize 'DG.Mental.Helplessness'}}</label>
|
||||
<label data-tooltip="{{localize 'DG.Mental.Tooltip.Helplessness'}}">
|
||||
{{localize 'DG.Mental.Helplessness'}}
|
||||
</label>
|
||||
<input class="labeled-resource-checkbox"
|
||||
type="checkbox"
|
||||
name="system.sanity.adaptations.helplessness.incident1"
|
||||
@@ -117,6 +121,7 @@
|
||||
data-action="itemAction"
|
||||
data-action-type="edit"
|
||||
title="Edit Item">
|
||||
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a class="item-control"
|
||||
|
||||
@@ -24,10 +24,7 @@
|
||||
data-key="{{skill.key}}"
|
||||
data-rolltype="skill"
|
||||
for="system.skills.{{skill.key}}.value"
|
||||
{{#unless ../hideSkillTooltips }}
|
||||
data-tooltip="{{ skill.tooltip }}"
|
||||
{{/unless }}
|
||||
>
|
||||
data-tooltip="{{ skill.tooltip }}">
|
||||
{{localizeWithFallback (concat "DG.Skills." skill.key) skill.label }}
|
||||
<i class="fas fa-dice"></i>
|
||||
</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") }}
|
||||
<input class="checkbox-skill-input"
|
||||
|
||||
@@ -9,51 +9,53 @@
|
||||
{{!-- Sheet Body motivation-sheet-horizontal-grid-2col --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
<div class="tab attributes top-div-border" data-group="primary" data-tab="attributes">
|
||||
<div class="tab attributes top-div-border"
|
||||
data-group="primary"
|
||||
data-tab="attributes">
|
||||
|
||||
<div class="motivation-sheet-horizontal-grid-2col">
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.IsDisorder'}}:</span>
|
||||
<input type="checkbox" name="system.crossedOut" {{checked item.system.crossedOut}} data-dtype="Boolean"
|
||||
title="{{localize 'DG.ItemWindow.Motivations.IsDisorderTooltip'}}"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
name="system.crossedOut"
|
||||
{{checked item.system.crossedOut}}
|
||||
data-dtype="Boolean"
|
||||
title="{{localize 'DG.ItemWindow.Motivations.IsDisorderTooltip'}}" />
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.Motivation'}}:</span>
|
||||
<input type="text" name="name" value="{{item.name}}" placeholder="" data-dtype="String"
|
||||
<input type="text"
|
||||
name="name"
|
||||
value="{{item.name}}"
|
||||
placeholder=""
|
||||
data-dtype="String"
|
||||
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 }}
|
||||
|
||||
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}}
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.Disorder'}}:</span>
|
||||
<input type="text" name="system.disorder" value="{{item.system.disorder}}" data-dtype="String"
|
||||
|
||||
title="{{localize 'DG.ItemWindow.Motivations.DisorderNameTooltip'}}"
|
||||
/>
|
||||
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCured'}}: </span>
|
||||
<input class="labeled-resource-checkbox" type="checkbox" name="system.disorderCured" {{checked item.system.disorderCured}} data-dtype="Boolean"
|
||||
title="{{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCuredTooltip'}}"
|
||||
/>
|
||||
|
||||
|
||||
{{/if}}
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.Disorder'}}:</span>
|
||||
<input type="text"
|
||||
name="system.disorder"
|
||||
value="{{item.system.disorder}}"
|
||||
data-dtype="String"
|
||||
title="{{localize 'DG.ItemWindow.Motivations.DisorderNameTooltip'}}" />
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCured'}}:</span>
|
||||
<input class="labeled-resource-checkbox"
|
||||
type="checkbox"
|
||||
name="system.disorderCured"
|
||||
{{checked item.system.disorderCured}}
|
||||
data-dtype="Boolean"
|
||||
title="{{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCuredTooltip'}}" />
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab attributes top-div-border" data-group="primary" data-tab="description">
|
||||
<div class="tab attributes top-div-border"
|
||||
data-group="primary"
|
||||
data-tab="description">
|
||||
<div class="editor-host">
|
||||
{{editor enrichedDescription target="system.description" engine="prosemirror" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user