I am very happy with your changes so far
Is it possible you could add an alternate form of getting contract tatters such as having them spread across the world in most chest types, having them as part of crates & pots, random chance upon every enemy death, etc instead of having it be tied to a mostly static list on the random NPC? I'd be nice to be able to encounter them naturally as part of a playthrough.
BTW the "intrinsic-create-contract" command doesn't work for items with spaces in their names (even the suggested /intrinsic-create-contract "Solar Wings" "Frostspark Boots"), Not that I need this command but yeah...
Silently Caught Exception: Index was outside the bounds of the array. at HamstarHelpers.Helpers.TmlHelpers.CommandsHelpers.CommandsHelpers.GetQuotedStringFromArgsAt(String[] args, Int32 startPos, Int32& nextArgIdx) at Terraria.ModLoader.ModCompile.<>c.<ActivateExceptionReporting>b__15_0(Object sender, FirstChanceExceptionEventArgs exceptionArgs)
at HamstarHelpers.Helpers.TmlHelpers.CommandsHelpers.CommandsHelpers.GetQuotedStringFromArgsAt(String[] args, Int32 startPos, Int32& nextArgIdx)
at Intrinsics.Commands.CreateContractCommand.Action(CommandCaller caller, String input, String[] args)
at Terraria.ModLoader.CommandManager.HandleCommand(String input, CommandCaller caller)
at Terraria.Main.DoUpdate_HandleChat()
at Terraria.Main.DoUpdate(GameTime gameTime)
at Terraria.Main.Update(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Microsoft.Xna.Framework.WindowsGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Terraria.Program.LaunchGame(String[] args, Boolean monoArgs)
at Terraria.WindowsLaunch.Main(String[] args)
[doublepost=1560932355,1560932180][/doublepost]Having them inherently and finitely tied to the world could be a cool concept because they're permanent on the character, so it could be that one character has to seek out multiple worlds in order to get permanently stronger...
(That being said I'd definitely prefer it being a rare component of every mob drop, or individual blank contracts from travelling merchant, to other ways of obtaining it)
[doublepost=1560932588][/doublepost]BTW "The Ring" from thorium definitely works for me