Authors: JeNoVaViRuS
This is a lightweight tutorial editing only parameters and text (and a bit of ESD) to create custom item upgrades in a shop.
It explains the general relations between “EquipParamWeapon”, “EquipMtrlSetParam”, “ShopLineupParam” and “ReinforceParamWeapon” and the in-game shops.
Open “ESDStudio” and go into Firelink → “Blacksmith Andre” talk script. He has a talk option for his shop (not implemented in the game) for #6.
So add the line: AddTalkListData(6, 15010009, -1)
Also set some name for your talk option by editing the ID “15010006” in Text → Event
Then in option 6 replace “OpenRegularShop(100000, 109999)” with “OpenTranspositionShop(100000, 109999)”. You can also add a new talk option instead.
The first ID “100000” is the start ID in “ShopLineupParam” and “109999” the end.
“EquipMtrlSetParam” are used by reinforce, infusion and transposition (e.g. Ludleth for boss stuff) shops. Only the first slot is active.
We will use “EquipParamWeapon” ID “14040000” (Light Crossbow) as an example.
The enhancement shops (“Reinforce weapons” at André) turn weapons into the same version but with a +X. They DO NOT consume the weapon. They have an internal counter for the reinforcements.
So it tracks the base “14040000” and the +1 upgrade as “14040001”. If there is no text ID available for it then it will automatically be named “Light Crossbow+1”. Otherwise the text ID will be used to overwrite it.
Infusion entries in “EquipParamWeapon” do not exist but their text IDs exist.
This is important because the concept here is that in theory a weapon can be given the ID 14040099. That weapon will be +99
The infusion entries are always in 100 steps. So only the ID 14040100 is a new weapon and an “EquipParamWeapon” entry is required.
We can't create an actual infusion for ID “14040000”: The shops ESD function needs specific flags before calling it.
They decide which options are shown in that shop window. This is why Cornyx can upgrade your Pyro flame but André cannot.
There is no flag that will make ranged weapons appear in the infusion window but there is another way which is why we use “ShopLineupParam”.
The infusion and transposition shops actually consume the original item.
This way we can do something that cannot be done with normal reinforcement: we can implement a weapon that has higher requirements for specific “levels” of the weapon.
We can use 14040100 as level 1, 14040200 as level 2 and 14040300 as level 3. Just rename the text IDs to what you like.
First create an entry in “EquipMtrlSetParam” e.g. ID “110000” and enter “14040003” in the first field “materialId01” which will reference the “Light Crossbow+3”. Set the “itemNum01” field to “1”.
The tricky thing is that the “isDiableDispNum” fields set the item category of the “materialId01” field. They are 5 bits and need to be in a specific constellation.
Here is a list of possible bits for transposition in DS3:
00000 = weapon
00001 = weapon
00010 = Gem
00011 = Gem
00100 = goods (almost always used)
00101 = goods
01000 = accessory
01001 = accessory
10000 = protector/armor
10001 = protector/armor
11110 = nothing e.g. titanite scale upgrade
So for goods you check the 3rd box. For accessory you check the second box. We set none for weapon. All have 2 versions where one has the additional 5th bit but I don't know what's the difference.
In “ShopLineupParam” create a new entry for ID “100000” (from the ESD above) and set a name e.g. “light crossbow level 1”. For the “equipId” field enter “14040103”. This will reference 14040100 with a +3 reinforcement.
Here you set the ID of the new “EquipMtrlSetParam” in the “mtrlId” field. This is the item that will be consumed. Then set the “EquipType” to “0” for weapon.
In “EquipParamWeapon” duplicate ID “14040000” to “14040100”. In “14040000” set “originEquipWep4” to “-1” to prevent upgrades above +3.
Now we have created a possibility to upgrade the light crossbow to +3 but not further. Then we can go into the transposition menu and upgrade our “light crossbow+3” to “light crossbow level 1+3”.
We now have a completely new weapon instead. This means you can set way different stats for that weapon.
In the “EquipParamWeapon” ID you can set the SAME “materialSetId” (referencing “ReinforceParamWeapon”) field for both “14040000” and “14040100”.
They will automtically look up the consecutive IDs. Normally they have ID “0” set. “14040000” will look up ID 1-3 to check for the upgrade improvements.
“14040100” which is internally “14040103” (after the upgrade) will then look up entry 4 and the following cause it sees that itself has set +3 and add it to the “materialSetId” base.
The same is true for “reinforceTypeId” field for the damage scaling. If you want upgrades to +15 you need 15 entries in each param category.