#!/usr/lib/ruby # compresseur de rapport de combat Moutyhall # Licence GPL - 2007 - par tyrollus 72681 (Yoann Guillot) def resume(sender, text, mm=nil) defense = false deg = nil text = text.map { |l| case l.chomp when /Vous avez attaqu\S* (?:le Troll )?(.*)/i "att: #{sender} vs #$1" when /le (?:monstre|troll) n.(.*) vous a attaqu/i defense = true "def: #$1 vs #{sender}" when / jet d'attaque.* (\d+)/i "att #$1" when /le monstre (.*) a utilis.* capacit.* sp.*ciale : (.*)/i "#$1 : #$2" when /Votre attaque est automatiquement r/i "rafale" when / jet d'esquive.* (\d+)/i "esq #$1" when /touch.* critique/i "critique" when /esquive parfaite/i "esq parfaite" when /Un jet de lancer de \((\d+) \/ (\d+) %\)/i "LdP: #$1/#$2%" when /Vous avez loup.* votre cible/i "loupé" when /(?:(.*) a .*t.* influenc.* par l'effet.*)?Seuil de r.*sistance .* (\d+)/i target = $1 sr = $2.to_i if mm and not defense if sr > 50 rm = mm * 50 / (100 - sr) else rm = sr * mm / 50 end "#{target} sr #{sr} (rm ~ #{rm})" else "#{target} sr #{sr}" end when /Jet de r.*sistance.* (\d+)/i # "jet #$1" when /([RM]M) approximative.* (\d+)/i "#$1~ #$2" when / effet r.*duit de moiti/i 'résisté' when / subi.* donc pleinement /i 'full' when / inflig.*?(\d+) points /i deg = $1.to_i "deg #{deg}" when / armure .* prot.*ge .* perdr.* que (\d+) /i "réels #$1" + (deg ? " (-#{deg - $1.to_i})" : '') when /Il aura.* malus de (\d+) .*pour (sa|ses) prochaines? r.*g.*n.*ration/ "reg -#$1, #{$2 == 'sa' ? 1 : 2}dla" when /Vous l'avez .*tu/i "KILL!" when /Le sortil.*?ge (.*) a eu /i $1 when /((?:PV|ATT|ESQ|Vue|arm|reg|deg|mm|rm) : .*)/i $1 when /pendant (\d+) tour/i "#$1 tours" when /# (.*) \(n.*?(\d+)\) n'a pas .* influenc.* par l'effet/ "#$1 (#$2) résiste" when /# (.*) \(n.*?(\d+)\) a .* influenc.* par l'effet/ "#$1 (#$2) full" when /R.*sultat : (.*)/i $1 when /(besoin .*)/i $1 when /Pour cette action|Vous avez donc.* touch.*| fragilis.* prochain|Vous avez augment.* votre .* magique|vous avez r.*ussi|plus possible d'am.*liorer|votre jet d'am.*lioration est/i when /^\s*$/ else unhandled l end }.compact.join(' | ') text = [sender, text].join(' | ') if not text.include? sender text end