Posted by Anonymous on Thu 19th Nov 23:19 (modification of post by view diff)
download | new post
- #!/usr/bin/env ruby
- $:.unshift(File.dirname(__FILE__))
- require 'events'
- names = {}
- units = {}
- $stdin.each do |line|
- event = CombatEvent.parse(line)
- next unless event
- # XXX: unsure if this could include anything interesting as global debuffs (sanity @ yogg-saron)
- if event.source.none?
- next
- end
- # XXX: ignore players, pets, guardians controlled by players but not vehicles
- # maybe this ignores too much (mind controlled adds @ razuvious)
- if [:player, :pet, :guardian].include?(event.source.flag_type) && event.source.flag_controller == :player && event.source.guid_type != :vehicle
- next
- end
- if event.source.guid_type != :npc && event.source.guid_type != :vehicle
- # XXX: buggy pets: neutral pet controlled by npc
- if event.source.flag_type == :pet && event.source.flag_controller == :npc &&
- event.source.flag_reaction == :neutral
- next
- end
- warn "oops, unexpected source: #{event.source.inspect} flags: #{event.source.flags_to_s} guid_type: #{event.source.guid_type}"
- next
- end
- names[event.source.guid_id] ||= event.source.name
- units[event.source.guid_id] ||= {}
- if event.respond_to?(:spell_id) && ![SpellAuraBrokenSpell, SpellAuraBroken].include?(event.class)
- units[event.source.guid_id][event.spell_id] ||= event.spell_name
- end
- end
- units.each do |unit_id, spells|
- puts "* unit:#{unit_id}[#{names[unit_id]}]"
- spells.each do |spell_id, spell_name|
- puts "** spell:#{spell_id}[#{spell_name}]"
- end
- end
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.