class CoopAl::Bestiary

Bestiary

Public Class Methods

new() click to toggle source
# File lib/coop_al/bestiary.rb, line 10
def initialize
  @monsters = {}
  @xp_lookup = XpRewardTable.new
  @loot_generator = LootGenerator.new
end

Public Instance Methods

add(monster) click to toggle source
# File lib/coop_al/bestiary.rb, line 20
def add(monster)
  @monsters[monster.id] = monster
end
create(id, treasure, encounter) click to toggle source
# File lib/coop_al/bestiary.rb, line 32
def create(id, treasure, encounter)
  raise "Invalid monster ID (#{id})" unless @monsters.key?(id)
  monster = @monsters[id]
  xp = calculate_xp(monster)
  loot = generate_loot(monster, treasure)
  Monster.new(id, xp, loot, encounter)
end
empty?() click to toggle source
# File lib/coop_al/bestiary.rb, line 16
def empty?
  @monsters.empty?
end
monster(id) click to toggle source
# File lib/coop_al/bestiary.rb, line 28
def monster(id)
  @monsters[id]
end
monster?(id) click to toggle source
# File lib/coop_al/bestiary.rb, line 24
def monster?(id)
  @monsters.key?(id)
end

Private Instance Methods

calculate_xp(monster) click to toggle source
# File lib/coop_al/bestiary.rb, line 42
def calculate_xp(monster)
  @xp_lookup[monster.cr]
end
generate_loot(monster, treasure) click to toggle source
# File lib/coop_al/bestiary.rb, line 46
def generate_loot(monster, treasure)
  return @loot_generator.generate(monster.cr, monster.treasure) if treasure == :default
  @loot_generator.generate(monster.cr, treasure)
end