diff options
| -rw-r--r-- | src/server/game/DataStores/DBCfmt.h | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 15 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 31 | 
3 files changed, 13 insertions, 35 deletions
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index 1395440fb6d..d0784f05c4d 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -31,7 +31,7 @@ char const AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx";  char const BankBagSlotPricesEntryfmt[]="ni";  char const BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii";  char const BattlemasterListEntryfmt[]="niiiiiiiiixssssssssssssssssxiixx"; -char const CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const CharStartOutfitEntryfmt[]="xniiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";  char const CharTitlesEntryfmt[]="nxssssssssssssssssxxxxxxxxxxxxxxxxxxi";  char const ChatChannelsEntryfmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxx";                                                              // ChatChannelsEntryfmt, index not used (more compact store) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e501471b688..14878b078bd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1120,20 +1120,7 @@ bool Player::Create(uint32 guidlow, CharacterCreateInfo* createInfo)          addActionButton(action_itr->button, action_itr->action, action_itr->type);      // original items -    CharStartOutfitEntry const* oEntry = NULL; -    for (uint32 i = 1; i < sCharStartOutfitStore.GetNumRows(); ++i) -    { -        if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(i)) -        { -            if (entry->RaceClassGender == RaceClassGender) -            { -                oEntry = entry; -                break; -            } -        } -    } - -    if (oEntry) +    if (CharStartOutfitEntry const* oEntry = sCharStartOutfitStore.LookupEntry(RaceClassGender))      {          for (int j = 0; j < MAX_OUTFIT_ITEMS; ++j)          { diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index b41b61904e6..2ba456b5b3c 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2957,32 +2957,23 @@ void ObjectMgr::PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint3              sLog->outError(LOG_FILTER_SQL, "Invalid count %i specified on item %u be removed from original player create info (use -1)!", count, itemId);          uint32 RaceClass = (race_) | (class_ << 8); -        bool doneOne = false; -        for (uint32 i = 1; i < sCharStartOutfitStore.GetNumRows(); ++i) +        for (uint32 gender = 0; gender < GENDER_NONE; ++gender)          { -            if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(i)) +            if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(RaceClass | (gender << 16)))              { -                if (entry->RaceClassGender == RaceClass || entry->RaceClassGender == (RaceClass | (1 << 16))) +                bool found = false; +                for (uint8 x = 0; x < MAX_OUTFIT_ITEMS; ++x)                  { -                    bool found = false; -                    for (uint8 x = 0; x < MAX_OUTFIT_ITEMS; ++x) +                    if (entry->ItemId[x] > 0 && uint32(entry->ItemId[x]) == itemId)                      { -                        if (entry->ItemId[x] > 0 && uint32(entry->ItemId[x]) == itemId) -                        { -                            found = true; -                            const_cast<CharStartOutfitEntry*>(entry)->ItemId[x] = 0; -                            break; -                        } -                    } - -                    if (!found) -                        sLog->outError(LOG_FILTER_SQL, "Item %u specified to be removed from original create info not found in dbc!", itemId); - -                    if (!doneOne) -                        doneOne = true; -                    else +                        found = true; +                        const_cast<CharStartOutfitEntry*>(entry)->ItemId[x] = 0;                          break; +                    }                  } + +                if (!found) +                    sLog->outError(LOG_FILTER_SQL, "Item %u specified to be removed from original create info not found in dbc!", itemId);              }          }      }  | 
