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 0000000..c0f68be Binary files /dev/null and b/packs/death-in-space-actors/000046.ldb differ diff --git a/packs/death-in-space-actors/000012.log b/packs/death-in-space-actors/000047.log similarity index 100% rename from packs/death-in-space-actors/000012.log rename to packs/death-in-space-actors/000047.log diff --git a/packs/death-in-space-actors/CURRENT b/packs/death-in-space-actors/CURRENT index 5b54010..800d995 100644 --- a/packs/death-in-space-actors/CURRENT +++ b/packs/death-in-space-actors/CURRENT @@ -1 +1 @@ -MANIFEST-000011 +MANIFEST-000045 diff --git a/packs/death-in-space-actors/LOG b/packs/death-in-space-actors/LOG index 3a8163c..fdb0453 100644 --- a/packs/death-in-space-actors/LOG +++ b/packs/death-in-space-actors/LOG @@ -1,3 +1,5 @@ -2023/06/04-09:52:12.295883 172f27000 Recovering log #10 -2023/06/04-09:52:12.296256 172f27000 Delete type=0 #10 -2023/06/04-09:52:12.296323 172f27000 Delete type=3 #9 +2024/07/01-19:37:01.719915 173027000 Recovering log #44 +2024/07/01-19:37:01.720080 173027000 Level-0 table #46: started +2024/07/01-19:37:01.720403 173027000 Level-0 table #46: 2053 bytes OK +2024/07/01-19:37:01.720921 173027000 Delete type=0 #44 +2024/07/01-19:37:01.721330 173027000 Delete type=3 #43 diff --git a/packs/death-in-space-actors/LOG.old b/packs/death-in-space-actors/LOG.old index c942b18..0b6fd1c 100644 --- a/packs/death-in-space-actors/LOG.old +++ b/packs/death-in-space-actors/LOG.old @@ -1,3 +1,3 @@ -2023/06/04-09:23:18.101639 16f687000 Recovering log #8 -2023/06/04-09:23:18.102014 16f687000 Delete type=3 #7 -2023/06/04-09:23:18.102215 16f687000 Delete type=0 #8 +2024/07/01-19:11:23.555690 171507000 Recovering log #42 +2024/07/01-19:11:23.556655 171507000 Delete type=3 #41 +2024/07/01-19:11:23.556849 171507000 Delete type=0 #42 diff --git a/packs/death-in-space-actors/MANIFEST-000011 b/packs/death-in-space-actors/MANIFEST-000011 deleted file mode 100644 index 279df1f..0000000 Binary files a/packs/death-in-space-actors/MANIFEST-000011 and /dev/null differ diff --git a/packs/death-in-space-actors/MANIFEST-000045 b/packs/death-in-space-actors/MANIFEST-000045 new file mode 100644 index 0000000..c8f0c0c Binary files /dev/null and b/packs/death-in-space-actors/MANIFEST-000045 differ diff --git a/packs/death-in-space-items/000046.ldb b/packs/death-in-space-items/000046.ldb new file mode 100644 index 0000000..c475dce Binary files /dev/null and b/packs/death-in-space-items/000046.ldb differ 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 7df507e..0000000 Binary files a/packs/death-in-space-items/MANIFEST-000011 and /dev/null differ diff --git a/packs/death-in-space-items/MANIFEST-000045 b/packs/death-in-space-items/MANIFEST-000045 new file mode 100644 index 0000000..fff4700 Binary files /dev/null and b/packs/death-in-space-items/MANIFEST-000045 differ diff --git a/packs/death-in-space-tables/000051.ldb b/packs/death-in-space-tables/000051.ldb new file mode 100644 index 0000000..5178357 Binary files /dev/null and b/packs/death-in-space-tables/000051.ldb differ 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 f0b6122..5fee0ac 100644 Binary files a/packs/death-in-space-tables/MANIFEST-000016 and b/packs/death-in-space-tables/MANIFEST-000050 differ