Skip to content

Commit

Permalink
If there is only 1 set, assign it to all loadouts (#7781)
Browse files Browse the repository at this point in the history
Common use case: you only want to use 1 config set for all loadouts, but putting
every loadout tag in the config name feels a bit silly. This makes the solution a bit more
robust and easier to use.

Signed-off-by: Tomas Slusny <[email protected]>
  • Loading branch information
deathbeam authored Jul 22, 2024
1 parent 027eb5d commit c5f395e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 22 deletions.
26 changes: 14 additions & 12 deletions help.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Ctrl + N New build (in build selection menu)
Ctrl + S Save build to file
Ctrl + U Check for update
Ctrl + V or RMB Paste
Ctrl + W or
Ctrl + W or
Mouse 4 Close Build (gives save prompt if unsaved)
Ctrl + X Cut
Ctrl + Y Redo
Expand All @@ -55,7 +55,7 @@ Ctrl Hide tooltips while held
P Toggle node power
PgUp/PgDn/MWheel Zoom in / out (hold with shift to increase the amount of zoom x 3)
Ctrl + LMB Zoom in on mouse cursor position
Hold Shift Enable "path trace mode"
Hold Shift Enable "path trace mode"
(highlighted nodes will stay highlighted, and will be allocated when a node is clicked on the tree)
Up/Down arrow Select previous/next tree respectively

Expand Down Expand Up @@ -89,7 +89,7 @@ Select which jewel type, which jewel socket to search for, and which conqueror f
("Any" will just use the first conqueror if you add it to build, more on that later)

The filter nodes option makes it only check nodes that are allocated when searching a jewel socket.
Next, a node change/addition can be selected with the "search for node" dropdown,
Next, a node change/addition can be selected with the "search for node" dropdown,
The values for the stats added are controlled by primary/secondary (in the case of 2 stats from 1 node) node weights
If that type has already been added, then moving those sliders will change the values
These values can also be edited directly in the "Desired Nodes" box
Expand All @@ -112,10 +112,10 @@ Militant Faith jewels also have the option to select the other mods on the jewel

Advanced tricks:
For Militant Faith, if you don't want any nodes to change, you can just sort by devotion. As unchanged nodes add devotion, the ones with the most devotion will be the ones with unchanged nodes

---[Loadouts]

Loadouts can be selected from the dropdown in the top middle of the screen. Selecting a Loadout will load all four sets at once. These are automatically registered based on one of two conditions:
Loadouts can be selected from the dropdown in the top middle of the screen. Selecting a Loadout will load all four sets at once. These are automatically registered based on one of three conditions:

1) All four sets share the same name and colour formatting, e.g. "Leveling"
- If you have a set named ^4Leveling^7, it will not match to other sets named Leveling
Expand All @@ -125,6 +125,8 @@ Loadouts can be selected from the dropdown in the top middle of the screen. Sele
- The name of the Loadout in the dropdown is based on the name of the Tree Set, identifiers are shown for clarity when using sets multiple times
- These sets can have differing colour formatting so long as the identifier texts match

3) There is only one set for a type, e.g. "Default" config set, it will be assigned too all existing loadouts.

The "New Loadout" option allows the user to create all four sets from a single popup for convenience.
The "Sync" option is a backup option to force the UI to update in case the user has changed this data behind the scenes.

Expand All @@ -136,10 +138,10 @@ The Party tab Allows you to import support characters and have their auras and c
To import a build it must be exported with "Export support" enabled in the import/export tab and must be imported in the party tab
You can import a specific type like aura or curse, or import to all
You can also set it to append to a section rather than replace it (curses and links are always replaced if new one has a curse/link)

This does not add the auras, curses or links into the skills tab, but they do show up on calcs tab under "aura and buff skills" as well as "curses and debuffs" respectively
They also show other effects they add, like when physical damage reduction is applied by an aurabot with the Guardian node

Auras with the highest effect will take priority
Your curses will take priority over a support's

Expand All @@ -151,18 +153,18 @@ Some auras like Mines which use a stack value for their effect will not apply as

The skills tab allows you to plan out the skills you will use for your character. To access this tab, click on "Skills" in the tab at the top left of the screen next to "Tree" and "Items".

From here, you can view all of the skills in your build. There are a few different UI elements that you can use to group your skills and make DPS calculations easier.
From here, you can view all of the skills in your build. There are a few different UI elements that you can use to group your skills and make DPS calculations easier.

The top left window lets you view Socket Groups. Skills can be organized into Socket Groups to show which support gems are applied to certain skills. You can add a socket group by clicking New and selecting a skill from the drop-down.
The top left window lets you view Socket Groups. Skills can be organized into Socket Groups to show which support gems are applied to certain skills. You can add a socket group by clicking New and selecting a skill from the drop-down.
For example, you could add a socket group for Vitality and then attach Arrogance to the group as a support.
You can also add labels and organize your skills by type (auras, mobility, damage, etc). This is a great way to keep track of skill changes across skill sets as you level.

Skill sets can be thought of as collections of socket groups. There is a select box above the socket groups window that will let you switch between them.
Skill sets can be thought of as collections of socket groups. There is a select box above the socket groups window that will let you switch between them.
A great way to use these is to create skill sets for different level gaps, allowing you to plan out which skills you can run at certain points in your levelling progression.
They are also a nice way to showcase different skill options for your build. One set could show the skills you run to maximize DPS, while another could show a better setup for survivability or maybe mapping. Click Manage next to the select box to add, remove, rename, and copy skill sets.

If you click on a skill in one of your socket groups, a table will appear on the right showing you the details of that group. You can set which piece of gear the skills are socketed in, as well as the level of each skill, the variant, quality, and count.
Hovering over a skill will display a full description of that skill and toggling the "Enabled" checkbox will enable or disable that skill from your build. You can also use the "Include in Full DPS" checkbox to include or exclude that skill from the Full DPS calculation displayed on the left panel.
If you click on a skill in one of your socket groups, a table will appear on the right showing you the details of that group. You can set which piece of gear the skills are socketed in, as well as the level of each skill, the variant, quality, and count.
Hovering over a skill will display a full description of that skill and toggling the "Enabled" checkbox will enable or disable that skill from your build. You can also use the "Include in Full DPS" checkbox to include or exclude that skill from the Full DPS calculation displayed on the left panel.
This can be useful for seeing how much damage you are getting from specific skills as well as specific groups of skills in your gear. You may also want to make a socket group simply for display purposes and then you can exclude that from DPS calculations.

Finally, underneath the Socket Groups window is the Gem Options box. This will let you configure the level of your skills gems as well as sort them by different types of DPS. Really useful for viewing total potential damage vs damage at different levels.
Expand Down
36 changes: 26 additions & 10 deletions src/Modules/Build.lua
Original file line number Diff line number Diff line change
Expand Up @@ -927,7 +927,8 @@ function buildMode:SyncLoadouts(reset)
end

-- item, skill, and config sets have identical structure
local function identifyLinks(setOrderList, tabSets, setList, specialLinks)
local function identifyLinks(setOrderList, tabSets, setList, specialLinks, treeLinks)
local assignAll = #setOrderList == 1
for id, set in ipairs(setOrderList) do
local setTitle = tabSets[set].title or "Default"
local linkIdentifier = string.match(setTitle, "%{([%w,]+)%}")
Expand All @@ -941,13 +942,22 @@ function buildMode:SyncLoadouts(reset)
transferTable = {}
end
else
t_insert(setList, setTitle)
if assignAll then
for linkId, _ in pairs(treeLinks) do
transferTable["setId"] = set
transferTable["setName"] = setTitle
specialLinks[linkId] = transferTable
transferTable = {}
end
else
t_insert(setList, setTitle)
end
end
end
end
identifyLinks(self.itemsTab.itemSetOrderList, self.itemsTab.itemSets, itemList, self.itemListSpecialLinks)
identifyLinks(self.skillsTab.skillSetOrderList, self.skillsTab.skillSets, skillList, self.skillListSpecialLinks)
identifyLinks(self.configTab.configSetOrderList, self.configTab.configSets, configList, self.configListSpecialLinks)
identifyLinks(self.itemsTab.itemSetOrderList, self.itemsTab.itemSets, itemList, self.itemListSpecialLinks, self.treeListSpecialLinks)
identifyLinks(self.skillsTab.skillSetOrderList, self.skillsTab.skillSets, skillList, self.skillListSpecialLinks, self.treeListSpecialLinks)
identifyLinks(self.configTab.configSetOrderList, self.configTab.configSets, configList, self.configListSpecialLinks, self.treeListSpecialLinks)

-- loop over all for exact match loadouts
for id, tree in ipairs(treeList) do
Expand Down Expand Up @@ -987,12 +997,18 @@ function buildMode:SyncLoadouts(reset)
local treeName = self.treeTab.specList[self.treeTab.activeSpec].title or "Default"
for i, loadout in ipairs(filteredList) do
if loadout == treeName then
local skillName = self.skillsTab.skillSets[self.skillsTab.activeSkillSetId].title or "Default"
local itemName = self.itemsTab.itemSets[self.itemsTab.activeItemSetId].title or "Default"
local configName = self.configTab.configSets[self.configTab.activeConfigSetId].title or "Default"
local linkMatch = string.match(treeName, "%{(%w+)%}")
if linkMatch and skillName:find(linkMatch) and itemName:find(linkMatch) and configName:find(linkMatch) then
self.controls.buildLoadouts:SetSel(i)
if linkMatch then
local skillName = self.skillsTab.skillSets[self.skillsTab.activeSkillSetId].title or "Default"
local skillMatch = #self.skillsTab.skillSetOrderList == 1 or skillName:find(linkMatch)
local itemName = self.itemsTab.itemSets[self.itemsTab.activeItemSetId].title or "Default"
local itemMatch = #self.itemsTab.itemSetOrderList == 1 or itemName:find(linkMatch)
local configName = self.configTab.configSets[self.configTab.activeConfigSetId].title or "Default"
local configMatch = #self.configTab.configSetOrderList == 1 or configName:find(linkMatch)

if skillMatch and itemMatch and configMatch then
self.controls.buildLoadouts:SetSel(i)
end
end
break
end
Expand Down

0 comments on commit c5f395e

Please sign in to comment.