Exact source used by this build. SHA-256: a4e9fd2d84f9647a102aa950c9a9a14188e91fa77b1ab1bcd3a5d04edde0ae97.

1 import { z } from "zod";
2 
3 const id = z.string().min(1);
4 const whole = z.number().int().nonnegative();
5 const quality = z.enum(["regular", "silver", "gold", "iridium"]);
6 const identity = z.object({ id, name: z.literal("TBD"), description: z.literal("TBD"), manifestKey: id });
7 export const CommunityRewardSchema = z.object({ items: z.array(z.object({ id, quality, quantity: z.number().int().positive().max(999) })), money: whole });
8 const location = z.object({ areaId: id, poiId: id, x: z.number().nonnegative(), y: z.number().nonnegative() });
9 export const BundleRequirementSchema = z.object({ id, itemId: id.optional(), tag: id.optional(), count: z.number().int().positive().max(999), minQuality: quality }).refine(value => (value.itemId === undefined) !== (value.tag === undefined), "Exactly one item ID or tag is required");
10 export const CommunityContentSchema = z.object({
11   restoration: location,
12   rooms: z.array(identity.extend({ bundleIds: z.array(id).min(1), repairIds: z.array(id).min(1) })).min(1),
13   bundles: z.array(identity.extend({ choose: z.number().int().min(1).max(6), requirements: z.array(BundleRequirementSchema).min(1).max(12), reward: CommunityRewardSchema })).min(1),
14   repairs: z.array(identity.extend({ kind: z.enum(["warp", "greenhouse"]), warpIds: z.array(id), poiId: id })).min(1),
15   greenhouse: z.object({ areaId: id, poiId: id, x: whole, y: whole, width: z.number().int().positive(), height: z.number().int().positive() }),
16   museum: z.object({ location, openMinute: whole, closeMinute: whole, columns: z.number().int().positive(), displaySlots: z.number().int().positive(),
17     donations: z.array(identity.extend({ itemId: id, kind: z.enum(["mineral", "artifact"]), sources: z.array(z.enum(["artifactSpot", "mines", "fishingTreasure"])).min(1), weight: z.number().positive() })).min(1),
18     milestones: z.array(z.object({ count: z.number().int().positive(), reward: CommunityRewardSchema })).min(1),
19   }),
20   artifactSpots: z.object({ areaIds: z.array(id).min(1), attempts: whole, maximumPerArea: whole, spawnChance: z.number().min(0).max(1), manifestKey: id }),
21   collections: z.object({ shipped: z.array(id), fish: z.array(id), cooking: z.array(id), crafting: z.array(id) }),
22   achievements: z.array(identity.extend({ counter: z.enum(["shippedUnique", "shippedTotal", "singleShipment", "fishUnique", "fishTotal", "cookingUnique", "craftingUnique", "museumUnique", "bundlesCompleted", "roomsCompleted", "artifactSpotsDug", "earnedMoney"]), target: z.number().int().positive() })).min(1),
23 });
24 export type CommunityContent = z.infer<typeof CommunityContentSchema>;
25 export type CommunityReward = z.infer<typeof CommunityRewardSchema>;
26