1. C++ / Говнокод #11608

    +25

    1. 1
    2. 2
    3. 3
    4. 4
    uint32 originalDamage = damage;
    
        if (absorb && originalDamage > damage)
            *absorb += (originalDamage - damage);

    Вытащил из 1 эмулятора игры World of WarCraft

    Запостил: Heisenberg, 19 Августа 2012

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

    • что было во 2ой строке?
      Ответить
    • ничего, пустая строка, просто так сместилось
      Ответить
    • Если вкопаться в TrinityCore по глубже, и не такой говнокод увидишь.
      Ответить
    • где говно?
      Ответить
      • то есть присваивание с последующим сравнением тебя не смущают?
        Ответить
    • А ничего что вся функция выглядит вот так?
      void Unit::DealDamageMods(Unit *pVictim, uint32 &damage, uint32* absorb)
      {
          if (!pVictim->isAlive() || pVictim->IsTaxiFlying() || (pVictim->GetTypeId() == TYPEID_UNIT && ((Creature*)pVictim)->IsInEvadeMode()))
          {
              if (absorb)
                  *absorb += damage;
              damage = 0;
              return;
          }
      
          uint32 originalDamage = damage;
      
          //Script Event damage Deal
          if (GetTypeId() == TYPEID_UNIT && ((Creature *)this)->AI())
              ((Creature *)this)->AI()->DamageDeal(pVictim, damage);
          //Script Event damage taken
          if (pVictim->GetTypeId() == TYPEID_UNIT && ((Creature *)pVictim)->AI())
              ((Creature *)pVictim)->AI()->DamageTaken(this, damage);
      
          if (absorb && originalDamage > damage)
              *absorb += (originalDamage - damage);
      }


      И переменные проверяются после модифицирования, так как они ссылочные. Автор не позорься.
      Ответить
    • Не надо меня учить) Не знаю где вы взяли этот код, но в мастер ветке тринити (я брал его оттуда, увидел в коммите) такого и близко нету. Вот что там
      https://github.com/TrinityCore/TrinityCore/blob/4.3.4/src/server/game/Entities/Unit/Unit.cpp#L543
      вот после удаления

      а вот этот коммит https://github.com/TrinityCore/TrinityCore/commit/8eba4aebfb56bf86a74fc9841af75359b9cf2346
      Ответить
    • Тогда извиняюсь. Я код взял из мангоса и других его форков, там код выше присутствует вместе с вызовами виртуалок. Видимо тринити когда-то убрали скриптовые ивенты отсюда и забыли про мертвый код.
      Ответить

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