Skip to content

RecipeHasIngredients.cs fails to compile against V3.0.1(b4) - CraftingManager.GetRecipe(int) no longer exists #143

Description

@StumpyStump

Game version: V 3.0.1 (b4), Build: WindowsPlayer 64 Bit

Summary

Scripts/Buffs/RecipeHasIngredients.cs still calls CraftingManager.GetRecipe(int), but as of game version V3.0.1(b4) CraftingManager.GetRecipe only has a string overload (recipe/item name), not an int (item hash) overload. Every other call site in the SCore codebase already passes a string (e.g. Features/Challenges/Scripts/ChallengeObjectiveCraftWithIngredient.cs:49, Harmony/ItemActions/AdvancedItems.cs:309, Scripts/Items/ItemsUtilities.cs:122) — this one file wasn't updated for the API change.

Because the shipped SCore.dll in the 3.0.25.912 release zip is a stale prebuilt binary, dotnet build/msbuild treats it as already up to date and skips recompilation, so the broken source never actually gets rebuilt by default — a Rebuild (clean + build) is needed to reproduce the compile error:

Scripts\Buffs\RecipeHasIngredients.cs(21,48): error CS1503: Argument 1: cannot convert from 'int' to 'string'

Fix

--- a/Scripts/Buffs/RecipeHasIngredients.cs
+++ b/Scripts/Buffs/RecipeHasIngredients.cs
@@
if (minEventParams.ItemValue.GetMetcipeHash) return false;

  •    var recipe = CraftingManager.GetRec
    
  •    var recipeItemClass = ItemClass.list[recipeHash];
    
  •    if (recipeItemClass == null) return
    
  •    var recipe = CraftingManager.GetRecme());
       if (recipe == null) return false;
    

Downstream symptom (why this matters for the release)

Because SCore also carries a separate Harmony Prefix patch on TileEntityWorkstation.HandleRecipeQueue (Features/Recipe/Harmony/TileEntityWorkstatibecause the shipped 3.0.25.912 SCore.dllbinary predates this fix, players running 3.0.25.912 against game V3.0.1(b4) currently see continuous log spam and
broken workstation crafting:

MissingMethodException: Method not found: Reipe()
at TileEntityWorkstation.DMD<...HandleRecipeQueue(System.Single)>(...)

Note: RecipeQueueItem.Recipe itself is fine — it changed from a property to a public field in this game version, and the Prefix already accesses it correctly at blocker is purely the RecipeHasIngredients.cs compile error described above, which prevents a clean rebuild of SCore.dll against the current game assemblies and results in the stale/broken binary being shi

Suggested action: apply the fix above, do a ) against the current Assembly-CSharp.dll,and re-cut the release zip with the freshly built SCore.dll.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions