class CoopAl::Encounter
Attributes
name[R]
Public Class Methods
new(name, parent)
click to toggle source
# File lib/coop_al/encounter.rb, line 8 def initialize(name, parent) @name = name @parent = parent @monsters = [] @xp = 0 @loot = Loot.empty @sub_encounters = [] end
Public Instance Methods
add_item(item)
click to toggle source
# File lib/coop_al/encounter.rb, line 41 def add_item(item) @loot.add_item(item) end
add_monster(monster)
click to toggle source
# File lib/coop_al/encounter.rb, line 33 def add_monster(monster) @monsters << monster end
add_sub_encounter(encounter)
click to toggle source
# File lib/coop_al/encounter.rb, line 29 def add_sub_encounter(encounter) @sub_encounters << encounter end
add_treasure(treasure)
click to toggle source
# File lib/coop_al/encounter.rb, line 37 def add_treasure(treasure) @loot.add_treasure(treasure) end
add_xp(amount)
click to toggle source
# File lib/coop_al/encounter.rb, line 45 def add_xp(amount) @xp += amount end
adventure_name()
click to toggle source
# File lib/coop_al/encounter.rb, line 17 def adventure_name @parent.adventure_name end
empty?()
click to toggle source
# File lib/coop_al/encounter.rb, line 57 def empty? @monsters.empty? && @xp.zero? && @loot.empty? end
full_name()
click to toggle source
# File lib/coop_al/encounter.rb, line 21 def full_name if @parent.nil? @name else @parent.full_name + ' - ' + @name end end
run(state, log)
click to toggle source
# File lib/coop_al/encounter.rb, line 49 def run(state, log) run_sub_encounters(state, log) trace unless empty? log.record_encounter(adventure_name, full_name, monster_names, total_xp, total_loot) state.add_xp(total_xp) state.add_loot(total_loot) end
Private Instance Methods
all_monster_names()
click to toggle source
# File lib/coop_al/encounter.rb, line 90 def all_monster_names @monsters.map(&:id).join(', ') end
encounter_items()
click to toggle source
# File lib/coop_al/encounter.rb, line 120 def encounter_items encounter_loot.items.map(&:to_s).join(', ') end
encounter_loot()
click to toggle source
# File lib/coop_al/encounter.rb, line 112 def encounter_loot @loot end
encounter_treasure()
click to toggle source
# File lib/coop_al/encounter.rb, line 116 def encounter_treasure encounter_loot.treasures.map(&:to_s).join(', ') end
encounter_xp()
click to toggle source
# File lib/coop_al/encounter.rb, line 98 def encounter_xp @xp end
monster_items()
click to toggle source
# File lib/coop_al/encounter.rb, line 130 def monster_items monster_loot.items.map(&:to_s).join(', ') end
monster_loot()
click to toggle source
# File lib/coop_al/encounter.rb, line 124 def monster_loot @monsters.inject(Loot.empty) do |loot, monster| loot + monster.loot end end
monster_names()
click to toggle source
# File lib/coop_al/encounter.rb, line 138 def monster_names @monsters.map(&:to_s) end
monster_treasure()
click to toggle source
# File lib/coop_al/encounter.rb, line 134 def monster_treasure monster_loot.treasures.map(&:to_s).join(', ') end
monster_xp()
click to toggle source
# File lib/coop_al/encounter.rb, line 102 def monster_xp @monsters.inject(0) do |total, monster| total + monster.xp end end
run_sub_encounters(state, log)
click to toggle source
# File lib/coop_al/encounter.rb, line 142 def run_sub_encounters(state, log) @sub_encounters.each do |encounter| encounter.run(state, log) end end
total_loot()
click to toggle source
# File lib/coop_al/encounter.rb, line 108 def total_loot encounter_loot + monster_loot end
total_xp()
click to toggle source
# File lib/coop_al/encounter.rb, line 94 def total_xp encounter_xp + monster_xp end
trace()
click to toggle source
# File lib/coop_al/encounter.rb, line 63 def trace Trace.instance.info("Encounter: #{full_name}") Trace.instance.info("Fighting: #{all_monster_names}") unless @monsters.empty? trace_xp trace_loot end
trace_items()
click to toggle source
# File lib/coop_al/encounter.rb, line 85 def trace_items Trace.instance.info("Encounter Items: #{encounter_items}") unless encounter_loot.items.empty? Trace.instance.info("Monster Items: #{monster_items}") unless monster_loot.items.empty? end
trace_loot()
click to toggle source
# File lib/coop_al/encounter.rb, line 75 def trace_loot trace_treasure trace_items end
trace_treasure()
click to toggle source
# File lib/coop_al/encounter.rb, line 80 def trace_treasure Trace.instance.info("Encounter Treasure: #{encounter_treasure}") unless encounter_loot.treasures.empty? Trace.instance.info("Monster Treasure: #{monster_treasure}") unless monster_loot.treasures.empty? end
trace_xp()
click to toggle source
# File lib/coop_al/encounter.rb, line 70 def trace_xp Trace.instance.info("Monster XP: #{monster_xp}") unless @monsters.empty? Trace.instance.info("Encounter XP: #{encounter_xp}") unless @xp.zero? end