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
|
// 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
|
// 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
|
// light up the surface by resolving the WKS mission sheet without
|
||||||
// touching the type. IsCosmic / IsSplendorCosmic are still set by the
|
// touching the type. IsCosmic is still set by the recipe-detection path
|
||||||
// recipe-detection path so the catalog knows which recipes belong to the
|
// so the catalog knows which recipes belong to the Cosmic surface even
|
||||||
// Cosmic surface even while the action flags stay dormant.
|
// 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):
|
// Adapter invariant (validated when the catalog is built):
|
||||||
// IsSplendorCosmic == true implies IsCosmic == true
|
|
||||||
// MissionHasMaterialMiracle == true implies IsCosmic == true
|
// MissionHasMaterialMiracle == true implies IsCosmic == true
|
||||||
// MissionHasSteadyHand == true implies IsCosmic == true
|
// MissionHasSteadyHand == true implies IsCosmic == true
|
||||||
//
|
//
|
||||||
// Inconsistent recipe states (sub-flag without master flag) throw at
|
// Inconsistent recipe states (sub-flag without master flag) throw at
|
||||||
// catalog-build time instead of silently corrupting the simulator.
|
// catalog-build time instead of silently corrupting the simulator.
|
||||||
public required bool IsCosmic { get; init; }
|
public required bool IsCosmic { get; init; }
|
||||||
public required bool IsSplendorCosmic { get; init; }
|
|
||||||
public required bool MissionHasMaterialMiracle { get; init; }
|
public required bool MissionHasMaterialMiracle { get; init; }
|
||||||
public required bool MissionHasSteadyHand { get; init; }
|
public required bool MissionHasSteadyHand { get; init; }
|
||||||
public required bool IsIshgardExpert { get; init; }
|
public required bool IsIshgardExpert { get; init; }
|
||||||
|
|||||||
@@ -577,7 +577,6 @@ internal sealed class LuminaRecipeAdapter
|
|||||||
IsExpertRecipe = recipe.IsExpert,
|
IsExpertRecipe = recipe.IsExpert,
|
||||||
CanHQ = recipe.CanHq,
|
CanHQ = recipe.CanHq,
|
||||||
IsCosmic = isCosmic,
|
IsCosmic = isCosmic,
|
||||||
IsSplendorCosmic = false,
|
|
||||||
MissionHasMaterialMiracle = false,
|
MissionHasMaterialMiracle = false,
|
||||||
MissionHasSteadyHand = false,
|
MissionHasSteadyHand = false,
|
||||||
IsIshgardExpert = false,
|
IsIshgardExpert = false,
|
||||||
@@ -636,11 +635,6 @@ internal sealed class LuminaRecipeAdapter
|
|||||||
// time instead of producing a corrupt simulator state at runtime.
|
// time instead of producing a corrupt simulator state at runtime.
|
||||||
private static void ValidateCosmicInvariant(AnvilRecipe recipe)
|
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)
|
if (recipe.MissionHasMaterialMiracle && !recipe.IsCosmic)
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
$"AnvilRecipe {recipe.RecipeId}: MissionHasMaterialMiracle implies IsCosmic, "
|
$"AnvilRecipe {recipe.RecipeId}: MissionHasMaterialMiracle implies IsCosmic, "
|
||||||
|
|||||||
@@ -10,9 +10,10 @@
|
|||||||
// behaviour for Robust - that wording predates the verified mechanics table
|
// behaviour for Robust - that wording predates the verified mechanics table
|
||||||
// and the values below are the source of truth.)
|
// and the values below are the source of truth.)
|
||||||
//
|
//
|
||||||
// SplendorCosmic raises Good's quality multiplier from 1.5 to 1.75 on
|
// Splendor (the Splendorous-tool bonus) raises Good's quality multiplier
|
||||||
// recipes flagged IsSplendorCosmic. The override lives in the simulator;
|
// from 1.5 to 1.75 when the character has the tool equipped. The override
|
||||||
// the table holds the non-Splendor default.
|
// lives in the simulator's stats layer (CraftStats.HasSplendorousTool in
|
||||||
|
// module 02); the table holds the non-Splendor default.
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user