import { z } from 'zod';
import { allCommandsConfigSchema } from '../command';
import { damageEffectNameSchema, damageTargetSchema } from '../damage';
import { powerUpNameSchema, powerUpTargetSchema } from './PowerUpAttributes.schema';

export const powerUpCommandSchema = allCommandsConfigSchema;

export const powerUpShieldSchema = z.object({
  duration: z.number(),
});

export const powerUpLevelSchema = z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]);

export const powerUpSchema = z.object({
  id: z.string(),
  name: powerUpNameSchema,
  imageName: z.string(),
  description: z.string(),
  level: powerUpLevelSchema,
  assignationCommands: z.array(powerUpCommandSchema),
  activationCommands: z.array(powerUpCommandSchema),
  shield: powerUpShieldSchema.optional(),
  networkDamage: z
    .object({
      name: damageEffectNameSchema,
      target: damageTargetSchema,
    })
    .optional(),
});
