public ThreatDamageResult TakeAttack(int amount, ThreatDamageType damageType) { var damageShielded = 0; var damageDone = amount; if (damageType != ThreatDamageType.IgnoresShields) { damageShielded = UpperStation.ShieldThroughAttack(amount); damageDone -= damageShielded; } if (damageType == ThreatDamageType.DoubleDamageThroughShields) { damageDone *= 2; } if (damageShielded == 0 && damageDone > 0 && damageType == ThreatDamageType.Plasmatic) { foreach (var player in Players) { player.KnockOut(); } } var damageResult = TakeDamage(damageDone); damageResult.DamageShielded = damageShielded; return(damageResult); }
private void UpdateOptics() { var opticsDisrupted = DebuffsBySource.Values.Contains(ZoneDebuff.DisruptedOptics); UpperStation.SetOpticsDisrupted(opticsDisrupted); LowerStation.SetOpticsDisrupted(opticsDisrupted); }
private void UpdateShields() { UpperStation.SetIneffectiveShields(DebuffsBySource.Values.Contains(ZoneDebuff.IneffectiveShields)); UpperStation.SetReversedShields(DebuffsBySource.Values.Contains(ZoneDebuff.ReversedShields)); }
public int DrainShield(int?amount) { return(UpperStation.DrainShield(amount)); }