From bd4276112481bc79acc10dd77222b549d25006a5 Mon Sep 17 00:00:00 2001 From: Gambit Date: Sun, 5 May 2024 17:59:26 -0400 Subject: [PATCH] 0.1.34 --- .github/workflows/main.yml | 6 +- module.json | 2 +- .../{000277.log => 000281.log} | 0 packs/gps-3rd-party-features/CURRENT | 2 +- packs/gps-3rd-party-features/LOG | 16 +- packs/gps-3rd-party-features/LOG.old | 16 +- .../{MANIFEST-000275 => MANIFEST-000279} | Bin 200 -> 200 bytes .../{000275.log => 000279.log} | 0 packs/gps-3rd-party-items/CURRENT | 2 +- packs/gps-3rd-party-items/LOG | 16 +- packs/gps-3rd-party-items/LOG.old | 16 +- .../{MANIFEST-000273 => MANIFEST-000277} | Bin 224 -> 224 bytes .../{000276.log => 000280.log} | 0 packs/gps-3rd-party-spells/CURRENT | 2 +- packs/gps-3rd-party-spells/LOG | 16 +- packs/gps-3rd-party-spells/LOG.old | 16 +- .../{MANIFEST-000274 => MANIFEST-000278} | Bin 199 -> 199 bytes packs/gps-actors/{000748.log => 000752.log} | 0 packs/gps-actors/CURRENT | 2 +- packs/gps-actors/LOG | 16 +- packs/gps-actors/LOG.old | 16 +- .../{MANIFEST-000746 => MANIFEST-000750} | Bin 272 -> 272 bytes .../{001919.log => 001924.log} | 0 .../{001921.ldb => 001926.ldb} | Bin 95128 -> 104317 bytes packs/gps-class-features/CURRENT | 2 +- packs/gps-class-features/LOG | 30 ++-- packs/gps-class-features/LOG.old | 23 ++- packs/gps-class-features/MANIFEST-001917 | Bin 541 -> 0 bytes packs/gps-class-features/MANIFEST-001922 | Bin 0 -> 566 bytes .../{001979.log => 001983.log} | 0 packs/gps-generic-features/CURRENT | 2 +- packs/gps-generic-features/LOG | 16 +- packs/gps-generic-features/LOG.old | 16 +- .../{MANIFEST-001977 => MANIFEST-001981} | Bin 260 -> 260 bytes .../{001904.log => 001908.log} | 0 packs/gps-homebrew-features/CURRENT | 2 +- packs/gps-homebrew-features/LOG | 16 +- packs/gps-homebrew-features/LOG.old | 16 +- .../{MANIFEST-001902 => MANIFEST-001906} | Bin 285 -> 285 bytes .../{001910.log => 001914.log} | 0 packs/gps-homebrew-items/CURRENT | 2 +- packs/gps-homebrew-items/LOG | 16 +- packs/gps-homebrew-items/LOG.old | 16 +- .../{MANIFEST-001908 => MANIFEST-001912} | Bin 285 -> 285 bytes .../{001581.log => 001585.log} | 0 packs/gps-homebrew-spells/CURRENT | 2 +- packs/gps-homebrew-spells/LOG | 16 +- packs/gps-homebrew-spells/LOG.old | 16 +- .../{MANIFEST-001579 => MANIFEST-001583} | Bin 225 -> 225 bytes packs/gps-items/{001904.log => 001908.log} | 0 packs/gps-items/CURRENT | 2 +- packs/gps-items/LOG | 16 +- packs/gps-items/LOG.old | 16 +- .../{MANIFEST-001902 => MANIFEST-001906} | Bin 199 -> 199 bytes .../{001901.log => 001905.log} | 0 packs/gps-monster-features/CURRENT | 2 +- packs/gps-monster-features/LOG | 16 +- packs/gps-monster-features/LOG.old | 16 +- .../{MANIFEST-001899 => MANIFEST-001903} | Bin 260 -> 260 bytes packs/gps-spells/{001930.log => 001934.log} | 0 packs/gps-spells/CURRENT | 2 +- packs/gps-spells/LOG | 16 +- packs/gps-spells/LOG.old | 16 +- .../{MANIFEST-001928 => MANIFEST-001932} | Bin 260 -> 260 bytes scripts/helpers.js | 3 +- scripts/macros/interception.js | 2 +- scripts/macros/poetryInMisery.js | 163 ++++++++++-------- scripts/module.js | 47 +++-- scripts/settings.js | 16 +- 69 files changed, 345 insertions(+), 323 deletions(-) rename packs/gps-3rd-party-features/{000277.log => 000281.log} (100%) rename packs/gps-3rd-party-features/{MANIFEST-000275 => MANIFEST-000279} (64%) rename packs/gps-3rd-party-items/{000275.log => 000279.log} (100%) rename packs/gps-3rd-party-items/{MANIFEST-000273 => MANIFEST-000277} (57%) rename packs/gps-3rd-party-spells/{000276.log => 000280.log} (100%) rename packs/gps-3rd-party-spells/{MANIFEST-000274 => MANIFEST-000278} (64%) rename packs/gps-actors/{000748.log => 000752.log} (100%) rename packs/gps-actors/{MANIFEST-000746 => MANIFEST-000750} (70%) rename packs/gps-class-features/{001919.log => 001924.log} (100%) rename packs/gps-class-features/{001921.ldb => 001926.ldb} (73%) delete mode 100644 packs/gps-class-features/MANIFEST-001917 create mode 100644 packs/gps-class-features/MANIFEST-001922 rename packs/gps-generic-features/{001979.log => 001983.log} (100%) rename packs/gps-generic-features/{MANIFEST-001977 => MANIFEST-001981} (75%) rename packs/gps-homebrew-features/{001904.log => 001908.log} (100%) rename packs/gps-homebrew-features/{MANIFEST-001902 => MANIFEST-001906} (67%) rename packs/gps-homebrew-items/{001910.log => 001914.log} (100%) rename packs/gps-homebrew-items/{MANIFEST-001908 => MANIFEST-001912} (67%) rename packs/gps-homebrew-spells/{001581.log => 001585.log} (100%) rename packs/gps-homebrew-spells/{MANIFEST-001579 => MANIFEST-001583} (56%) rename packs/gps-items/{001904.log => 001908.log} (100%) rename packs/gps-items/{MANIFEST-001902 => MANIFEST-001906} (64%) rename packs/gps-monster-features/{001901.log => 001905.log} (100%) rename packs/gps-monster-features/{MANIFEST-001899 => MANIFEST-001903} (73%) rename packs/gps-spells/{001930.log => 001934.log} (100%) rename packs/gps-spells/{MANIFEST-001928 => MANIFEST-001932} (75%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0b55a27c..838bacfd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,8 +16,10 @@ jobs: - name: Set Release Notes for Github id: set-release-notes-github run: | - echo "- Bugfixes:" >> release_notes.txt - echo " - Fighting Style Protection: Fixed the new homebrew option and added chat card outputs for the disadvantaged attack roll result." >> release_notes.txt + echo "- Additions:" >> release_notes.txt + echo " - Poetry in Misery: Automates the Bard College of Tragedys feature for attack rolls, saving throws, and ability checks (made via the core 5e ability system)" >> release_notes.txt + echo " - Shadow Arrow: Automation for Fighters Arcane Shot Shadow Arrow feature." >> release_notes.txt + echo " - Beguiling Arrow: Automation for Fighters Arcane Shot Beguiling Arrow feature." >> release_notes.txt echo "release-notes-github<> $GITHUB_ENV cat release_notes.txt >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV diff --git a/module.json b/module.json index 02c3b8c6..94c9d9eb 100644 --- a/module.json +++ b/module.json @@ -7,7 +7,7 @@ "name": "Gambit" } ], - "version": "0.1.33", + "version": "0.1.34", "compatibility": { "minimum": "11", "verified": "11", diff --git a/packs/gps-3rd-party-features/000277.log b/packs/gps-3rd-party-features/000281.log similarity index 100% rename from packs/gps-3rd-party-features/000277.log rename to packs/gps-3rd-party-features/000281.log diff --git a/packs/gps-3rd-party-features/CURRENT b/packs/gps-3rd-party-features/CURRENT index 1df8f35f..f248351c 100644 --- a/packs/gps-3rd-party-features/CURRENT +++ b/packs/gps-3rd-party-features/CURRENT @@ -1 +1 @@ -MANIFEST-000275 +MANIFEST-000279 diff --git a/packs/gps-3rd-party-features/LOG b/packs/gps-3rd-party-features/LOG index af911c9c..d13aa07a 100644 --- a/packs/gps-3rd-party-features/LOG +++ b/packs/gps-3rd-party-features/LOG @@ -1,8 +1,8 @@ -2024/05/05-01:13:48.584 90e8 Recovering log #273 -2024/05/05-01:13:48.593 90e8 Delete type=0 #273 -2024/05/05-01:13:48.593 90e8 Delete type=3 #271 -2024/05/05-01:33:28.837 5b54 Level-0 table #278: started -2024/05/05-01:33:28.837 5b54 Level-0 table #278: 0 bytes OK -2024/05/05-01:33:28.841 5b54 Delete type=0 #276 -2024/05/05-01:33:28.841 5b54 Manual compaction at level-0 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.841 5b54 Manual compaction at level-1 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) +2024/05/05-01:46:07.210 90f4 Recovering log #277 +2024/05/05-01:46:07.219 90f4 Delete type=0 #277 +2024/05/05-01:46:07.219 90f4 Delete type=3 #275 +2024/05/05-17:58:21.757 5b54 Level-0 table #282: started +2024/05/05-17:58:21.758 5b54 Level-0 table #282: 0 bytes OK +2024/05/05-17:58:21.762 5b54 Delete type=0 #280 +2024/05/05-17:58:21.773 5b54 Manual compaction at level-0 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.774 5b54 Manual compaction at level-1 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-features/LOG.old b/packs/gps-3rd-party-features/LOG.old index 1e6d2684..af911c9c 100644 --- a/packs/gps-3rd-party-features/LOG.old +++ b/packs/gps-3rd-party-features/LOG.old @@ -1,8 +1,8 @@ -2024/05/05-01:12:42.880 90f4 Recovering log #269 -2024/05/05-01:12:42.887 90f4 Delete type=0 #269 -2024/05/05-01:12:42.887 90f4 Delete type=3 #267 -2024/05/05-01:13:24.312 5b54 Level-0 table #274: started -2024/05/05-01:13:24.312 5b54 Level-0 table #274: 0 bytes OK -2024/05/05-01:13:24.317 5b54 Delete type=0 #272 -2024/05/05-01:13:24.317 5b54 Manual compaction at level-0 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.319 5b54 Manual compaction at level-1 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.584 90e8 Recovering log #273 +2024/05/05-01:13:48.593 90e8 Delete type=0 #273 +2024/05/05-01:13:48.593 90e8 Delete type=3 #271 +2024/05/05-01:33:28.837 5b54 Level-0 table #278: started +2024/05/05-01:33:28.837 5b54 Level-0 table #278: 0 bytes OK +2024/05/05-01:33:28.841 5b54 Delete type=0 #276 +2024/05/05-01:33:28.841 5b54 Manual compaction at level-0 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.841 5b54 Manual compaction at level-1 from '!folders!4Ecsdk7k1FvMs9OF' @ 72057594037927935 : 1 .. '!items.effects!G2IDv711EWrOF7ef.kE7T0D7E6CnMvjvr' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-features/MANIFEST-000275 b/packs/gps-3rd-party-features/MANIFEST-000279 similarity index 64% rename from packs/gps-3rd-party-features/MANIFEST-000275 rename to packs/gps-3rd-party-features/MANIFEST-000279 index 138778c436ee3f19b3e58e9d8bcbb6d8df2965fb..4c5b2b65cf95b50d314d3be7ddff2482b80a7452 100644 GIT binary patch delta 41 scmX@Xc!F`lGNqy~*OqfJFfz?x;$&c+$;86P*yTA9Brp>sFdHZU01Ijf_5c6? delta 41 scmX@Xc!F`lG9|W?yOOvV7@4LpaWXJZWn$qgHP$!>5||1Sm<|*G0Pa``CjbBd diff --git a/packs/gps-3rd-party-items/000275.log b/packs/gps-3rd-party-items/000279.log similarity index 100% rename from packs/gps-3rd-party-items/000275.log rename to packs/gps-3rd-party-items/000279.log diff --git a/packs/gps-3rd-party-items/CURRENT b/packs/gps-3rd-party-items/CURRENT index aa8e9453..3a0724cf 100644 --- a/packs/gps-3rd-party-items/CURRENT +++ b/packs/gps-3rd-party-items/CURRENT @@ -1 +1 @@ -MANIFEST-000273 +MANIFEST-000277 diff --git a/packs/gps-3rd-party-items/LOG b/packs/gps-3rd-party-items/LOG index 2e7f2417..47b24bda 100644 --- a/packs/gps-3rd-party-items/LOG +++ b/packs/gps-3rd-party-items/LOG @@ -1,8 +1,8 @@ -2024/05/05-01:13:48.607 9218 Recovering log #271 -2024/05/05-01:13:48.615 9218 Delete type=0 #271 -2024/05/05-01:13:48.615 9218 Delete type=3 #269 -2024/05/05-01:33:28.835 5b54 Level-0 table #276: started -2024/05/05-01:33:28.835 5b54 Level-0 table #276: 0 bytes OK -2024/05/05-01:33:28.837 5b54 Delete type=0 #274 -2024/05/05-01:33:28.841 5b54 Manual compaction at level-0 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.841 5b54 Manual compaction at level-1 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) +2024/05/05-01:46:07.236 9218 Recovering log #275 +2024/05/05-01:46:07.243 9218 Delete type=0 #275 +2024/05/05-01:46:07.244 9218 Delete type=3 #273 +2024/05/05-17:58:21.769 5b54 Level-0 table #280: started +2024/05/05-17:58:21.770 5b54 Level-0 table #280: 0 bytes OK +2024/05/05-17:58:21.773 5b54 Delete type=0 #278 +2024/05/05-17:58:21.774 5b54 Manual compaction at level-0 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.774 5b54 Manual compaction at level-1 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-items/LOG.old b/packs/gps-3rd-party-items/LOG.old index 0280fcf6..2e7f2417 100644 --- a/packs/gps-3rd-party-items/LOG.old +++ b/packs/gps-3rd-party-items/LOG.old @@ -1,8 +1,8 @@ -2024/05/05-01:12:42.900 90e0 Recovering log #267 -2024/05/05-01:12:42.906 90e0 Delete type=0 #267 -2024/05/05-01:12:42.906 90e0 Delete type=3 #265 -2024/05/05-01:13:24.303 5b54 Level-0 table #272: started -2024/05/05-01:13:24.303 5b54 Level-0 table #272: 0 bytes OK -2024/05/05-01:13:24.307 5b54 Delete type=0 #270 -2024/05/05-01:13:24.317 5b54 Manual compaction at level-0 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.318 5b54 Manual compaction at level-1 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.607 9218 Recovering log #271 +2024/05/05-01:13:48.615 9218 Delete type=0 #271 +2024/05/05-01:13:48.615 9218 Delete type=3 #269 +2024/05/05-01:33:28.835 5b54 Level-0 table #276: started +2024/05/05-01:33:28.835 5b54 Level-0 table #276: 0 bytes OK +2024/05/05-01:33:28.837 5b54 Delete type=0 #274 +2024/05/05-01:33:28.841 5b54 Manual compaction at level-0 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.841 5b54 Manual compaction at level-1 from '!items!A4JIbc14vM5IKbuT' @ 72057594037927935 : 1 .. '!items.effects!qHY9RXV48OmvCrw1.UNiU6zoPTpbrxoIA' @ 0 : 0; will stop at (end) diff --git a/packs/gps-3rd-party-items/MANIFEST-000273 b/packs/gps-3rd-party-items/MANIFEST-000277 similarity index 57% rename from packs/gps-3rd-party-items/MANIFEST-000273 rename to packs/gps-3rd-party-items/MANIFEST-000277 index 795d2b6eceb3d513fee2b751d651dc32ad48df38..aee5b2a19c77158ccedf66b700924a1156435068 100644 GIT binary patch delta 41 scmaFB_<(W3J|*S-GflY|7@4LqaWXJZXJV1!aW<+42}}nG%mfMm0O{Nawg3PC delta 41 scmaFB_<(W3KBbHI#=OV@q9e*eDaX(n?# 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 S-VEn2@633d7~LAfbN?Ul--fvW delta 5892 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 diff --git a/packs/gps-class-features/CURRENT b/packs/gps-class-features/CURRENT index 04689489..9269d052 100644 --- a/packs/gps-class-features/CURRENT +++ b/packs/gps-class-features/CURRENT @@ -1 +1 @@ -MANIFEST-001917 +MANIFEST-001922 diff --git a/packs/gps-class-features/LOG b/packs/gps-class-features/LOG index 484a1427..a88c0746 100644 --- a/packs/gps-class-features/LOG +++ b/packs/gps-class-features/LOG @@ -1,15 +1,15 @@ -2024/05/05-01:13:48.351 9218 Recovering log #1915 -2024/05/05-01:13:48.357 9218 Delete type=0 #1915 -2024/05/05-01:13:48.357 9218 Delete type=3 #1913 -2024/05/05-01:33:28.780 5b54 Level-0 table #1920: started -2024/05/05-01:33:28.797 5b54 Level-0 table #1920: 29267 bytes OK -2024/05/05-01:33:28.801 5b54 Delete type=0 #1918 -2024/05/05-01:33:28.802 5b54 Manual compaction at level-0 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.802 5b54 Manual compaction at level-1 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at '!items.effects!aziVWzS0jSSzLJvq.WK7nKR3oc2dLoJtn' @ 296 : 1 -2024/05/05-01:33:28.802 5b54 Compacting 1@1 + 1@2 files -2024/05/05-01:33:28.810 5b54 Generated table #1921@1: 51 keys, 95128 bytes -2024/05/05-01:33:28.810 5b54 Compacted 1@1 + 1@2 files => 95128 bytes -2024/05/05-01:33:28.812 5b54 compacted to: files[ 0 0 1 0 0 0 0 ] -2024/05/05-01:33:28.812 5b54 Delete type=2 #1912 -2024/05/05-01:33:28.812 5b54 Delete type=2 #1920 -2024/05/05-01:33:28.817 5b54 Manual compaction at level-1 from '!items.effects!aziVWzS0jSSzLJvq.WK7nKR3oc2dLoJtn' @ 296 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) +2024/05/05-01:46:06.985 9218 Recovering log #1919 +2024/05/05-01:46:06.994 9218 Delete type=0 #1919 +2024/05/05-01:46:06.994 9218 Delete type=3 #1917 +2024/05/05-17:58:21.689 5b54 Level-0 table #1925: started +2024/05/05-17:58:21.715 5b54 Level-0 table #1925: 79629 bytes OK +2024/05/05-17:58:21.719 5b54 Delete type=0 #1923 +2024/05/05-17:58:21.719 5b54 Manual compaction at level-0 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.719 5b54 Manual compaction at level-1 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at '!items.effects!ikEkmhNKBayqQr4U.I2pGkejTBvMlwWS5' @ 319 : 1 +2024/05/05-17:58:21.719 5b54 Compacting 1@1 + 1@2 files +2024/05/05-17:58:21.727 5b54 Generated table #1926@1: 55 keys, 104317 bytes +2024/05/05-17:58:21.727 5b54 Compacted 1@1 + 1@2 files => 104317 bytes +2024/05/05-17:58:21.730 5b54 compacted to: files[ 0 0 1 0 0 0 0 ] +2024/05/05-17:58:21.730 5b54 Delete type=2 #1921 +2024/05/05-17:58:21.730 5b54 Delete type=2 #1925 +2024/05/05-17:58:21.740 5b54 Manual compaction at level-1 from '!items.effects!ikEkmhNKBayqQr4U.I2pGkejTBvMlwWS5' @ 319 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) diff --git a/packs/gps-class-features/LOG.old b/packs/gps-class-features/LOG.old index 4b8a76e2..484a1427 100644 --- a/packs/gps-class-features/LOG.old +++ b/packs/gps-class-features/LOG.old @@ -1,8 +1,15 @@ -2024/05/05-01:12:42.632 90e0 Recovering log #1910 -2024/05/05-01:12:42.637 90e0 Delete type=0 #1910 -2024/05/05-01:12:42.637 90e0 Delete type=3 #1908 -2024/05/05-01:13:24.258 5b54 Level-0 table #1916: started -2024/05/05-01:13:24.258 5b54 Level-0 table #1916: 0 bytes OK -2024/05/05-01:13:24.263 5b54 Delete type=0 #1914 -2024/05/05-01:13:24.270 5b54 Manual compaction at level-0 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.271 5b54 Manual compaction at level-1 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.351 9218 Recovering log #1915 +2024/05/05-01:13:48.357 9218 Delete type=0 #1915 +2024/05/05-01:13:48.357 9218 Delete type=3 #1913 +2024/05/05-01:33:28.780 5b54 Level-0 table #1920: started +2024/05/05-01:33:28.797 5b54 Level-0 table #1920: 29267 bytes OK +2024/05/05-01:33:28.801 5b54 Delete type=0 #1918 +2024/05/05-01:33:28.802 5b54 Manual compaction at level-0 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.802 5b54 Manual compaction at level-1 from '!folders!89rvrtGjpBsZz1Tr' @ 72057594037927935 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at '!items.effects!aziVWzS0jSSzLJvq.WK7nKR3oc2dLoJtn' @ 296 : 1 +2024/05/05-01:33:28.802 5b54 Compacting 1@1 + 1@2 files +2024/05/05-01:33:28.810 5b54 Generated table #1921@1: 51 keys, 95128 bytes +2024/05/05-01:33:28.810 5b54 Compacted 1@1 + 1@2 files => 95128 bytes +2024/05/05-01:33:28.812 5b54 compacted to: files[ 0 0 1 0 0 0 0 ] +2024/05/05-01:33:28.812 5b54 Delete type=2 #1912 +2024/05/05-01:33:28.812 5b54 Delete type=2 #1920 +2024/05/05-01:33:28.817 5b54 Manual compaction at level-1 from '!items.effects!aziVWzS0jSSzLJvq.WK7nKR3oc2dLoJtn' @ 296 : 1 .. '!items.effects!wLd8HBhcDcpEy0Gp.DWegiMAKX43CuDbS' @ 0 : 0; will stop at (end) diff --git a/packs/gps-class-features/MANIFEST-001917 b/packs/gps-class-features/MANIFEST-001917 deleted file mode 100644 index 48ae568669910c8fecb2d036eafaf04b34c64627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmd0}_{Zcn10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei18!g<@t&YHqP!YFb)q za!IkGr+1o@d7*c(e}qw{nRiNrUSMIOd1+R;tEpFtrFTe)J3|cv7_c(RL$oToc!m{Z z6;-C@B^m^U78hkRsxX38urvMOyL^RJQ86t)CndG0Skc0=sH~{OJ*&W}II7Apq=>N; zVidX?%6(ESJe)F;U6Ko2D-GNW^jyMI(=&Y?y(3JFol9Mkf*C(UG#&^Mo50P$$n=ko zlY#j^AIoy4;stx_vwRTZ0t;p{4<`@GUxy`$e)$~ diff --git a/packs/gps-class-features/MANIFEST-001922 b/packs/gps-class-features/MANIFEST-001922 new file mode 100644 index 0000000000000000000000000000000000000000..8d5f16779ce640d3bda9d16ebb26bbcadd325700 GIT binary patch literal 566 zcmb0wS#;nF10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei18!g<@t&YHqP!YFb)q za!IkGr+1o@d7*c(e}qw{nRiNrUSMIOd1+R;tEpFtrFTe)J3|cv7_c&;YfY@m3=6Lc zHpmJNuJZ9JE7S}3HqY}8GR{vnO7Y3}D#>HiU<7MrXKLi1@tjprF)cqQCAFwn(ZaH* ztf<62tH7x^s>(2=h_Mu62f7XAJ}DL+P8rEA$px;J2JQuVF5#)^nZAzR5hljYr7lUq zjGrMI4_r5^;$~oEYUbx;U~b`O*}$Z0c~&+XDAEEFY2#-(&BV^w%HR8rMII6Wiblm| zu5OvRIh8Is$tfv$mW*x?$D+F-Gut&gH^a}{DY3FJu*f7-&(o;DJv%ik#Hq|Tr#w8^ pl+hldan{5M`5Rz1wu5ZM3^Jk(V*@&t4H#_fOl|ys*Rjzs=m7bUrF;MY literal 0 HcmV?d00001 diff --git a/packs/gps-generic-features/001979.log b/packs/gps-generic-features/001983.log similarity index 100% rename from packs/gps-generic-features/001979.log rename to packs/gps-generic-features/001983.log diff --git a/packs/gps-generic-features/CURRENT b/packs/gps-generic-features/CURRENT index db5a56fa..9fd6c444 100644 --- a/packs/gps-generic-features/CURRENT +++ b/packs/gps-generic-features/CURRENT @@ -1 +1 @@ -MANIFEST-001977 +MANIFEST-001981 diff --git a/packs/gps-generic-features/LOG b/packs/gps-generic-features/LOG index 07bbff29..dae99546 100644 --- a/packs/gps-generic-features/LOG +++ b/packs/gps-generic-features/LOG @@ -1,8 +1,8 @@ -2024/05/05-01:13:48.418 90e8 Recovering log #1975 -2024/05/05-01:13:48.430 90e8 Delete type=0 #1975 -2024/05/05-01:13:48.431 90e8 Delete type=3 #1973 -2024/05/05-01:33:28.813 5b54 Level-0 table #1980: started -2024/05/05-01:33:28.813 5b54 Level-0 table #1980: 0 bytes OK -2024/05/05-01:33:28.817 5b54 Delete type=0 #1978 -2024/05/05-01:33:28.823 5b54 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.826 5b54 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/05-01:46:07.061 90e0 Recovering log #1979 +2024/05/05-01:46:07.069 90e0 Delete type=0 #1979 +2024/05/05-01:46:07.070 90e0 Delete type=3 #1977 +2024/05/05-17:58:21.733 5b54 Level-0 table #1984: started +2024/05/05-17:58:21.733 5b54 Level-0 table #1984: 0 bytes OK +2024/05/05-17:58:21.735 5b54 Delete type=0 #1982 +2024/05/05-17:58:21.740 5b54 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.740 5b54 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) diff --git a/packs/gps-generic-features/LOG.old b/packs/gps-generic-features/LOG.old index 7c4b5c32..07bbff29 100644 --- a/packs/gps-generic-features/LOG.old +++ b/packs/gps-generic-features/LOG.old @@ -1,8 +1,8 @@ -2024/05/05-01:12:42.697 90f4 Recovering log #1971 -2024/05/05-01:12:42.709 90f4 Delete type=0 #1971 -2024/05/05-01:12:42.710 90f4 Delete type=3 #1969 -2024/05/05-01:13:24.280 5b54 Level-0 table #1976: started -2024/05/05-01:13:24.280 5b54 Level-0 table #1976: 0 bytes OK -2024/05/05-01:13:24.284 5b54 Delete type=0 #1974 -2024/05/05-01:13:24.295 5b54 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.295 5b54 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.418 90e8 Recovering log #1975 +2024/05/05-01:13:48.430 90e8 Delete type=0 #1975 +2024/05/05-01:13:48.431 90e8 Delete type=3 #1973 +2024/05/05-01:33:28.813 5b54 Level-0 table #1980: started +2024/05/05-01:33:28.813 5b54 Level-0 table #1980: 0 bytes OK +2024/05/05-01:33:28.817 5b54 Delete type=0 #1978 +2024/05/05-01:33:28.823 5b54 Manual compaction at level-0 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.826 5b54 Manual compaction at level-1 from '!items!0XoQ7lGPSwjM8Gw4' @ 72057594037927935 : 1 .. '!items.effects!svKaRfNtOXMOXoW6.NcYMpQ7B3RwBuLC7' @ 0 : 0; will stop at (end) diff --git a/packs/gps-generic-features/MANIFEST-001977 b/packs/gps-generic-features/MANIFEST-001981 similarity index 75% rename from packs/gps-generic-features/MANIFEST-001977 rename to packs/gps-generic-features/MANIFEST-001981 index 2fbd77dfa14511f4144d87ad400112514a613194..6dd9b20637d57fbc26a6634f2a8e4b789ac32f19 100644 GIT binary patch delta 43 tcmZo+YGIo2KqX?0P$)M8Bhx;9P6p=v{45Wci3t5Q|q`G7@0ovaWXJ};bTc_+VZ6mB=7|!@C_&c03w|Xw*UYD delta 41 scmbQsG?!_@Z>6-$w@!00FfzU8<78m|z{is2nOl4rB=7+w@ChgY058=H#Q*>R diff --git a/packs/gps-homebrew-items/001910.log b/packs/gps-homebrew-items/001914.log similarity index 100% rename from packs/gps-homebrew-items/001910.log rename to packs/gps-homebrew-items/001914.log diff --git a/packs/gps-homebrew-items/CURRENT b/packs/gps-homebrew-items/CURRENT index b6f73d93..1fdd0242 100644 --- a/packs/gps-homebrew-items/CURRENT +++ b/packs/gps-homebrew-items/CURRENT @@ -1 +1 @@ -MANIFEST-001908 +MANIFEST-001912 diff --git a/packs/gps-homebrew-items/LOG b/packs/gps-homebrew-items/LOG index da0ced88..4efd7713 100644 --- a/packs/gps-homebrew-items/LOG +++ b/packs/gps-homebrew-items/LOG @@ -1,8 +1,8 @@ -2024/05/05-01:13:48.475 90e8 Recovering log #1906 -2024/05/05-01:13:48.484 90e8 Delete type=0 #1906 -2024/05/05-01:13:48.484 90e8 Delete type=3 #1904 -2024/05/05-01:33:28.817 5b54 Level-0 table #1911: started -2024/05/05-01:33:28.817 5b54 Level-0 table #1911: 0 bytes OK -2024/05/05-01:33:28.819 5b54 Delete type=0 #1909 -2024/05/05-01:33:28.826 5b54 Manual compaction at level-0 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.826 5b54 Manual compaction at level-1 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) +2024/05/05-01:46:07.090 90f4 Recovering log #1910 +2024/05/05-01:46:07.102 90f4 Delete type=0 #1910 +2024/05/05-01:46:07.102 90f4 Delete type=3 #1908 +2024/05/05-17:58:21.747 5b54 Level-0 table #1915: started +2024/05/05-17:58:21.748 5b54 Level-0 table #1915: 0 bytes OK +2024/05/05-17:58:21.751 5b54 Delete type=0 #1913 +2024/05/05-17:58:21.756 5b54 Manual compaction at level-0 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.756 5b54 Manual compaction at level-1 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) diff --git a/packs/gps-homebrew-items/LOG.old b/packs/gps-homebrew-items/LOG.old index 0e0cde20..da0ced88 100644 --- a/packs/gps-homebrew-items/LOG.old +++ b/packs/gps-homebrew-items/LOG.old @@ -1,8 +1,8 @@ -2024/05/05-01:12:42.769 90f4 Recovering log #1902 -2024/05/05-01:12:42.774 90f4 Delete type=0 #1902 -2024/05/05-01:12:42.774 90f4 Delete type=3 #1900 -2024/05/05-01:13:24.274 5b54 Level-0 table #1907: started -2024/05/05-01:13:24.274 5b54 Level-0 table #1907: 0 bytes OK -2024/05/05-01:13:24.279 5b54 Delete type=0 #1905 -2024/05/05-01:13:24.294 5b54 Manual compaction at level-0 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.295 5b54 Manual compaction at level-1 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.475 90e8 Recovering log #1906 +2024/05/05-01:13:48.484 90e8 Delete type=0 #1906 +2024/05/05-01:13:48.484 90e8 Delete type=3 #1904 +2024/05/05-01:33:28.817 5b54 Level-0 table #1911: started +2024/05/05-01:33:28.817 5b54 Level-0 table #1911: 0 bytes OK +2024/05/05-01:33:28.819 5b54 Delete type=0 #1909 +2024/05/05-01:33:28.826 5b54 Manual compaction at level-0 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.826 5b54 Manual compaction at level-1 from '!items!1WSJjnpLJhilXEgO' @ 72057594037927935 : 1 .. '!items.effects!zEXJxqsAmVM7Pohu.eA3jhjz26f35OLfw' @ 0 : 0; will stop at (end) diff --git a/packs/gps-homebrew-items/MANIFEST-001908 b/packs/gps-homebrew-items/MANIFEST-001912 similarity index 67% rename from packs/gps-homebrew-items/MANIFEST-001908 rename to packs/gps-homebrew-items/MANIFEST-001912 index 627e2b140485121170a358de47f953d69fd51197..98b6db0311b61f53134a24b19aa065dbff319901 100644 GIT binary patch delta 43 tcmbQsG?!_@PnFyCMN_#M7@2ghJUX|Va`GVXGj7%GNI2o8X@~|vsd}K50BuHcghJUX^{_OMh@PFfy&-;bdT5%fqsm@%e$6Lm-j0Ad&ST5dc*$4N3q2 diff --git a/packs/gps-items/001904.log b/packs/gps-items/001908.log similarity index 100% rename from packs/gps-items/001904.log rename to packs/gps-items/001908.log diff --git a/packs/gps-items/CURRENT b/packs/gps-items/CURRENT index 8637ba14..29299381 100644 --- a/packs/gps-items/CURRENT +++ b/packs/gps-items/CURRENT @@ -1 +1 @@ -MANIFEST-001902 +MANIFEST-001906 diff --git a/packs/gps-items/LOG b/packs/gps-items/LOG index 4426b341..60b3fbc9 100644 --- a/packs/gps-items/LOG +++ b/packs/gps-items/LOG @@ -1,8 +1,8 @@ -2024/05/05-01:13:48.374 90e8 Recovering log #1900 -2024/05/05-01:13:48.384 90e8 Delete type=0 #1900 -2024/05/05-01:13:48.384 90e8 Delete type=3 #1898 -2024/05/05-01:33:28.760 5b54 Level-0 table #1905: started -2024/05/05-01:33:28.761 5b54 Level-0 table #1905: 0 bytes OK -2024/05/05-01:33:28.766 5b54 Delete type=0 #1903 -2024/05/05-01:33:28.801 5b54 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.802 5b54 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/05-01:46:07.012 90e0 Recovering log #1904 +2024/05/05-01:46:07.022 90e0 Delete type=0 #1904 +2024/05/05-01:46:07.022 90e0 Delete type=3 #1902 +2024/05/05-17:58:21.730 5b54 Level-0 table #1909: started +2024/05/05-17:58:21.730 5b54 Level-0 table #1909: 0 bytes OK +2024/05/05-17:58:21.733 5b54 Delete type=0 #1907 +2024/05/05-17:58:21.740 5b54 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.740 5b54 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) diff --git a/packs/gps-items/LOG.old b/packs/gps-items/LOG.old index 9559bb03..4426b341 100644 --- a/packs/gps-items/LOG.old +++ b/packs/gps-items/LOG.old @@ -1,8 +1,8 @@ -2024/05/05-01:12:42.652 90f4 Recovering log #1896 -2024/05/05-01:12:42.658 90f4 Delete type=0 #1896 -2024/05/05-01:12:42.658 90f4 Delete type=3 #1894 -2024/05/05-01:13:24.252 5b54 Level-0 table #1901: started -2024/05/05-01:13:24.252 5b54 Level-0 table #1901: 0 bytes OK -2024/05/05-01:13:24.257 5b54 Delete type=0 #1899 -2024/05/05-01:13:24.270 5b54 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.271 5b54 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.374 90e8 Recovering log #1900 +2024/05/05-01:13:48.384 90e8 Delete type=0 #1900 +2024/05/05-01:13:48.384 90e8 Delete type=3 #1898 +2024/05/05-01:33:28.760 5b54 Level-0 table #1905: started +2024/05/05-01:33:28.761 5b54 Level-0 table #1905: 0 bytes OK +2024/05/05-01:33:28.766 5b54 Delete type=0 #1903 +2024/05/05-01:33:28.801 5b54 Manual compaction at level-0 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.802 5b54 Manual compaction at level-1 from '!items!0qTQDQ2Cipf15JGW' @ 72057594037927935 : 1 .. '!items.effects!wds22ulA8PSTvYWP.ZrTNMwai89gqFKJo' @ 0 : 0; will stop at (end) diff --git a/packs/gps-items/MANIFEST-001902 b/packs/gps-items/MANIFEST-001906 similarity index 64% rename from packs/gps-items/MANIFEST-001902 rename to packs/gps-items/MANIFEST-001906 index ef855e047eb28ed4fd63d59739b9a79761eeac55..2d4e2696cf157cfeff8876ccf8e6c0dfde9cc848 100644 GIT binary patch delta 41 scmX@kc${&S9 delta 41 scmZo+YGIo2Na@sf#TYIIMy5A>oD9rw`B>Z~TPJ)03A_afyax&Z01&JTwg3PC diff --git a/packs/gps-spells/001930.log b/packs/gps-spells/001934.log similarity index 100% rename from packs/gps-spells/001930.log rename to packs/gps-spells/001934.log diff --git a/packs/gps-spells/CURRENT b/packs/gps-spells/CURRENT index e8e7cfe9..adddbeca 100644 --- a/packs/gps-spells/CURRENT +++ b/packs/gps-spells/CURRENT @@ -1 +1 @@ -MANIFEST-001928 +MANIFEST-001932 diff --git a/packs/gps-spells/LOG b/packs/gps-spells/LOG index 344bd932..6a4977ed 100644 --- a/packs/gps-spells/LOG +++ b/packs/gps-spells/LOG @@ -1,8 +1,8 @@ -2024/05/05-01:13:48.336 90e8 Recovering log #1926 -2024/05/05-01:13:48.344 90e8 Delete type=0 #1926 -2024/05/05-01:13:48.344 90e8 Delete type=3 #1924 -2024/05/05-01:33:28.766 5b54 Level-0 table #1931: started -2024/05/05-01:33:28.766 5b54 Level-0 table #1931: 0 bytes OK -2024/05/05-01:33:28.772 5b54 Delete type=0 #1929 -2024/05/05-01:33:28.802 5b54 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) -2024/05/05-01:33:28.813 5b54 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/05-01:46:06.964 90e0 Recovering log #1930 +2024/05/05-01:46:06.972 90e0 Delete type=0 #1930 +2024/05/05-01:46:06.972 90e0 Delete type=3 #1928 +2024/05/05-17:58:21.679 5b54 Level-0 table #1935: started +2024/05/05-17:58:21.679 5b54 Level-0 table #1935: 0 bytes OK +2024/05/05-17:58:21.683 5b54 Delete type=0 #1933 +2024/05/05-17:58:21.719 5b54 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/05-17:58:21.719 5b54 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) diff --git a/packs/gps-spells/LOG.old b/packs/gps-spells/LOG.old index 613d4b5e..344bd932 100644 --- a/packs/gps-spells/LOG.old +++ b/packs/gps-spells/LOG.old @@ -1,8 +1,8 @@ -2024/05/05-01:12:42.609 90f4 Recovering log #1921 -2024/05/05-01:12:42.615 90f4 Delete type=0 #1921 -2024/05/05-01:12:42.615 90f4 Delete type=3 #1919 -2024/05/05-01:13:24.246 5b54 Level-0 table #1927: started -2024/05/05-01:13:24.247 5b54 Level-0 table #1927: 0 bytes OK -2024/05/05-01:13:24.252 5b54 Delete type=0 #1925 -2024/05/05-01:13:24.270 5b54 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) -2024/05/05-01:13:24.271 5b54 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/05-01:13:48.336 90e8 Recovering log #1926 +2024/05/05-01:13:48.344 90e8 Delete type=0 #1926 +2024/05/05-01:13:48.344 90e8 Delete type=3 #1924 +2024/05/05-01:33:28.766 5b54 Level-0 table #1931: started +2024/05/05-01:33:28.766 5b54 Level-0 table #1931: 0 bytes OK +2024/05/05-01:33:28.772 5b54 Delete type=0 #1929 +2024/05/05-01:33:28.802 5b54 Manual compaction at level-0 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) +2024/05/05-01:33:28.813 5b54 Manual compaction at level-1 from '!items!0gEfNrgZuAxvnL5H' @ 72057594037927935 : 1 .. '!items.effects!vxrggTopkxhq3MAn.T70VAw9NbZZUV7tZ' @ 0 : 0; will stop at (end) diff --git a/packs/gps-spells/MANIFEST-001928 b/packs/gps-spells/MANIFEST-001932 similarity index 75% rename from packs/gps-spells/MANIFEST-001928 rename to packs/gps-spells/MANIFEST-001932 index 047c5ae53c06119c35453f49188023d4ebc31384..52b8e9e652a726a357c51affc9066c53424d6500 100644 GIT binary patch delta 43 scmZo+YGIo2K;{3(%xrE3My6hVP6p;aewG=mYVQQjfkgU1A`?I&03xajLI3~& delta 43 scmZo+YGIo2K*cYIn~|G=k*SlPlYzO5pJfJX?w{w}AdxPRNDoK^0OUytod5s; diff --git a/scripts/helpers.js b/scripts/helpers.js index bd4627de..786c540f 100644 --- a/scripts/helpers.js +++ b/scripts/helpers.js @@ -40,7 +40,6 @@ export async function rollAsUser({ rollParams, type }) { reroll = await new Roll(`${rollParams}`).evaluate({async: true}); await MidiQOL.displayDSNForRoll(reroll, 'damageRoll'); - console.log(reroll,"this is reroll helper") return reroll; } @@ -86,7 +85,7 @@ export async function handleDialogPromises(userDialogPromise, gmDialogPromise) { }); } -export function findValidTokens(token, target, itemName, itemType, itemChecked, reactionCheck, sightCheck, rangeCheck, rangeTotal, dispositionCheck, dispositionCheckType) { +export function findValidTokens({token, target, itemName, itemType, itemChecked, reactionCheck, sightCheck, rangeCheck, rangeTotal, dispositionCheck, dispositionCheckType, workflowType}) { let validTokens = game.combat.combatants.map(combatant => canvas.tokens.get(combatant.tokenId)).filter(t => { // Check if invalid token on the canvas diff --git a/scripts/macros/interception.js b/scripts/macros/interception.js index 1320d2b2..f26ccdd3 100644 --- a/scripts/macros/interception.js +++ b/scripts/macros/interception.js @@ -18,7 +18,7 @@ export async function interception({workflowData,workflowType}) { // Check if Opportunity Attack is initiating the workflow if(workflow.item.name === "Opportunity Attack") return; - let findInterceptionTokens = helpers.findValidTokens(workflow.token, target, itemName, "item", ["mwak", "shield"], true, true, true, 5, true, "ally"); + let findInterceptionTokens = helpers.findValidTokens({token: workflow.token, target: target, itemName: itemName, itemType: "item", itemChecked: ["mwak", "shield"], reactionCheck: true, sightCheck: true, rangeCheck: true, rangeTotal: 5, dispositionCheck: true, dispositionCheckType: "ally", workflowType: workflowType}); let browserUser; diff --git a/scripts/macros/poetryInMisery.js b/scripts/macros/poetryInMisery.js index 17e928a8..2d023f9e 100644 --- a/scripts/macros/poetryInMisery.js +++ b/scripts/macros/poetryInMisery.js @@ -5,80 +5,101 @@ export async function poetryInMisery({workflowData,workflowType}) { const workflowUuid = workflowData; const workflow = await MidiQOL.Workflow.getWorkflow(workflowUuid); let itemName = "poetry in misery"; - if(!workflow) return; - if(workflow.item.name.toLowerCase() === itemName) return; - if(!workflow.attackRoll.isFumble) return; - console.log(workflow) + if(!workflow && !workflowData.actor) return; + if(workflow?.item.name.toLowerCase() === itemName) return; + let initiatingToken; + (workflow) ? initiatingToken = workflow.token : initiatingToken = await MidiQOL.tokenForActor(workflowData.actor.uuid); if (!game.combat) return; // Check if Opportunity Attack is initiating the workflow - if(workflow.item.name === "Opportunity Attack") return; + if(workflow?.item.name === "Opportunity Attack") return; - let findPoetryInMiseryTokens = helpers.findValidTokens(workflow.token, workflow.token, itemName, null, null, true, false, true, 30, true, "ally"); + let findPoetryInMiseryTokens = helpers.findValidTokens({token: initiatingToken, target: initiatingToken, itemName: itemName, itemType: null, itemChecked: null, reactionCheck: true, sightCheck: false, rangeCheck: true, rangeTotal: 30, dispositionCheck: false, dispositionCheckType: "ally", workflowType: workflowType}); let browserUser; for (const validTokenPrimary of findPoetryInMiseryTokens) { - const itemData = validTokenPrimary.actor.items.find(i => i.name.toLowerCase() === itemName); - if(itemData.system.uses?.value === itemData.system.uses?.max) return; + const itemData = validTokenPrimary.actor.items.find(i => i.name.toLowerCase() === "bardic inspiration"); + const resources = ['primary', 'secondary', 'tertiary']; + let resourceKey = resources.find(key => { + let resource = validTokenPrimary.actor.system.resources[key]; + return resource?.label?.toLowerCase() === "bardic inspiration"; + }); + + if(resourceKey) { + if(validTokenPrimary.actor.system.resources[resourceKey].value === validTokenPrimary.actor.system.resources[resourceKey].max) return; + } + else if(itemData) { + if(itemData.system.uses.value === itemData.system.uses.max) return; + } + else return; + let actorUuidPrimary = validTokenPrimary.actor.uuid; const dialogTitlePrimary = `${validTokenPrimary.actor.name} | Poetry In Misery`; const dialogTitleGM = `Waiting for ${validTokenPrimary.actor.name}'s selection | Poetry In Misery`; - let originTokenUuidPrimary = workflow.token.document.uuid; + let originTokenUuidPrimary = initiatingToken.document.uuid; browserUser = MidiQOL.playerForActor(validTokenPrimary.actor); + let chatActor; if (!browserUser.active) { browserUser = game.users?.activeGM; } - if(workflowType === "attack" || workflowType === "save" || workflowType === "ability") { - if (workflow.token.document.disposition === validTokenPrimary.document.disposition) return; - - let result; - - if (MidiQOL.safeGetGameSetting('gambits-premades', 'Mirror 3rd Party Dialog for GMs') && browserUser.id !== game.users?.activeGM.id) { - let userDialogPromise = socket.executeAsUser("showPoetryInMiseryDialog", browserUser.id, originTokenUuidPrimary, actorUuidPrimary, validTokenPrimary.document.uuid, dialogTitlePrimary, originTokenUuidPrimary, workflowType, `poetryinmisery_${browserUser.id}`, 'user').then(res => ({...res, source: "user", type: "multiDialog"})); - let gmDialogPromise = socket.executeAsGM("showPoetryInMiseryDialog", originTokenUuidPrimary, actorUuidPrimary, validTokenPrimary.document.uuid, dialogTitleGM, originTokenUuidPrimary, workflowType, `poetryinmisery_${game.users?.activeGM.id}`, 'gm').then(res => ({...res, source: "gm", type: "multiDialog"})); - - result = await socket.executeAsGM("handleDialogPromises", userDialogPromise, gmDialogPromise); - } else { - result = await socket.executeAsUser("showPoetryInMiseryDialog", browserUser.id, originTokenUuidPrimary, actorUuidPrimary, validTokenPrimary.document.uuid, dialogTitlePrimary, originTokenUuidPrimary, workflowType, null, null).then(res => ({...res, source: browserUser.isGM ? "gm" : "user", type: "singleDialog"})); - } - - const { poetryInMiseryDecision, damageChosen, source, type } = result; - - if (poetryInMiseryDecision === false || !poetryInMiseryDecision) { - if(source && source === "user" && type === "multiDialog") await socket.executeAsGM("closeDialogById", { dialogId: `poetryinmisery_${game.users?.activeGM.id}` }); - if(source && source === "gm" && type === "multiDialog") await socket.executeAsUser("closeDialogById", browserUser.id, { dialogId: `poetryinmisery_${browserUser.id}` }); - continue; + if (workflowType === "attack") { + if(initiatingToken.document.disposition !== validTokenPrimary.document.disposition) return; + if(!workflow.attackRoll.isFumble) return; + } + if (workflowType === "save") { + if(initiatingToken.document.disposition === validTokenPrimary.document.disposition) return; + const fumbleRoll = workflow.saveRolls.find(roll => roll.isFumble && roll.data.token.document.disposition === validTokenPrimary.document.disposition); + if(!fumbleRoll) return; + chatActor = fumbleRoll.data.token.actor; + } + if(workflowType === "ability") { + if(initiatingToken.document.disposition !== validTokenPrimary.document.disposition) return; + if(!workflowData.roll.isFumble) return; + } + + let result; + + if (MidiQOL.safeGetGameSetting('gambits-premades', 'Mirror 3rd Party Dialog for GMs') && browserUser.id !== game.users?.activeGM.id) { + let userDialogPromise = socket.executeAsUser("showPoetryInMiseryDialog", browserUser.id, originTokenUuidPrimary, actorUuidPrimary, validTokenPrimary.document.uuid, dialogTitlePrimary, originTokenUuidPrimary, workflowType, `poetryinmisery_${browserUser.id}`, 'user').then(res => ({...res, source: "user", type: "multiDialog"})); + let gmDialogPromise = socket.executeAsGM("showPoetryInMiseryDialog", originTokenUuidPrimary, actorUuidPrimary, validTokenPrimary.document.uuid, dialogTitleGM, originTokenUuidPrimary, workflowType, `poetryinmisery_${game.users?.activeGM.id}`, 'gm').then(res => ({...res, source: "gm", type: "multiDialog"})); + + result = await socket.executeAsGM("handleDialogPromises", userDialogPromise, gmDialogPromise); + } else { + result = await socket.executeAsUser("showPoetryInMiseryDialog", browserUser.id, originTokenUuidPrimary, actorUuidPrimary, validTokenPrimary.document.uuid, dialogTitlePrimary, originTokenUuidPrimary, workflowType, null, null).then(res => ({...res, source: browserUser.isGM ? "gm" : "user", type: "singleDialog"})); } - if (poetryInMiseryDecision === true) { + + const { poetryInMiseryDecision, source, type } = result; - const resources = ['primary', 'secondary', 'tertiary']; - let resourceKey = resources.find(key => { - let resource = actorUuidPrimary.system.resources[key]; - return itemData.includes(resource?.label.toLowerCase()); - }); + if (poetryInMiseryDecision === false || !poetryInMiseryDecision) { + if(source && source === "user" && type === "multiDialog") await socket.executeAsGM("closeDialogById", { dialogId: `poetryinmisery_${game.users?.activeGM.id}` }); + if(source && source === "gm" && type === "multiDialog") await socket.executeAsUser("closeDialogById", browserUser.id, { dialogId: `poetryinmisery_${browserUser.id}` }); + continue; + } + if (poetryInMiseryDecision === true) { - if (resourceKey) { - let updatePath = `system.resources.${resourceKey}.value`; - await actorUuidPrimary.update({ [updatePath]: actorUuidPrimary.system.resources[resourceKey].value + 1 }); - } - - if (!resourceKey) { - let itemExists = actorUuidPrimary.items.find(i => itemData.includes(i.name.toLowerCase())); - if(itemExists) await itemExists.update({ 'system.uses.value' : itemExists.system.uses.value + 1 }) - } + if (resourceKey) { + let updatePath = `system.resources.${resourceKey}.value`; + await validTokenPrimary.actor.update({ [updatePath]: validTokenPrimary.actor.system.resources[resourceKey].value + 1 }); + } - let content = `You use Poetry In Misery to soliloquize over ${workflow.token.actor.name} and regain a use of Bardic Inspiration. `; - let actorPlayer = MidiQOL.playerForActor(validTokenPrimary.actor); - let chatData = { - user: actorPlayer.id, - speaker: ChatMessage.getSpeaker({ token: validTokenPrimary }), - content: content - }; - ChatMessage.create(chatData); + else if(itemData) { + await itemData.update({ 'system.uses.value' : itemData.system.uses.value + 1 }) } + + let content; + if (workflowType === "attack" || workflowType === "ability") content = `You use Poetry In Misery to soliloquize over ${initiatingToken.actor.name}'s nat 1 attack roll and regain a use of Bardic Inspiration.
`; + else if (workflowType === "ability") content = `You use Poetry In Misery to soliloquize over ${initiatingToken.actor.name}'s nat 1 ability check and regain a use of Bardic Inspiration.
`; + else if (workflowType === "save") content = `You use Poetry In Misery to soliloquize over ${chatActor.name}'s nat 1 saving throw and regain a use of Bardic Inspiration.
`; + let actorPlayer = MidiQOL.playerForActor(validTokenPrimary.actor); + let chatData = { + user: actorPlayer.id, + speaker: ChatMessage.getSpeaker({ token: validTokenPrimary }), + content: content + }; + ChatMessage.create(chatData); } } } @@ -93,21 +114,18 @@ export async function showPoetryInMiseryDialog(tokenUuids, actorUuid, tokenUuid, let dialogContent; let originToken = fromUuidSync(tokenUuid); let browserUser = MidiQOL.playerForActor(originToken.actor); - const rollDetailSetting = MidiQOL.safeGetGameSetting('midi-qol', 'ConfigSettings').hideRollDetails; - - if (outcomeType === "damage") { - dialogContent = ` -
-
-

Would you like to use your reaction to use Poetry In Misery for this nat 1 ${outcomeType} roll?

-
-
-

Time remaining

-

${initialTimeLeft} seconds

-
-
- `; - } + + dialogContent = ` +
+
+ Would you like to use your reaction to use Poetry In Misery for this nat 1 ${outcomeType} roll?

+
+
+

Time remaining

+

${initialTimeLeft} seconds

+

+
+
`; let timer; @@ -125,9 +143,6 @@ export async function showPoetryInMiseryDialog(tokenUuids, actorUuid, tokenUuid, if(source && source === "gm") await socket.executeAsUser("closeDialogById", browserUser.id, { dialogId: `poetryinmisery_${browserUser.id}` }); let actor = await fromUuid(actorUuid); let uuid = actor.uuid; - let originToken; - originToken = await fromUuid(tokenUuids); - originToken = await MidiQOL.tokenForActor(originToken.actor.uuid); const hasEffectApplied = await game.dfreds.effectInterface.hasEffectApplied('Reaction', uuid); @@ -137,7 +152,7 @@ export async function showPoetryInMiseryDialog(tokenUuids, actorUuid, tokenUuid, let poetryInMiseryDecision = true; - resolve({poetryInMiseryDecision, damageChosen, programmaticallyClosed: false}); + resolve({poetryInMiseryDecision, programmaticallyClosed: false}); } }, no: { @@ -146,7 +161,7 @@ export async function showPoetryInMiseryDialog(tokenUuids, actorUuid, tokenUuid, // Reaction Declined dialog.dialogState.interacted = true; dialog.dialogState.decision = "no"; - resolve({ poetryInMiseryDecision: false, damageChosen: false, programmaticallyClosed: false}); + resolve({ poetryInMiseryDecision: false, programmaticallyClosed: false}); } }, }, default: "no", @@ -176,10 +191,10 @@ export async function showPoetryInMiseryDialog(tokenUuids, actorUuid, tokenUuid, close: () => { clearInterval(timer); if (dialog.dialogState.programmaticallyClosed) { - resolve({ poetryInMiseryDecision: false, damageChosen: false, programmaticallyClosed: true }); + resolve({ poetryInMiseryDecision: false, programmaticallyClosed: true }); } else if (!dialog.dialogState.interacted) { - resolve({ poetryInMiseryDecision: false, damageChosen: false, programmaticallyClosed: false }); + resolve({ poetryInMiseryDecision: false, programmaticallyClosed: false }); } } }); diff --git a/scripts/module.js b/scripts/module.js index 3b02bc92..679c35cd 100644 --- a/scripts/module.js +++ b/scripts/module.js @@ -2,7 +2,7 @@ import { counterspell, showCounterspellDialog } from './macros/counterspell.js'; import { silveryBarbs, showSilveryBarbsDialog } from './macros/silveryBarbs.js'; import { cuttingWords, showCuttingWordsDialog } from './macros/cuttingWords.js'; import { interception, showInterceptionDialog } from './macros/interception.js'; -//import { poetryInMisery, showPoetryInMiseryDialog } from './macros/poetryInMisery.js'; +import { poetryInMisery, showPoetryInMiseryDialog } from './macros/poetryInMisery.js'; import { deleteChatMessage, gmIdentifyItem, closeDialogById, handleDialogPromises, rollAsUser, convertFromFeet, gmUpdateTemplateSize, findValidTokens } from './helpers.js'; export let socket; @@ -28,8 +28,8 @@ Hooks.once('socketlib.ready', async function() { socket.register("findValidTokens", findValidTokens); socket.register("interception", interception); socket.register("showInterceptionDialog", showInterceptionDialog); - //socket.register("poetryInMisery", poetryInMisery); - //socket.register("showPoetryInMiseryDialog", showPoetryInMiseryDialog); + socket.register("poetryInMisery", poetryInMisery); + socket.register("showPoetryInMiseryDialog", showPoetryInMiseryDialog); }) Hooks.once('ready', async function() { @@ -46,6 +46,13 @@ Hooks.once('ready', async function() { socket }; + const counterspellEnabled = game.settings.get('gambits-premades', 'Enable Counterspell'); + const silveryBarbsEnabled = game.settings.get('gambits-premades', 'Enable Silvery Barbs'); + const cuttingWordsEnabled = game.settings.get('gambits-premades', 'Enable Cutting Words'); + const poetryInMiseryEnabled = game.settings.get('gambits-premades', 'Enable Poetry In Misery'); + const interceptionEnabled = game.settings.get('gambits-premades', 'Enable Interception'); + const identifyRestrictionEnabled = game.settings.get('gambits-premades', 'Enable Identify Restrictions'); + async function executeWorkflow({ workflowItem, workflowData, workflowType }) { if (game.user.isGM) { await socket.executeAsGM( workflowItem, { workflowData: workflowData, workflowType: workflowType }); @@ -56,29 +63,33 @@ Hooks.once('ready', async function() { Hooks.on("midi-qol.prePreambleComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (game.settings.get('gambits-premades', 'Enable Counterspell') === true) await executeWorkflow({ workflowItem: "counterspell", workflowData: workflowItemUuid }); + if (counterspellEnabled) await executeWorkflow({ workflowItem: "counterspell", workflowData: workflowItemUuid }); }); Hooks.on("midi-qol.preCheckHits", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (game.settings.get('gambits-premades', 'Enable Silvery Barbs') === true) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "attack" }); - if (game.settings.get('gambits-premades', 'Enable Cutting Words') === true) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "attack" }); + if (silveryBarbsEnabled) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "attack" }); + if (cuttingWordsEnabled) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "attack" }); }); - /*Hooks.on("midi-qol.postAttackRollComplete", async (workflow) => { + Hooks.on("midi-qol.postAttackRollComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (game.settings.get('gambits-premades', 'Enable Poetry In Misery') === true) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "attack" }); - });*/ + if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "attack" }); + }); Hooks.on("midi-qol.preSavesComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (game.settings.get('gambits-premades', 'Enable Silvery Barbs') === true) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "save" }); + if (silveryBarbsEnabled) await executeWorkflow({ workflowItem: "silveryBarbs", workflowData: workflowItemUuid, workflowType: "save" }); + }); + + Hooks.on("midi-qol.postSavesComplete", async (workflow) => { + let workflowItemUuid = workflow.itemUuid; + if (poetryInMiseryEnabled) await executeWorkflow({ workflowItem: "poetryInMisery", workflowData: workflowItemUuid, workflowType: "save" }); }); Hooks.on("preUpdateItem", (item, update) => { - if (!game.user.isGM && ("identified" in (update.system ?? {})) && game.settings.get('gambits-premades', 'Enable Identify Restrictions') === true) { - console.log(item, update) + if (!game.user.isGM && ("identified" in (update.system ?? {})) && identifyRestrictionEnabled) { ui.notifications.error(`${game.settings.get('gambits-premades', 'Identify Restriction Message')}`); return false; } @@ -86,14 +97,14 @@ Hooks.once('ready', async function() { Hooks.on("midi-qol.preDamageRollComplete", async (workflow) => { let workflowItemUuid = workflow.itemUuid; - if (game.settings.get('gambits-premades', 'Enable Cutting Words') === true) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "damage" }); - if (game.settings.get('gambits-premades', 'Enable Interception') === true) await executeWorkflow({ workflowItem: "interception", workflowData: workflowItemUuid, workflowType: "damage" }); + if (cuttingWordsEnabled) await executeWorkflow({ workflowItem: "cuttingWords", workflowData: workflowItemUuid, workflowType: "damage" }); + if (interceptionEnabled) await executeWorkflow({ workflowItem: "interception", workflowData: workflowItemUuid, workflowType: "damage" }); }); - /*Hooks.on("dnd5e.rollAbilityTest", async (actor, roll, abilityId) => { - if (game.settings.get('gambits-premades', 'Enable Cutting Words')) { + Hooks.on("dnd5e.rollAbilityTest", async (actor, roll, abilityId) => { + if (poetryInMiseryEnabled) { await executeWorkflow({ - workflowItem: "cuttingWords", + workflowItem: "poetryInMisery", workflowData: { actor: actor, roll: roll, @@ -102,7 +113,7 @@ Hooks.once('ready', async function() { workflowType: "ability" }); } - });*/ + }); }); Hooks.on("preUpdateCombat", (combat, update, options) => { diff --git a/scripts/settings.js b/scripts/settings.js index dd8516fc..b095f898 100644 --- a/scripts/settings.js +++ b/scripts/settings.js @@ -27,9 +27,7 @@ function registerSettings() { onChange: value => { const numericValue = Number(value); if (!isNaN(numericValue)) { - // Used numericValue as a number } else { - // Handle invalid input console.error("Invalid input for Numeric Setting Example: Not a number."); } } @@ -54,9 +52,7 @@ function registerSettings() { onChange: value => { const numericValue = Number(value); if (!isNaN(numericValue)) { - // Used numericValue as a number } else { - // Handle invalid input console.error("Invalid input for Numeric Setting Example: Not a number."); } } @@ -81,9 +77,7 @@ function registerSettings() { onChange: value => { const numericValue = Number(value); if (!isNaN(numericValue)) { - // Used numericValue as a number } else { - // Handle invalid input console.error("Invalid input for Numeric Setting Example: Not a number."); } } @@ -108,9 +102,7 @@ function registerSettings() { onChange: value => { const numericValue = Number(value); if (!isNaN(numericValue)) { - // Used numericValue as a number } else { - // Handle invalid input console.error("Invalid input for Numeric Setting Example: Not a number."); } } @@ -135,15 +127,13 @@ function registerSettings() { onChange: value => { const numericValue = Number(value); if (!isNaN(numericValue)) { - // Used numericValue as a number } else { - // Handle invalid input console.error("Invalid input for Numeric Setting Example: Not a number."); } } }); - /*game.settings.register('gambits-premades', 'Enable Poetry In Misery', { + game.settings.register('gambits-premades', 'Enable Poetry In Misery', { name: "Enable Poetry In Misery", hint: "If enabled, this will present an appropriate dialog to users with bards Poetry in Misery feature, and automate application when used.", scope: 'world', @@ -162,13 +152,11 @@ function registerSettings() { onChange: value => { const numericValue = Number(value); if (!isNaN(numericValue)) { - // Used numericValue as a number } else { - // Handle invalid input console.error("Invalid input for Numeric Setting Example: Not a number."); } } - });*/ + }); game.settings.register('gambits-premades', 'Enable Identify Restrictions', { name: "Enable Identify Restrictions",