sudo apt-get remove texlive*
rm -rf /usr/local/texlive/2020
rm -rf ~/.texlive2020
rm -rf /usr/local/texlive/2019
rm -rf ~/.texlive2019
let positiveDice = 8; | |
let negativeDice = 8; | |
await EotW_ResolveRoll([positiveDice,negativeDice], "Test Roll", "A test roll"); | |
//dicePool [+poolValue,-poolValue] | |
async function EotW_ResolveRoll(dicePool, title = '', flavor = '', img = ''){ | |
let [positivePool, negativePool] = dicePool; | |
if (positivePool < 0) positivePool = 0; | |
if (negativePool < 0) negativePool = 0; |
(async () => { | |
for (const scene of game.scenes.filter(s=>s.folder?.name == "Theater of the Mind")) { | |
const t = await scene.createThumbnail({img: scene.img || undefined}); | |
if (t?.thumb) { | |
console.log(`Regenerated thumbnail for ${scene.name}`); | |
await scene.update({thumb: t.thumb}); | |
} | |
} | |
})(); |
const folder = game.folders.getName("Music"); | |
//wont work on folders that are not storing playlists | |
if (folder.documentClass.name !== "Playlist") return; | |
const playlists = folder.contents; | |
const updates = playlists.map(pl => { | |
const soundUpdates = pl.sounds.map(s => { | |
const file = s.path.split("/").at(-1); | |
const newPath = "modules/shared-compendiums/assets/audio/music/" + file; | |
return {_id: s.id, path: newPath}; |
const array1 = ['Tser Pool Encampment', 'Old Bonegrinder Megalith']; | |
const array2 = ['Tser-Pool-Encampment.mp4', 'Old-Bonegrinder-Megalith.mp4']; | |
const defaultScene = { | |
"folder": "ky71iloVQcMXBzt9", | |
"name": "Test", | |
"_id": "sU1sqnDUVFAaDRZb", | |
"active": false, | |
"navigation": false, |
#hotbar { | |
margin:auto | |
} |
.window-app:not(.image-popout) { | |
background-color: var(--color-border-dark-5); | |
} | |
.window-app > header { | |
border: 1px solid var(--color-border-dark-4); | |
border-bottom: 1px solid var(--color-border-dark); | |
border-top-right-radius: 4px; | |
border-top-left-radius: 4px; | |
} |
const options = game.playlists.reduce((acc,e) => acc += `<option value="${e.id}">${e.name}</options>`,``); | |
const content = `<form> | |
<div class="form-group"> | |
<label>Playlist</label> | |
<div class="form-fields"> | |
<select name="playlistId">${options}</select> | |
</div> | |
</div> | |
</form>`; | |
const id = await Dialog.prompt({ |
# Set Prefix to "C" | |
set -g prefix2 C-c | |
bind C-c send-prefix -2 | |
# Copy | |
bind-key -n F2 copy-mode | |
bind P paste-buffer | |
bind-key -T copy-mode v send-keys -X begin-selection | |
bind-key -T copy-mode y send-keys -X copy-selection | |
bind-key -T copy-mode r send-keys -X rectangle-toggle |
(async ()=> { | |
//get the two numbers | |
let [pos_num, neg_num] = await quickDialog({ | |
data : [ | |
{ type : "number", label : "Positive Dice Pool", options : 1, }, | |
{ type : "number", label : "Negative Dice Pool", options : 1, }, | |
], | |
title : "End of the World: Zombie Apocalypse", | |
}); |