From d5cc256c4f927d01e7132fa69240489f86eb8663 Mon Sep 17 00:00:00 2001 From: Mike Bloy Date: Mon, 18 Dec 2023 19:21:39 -0600 Subject: [PATCH] set token vision macro --- .gitattributes | 7 +- CHANGELOG.md | 2 + macros/setTokenVision.js | 115 +++++++++++++ packs/common-actions/000005.ldb | Bin 11401 -> 12215 bytes packs/common-actions/LOG | 10 +- packs/common-actions/MANIFEST-000002 | Bin 136 -> 161 bytes .../Illumination_RC1Nz6iph8wPPK1B.json | 156 ++++++++++++++++++ packs/gear/LOG | 10 +- packs/helper-actors/LOG | 10 +- packs/helper-macros/000005.ldb | Bin 10218 -> 12050 bytes packs/helper-macros/LOG | 10 +- packs/helper-macros/MANIFEST-000002 | Bin 137 -> 137 bytes .../_source/Gold_Totals_QMnx9cuyw81kRS2o.json | 8 +- ..._Effects_Item_Action_AjuA11hQ48UJNwlH.json | 8 +- .../Quick_Damage_Roll_NANSnFATVJntUfL7.json | 4 +- .../Request_Notice_Roll_pnLnFrfTTJeodFRy.json | 4 +- .../Request_Roll_G9ksuYJo1512PTo9.json | 8 +- .../Set_Token_Vision_arjbjmgKMjyp9tWE.json | 27 +++ packs/module-docs/000005.ldb | Bin 9796 -> 10624 bytes packs/module-docs/LOG | 10 +- packs/module-docs/MANIFEST-000002 | Bin 161 -> 161 bytes .../Common_Actions_HbtPlHNFO1L6RVj0.json | 14 +- .../_source/Macros_Mw1g2Fx5dp4SoqVP.json | 37 ++++- 23 files changed, 389 insertions(+), 51 deletions(-) create mode 100644 macros/setTokenVision.js create mode 100644 packs/common-actions/_source/Illumination_RC1Nz6iph8wPPK1B.json create mode 100644 packs/helper-macros/_source/Set_Token_Vision_arjbjmgKMjyp9tWE.json diff --git a/.gitattributes b/.gitattributes index eab0ec5..0a3d77e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,8 @@ -packs/** binary -packs/**/_source text +packs/**/*.ldb binary +packs/**/MANIFEST-* binary +packs/**/CURRENT binary +packs/**/LOCK binary +packs/**/LOG* binary *.webp filter=lfs diff=lfs merge=lfs -text *.jpeg filter=lfs diff=lfs merge=lfs -text *.jpg filter=lfs diff=lfs merge=lfs -text diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bb8b28..87b8abb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- New Macro: Set token vision +- New Common Action: Illumination (for the darkness penalty effects) - New macro: Quick Damage Roll - New Vision mode: Low Light Vision - Power Effect for Zombie diff --git a/macros/setTokenVision.js b/macros/setTokenVision.js new file mode 100644 index 0000000..9d85961 --- /dev/null +++ b/macros/setTokenVision.js @@ -0,0 +1,115 @@ +const argBright = typeof args === 'undefined' ? null : args.length > 0 ? args[0] : null +// argument can be one of 'bright', 'dim', 'dark', 'pitchdark'. Other values +// will guess based on scene darkness +const BRIGHT_LEVELS = ['bright', 'dim', 'dark', 'pitchdark'] +const THRESHOLDS = { + dim: 0.4, + dark: 0.6, + pitchdark: 0.8 +} +const RANGES = { + basic: { + bright: 25, + dim: 25, + dark: 10, + pitchdark: 0 + }, + lowlight: { + bright: 25, + dim: 25, + dark: 10, + pitchdark: 0 + }, + darkvision: { + bright: 25, + dim: 25, + dark: 10, + pitchdark: 10 + }, + nightvision: { + bright: 200, + dim: 200, + dark: 200, + pitchdark: 200 + } +} +const SIGHT_NAMES = { + lowlight: 'low-light-vision', + darkvision: 'darkvision', + nightvision: 'night-vision' +} +const SIGHT_MODES = { + lowlight: 'lowlight', + darkvision: 'darkvision', + nightvision: 'darkvision', + basic: 'basic' +} + +function findAbility (token, swid) { + return token.actor.items.find(i => i.type === 'ability' && i.system.swid === swid) +} + +async function main () { + const scene = game.scenes.current + let sceneBright = BRIGHT_LEVELS[0] + if (scene.darkness > THRESHOLDS.pitchdark) { + sceneBright = BRIGHT_LEVELS[3] + } else if (scene.darkness > THRESHOLDS.dark) { + sceneBright = BRIGHT_LEVELS[2] + } else if (scene.darkness > THRESHOLDS.dim) { + sceneBright = BRIGHT_LEVELS[1] + } + let bright = sceneBright + if (argBright && BRIGHT_LEVELS.includes(argBright)) { + bright = argBright + } + const menuData = { + inputs: [ + { type: 'radio', label: 'Bright Light', options: ['bright', bright === BRIGHT_LEVELS[0]] }, + { type: 'radio', label: 'Dim Light', options: ['bright', bright === BRIGHT_LEVELS[1]] }, + { type: 'radio', label: 'Dark', options: ['bright', bright === BRIGHT_LEVELS[2]] }, + { type: 'radio', label: 'Pitch Dark', options: ['bright', bright === BRIGHT_LEVELS[3]] } + ], + buttons: [ + { label: 'Select Scene Brightness', value: 'ok', default: true }, + { label: 'Cancel', value: 'cancel' } + ] + } + const menuConfig = { title: 'Select scene brightness' } + const result = await warpgate.menu(menuData, menuConfig) + if (result.buttons !== 'ok') { return } + + for (let i = 0; i < 4; i++) { + if (result.inputs[i]) { bright = BRIGHT_LEVELS[i] } + } + + for (const tokenId of scene.tokens.map(t => t.id)) { + const token = scene.tokens.get(tokenId) + if (!token.sight.enabled) { + console.log(`Skipping ${token.name}, vision not enabled`) + continue + // don't set sight on a token where it's not enabled + } + let sightType = 'basic' + for (const sight in SIGHT_NAMES) { + if (findAbility(token, SIGHT_NAMES[sight])) { + sightType = sight + } + } + const range = RANGES[sightType][bright] + const sightMode = SIGHT_MODES[sightType] + const visionModeData = CONFIG.Canvas.visionModes[sightMode].vision.defaults + const data = { + 'sight.range': range, + 'sight.visionMode': sightMode, + 'sight.attenuation': visionModeData.attenuation, + 'sight.brightness': visionModeData.brightness, + 'sight.saturation': visionModeData.saturation, + 'sight.contrast': visionModeData.contrast + } + console.log(`Updating ${token.name}:`, sightType, bright, data) + await token.update(data) + } +} + +main() diff --git a/packs/common-actions/000005.ldb b/packs/common-actions/000005.ldb index 6c4315df67513603e5974c5e65bad0a1553f14eb..c15ed107e7e6b8579fe9f125d9a90ffa1e4caf37 100644 GIT binary patch delta 6058 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 DRq8(F diff --git a/packs/common-actions/LOG b/packs/common-actions/LOG index dedeab7..cc909c1 100644 --- a/packs/common-actions/LOG +++ b/packs/common-actions/LOG @@ -1,5 +1,5 @@ -2023/12/18-15:37:09.644182 7f63a67bd700 Delete type=3 #1 -2023/12/18-15:37:09.646809 7f63a5542700 Level-0 table #5: started -2023/12/18-15:37:09.654066 7f63a5542700 Level-0 table #5: 11401 bytes OK -2023/12/18-15:37:09.663437 7f63a5542700 Delete type=0 #3 -2023/12/18-15:37:09.663538 7f63a5542700 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end) +2023/12/18-23:38:01.173251 7fb80df3c700 Delete type=3 #1 +2023/12/18-23:38:01.175935 7fb80d481700 Level-0 table #5: started +2023/12/18-23:38:01.183313 7fb80d481700 Level-0 table #5: 12215 bytes OK +2023/12/18-23:38:01.192571 7fb80d481700 Delete type=0 #3 +2023/12/18-23:38:01.192679 7fb80d481700 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end) diff --git a/packs/common-actions/MANIFEST-000002 b/packs/common-actions/MANIFEST-000002 index 8389ff4de47b396b4518c25c1bcdc0c19c3df277..0916a641673cb50bb46c87418ef77de9ef7f9c95 100644 GIT binary patch delta 118 zcmeBRT*x@VDF2d;)8z~XMkW?c24*%EX?7;o?eU6=Y56%RsYS(#26-+)Zn?fr#ilM! zUZIx0jG_!+V4;{802i|S7nx2kYQ0C5a4a-q?c|PZkpkhSzKuB OTkKpA70$>H(Fg!ZY98?b delta 93 zcmZ3;*ugl#D9mS4i>yBbBNGcJ12Y?oI6D(-XQZNHT7FJSYEiMGL7q#HTduEDv8jub oSE!{gqaXtq$SY=+q~;bYRydj$di&;#q_w=Zw5zOE z{*%NNDNtU@NSxE-DrztiiAT&e%Xi=QhE^^~fo%Jh$xRy~ub3p-S`Yt^qPPoGxy9w&NT-C3E7 zZ}su>aVZ(?hD7`L*hJySDuJXfLo8;roC(VWQ8hd_!%AiF**{Q4UuvMJ)2aV99PQX9Czq7<@n@; zaNtxyG*naP=ye2Y-Sf-By#}Oit;_L@AjDVi; z6%^&`b%FYgHZGk>u`-8RkyR}gTFX0Y9;a?h^8%mFrSUv*Nlt3xlf0Y_BIj#D;j!{6 zO?UYs!uR8=DW+flhr-L{)B2rs;3XTw3khyZ!t}3M1TI7^?_P-APfbY$NAE zqsnCdo&J4_j55OjSfgd2c~V(%Oj*NZBr%%#9V%=xIsZ&_}#aElpHl842d6jxVh z43-5^N+r~{slkH&R~r3i8m(RCvhuk%^m>iX)RCc-4#pKwmuYBQL!Ab=^gp1$vU)_T z-=!feSyI#s8qlZK>DrjoKzLES!Qoi+3=MU}M!GDgAI0}SUPL!}{f>aQ#q06<+%8|_ zSH-7`=-MZ=6)QBz>I)j+eeFcWbDGfI#dVgi9c=j02>qd}aK5q@8jqG3zl5;*C{cYU z%%57zO0%)qbn=G2*`-WC9&Lw);EbYan3J(d%y9zR%ImwSj?=^g$0IkuouZ;flw$U{ zw3I!k0kLqxmc?aWNZMnm++Bu}J^yEv5i2Dl5?e~)Rb#OqPs25dENX4VYo5a^Hq8rM z!iug(LN1k0p&(i7U{airlxI)~Inec_UOVoX#O>>p6GC${Tr-kObApWGtbk%15(S*6 zku^rn8Ldson&8u93B^itkkV#&IX*+GS{O7S&u|i&XHz*YOZF!g_*4odaXE`(Y?e#l zx1emC6Y?B_E`xyECj|QSO_43#on0e0^|o(q?;XaYAHPciU{V)CBVAkChr0%P+u(Iz zmwHEO4em9F988NoS_;!p4ZNhf{291L>7NjmbsgF*;r`C{@`w?4#>az*>?aUv1j-wIz0?VXPnGzRL=BHPpz!e2>Czx+P_|Yh!M}gDy6cFIy z?PCBqbQeIvoHS|bORBW36yb8vldTyrT>rmRf4DD@3#eyGr`zgu@R(c0?$2~g(ocTC=S0m4`uP;Gqr%oHBk!&Bgu zhn_ishr4eafWecO0D7Ip-vimk?|{kMUN#~W%gM4>KS3KQgm!suuNmf2TwF%OzuwSz zKifuFn=VXZW3!6qmaA1-LlDVQj&tpX&R-ZdvqGFpnfxG5>$)9zY?os{8rx{tEDFsqk<7>;lWnXn~b7Nz8C2d^fN`GJHR1YJZfD zfkyZ_OVdHX*mVRlt4~q}an9O^c0El|%M${$Yo|pC+1Sxd*ffyiI>e)mDBpt58#d%> zO@rN^QRDn1>>fH6d{#l=(ggMs626SY6vw2*q;0BkH|>L$42aL7x?R|)m!}#{_d*|# z|M5wpJE6AI^;WN#=j-P9Oa}98wF|F$>l$jg30(+i5e{%j6@jn7>j8pct;`EK z&O8HQU2`)^h=Nr{*#npNXtk?kVd?WWw15G`Azrp-nSMZT>^pD%2hwjCS<2wx_Xiqo zuRjf+1$mjSqp%e*8p`u?@^7o&)y8MI_?+ooOoMKsZrA!A3XGF7n5;htX921Yo%8)x zY@7g1j0jXMfkz=EyHwAUO8R{~`s1FoD*-7q!-lP-18y|kZm(38z|963NmziGYbth@ z(zin&H8~#BXUf1NE$3-F8KwHf1a#7u^`|J4mtjETCD_a^Zo;dyd7!_eyOY5-GtXw3 zs^H31NaLp9aln{B$PXIp*!&|MK2TK?@&av^#VpyDzFMn^i-Ih%S-E2t=&I>2s{54D zT5U9wVCBhY_&ccJR8#%np(22ua`8`s9CQ+#%`A|$70xnZLQo&330vd(yiR>aHEXJf zJfL1VtEoM!pk#_~$Eq;m3?#omL1*`;($Ol6z1GAr4axD*b*%)-h(0w-o4;i6zP znV)@xSh+>9?-oT}prysp;_wGNZrsp*OLsrvbiO&D7@>@>60_mW$sWmq%?-Sk8P%ro(sxU}7tT^oL<4xkKUvlUQeVgACa0go49=Gvfihk}>dhZP(heCaf();KM2i{EFsww`j8I%AUeK=5?E@ zKU6{^A!h1Fu}?VquLnw*Ta>rA0wrqWvicH@78|>@sj52|2j-l)7enhE!u6qc~?Wv{|x6((Q9BPY*@64Za(yH(sgABj5Wg!GL&#jz_m z*^uF+IG2&}Bs9x2yp*tWOWdkP=j;-fU>3Mo2EQ^J7c=mdf}?&%vvHMGm@Zo&-2GR0 zk#L{iJYhB*>wTG6h`Q3@sIcJPG8)*?H{yqX6N)Li zuA-rTHR^EI>{TC~Q_xbVA5eH|9=LQ3U-@hM^!`hP_6jq?cWh#_bALjH{i++UEGuvd zE-QK}VDx)HoIXzs{cun5$`NAr2vLXG;dZsSy|Yt%WBVRIQ;~O|h=hiN}fu_YM8q?sLQ=#pb`)w-JM| zs(AH5EzVUqTmF+D dt@5Lh*NO`dTWe^~@7R)k6OLCW3NKhU{6CkNKr{dV delta 2914 zcmaKud2k!`7036tUP&uicWhZUb}TD)BsY>Qt*(`DlvweNEhn~R=WqfmX=Te^?JBF4 zFX}oO2&JV!$qp`wfoaNB_=5ljPiq66k(6jyr2lRE7Ug>8tzx9?^O&qr*Pvj ztaV#&Dk*H~cV@=My0)~m0%?#{h-TFmv??i%s#cqt>QW1M0~sjNe8L>!%`s~I}sU}$zw7&>xVz6LX`-+NL#P-Ie*)wz^|<%Co+ z71!S)zEo7PcBv3EQSv(w3uy5SumdcWonYgpWR8t5{#24eOuAut?3I^AMe(5O3Ql$9+g5zCgY+vAAE zewO-~{t2b-dhil5MXg56!)LJYKFoJQjZ=wH^}{%pup72%)o+QP8>*%^Ye@5y%}kGH zI9}-Ca(rB^(-fJnq$4K=Hmx6IN>0gMMQl- z(>$HWZ9dW&@cFzxznk!f|0KO4moF8P$HTl--LFMB!%wt^Pvl5ee}@KfpLo{rj3#ua zwA%b1AwJT-asCgcal|x_Ri&vo&t;VmC65^??rMt%ABq%-eHtD$PVejnlYyYm6; zKmehGN5TI0q=>&J|J=ico8=`>WAs*cD>p$z$2o79j&1_wK|5N8skBj8aa6>Mo;?Kr z)q=e9V4*cDP`rJ5f@TxQYZ0DS<4e61I$>!nh;2Ie6JzoiVI?b`B z%`jHg6mM!^m~sf++GuTLdlc0wJI*6m(bRfY#mmgX|xv<$FQweVSzV-hsDNDj5d`2O)h7u%QH#yK5mE0;gS4JT+|rrp4sg31w0<78$yck`E2Gimw?=;sMzQu zoB_Yr@A8l~Gec#CPF2-~jpFW7gC5E!3&mp&x~{Yan^`=vu59`YNCe$ekk4~iIuTE~ z8hbk3(O#-!l8=FkrsTFk?RG95OM#C=JJ4u2d=C-{qXRHgu&{<;A=witUa;p@a+k1A zN_Jt6vHS)Unqvbh|KM>qsx`+so^H7I#d;J9%G*%WT#rgh;E(Zg(g?RZT#rIA5u`WZ z4tU&N_rZD;;da^4@NZ#*aD!9(t_wL)O4oGr<(BigTD)(qRkzm?8bEOvUSBJAe;U0f zD_)QliRaepu{Q3&eIl@2gFcIit1a8g57pufEj(%m^VSBQrzRXpNF%Fc5y>5Kh%=TQ zl1Gn%zgoppc%^8tZeO$5U0>@M=2EQHVl!E4r*1G!y)XhmjUWfaAfo#YVv2}&S=aQP zFajgSWor6iTAh&%h*F@(g!i)U&*)2HQHHpeiw=iZR6z9i2dm(3iP z{a2UnJ}xWwIh|g@OZpEUmz|vreOpG%$~sPBS)sLcoZXge>342*G2U(<3(m?mH`1{E z3U!+}HcnHFsey-`iE8gv-v0xc;aa6OL-TQZ--E4n!cdA&*r(|U+8$$aw4J9D%ij-Q zkbN@y!Y}fqa)wlP18@hfSZJ5OpGG^=Pi2+Wu<%G9;dc3*;WUc)K*fAk*_IAP&}bU* z>2Fi6i~uiUx&CHP8(ZQf*j726 zrIWWeMV8W>h+5HWn61|NKb29^~X{8I8HIP*VfaDIgbj=3*s zKzQ6fpa1{UV9yE+v{zveZ~~CHi~?hE^V`6-!h);Zy!5@l*u-P@(xCmABC)f2X=}NZ zdV19!VK=Cd!lAMeLlB*GWwjQ1DfBhaZP2~Y3z65mR=pz{95riaJ0tMMdwn6jL4|YSiTgv zPlL!Yvreo0wDn#Lv=5ZPH;16p&{sbFZs;o?1y|~r^B=Ta5XK(-mBNGcJ12Y?o96J;1q_~N0Htf<2U;qHDAO_(8 delta 38 qcmeBV>|~r^BqEi)aYX 0 ? args[0] : null\n// argument can be one of 'bright', 'dim', 'dark', 'pitchdark'. Other values\n// will guess based on scene darkness\nconst BRIGHT_LEVELS = ['bright', 'dim', 'dark', 'pitchdark']\nconst THRESHOLDS = {\n dim: 0.4,\n dark: 0.6,\n pitchdark: 0.8\n}\nconst RANGES = {\n basic: {\n bright: 25,\n dim: 25,\n dark: 10,\n pitchdark: 0\n },\n lowlight: {\n bright: 25,\n dim: 25,\n dark: 10,\n pitchdark: 0\n },\n darkvision: {\n bright: 25,\n dim: 25,\n dark: 10,\n pitchdark: 10\n },\n nightvision: {\n bright: 200,\n dim: 200,\n dark: 200,\n pitchdark: 200\n }\n}\nconst SIGHT_NAMES = {\n lowlight: 'low-light-vision',\n darkvision: 'darkvision',\n nightvision: 'night-vision'\n}\nconst SIGHT_MODES = {\n lowlight: 'lowlight',\n darkvision: 'darkvision',\n nightvision: 'darkvision',\n basic: 'basic'\n}\n\nfunction findAbility (token, swid) {\n return token.actor.items.find(i => i.type === 'ability' && i.system.swid === swid)\n}\n\nasync function main () {\n const scene = game.scenes.current\n let sceneBright = BRIGHT_LEVELS[0]\n if (scene.darkness > THRESHOLDS.pitchdark) {\n sceneBright = BRIGHT_LEVELS[3]\n } else if (scene.darkness > THRESHOLDS.dark) {\n sceneBright = BRIGHT_LEVELS[2]\n } else if (scene.darkness > THRESHOLDS.dim) {\n sceneBright = BRIGHT_LEVELS[1]\n }\n let bright = sceneBright\n if (argBright && BRIGHT_LEVELS.includes(argBright)) {\n bright = argBright\n }\n const menuData = {\n inputs: [\n { type: 'radio', label: 'Bright Light', options: ['bright', bright === BRIGHT_LEVELS[0]] },\n { type: 'radio', label: 'Dim Light', options: ['bright', bright === BRIGHT_LEVELS[1]] },\n { type: 'radio', label: 'Dark', options: ['bright', bright === BRIGHT_LEVELS[2]] },\n { type: 'radio', label: 'Pitch Dark', options: ['bright', bright === BRIGHT_LEVELS[3]] }\n ],\n buttons: [\n { label: 'Select Scene Brightness', value: 'ok', default: true },\n { label: 'Cancel', value: 'cancel' }\n ]\n }\n const menuConfig = { title: 'Select scene brightness' }\n const result = await warpgate.menu(menuData, menuConfig)\n if (result.buttons !== 'ok') { return }\n\n for (let i = 0; i < 4; i++) {\n if (result.inputs[i]) { bright = BRIGHT_LEVELS[i] }\n }\n console.log(`Scene brightness is ${bright}`)\n\n for (const tokenId of scene.tokens.map(t => t.id)) {\n const token = scene.tokens.get(tokenId)\n if (!token.sight.enabled) {\n console.log(`Skipping ${token.name}, vision not enabled`)\n continue\n // don't set sight on a token where it's not enabled\n }\n let sightType = 'basic'\n for (const sight in SIGHT_NAMES) {\n console.log(`checking ${token} for ${SIGHT_NAMES[sight]}`)\n if (findAbility(token, SIGHT_NAMES[sight])) {\n sightType = sight\n console.log(`${token.name} has ${sightType}`)\n }\n }\n const range = RANGES[sightType][bright]\n const sightMode = SIGHT_MODES[sightType]\n const visionModeData = CONFIG.Canvas.visionModes[sightMode].vision.defaults\n const data = {\n 'sight.range': range,\n 'sight.visionMode': sightMode,\n 'sight.attenuation': visionModeData.attenuation,\n 'sight.brightness': visionModeData.brightness,\n 'sight.saturation': visionModeData.saturation,\n 'sight.contrast': visionModeData.contrast\n }\nconsole.log(`Updating ${token.name}:`, data)\n await token.update(data)\n }\n}\n\nmain()", + "folder": null, + "ownership": { + "default": 0, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": { + "core": {} + }, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1702934878750, + "modifiedTime": 1702959790712, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_id": "arjbjmgKMjyp9tWE", + "sort": 100000, + "_key": "!macros!arjbjmgKMjyp9tWE" +} diff --git a/packs/module-docs/000005.ldb b/packs/module-docs/000005.ldb index f77efe97dc7c169bbfc605ce77879f626b7adfdf..360c3cdcee89c77907580eb4a5cdf3bc16060971 100644 GIT binary patch delta 4394 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 Yw)C&t{J+^IY0ml;n!kRT)?QElFJxX*g8%>k delta 3736 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 diff --git a/packs/module-docs/LOG b/packs/module-docs/LOG index 5e600ee..6ac9446 100644 --- a/packs/module-docs/LOG +++ b/packs/module-docs/LOG @@ -1,5 +1,5 @@ -2023/12/18-15:37:20.266975 7f00037bf700 Delete type=3 #1 -2023/12/18-15:37:20.269045 7f0001542700 Level-0 table #5: started -2023/12/18-15:37:20.276064 7f0001542700 Level-0 table #5: 9796 bytes OK -2023/12/18-15:37:20.285028 7f0001542700 Delete type=0 #3 -2023/12/18-15:37:20.285119 7f0001542700 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!YSuk1v59tLaL9XUK.BlDoYgdTxhyCBP3Y' @ 0 : 0; will stop at (end) +2023/12/18-23:38:04.812110 7f4d227be700 Delete type=3 #1 +2023/12/18-23:38:04.814586 7f4d20fbb700 Level-0 table #5: started +2023/12/18-23:38:04.821794 7f4d20fbb700 Level-0 table #5: 10624 bytes OK +2023/12/18-23:38:04.830506 7f4d20fbb700 Delete type=0 #3 +2023/12/18-23:38:04.830630 7f4d20fbb700 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!YSuk1v59tLaL9XUK.BlDoYgdTxhyCBP3Y' @ 0 : 0; will stop at (end) diff --git a/packs/module-docs/MANIFEST-000002 b/packs/module-docs/MANIFEST-000002 index 1d10c0a58efb5d98a758a6f24ff06c78621888a5..95cc45787939dfddcc3dbbe9ece1c5d6d46c8689 100644 GIT binary patch delta 38 qcmZ3;xR7yzk%+>VA8Z*6j7%(?49sjS0_;qz4Z#!LLf8cuzyJWQb_V4D delta 38 qcmZ3;xR7yzk;p{R3pyDLj7%(?49sjS{OnAuM|>u_g|PE8fB^ucs|K(D diff --git a/packs/module-docs/_source/Common_Actions_HbtPlHNFO1L6RVj0.json b/packs/module-docs/_source/Common_Actions_HbtPlHNFO1L6RVj0.json index adb90db..c78d477 100644 --- a/packs/module-docs/_source/Common_Actions_HbtPlHNFO1L6RVj0.json +++ b/packs/module-docs/_source/Common_Actions_HbtPlHNFO1L6RVj0.json @@ -13,7 +13,7 @@ "image": {}, "text": { "format": 1, - "content": "

The Common Actions compendium contains helpful actions that may be dragged to character sheets or character sheet items to enhance their capability.

These come in several styles:

Power Actions and Oppose

Power Actions are intended to enhance specific powers with the relevant damage modifiers and useful oppositions. The Power Effect action is a macro action intended to be dragged to every power's action tab, and will run the correct power's effect based on the item name or swid.

Power Actions which share a name with a power are intended to be dragged to powers which share their name. They'll generally add all or most special power effects, opposed rolls, and damage.

Power Actions and Oppose actions named \"Oppose (trait)\" or \"Shake Off (trait)\" are intended to be dragged a la carte to any power or weapon that needs them. They generally add resistance rolls to the chat cart for the item.

Savage Pathfinder or SWADE

Actions in these categories are intended to be helpful rule references and dragged directly to a character sheet and used as an action. They'll add useful trait, damage, and resist rolls to the actions on a card, and the description text links to the premium module's documentation.

" + "content": "

The Common Actions compendium contains helpful actions that may be dragged to character sheets or character sheet items to enhance their capability.

These come in several styles:

Power Actions and Oppose

Power Actions are intended to enhance specific powers with the relevant damage modifiers and useful oppositions. The Power Effect action is a macro action intended to be dragged to every power's action tab, and will run the correct power's effect based on the item name or swid.

Power Actions which share a name with a power are intended to be dragged to powers which share their name. They'll generally add all or most special power effects, opposed rolls, and damage.

Power Actions and Oppose actions named \"Oppose (trait)\" or \"Shake Off (trait)\" are intended to be dragged a la carte to any power or weapon that needs them. They generally add resistance rolls to the chat cart for the item.

Savage Pathfinder or SWADE

Actions in these categories are intended to be helpful rule references and dragged directly to a character sheet and used as an action. They'll add useful trait, damage, and resist rolls to the actions on a card, and the description text links to the premium module's documentation.

Illumination

The Illumination action exists to provide some easily toggled effects for Dim, Dark, and Pitch Dark illumination penalties. Drag it to a character sheet to get the effects in your quick bar.

" }, "video": { "controls": true, @@ -28,10 +28,10 @@ "flags": {}, "_stats": { "systemId": "swade", - "systemVersion": "3.1.4", - "coreVersion": "11.309", + "systemVersion": "3.2.5", + "coreVersion": "11.315", "createdTime": 1695618024231, - "modifiedTime": 1695618090235, + "modifiedTime": 1702960414116, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_key": "!journal.pages!HbtPlHNFO1L6RVj0.Tkzn8n0GpCQNiRVc" @@ -47,11 +47,11 @@ }, "_stats": { "systemId": "swade", - "systemVersion": "3.2.2", + "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1695618001902, - "modifiedTime": 1700440473945, - "lastModifiedBy": "R9ZgY0IvWl8ovIuT" + "modifiedTime": 1702960414116, + "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "HbtPlHNFO1L6RVj0", "sort": 200000, diff --git a/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json b/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json index 8bc59a3..a01f5e5 100644 --- a/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json +++ b/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json @@ -214,6 +214,41 @@ }, "_id": "ruuxf72hwlcRzymt", "_key": "!journal.pages!Mw1g2Fx5dp4SoqVP.ruuxf72hwlcRzymt" + }, + { + "sort": 400000, + "name": "Set Token Vision", + "type": "text", + "_id": "mT3lMGUo9zvqQsOh", + "title": { + "show": true, + "level": 1 + }, + "image": {}, + "text": { + "format": 1, + "content": "

The Set Token Vision macro can be called without arguments, or with (eg from MATT) a single argument of one of 'bright', 'dim', 'dark', 'pitchdark'. If called without an argument or with an invalid argument, it will attempt to guess the current scene's brightness level based on the darkness level defined on the scene.

It will pop up a dialog confirming the brightness level before trying to set, for all tokens with vision already enabled, vision range, vision type, and vision parameters to something appropriate based on the scene brightness, the vision related special abilities the token has, and some estimates to use savage worlds vision within a VTT. The macro as written assumes Savage Pathfinder vision rules.

For global illumination penalties one can apply, please see the Illumination action under the SWADE MB Common Actions compendium.

" + }, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "system": {}, + "ownership": { + "default": -1, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1702959842685, + "modifiedTime": 1702960233927, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!journal.pages!Mw1g2Fx5dp4SoqVP.mT3lMGUo9zvqQsOh" } ], "flags": { @@ -226,7 +261,7 @@ "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1678169291843, - "modifiedTime": 1702934832358, + "modifiedTime": 1702960233927, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "Mw1g2Fx5dp4SoqVP",