• This is a read only backup of the old Emudevs forum. If you want to have anything removed, please message me on Discord: KittyKaev

[SOLVED] Custom Level on Items and Item Sets

Status
Not open for further replies.

Reloac

BETA Tester
What version of TrinityCore are you using? 4.3.4 or 3.3.5 would help next time as both are done differently.

For 3.3.5 (Wrath of the Litch King)

For Itemlevel :

Code:
1. Go into your World Database > Item_template
2. Find column named "ItemLevel" (http://collab.kpsn.org/display/tc/Item+template+tc2#Itemtemplatetc2-ItemLevel)
3. Change the value to what ever you want the item level to be.

For Level :

Code:
1. Go into your World Database > Item_template
2. Find column named "RequiredLevel" (http://collab.kpsn.org/display/tc/Item+template+tc2#Itemtemplatetc2-RequiredLevel)
3. Change the value to what ever you want the Required level to wear the item to be.

For 4.3.4 (Cataclysm)

If the item is in the database (a select few are) then you can do the same method as WLK, if its not then you'll need to edit the DB2 file (item-sparse.db2) to change the information, as far as i remember https://github.com/Shauren/AdbToSqlConverter/blob/master/Formats/Item-sparse.cs has the correct collum layout but i might be wrong, if i am, then its located under the following on 4.3.4 (Source Code)

Code:
for (uint32 itemId = 0; itemId < sItemSparseStore.GetNumRows(); ++itemId)
    {
        ItemSparseEntry const* sparse = sItemSparseStore.LookupEntry(itemId);
        ItemEntry const* db2Data = sItemStore.LookupEntry(itemId);
        if (!sparse || !db2Data)
            continue;

        ItemTemplate& itemTemplate = _itemTemplateStore[itemId];

        itemTemplate.ItemId = itemId;
        itemTemplate.Class = db2Data->Class;
        itemTemplate.SubClass = db2Data->SubClass;
        itemTemplate.SoundOverrideSubclass = db2Data->SoundOverrideSubclass;
        itemTemplate.Name1 = sparse->Name->Str[sWorld->GetDefaultDbcLocale()];
        itemTemplate.DisplayInfoID = db2Data->DisplayId;
        itemTemplate.Quality = sparse->Quality;
        itemTemplate.Flags = sparse->Flags;
        itemTemplate.Flags2 = sparse->Flags2;
        itemTemplate.Unk430_1 = sparse->Unk430_1;
        itemTemplate.Unk430_2 = sparse->Unk430_2;
        itemTemplate.BuyCount = std::max(sparse->BuyCount, 1u);
        itemTemplate.BuyPrice = sparse->BuyPrice;
        itemTemplate.SellPrice = sparse->SellPrice;
        itemTemplate.InventoryType = db2Data->InventoryType;
        itemTemplate.AllowableClass = sparse->AllowableClass;
        itemTemplate.AllowableRace = sparse->AllowableRace;
        itemTemplate.ItemLevel = sparse->ItemLevel;
        itemTemplate.RequiredLevel = sparse->RequiredLevel;
        itemTemplate.RequiredSkill = sparse->RequiredSkill;
        itemTemplate.RequiredSkillRank = sparse->RequiredSkillRank;
        itemTemplate.RequiredSpell = sparse->RequiredSpell;
        itemTemplate.RequiredHonorRank = sparse->RequiredHonorRank;
        itemTemplate.RequiredCityRank = sparse->RequiredCityRank;
        itemTemplate.RequiredReputationFaction = sparse->RequiredReputationFaction;
        itemTemplate.RequiredReputationRank = sparse->RequiredReputationRank;
        itemTemplate.MaxCount = sparse->MaxCount;
        itemTemplate.Stackable = sparse->Stackable;
        itemTemplate.ContainerSlots = sparse->ContainerSlots;
        for (uint32 i = 0; i < MAX_ITEM_PROTO_STATS; ++i)
        {
            itemTemplate.ItemStat[i].ItemStatType = sparse->ItemStatType[i];
            itemTemplate.ItemStat[i].ItemStatValue = sparse->ItemStatValue[i];
            itemTemplate.ItemStat[i].ItemStatUnk1 = sparse->ItemStatUnk1[i];
            itemTemplate.ItemStat[i].ItemStatUnk2 = sparse->ItemStatUnk2[i];
        }

        itemTemplate.ScalingStatDistribution = sparse->ScalingStatDistribution;

        // cache item damage
        FillItemDamageFields(&itemTemplate.DamageMin, &itemTemplate.DamageMax, &itemTemplate.DPS, sparse->ItemLevel,
                             db2Data->Class, db2Data->SubClass, sparse->Quality, sparse->Delay, sparse->StatScalingFactor,
                             sparse->InventoryType, sparse->Flags2);

        itemTemplate.DamageType = sparse->DamageType;
        itemTemplate.Armor = FillItemArmor(sparse->ItemLevel, db2Data->Class, db2Data->SubClass, sparse->Quality, sparse->InventoryType);
        itemTemplate.Delay = sparse->Delay;
        itemTemplate.RangedModRange = sparse->RangedModRange;
        for (uint32 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i)
        {
            itemTemplate.Spells[i].SpellId = sparse->SpellId[i];
            itemTemplate.Spells[i].SpellTrigger = sparse->SpellTrigger[i];
            itemTemplate.Spells[i].SpellCharges = sparse->SpellCharges[i];
            itemTemplate.Spells[i].SpellCooldown = sparse->SpellCooldown[i];
            itemTemplate.Spells[i].SpellCategory = sparse->SpellCategory[i];
            itemTemplate.Spells[i].SpellCategoryCooldown = sparse->SpellCategoryCooldown[i];
        }

        itemTemplate.SpellPPMRate = 0.0f;
        itemTemplate.Bonding = sparse->Bonding;
        itemTemplate.Description = sparse->Description->Str[sWorld->GetDefaultDbcLocale()];
        itemTemplate.PageText = sparse->PageText;
        itemTemplate.LanguageID = sparse->LanguageID;
        itemTemplate.PageMaterial = sparse->PageMaterial;
        itemTemplate.StartQuest = sparse->StartQuest;
        itemTemplate.LockID = sparse->LockID;
        itemTemplate.Material = sparse->Material;
        itemTemplate.Sheath = sparse->Sheath;
        itemTemplate.RandomProperty = sparse->RandomProperty;
        itemTemplate.RandomSuffix = sparse->RandomSuffix;
        itemTemplate.ItemSet = sparse->ItemSet;
        itemTemplate.MaxDurability = FillMaxDurability(db2Data->Class, db2Data->SubClass, sparse->InventoryType, sparse->Quality, sparse->ItemLevel);
        itemTemplate.Area = sparse->Area;
        itemTemplate.Map = sparse->Map;
        itemTemplate.BagFamily = sparse->BagFamily;
        itemTemplate.TotemCategory = sparse->TotemCategory;
        for (uint32 i = 0; i < MAX_ITEM_PROTO_SOCKETS; ++i)
        {
            itemTemplate.Socket[i].Color = sparse->Color[i];
            itemTemplate.Socket[i].Content = sparse->Content[i];
        }

        itemTemplate.socketBonus = sparse->SocketBonus;
        itemTemplate.GemProperties = sparse->GemProperties;
        FillDisenchantFields(&itemTemplate.DisenchantID, &itemTemplate.RequiredDisenchantSkill, itemTemplate);

        itemTemplate.ArmorDamageModifier = sparse->ArmorDamageModifier;
        itemTemplate.Duration = sparse->Duration;
        itemTemplate.ItemLimitCategory = sparse->ItemLimitCategory;
        itemTemplate.HolidayId = sparse->HolidayId;
        itemTemplate.StatScalingFactor = sparse->StatScalingFactor;
        itemTemplate.CurrencySubstitutionId = sparse->CurrencySubstitutionId;
        itemTemplate.CurrencySubstitutionCount = sparse->CurrencySubstitutionCount;
        itemTemplate.ScriptId = 0;
        itemTemplate.FoodType = 0;
        itemTemplate.MinMoneyLoot = 0;
        itemTemplate.MaxMoneyLoot = 0;
        ++sparseCount;
    }
 
Last edited:
Status
Not open for further replies.
Top