Skip to content
This repository was archived by the owner on Jun 16, 2025. It is now read-only.

Commit c05803e

Browse files
committed
#460 and add a test
1 parent 20e937c commit c05803e

File tree

14 files changed

+76
-3
lines changed

14 files changed

+76
-3
lines changed

src/Sidekick.Business/Apis/Poe/Trade/Data/Items/ItemDataService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public ItemData ParseItemData(ItemSections itemSections, Rarity itemRarity)
114114
var results = new List<ItemData>();
115115

116116
// Rares may have conflicting names, so we don't want to search any unique items that may have that name. Like "Ancient Orb" which can be used by abyss jewels.
117-
// there are some items which have prefixes which we don't wan to remove, like the "Blighted Delirium Orb"
117+
// There are some items which have prefixes which we don't want to remove, like the "Blighted Delirium Orb".
118118
if (itemRarity != Rarity.Rare && nameAndTypeDictionary.TryGetValue(itemSections.HeaderSection[1], out var itemData))
119119
{
120120
results.AddRange(itemData);

src/Sidekick.Business/Apis/Poe/Trade/Data/Stats/StatData.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ public class StatData
1919

2020
[JsonIgnore]
2121
public Regex NegativePattern { get; set; }
22+
23+
[JsonIgnore]
24+
public Regex AdditionalProjectilePattern { get; set; }
2225
}
2326
}

src/Sidekick.Business/Apis/Poe/Trade/Data/Stats/StatDataService.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public StatDataService(IPoeTradeClient poeApiClient,
4444

4545
private Regex NewLinePattern { get; set; }
4646
private Regex IncreasedPattern { get; set; }
47+
private Regex AdditionalProjectilePattern { get; set; }
4748

4849
public async Task OnInit()
4950
{
@@ -56,13 +57,18 @@ public async Task OnInit()
5657
CraftedPatterns = new List<StatData>();
5758
VeiledPatterns = new List<StatData>();
5859
FracturedPatterns = new List<StatData>();
59-
60-
NewLinePattern = new Regex("(?:\\\\)*[\\r\\n]+");
6160
IncreasedPattern = new Regex(languageProvider.Language.ModifierIncreased);
6261

62+
NewLinePattern = new Regex("(?:\\\\)*[\\r\\n]+");
6363
var hashPattern = new Regex("\\\\#");
6464
var parenthesesPattern = new Regex("((?:\\\\\\ )*\\\\\\([^\\(\\)]*\\\\\\))");
6565

66+
var additionalProjectileEscaped = Regex.Escape(languageProvider.Language.AdditionalProjectile);
67+
var additionalProjectiles = hashPattern.Replace(Regex.Escape(languageProvider.Language.AdditionalProjectiles), "([-+\\d,\\.]+)");
68+
69+
// We need to ignore the case here, there are some mistakes in the data of the game.
70+
AdditionalProjectilePattern = new Regex(languageProvider.Language.AdditionalProjectile, RegexOptions.IgnoreCase);
71+
6672
foreach (var category in categories)
6773
{
6874
var first = category.Entries.FirstOrDefault();
@@ -141,6 +147,12 @@ public async Task OnInit()
141147
entry.NegativePattern = new Regex($"(?:^|\\n){negativePattern}{suffix}", RegexOptions.None);
142148
}
143149

150+
if (AdditionalProjectilePattern.IsMatch(entry.Text))
151+
{
152+
var additionalProjectilePattern = pattern.Replace(additionalProjectileEscaped, additionalProjectiles, System.StringComparison.OrdinalIgnoreCase);
153+
entry.AdditionalProjectilePattern = new Regex($"(?:^|\\n){additionalProjectilePattern}{suffix}", RegexOptions.IgnoreCase);
154+
}
155+
144156
entry.Pattern = new Regex($"(?:^|\\n){pattern}{suffix}", RegexOptions.None);
145157
patterns.Add(entry);
146158
}
@@ -199,6 +211,13 @@ private void FillMods(List<Modifier> mods, List<StatData> patterns, string text)
199211
FillMod(unorderedMods, text, data, data.NegativePattern.Match(text), true);
200212
}
201213

214+
foreach (var data in patterns
215+
.AsParallel()
216+
.Where(x => x.AdditionalProjectilePattern != null && x.AdditionalProjectilePattern.IsMatch(text)))
217+
{
218+
FillMod(unorderedMods, text, data, data.AdditionalProjectilePattern.Match(text));
219+
}
220+
202221
unorderedMods.OrderBy(x => x.Index).ToList().ForEach(x => mods.Add(x));
203222
}
204223

src/Sidekick.Business/Languages/ILanguage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,7 @@ public interface ILanguage
5858

5959
string ModifierIncreased { get; }
6060
string ModifierReduced { get; }
61+
string AdditionalProjectile { get; }
62+
string AdditionalProjectiles { get; }
6163
}
6264
}

src/Sidekick.Business/Languages/Implementations/LanguageDE.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public class LanguageDE : ILanguage
5353

5454
public string ModifierIncreased => "__TranslationRequired__";
5555
public string ModifierReduced => "__TranslationRequired__";
56+
public string AdditionalProjectile => "__TranslationRequired__";
57+
public string AdditionalProjectiles => "__TranslationRequired__";
5658

5759
public string PrefixAnomalous => "(anormal)";
5860
public string PrefixDivergent => "(abweichend)";

src/Sidekick.Business/Languages/Implementations/LanguageEN.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public class LanguageEN : ILanguage
5151

5252
public string ModifierIncreased => "increased";
5353
public string ModifierReduced => "reduced";
54+
public string AdditionalProjectile => "fires an additional Projectile";
55+
public string AdditionalProjectiles => "fires # additional Projectiles";
5456

5557
public string PrefixAnomalous => "Anomalous";
5658
public string PrefixDivergent => "Divergent";

src/Sidekick.Business/Languages/Implementations/LanguageES.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public class LanguageES : ILanguage
5858

5959
public string ModifierIncreased => "__TranslationRequired__";
6060
public string ModifierReduced => "__TranslationRequired__";
61+
public string AdditionalProjectile => "__TranslationRequired__";
62+
public string AdditionalProjectiles => "__TranslationRequired__";
6163

6264
public string PrefixAnomalous => "anómala";
6365
public string PrefixDivergent => "divergente";

src/Sidekick.Business/Languages/Implementations/LanguageFR.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public class LanguageFR : ILanguage
5959

6060
public string ModifierIncreased => "__TranslationRequired__";
6161
public string ModifierReduced => "__TranslationRequired__";
62+
public string AdditionalProjectile => "tire un Projectile supplémentaire";
63+
public string AdditionalProjectiles => "tire # Projectiles supplémentaires";
6264

6365
public string PrefixAnomalous => "anormale";
6466
public string PrefixDivergent => "divergente";

src/Sidekick.Business/Languages/Implementations/LanguageKR.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public class LanguageKR : ILanguage
5959

6060
public string ModifierIncreased => "__TranslationRequired__";
6161
public string ModifierReduced => "__TranslationRequired__";
62+
public string AdditionalProjectile => "__TranslationRequired__";
63+
public string AdditionalProjectiles => "__TranslationRequired__";
6264

6365
public string PrefixAnomalous => "기묘한";
6466
public string PrefixDivergent => "분기하는";

src/Sidekick.Business/Languages/Implementations/LanguagePT.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public class LanguagePT : ILanguage
5959

6060
public string ModifierIncreased => "__TranslationRequired__";
6161
public string ModifierReduced => "__TranslationRequired__";
62+
public string AdditionalProjectile => "__TranslationRequired__";
63+
public string AdditionalProjectiles => "__TranslationRequired__";
6264

6365
public string PrefixAnomalous => "Anômalo";
6466
public string PrefixDivergent => "Divergente";

0 commit comments

Comments
 (0)