/**
 * Shield types based on Prism RPG rules
 * Shields prevent damage equal to their Shield Rating (SR)
 * Each shield has a Block APC and a Block Augment passive ability
 */
export const TYPE = Object.freeze({
  buckler: {
    id: "buckler",
    label: "PRISMRPG.Shield.Type.buckler",
    apc: 1,
    sr: "1d4",
    blockAugment: "PRISMRPG.Shield.BlockAugment.buckler",
    blockAugmentDescription: "PRISMRPG.Shield.BlockAugmentDescription.buckler"
  },
  light: {
    id: "light",
    label: "PRISMRPG.Shield.Type.light",
    apc: 2,
    sr: "1d8",
    blockAugment: "PRISMRPG.Shield.BlockAugment.light",
    blockAugmentDescription: "PRISMRPG.Shield.BlockAugmentDescription.light"
  },
  heavy: {
    id: "heavy",
    label: "PRISMRPG.Shield.Type.heavy",
    apc: 3,
    sr: "1d12",
    blockAugment: "PRISMRPG.Shield.BlockAugment.heavy",
    blockAugmentDescription: "PRISMRPG.Shield.BlockAugmentDescription.heavy"
  },
  tower: {
    id: "tower",
    label: "PRISMRPG.Shield.Type.tower",
    apc: 4,
    sr: "3d6",
    blockAugment: "PRISMRPG.Shield.BlockAugment.tower",
    blockAugmentDescription: "PRISMRPG.Shield.BlockAugmentDescription.tower"
  }
});

/**
 * Simplified Shield Types object for form choices (label-only format)
 */
export const TYPE_CHOICES = Object.freeze(
  Object.fromEntries(
    Object.entries(TYPE).map(([key, value]) => [key, value.label])
  )
);

/**
 * Block augment descriptions for reference
 * These are activated when using the Block action with the shield
 */
export const BLOCK_AUGMENTS = Object.freeze({
  buckler: "If the character should successfully block damage with this shield, the character reduces the cost of the next Parry action by an amount equal to their Prowess.",
  light: "If the character would successfully block damage with this shield, the character may move an amount equal to their movement rating.",
  heavy: "If the character would successfully block damage with this shield, they reduce the APC of the next attack they make by an amount equal to their Vigor or Prowess.",
  tower: "If the character would successfully block damage with this shield, for 1 round they are considered cover for themselves and allies that are adjacent to them."
});
