ログ解析を行う

C#でツールを作りました。過去のログを読ませてみるとふっ飛ぶふっ飛ぶ。日本語サービスが開始されてから今までに、何度もログの表記方法が脈絡なく変化しており、想定の範囲外のパターンを検出しては誤動作しまくっていました。各パターンに対処するために例外的な処理が入り込むため、プログラムは非常に汚くなりました。

CCBでヒロイックx2(lvl20)、ノーマルx2(lvl20)と乱戦になった場合(98秒)

Name            damage dps dph hit miss rate memo      
a Crushbone conscript 1170 11 40 29 3 90%
a Crushbone centurion 3587 36 40 88 9 90% ←2匹
a Crushbone emissary 719 7 32 22 10 68%
BSK(19) 1281 13 11 111 30 78%
RNG(18) 1853 18 22 84 34 71%
WDN(20) 407 4 101 4 0 100% 3618 heal
WIZ(20) 2739 27 130 21 1 95%

屋外で乱戦した場合(33秒) 敵は各々lvl20

Name            damage dps dph hit miss rate memo      
a Crushbone emissary 66 2 22 3 3 50%
a Crushbone trainer 190 5 19 10 1 90%
a Crushbone guardmaster 377 11 53 7 1 87%
BSK(19) 303 9 11 27 8 77%
WDN(20) 0 0 0 0 1 0% 565 heal
RNG(18) 527 15 75 7 3 70%
WIZ(20) 358 10 179 2 0 100%

屋外でBSKがソロ(攻撃スタンスで二刀流)(24秒) 敵はlvl20

Name            damage dps dph hit miss rate memo      
BSK(19) 973 40 18 53 14 79%
a rotting guardian 510 21 28 18 1 94%

【参考】60+の4人組でSoS内の戦闘(58秒)

Name            damage dps dph hit miss rate memo      
a temple custodian 10562 182 621 17 6 73%
TMP 1346 23 103 13 7 65% 10511point heal
GRD 3629 62 151 24 22 52%
CNJ 4792 82 532 9 0 100%
CNJ's scout pet 8820 152 245 36 15 70%
CNJ's aqueous swarm 1486 25 99 15 35 30%
ILL 5449 93 247 22 0 100%
ILL's Persona 5261 90 309 17 5 77%
ILL's construct of reason 2486 42 226 11 6 64%

ログに登場する戦闘行為の主語を抽出して、1秒あたりのダメージ数(dps)、1発あたりのダメージ数(dph)、命中率、ヒール量を計算しました。missは相手に到達できなかった攻撃の合計です。ブロック、逸らし、レジスト等を含みます。
BSKが盾をもって防御スタンスで戦闘する時と、二刀流の攻撃スタンスで戦闘する時の、1発あたりのダメージと手数の差はすごいです。WIZは手数は少なくても1発あたりのダメージが抜群です。RNGは屋内で乱戦になると火力が生かせないのがわかります。レベル60オーバーの戦闘とレベル20弱の戦闘の差も凄いです。レベル60オーバーの戦闘はタンク弱体化パッチ前です。今やったらおそらくGRDは死にます(笑)