public Attack(AbsorbEventArgs e) { Timestamp = e.Timestamp; Attacker = e.Attacker; Target = e.Target; AttackType = !String.IsNullOrEmpty(e.AttackType) ? e.AttackType : e.BarrierType; Damage = e.Damage; DamageType = String.Empty; Critical = false; Penetrated = false; Glancing = false; Blocked = false; Absorbed = true; Evaded = false; }
void OnOtherAbsorbed(DateTime timestamp, Match m) { // "(.+) absorbs (\d+) damage of your (.)+\." if (Absorb != null) { AbsorbEventArgs absorb = new AbsorbEventArgs(); absorb.Timestamp = timestamp; absorb.Attacker = "You"; absorb.Target = m.Groups[1].Value; absorb.BarrierType = m.Groups[3].Value; absorb.AttackType = absorb.BarrierType; // Currently there's no indication of the attack which caused the absorbed damage uint damage; if (uint.TryParse(m.Groups[2].Value, out damage)) absorb.Damage = damage; else absorb.Damage = 0; Absorb(null, absorb); } }
void OnYouAbsorbed(DateTime timestamp, Match m) { if (Absorb != null) { AbsorbEventArgs absorb = new AbsorbEventArgs(); absorb.Timestamp = timestamp; absorb.Attacker = m.Groups[3].Value; absorb.Target = "You"; absorb.BarrierType = m.Groups[1].Value; absorb.AttackType = m.Groups[4].Value; uint damage; if (uint.TryParse(m.Groups[2].Value, out damage)) absorb.Damage = damage; else absorb.Damage = 0; Absorb(null, absorb); } }
private void combatParser_Absorb(object sender, AbsorbEventArgs e) { UpdateEncounter(e.Timestamp); Attack attack = new Attack(e); currentEncounter.AddAttack(attack); Character attacker = FindCharacter(e.Attacker); attacker.AddOffensiveHit(attack); Character target = FindCharacter(e.Target); target.AddDefensiveHit(attack); }