SimcProfileParser 2.1.1
See the version list below for details.
dotnet add package SimcProfileParser --version 2.1.1
NuGet\Install-Package SimcProfileParser -Version 2.1.1
<PackageReference Include="SimcProfileParser" Version="2.1.1" />
<PackageVersion Include="SimcProfileParser" Version="2.1.1" />
<PackageReference Include="SimcProfileParser" />
paket add SimcProfileParser --version 2.1.1
#r "nuget: SimcProfileParser, 2.1.1"
#:package SimcProfileParser@2.1.1
#addin nuget:?package=SimcProfileParser&version=2.1.1
#tool nuget:?package=SimcProfileParser&version=2.1.1
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 | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. 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. |
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.2)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.2)
- Newtonsoft.Json (>= 13.0.3)
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 | 158 | 10/25/2025 |
| 3.1.2 | 110 | 10/25/2025 |
| 3.1.1 | 111 | 10/25/2025 |
| 3.1.0 | 111 | 10/25/2025 |
| 3.0.0 | 140 | 10/11/2025 |
| 2.2.0 | 129 | 10/11/2025 |
| 2.1.1 | 201 | 4/4/2025 |
| 2.1.0 | 185 | 2/26/2025 |
| 2.0.4 | 185 | 2/12/2025 |
| 2.0.3 | 174 | 2/12/2025 |
| 2.0.2 | 189 | 2/12/2025 |
| 2.0.1 | 179 | 2/12/2025 |
| 2.0.0 | 183 | 2/12/2025 |
| 1.7.1 | 181 | 2/12/2025 |
| 1.7.0 | 175 | 1/24/2025 |
| 1.6.0 | 200 | 8/6/2024 |
| 1.5.0 | 224 | 9/22/2023 |
| 1.4.1 | 195 | 9/22/2023 |
| 1.3.1 | 445 | 1/4/2023 |
| 1.3.0 | 537 | 10/19/2022 |
| 1.2.0 | 800 | 9/17/2022 |
| 1.1.0 | 535 | 9/12/2022 |
| 1.0.0 | 555 | 9/7/2022 |
| 0.5.3.1 | 598 | 8/16/2022 |
| 0.5.3 | 537 | 8/16/2022 |
| 0.5.2 | 519 | 8/16/2022 |
| 0.5.1 | 504 | 8/19/2021 |
| 0.5.0 | 538 | 7/29/2021 |
| 0.4.0 | 796 | 12/6/2020 |
| 0.3.6 | 601 | 12/3/2020 |
| 0.3.5 | 571 | 11/16/2020 |
| 0.3.4 | 557 | 11/16/2020 |
| 0.3.3 | 586 | 11/13/2020 |
| 0.3.2 | 644 | 11/8/2020 |
| 0.3.1 | 599 | 11/5/2020 |
| 0.3.0 | 591 | 11/1/2020 |
| 0.2.2 | 737 | 10/28/2020 |
| 0.2.1 | 644 | 10/26/2020 |
| 0.2.0 | 650 | 10/26/2020 |
| 0.1.6 | 654 | 10/26/2020 |
| 0.1.5 | 629 | 10/18/2020 |
| 0.1.4 | 685 | 10/17/2020 |
| 0.1.3 | 627 | 10/17/2020 |
| 0.1.2 | 600 | 10/15/2020 |
| 0.1.1 | 589 | 10/15/2020 |
| 0.1.0 | 560 | 10/15/2020 |
| 0.0.6 | 702 | 10/11/2020 |
| 0.0.5 | 602 | 10/8/2020 |
| 0.0.4 | 605 | 10/7/2020 |
| 0.0.3 | 616 | 9/28/2020 |
| 0.0.2 | 648 | 9/26/2020 |
| 0.0.1 | 642 | 9/26/2020 |