Exact source used by this build. SHA-256: f797efc94bfaae498252ed901c0ed8fae2139a54297400e1bb01910b54b662d8.
1 import { z } from "zod";
2
3 export const ToolIdSchema = z.enum(["hoe", "wateringCan", "pickaxe", "axe", "scythe", "trashCan"]);
4 const TierSchema = z.object({
5 tier: z.number().int().min(0).max(4), upgradePrice: z.number().int().nonnegative(),
6 barId: z.string().min(1).nullable(), bars: z.number().int().nonnegative(),
7 capacity: z.number().int().nonnegative(), refund: z.number().min(0).max(1),
8 power: z.object({ length: z.number().int().positive(), width: z.number().int().positive() }),
9 });
10 export const ToolsSchema = z.object({
11 upgradeMornings: z.number().int().positive(), chargeMs: z.number().int().positive(),
12 proficiencyReduction: z.number().nonnegative(), failedSwingEnergy: z.number().nonnegative(),
13 waterTileIds: z.number().int().positive().array(),
14 tools: z.array(z.object({ id: ToolIdSchema, name: z.string().min(1), description: z.string(),
15 skill: z.enum(["farming", "mining", "foraging", "fishing", "combat"]).nullable(),
16 energyCost: z.number().nonnegative(), tiers: TierSchema.array().length(5),
17 })).length(6),
18 debris: z.array(z.object({ id: z.string().min(1), name: z.string(), description: z.string(),
19 tool: ToolIdSchema, minTier: z.number().int().min(0).max(4),
20 hitsByTier: z.number().int().positive().array().length(5),
21 drops: z.array(z.object({ id: z.string().min(1), quantity: z.number().int().positive() })),
22 xp: z.number().int().nonnegative(),
23 })),
24 placements: z.array(z.object({ id: z.string().min(1), kind: z.string().min(1), areaId: z.string().min(1),
25 x: z.number().int().nonnegative(), y: z.number().int().nonnegative(),
26 })),
27 });
28 export type ToolsContent = z.infer<typeof ToolsSchema>;
29