Esempio n. 1
0
static int GenerateStrength(UnitType unit_id, bool air)
{
    using namespace UnitId;
    switch (unit_id.Raw())
    {
        case Larva:
        case Egg:
        case Cocoon:
        case LurkerEgg:
            return 0;
        case Carrier:
        case Gantrithor:
            return GenerateStrength(Interceptor, air);
        case Reaver:
        case Warbringer:
            return GenerateStrength(Scarab, air);
        default:
            if (unit_id.Subunit() != UnitId::None)
                unit_id = unit_id.Subunit();
            WeaponType weapon;
            if (air)
                weapon = unit_id.AirWeapon();
            else
                weapon = unit_id.GroundWeapon();
            if (weapon == WeaponId::None)
                return 1;
            // Fixes ai hangs when using zero damage weapons as main weapon
            int strength = bw::FinetuneBaseStrength(unit_id, bw::CalculateBaseStrength(weapon, unit_id));
            return std::max(2, strength);
    }
}