azerothcore / azerothcore-wotlk

Complete Open Source and Modular solution for MMO
http://www.azerothcore.org
GNU Affero General Public License v3.0
6.4k stars 2.55k forks source link

Useless item_template.h enum #3070

Closed BarbzYHOOL closed 3 years ago

BarbzYHOOL commented 4 years ago

In item_template.h, we have this and it's not used at all, it's confusing and useless

enum ItemFlags2 : uint32
{
    ITEM_FLAG2_FACTION_HORDE                            = 0x00000001,
    ITEM_FLAG2_FACTION_ALLIANCE                         = 0x00000002,
    ITEM_FLAG2_DONT_IGNORE_BUY_PRICE                    = 0x00000004, // when item uses extended cost, gold is also required
    ITEM_FLAG2_CLASSIFY_AS_CASTER                       = 0x00000008,
    ITEM_FLAG2_CLASSIFY_AS_PHYSICAL                     = 0x00000010,
    ITEM_FLAG2_EVERYONE_CAN_ROLL_NEED                   = 0x00000020,
    ITEM_FLAG2_NO_TRADE_BIND_ON_ACQUIRE                 = 0x00000040,
    ITEM_FLAG2_CAN_TRADE_BIND_ON_ACQUIRE                = 0x00000080,
    ITEM_FLAG2_CAN_ONLY_ROLL_GREED                      = 0x00000100,
    ITEM_FLAG2_CASTER_WEAPON                            = 0x00000200,
    ITEM_FLAG2_DELETE_ON_LOGIN                          = 0x00000400,
    ITEM_FLAG2_INTERNAL_ITEM                            = 0x00000800,
    ITEM_FLAG2_NO_VENDOR_VALUE                          = 0x00001000,
    ITEM_FLAG2_SHOW_BEFORE_DISCOVERED                   = 0x00002000,
    ITEM_FLAG2_OVERRIDE_GOLD_COST                       = 0x00004000,
    ITEM_FLAG2_IGNORE_DEFAULT_RATED_BG_RESTRICTIONS     = 0x00008000,
    ITEM_FLAG2_NOT_USABLE_IN_RATED_BG                   = 0x00010000,
    ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK                    = 0x00020000,
    ITEM_FLAG2_CONFIRM_BEFORE_USE                       = 0x00040000,
    ITEM_FLAG2_REEVALUATE_BONDING_ON_TRANSFORM          = 0x00080000,
    ITEM_FLAG2_NO_TRANSFORM_ON_CHARGE_DEPLETION         = 0x00100000,
    ITEM_FLAG2_NO_ALTER_ITEM_VISUAL                     = 0x00200000,
    ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL                = 0x00400000,
    ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE    = 0x00800000,
    ITEM_FLAG2_NO_DURABILITY                            = 0x01000000,
    ITEM_FLAG2_ROLE_TANK                                = 0x02000000,
    ITEM_FLAG2_ROLE_HEALER                              = 0x04000000,
    ITEM_FLAG2_ROLE_DAMAGE                              = 0x08000000,
    ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE               = 0x10000000,
    ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI                   = 0x20000000,
    ITEM_FLAG2_DISENCHANT_TO_LOOT_TABLE                 = 0x40000000,
    ITEM_FLAG2_USED_IN_A_TRADESKILL                     = 0x80000000
};
Helias commented 4 years ago

on TC they are used, this can be a way also to track that we are missing something (maybe) :P

BarbzYHOOL commented 4 years ago

no they are not used

On TrinityCore 3.3.5:

--------------- ITEM_FLAG2_FACTION_HORDE ---------------
server/game/Loot/Loot.cpp:68:    if (pProto->HasFlag(ITEM_FLAG2_FACTION_HORDE) && player->GetTeam() != HORDE)
server/game/Entities/Player/Player.cpp:11769:    if (((proto->Flags2 & ITEM_FLAG2_FACTION_HORDE) && GetTeam() != HORDE) ||
server/game/Entities/Player/Player.cpp:21718:    if (!IsGameMaster() && ((pProto->Flags2 & ITEM_FLAG2_FACTION_HORDE && GetTeam() == ALLIANCE) || (pProto->Flags2 == ITEM_FLAG2_FACTION_ALLIANCE && GetTeam() == HORDE)))
server/game/Entities/Item/ItemTemplate.h:188:    ITEM_FLAG2_FACTION_HORDE                            = 0x00000001,
server/game/Handlers/ItemHandler.cpp:657:                if (!_player->IsGameMaster() && ((itemTemplate->HasFlag(ITEM_FLAG2_FACTION_HORDE) && _player->GetTeam() == ALLIANCE) || (itemTemplate->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && _player->GetTeam() == HORDE)))
server/game/Globals/ObjectMgr.cpp:3030:        if (itemTemplate.Flags2 & ITEM_FLAG2_FACTION_HORDE)
server/game/Globals/ObjectMgr.cpp:3034:                    TC_LOG_ERROR("sql.sql", "Item (Entry: %u) has value (%u) in `AllowableRace` races, not compatible with ITEM_FLAG2_FACTION_HORDE (%u) in Flags field, item cannot be equipped or used by these races.",
server/game/Globals/ObjectMgr.cpp:3035:                        entry, itemTemplate.AllowableRace, ITEM_FLAG2_FACTION_HORDE);
server/game/Globals/ObjectMgr.cpp:3038:                TC_LOG_ERROR("sql.sql", "Item (Entry: %u) has value (%u) in `Flags2` flags (ITEM_FLAG2_FACTION_ALLIANCE) and ITEM_FLAG2_FACTION_HORDE (%u) in Flags field, this is a wrong combination.",
server/game/Globals/ObjectMgr.cpp:3039:                    entry, ITEM_FLAG2_FACTION_ALLIANCE, ITEM_FLAG2_FACTION_HORDE);
--------------- ITEM_FLAG2_FACTION_ALLIANCE ---------------
server/game/Loot/Loot.cpp:71:    if (pProto->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && player->GetTeam() != ALLIANCE)
server/game/Entities/Player/Player.cpp:11770:        (((proto->Flags2 & ITEM_FLAG2_FACTION_ALLIANCE) && GetTeam() != ALLIANCE)))
server/game/Entities/Player/Player.cpp:21718:    if (!IsGameMaster() && ((pProto->Flags2 & ITEM_FLAG2_FACTION_HORDE && GetTeam() == ALLIANCE) || (pProto->Flags2 == ITEM_FLAG2_FACTION_ALLIANCE && GetTeam() == HORDE)))
server/game/Entities/Item/ItemTemplate.h:189:    ITEM_FLAG2_FACTION_ALLIANCE                         = 0x00000002,
server/game/Handlers/ItemHandler.cpp:657:                if (!_player->IsGameMaster() && ((itemTemplate->HasFlag(ITEM_FLAG2_FACTION_HORDE) && _player->GetTeam() == ALLIANCE) || (itemTemplate->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && _player->GetTeam() == HORDE)))
server/game/Globals/ObjectMgr.cpp:3037:            if (itemTemplate.Flags2 & ITEM_FLAG2_FACTION_ALLIANCE)
server/game/Globals/ObjectMgr.cpp:3038:                TC_LOG_ERROR("sql.sql", "Item (Entry: %u) has value (%u) in `Flags2` flags (ITEM_FLAG2_FACTION_ALLIANCE) and ITEM_FLAG2_FACTION_HORDE (%u) in Flags field, this is a wrong combination.",
server/game/Globals/ObjectMgr.cpp:3039:                    entry, ITEM_FLAG2_FACTION_ALLIANCE, ITEM_FLAG2_FACTION_HORDE);
server/game/Globals/ObjectMgr.cpp:3041:        else if (itemTemplate.Flags2 & ITEM_FLAG2_FACTION_ALLIANCE)
server/game/Globals/ObjectMgr.cpp:3045:                    TC_LOG_ERROR("sql.sql", "Item (Entry: %u) has value (%u) in `AllowableRace` races, not compatible with ITEM_FLAG2_FACTION_ALLIANCE (%u) in Flags field, item cannot be equipped or used by these races.",
server/game/Globals/ObjectMgr.cpp:3046:                        entry, itemTemplate.AllowableRace, ITEM_FLAG2_FACTION_ALLIANCE);
--------------- ITEM_FLAG2_DONT_IGNORE_BUY_PRICE ---------------
server/game/Entities/Creature/Creature.cpp:81:    return pProto->HasFlag(ITEM_FLAG2_DONT_IGNORE_BUY_PRICE) || !ExtendedCost;
server/game/Entities/Item/ItemTemplate.h:190:    ITEM_FLAG2_DONT_IGNORE_BUY_PRICE                    = 0x00000004, // when item uses extended cost, gold is also required
--------------- ITEM_FLAG2_CLASSIFY_AS_CASTER ---------------
server/game/Entities/Item/ItemTemplate.h:191:    ITEM_FLAG2_CLASSIFY_AS_CASTER                       = 0x00000008,
--------------- ITEM_FLAG2_CLASSIFY_AS_PHYSICAL ---------------
server/game/Entities/Item/ItemTemplate.h:192:    ITEM_FLAG2_CLASSIFY_AS_PHYSICAL                     = 0x00000010,
--------------- ITEM_FLAG2_EVERYONE_CAN_ROLL_NEED ---------------
server/game/Entities/Item/ItemTemplate.h:193:    ITEM_FLAG2_EVERYONE_CAN_ROLL_NEED                   = 0x00000020,
--------------- ITEM_FLAG2_NO_TRADE_BIND_ON_ACQUIRE ---------------
server/game/Entities/Item/ItemTemplate.h:194:    ITEM_FLAG2_NO_TRADE_BIND_ON_ACQUIRE                 = 0x00000040,
--------------- ITEM_FLAG2_CAN_TRADE_BIND_ON_ACQUIRE ---------------
server/game/Entities/Item/ItemTemplate.h:195:    ITEM_FLAG2_CAN_TRADE_BIND_ON_ACQUIRE                = 0x00000080,
--------------- ITEM_FLAG2_CAN_ONLY_ROLL_GREED ---------------
server/game/Entities/Item/ItemTemplate.h:196:    ITEM_FLAG2_CAN_ONLY_ROLL_GREED                      = 0x00000100,
server/game/Groups/Group.cpp:1234:                if (item->HasFlag(ITEM_FLAG2_CAN_ONLY_ROLL_GREED))
--------------- ITEM_FLAG2_CASTER_WEAPON ---------------
server/game/Entities/Item/ItemTemplate.h:197:    ITEM_FLAG2_CASTER_WEAPON                            = 0x00000200,
--------------- ITEM_FLAG2_DELETE_ON_LOGIN ---------------
server/game/Entities/Item/ItemTemplate.h:198:    ITEM_FLAG2_DELETE_ON_LOGIN                          = 0x00000400,
--------------- ITEM_FLAG2_INTERNAL_ITEM ---------------
server/game/Entities/Item/ItemTemplate.h:199:    ITEM_FLAG2_INTERNAL_ITEM                            = 0x00000800,
--------------- ITEM_FLAG2_NO_VENDOR_VALUE ---------------
server/game/Entities/Item/ItemTemplate.h:200:    ITEM_FLAG2_NO_VENDOR_VALUE                          = 0x00001000,
--------------- ITEM_FLAG2_SHOW_BEFORE_DISCOVERED ---------------
server/game/Entities/Item/ItemTemplate.h:201:    ITEM_FLAG2_SHOW_BEFORE_DISCOVERED                   = 0x00002000,
--------------- ITEM_FLAG2_OVERRIDE_GOLD_COST ---------------
server/game/Entities/Item/ItemTemplate.h:202:    ITEM_FLAG2_OVERRIDE_GOLD_COST                       = 0x00004000,
--------------- ITEM_FLAG2_IGNORE_DEFAULT_RATED_BG_RESTRICTIONS ---------------
server/game/Entities/Item/ItemTemplate.h:203:    ITEM_FLAG2_IGNORE_DEFAULT_RATED_BG_RESTRICTIONS     = 0x00008000,
--------------- ITEM_FLAG2_NOT_USABLE_IN_RATED_BG ---------------
server/game/Entities/Item/ItemTemplate.h:204:    ITEM_FLAG2_NOT_USABLE_IN_RATED_BG                   = 0x00010000,
--------------- ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK ---------------
server/game/Entities/Item/ItemTemplate.h:205:    ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK                    = 0x00020000,
--------------- ITEM_FLAG2_CONFIRM_BEFORE_USE ---------------
server/game/Entities/Item/ItemTemplate.h:206:    ITEM_FLAG2_CONFIRM_BEFORE_USE                       = 0x00040000,
--------------- ITEM_FLAG2_REEVALUATE_BONDING_ON_TRANSFORM ---------------
server/game/Entities/Item/ItemTemplate.h:207:    ITEM_FLAG2_REEVALUATE_BONDING_ON_TRANSFORM          = 0x00080000,
--------------- ITEM_FLAG2_NO_TRANSFORM_ON_CHARGE_DEPLETION ---------------
server/game/Entities/Item/ItemTemplate.h:208:    ITEM_FLAG2_NO_TRANSFORM_ON_CHARGE_DEPLETION         = 0x00100000,
--------------- ITEM_FLAG2_NO_ALTER_ITEM_VISUAL ---------------
server/game/Entities/Item/ItemTemplate.h:209:    ITEM_FLAG2_NO_ALTER_ITEM_VISUAL                     = 0x00200000,
--------------- ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL ---------------
server/game/Entities/Item/ItemTemplate.h:210:    ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL                = 0x00400000,
--------------- ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE ---------------
server/game/Entities/Item/ItemTemplate.h:211:    ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE    = 0x00800000,
--------------- ITEM_FLAG2_NO_DURABILITY ---------------
server/game/Entities/Item/ItemTemplate.h:212:    ITEM_FLAG2_NO_DURABILITY                            = 0x01000000,
--------------- ITEM_FLAG2_ROLE_TANK ---------------
server/game/Entities/Item/ItemTemplate.h:213:    ITEM_FLAG2_ROLE_TANK                                = 0x02000000,
--------------- ITEM_FLAG2_ROLE_HEALER ---------------
server/game/Entities/Item/ItemTemplate.h:214:    ITEM_FLAG2_ROLE_HEALER                              = 0x04000000,
--------------- ITEM_FLAG2_ROLE_DAMAGE ---------------
server/game/Entities/Item/ItemTemplate.h:215:    ITEM_FLAG2_ROLE_DAMAGE                              = 0x08000000,
--------------- ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE ---------------
server/game/Entities/Item/ItemTemplate.h:216:    ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE               = 0x10000000,
--------------- ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI ---------------
server/game/Entities/Item/ItemTemplate.h:217:    ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI                   = 0x20000000,
--------------- ITEM_FLAG2_DISENCHANT_TO_LOOT_TABLE ---------------
server/game/Entities/Item/ItemTemplate.h:218:    ITEM_FLAG2_DISENCHANT_TO_LOOT_TABLE                 = 0x40000000,
--------------- ITEM_FLAG2_USED_IN_A_TRADESKILL ---------------
server/game/Entities/Item/ItemTemplate.h:219:    ITEM_FLAG2_USED_IN_A_TRADESKILL                     = 0x80000000

On AC:

--------------- ITEM_FLAG2_FACTION_HORDE ---------------
server/game/Entities/Item/ItemTemplate.h:172:    ITEM_FLAG2_FACTION_HORDE                            = 0x00000001,
--------------- ITEM_FLAG2_FACTION_ALLIANCE ---------------
server/game/Entities/Item/ItemTemplate.h:173:    ITEM_FLAG2_FACTION_ALLIANCE                         = 0x00000002,
--------------- ITEM_FLAG2_DONT_IGNORE_BUY_PRICE ---------------
server/game/Entities/Item/ItemTemplate.h:174:    ITEM_FLAG2_DONT_IGNORE_BUY_PRICE                    = 0x00000004, // when item uses extended cost, gold is also required
--------------- ITEM_FLAG2_CLASSIFY_AS_CASTER ---------------
server/game/Entities/Item/ItemTemplate.h:175:    ITEM_FLAG2_CLASSIFY_AS_CASTER                       = 0x00000008,
--------------- ITEM_FLAG2_CLASSIFY_AS_PHYSICAL ---------------
server/game/Entities/Item/ItemTemplate.h:176:    ITEM_FLAG2_CLASSIFY_AS_PHYSICAL                     = 0x00000010,
--------------- ITEM_FLAG2_EVERYONE_CAN_ROLL_NEED ---------------
server/game/Entities/Item/ItemTemplate.h:177:    ITEM_FLAG2_EVERYONE_CAN_ROLL_NEED                   = 0x00000020,
--------------- ITEM_FLAG2_NO_TRADE_BIND_ON_ACQUIRE ---------------
server/game/Entities/Item/ItemTemplate.h:178:    ITEM_FLAG2_NO_TRADE_BIND_ON_ACQUIRE                 = 0x00000040,
--------------- ITEM_FLAG2_CAN_TRADE_BIND_ON_ACQUIRE ---------------
server/game/Entities/Item/ItemTemplate.h:179:    ITEM_FLAG2_CAN_TRADE_BIND_ON_ACQUIRE                = 0x00000080,
--------------- ITEM_FLAG2_CAN_ONLY_ROLL_GREED ---------------
server/game/Entities/Item/ItemTemplate.h:180:    ITEM_FLAG2_CAN_ONLY_ROLL_GREED                      = 0x00000100,
--------------- ITEM_FLAG2_CASTER_WEAPON ---------------
server/game/Entities/Item/ItemTemplate.h:181:    ITEM_FLAG2_CASTER_WEAPON                            = 0x00000200,
--------------- ITEM_FLAG2_DELETE_ON_LOGIN ---------------
server/game/Entities/Item/ItemTemplate.h:182:    ITEM_FLAG2_DELETE_ON_LOGIN                          = 0x00000400,
--------------- ITEM_FLAG2_INTERNAL_ITEM ---------------
server/game/Entities/Item/ItemTemplate.h:183:    ITEM_FLAG2_INTERNAL_ITEM                            = 0x00000800,
--------------- ITEM_FLAG2_NO_VENDOR_VALUE ---------------
server/game/Entities/Item/ItemTemplate.h:184:    ITEM_FLAG2_NO_VENDOR_VALUE                          = 0x00001000,
--------------- ITEM_FLAG2_SHOW_BEFORE_DISCOVERED ---------------
server/game/Entities/Item/ItemTemplate.h:185:    ITEM_FLAG2_SHOW_BEFORE_DISCOVERED                   = 0x00002000,
--------------- ITEM_FLAG2_OVERRIDE_GOLD_COST ---------------
server/game/Entities/Item/ItemTemplate.h:186:    ITEM_FLAG2_OVERRIDE_GOLD_COST                       = 0x00004000,
--------------- ITEM_FLAG2_IGNORE_DEFAULT_RATED_BG_RESTRICTIONS ---------------
server/game/Entities/Item/ItemTemplate.h:187:    ITEM_FLAG2_IGNORE_DEFAULT_RATED_BG_RESTRICTIONS     = 0x00008000,
--------------- ITEM_FLAG2_NOT_USABLE_IN_RATED_BG ---------------
server/game/Entities/Item/ItemTemplate.h:188:    ITEM_FLAG2_NOT_USABLE_IN_RATED_BG                   = 0x00010000,
--------------- ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK ---------------
server/game/Entities/Item/ItemTemplate.h:189:    ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK                    = 0x00020000,
--------------- ITEM_FLAG2_CONFIRM_BEFORE_USE ---------------
server/game/Entities/Item/ItemTemplate.h:190:    ITEM_FLAG2_CONFIRM_BEFORE_USE                       = 0x00040000,
--------------- ITEM_FLAG2_REEVALUATE_BONDING_ON_TRANSFORM ---------------
server/game/Entities/Item/ItemTemplate.h:191:    ITEM_FLAG2_REEVALUATE_BONDING_ON_TRANSFORM          = 0x00080000,
--------------- ITEM_FLAG2_NO_TRANSFORM_ON_CHARGE_DEPLETION ---------------
server/game/Entities/Item/ItemTemplate.h:192:    ITEM_FLAG2_NO_TRANSFORM_ON_CHARGE_DEPLETION         = 0x00100000,
--------------- ITEM_FLAG2_NO_ALTER_ITEM_VISUAL ---------------
server/game/Entities/Item/ItemTemplate.h:193:    ITEM_FLAG2_NO_ALTER_ITEM_VISUAL                     = 0x00200000,
--------------- ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL ---------------
server/game/Entities/Item/ItemTemplate.h:194:    ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL                = 0x00400000,
--------------- ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE ---------------
server/game/Entities/Item/ItemTemplate.h:195:    ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE    = 0x00800000,
--------------- ITEM_FLAG2_NO_DURABILITY ---------------
server/game/Entities/Item/ItemTemplate.h:196:    ITEM_FLAG2_NO_DURABILITY                            = 0x01000000,
--------------- ITEM_FLAG2_ROLE_TANK ---------------
server/game/Entities/Item/ItemTemplate.h:197:    ITEM_FLAG2_ROLE_TANK                                = 0x02000000,
--------------- ITEM_FLAG2_ROLE_HEALER ---------------
server/game/Entities/Item/ItemTemplate.h:198:    ITEM_FLAG2_ROLE_HEALER                              = 0x04000000,
--------------- ITEM_FLAG2_ROLE_DAMAGE ---------------
server/game/Entities/Item/ItemTemplate.h:199:    ITEM_FLAG2_ROLE_DAMAGE                              = 0x08000000,
--------------- ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE ---------------
server/game/Entities/Item/ItemTemplate.h:200:    ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE               = 0x10000000,
--------------- ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI ---------------
server/game/Entities/Item/ItemTemplate.h:201:    ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI                   = 0x20000000,
--------------- ITEM_FLAG2_DISENCHANT_TO_LOOT_TABLE ---------------
server/game/Entities/Item/ItemTemplate.h:202:    ITEM_FLAG2_DISENCHANT_TO_LOOT_TABLE                 = 0x40000000,
--------------- ITEM_FLAG2_USED_IN_A_TRADESKILL ---------------
server/game/Entities/Item/ItemTemplate.h:203:    ITEM_FLAG2_USED_IN_A_TRADESKILL                     = 0x80000000

Seems like on TC they use 4 flags out of that list

BarbzYHOOL commented 4 years ago

we can keep them if one angel wants to port/implement them one day but we should just comment them out because it's confusing

FrancescoBorzi commented 3 years ago

we can keep them if one angel wants to port/implement them one day but we should just comment them out because it's confusing

why it is less confusing to have them as commented out? From a technical perspective, it makes no difference since compilers already optimise it and remove unused enums like this.

I think this issue can be closed, but feel free to reopen it if you don't agree.