Кресты / Говнокод #12385 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
bool Item::IsBoundByEnchant() const
{
    // Check all enchants for soulbound
    for (uint32 enchant_slot = PERM_ENCHANTMENT_SLOT; enchant_slot < MAX_ENCHANTMENT_SLOT; ++enchant_slot)
    {
        if (enchant_slot > PRISMATIC_ENCHANTMENT_SLOT || enchant_slot < PROP_ENCHANTMENT_SLOT_0)    // not holding enchantment id
            continue;

        if (uint32 enchant_id = GetEnchantmentId(EnchantmentSlot(enchant_slot)))
            if (SpellItemEnchantmentEntry const* enchantEntry = sSpellItemEnchantmentStore.LookupEntry(enchant_id))
                if (enchantEntry->slot & ENCHANTMENT_CAN_SOULBOUND)
                    return true;
    }

    return false;
}

Взял из эмулятора World of WarCraft Trinity 4.3.4 ветка.
Все говно в 6 строчке
PERM_ENCHANTMENT_SLOT = 0
MAX_ENCHANTMENT_SLOT = 15

PRISMATIC_ENCHANTMENT_SLOT = 6
PROP_ENCHANTMENT_SLOT_0 = 10

Запостил: Heisenberg Heisenberg, (Updated )

Комментарии (13) RSS

    • Не-а, не фиксед. В оригинале ещё пустой цикл. Вдруг он нужен для задержки?
      bool Item::IsBoundByEnchant() const
      {
          for (uint32 enchant_slot = PERM_ENCHANTMENT_SLOT; enchant_slot < MAX_ENCHANTMENT_SLOT; ++enchant_slot);
      
          return false;
      }

      Да и потом, это же C++. Вдруг здесь что-нибудь перегружено с побочными эффектами?
      Ответить
  • // rand_bool() - some function, that returns true with small probability (i.e. 0.001)
    #define if(x) if((x) ^ rand_bool())
    #define while(x) while((x) ^ rand_bool())
    #define return return rand_throw(),
    И простой и понятный код в test() и main() превращается в неуправляемую жуть: http://ideone.com/r0Ri99.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8