SimcProfileParser 3.0.0
See the version list below for details.
dotnet add package SimcProfileParser --version 3.0.0
NuGet\Install-Package SimcProfileParser -Version 3.0.0
<PackageReference Include="SimcProfileParser" Version="3.0.0" />
<PackageVersion Include="SimcProfileParser" Version="3.0.0" />
<PackageReference Include="SimcProfileParser" />
paket add SimcProfileParser --version 3.0.0
#r "nuget: SimcProfileParser, 3.0.0"
#:package SimcProfileParser@3.0.0
#addin nuget:?package=SimcProfileParser&version=3.0.0
#tool nuget:?package=SimcProfileParser&version=3.0.0
Simc Profile Parser
A library to parse items in the simc import format into functional objects.
PLEASE NOTE: This library is still a work in progress and is being created to support another project.
Please raise an issue if something isn't working as you would expect or throws a NotYetImplemented
exception and it may be prioritised.
Usage
Initialising
Instance Creation
A new instance can be manually created.
ISimcGenerationService sgs = new SimcGenerationService();
To provide logging to the new instance and its children, supply an ILoggerFactory:
ISimcGenerationService sgs = new SimcGenerationService(myLoggerFactory);
Using Dependency Injection
To implement this using Dependency Injection register it alongside your other services configuration
using the AddSimcProfileParser() extension method when configuring your DI services:
public void ConfigureServices(IServiceCollection services)
{
services.AddSimcProfileParser();
}
Then you request an instance of ISimcGenerationService through DI in your class constructors:
class MyClass
{
private readonly ISimcGenerationService _simcGenerationService;
public MyClass(ISimcGenerationService simcGenerationService)
{
_simcGenerationService = simcGenerationService;
}
}
Examples
Parsing profile files/strings
Generating a profile object from a simc import file named import.simc:
ISimcGenerationService sgs = new SimcGenerationService();
// Using async
var profile = await sgs.GenerateProfileAsync(File.ReadAllText("import.simc"));
Console.WriteLine($"Profile object created for player {profile.Name}.");
You can also generate a profile object from individual lines of an import file:
ISimcGenerationService sgs = new SimcGenerationService();
var lines = new List<string>()
{
"level=70",
"main_hand=,id=178473,bonus_id=6774/1504/6646"
};
var profile = await sgs.GenerateProfileAsync(lines);
Console.WriteLine($"Profile object created for a level {profile.Level}");
Console.WriteLine($"They are weilding {profile.Items.FirstOrDefault().Name}.");
Creating a single item
There are some basic options to manually create an item using ISimcGenerationService.GenerateItemAsync.
ISimcGenerationService sgs = new SimcGenerationService();
var itemOptions = new SimcItemOptions()
{
ItemId = 177813,
Quality = ItemQuality.ITEM_QUALITY_EPIC,
ItemLevel = 226
};
var item = await sgs.GenerateItemAsync(spellOptions);
There are other options that can be set, including bonus ids, gems and the original drop level:
public uint ItemId { get; set; }
public int ItemLevel { get; set; }
public IList<int> BonusIds { get; set; }
public IList<int> GemIds { get; set; }
public ItemQuality Quality { get; set; }
public int DropLevel { get; set; }
Creating a single spell
There are some basic options to manually create a spell using ISimcGenerationService.GenerateSpellAsync.
There are two types of generatable spells:
- Player Scaling: the type that scale with the player level / class, such as racials.
- Item Scaling: the type that scales with the item quality/level, such as trinkets.
Generating an item scaling spell (id 343538) for a rare trinket at ilvl 226:
ISimcGenerationService sgs = new SimcGenerationService();
var spellOptions = new SimcSpellOptions()
{
ItemLevel = 226,
SpellId = 343538,
ItemQuality = ItemQuality.ITEM_QUALITY_EPIC,
ItemInventoryType = InventoryType.INVTYPE_TRINKET
};
var spell = await sgs.GenerateSpellAsync(spellOptions);
Generating an player scaling spell (id 274740):
ISimcGenerationService sgs = new SimcGenerationService();
var spellOptions = new SimcSpellOptions()
{
SpellId = 274740,
PlayerLevel = 70
};
var spell = await sgs.GenerateSpellAsync(spellOptions);
The spell object has a property ScaleBudget which can be multiplied with a coeffecient from a spells effect if required.
Otherwise typically the BaseValue/ScaledValue of the effect will be what you're looking for.
Support
For bugs please search issues then create a new issue if needed.
For help using this library, please check the wiki or visit discord.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.9)
- Newtonsoft.Json (>= 13.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.2.0 | 151 | 10/25/2025 |
| 3.1.2 | 106 | 10/25/2025 |
| 3.1.1 | 109 | 10/25/2025 |
| 3.1.0 | 108 | 10/25/2025 |
| 3.0.0 | 137 | 10/11/2025 |
| 2.2.0 | 125 | 10/11/2025 |
| 2.1.1 | 197 | 4/4/2025 |
| 2.1.0 | 181 | 2/26/2025 |
| 2.0.4 | 182 | 2/12/2025 |
| 2.0.3 | 172 | 2/12/2025 |
| 2.0.2 | 183 | 2/12/2025 |
| 2.0.1 | 176 | 2/12/2025 |
| 2.0.0 | 181 | 2/12/2025 |
| 1.7.1 | 178 | 2/12/2025 |
| 1.7.0 | 171 | 1/24/2025 |
| 1.6.0 | 197 | 8/6/2024 |
| 1.5.0 | 221 | 9/22/2023 |
| 1.4.1 | 193 | 9/22/2023 |
| 1.3.1 | 443 | 1/4/2023 |
| 1.3.0 | 535 | 10/19/2022 |
| 1.2.0 | 798 | 9/17/2022 |
| 1.1.0 | 530 | 9/12/2022 |
| 1.0.0 | 550 | 9/7/2022 |
| 0.5.3.1 | 596 | 8/16/2022 |
| 0.5.3 | 535 | 8/16/2022 |
| 0.5.2 | 515 | 8/16/2022 |
| 0.5.1 | 504 | 8/19/2021 |
| 0.5.0 | 536 | 7/29/2021 |
| 0.4.0 | 793 | 12/6/2020 |
| 0.3.6 | 598 | 12/3/2020 |
| 0.3.5 | 568 | 11/16/2020 |
| 0.3.4 | 552 | 11/16/2020 |
| 0.3.3 | 581 | 11/13/2020 |
| 0.3.2 | 642 | 11/8/2020 |
| 0.3.1 | 594 | 11/5/2020 |
| 0.3.0 | 588 | 11/1/2020 |
| 0.2.2 | 735 | 10/28/2020 |
| 0.2.1 | 642 | 10/26/2020 |
| 0.2.0 | 646 | 10/26/2020 |
| 0.1.6 | 652 | 10/26/2020 |
| 0.1.5 | 626 | 10/18/2020 |
| 0.1.4 | 683 | 10/17/2020 |
| 0.1.3 | 624 | 10/17/2020 |
| 0.1.2 | 597 | 10/15/2020 |
| 0.1.1 | 584 | 10/15/2020 |
| 0.1.0 | 558 | 10/15/2020 |
| 0.0.6 | 699 | 10/11/2020 |
| 0.0.5 | 600 | 10/8/2020 |
| 0.0.4 | 601 | 10/7/2020 |
| 0.0.3 | 612 | 9/28/2020 |
| 0.0.2 | 644 | 9/26/2020 |
| 0.0.1 | 641 | 9/26/2020 |