ruby pastebin

Posted by Anonymous on Thu 19th Nov 23:19 (modification of post by view diff)
download | new post

  1. #!/usr/bin/env ruby
  2. $:.unshift(File.dirname(__FILE__))
  3. require 'events'
  4.  
  5. names = {}
  6. units = {}
  7.  
  8. $stdin.each do |line|
  9.   event = CombatEvent.parse(line)
  10.  
  11.   next unless event
  12.  
  13.   # XXX: unsure if this could include anything interesting as global debuffs (sanity @ yogg-saron)
  14.   if event.source.none?
  15.     next
  16.   end
  17.  
  18.   # XXX: ignore players, pets, guardians controlled by players but not vehicles
  19.   # maybe this ignores too much (mind controlled adds @ razuvious)
  20.   if [:player, :pet, :guardian].include?(event.source.flag_type) && event.source.flag_controller == :player && event.source.guid_type != :vehicle
  21.     next
  22.   end
  23.  
  24.   if event.source.guid_type != :npc && event.source.guid_type != :vehicle
  25.     # XXX: buggy pets: neutral pet controlled by npc
  26.     if event.source.flag_type == :pet && event.source.flag_controller == :npc &&
  27.       event.source.flag_reaction == :neutral
  28.       next
  29.     end
  30.     warn "oops, unexpected source: #{event.source.inspect} flags: #{event.source.flags_to_s} guid_type: #{event.source.guid_type}"
  31.     next
  32.   end
  33.  
  34.   names[event.source.guid_id] ||= event.source.name
  35.   units[event.source.guid_id] ||= {}
  36.  
  37.   if event.respond_to?(:spell_id) && ![SpellAuraBrokenSpell, SpellAuraBroken].include?(event.class)
  38.     units[event.source.guid_id][event.spell_id] ||= event.spell_name
  39.   end
  40. end
  41.  
  42. units.each do |unit_id, spells|
  43.   puts "* unit:#{unit_id}[#{names[unit_id]}]"
  44.   spells.each do |spell_id, spell_name|
  45.     puts "** spell:#{spell_id}[#{spell_name}]"
  46.   end
  47. 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.

Syntax highlighting:

To highlight particular lines, prefix each line with @@


I'm Human
Remember me



Captcha required for posting