Sha256: 3c8c7c4eabb6d274a74af146fe81418895a0c55ac7e4aaa48cfdc6d52de84518

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module Mythal
  class Npc
    include Procto.call

    def initialize(challenge_rating: "1/4", user_overrides: {})
      @challenge_rating = challenge_rating
      @user_overrides = user_overrides
    end

    def call
      self
    end

    def stats
      @stats ||= Mythal::Stats.new(
        challenge_rating: challenge_rating,
        options: (user_overrides || {}),
      )
    end

    def character_description
      trait + " " + race + " " + dnd_class
    end

    def dnd_class
      config.dnd_classes.sample
    end

    def race
      config.races.sample
    end

    def trait
      config.traits.sample
    end

    def message
      <<~OUTPUT
        ---
        #{character_description}
        ---
        Armor Class: #{stats.armor_class}
        Hit Points: #{stats.hit_points}
        Attack: +#{stats.attack_bonus}
        Damage: #{stats.damage_per_round} slashing
        Speed: #{stats.speed}ft
        Challenge Rating: #{stats.challenge_rating}
        ---
      OUTPUT
    end

    private

    attr_reader :user_overrides, :challenge_rating

    def config
      Mythal::Config
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mythal-0.2.1 lib/mythal/npc.rb