Skip to content

Commit 7f8c71c

Browse files
Blitz54LocalIdentity
andauthored
Initial support for Transcendent Limbs (#1710)
* Initial support for Transcendent Limbs * Flavour text * Shorten slot name and use sub type to lock to slot * tiny fix for subtype * Revert corrupted mods part * More explicit check --------- Co-authored-by: LocalIdentity <[email protected]>
1 parent 9eda30b commit 7f8c71c

File tree

15 files changed

+178
-5
lines changed

15 files changed

+178
-5
lines changed

src/Classes/ImportTab.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,7 @@ function ImportTabClass:ImportItemsAndSkills(charData)
914914
end
915915

916916
local rarityMap = { [0] = "NORMAL", "MAGIC", "RARE", "UNIQUE", [9] = "RELIC", [10] = "RELIC" }
917-
local slotMap = { ["Weapon"] = "Weapon 1", ["Offhand"] = "Weapon 2", ["Weapon2"] = "Weapon 1 Swap", ["Offhand2"] = "Weapon 2 Swap", ["Helm"] = "Helmet", ["BodyArmour"] = "Body Armour", ["Gloves"] = "Gloves", ["Boots"] = "Boots", ["Amulet"] = "Amulet", ["Ring"] = "Ring 1", ["Ring2"] = "Ring 2", ["Ring3"] = "Ring 3", ["Belt"] = "Belt" }
917+
local slotMap = { ["Weapon"] = "Weapon 1", ["Offhand"] = "Weapon 2", ["Weapon2"] = "Weapon 1 Swap", ["Offhand2"] = "Weapon 2 Swap", ["Helm"] = "Helmet", ["BodyArmour"] = "Body Armour", ["Gloves"] = "Gloves", ["Boots"] = "Boots", ["Amulet"] = "Amulet", ["Ring"] = "Ring 1", ["Ring2"] = "Ring 2", ["Ring3"] = "Ring 3", ["Belt"] = "Belt", ["IncursionArmLeft"] = "Arm 2", ["IncursionArmRight"] = "Arm 1", ["IncursionLegLeft"] = "Leg 2", ["IncursionLegRight"] = "Leg 1" }
918918

919919
function ImportTabClass:ImportItem(itemData, slotName)
920920
if not slotName then

src/Classes/Item.lua

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
712712
self.affixes = (self.base.subType and data.itemMods[self.base.type..self.base.subType])
713713
or data.itemMods[self.base.type]
714714
or data.itemMods.Item
715-
self.corruptible = self.base.type ~= "Flask" and self.base.type ~= "Charm" and self.base.type ~= "Rune" and self.base.type ~= "SoulCore"
715+
self.corruptible = self.base.type ~= "Flask" and self.base.type ~= "Charm" and self.base.type ~= "Rune" and self.base.type ~= "SoulCore" and self.base.type ~= "Transcendent Limb"
716716
self.clusterJewel = data.clusterJewels and data.clusterJewels.jewels[self.baseName]
717717
self.requirements.str = self.base.req.str or 0
718718
self.requirements.dex = self.base.req.dex or 0
@@ -1450,6 +1450,10 @@ function ItemClass:GetPrimarySlot()
14501450
return "Ring 1"
14511451
elseif self.type == "Flask" then
14521452
return "Flask 1"
1453+
elseif self.base.subType == "Transcendent Leg" then
1454+
return "Leg 1"
1455+
elseif self.base.subType == "Transcendent Arm" then
1456+
return "Arm 1"
14531457
else
14541458
return self.type
14551459
end

src/Classes/ItemsTab.lua

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ local socketDropList = {
2727
{ label = colorCodes.SCION.."S", color = "W" }
2828
}
2929

30-
local baseSlots = { "Weapon 1", "Weapon 2", "Helmet", "Body Armour", "Gloves", "Boots", "Amulet", "Ring 1", "Ring 2", "Ring 3","Belt", "Charm 1", "Charm 2", "Charm 3", "Flask 1", "Flask 2" }
30+
local baseSlots = { "Weapon 1", "Weapon 2", "Helmet", "Body Armour", "Gloves", "Boots", "Amulet", "Ring 1", "Ring 2", "Ring 3","Belt", "Charm 1", "Charm 2", "Charm 3", "Flask 1", "Flask 2", "Arm 1", "Arm 2", "Leg 1", "Leg 2" }
3131

3232
local catalystQualityFormat = {
3333
"^x7F7F7FQuality (Life Modifiers): "..colorCodes.MAGIC.."+%d%% (augmented)",
@@ -1926,6 +1926,10 @@ function ItemsTabClass:IsItemValidForSlot(item, slotName, itemSet, flagState)
19261926
elseif item.baseName:match("Mana Flask") and slotName:match("Flask 2") then
19271927
return true
19281928
end
1929+
elseif item.base.subType == "Transcendent Arm" and slotType == "Arm" then
1930+
return true
1931+
elseif item.base.subType == "Transcendent Leg" and slotType == "Leg" then
1932+
return true
19291933
elseif item.type == slotType then
19301934
return true
19311935
elseif slotName == "Weapon 1" or slotName == "Weapon 1 Swap" or slotName == "Weapon" then
@@ -2038,6 +2042,9 @@ function ItemsTabClass:CraftItem()
20382042
raritySel = 1
20392043
end
20402044
end
2045+
if base.base.type == "Transcendent Limb" then
2046+
raritySel = 1
2047+
end
20412048
if raritySel == 2 or raritySel == 3 then
20422049
item.crafted = true
20432050
end
@@ -3064,8 +3071,13 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode)
30643071
end
30653072

30663073
-- Show flavour text:
3067-
if item.rarity == "UNIQUE" or item.rarity == "RELIC" then
3068-
local flavourTable = flavourLookup[item.title]
3074+
if item.rarity == "UNIQUE" or item.rarity == "RELIC" or item.base.type =="Transcendent Limb" and main.showFlavourText then
3075+
local flavourTable
3076+
if item.base.type =="Transcendent Limb" then
3077+
flavourTable = flavourLookup["Transcendent Limb"]
3078+
else
3079+
flavourTable = flavourLookup[item.title]
3080+
end
30693081
if flavourTable then
30703082
local flavour = nil
30713083

src/Data/Bases/incursionlimb.lua

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
-- This file is automatically generated, do not edit!
2+
-- Item data (c) Grinding Gear Games
3+
local itemBases = ...
4+
5+
6+
itemBases["Guarding Arm"] = {
7+
type = "Transcendent Limb",
8+
subType = "Transcendent Arm",
9+
tags = { default = true, },
10+
implicit = "(8-12)% increased Block chance",
11+
implicitModTypes = { { "block" }, },
12+
req = { },
13+
}
14+
itemBases["Combat Arm"] = {
15+
type = "Transcendent Limb",
16+
subType = "Transcendent Arm",
17+
tags = { default = true, },
18+
implicit = "(6-10)% increased Attack Speed",
19+
implicitModTypes = { { "attack", "speed" }, },
20+
req = { },
21+
}
22+
itemBases["Caster Arm"] = {
23+
type = "Transcendent Limb",
24+
subType = "Transcendent Arm",
25+
tags = { default = true, },
26+
implicit = "(6-10)% increased Cast Speed",
27+
implicitModTypes = { { "caster", "speed" }, },
28+
req = { },
29+
}
30+
itemBases["Decrepifying Arm"] = {
31+
type = "Transcendent Limb",
32+
subType = "Transcendent Arm",
33+
tags = { default = true, },
34+
implicit = "(12-16)% increased Curse Magnitudes",
35+
implicitModTypes = { { "caster", "curse" }, },
36+
req = { },
37+
}
38+
itemBases["Deflective Arm"] = {
39+
type = "Transcendent Limb",
40+
subType = "Transcendent Arm",
41+
tags = { default = true, },
42+
implicit = "(6-10)% increased Deflection Rating",
43+
implicitModTypes = { { "evasion", "defences" }, },
44+
req = { },
45+
}
46+
itemBases["Commanding Arm"] = {
47+
type = "Transcendent Limb",
48+
subType = "Transcendent Arm",
49+
tags = { default = true, },
50+
implicit = "(15-25)% increased Presence Area of Effect",
51+
implicitModTypes = { { }, },
52+
req = { },
53+
}
54+
itemBases["Evasive Leg"] = {
55+
type = "Transcendent Limb",
56+
subType = "Transcendent Leg",
57+
tags = { default = true, },
58+
implicit = "(20-30)% increased Evasion Rating",
59+
implicitModTypes = { { "evasion", "defences" }, },
60+
req = { },
61+
}
62+
itemBases["Sprinters Leg"] = {
63+
type = "Transcendent Limb",
64+
subType = "Transcendent Leg",
65+
tags = { default = true, },
66+
implicit = "(6-10)% increased Movement Speed while Sprinting",
67+
implicitModTypes = { { }, },
68+
req = { },
69+
}
70+
itemBases["Sturdy Leg"] = {
71+
type = "Transcendent Limb",
72+
subType = "Transcendent Leg",
73+
tags = { default = true, },
74+
implicit = "(15-25)% increased Stun Threshold",
75+
implicitModTypes = { { }, },
76+
req = { },
77+
}
78+
itemBases["Surefooted Leg"] = {
79+
type = "Transcendent Limb",
80+
subType = "Transcendent Leg",
81+
tags = { default = true, },
82+
implicit = "(5-10)% reduced Movement Speed Penalty from using Skills while moving",
83+
implicitModTypes = { { "speed" }, },
84+
req = { },
85+
}
86+
itemBases["Calm Leg"] = {
87+
type = "Transcendent Limb",
88+
subType = "Transcendent Leg",
89+
tags = { default = true, },
90+
implicit = "(20-30)% increased Mana Regeneration Rate while moving",
91+
implicitModTypes = { { "resource", "mana" }, },
92+
req = { },
93+
}
94+
itemBases["Restorative Leg"] = {
95+
type = "Transcendent Limb",
96+
subType = "Transcendent Leg",
97+
tags = { default = true, },
98+
implicit = "(6-10)% of Damage taken Recouped as Life",
99+
implicitModTypes = { { "resource", "life" }, },
100+
req = { },
101+
}

src/Data/FlavourText.lua

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3224,4 +3224,12 @@ return {
32243224
"lung. You never know what Vaal technology will cost you...\"",
32253225
},
32263226
},
3227+
[402] = {
3228+
id = "VaalLimbReplacements",
3229+
name = "Transcendent Limb",
3230+
text = {
3231+
"\"Behold! A marvel of innovation! Pay no mind the cost of flesh...\"",
3232+
"- Guatelitzi, Architect of Flesh",
3233+
},
3234+
},
32273235
}

src/Data/ModIncursionLimb.lua

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- This file is automatically generated, do not edit!
2+
-- Item data (c) Grinding Gear Games
3+
4+
return {
5+
["IncursionLeg1"] = { affix = "", "(20-30)% increased Evasion Rating", statOrder = { 866 }, level = 0, group = "GlobalEvasionRatingPercent", weightKey = { }, weightVal = { }, modTags = { "evasion", "defences" }, tradeHash = 2106365538, },
6+
["IncursionLeg2"] = { affix = "", "(6-10)% increased Movement Speed while Sprinting", statOrder = { 9465 }, level = 0, group = "MovementVelocityWhileSprinting", weightKey = { }, weightVal = { }, modTags = { }, tradeHash = 3107707789, },
7+
["IncursionLeg3"] = { affix = "", "(15-25)% increased Stun Threshold", statOrder = { 2878 }, level = 0, group = "IncreasedStunThreshold", weightKey = { }, weightVal = { }, modTags = { }, tradeHash = 680068163, },
8+
["IncursionLeg4"] = { affix = "", "(5-10)% reduced Movement Speed Penalty from using Skills while moving", statOrder = { 8594 }, level = 0, group = "MovementVelocityPenaltyWhilePerformingAction", weightKey = { }, weightVal = { }, modTags = { "speed" }, tradeHash = 2590797182, },
9+
["IncursionLeg5"] = { affix = "", "(20-30)% increased Mana Regeneration Rate while moving", statOrder = { 7532 }, level = 0, group = "ManaRegenerationRateWhileMoving", weightKey = { }, weightVal = { }, modTags = { "resource", "mana" }, tradeHash = 1327522346, },
10+
["IncursionLeg6"] = { affix = "", "(6-10)% of Damage taken Recouped as Life", statOrder = { 970 }, level = 0, group = "DamageTakenGainedAsLife", weightKey = { }, weightVal = { }, modTags = { "resource", "life" }, tradeHash = 1444556985, },
11+
["IncursionArm1"] = { affix = "", "(8-12)% increased Block chance", statOrder = { 1064 }, level = 0, group = "IncreasedBlockChance", weightKey = { }, weightVal = { }, modTags = { "block" }, tradeHash = 4147897060, },
12+
["IncursionArm2"] = { affix = "", "(6-10)% increased Attack Speed", statOrder = { 941 }, level = 0, group = "IncreasedAttackSpeed", weightKey = { }, weightVal = { }, modTags = { "attack", "speed" }, tradeHash = 681332047, },
13+
["IncursionArm3"] = { affix = "", "(6-10)% increased Cast Speed", statOrder = { 942 }, level = 0, group = "IncreasedCastSpeed", weightKey = { }, weightVal = { }, modTags = { "caster", "speed" }, tradeHash = 2891184298, },
14+
["IncursionArm4"] = { affix = "", "(12-16)% increased Curse Magnitudes", statOrder = { 2266 }, level = 0, group = "CurseEffectiveness", weightKey = { }, weightVal = { }, modTags = { "caster", "curse" }, tradeHash = 2353576063, },
15+
["IncursionArm5"] = { affix = "", "(6-10)% increased Deflection Rating", statOrder = { 5721 }, level = 0, group = "GlobalDeflectionRating", weightKey = { }, weightVal = { }, modTags = { "evasion", "defences" }, tradeHash = 3040571529, },
16+
["IncursionArm6"] = { affix = "", "(15-25)% increased Presence Area of Effect", statOrder = { 1002 }, level = 0, group = "PresenceRadius", weightKey = { }, weightVal = { }, modTags = { }, tradeHash = 101878827, },
17+
}

src/Data/Uniques/incursionlimb.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-- Item data (c) Grinding Gear Games
2+
3+
return {
4+
-- Transcendent Limb
5+
6+
}

src/Export/Bases/incursionlimb.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- Item data (c) Grinding Gear Games
2+
local itemBases = ...
3+
4+
#type Transcendent Limb
5+
6+
#subType Transcendent Arm
7+
#baseMatch Metadata/Items/Incursion/Arm%d+
8+
#subType Transcendent Leg
9+
#baseMatch Metadata/Items/Incursion/Leg%d+

src/Export/Classes/GGPKData.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,8 @@ function GGPKClass:GetNeededFiles()
371371
local itFiles = {
372372
"Metadata/Items/Equipment.it",
373373
"Metadata/Items/Item.it",
374+
"Metadata/Items/Incursion2/Arm.it",
375+
"Metadata/Items/Incursion2/Leg.it",
374376
"Metadata/Items/Weapons/AbstractWeapon.it",
375377
"Metadata/Items/Weapons/TwoHandWeapons/AbstractTwoHandWeapon.it",
376378
"Metadata/Items/Weapons/TwoHandWeapons/TwoHandSwords/StormbladeTwoHand.it",

src/Export/Scripts/bases.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ local itemTypes = {
469469
"jewel",
470470
"flask",
471471
"talisman",
472+
"incursionlimb",
472473
}
473474
for _, name in pairs(itemTypes) do
474475
processTemplateFile(name, "Bases/", "../Data/Bases/", directiveTable)

0 commit comments

Comments
 (0)