Skip to content

Commit

Permalink
Harvest league prep (#1151)
Browse files Browse the repository at this point in the history
* advanced search ilvl improvements; added one more dvorak layout

* updated data files; added parsing for "enchant" flag on modlines

* added Simulacrum parsing

* some cluster jewel improvements

* some iteminfo data updates

* Notes/version
  • Loading branch information
Eruyome authored Jun 19, 2020
1 parent 5b8e5a7 commit 70ce412
Show file tree
Hide file tree
Showing 15 changed files with 606 additions and 439 deletions.
499 changes: 264 additions & 235 deletions data/DivinationCardList.txt

Large diffs are not rendered by default.

89 changes: 68 additions & 21 deletions data/GemQualityList.txt

Large diffs are not rendered by default.

290 changes: 147 additions & 143 deletions data/MapList.txt

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion data_trade/currency_tags.json

Large diffs are not rendered by default.

20 changes: 17 additions & 3 deletions data_trade/helmet_enchantment_mods.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ Animated Guardians deal #% increased Damage
#% chance to create an additional Animate Weapon copy
Animated Weapons deal #% increased Damage
#% increased Animate Weapon Duration
Arcane Cloak Spends an additional #% of current Mana
Arcane Cloak grants Life Regeneration equal to #% of Mana Spent per Second
#% increased Arc Damage
Arc deals #% increased Damage for each time it has Chained
Arc Chains an additional time
Expand Down Expand Up @@ -50,6 +52,9 @@ Barrage fires an additional Projectile
Enemies affected by Bear Trap take #% increased Damage from Trap or Mine Hits
Berserk has #% increased Buff Effect
Berserk has #% reduced Rage loss per second
Blade Blast has #% increased Area of Effect
Blade Blast deals #% increased Damage
Blade Blast detonates other Lingering Blades within an #% increased Area
Bladefall has an additional Volley
#% increased Bladefall Critical Strike Chance
#% increased Bladefall Damage
Expand All @@ -61,7 +66,6 @@ Blade Vortex has +#% to Critical Strike Multiplier for each blade
#% increased Blade Vortex Spell Damage
#% increased Blade Vortex Duration
#% increased Blade Vortex Area of Effect
Blast Rain has a #% chance to fire an additional Arrow
Blast Rain fires an additional Arrow
Blast Rain deals #% increased Damage
Blast Rain has #% increased Area of Effect
Expand Down Expand Up @@ -136,8 +140,8 @@ Cremation can have up to # additional Geyser at a time
#% increased Cyclone Damage
#% increased Dark Pact Cast Speed
#% increased Dark Pact Area of Effect
Dash has +# Cooldown
Dash has +# Cooldowns
Dash has +# Cooldown Use
Dash has +# Cooldown Uses
Dash travels #% increased distance
#% increased Decoy Totem Life
#% increased Decoy Totem Area of Effect
Expand Down Expand Up @@ -335,6 +339,10 @@ Infernal Blow Debuff deals an additional #% of Damage per Charge
#% increased Kinetic Blast Damage
Kinetic Blast has a #% chance for an additional explosion
#% increased Kinetic Blast Area of Effect
Kinetic Bolt has #% increased Attack Speed
Kinetic Bolt changes direction # additional time
Kinetic Bolt changes direction # additional times
Kinetic Bolt has #% increased Projectile Speed
Lancing Steel deals #% increased Damage
Lancing Steel's additional Projectiles have +#% chance to Impale Enemies
Lancing Steel's primary Projectile Pierces # additional Targets
Expand Down Expand Up @@ -441,6 +449,8 @@ Gain #% of Rejuvenation Totem Life Regeneration as extra Mana Regeneration
Righteous Fire grants #% increased Spell Damage
#% increased Riposte Cooldown Recovery Speed
#% increased Riposte Damage
Rune Blast teleports you to the detonated Rune if you have not detonated Runes in the past # second
Rune Blast teleports you to the detonated Rune if you have not detonated Runes in the past # seconds
Scourge Arrow creates an additional spore pod at Maximum Stages
Scourge Arrow has #% chance to Poison per Stage
Scourge Arrow deals #% increased Damage
Expand Down Expand Up @@ -495,6 +505,8 @@ Spectral Shield Throw fires # additional Shard Projectiles
#% increased Spectral Throw Projectile Speed
Spectres have #% increased Attack and Cast Speed
+#% to Raised Spectre Elemental Resistances
Skills Supported by Spellslinger have #% increased Cooldown Recovery Speed
Skills Supported by Spellslinger have #% reduced Mana Reservation
#% increased Spirit Offering Duration
Spirit Offering grants +#% of Physical Damage as Extra Chaos Damage
#% increased Split Arrow Critical Strike Chance
Expand All @@ -508,6 +520,8 @@ Steelskin grants #% additional Physical Damage Reduction
Steelskin Buff can take #% increased amount of Damage
+#% to Stone Golem Elemental Resistances
#% increased Effect of the Buff granted by your Stone Golems
Stormbind has #% increased Area of Effect
Stormbind deals #% increased Damage
Storm Brand deals #% increased Damage
Storm Burst has a #% chance to create an additional Orb
#% chance to Avoid interruption from Stuns while Casting Storm Burst
Expand Down
2 changes: 1 addition & 1 deletion data_trade/item_bases_armour.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion data_trade/item_bases_weapon.json

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions data_trade/item_corrupted_mods.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Grants Level # Hatred Skill
#% increased total Recovery per second from Life Leech for each Corrupted Item Equipped
#% of Lightning Damage Leeched as Life
Adds # to # Chaos Damage
+# to Weapon range
+# to Weapon Range
#% increased total Recovery per second from Mana Leech for each Corrupted Item Equipped
+# Mana gained for each Enemy hit by your Attacks
#% of Damage taken gained as Mana over 4 seconds when Hit
Expand Down Expand Up @@ -104,6 +104,7 @@ Skills Chain +# times
#% additional Physical Damage Reduction while stationary
Skills fire an additional Projectile
+#% to all Elemental Resistances
Enemies have -#% to Total Physical Damage Reduction against your Hits
Cannot be Ignited
Cannot be Blinded
Cannot be Poisoned
Expand All @@ -115,17 +116,19 @@ Bleeding cannot be inflicted on you
#% chance to gain Onslaught for 4 seconds on Kill
#% chance to gain a Power Charge on Critical Strike
#% chance to Dodge Spell Hits
Damage Penetrates #% Cold Resistance
Corrupted Blood cannot be inflicted on you
Curse Enemies with Level # Despair on Hit
Curse Enemies with Level # Enfeeble on Hit
Grants Level # Despair Skill
#% chance to Dodge Attack Hits while moving
#% chance to Dodge Spell Hits while moving
Damage Penetrates #% Elemental Resistances
Damage Penetrates #% Fire Resistance
Gain a Frenzy Charge after Spending a total of # Mana
+#% to Global Critical Strike Multiplier
You cannot be Hindered
#% increased Effect of non-Damaging Ailments on Enemies
#% increased Effect of Non-Damaging Ailments
Attacks have +#% to Critical Strike Chance
#% increased Attack Speed during any Flask Effect
Anger has #% increased Aura Effect
Expand Down Expand Up @@ -162,6 +165,7 @@ Spells have +#% to Critical Strike Chance
+# to Level of Socketed Cold Gems
+# to Level of Socketed Fire Gems
+# to Level of Socketed Lightning Gems
Damage Penetrates #% Lightning Resistance
Adds # to # Cold Damage
Adds # to # Fire Damage
Adds # to # Lightning Damage
Expand Down
2 changes: 1 addition & 1 deletion data_trade/mods.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion data_trade/prophecy_details.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion data_trade/uniques.json

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions resources/Updates_Trade.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
The following is a list of what has been updated, starting with 1.1.0

2.16.0
================================================================================================
* Added/improved parsing for some Delirium league items.
* Advanced search item level improvements.
* Added an additional Dvorak keyboard layout.
* Updated data files.

2.15.7
================================================================================================
* Added information about metamorph sample types able to drop from a map to a maps ctrl + c ItemInfo tooltip.
Expand Down
2 changes: 1 addition & 1 deletion resources/VersionTrade.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
TradeReleaseVersion := "v2.15.7"
TradeReleaseVersion := "v2.16.0"
TradeAHKVersionRequired := "1.1.26.00"
66 changes: 52 additions & 14 deletions resources/ahk/POE-ItemInfo.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ class Item_ {
This.IsFracturedBase:= False

This.IsAbyssJewel := False
This.IsClusterJewel := False
This.IsBeast := False
This.IsHideoutObject:= False
This.IsFossil := False
Expand Down Expand Up @@ -807,6 +808,12 @@ ParseItemType(ItemDataStats, ItemDataNamePlate, ByRef BaseType, ByRef SubType, B
SubType := match1 " Eye Jewel"
return
}
; Jewels
If (RegExMatch(LoopField, "i)(Small|Medium|Large) Cluster Jewel", match)) {
BaseType = Jewel
SubType := match1 " Cluster Jewel"
return
}

; Metamorph samples
If (IsMetamorphSample and RegExMatch(Loopfield, "i)(Eye|Liver|Heart|Lung|Brain)$", match)) {
Expand Down Expand Up @@ -1835,7 +1842,7 @@ MakeAffixDetailLine(AffixLine, AffixType, ValueRange, Tier, CountAffixTotals=Tru
}
}

If (Item.IsJewel and not Item.IsAbyssJewel)
If (Item.IsJewel and not (Item.IsAbyssJewel or Item.IsClusterJewel))
{
TierAndType := AffixTypeShort(AffixType) ; Discard tier since it's always T1

Expand Down Expand Up @@ -2002,7 +2009,7 @@ AssembleAffixDetails()
}
}

If ( not ((Item.IsJewel and not Item.IsAbyssJewel) or Item.IsFlask) and Opts.ShowHeaderForAffixOverview)
If ( not ((Item.IsJewel and not (Item.IsAbyssJewel or Item.IsClusterJewel)) or Item.IsFlask) and Opts.ShowHeaderForAffixOverview)
{
; Add a header line above the affix infos.
ProcessedLine := "`n"
Expand Down Expand Up @@ -2031,7 +2038,7 @@ AssembleAffixDetails()
AffixText := StrPad(AffixText, round( (TextLineWidth + StrLen(AffixText))/2 ), "left") ; align mid
}

If ((Item.IsJewel and not Item.IsAbyssJewel) or Item.IsFlask)
If ((Item.IsJewel and (Item.IsAbyssJewel or Item.IsClusterJewel)) or Item.IsFlask)
{
If (StrLen(AffixText) > TextLineWidthJewel)
{
Expand Down Expand Up @@ -4043,7 +4050,7 @@ ParseAffixes(ItemDataAffixes, Item)
; --- PRE-PASS ---
Loop, Parse, ItemDataChunk, `n, `r
{
LoopField := RegExReplace(Trim(A_LoopField), "i) \(fractured|crafted\)$")
LoopField := RegExReplace(Trim(A_LoopField), "i) \(fractured|crafted|enchant\)$")
If StrLen(LoopField) = 0
{
Continue ; Not interested in blank lines
Expand Down Expand Up @@ -4298,7 +4305,7 @@ ParseAffixes(ItemDataAffixes, Item)
; --- PRE-PASS ---
Loop, Parse, ItemDataChunk, `n, `r
{
LoopField := RegExReplace(Trim(A_LoopField), "i) \(fractured|crafted\)$")
LoopField := RegExReplace(Trim(A_LoopField), "i) \(fractured|crafted|enchant\)$")
If StrLen(LoopField) = 0
{
Continue ; Not interested in blank lines
Expand Down Expand Up @@ -8057,7 +8064,7 @@ ParseItemData(ItemDataText, ByRef RarityLevel="")
Item.IsFossil := (RegExMatch(ItemData.NamePlate, "i)Fossil$")) ? true : false
Item.IsScarab := (RegExMatch(ItemData.NamePlate, "i)Scarab$")) ? true : false

regex := ["^Sacrifice At", "^Fragment of", "^Mortal ", "^Offering to ", "'s Key$", "Ancient Reliquary Key", "Timeworn Reliquary Key", "Breachstone", "Divine Vessel"]
regex := ["^Sacrifice At", "^Fragment of", "^Mortal ", "^Offering to ", "'s Key$", "Ancient Reliquary Key", "Timeworn Reliquary Key", "Breachstone", "Divine Vessel", "^Simulacrum"]
For key, val in regex {
If (RegExMatch(Item.Name, "i)" val "")) {
Item.IsMapFragment := True
Expand Down Expand Up @@ -8147,6 +8154,7 @@ ParseItemData(ItemDataText, ByRef RarityLevel="")
Item.IsLeaguestone := (Item.BaseType == "Leaguestone")
Item.IsJewel := (Item.BaseType == "Jewel")
Item.IsAbyssJewel := (Item.IsJewel and RegExMatch(Item.SubType, "i)(Murderous|Hypnotic|Searching|Ghastly) Eye"))
Item.IsClusterJewel := (Item.IsJewel and RegExMatch(Item.SubType, "i)(Small|Medium|Large|) Cluster"))
Item.IsMirrored := (ItemIsMirrored(ItemDataText) and Not Item.IsCurrency)
Item.IsEssence := Item.IsCurrency and RegExMatch(Item.Name, "i)Essence of |Remnant of Corruption")
Item.Note := Globals.Get("ItemNote")
Expand Down Expand Up @@ -8213,6 +8221,7 @@ ParseItemData(ItemDataText, ByRef RarityLevel="")
TODO: rework this after 3.9 hits, implicits are now flagged, not sure about enchantments
*/
; Check that there is no ":" in the retrieved text = can only be an implicit mod
/*
_implicitFound := !InStr(ItemDataParts%ItemDataIndexImplicit%, ":")
If (_implicitFound) {
tempImplicit := ItemDataParts%ItemDataIndexImplicit%
Expand All @@ -8223,7 +8232,7 @@ ParseItemData(ItemDataText, ByRef RarityLevel="")
Item.hasImplicit := True
}
; Check if there is a second "possible implicit" which means the first one is actually an enchantmet
; Check if there is a second "possible implicit" which means the first one is actually an enchantment
_ItemDataIndexImplicit := ItemDataIndexImplicit - 1
If (_implicitFound and !InStr(ItemDataParts%_ItemDataIndexImplicit%, ":")) {
tempImplicit := ItemDataParts%_ItemDataIndexImplicit%
Expand All @@ -8234,6 +8243,28 @@ ParseItemData(ItemDataText, ByRef RarityLevel="")
Item.hasImplicit := True
Item.hasEnchantment := True
}
*/

_ItemDataIndexImplicit := ItemDataIndexImplicit - 1
_implicitsArr := [ItemDataParts%ItemDataIndexImplicit%, ItemDataParts%_ItemDataIndexImplicit%]

For key, imp in _implicitsArr {
_implicitFound := RegExMatch(imp, "i)(.*)\(Implicit|Enchant\)")
If (_implicitFound) {
Loop, Parse, imp, `n, `r
{
If (RegExMatch(A_LoopField, "i)(.*)\(Enchant\)")) {
Item.Enchantment.push(RegExReplace(A_LoopField, "i)(.*)\(Enchant\)", "$1"))
Item.hasEnchantment := True
}
Else {
Item.Implicit.push(RegExReplace(A_LoopField, "i)(.*)\(Implicit\)", "$1"))
Item.hasImplicit := True
}
}
}
}

}

ItemData.Stats := ItemDataParts2
Expand Down Expand Up @@ -8748,10 +8779,10 @@ ModStringToObject(string, isImplicit) {
StringReplace, val, val, `n,, All
values := []

RegExMatch(val, "i) \((fractured|crafted)\)$", sType)
RegExMatch(val, "i) \((fractured|crafted|enchant)\)$", sType)
spawnType := sType1

val := RegExReplace(val, "i) \((fractured|crafted)\)$")
val := RegExReplace(val, "i) \((fractured|crafted|enchant)\)$")

; Collect all numeric values in the mod-string
Pos := 0
Expand Down Expand Up @@ -8947,12 +8978,12 @@ CreatePseudoMods(mods, returnAllMods := False) {
; Note that at this point combined mods/attributes have already been separated into two mods
; like '+ x % to fire and lightning resist' would be '+ x % to fire resist' AND '+ x % to lightning resist' as 2 different mods
For key, mod in mods {
RegExMatch(mod.name, "i) \((fractured|crafted)\)$", spawnType)
RegExMatch(mod.name, "i) \((fractured|crafted|enchant)\)$", spawnType)
If (StrLen(spawnType1)) {
mod.spawnType := spawnType1
}

mod.name := RegExReplace(mod.name, "i) \((fractured|crafted)\)$")
mod.name := RegExReplace(mod.name, "i) \((fractured|crafted|enchant)\)$")

; ### Base stats
; life and mana
Expand Down Expand Up @@ -10994,9 +11025,9 @@ HighlightItems(broadTerms = false, leaveSearchField = true, focusHideoutFilter =
}
}
; offerings / sacrifice and mortal fragments / guardian fragments / council keys / breachstones / reliquary keys
Else If (RegExMatch(Item.Name, "i)Sacrifice At") or RegExMatch(Item.Name, "i)Fragment of") or RegExMatch(Item.Name, "i)Mortal ") or RegExMatch(Item.Name, "i)Offering to ") or RegExMatch(Item.Name, "i)'s Key") or RegExMatch(Item.Name, "i)Breachstone") or RegExMatch(Item.Name, "i)Reliquary Key")) {
Else If (RegExMatch(Item.Name, "i)Sacrifice At") or RegExMatch(Item.Name, "i)Fragment of") or RegExMatch(Item.Name, "i)Mortal ") or RegExMatch(Item.Name, "i)Offering to ") or RegExMatch(Item.Name, "i)'s Key") or RegExMatch(Item.Name, "i)Breachstone") or RegExMatch(Item.Name, "i)Reliquary Key") or RegExMatch(Item.Name, "i)Simulacrum")) {
If (broadTerms) {
tmpName := RegExReplace(Item.Name, "i)(Sacrifice At).*|(Fragment of).*|(Mortal).*|.*('s Key)|.*(Breachstone)|(Reliquary Key)", "$1$2$3$4$5$6")
tmpName := RegExReplace(Item.Name, "i)(Sacrifice At).*|(Fragment of).*|(Mortal).*|.*('s Key)|.*(Breachstone)|(Reliquary Key)|(Simulacrum)", "$1$2$3$4$5$6$7")
terms.push(tmpName)
} Else {
terms.push(Item.Name)
Expand Down Expand Up @@ -11282,7 +11313,7 @@ AntiquaryGetType(Item) {
return "Map"
}
}
If (RegExMatch(Item.Name, "(Sacrifice|Mortal|Fragment).*|Offering to the Goddess|Divine Vesse|.*(Breachstone|s Key)")) {
If (RegExMatch(Item.Name, "(Sacrifice|Mortal|Fragment).*|Offering to the Goddess|Divine Vessel|Simulacrum|.*(Breachstone|s Key)")) {
return "Fragment"
}
If (Item.IsCurrency) {
Expand Down Expand Up @@ -12384,6 +12415,13 @@ GetScanCodes() {
msg := "Using Dvorak keyboard layout mode!`n`nMsgBox closes after 15s."
MsgBox, 0, %project%, %msg%, 15
Return sc
} Else If (RegExMatch(InputLocaleID, "i)^(0xF0C00407).*")) {
; german dvorak (neo)
sc := {"c" : "sc013", "v" : "sc011", "f" : "sc018", "a" : "sc020", "enter" : "sc01C"}
project := Globals.Set("ProjectName")
msg := "Using German Dvorak (neo) keyboard layout mode!`n`nMsgBox closes after 15s."
MsgBox, 0, %project%, %msg%, 15
Return sc
} Else {
; default
sc := {"c" : "sc02E", "v" : "sc02f", "f" : "sc021", "a" : "sc01E", "enter" : "sc01C"}
Expand Down
Loading

0 comments on commit 70ce412

Please sign in to comment.