class CoopAl::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