Floppy/dataslate

View on GitHub
src/types/KillTeam2021.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Ability } from './Ability'

export interface Action {
  id: string
  name: string
  cost: number
  intro?: string
  description: string
}

export interface Stats {
  movement: number
  actionPointLimit: number
  groupActivation: number
  defence: number
  save: number
  invulnerable_save: number | null
  wounds: number
}

export interface Weapon {
  id: string
  name: string
  melee: boolean
  attacks: number
  hit: number
  damage: number
  specialRules: string
  criticalDamage: number
  criticalRules: string
}

export interface PsychicPower {
  id: string
  name: string
  description: string
  weapon: Weapon | null
}

export interface Ploy {
  name: string
  cost: number
  description: string
  action?: Action
}

export interface TacOp {
  id: number
  name: string
  description: string
  action?: Action
}

export interface Equipment {
  id: string
  name: string
  cost: number
  description: string | null
}

export interface Operative {
  id: string
  datacard: string
  name: string
  stats: Stats
  weapons: Weapon[]
  equipment: Equipment[]
  abilities: Ability[]
  actions: Action[]
  rules: Ability[]
  leader: boolean
  keywords: string[]
  faction: string | null
  psychicDiscipline: string | null
  psychicPowers: string | null
}

// Datacards are a collection of grouped Operatives
export interface Datacard {
  name: string
  operativeNames: string[]
  stats: Stats
  weapons: Weapon[]
  equipment: Equipment[]
  abilities: Ability[]
  actions: Action[]
  rules: Ability[]
  leader: boolean
  keywords: string[]
  faction: string | null
  psychicPowers: string | null
}

export interface Roster {
  system: string
  name: string
  faction: string
  operatives: Operative[]
  psychicPowers: PsychicPower[]
  fireteams: string[]
}

export enum Archetype {
  SEEK_AND_DESTROY = 'SEEK AND DESTROY',
  SECURITY = 'SECURITY',
  INFILTRATION = 'INFILTRATION',
  RECON = 'RECON'
}

export interface FireteamArchetypes {
  fireteams: { [key: string]: Archetype[] }
  rules?: string
}