Join for free to receive email notifications about new posts submitted to paid tiers
Join for free to receive email notifications about new posts submitted to paid tiers
Join and get full access to supporter content and the exclusive supporter role "Demi-God" on our discord!
SCake Version 0.5 DEV (Beta)Notes :
- This version comes with the all new detection methods for faster, more performant, and hopefully more reliable detections for tracking and stats! If you notice new issues with these detection methods, please let me know ASAP!
- This version switched to UniPalUI for both input and UI handling, UniPalUI is now a hard requirement for SCake to have full functionality!
- Do-to saving changes and fixes to the persistence, "SaveSystem" and "SavePal" files from older SCake versions have been invalidated and will reset when loading with the new version. If you wish to keep your old save data despite the changes you can change the save file's "SCake_ModVersion" to "5000" in the associated SCake_SavePal_WorldID.json file, however a lot of data may not load.
- This version adds functional Altermatic integrations, requires Altermatic 0.4.0 DEV or newer to take advantage of them! If an older or no version is present then the integrations won't function. (Altermatic is not a requirement, just listens to calls made by SCake for certain functionality)
- Adjustment profiles have been reset since the way they are tracked and saved has changed
Added :
- __Create_Load_List__.bat will now try to scan .json files for UniqueAnimID and UniqueEventID to try and predict if the json config actually contains animation data (the ID is required for anims/events to register, so if they are excluded then it most likely isn't an anim config JSON)
- Started transitioning to the new Unified UI system (May release as its own framework in the future)
- Improved and re-enabled Async systems on the Register, this will drastically reduce the freeze-up on initial load but anims will take a short bit to register after the game starts up (Lock-ups can still happen depending on what anim packs you have installed and your hardware, packs with excessively large AnimJSON files will cause a lockup when loading in since the parsing of their data couldn't be fully asynced this update, solution is to create an async parser or have creators split up their json files into small chunks)
- "SCake_GetAnimObj" API Function, this returns the AnimObj which stores the data for an animation
- "SCake_GetEventObj" API Function, this returns the EventObj which stores the data for an animation
- Register now also sends the "Report" to UE4SS's console when "Set_ReportRegFails" is enabled (Still sends an in-game notification)
- Added new FreeCam mode which triggers while controlling an animation, use WASD for forward/horizontal and QE for vertical, mouse controls camera direction (Disables while the adjustment menu is open, no gamepad controls for now)
- Animation switching in Animation Control menu will now show the Animation Event details in the description box similar to the Animation Event List
- Aroused Morphs now apply to all mesh components on an character (enables replacers that use alternate replacer methods or for add-on mesh objects to have functional Aroused morphs)
- SCake will now have integrations with SCake and be able to call certain functions when required (Only available on Altermatic 0.4.0 DEV and newer!)
- "SCake_ED_SexEquipChanged" Dispatcher, this is called whenever the SexEquip for a Pal Character with an associated PalComp changes (should also trigger when a new comp is first created, however using SCake_ED_TrackPalEnabled is better for that kind of use case)
- Added new randomized gender/sex equipment spawning system, now when characters are first detected they will be assigned a random gender based on the user's preference settings (on a technical level, the sex equip is now stored in the PalComp which is used for tracking)
- Added Player gender as its own separate setting so it is no longer tied to the no-longer existing hard gender swap system
- Added an all new detection system which is replacing the old 'forced' detection system, this new method hooks into game functions and is much more reliable but still needs testing to find edge cases (the old methods still run as a fallback but at a drastically reduced rate)
- "Natural Sex Heat Rate" added to the menu, this configures how quickly Sex Heat changes naturally over time before any multipliers or additions
Changed :
- Most defaults were changed from their initial 'debug convenient' settings to more gameplay focused settings
- - Max Event Duration (90sec > 300sec)
- - Base Pleasure Gain Rate (120 > 80)
- - Pleasure Loss On Orgasm (80% > 95%)
- Drastically reduce default Sex Heat Gain over time (Multiplier * 1.4 per hour > 0.4 per hour) (This should reduce how often characters get aroused and allow more dynamic systems in the future, this should cause heat to 'fill' after a couple in-game days)
- Characters should no longer gain Sexual Pleasure or Sex Heat while orgasming (should freeze at the reduce value)
- "SendReportMessage" aka Notifications now show through the Unified UI system (UniPalUI)
- Most input is now handled by UniPalUI
- Animations and Events are now stored as custom Objects (SCake_AnimObj and SCake_EventObj), this allows more flexibility, is more stable to expose to the SDK, easier to use for modules, and should be faster in more complex scenarios
- Extended fail conditions for the Register to now fail when non-critical stuff is also invalid such as climax definitions (should help to ensure better compatibility, reduce confusion, and help modders debug their JSON files)
- Changed some menu wording/titles
- Completely transitioned to UniPalUI for all settings and configuration
- Completely transitioned to UniPalUI for all input registers/handling
- Changed all controls invalidating all previous keybinds
- - Debug targetting changed, now you use the debug keys to select targets and hold a key to start an animation with all targets (This allows animations with more than 2 actors at a time to be triggered in debug animations, previous trace limitations still apply)
- - Shift+K : Open Animation Control for Target (Hold for summon)
- - J : Touch Self / J with Debug : Target Self for Animation (Hold to touch self)
- - G with Debug : Target For Animation (Hold for summon)
- - H with Debug : Clear Animation Targets (Hold to start animation)
- - R in Anim : Open Adjust Menu
- - Shift+[ with Debug : Increase Sex Heat of Targets (by 10)
- - Shift+] with Debug : Decrease Sex Heat of Targets (by 10)
- Extended distance all debug keys are able to function at
- Sex Heat now caps at 1000
- During Animation Control, pleasure bars now show at the bottom of the screen and have a different look to them
- Increased the time orgasms add to animations without a climax animation to 8 seconds (was 5)
- Slightly changed default gender assignments for NPCs (All NPCs should now assign as either Male or Female with Male being the 'default')
- Re-organized the Preferences menu to show gender options first, separated Player Gender as its own option within this menu instead of a sub-menu, added appropriate menues for other additions
- Preference Settings now contains the Player Gender on it rather than in a sub-menu (it's its own setting now)
- Changed hard gender switch menus to "xxx Gender Spawn Rates" for the new dynamic gender spawning system, this menu allows you to set percentage chances for different gender spawns
- Changed hard gender switch for human characters into a "base gender" menu where you define what in-game gender each NPC type should be recognized as by default (in-game NPCs have their gender set to 'None' however SCake no longer takes in none as a gender and instead defaults to Male, for female NPCs this setting should be changed to "Female" while the rest can be left as is)
- SCake no longer uses "none" as a default gender type and instead assumes male for all undefined genders, none was removed from menu selections (Note : None is still used when defining requirements as a "no sex equip required" type setting, characters will just no longer have a 'none' option)
- Requirements for pals to persist have been made more strict to prevent non-relevant pals/npcs from accidentally being tracked while also adding additional systems and checks to make catching when a pal should be persistent much more reliable
- Adjustment profiles now account for all characters in the animation when determining a profile to use, this should prevent issues where animations are available for multiple sizes (this update resets old adjustment profiles with this change, uses scale factor which is mostly untested so hopefully it works but if not we'll have to try again with a different method)
- Changed some key values in the SaveSystem JSON (since it was being reset this update anyways, figured I could simplify it a bit and remove unnecessary prefix')
Removed :
- API Events "SCake_RegisterAnim" and "SCake_RegisterAnimEvent" have been removed to help streamline loading and removed some dependency on Structs (A future version of these functions will be made which allows you to directly create the necessary datamap which will work the same way JSON registration currently does, this allows more features to be utilized with BP anim registering and prevent breakage between versions)
- API Function "SCake_AdjustAnimCamPos" has been removed along with the old camera system (Replaced by freecam)
- Removed old menu and menu control (Menus are now handled by UniPalUI)
- Removed "Game Settings" from SCake's menu since it had no options within (Will return if there's ever anything to add in there)
- Removed cam position saving for animations and removed this param from the adjust profile (May be possible to add back in a new form but with the new free-cam the old system no longer functions)
- "Use Global Cam Adjustment" has been removed (Made invalid by new FreeCam)
- Hard gender switch settings and system completely removed (replaced by dynamic gender spawning system)
Fixed :
- __Create_Load_List__.bat will now properly run in admin mode for all users regardless of your environment set up (while in windows at least)
- __Create_Load_List__.bat now properly checks for the .json extension before adding to the list
- Anim compatibility checker was sometimes checking SexEquips in reverse, making Futa/FullFuta/Andro types not always behave as expected
- The __Create_Load_List__.bat file should now work in file paths with spaces in them
- Debug Input for starting solo target anims should now report errors like other debug functions (should be easier to understand what's happening, the lack of a notification was just an oversight)
- Registration no longer ends early when an AnimJSON used UniqueAnimID or UniqueEventID but included more than one register variable
- Co-op skills should now be disabled during player involved animations
- Andro should now proper register in compatibility for animations and not break the compat settings (was being skipped in the parser and messing up the compatibility map)
- Optimized the JSON parser to save directly to the anim/event object which is a decent speedup
- Minor optimization to JSON parser (new method is being investigated which could both save more memory and be much faster, however implementation is difficult)
- Removed a lot of unused/unnecessary data which should improve memory usage (and potentially performance?)
- Event Register should now properly compare compatibility across all animations and only register with compatible matches
- Minor optimizations to save/load functions (switched some methods around for a theoretical 10-25% speed up with their use, but will most likely have no meaningful impact overall)
- When calling "SCake_GetPalComp" with a valid pal but no associated PalComp exists, one will be created and properly initialized (This is how the internal function already worked but the API wasn't using it, now it is)
- Fixed pals not always being set as persistent when loading from the persist file, causing their stats to reset randomly after a game load (the new load system uses a persist value within the tracker itself now instead of relying on live status read from the game, the original issue was caused when loading a persistent pal's data but it was invalid so it could not check if it should persist)
- Fixed certain NPCs and Pals from events being accidentally marked as persistent (the game does not properly flag all NPCs/Pals which caused strange and hard to debug save bloat, stricter requirements and new manual persist methods work around this issue)
- Added a delay to saving to help reduce potential stutter from saving at the same time as the game does (reduces processing on a single frame and splits it up a bit better)
Altermatic Version 0.4.0 DEV
Note :
- This version comes with the all new detection methods for faster, more performant, and hopefully more reliable detections for swaps! If you notice new issues with these detection methods, please let me know ASAP!
- This version completely changed the internal structure (again) as well as the save system, all previous saves before this version will invalidate and swaps will re-roll as they re-appear
Added :
- When SCake is also installed, Altermatic will attempt to re-roll characters if their Gender is switched through SCake's systems (functions through a dispatcher)
- All new detection system which uses several in-game hooks to try and catch characters the frame they become visible, improving not only the visual experience but potentially performance as well (Still has the old method as a fallback but runs much less frequently which should result in a performance improvement)
- All new save handler system has been added which should speed up save processing by using a custom object with less processing required while saving (stuff is saved into data-maps dynamically then converted into JSON when saving rather than working on validated/invalidated data when saving, should speed up the saving process drastically but is more error prone so requires much more testing/maintenance)
- New menu using UniPalUI which shows the default keybind for re-rolling meshes and contains a new configuration menu
- "InvalidID Attempts" config setting added, this changes how many times Altermatic will try and process an ID that's found but initially invalid
- "Fallback Frequency" config setting added, determines how often Altermatic will use a fallback method for catching exceptions
- "Reload Config JSON" setting to configuration menu which loads the current config JSON
- Added config save JSON file called "_Altermatic_Config.json" which stores global Altermatic settings, this file should be created when editing the configuration settings and exiting the menu (If you edit this externally while the game is running you'll want to enter the menu and select the "Reload Config JSON" option to apply the changes, otherwise any changes you make won't take effect until you reload your save and if you change settings the config file may be overwritten)
Changed :Removed :
- Changed the values for the Best Matching System so that PrefTrait matches now take precedent over no PrefTrait matches and also prevent 'IsRarePal' from being swapped with non-rare pal swaps (Behavior for "Rare" trait is unchanged)
- ReqTrait match is now -25 degrade
- PrefTrait match is now -5 degrade while a non-match remains +5 degrade
- IsRarePal non-match is now -110 degrade
- Rewrote the entire internal structure to use custom objects and expand the use of pointers rather than duplicating data, also required rewriting much of the swap logic as well (this includes a full re-write into the new save handler)
- New save handler is much more aggressive in checking for characters that should persist (Player and Pals) however it is also much more strict in what it considers persistent (This should mean obvious pals that should persist like party summons should persist much more reliably but could also mean some edge cases may not meet the requirements of the new system, please let me know if you find things that should persist but do not!)
- No longer displays a message when SCake is detected (reduces notification spam, will move this info into the menu)
- SkelMeshSwaps without a SkelMeshPath defined will now fail to validate (The null shortcut, "SkelMeshSwap":"", still functions but is highly discouraged as it causes many technical issues, especially with manual swaps)
Fixed :
- Now properly sends notifications through UniPalUI instead of trying to run through SCake (Also fixed a potential crash when a JSON error was detected but SCake was not installed to send the error to the UI)
- Integrations for SCake/UniPalUI now has proper guard-rails to prevent them running when they are not installed and causing errors/crashes (I think the only crash was the one mentioned just above, but now it should be much less likely to happen again)
- Improved randomization for SkelMeshSwap by not relying on shuffle functions and allowing match pairings to search further
- MatReplace should no longer accept null entries
- Fixed certain NPCs and Pals from events being accidentally marked as persistent (the game does not properly flag all NPCs/Pals which caused strange and hard to debug save bloat, stricter requirements and new manual persist methods work around this issue)
- Added a delay to saving to help reduce potential stutter from saving at the same time as the game does (reduces processing on a single frame and splits it up a bit better)
UniPalUI 0.1 DEV
Note :
- This is a revised changelog based on the the last few major revisions since Integrated versions, some details may be missing or vague and all previous changelogs were discarded (UniPalUI went through a near complete re-write, so old logs were irrelevant anyways)
Added :
- Notification System, this displays messages in the top left for a few seconds then disappears on their own, useful for gameplay or debug functions to show information during gameplay
- Mod Menu System and Register, press Shift+Y to open up a new menu on the left side of the screen and show the mouse cursor, can interact with the menu using the mouse, has a universal back/mod selection/exit button, gameplay continues while the menu is open and you can use the middle mouse button to rotate the camera (Some gameplay actions can change controls/menu focus which may lock UniPalUI's function, simply close the menu with Shift+Y to fix)
- Added several menu box types for the menu
- - "Text" BoxType, this generates a text box with interactions
- - "Toggle" BoxType, this generates a toggle box with interactions
- - "Select" BoxType, this generates a box with a left and right selection
- - "Header" BoxType, this generates a text box without any border or interactions
- - "Custom" BoxType, this generates an empty box for inserting your own widgets, has no interaction handling
- Input Handler and Register, UniPalUI now has its own input handler which can register inputs and listen for them, delivering a callback when necessary, the Shift+Y menu inputs use this input handler
- Callback Functions Interface used by mods to receive UniPalUI callbacks, this interface, called "UPI_InterfaceFunctions", is required to receive said callbacks properly
- API System, created several functions for mods to use for interacting with or adding to UniPalUI, check the SDK for more details on each function
- - "PalPlayer"/"PalPlayerController" Variable for convenience
- - "HideUI" Variable which says whether UniPalUI is attempting to hide the base-game's UI (careful toggling this yourself)
- - "UPI_RegisterMod" API Functions, registers a mod with UniPalUI
- - "UPI_RegisterInput" API Function, registers an input with UniPalUI
- - "UPI_SetInputActive" API Function, sets whether the stated input is actively listened for
- - "UPI_EnterInputState" API Function, adds an input state to the top of the stack
- - "UPI_ExitInputState" API Function, removes an input state regardless of position within the stack
- - "UPI_SendNotif" API Function, sends a notification to the Notification System
- - "UPI_OpenMenu" API Function, opens a new mod menu (or enters a new page)
- - "UPI_CloseMenu" API Function, closes the active mod menu (or goes back a page)
- - "UPI_AddMenuOption" API Function, adds a new menu box to the active menu
- - "UPI_UpdateMenuOption" API Function, modifies a menu box with new information
- - "UPI_UpdateDescBox" API Function, sets the text to show in the Description Box
- - "UPI_ResetMenu" API Function, clears the menu and sends an open callback without closing the page/menu
- - "UPI_ExitMenu" API Function, forces UniPalUI to close the menu
- - "UPI_Callback_KeyPressed" Callback, called when a registered input is pressed
- - "UPI_Callback_KeyHold" Callback, called when a registered input is held
- - "UPI_Callback_KeyReleased" Callback, called when a registered input is released
- - "UPI_Callback_MenuOpened" Callback, called when a menu is opened
- - "UPI_Callback_UIHover" Callback, called when a menu box is hovered
- - "UPI_Callback_UI" Callback, called when a menu box receives an interaction
- - "UPI_Callback_MenuClosed" Callback, called when a menu is closed
- - "UPI_SecureCode" Interface Function, called for securing mod details
- - "UPI_MenuGenBox" object added to SDK, this is the reference object for a generated menu box and comes with a list of variables to access
- Added credits section to the mod menu which is currently only accessible manually (will be exposed to the API when system is polished up, currently it requires manual sets which could cause issues if done improperly)
Removed :
- Code for Integrated versions removed and cleaned up for public release, Altermatic users will want to update to 0>4 DEV or newer
Altermatic Version 0.3.1 DEV
Note :
- This is the last update which uses this detection method, keep a back-up even after newer versions are released just in-case something breaks
- Attempted to fix the fomod, however it's been reported that Vortex still doesn't install things correctly with a corrected fomod since the logic for Palworld is custom and doesn't follow a 'root' directory, so whatever X.x
Added :
- Ability to swap just materials in the JSON config with the "MatReplace" param, this is a set array of material changes with "Index" being the index of the material to swap on the model, and "MatPath" which is the path to the Material Instance to swap in with the same format as SkelMeshSwap
Changed :
- Checks have reverted back to being time-based but now with a slightly more complex system to hopefully now fix issues when framerate is too low for the frame-based system to work properly, this change also made checks slightly more frequent to ensure higher framerates will still work correctly as well
- Backend data management has had another upgrade to be more flexible and hopefully faster even with more data stored
- Updated Integrated UniPalUI to 0.0.2 DEV INTEGRATED
Fixed :
- Minor optimizations made through-out (most likely won't be notice-able)
Altermatic Version 0.3 DEV
Notes :
- This update completely changed the internal Data Structure for Altermatic and updated how newly spawned characters are checked, this new system is much more consistent and easier to work with but may have new unforseen issues
- Saves from before this version have been invalidated to prevent save errors persisting in future versions and causing confusion, if you'd still like to carry over your persist save then change the "ALTR_MODversion" param in the Altermatic_Persist file to "3000"
- Attempted to include a fomod for the weirdos still trying to use Vortex, however Vortex has a ton of issues and can break your installation so I don't recommend using it at all (Vortex doesn't install Altermatic correctly by default, no idea if this fomod will help)
Added :
- Integrated UniPalUI for all UI and Input handling (Integrated version is an unreleased alpha)
- Standalone now displays notifications with UniPalUI, simply shows Altermatic is running with the version number
- Input "Shift+O" will now target the looked at character to reroll their current SkelMeshSwap, also added an in-game notification showing the keybind (This function is temporary until a UI system is implemented for this purpose, doesn't currently target summoned pals because of a UI limitation)
Changed
- Checks and 'OnTick' system is now based on framerate to better capture events that happen within specific frame ranges, this also increases the rate at which Altermatic checks validity and swaps meshes which could affect performance (When calculating based on delta some events became inconsistent based on framerate, using frames will make the checks more frequent at higher framerates resulting in higher weight but will hopefully avoiding the inconsistency issues)
- Split up mesh swap and memory clearing/validity checks to run on different frames to help alleviate performance issues such as potential stutter on lower end CPUs (Investigating better async and event based methods for validity)
- Inverted method for storing what should persist, now instead of saying what 'should' persist, Altermatic keeps a list of what 'shouldn't' persist and skips it in the save process (Although this is slightly heavier in the save code it's much lighter in other areas and should be more reliable/easier to work with)
Fixed :
- Should no longer attempt to re-apply meshes every second which caused wild pals (since they have persistence disabled) to randomly switch skins every second if multiple were available
- Fixed the Create_Load_List.bat file not working in file paths with spaces in them
- When paths become invalid (like when a pak updates or is removed) the persist loader will now correctly skip loading that path and re-roll the swap for those characters (was still assigning a path but wasn't aligning with currently loaded mesh paths, meaning it 'could' assign a random SkelMeshSwap and mess things up, if you were affected by this you'll want to delete your persist file)
- Should now properly detect captured Pals and toggle them for persistence while SCake is installed (Was accidentally skipping this step before >.<)
- No longer tries to process an empty save if the save file either isn't found or fails to load from the system
- No longer tries to apply no swap when no matches are found (Just a simple optimization, shouldn't have any gameplay/visual impact)
- Persist save should no longer replicate morph data over multiple entries that shouldn't have morph data (This bug has happened twice now in the save system and it's caused by a UE5.1.1 JSON handling bug which I keep forgetting about >.<)
Altermatic Version 0.2 DEV
Added :
- Altermatic now has persistance through a save JSON system, saves as "Altermatic_Persist[worldID].json" (if you want to reset persistance you can delete this file and everything will reset)
- With the new JSON saves, added internal systems for tracking which pals have changed to which model to enable consistency between loads/sessions/ect, you can delete/modify the JSON save file to reset/change this behavior ('model' being used is tracked by file path, if file paths conflict then this behavior may be inconsistent, if a file path is no longer registered the character's associated model will be reset)
- "ReqTrait" to SkelMeshSwap, defined Trait Names in this arary are required for the swap to apply to the Pal/NPC
- "PrefTrait" to SkelMeshSwap, for each of the defined Trait Names in this array the pal doesn't posess the match quality decreases by 5
- "Disable" to SkelMeshSwap (and future swap types), when setting "Disable":"True" the entry will be skipped (useful for quick testing without clearing data in the JSON, can also be useful for users that don't want to clear JSON data but would like to disable certain skins)
- Passing Null for SkelMeshPath (specifically "SkelMeshPath":"") now counts as a 'do not swap' entry and adds the default model to the random swap pool (In other words, when a SkelMeshPath is specifically excluded, this will add an entry where the current default model/skin is applied, if multiple skins are set up for the same parameters then the default skin is now added to the randomization, if you're using 'naughty' models and need them to have bits I recommend still setting the default path for the swap so it can be more easily removed if undesired in the future)
- __Create_Load_List__.bat will now try to scan .json files for SkelMeshSwap to try and predict if the json config actually contains swap data (this param would be required for any swap data to be in the JSON so this will prevent invalid json files from even attempting to load, future checks for different swap types will be added in the future, unless I forget X.x)
- "MorphTarget" param added for SkelMeshSwap, defined as an array of sets which allows the assignment of Morph Targets on the model
- "Target" is the name of the Morph Target on the model to alter
- "Set" is a hard value to apply (clamps to min/max), if excluded then a random value between Min/Max is applied instead
- "Min" is the lowest value allowed, if excluded then "0.0" is applied
- "Max" is the highest value allowed, if excluded then "1.0" is applied
- "Type" allows either "Free" or "Restrict" to be defined, Free means the value can be anything between Min and Max, Restrict means the value will either be Min or Max, if Type is excluded then Free is applied (Free is useful for body morphs, Restrict is good for feature or Accesory On/Off morphs)
- Non-Persist flagged characters are now also tracked for more advanced features (not really relevant to the average user yet, more just noting some internal changes that allows much more flexibility and could be utilized by external mods in the future, also worth mentioning that because of technical limitations for performance there is a limit and eventually enough matched params will all equate together, though this value shouldn't be reached by normal means)
- Best Match system now allows requirements to improve match quality (added new offset value to keep/allow optimizations while allowing a dynamic 'perfect match' value)
- Added 'Fallback' for SkelMeshSwap Gender parameter to allow better compatibility with and without SCake installed, now Gender is allowed to not match but with a degraded match quality under specific conditions (Should only apply mis-matched genders if no gender matching swap is found)
Changed :
- In SkelMeshSwap, increased Match Quality penalty when not matching to Rare Pal by 4 times (5 > 20)
- The "Best Match" system now accounts for met requirements such as ReqTrait, ReqTrait improves match quality so meeting multiple requirements will result in a higher match quality at this comparison step (Note that other factors could still increase the Match Quality so just because a swap matches multiple requirements doesn't mean it will always be selected)
Fixed :
- SkelMeshSwap should now properly apply to NPCs that are not Pals (When testing I had enabled a check for pals only and forgot to disable this check before release, sorry!)
- SkelMeshPath will now check for full reference paths and assume they are correct without trying to add the reference script values (as in, paths that start with " /Script/Engine.SkeletalMesh' " will be assumed as already formatted correctly for loading in-game and no additional formatting will be applied, this change is technically an add, but given it fixes undesired behavior I'm classifying it as a fix)
- __Create_Load_List__.bat will now properly run in admin mode for all users regardless of your environment set up (while in windows at least)
- __Create_Load_List__.bat now properly checks for the .json extension before adding to the list
- Captured pals/NPCs should now be flagged to Persist, preventing pals switching models after being captured then summoned
- Pal/NPC validity is now checked before saving to prevent unexpected behavior in save output
- Optimized Best Match / Random selection system to fail quicker when comparing matches so less data is processed per compare