Skip to content

Commit 6b827b0

Browse files
committed
v13 fixes for character generator and packutils.
1 parent 6e4c777 commit 6b827b0

File tree

6 files changed

+101
-71
lines changed

6 files changed

+101
-71
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 5.0.1
2+
3+
- v13 fixes for character generator and packutils.
4+
15
# 5.0.0
26

37
- Foundry v13 compatibility.

module/actor/actor.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,20 @@ export class DISActor extends Actor {
104104
return this.system.voidPoints && this.system.voidPoints.value;
105105
}
106106

107+
107108
async _addCoreFunctionItems() {
108-
const coreFunctionNames = [
109-
"(CF) Command Center",
110-
"(CF) Crew Quarters",
111-
"(CF) Life Support",
112-
"(CF) Mess",
109+
const coreFunctionItems = [
110+
// command center
111+
"Compendium.deathinspace.death-in-space-items.Item.Tq836lsbkyvIQo9E",
112+
// crew quarters
113+
"Compendium.deathinspace.death-in-space-items.Item.VAS5eu3BW0FQvzn7",
114+
// life support
115+
"Compendium.deathinspace.death-in-space-items.Item.cP7OqAw31K89npjx",
116+
// mess
117+
"Compendium.deathinspace.death-in-space-items.Item.kRMJn7FN5mKXo25s",
113118
];
114-
for (const coreFunctionName of coreFunctionNames) {
115-
const doc = await documentFromPack(ITEMS_PACK, coreFunctionName);
116-
if (!doc) {
117-
console.error(`Could not find ${coreFunctionName} in ${ITEMS_PACK}`);
118-
continue;
119-
}
119+
for (const uuid of coreFunctionItems) {
120+
const doc = await fromUuid(uuid);
120121
await this.createEmbeddedDocuments("Item", [simpleData(doc)]);
121122
}
122123
}

module/deathinspace.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { DISItemSheet } from "./item/sheet/item-sheet.js";
2121
* Init hook.
2222
*/
2323
Hooks.once("init", async function () {
24-
console.log(`Initializing Death in Space System`);
24+
console.log(`Initializing DEATH IN SPACE system`);
2525
game.deathinspace = {
2626
config: DIS,
2727
DISActor,
@@ -76,7 +76,7 @@ Hooks.once("init", async function () {
7676

7777
configureHandlebars();
7878
});
79-
79+
8080
Hooks.on("renderActorDirectory", (tab, html, context, options) => {
8181
if (options.isFirstRender && game.user.can("ACTOR_CREATE")) {
8282
// only show the Create Scvm button to users who can create actors

module/generator.js

Lines changed: 74 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,53 @@ import { DISActor } from "./actor/actor.js";
22
import { ACTORS_PACK, ITEMS_PACK, TABLES_PACK } from "./packs.js";
33
import {
44
documentFromPack,
5-
drawDocument,
6-
drawDocuments,
7-
drawText,
8-
simpleData,
5+
drawDocumentFromTableUuid,
6+
drawDocumentsFromTableUuid,
7+
drawTextFromTableUuid,
8+
simpleData
99
} from "./packutils.js";
1010
import { rollTotal } from "./utils.js";
1111

12+
const playerTables = {
13+
backgrounds: "Compendium.deathinspace.death-in-space-tables.RollTable.VQt6wl9vTRCMR6sp",
14+
cosmicMutations: "Compendium.deathinspace.death-in-space-tables.RollTable.QetsxgpbcwDyG6Qv",
15+
drives: "Compendium.deathinspace.death-in-space-tables.RollTable.ZBUQ67XZeGHypwZo",
16+
firstImpressions: "Compendium.deathinspace.death-in-space-tables.RollTable.JWTU6mENX6cdUEni",
17+
firstNames: "Compendium.deathinspace.death-in-space-tables.RollTable.T84lZU5390mYMvwZ",
18+
lastNames: "Compendium.deathinspace.death-in-space-tables.RollTable.P3lER80MbPdRDPDC",
19+
looks: "Compendium.deathinspace.death-in-space-tables.RollTable.C8QtASDc7ktWbk4k",
20+
origins: "Compendium.deathinspace.death-in-space-tables.RollTable.nxkWKuqDww6isGRM",
21+
pastAllegiances: "Compendium.deathinspace.death-in-space-tables.RollTable.DHAo1FNU1cRJytA3",
22+
personalTrinkets: "Compendium.deathinspace.death-in-space-tables.RollTable.6qG7ovmnlgTlxSL5",
23+
startingKits: "Compendium.deathinspace.death-in-space-tables.RollTable.8MUhuEy08AtEb57q",
24+
traits: "Compendium.deathinspace.death-in-space-tables.RollTable.m4TJkhkwoStofy9t",
25+
voidCorruptions: "Compendium.deathinspace.death-in-space-tables.RollTable.I4S63MuPQLeXxYS8",
26+
};
27+
28+
const playerItems = {
29+
evaSuitHeavy: "Compendium.deathinspace.death-in-space-items.Item.9XJfAnUe6U02vLbk",
30+
pistol: "Compendium.deathinspace.death-in-space-items.Item.m4ljG8bXPL3bNy2B",
31+
};
32+
33+
const playerCompanions = {
34+
aiGuardAnimal: "Compendium.deathinspace.death-in-space-actors.Actor.Q4JmzUXY2YX9tajm",
35+
oldCrewMember: "Compendium.deathinspace.death-in-space-actors.Actor.TLBpnoBfOt3ilQwZ",
36+
};
37+
38+
const hubTables = {
39+
hubNames: "Compendium.deathinspace.death-in-space-tables.RollTable.A72aYCwjYyvanBQ1",
40+
hubQuirks: "Compendium.deathinspace.death-in-space-tables.RollTable.netMPWbwtcRaeZQv",
41+
spacecraftBackgrounds: "Compendium.deathinspace.death-in-space-tables.RollTable.0OFqCQWrstfppyKk",
42+
stationBackgrounds: "Compendium.deathinspace.death-in-space-tables.RollTable.U9XisR4xvhUKe67X",
43+
};
44+
45+
const hubItems = {
46+
chemicalEngine: "Compendium.deathinspace.death-in-space-items.Item.kfF1FW0INeCFAsT3",
47+
industrialGenerator: "Compendium.deathinspace.death-in-space-items.Item.dHN6uJgAx1N7efX5",
48+
startingSpacecraftFrame: "Compendium.deathinspace.death-in-space-items.Item.xjP9HUPlkfAsfkrw",
49+
startingStationFrame: "Compendium.deathinspace.death-in-space-items.Item.UUV3NTRwyFmiaKQF",
50+
};
51+
1252
export async function generateCharacter() {
1353
const char = await randomCharacter();
1454
const actor = await DISActor.create(char);
@@ -33,8 +73,8 @@ export async function regenerateCharacter(actor) {
3373
}
3474

3575
async function randomCharacter() {
36-
const firstName = await drawText(TABLES_PACK, "First Names");
37-
const lastName = await drawText(TABLES_PACK, "Last Names");
76+
const firstName = await drawTextFromTableUuid(playerTables.firstNames);
77+
const lastName = await drawTextFromTableUuid(playerTables.lastNames);
3878
const name = `${firstName} ${lastName}`;
3979
const imageBase = randomCharacterImageBase();
4080
const portrait = `systems/deathinspace/assets/images/portraits/characters/${imageBase}.jpg`;
@@ -49,25 +89,25 @@ async function randomCharacter() {
4989
const defenseRating = 12 + dexterity;
5090

5191
// 2. origin
52-
const origin = await drawDocument(TABLES_PACK, "Origins");
92+
const origin = await drawDocumentFromTableUuid(playerTables.origins);
5393
const originBenefit = await pickOriginBenefit(origin);
5494

5595
// 3. character details
56-
const background = await drawText(TABLES_PACK, "Backgrounds");
57-
const trait = await drawText(TABLES_PACK, "Traits");
58-
const drive = await drawText(TABLES_PACK, "Drives");
59-
const looks = await drawText(TABLES_PACK, "Looks");
96+
const background = await drawTextFromTableUuid(playerTables.backgrounds);
97+
const trait = await drawTextFromTableUuid(playerTables.traits);
98+
const drive = await drawTextFromTableUuid(playerTables.drives);
99+
const looks = await drawTextFromTableUuid(playerTables.looks);
60100

61101
// 4. past allegiance
62-
const pastAllegiance = await drawText(TABLES_PACK, "Past Allegiances");
102+
const pastAllegiance = await drawTextFromTableUuid(playerTables.pastAllegiances);
63103

64104
// 5. hit points and defense rating
65105
const hitPoints = await rollTotal("1d8");
66106

67107
// 6. starting gear and starting bonus
68108
const holos = await rollTotal("3d10");
69-
const startingKitItems = await drawDocuments(TABLES_PACK, "Starting Kits");
70-
const personalTrinket = await drawDocument(TABLES_PACK, "Personal Trinkets");
109+
const startingKitItems = await drawDocumentsFromTableUuid(playerTables.startingKits);
110+
const personalTrinket = await drawDocumentFromTableUuid(playerTables.personalTrinkets);
71111

72112
const items = [origin, originBenefit, personalTrinket].concat(
73113
startingKitItems
@@ -125,22 +165,22 @@ async function maybeGiveStartingBonus(actor) {
125165
let bonusFollower = null;
126166
switch (bonusRoll) {
127167
case 1:
128-
bonusItem = await drawDocument(TABLES_PACK, "Cosmic Mutations");
168+
bonusItem = await drawDocumentFromTableUuid(playerTables.cosmicMutations);
129169
break;
130170
case 2:
131171
bonusHitPoints = 3;
132172
break;
133173
case 3:
134-
bonusItem = await documentFromPack(ITEMS_PACK, "EVA Suit - Heavy");
174+
bonusItem = await fromUuid(playerItems.evaSuitHeavy);
135175
break;
136176
case 4:
137-
bonusItem = await documentFromPack(ITEMS_PACK, "Pistol");
177+
bonusItem = await fromUuid(playerItems.pistol);
138178
break;
139179
case 5:
140-
bonusFollower = await documentFromPack(ACTORS_PACK, "AI guard animal");
180+
bonusFollower = await fromUuid(playerCompanions.aiGuardAnimal);
141181
break;
142182
case 6:
143-
bonusFollower = await documentFromPack(ACTORS_PACK, "Old Crew Member");
183+
bonusFollower = await fromUuid(playerCompanions.oldCrewMember);
144184
break;
145185
}
146186

@@ -202,9 +242,9 @@ export async function generateSpacecraft() {
202242
const defenseRating = 11;
203243
const maxCondition = 5;
204244
const fuelCapacity = 6;
205-
const name = await drawText(TABLES_PACK, "Hub Names");
206-
const background = await drawText(TABLES_PACK, "Spacecraft Backgrounds");
207-
const quirk = await drawText(TABLES_PACK, "Hub Quirks");
245+
const name = await drawTextFromTableUuid(hubTables.hubNames);
246+
const background = await drawTextFromTableUuid(hubTables.spacecraftBackgrounds);
247+
const quirk = await drawTextFromTableUuid(hubTables.hubQuirks);
208248
const actorData = {
209249
name,
210250
system: {
@@ -224,8 +264,8 @@ export async function generateSpacecraft() {
224264
type: "hub",
225265
};
226266
const actor = await DISActor.create(actorData);
227-
const frame = await documentFromPack(ITEMS_PACK, "Starting spacecraft");
228-
const engine = await documentFromPack(ITEMS_PACK, "Chemical engine");
267+
const frame = await fromUuid(hubItems.startingSpacecraftFrame);
268+
const engine = await fromUuid(hubItems.chemicalEngine);
229269
await actor.createEmbeddedDocuments("Item", [
230270
simpleData(frame),
231271
simpleData(engine),
@@ -237,9 +277,9 @@ export async function generateStation() {
237277
const defenseRating = 11;
238278
const maxCondition = 5;
239279
const fuelCapacity = 4;
240-
const name = await drawText(TABLES_PACK, "Hub Names");
241-
const background = await drawText(TABLES_PACK, "Station Backgrounds");
242-
const quirk = await drawText(TABLES_PACK, "Hub Quirks");
280+
const name = await drawTextFromTableUuid(hubTables.hubNames);
281+
const background = await drawTextFromTableUuid(hubTables.stationBackgrounds);
282+
const quirk = await drawTextFromTableUuid(hubTables.hubQuirks);
243283
const actorData = {
244284
name,
245285
system: {
@@ -259,8 +299,8 @@ export async function generateStation() {
259299
type: "hub",
260300
};
261301
const actor = await DISActor.create(actorData);
262-
const frame = await documentFromPack(ITEMS_PACK, "Starting station");
263-
const engine = await documentFromPack(ITEMS_PACK, "Industrial generator");
302+
const frame = await fromUuid(hubItems.startingStationFrame);
303+
const engine = await fromUuid(hubItems.industrialGenerator);
264304
await actor.createEmbeddedDocuments("Item", [
265305
simpleData(frame),
266306
simpleData(engine),
@@ -305,8 +345,8 @@ function randomInt(min, max) {
305345
}
306346

307347
async function randomNpc() {
308-
const firstName = await drawText(TABLES_PACK, "First Names");
309-
const lastName = await drawText(TABLES_PACK, "Last Names");
348+
const firstName = await drawTextFromTableUuid(playerTables.firstNames);
349+
const lastName = await drawTextFromTableUuid(playerTables.lastNames);
310350
const name = `${firstName} ${lastName}`;
311351
const imageBase = randomCharacterImageBase();
312352
const portrait = `systems/deathinspace/assets/images/portraits/characters/${imageBase}.jpg`;
@@ -320,9 +360,9 @@ async function randomNpc() {
320360
const morale = randomInt(4, 11);
321361

322362
// 2. character details
323-
const background = await drawText(TABLES_PACK, "Backgrounds");
324-
const firstImpressions = await drawText(TABLES_PACK, "First Impressions");
325-
const looks = await drawText(TABLES_PACK, "Looks");
363+
const background = await drawTextFromTableUuid(playerTables.backgrounds);
364+
const firstImpressions = await drawTextFromTableUuid(playerTables.firstImpressions);
365+
const looks = await drawTextFromTableUuid(playerTables.looks);
326366

327367
// 3. hit points and defense rating
328368
const hitPoints = await rollTotal("1d8");

module/packutils.js

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export async function drawFromTableUuid(
3737
const table = await fromUuid(uuid);
3838
if (!table) {
3939
console.log(`Could not find table ${uuid}`);
40+
console.trace();
4041
return;
4142
}
4243
const roll = formula ? new Roll(formula) : undefined;
@@ -48,14 +49,14 @@ export async function drawFromTableUuid(
4849
export async function drawText(packName, tableName) {
4950
const draw = await drawFromTable(packName, tableName);
5051
if (draw) {
51-
return draw.results[0].text;
52+
return draw.results[0].description;
5253
}
5354
}
5455

5556
export async function drawTextFromTableUuid(uuid) {
5657
const draw = await drawFromTableUuid(uuid);
5758
if (draw) {
58-
return draw.results[0].text;
59+
return draw.results[0].description;
5960
}
6061
}
6162

@@ -71,12 +72,6 @@ export async function drawDocumentFromTableUuid(uuid) {
7172
return doc;
7273
}
7374

74-
export async function drawDocuments(packName, tableName) {
75-
const draw = await drawFromTable(packName, tableName);
76-
const docs = await documentsFromDraw(draw);
77-
return docs;
78-
}
79-
8075
export async function drawDocumentsFromTableUuid(uuid) {
8176
const draw = await drawFromTableUuid(uuid);
8277
const docs = await documentsFromDraw(draw);
@@ -85,7 +80,7 @@ export async function drawDocumentsFromTableUuid(uuid) {
8580

8681
export async function documentsFromDraw(draw) {
8782
const docResults = draw.results.filter(
88-
(r) => r.type === CONST.TABLE_RESULT_TYPES.COMPENDIUM
83+
(r) => r.type === CONST.TABLE_RESULT_TYPES.DOCUMENT
8984
);
9085
return Promise.all(docResults.map((r) => documentFromResult(r)));
9186
}
@@ -97,7 +92,8 @@ export async function documentFromDraw(draw) {
9792

9893
export async function documentFromResult(result) {
9994
if (!result.documentCollection) {
100-
console.log("No documentCollection for result; skipping");
95+
console.log("No documentCollection for result; skipping", result);
96+
console.trace();
10197
return;
10298
}
10399
const collectionName =
@@ -106,28 +102,16 @@ export async function documentFromResult(result) {
106102
: result.documentCollection;
107103
const uuid = `${collectionName}.${result.documentId}`;
108104
const doc = await fromUuid(uuid);
109-
110105
if (!doc) {
111-
// console.log(`Could not find ${uuid}`);
112-
console.log(`Could not find ${result.documentCollection} ${result.text}`);
113-
console.log(result);
106+
console.log(`Could not find ${uuid} from result`, result);
114107
}
115108
return doc;
116109
}
117110

118-
export function dupeData(doc) {
119-
return {
120-
system: doc.system,
121-
img: doc.img,
122-
name: doc.name,
123-
type: doc.type,
124-
};
125-
}
126-
127111
export function simpleData(doc) {
128112
return {
129-
id: doc.id,
130113
img: doc.img,
114+
// items: e.items?.map(i => simpleData(i)),
131115
name: doc.name,
132116
system: doc.system,
133117
type: doc.type,

module/utils.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,4 @@ export function upperCaseFirst(str) {
6161
export function lowerCaseFirst(str) {
6262
return str.charAt(0).toLowerCase() + str.slice(1);
6363
}
64+

0 commit comments

Comments
 (0)