@egocarib thanks! this is still not working but now I finally found the information about the Player.log
& harmony.log.txt
files in the Modding:Overview page of the wiki and found that there are errors w/ QudUX applying Harmony patches. This seems likely related:
From Player.log
MODERROR [QudUX] - Exception applying harmony patches: HarmonyLib.HarmonyException: Patching exception in method static System.String XRL.Annals.QudHistoryFactory::NameRuinsSite(HistoryKit.History history, System.Boolean& Proper, System.String& nameRoot) ---> System.ComponentModel.Win32Exception: Invalid data
at MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform.SetMemPerms (System.IntPtr start, System.UInt64 len, MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform+MmapProts prot) [0x00043] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform.MakeWritable (System.IntPtr src, System.UInt32 size) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.DetourHelper.MakeWritable (MonoMod.RuntimeDetour.IDetourNativePlatform plat, MonoMod.RuntimeDetour.NativeDetourData detour) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform._HookSelftest (System.Reflection.MethodInfo from, System.Reflection.MethodInfo to) [0x00035] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform..ctor () [0x0003f] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.Platforms.DetourRuntimeMonoPlatform..ctor () [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.DetourHelper.get_Runtime () [0x0003e] in <28a34da201e449be81fe5efb7481a26c>:0
at MonoMod.RuntimeDetour.DetourHelper.Pin[T] (T method) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.MethodPatcher.CreateReplacement (System.Collections.Generic.Dictionary`2[System.Int32,HarmonyLib.CodeInstruction]& finalInstructions) [0x00594] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, HarmonyLib.PatchInfo patchInfo) [0x00057] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.PatchClassProcessor.ProcessPatchJob (HarmonyLib.PatchJobs`1+Job[T] job) [0x0015d] in <28a34da201e449be81fe5efb7481a26c>:0
--- End of inner exception stack trace ---
at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x0010f] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.PatchClassProcessor.Patch () [0x00084] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.Harmony.<PatchAll>b__10_0 (System.Type type) [0x00007] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <28a34da201e449be81fe5efb7481a26c>:0
at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <28a34da201e449be81fe5efb7481a26c>:0
at XRL.ModInfo.ApplyHarmonyPatches () [0x00070] in <beb304b415964e3bb76d1e6a79f5bd5d>:0
From harmony.log.txt
:
### Exception from user "QudUX", Harmony v2.0.2.0
### Original: static System.String XRL.Annals.QudHistoryFactory::NameRuinsSite(HistoryKit.History history, System.Boolean& Proper, System.String& nameRoot)
### Patch class: QudUX.HarmonyPatches.Patch_XRL_Annals_QudHistoryFactory
### System.ComponentModel.Win32Exception (0x80004005): Invalid data
### at MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform.SetMemPerms (System.IntPtr start, System.UInt64 len, MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform+MmapProts prot) [0x00043] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform.MakeWritable (System.IntPtr src, System.UInt32 size) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.DetourHelper.MakeWritable (MonoMod.RuntimeDetour.IDetourNativePlatform plat, MonoMod.RuntimeDetour.NativeDetourData detour) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform._HookSelftest (System.Reflection.MethodInfo from, System.Reflection.MethodInfo to) [0x00035] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform..ctor () [0x0003f] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourRuntimeMonoPlatform..ctor () [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.DetourHelper.get_Runtime () [0x0003e] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.DetourHelper.Pin[T] (T method) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at HarmonyLib.MethodPatcher.CreateReplacement (System.Collections.Generic.Dictionary`2[System.Int32,HarmonyLib.CodeInstruction]& finalInstructions) [0x00594] in <28a34da201e449be81fe5efb7481a26c>:0
### at HarmonyLib.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, HarmonyLib.PatchInfo patchInfo) [0x00057] in <28a34da201e449be81fe5efb7481a26c>:0
### at HarmonyLib.PatchClassProcessor.ProcessPatchJob (HarmonyLib.PatchJobs`1+Job[T] job) [0x0015d] in <28a34da201e449be81fe5efb7481a26c>:0
### Exception from user "QudUX", Harmony v2.0.2.0
### Original: static System.String XRL.Annals.QudHistoryFactory::NameRuinsSite(HistoryKit.History history, System.Boolean& Proper, System.String& nameRoot)
### Patch class: QudUX.HarmonyPatches.Patch_XRL_Annals_QudHistoryFactory
### System.ComponentModel.Win32Exception (0x80004005): Invalid data
### at MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform.SetMemPerms (System.IntPtr start, System.UInt64 len, MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform+MmapProts prot) [0x00043] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourNativeLibcPlatform.MakeWritable (System.IntPtr src, System.UInt32 size) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.DetourHelper.MakeWritable (MonoMod.RuntimeDetour.IDetourNativePlatform plat, MonoMod.RuntimeDetour.NativeDetourData detour) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform._HookSelftest (System.Reflection.MethodInfo from, System.Reflection.MethodInfo to) [0x00035] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform..ctor () [0x0003f] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.Platforms.DetourRuntimeMonoPlatform..ctor () [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.DetourHelper.get_Runtime () [0x0003e] in <28a34da201e449be81fe5efb7481a26c>:0
### at MonoMod.RuntimeDetour.DetourHelper.Pin[T] (T method) [0x00000] in <28a34da201e449be81fe5efb7481a26c>:0
### at HarmonyLib.MethodPatcher.CreateReplacement (System.Collections.Generic.Dictionary`2[System.Int32,HarmonyLib.CodeInstruction]& finalInstructions) [0x00594] in <28a34da201e449be81fe5efb7481a26c>:0
### at HarmonyLib.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, HarmonyLib.PatchInfo patchInfo) [0x00057] in <28a34da201e449be81fe5efb7481a26c>:0
### at HarmonyLib.PatchClassProcessor.ProcessPatchJob (HarmonyLib.PatchJobs`1+Job[T] job) [0x0015d] in <28a34da201e449be81fe5efb7481a26c>:0
feat: Convert CRLF to LF
I used this command to easily convert. This should make it easier to see what changes have been made when I pull in changes from Bee / Simon after. git ls-tree -r HEAD | cut -f2 | xargs dos2unix --
feat: Apply changes from Bee/Simon Fruehauf
Apply updates from https://github.com/simonfruehauf/QUDUX-2.0.203.56's initial commit
fix: Update for 2.0.204.48 - Moon Stair
Some changes in the Moon Stair update broke QudUX, these appear to fix it.
fix: Fix parameters deprecation warnings
There were some deprecation warnings around the use of GamePartBlueprint.GetParameter in CharacterTileScreenExtender.cs. Those have been upgraded to use the new syntax, (i.e. HasParameter and GetParameterString).
chore: Add extra images & workshop.json
I'm not certain if these files need to be committed for it to work, but it's worth trying.
fix: Fix parameters deprecation warnings
There were some deprecation warnings around the use of GamePartBlueprint.GetParameter in CharacterTileScreenExtender.cs. Those have been upgraded to use the new syntax, (i.e. HasParameter and GetParameterString).
chore: Add extra images & workshop.json
I'm not certain if these files need to be committed for it to work, but it's worth trying.
fix: Fix parameters deprecation warnings
There were some deprecation warnings around the use of GamePartBlueprint.GetParameter in CharacterTileScreenExtender.cs. Those have been upgraded to use the new syntax, (i.e. HasParameter and GetParameterString).
chore: Add extra images & workshop.json
I'm not certain if these files need to be committed for it to work, but it's worth trying.
NB apparently this only fixes the errors with loading the mod, but doesn't actually restore full functionality... I'll try seeing if I can patch the warnings too, and see if that fixes the issue.
@nzacca @FrozenPandaz I think I would suggest/reach for a different approach to implement this. I'd opt for something a bit like what @nzacca provided via a custom prompt, but instead I'd use a JSON object to directly provide the parameters to the library's .prompt()
(leaving it open whether this is enq. or inq. per @brandonbechtel's disc. above) method pretty much without translation, rather than relying on importing and evaluating code at runtime to provide that Prompt or those params. You could maybe provide some way to opt-in to that behavior, but I definitely wouldn't default to it.
The way I see it there are two different operations that end up driven by each of these param schema:
If I were going to rewrite or expand how this gets handled in the future that's probably how I'd start thinking about it. Most of the current set of prompt properties/types that nx supports are definitely the most common use-cases and I'd bias for preserving the existing syntax that they use, but I may re-consider how the advanced options and specifically the x-prompt
machinery is used.
The current functionality is that the property specifies how it gets parsed (i.e. operation 2.), which implies how it should be prompted (i.e. operation 1.), unless you pass an x-prompt
to override that implication. This in effect means that a compatible parser needs to be specified for any allowed prompt style.
I might consider decoupling this implication by accepting a top-level "type": "custom"
on properties, which would expect an x-prompt
entry with arguments to pass to the prompt library without translation, and optionally an x-parse
entry. If x-parse
is not provided, the returned input value would be left as-is in the form the library returned it. Otherwise, x-parse
would accept a) the name of a common nx
type to parse the returned value into (isomorphic to just providing the same in the type
), or b) arguments to pass to a parser function.
Implementation-wise I'd then refactor the existing code to translate all of the implications/shorthands into inputs to the prompt library and the parser function, making the system more extensible. This should also allow a lot of the nested, custom, or branching logic in params.ts to be abstracted away.
Updates including those from Bee/Simon's fork https://github.com/simonfruehauf/QUDUX-2.0.203.56
feat: Convert CRLF to LF
I used this command to easily convert. This should make it easier to see what changes have been made when I pull in changes from Bee / Simon after. git ls-tree -r HEAD | cut -f2 | xargs dos2unix --
feat: Apply changes from Bee/Simon Fruehauf
Apply updates from https://github.com/simonfruehauf/QUDUX-2.0.203.56's initial commit
fix: Update for 2.0.204.48 - Moon Stair
Some changes in the Moon Stair update broke QudUX, these appear to fix it.
@brandonbechtel that's a great question to ask, and I think it really deserves its own issue, since this one is regarding expansion of the supported schema-driven prompt types. After you create it, I would definitely comment back on this issue with a reference to your new one, because a decision to switch libraries would certainly impact any development work on this one.
I don't know what I'm doing... lol
I made the "rod" show up and then I tried using a dampingspringjoint to have it track the mouse, but that was too weird so I made it very subtle.
I also reworked the chain to make it more like a fishing line w/ a bobber.
I tried to make the pole stay in "front" of the player's movement, but it doesn't move the other bits with it and it doesn't stay as I'd expect it to :/
Overall, fun to mess with still :)
feat: Add custom dir-prefix to install system
The Addons system may be in the process of being removed but as long as the commands exist here, other users may want the repos cloned in a different location than directly under their home directory. This change makes the addons-* and install-script-templates commands take variadic additional args from the command line, each word of which will be interpreted as a part of the path under the user's $HOME directory in which they want the repos to be cloned, or in the case of the script_templates, where the respective repo can be found on the local machine.
feat: Use new babashka.fs/home
For better portability and longevity, remove bb-godot.tasks/home-dir in favor of the new babashka.fs/home.
feat: Make the git status output for addons better
Rather than the full message for the git status output, which gets a bit lost when being emitted for each addon repo, use git status -sb to show the short format with the branch and tracking information.
Additionally, it seems prudent to fetch from the remote prior to checking the status, to see how much divergence has taken place.
feat: Use more portable home-dir
sh is available on more systems than zsh, and the $HOME var generally better to use than the tilde, because that alias is re-writable (no one really does that, but still...)
feat: Add custom dir-prefix to install system
The Addons system may be in the process of being removed but as long as the commands exist here, other users may want the repos cloned in a different location than directly under their home directory. This change makes the addons-* and install-script-templates commands take variadic additional args from the command line, each word of which will be interpreted as a part of the path under the user's $HOME directory in which they want the repos to be cloned, or in the case of the script_templates, where the respective repo can be found on the local machine.
A number of these changes may be superceded by the vendoring of the addons.
feat: Day 6 pt 2
feat: Day 7 pt 1
feat: Day 6 pt 1
feat: Day 5 pt 2
take & drop replace peek & pop.
feat: Day 5 pt 1
feat: Day 4 pt 2
Whoo!