Issue
The gnome/gargoyle workbench family had several overlapping problems from mixed TS1/TSO behavior data:
ggworkbench.iff could loop forever and never create a real gnome.
A temporary invisible/held “gnome” suit could remain instead of a real object.
The Sim could create the gnome, but then loop the finish animation forever.
ggworkbenchgargoyle.iff was awarding Mechanical skill points almost immediately.
VS also showed stale build/design-time errors while the fixes were being tested.
Root Causes
ggworkbench.piff was overriding the workbench behavior and broke the real Make Gnome Object path.
GGWorkBench.iff was authored around a 0-100 progress scale, but donor gargoyle logic used 8000-scale progress/tuning. That made progress/completion logic unreliable.
The actual object being tested was sometimes CraftingGnomeWorkbench.iff, not only GGWorkBench.iff. Its Finish Carving BHAV created the gnome, then jumped back to the finish animation start.
ggworkbenchgargoyle.iff is a hybrid clone: it looks like a gargoyle table, but still had gnome strings, gnome drop behavior, and SkillObjects payout-skill logic mixed in.
The skill-point popup came from the object returning into the original “skill gained” dialog branch too often.
Fixes Applied
Disabled ggworkbench.piff in PIFFRegistry.cs so it no longer breaks the workbench BHAVs.
Patched WorldObjectProvider.cs so GGWorkBench does not receive incompatible gargoyle donor progress/completion patches.
Patched gnome creation so Odd_Gnome is created as the real product object and persisted.
Patched Finish Carving dynamically: after Make Gnome Object succeeds, it now goes to the drop/reset cleanup instead of looping back to the finish animation.
Made that finish fix work for both GGWorkBench.iff and CraftingGnomeWorkbench.iff.
Simplified the drop cleanup path so the Sim releases the object/suit and returns control cleanly.
Added GnomeWorkbenchTrace logging support for debugging future workbench BHAV issues.
For ggworkbenchgargoyle.iff:
changed product suit string from suit-gnome to gargoyle-acc
disabled extra SkillObjects integration
prevented the object from modifying Mechanical skill directly
bypassed the old skill-point sound/dialog branch
kept Mechanical usable for payout math only
