class CoopAl::EncounterGenerator

EncounterGenerator

Public Class Methods

new(name, parent, bestiary) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 6
def initialize(name, parent, bestiary)
  @bestiary = bestiary
  @encounter = Encounter.new(name, parent)
end

Public Instance Methods

encounter(name, &blk) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 38
def encounter(name, &blk)
  generator = EncounterGenerator.new(name, @encounter, @bestiary)
  @encounter.add_sub_encounter(generator.generate_encounter(&blk))
end
generate_encounter(&blk) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 11
def generate_encounter(&blk)
  instance_eval(&blk)
  @encounter
end
item(description) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 34
def item(description)
  items(1, description)
end
items(count, description) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 30
def items(count, description)
  @encounter.add_item(Item.new(expand_count(count), description, @encounter))
end
monster(id, treasure = :default) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 22
def monster(id, treasure = :default)
  monsters(1, id, treasure)
end
monsters(count, id, treasure = :default) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 16
def monsters(count, id, treasure = :default)
  expand_count(count).times do
    @encounter.add_monster(@bestiary.create(id, treasure, @encounter))
  end
end
npc(cr) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 52
def npc(cr)
  xp(XpRewardTable.new[cr])
end
npcs(count, cr) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 56
def npcs(count, cr)
  xp(count * XpRewardTable.new[cr])
end
random(name, &blk) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 43
def random(name, &blk)
  generator = RandomEncounterGenerator.new(name, @encounter, @bestiary)
  @encounter.add_sub_encounter(generator.generate_encounter(&blk))
end
treasure(value, description = nil) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 26
def treasure(value, description = nil)
  @encounter.add_treasure(Treasure.new(value, description))
end
xp(amount) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 48
def xp(amount)
  @encounter.add_xp(amount)
end

Private Instance Methods

expand_count(count) click to toggle source
# File lib/coop_al/encounter_generator.rb, line 62
def expand_count(count)
  return roll_dice(count) if count.is_a?(String)
  count
end