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