import { z } from 'zod';

export const PerkModifierTargetSchema = z.enum([
  'successChance',
  'objectives',
  'survival',
  'altruism',
]);
export type PerkModifierTarget = z.infer<typeof PerkModifierTargetSchema>;

export const PerkModifierTypeSchema = z.enum(['additive', 'multiplicative']);
export type PerkModifierType = z.infer<typeof PerkModifierTypeSchema>;

export const PerkModifierSchema = z.object({
  target: PerkModifierTargetSchema,
  type: PerkModifierTypeSchema,
  amount: z.number(),
  condition: z
    .object({
      encounterTags: z.array(z.string()).min(1),
    })
    .optional(),
});
export type PerkModifier = z.infer<typeof PerkModifierSchema>;

export const PerkSchema = z.object({
  id: z.uuid(),
  key: z.string().min(1),
  name: z.string().min(1),
  description: z.string(),
  tags: z.array(z.string()),
  modifiers: z.array(PerkModifierSchema),
});
export type Perk = z.infer<typeof PerkSchema>;
