From 6d4571989d1538be7d18e9c6269971c70d1c3847 Mon Sep 17 00:00:00 2001 From: Matthew McGlincy Date: Mon, 1 Jul 2024 20:37:34 -0700 Subject: [PATCH] Fixes for foundry v12. --- CHANGELOG.md | 4 + module/actor/actor.js | 27 ++-- module/actor/sheet/character-sheet.js | 6 +- module/actor/sheet/hub-sheet.js | 6 +- module/actor/sheet/npc-sheet.js | 6 +- module/dice.js | 12 +- module/generator.js | 102 +++++++------- module/handlebars.js | 4 +- module/item/item.js | 2 +- module/item/sheet/item-sheet.js | 2 +- module/packs.js | 3 + module/packutils.js | 126 ++++++++++++------ module/utils.js | 63 +++++++++ packs/death-in-space-actors/000046.ldb | Bin 0 -> 2053 bytes .../{000012.log => 000047.log} | 0 packs/death-in-space-actors/CURRENT | 2 +- packs/death-in-space-actors/LOG | 8 +- packs/death-in-space-actors/LOG.old | 6 +- packs/death-in-space-actors/MANIFEST-000011 | Bin 122 -> 0 bytes packs/death-in-space-actors/MANIFEST-000045 | Bin 0 -> 216 bytes packs/death-in-space-items/000046.ldb | Bin 0 -> 44735 bytes .../{000012.log => 000047.log} | 0 packs/death-in-space-items/CURRENT | 2 +- packs/death-in-space-items/LOG | 8 +- packs/death-in-space-items/LOG.old | 6 +- packs/death-in-space-items/MANIFEST-000011 | Bin 123 -> 0 bytes packs/death-in-space-items/MANIFEST-000045 | Bin 0 -> 193 bytes packs/death-in-space-tables/000051.ldb | Bin 0 -> 63799 bytes .../{000017.log => 000052.log} | 0 packs/death-in-space-tables/CURRENT | 2 +- packs/death-in-space-tables/LOG | 8 +- packs/death-in-space-tables/LOG.old | 6 +- .../{MANIFEST-000016 => MANIFEST-000050} | Bin 247 -> 344 bytes 33 files changed, 263 insertions(+), 148 deletions(-) create mode 100644 module/packs.js create mode 100644 module/utils.js create mode 100644 packs/death-in-space-actors/000046.ldb rename packs/death-in-space-actors/{000012.log => 000047.log} (100%) delete mode 100644 packs/death-in-space-actors/MANIFEST-000011 create mode 100644 packs/death-in-space-actors/MANIFEST-000045 create mode 100644 packs/death-in-space-items/000046.ldb rename packs/death-in-space-items/{000012.log => 000047.log} (100%) delete mode 100644 packs/death-in-space-items/MANIFEST-000011 create mode 100644 packs/death-in-space-items/MANIFEST-000045 create mode 100644 packs/death-in-space-tables/000051.ldb rename packs/death-in-space-tables/{000017.log => 000052.log} (100%) rename packs/death-in-space-tables/{MANIFEST-000016 => MANIFEST-000050} (55%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92bd404..ae6c0fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 4.0.0 + +- Foundry v12 compatibility. + # 3.0.1 - Fix hub sheet defense rating not populating from frame. diff --git a/module/actor/actor.js b/module/actor/actor.js index 0f8a8f9..d3a8bd7 100644 --- a/module/actor/actor.js +++ b/module/actor/actor.js @@ -3,13 +3,8 @@ import AddItemDialog from "../dialog/add-item-dialog.js"; import AttackDialog from "../dialog/attack-dialog.js"; import { diceSound, showDice } from "../dice.js"; import { regenerateCharacter, regenerateNpc } from "../generator.js"; -import { - ITEMS_PACK, - TABLES_PACK, - documentFromPack, - simpleData, - tableFromPack, -} from "../packutils.js"; +import { ITEMS_PACK, TABLES_PACK } from "../packs.js"; +import { documentFromPack, simpleData } from "../packutils.js"; /** * @extends {Actor} @@ -41,7 +36,9 @@ export class DISActor extends Actor { vision: true, }; } - mergeObject(data.prototypeToken, defaults, { overwrite: false }); + foundry.utils.mergeObject(data.prototypeToken, defaults, { + overwrite: false, + }); return super.create(data, options); } @@ -167,7 +164,7 @@ export class DISActor extends Actor { `${d20Formula} + @abilities.${ability}.value`, this.getRollData() ); - abilityRoll.evaluate({ async: false }); + await abilityRoll.evaluate(); await showDice(abilityRoll); const targetDR = 12; @@ -296,7 +293,7 @@ export class DISActor extends Actor { `${d20Formula} + @abilities.${attackAbility}.value`, rollData ); - attackRoll.evaluate({ async: false }); + await attackRoll.evaluate(); await showDice(attackRoll); // use the active die result, in case of advantage/disadvantage @@ -326,10 +323,10 @@ export class DISActor extends Actor { } damageText = `Damage: ${damageFormula}`; damageRoll = new Roll(damageFormula); - damageRoll.evaluate({ async: false }); + await damageRoll.evaluate(); // TODO: including crit die in max formula means crits are less likely to reduce target condition const maxDamageRoll = new Roll(damageFormula); - maxDamageRoll.evaluate({ async: false, maximize: true }); + await maxDamageRoll.evaluate({ maximize: true }); const isMaxDamage = damageRoll.total == maxDamageRoll.total; if (isMaxDamage) { maxDamageOutcome = game.i18n.localize("DIS.MaxDamageOutcome"); @@ -403,7 +400,7 @@ export class DISActor extends Actor { "Morale" )}`; const moraleRoll = new Roll("2d6"); - moraleRoll.evaluate({ async: false }); + await moraleRoll.evaluate(); await showDice(moraleRoll); let moraleOutcome; if (moraleRoll.total > this.system.morale) { @@ -433,7 +430,7 @@ export class DISActor extends Actor { const cardTitle = `${game.i18n.localize("Reaction")}`; const reactionText = "2D6"; const reactionRoll = new Roll("2d6"); - reactionRoll.evaluate({ async: false }); + await reactionRoll.evaluate(); await showDice(reactionRoll); let reactionOutcome; if (reactionRoll.total === 2) { @@ -499,7 +496,7 @@ export class DISActor extends Actor { flavor: `${game.i18n.localize("DIS.VoidCorruption")}?`, }); if (roll.total <= this.system.voidPoints.value) { - const table = await tableFromPack(TABLES_PACK, "Void Corruption"); + const table = await documentFromPack(TABLES_PACK, "Void Corruption"); await table.draw(); } } diff --git a/module/actor/sheet/character-sheet.js b/module/actor/sheet/character-sheet.js index 77a529a..d2965f0 100644 --- a/module/actor/sheet/character-sheet.js +++ b/module/actor/sheet/character-sheet.js @@ -6,7 +6,7 @@ import DISActorSheet from "./actor-sheet.js"; export class DISCharacterSheet extends DISActorSheet { /** @override */ static get defaultOptions() { - return mergeObject(super.defaultOptions, { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["deathinspace", "sheet", "actor", "character"], template: "systems/deathinspace/templates/actor/character-sheet.html", width: 730, @@ -33,8 +33,8 @@ export class DISCharacterSheet extends DISActorSheet { } /** @override */ - getData() { - const superData = super.getData(); + async getData() { + const superData = await super.getData(); const data = superData.data; data.config = CONFIG.DIS; this.prepareCharacterItems(data); diff --git a/module/actor/sheet/hub-sheet.js b/module/actor/sheet/hub-sheet.js index 0cc7087..62aef62 100644 --- a/module/actor/sheet/hub-sheet.js +++ b/module/actor/sheet/hub-sheet.js @@ -6,7 +6,7 @@ import DISActorSheet from "./actor-sheet.js"; export class DISHubSheet extends DISActorSheet { /** @override */ static get defaultOptions() { - return mergeObject(super.defaultOptions, { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["deathinspace", "sheet", "actor", "hub"], template: "systems/deathinspace/templates/actor/hub-sheet.html", width: 730, @@ -28,8 +28,8 @@ export class DISHubSheet extends DISActorSheet { } /** @override */ - getData() { - const superData = super.getData(); + async getData() { + const superData = await super.getData(); const data = superData.data; const byName = (a, b) => (a.name > b.name ? 1 : b.name > a.name ? -1 : 0); data.system.frame = data.items diff --git a/module/actor/sheet/npc-sheet.js b/module/actor/sheet/npc-sheet.js index 3eba9a1..cfa8e61 100644 --- a/module/actor/sheet/npc-sheet.js +++ b/module/actor/sheet/npc-sheet.js @@ -6,7 +6,7 @@ import DISActorSheet from "./actor-sheet.js"; export class DISNpcSheet extends DISActorSheet { /** @override */ static get defaultOptions() { - return mergeObject(super.defaultOptions, { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["deathinspace", "sheet", "actor", "npc"], template: "systems/deathinspace/templates/actor/npc-sheet.html", width: 730, @@ -37,8 +37,8 @@ export class DISNpcSheet extends DISActorSheet { } /** @override */ - getData() { - const superData = super.getData(); + async getData() { + const superData = await super.getData(); const data = superData.data; data.config = CONFIG.DIS; this.prepareNpcItems(data); diff --git a/module/dice.js b/module/dice.js index a9430e6..49d9017 100644 --- a/module/dice.js +++ b/module/dice.js @@ -1,32 +1,32 @@ /** * Add a show-dice promise to the given array if Dice So Nice is available. */ -export const addShowDicePromise = (promises, roll) => { +export function addShowDicePromise(promises, roll) { if (game.dice3d) { // we pass synchronize=true so DSN dice appear on all players' screens promises.push(game.dice3d.showForRoll(roll, game.user, true, null, false)); } -}; +} /** * Show roll in Dice So Nice if it's available. */ -export const showDice = async (roll) => { +export async function showDice(roll) { if (game.dice3d) { // we pass synchronize=true so DSN dice appear on all players' screens await game.dice3d.showForRoll(roll, game.user, true, null, false); } -}; +} /** * Dice sound to use for ChatMessage. * False if Dice So Nice is available. */ -export const diceSound = () => { +export function diceSound() { if (game.dice3d) { // let Dice So Nice do it return null; } else { return CONFIG.sounds.dice; } -}; +} diff --git a/module/generator.js b/module/generator.js index 471093d..9d3d776 100644 --- a/module/generator.js +++ b/module/generator.js @@ -1,23 +1,22 @@ import { DISActor } from "./actor/actor.js"; +import { ACTORS_PACK, ITEMS_PACK, TABLES_PACK } from "./packs.js"; import { - ACTORS_PACK, - ITEMS_PACK, - TABLES_PACK, documentFromPack, drawDocument, drawDocuments, drawText, simpleData, } from "./packutils.js"; +import { rollTotal } from "./utils.js"; -export const generateCharacter = async () => { +export async function generateCharacter() { const char = await randomCharacter(); const actor = await DISActor.create(char); await maybeGiveStartingBonus(actor); actor.sheet.render(true); -}; +} -export const regenerateCharacter = async (actor) => { +export async function regenerateCharacter(actor) { const actorData = await randomCharacter(); await actor.deleteEmbeddedDocuments("Item", [], { deleteAll: true }); await actor.update(actorData); @@ -31,9 +30,9 @@ export const regenerateCharacter = async (actor) => { }, }); } -}; +} -const randomCharacter = async () => { +async function randomCharacter() { const firstName = await drawText(TABLES_PACK, "First Names"); const lastName = await drawText(TABLES_PACK, "Last Names"); const name = `${firstName} ${lastName}`; @@ -42,10 +41,10 @@ const randomCharacter = async () => { const token = `systems/deathinspace/assets/images/tokens/characters/${imageBase}.png`; // 1. abilities - const body = generateAbilityValue(); - const dexterity = generateAbilityValue(); - const savvy = generateAbilityValue(); - const tech = generateAbilityValue(); + const body = await generateAbilityValue(); + const dexterity = await generateAbilityValue(); + const savvy = await generateAbilityValue(); + const tech = await generateAbilityValue(); const defenseRating = 12 + dexterity; @@ -63,10 +62,10 @@ const randomCharacter = async () => { const pastAllegiance = await drawText(TABLES_PACK, "Past Allegiances"); // 5. hit points and defense rating - const hitPoints = rollTotal("1d8"); + const hitPoints = await rollTotal("1d8"); // 6. starting gear and starting bonus - const holos = rollTotal("3d10"); + const holos = await rollTotal("3d10"); const startingKitItems = await drawDocuments(TABLES_PACK, "Starting Kits"); const personalTrinket = await drawDocument(TABLES_PACK, "Personal Trinkets"); @@ -77,7 +76,7 @@ const randomCharacter = async () => { const actorData = { name, - data: { + system: { abilities: { body: { value: body }, dexterity: { value: dexterity }, @@ -108,9 +107,9 @@ const randomCharacter = async () => { }; return actorData; -}; +} -const maybeGiveStartingBonus = async (actor) => { +async function maybeGiveStartingBonus(actor) { const sumOfAbilityScores = actor.system.abilities.body.value + actor.system.abilities.dexterity.value + @@ -120,7 +119,7 @@ const maybeGiveStartingBonus = async (actor) => { // no starting bonus return; } - const bonusRoll = rollTotal("1d6"); + const bonusRoll = await rollTotal("1d6"); let bonusItem = null; let bonusHitPoints = 0; let bonusFollower = null; @@ -170,20 +169,15 @@ const maybeGiveStartingBonus = async (actor) => { ); } } -}; +} -const rollTotal = (formula) => { - const roll = new Roll(formula).evaluate({ - async: false, - }); - return roll.total; -}; +async function generateAbilityValue() { + const firstD4 = await rollTotal("1d4"); + const secondD4 = await rollTotal("1d4"); + return firstD4 - secondD4; +} -const generateAbilityValue = () => { - return rollTotal("1d4") - rollTotal("1d4"); -}; - -const pickOriginBenefit = async (origin) => { +async function pickOriginBenefit(origin) { if (origin.system.benefitNames) { const names = origin.system.benefitNames.split(","); if (names.length) { @@ -194,17 +188,17 @@ const pickOriginBenefit = async (origin) => { return benefit; } } -}; +} -const randomCharacterImageBase = () => { +function randomCharacterImageBase() { // prefix for our portrait jpgs and token pngs const maxNum = 102; const randNum = Math.floor(Math.random() * maxNum) + 1; const padded = randNum.toString().padStart(2, "0"); return `character_${padded}`; -}; +} -export const generateSpacecraft = async () => { +export async function generateSpacecraft() { const defenseRating = 11; const maxCondition = 5; const fuelCapacity = 6; @@ -213,7 +207,7 @@ export const generateSpacecraft = async () => { const quirk = await drawText(TABLES_PACK, "Hub Quirks"); const actorData = { name, - data: { + system: { background, condition: { max: maxCondition, @@ -237,9 +231,9 @@ export const generateSpacecraft = async () => { simpleData(engine), ]); actor.sheet.render(true); -}; +} -export const generateStation = async () => { +export async function generateStation() { const defenseRating = 11; const maxCondition = 5; const fuelCapacity = 4; @@ -248,7 +242,7 @@ export const generateStation = async () => { const quirk = await drawText(TABLES_PACK, "Hub Quirks"); const actorData = { name, - data: { + system: { background, condition: { max: maxCondition, @@ -272,15 +266,15 @@ export const generateStation = async () => { simpleData(engine), ]); actor.sheet.render(true); -}; +} -export const generateNpc = async () => { +export async function generateNpc() { const npc = await randomNpc(); const actor = await DISActor.create(npc); actor.sheet.render(true); -}; +} -export const regenerateNpc = async (actor) => { +export async function regenerateNpc(actor) { const actorData = await randomNpc(); await actor.deleteEmbeddedDocuments("Item", [], { deleteAll: true }); await actor.update(actorData); @@ -293,7 +287,7 @@ export const regenerateNpc = async (actor) => { }, }); } -}; +} /** * Returns a random integer between min (inclusive) and max (inclusive). @@ -304,13 +298,13 @@ export const regenerateNpc = async (actor) => { * * https://stackoverflow.com/questions/1527803/generating-random-whole-numbers-in-javascript-in-a-specific-range */ -const randomInt = (min, max) => { +function randomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; -}; +} -const randomNpc = async () => { +async function randomNpc() { const firstName = await drawText(TABLES_PACK, "First Names"); const lastName = await drawText(TABLES_PACK, "Last Names"); const name = `${firstName} ${lastName}`; @@ -319,10 +313,10 @@ const randomNpc = async () => { const token = `systems/deathinspace/assets/images/tokens/characters/${imageBase}.png`; // 1. abilities - const body = generateAbilityValue(); - const dexterity = generateAbilityValue(); - const savvy = generateAbilityValue(); - const tech = generateAbilityValue(); + const body = await generateAbilityValue(); + const dexterity = await generateAbilityValue(); + const savvy = await generateAbilityValue(); + const tech = await generateAbilityValue(); const morale = randomInt(4, 11); // 2. character details @@ -331,15 +325,15 @@ const randomNpc = async () => { const looks = await drawText(TABLES_PACK, "Looks"); // 3. hit points and defense rating - const hitPoints = rollTotal("1d8"); + const hitPoints = await rollTotal("1d8"); const defenseRating = 12 + dexterity; // 6. starting gear - const holos = rollTotal("3d10"); + const holos = await rollTotal("3d10"); const actorData = { name, - data: { + system: { abilities: { body: { value: body }, dexterity: { value: dexterity }, @@ -369,4 +363,4 @@ const randomNpc = async () => { }; return actorData; -}; +} diff --git a/module/handlebars.js b/module/handlebars.js index a07b02e..0e86d28 100644 --- a/module/handlebars.js +++ b/module/handlebars.js @@ -1,4 +1,4 @@ -export const configureHandlebars = () => { +export function configureHandlebars() { /** * Formats a Roll as either the total or x + y + z = total if the roll has multiple terms. */ @@ -26,4 +26,4 @@ export const configureHandlebars = () => { Handlebars.registerHelper("add", function (num1, num2) { return num1 + num2; }); -}; +} diff --git a/module/item/item.js b/module/item/item.js index f82d908..94ee0d3 100644 --- a/module/item/item.js +++ b/module/item/item.js @@ -43,7 +43,7 @@ export class DISItem extends Item { return; } const conditionRoll = new Roll("1d6"); - conditionRoll.evaluate({ async: false }); + await conditionRoll.evaluate(); await showDice(conditionRoll); let conditionOutcome; diff --git a/module/item/sheet/item-sheet.js b/module/item/sheet/item-sheet.js index c8ae16e..ce14ca6 100644 --- a/module/item/sheet/item-sheet.js +++ b/module/item/sheet/item-sheet.js @@ -4,7 +4,7 @@ export class DISItemSheet extends ItemSheet { /** @override */ static get defaultOptions() { - return mergeObject(super.defaultOptions, { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["deathinspace", "sheet", "item"], width: 730, height: 680, diff --git a/module/packs.js b/module/packs.js new file mode 100644 index 0000000..f4a9702 --- /dev/null +++ b/module/packs.js @@ -0,0 +1,3 @@ +export const ACTORS_PACK = "deathinspace.death-in-space-actors"; +export const ITEMS_PACK = "deathinspace.death-in-space-items"; +export const TABLES_PACK = "deathinspace.death-in-space-tables"; diff --git a/module/packutils.js b/module/packutils.js index 8498b2a..0fc6e6d 100644 --- a/module/packutils.js +++ b/module/packutils.js @@ -1,87 +1,135 @@ -export const ACTORS_PACK = "deathinspace.death-in-space-actors"; -export const ITEMS_PACK = "deathinspace.death-in-space-items"; -export const TABLES_PACK = "deathinspace.death-in-space-tables"; - -export const documentFromPack = async (packName, docName) => { +export async function documentFromPack(packName, docName) { const pack = game.packs.get(packName); + if (!pack) { + console.error(`Could not find pack ${packName}.`); + return; + } const docs = await pack.getDocuments(); const doc = docs.find((i) => i.name === docName); + if (!doc) { + console.error(`Could not find doc ${docName} in pack ${packName}.`); + } return doc; -}; +} -export const tableFromPack = async (packName, tableName) => { - const creationPack = game.packs.get(packName); - const creationDocs = await creationPack.getDocuments(); - const table = creationDocs.find((i) => i.name === tableName); - return table; -}; +export async function drawFromTable( + packName, + tableName, + formula = null, + displayChat = false +) { + const table = await documentFromPack(packName, tableName); + if (!table) { + console.log(`Could not load ${tableName} from pack ${packName}`); + return; + } + const roll = formula ? new Roll(formula) : undefined; + const tableDraw = await table.draw({ displayChat, roll }); + // TODO: decide if/how we want to handle multiple results + return tableDraw; +} -export const drawFromTable = async (packName, tableName) => { - const table = await tableFromPack(packName, tableName); - const tableDraw = await table.draw({ displayChat: false }); +export async function drawFromTableUuid( + uuid, + formula = null, + displayChat = false +) { + const table = await fromUuid(uuid); + if (!table) { + console.log(`Could not find table ${uuid}`); + return; + } + const roll = formula ? new Roll(formula) : undefined; + const tableDraw = await table.draw({ displayChat, roll }); // TODO: decide if/how we want to handle multiple results return tableDraw; -}; +} -export const drawText = async (packName, tableName) => { +export async function drawText(packName, tableName) { const draw = await drawFromTable(packName, tableName); - return draw.results[0].text; -}; + if (draw) { + return draw.results[0].text; + } +} + +export async function drawTextFromTableUuid(uuid) { + const draw = await drawFromTableUuid(uuid); + if (draw) { + return draw.results[0].text; + } +} -export const drawDocument = async (packName, tableName) => { +export async function drawDocument(packName, tableName) { const draw = await drawFromTable(packName, tableName); const doc = await documentFromDraw(draw); return doc; -}; +} + +export async function drawDocumentFromTableUuid(uuid) { + const draw = await drawFromTableUuid(uuid); + const doc = await documentFromDraw(draw); + return doc; +} -export const drawDocuments = async (packName, tableName) => { +export async function drawDocuments(packName, tableName) { const draw = await drawFromTable(packName, tableName); const docs = await documentsFromDraw(draw); return docs; -}; +} + +export async function drawDocumentsFromTableUuid(uuid) { + const draw = await drawFromTableUuid(uuid); + const docs = await documentsFromDraw(draw); + return docs; +} -export const documentsFromDraw = async (draw) => { - const docResults = draw.results.filter((r) => r.type === 2); +export async function documentsFromDraw(draw) { + const docResults = draw.results.filter( + (r) => r.type === CONST.TABLE_RESULT_TYPES.COMPENDIUM + ); return Promise.all(docResults.map((r) => documentFromResult(r))); -}; +} -export const documentFromDraw = async (draw) => { +export async function documentFromDraw(draw) { const doc = await documentFromResult(draw.results[0]); return doc; -}; +} -export const documentFromResult = async (result) => { +export async function documentFromResult(result) { if (!result.documentCollection) { console.log("No documentCollection for result; skipping"); return; } const collectionName = - result.type === 2 + result.type === CONST.TABLE_RESULT_TYPES.COMPENDIUM ? "Compendium." + result.documentCollection : result.documentCollection; const uuid = `${collectionName}.${result.documentId}`; const doc = await fromUuid(uuid); + if (!doc) { - console.log(`Could not find ${uuid}`); + // console.log(`Could not find ${uuid}`); + console.log(`Could not find ${result.documentCollection} ${result.text}`); + console.log(result); } return doc; -}; +} -export const simpleData = (doc) => { +export function dupeData(doc) { return { - id: doc.id, + system: doc.system, img: doc.img, name: doc.name, - system: doc.system, type: doc.type, }; -}; +} -export const dupeData = (doc) => { +export function simpleData(doc) { return { - data: doc.system, + id: doc.id, img: doc.img, name: doc.name, + system: doc.system, type: doc.type, }; -}; +} diff --git a/module/utils.js b/module/utils.js new file mode 100644 index 0000000..8459c68 --- /dev/null +++ b/module/utils.js @@ -0,0 +1,63 @@ +export const byName = (a, b) => + a.name > b.name ? 1 : b.name > a.name ? -1 : 0; + +// https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array +export function shuffle(array) { + let currentIndex = array.length, + randomIndex; + // While there remain elements to shuffle. + while (currentIndex != 0) { + // Pick a remaining element. + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex--; + // And swap it with the current element. + [array[currentIndex], array[randomIndex]] = [ + array[randomIndex], + array[currentIndex], + ]; + } + return array; +} + +export function sample(array) { + if (!array) { + return; + } + return array[Math.floor(Math.random() * array.length)]; +} + +export function d20Formula(modifier) { + return rollFormula("d20", modifier); +} + +export function rollFormula(roll, modifier) { + if (modifier < 0) { + return `${roll}-${-modifier}`; + } else if (modifier > 0) { + return `${roll}+${modifier}`; + } else { + return roll; + } +} + +export async function evalRoll(formula) { + return await new Roll(formula).evaluate(); +} + +export async function rollTotal(formula, rollData = {}) { + const roll = new Roll(formula, rollData); + await roll.evaluate(); + return roll.total; +} + +export function rollTotalSync(formula, rollData = {}) { + return new Roll(formula, rollData).evaluateSync().total; +} + +export function upperCaseFirst(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} + +export function lowerCaseFirst(str) { + return str.charAt(0).toLowerCase() + str.slice(1); +} diff --git a/packs/death-in-space-actors/000046.ldb b/packs/death-in-space-actors/000046.ldb new file mode 100644 index 0000000000000000000000000000000000000000..c0f68beae77f9bc97f0c7e54def9db81e4d4bae5 GIT binary patch literal 2053 zcmaJ?ZEPGz8JW7aGU?vNfqbmb_u;dXBQm*bE;*;Q<2ZI|7bWT3?%dtP zyF1H%+}Sa%0-{Ate;`yf0;zv28b}ZY!4IlP3Ao}rY5+l9M9hx{fki}vNF$H}B=BB~ z`m>{5?aaLIyr0iL^Un4Kq+E$5i0*UOOB@?IVx66toy*M4?(@kR3qOKH+_$8jW`>$q zM-{Z7YN|~v3ai4HQVWP{D8yzKF+t!jI=J`mM{P%k1+!|P5Qg&4%HbkV9YR;FJO`l(aFVlqWT1Pg*HVKY`=rVddcX;pF~7XH*5Fj>~&LDTG5=t?rBM(#2BmxI)}C{#qaLeV0`Nzi?^a!5tR_ zH=3qBMJ%Y=uG`9V z9UujOF%sYF8p(lMZ`TG|%KQh%sZA1u&E)XbJ{OpV8q@5JTa)SGy}8`*NMsvd43IfMuIygyg zMTIGWyX>CAn>N6t&YVPNmqDu}Fy-DNMMgfmye#$nFgE>U(Xn~4deqM{^H}p~9QyNH z|5yV)y}!2esA(vVyR@l{)6yrueBj|)==NGaG;u(O%>he1m0t@z{L%j(lsdE;LYc3x zhJ+#Q?kXC(zbd4(iEAM=QoS1LPbth+h-oTh+fOAyQ*QklWp1zf<;kQn#{;EK8WhA$ zvgj!lN^M04a-q+!hYmfq>DJ=I_0R{;+4T@I?p%6sJ$WmX|5r$0)}74FmqHh_k;hSb z;!Elk_3q|m=jK@P^%zQycEkiM4&Mv4%5YDr zFh9CSj$V)SK_{A&I6Qj4t$Q`r&j9amJv3^Ac%f&YLTX8`5j`K9vSQI!WI;XQ z@ye|VjfgagjIb<8%*thCW&i_4#kBmKlvJRK+|(3TH{;OEyv*{@vcM2;Mn;GVg}(C1 P91M(1Je&;7yeupLCk!DH diff --git a/packs/death-in-space-actors/MANIFEST-000045 b/packs/death-in-space-actors/MANIFEST-000045 new file mode 100644 index 0000000000000000000000000000000000000000..c8f0c0c56ada74d0ee08f7aeb277786bc7c237f5 GIT binary patch literal 216 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 J*->!je*uhNfl~kg literal 0 HcmV?d00001 diff --git a/packs/death-in-space-items/000012.log b/packs/death-in-space-items/000047.log similarity index 100% rename from packs/death-in-space-items/000012.log rename to packs/death-in-space-items/000047.log diff --git a/packs/death-in-space-items/CURRENT b/packs/death-in-space-items/CURRENT index 5b54010..800d995 100644 --- a/packs/death-in-space-items/CURRENT +++ b/packs/death-in-space-items/CURRENT @@ -1 +1 @@ -MANIFEST-000011 +MANIFEST-000045 diff --git a/packs/death-in-space-items/LOG b/packs/death-in-space-items/LOG index c3fbe03..9325222 100644 --- a/packs/death-in-space-items/LOG +++ b/packs/death-in-space-items/LOG @@ -1,3 +1,5 @@ -2023/06/04-09:52:12.295876 17271f000 Recovering log #10 -2023/06/04-09:52:12.296277 17271f000 Delete type=0 #10 -2023/06/04-09:52:12.296330 17271f000 Delete type=3 #9 +2024/07/01-19:37:01.723662 173833000 Recovering log #44 +2024/07/01-19:37:01.724358 173833000 Level-0 table #46: started +2024/07/01-19:37:01.724902 173833000 Level-0 table #46: 44735 bytes OK +2024/07/01-19:37:01.725215 173833000 Delete type=0 #44 +2024/07/01-19:37:01.725354 173833000 Delete type=3 #43 diff --git a/packs/death-in-space-items/LOG.old b/packs/death-in-space-items/LOG.old index 98a937a..700f44d 100644 --- a/packs/death-in-space-items/LOG.old +++ b/packs/death-in-space-items/LOG.old @@ -1,3 +1,3 @@ -2023/06/04-09:23:18.101641 16fe8f000 Recovering log #8 -2023/06/04-09:23:18.102012 16fe8f000 Delete type=3 #7 -2023/06/04-09:23:18.102210 16fe8f000 Delete type=0 #8 +2024/07/01-19:11:23.558459 171d13000 Recovering log #42 +2024/07/01-19:11:23.558833 171d13000 Delete type=3 #41 +2024/07/01-19:11:23.558877 171d13000 Delete type=0 #42 diff --git a/packs/death-in-space-items/MANIFEST-000011 b/packs/death-in-space-items/MANIFEST-000011 deleted file mode 100644 index 7df507ee8cc23bcd092d337a43c48f8e5fc04a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmWgNdO0VBfss)vC$%g!CnZVGsj?)sJhM2}IX|}`u_&=5zlfcIwdpaFqGDQpPD*M~ zv7$*uaB4|-QmA84c#3(5NfhIG1~8CU%q&UGEmo|`52^6*$qG$R_YX}8O7UcDgvj%9 T-M-Jsz{teI$-vCZa+eVRspF literal 0 HcmV?d00001 diff --git a/packs/death-in-space-tables/000051.ldb b/packs/death-in-space-tables/000051.ldb new file mode 100644 index 0000000000000000000000000000000000000000..517835761db10ef291f6e0c34a2e993c5d58201d GIT binary patch literal 63799 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 literal 0 HcmV?d00001 diff --git a/packs/death-in-space-tables/000017.log b/packs/death-in-space-tables/000052.log similarity index 100% rename from packs/death-in-space-tables/000017.log rename to packs/death-in-space-tables/000052.log diff --git a/packs/death-in-space-tables/CURRENT b/packs/death-in-space-tables/CURRENT index 32108be..7570f19 100644 --- a/packs/death-in-space-tables/CURRENT +++ b/packs/death-in-space-tables/CURRENT @@ -1 +1 @@ -MANIFEST-000016 +MANIFEST-000050 diff --git a/packs/death-in-space-tables/LOG b/packs/death-in-space-tables/LOG index da07cb7..a977a15 100644 --- a/packs/death-in-space-tables/LOG +++ b/packs/death-in-space-tables/LOG @@ -1,3 +1,5 @@ -2023/06/04-09:52:12.298788 17271f000 Recovering log #15 -2023/06/04-09:52:12.299234 17271f000 Delete type=0 #15 -2023/06/04-09:52:12.299269 17271f000 Delete type=3 #14 +2024/07/01-19:37:01.727655 17281b000 Recovering log #49 +2024/07/01-19:37:01.728567 17281b000 Level-0 table #51: started +2024/07/01-19:37:01.729685 17281b000 Level-0 table #51: 63799 bytes OK +2024/07/01-19:37:01.730354 17281b000 Delete type=3 #48 +2024/07/01-19:37:01.730555 17281b000 Delete type=0 #49 diff --git a/packs/death-in-space-tables/LOG.old b/packs/death-in-space-tables/LOG.old index 61f8e47..a1586e1 100644 --- a/packs/death-in-space-tables/LOG.old +++ b/packs/death-in-space-tables/LOG.old @@ -1,3 +1,3 @@ -2023/06/04-09:23:18.104822 16fe8f000 Recovering log #13 -2023/06/04-09:23:18.105308 16fe8f000 Delete type=0 #13 -2023/06/04-09:23:18.105341 16fe8f000 Delete type=3 #11 +2024/07/01-19:11:23.561067 1704ef000 Recovering log #47 +2024/07/01-19:11:23.561525 1704ef000 Delete type=3 #46 +2024/07/01-19:11:23.561565 1704ef000 Delete type=0 #47 diff --git a/packs/death-in-space-tables/MANIFEST-000016 b/packs/death-in-space-tables/MANIFEST-000050 similarity index 55% rename from packs/death-in-space-tables/MANIFEST-000016 rename to packs/death-in-space-tables/MANIFEST-000050 index f0b612233a0bc7cfe09e5a1caa0b7a6cfe6aa768..5fee0acaa8a4b721731fc24e0b8a22bcffb03b7c 100644 GIT binary patch delta 68 zcmey)c!O!ebE6i4h*Mb%j7%n+49uo1=lIwejJJPcR!}TSOv*_uRy6Q;D|8MFFDfoc WD=4V+&Sw0|GI50kyDvKf2mk={XcTM! delta 23 fcmcb?^qq0SbAd~)0uwkH7?}h)8JLAw9&iExVAcjX