Modul 01 Hotfix A2: AnvilRecipe.IsSplendorCosmic entfernt
Splendorous-Tool-Bonus is character-equipment state, not recipe state. The flag moved to the simulator's stats layer (CraftStats.HasSplendorousTool in module 02) per the 01-RecipeData Rev 6 spec polish (A2). - AnvilRecipe.cs: IsSplendorCosmic property removed. Cosmic doc-block trimmed to four flags (IsCosmic + two MissionHas* + IsIshgardExpert) and now points consumers at the stats-layer for the Splendor branch. - LuminaRecipeAdapter.cs: assignment in the recipe walk removed. ValidateCosmicInvariant drops the IsSplendorCosmic implication (MissionHas* checks unchanged). - ConditionMechanicsTable.cs: header comment rewritten to describe Splendor as a stats-layer override rather than a recipe-flag override. Sweep over Anvil/RecipeData/, Anvil/SelfTest/, Anvil/Hosting/, Plugin.cs, and PluginHostFactory.cs: zero remaining references to IsSplendorCosmic. Build clean (0/0), csharpier check clean.
This commit is contained in:
@@ -28,19 +28,20 @@ public sealed record AnvilRecipe
|
||||
// Cosmic Exploration (Patch 7.x). v0.1.0 ships with MissionHas* always
|
||||
// false (SH-15 option B) - the data schema stays in place so v0.2.0+ can
|
||||
// light up the surface by resolving the WKS mission sheet without
|
||||
// touching the type. IsCosmic / IsSplendorCosmic are still set by the
|
||||
// recipe-detection path so the catalog knows which recipes belong to the
|
||||
// Cosmic surface even while the action flags stay dormant.
|
||||
// touching the type. IsCosmic is still set by the recipe-detection path
|
||||
// so the catalog knows which recipes belong to the Cosmic surface even
|
||||
// while the mission flags stay dormant. The Splendorous-tool bonus is
|
||||
// character-equipment state rather than recipe state, so it lives in
|
||||
// the simulator's stats layer (CraftStats.HasSplendorousTool in module
|
||||
// 02) instead of carrying a flag on this record.
|
||||
//
|
||||
// Adapter invariant (validated when the catalog is built):
|
||||
// IsSplendorCosmic == true implies IsCosmic == true
|
||||
// MissionHasMaterialMiracle == true implies IsCosmic == true
|
||||
// MissionHasSteadyHand == true implies IsCosmic == true
|
||||
//
|
||||
// Inconsistent recipe states (sub-flag without master flag) throw at
|
||||
// catalog-build time instead of silently corrupting the simulator.
|
||||
public required bool IsCosmic { get; init; }
|
||||
public required bool IsSplendorCosmic { get; init; }
|
||||
public required bool MissionHasMaterialMiracle { get; init; }
|
||||
public required bool MissionHasSteadyHand { get; init; }
|
||||
public required bool IsIshgardExpert { get; init; }
|
||||
|
||||
@@ -577,7 +577,6 @@ internal sealed class LuminaRecipeAdapter
|
||||
IsExpertRecipe = recipe.IsExpert,
|
||||
CanHQ = recipe.CanHq,
|
||||
IsCosmic = isCosmic,
|
||||
IsSplendorCosmic = false,
|
||||
MissionHasMaterialMiracle = false,
|
||||
MissionHasSteadyHand = false,
|
||||
IsIshgardExpert = false,
|
||||
@@ -636,11 +635,6 @@ internal sealed class LuminaRecipeAdapter
|
||||
// time instead of producing a corrupt simulator state at runtime.
|
||||
private static void ValidateCosmicInvariant(AnvilRecipe recipe)
|
||||
{
|
||||
if (recipe.IsSplendorCosmic && !recipe.IsCosmic)
|
||||
throw new InvalidOperationException(
|
||||
$"AnvilRecipe {recipe.RecipeId}: IsSplendorCosmic implies IsCosmic, "
|
||||
+ "but IsCosmic is false."
|
||||
);
|
||||
if (recipe.MissionHasMaterialMiracle && !recipe.IsCosmic)
|
||||
throw new InvalidOperationException(
|
||||
$"AnvilRecipe {recipe.RecipeId}: MissionHasMaterialMiracle implies IsCosmic, "
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
// behaviour for Robust - that wording predates the verified mechanics table
|
||||
// and the values below are the source of truth.)
|
||||
//
|
||||
// SplendorCosmic raises Good's quality multiplier from 1.5 to 1.75 on
|
||||
// recipes flagged IsSplendorCosmic. The override lives in the simulator;
|
||||
// the table holds the non-Splendor default.
|
||||
// Splendor (the Splendorous-tool bonus) raises Good's quality multiplier
|
||||
// from 1.5 to 1.75 when the character has the tool equipped. The override
|
||||
// lives in the simulator's stats layer (CraftStats.HasSplendorousTool in
|
||||
// module 02); the table holds the non-Splendor default.
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user