Summary
All "Seed Sphere (Element) (N)" ItemDefinitions (Group 12) are seeded with MaximumItemLevel left at the default 0, because CreateSeedSphere() never sets it, unlike the sibling CreateSeed() method right above it, which does:
// CreateSeed(): sets it correctly
itemDefinition.MaximumItemLevel = (byte)options.PossibleOptions.Max(o => o.Number);
// CreateSeedSphere(): never sets it, stays at the default 0
private void CreateSeedSphere(byte number, string name, byte level, ItemOptionDefinition options)
{
var itemDefinition = this.Context.CreateNew<ItemDefinition>();
itemDefinition.Name = name;
itemDefinition.Number = number;
itemDefinition.Group = 12;
itemDefinition.Durability = 1;
itemDefinition.Width = 1;
itemDefinition.Height = 1;
itemDefinition.DropLevel = level;
itemDefinition.SetGuid(itemDefinition.Group, itemDefinition.Number);
itemDefinition.PossibleItemOptions.Add(options);
this.GameConfiguration.Items.Add(itemDefinition);
}
(src/Persistence/Initialization/VersionSeasonSix/Items/SocketSystem.cs)
Confirmed on a freshly seeded Season 6 database:
Name | MaximumItemLevel
Seed Sphere (Fire) (1) | 0
Seed Sphere (Water) (1) | 0
Seed Sphere (Fire) (2) | 0
...
Why this matters
A Seed Sphere's socket-bonus tier is determined at runtime by its item instance Level (0-5), not by which of the 6 per-tier ItemDefinitions it is. Confirmed in MountSeedSphereCrafting.CreateOrModifyResultItemsAsync:
sphereOption.ItemOption = seedSphere.Definition.PossibleItemOptions
.SelectMany(o => o.PossibleOptions)
.Single(o => o.OptionType == ItemOptionTypes.SocketOption && o.Number == seedSphere.Level);
sphereOption.Level = seedSphere.Level;
and in SeedSphereCrafting.CreateOrModifyResultItemsAsync:
result.Level = seed.Level; // The level defines the kind of option
The normal crafting path (Seed Master NPC → "Seed Sphere Creation") works fine because it assigns Item.Level directly in code, bypassing any MaximumItemLevel check. But /item explicitly enforces the cap before creating anything, in ItemChatCommandPlugIn.TryParseArgumentsAsync:
if (arguments.Level > itemDefinition.MaximumItemLevel)
{
await gameMaster.ShowLocalizedBlueMessageAsync(nameof(PlayerMessage.ItemLevelExceeded), itemDefinition.MaximumItemLevel).ConfigureAwait(false);
return (false, null);
}
Since MaximumItemLevel=0, any /item ... lvl=1 (or higher) request for a Seed Sphere is rejected with "Item level exceeded". A GM can only ever spawn tier-1 (Level 0) Seed Spheres for testing, even though the real crafting system supports and produces all 6 tiers (0-5) without issue. This likely also blocks setting a higher level through any other path that validates against MaximumItemLevel (e.g. creating a brand-new item of this type through the AdminPanel).
Suggested fix
In CreateSeedSphere(), set MaximumItemLevel the same way CreateSeed() already does one method above it:
itemDefinition.MaximumItemLevel = (byte)options.PossibleOptions.Max(o => o.Number);
This evaluates to 5, matching the 6 valid IncreasableItemOption.Number entries (0-5) already seeded per element.
Environment
- Confirmed against
origin/master (commit b29338b78), Season 6 seed data, fresh database.
- Not gameplay-breaking: the real crafting path is unaffected. This only limits GM/admin tooling.
Summary
All "Seed Sphere (Element) (N)"
ItemDefinitions (Group 12) are seeded withMaximumItemLevelleft at the default0, becauseCreateSeedSphere()never sets it, unlike the siblingCreateSeed()method right above it, which does:(
src/Persistence/Initialization/VersionSeasonSix/Items/SocketSystem.cs)Confirmed on a freshly seeded Season 6 database:
Why this matters
A Seed Sphere's socket-bonus tier is determined at runtime by its item instance
Level(0-5), not by which of the 6 per-tierItemDefinitions it is. Confirmed inMountSeedSphereCrafting.CreateOrModifyResultItemsAsync:and in
SeedSphereCrafting.CreateOrModifyResultItemsAsync:The normal crafting path (Seed Master NPC → "Seed Sphere Creation") works fine because it assigns
Item.Leveldirectly in code, bypassing anyMaximumItemLevelcheck. But/itemexplicitly enforces the cap before creating anything, inItemChatCommandPlugIn.TryParseArgumentsAsync:Since
MaximumItemLevel=0, any/item ... lvl=1(or higher) request for a Seed Sphere is rejected with "Item level exceeded". A GM can only ever spawn tier-1 (Level 0) Seed Spheres for testing, even though the real crafting system supports and produces all 6 tiers (0-5) without issue. This likely also blocks setting a higher level through any other path that validates againstMaximumItemLevel(e.g. creating a brand-new item of this type through the AdminPanel).Suggested fix
In
CreateSeedSphere(), setMaximumItemLevelthe same wayCreateSeed()already does one method above it:This evaluates to
5, matching the 6 validIncreasableItemOption.Numberentries (0-5) already seeded per element.Environment
origin/master(commitb29338b78), Season 6 seed data, fresh database.