lib/rpg/v1/character.ex

defmodule RPG.V1.Character do
  @enforce_keys [:class, :name]

  defstruct [
    :class,
    :name,
    modifiers: [],
    hit_points: 6,
    magic_points: 0,
    strength: 6,
    agility: 6,
    defense: 6,
    toxicity: 0,
    level: 1
  ]

  alias RPG.V1.Class

  def create(%{} = attrs) do
    __MODULE__
    |> struct!(attrs)
    |> Class.modifiers()
  end

  def is_poisoned?(%__MODULE__{toxicity: toxicity}), do: toxicity >= 10
  def is_poisoned?(_), do: false
end