void System::CalcStatus() { if (components.size() > 0) { availability = 1.0f; safety = 1.0f; stability = 1.0f; ListIter<Component> comp = components; while (++comp) { if (comp->DamageEfficiency()) availability *= comp->Availability() / 100.0f; if (comp->DamageSafety()) safety *= comp->Availability() / 100.0f; if (comp->DamageStability()) stability *= comp->Availability() / 100.0f; if (comp->IsJerried()) { safety *= 0.95f; stability *= 0.95f; } } if (net_avail >= 0 && availability < net_avail) availability = net_avail; } }