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!
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
(Note : This version temporarily removes the Animation Montage validation when registering animations. If you're making anim packs, ensure the animations play properly in-game before releasing your pack if possible.)
Added : Whether Sexual Heat is rising or lowering is now recorded by the save file (was just defaulting to always increase)
Added : API Function "SCake_StartAnimEvent" which gives access to all animation options at once with defaults (Passing no EventID will scan for a random animation to play, similar to other start anim functions)
Added : API Function "SCake_ValidForAnim" which checks if a character is valid to start an Animation Event (I'm transitioning validity checks into these kinds of functions for more general use and reduce redundancy)
Added : API Function "SCake_GetCompatEvents" which returns the EventID for compatible animations for the passed params
Added : FaceExpress and FaceExpressClimax to JSON for animations while allows setting the facial expression for while the animation is playing and for orgasms respectively (check the templates for possible settings)
Added : A hidden setting "Set_ReportRegFails" was added to the SaveSystem file, switch this to true and a long string will be sent to the report output covering all failed Anim/Event Register returns, may be useful if animations fail to register and you need to debug which failed (Note : The parser wasn't designed with these returns in mind so it may not always return useful data, to enable you must edit the SaveSystem JSON for the save you are testing on)
Added : Compatibility checker now checks the Size parameter registered with Animation Events
Added : "Excluded Tags" is now functional when starting animations through the API
Added : "Preference Settings" submenu to SCake's main menu (Note : Most preference settings will be checked with the compatibility checker, if a mod starts anims while bypassing compatibility checks these may not function as intended)
Added : "Block Female Only Anims" to Preference Settings, attempts to block/invalidate anims with 'Female on Female' intentions
Added : "Block Male Penetrated Anims" to Preference Settings, attempts to block/invalidate anims with 'Male on Male' intentions
Added : "Block Straight Anims" to Preference Settings, attempts to block/invalidate anims with 'Male on Female' or 'Female on Male' intentions (This also blocks all futa animations if futa flags are set)
Added : SCake's UI now supports menu pages, can navigate between pages through a defined count
Added : Animations should now fail to start with characters that are knocked out/dead (Technically a fix for characters partially reviving when triggering SCake animations as well)
Added : Animations will now fail to start with characters that are in a sleeping state (Technically also a fix for sleep animation issues, if you want to start animations with sleeping characters try waking them up first)
Added : Animations now end when a character involved takes damage
Added : SCake now has the ability to assign arbitrary genders separate from the game's assignment, only used when specifically checking gender through SCake
Added : "Change Gender Assignments" to the Preference Settings which 'should' list all possible CharacterIDs and allows manual assignment of SCake genders, which should save into the SaveSystem JSON file. (Note : All 'human' characters share the same ID within SCake, which includes the player as human)
Added : "Game Settings" submenu to SCake's Main Menu which covers Palworld native settings
Added : "Auto Save Frequency" to the Game Settings menu which alter's the in-game auto save frequency (In effect also changes SCake's auto save frequency since SCake saves alongside the game's normal save)
Added : When animations switch during playback (like when switching stages) compatibility will be re-checked and slots re-assigned (allows dynamic Animation Event switching and arbitrary animation playback, as well as fixes slots not aligning properly through events)
Added : Human NPCs (well, non-pals at least) now show their BP_Class when their name is displayed for easier finding/editing in SCake's settings (This change will most likely be temporary until better solutions are found, most notable place this shows up is in the control animation menu)
Added : If no facial expression is set for an animation, default behavior will now take over with 'HalfClose' defaulting for animation playback and "Close" defaulting for orgasms
Added : The Animation Control menu now shows the currently playing animation event
Added : Placed an example LoadList in the AnimJSON folder, "_LoadList_Example.json" which shows how to build the load list and includes all currently known released anim packs
Changed : SCake now loads animations synchronysly instead of async like before, this will cause the loading screen to stall and take a bit longer. (Discovered some odities and people kept complaining about the async loading, so we're just going to do it all in a single frame for now)
Changed : SCake's default loading method for spawning the "ProjectSugarCake" actor (Using a new Subsystem Injection method which should have SCake load sooner than before but also load more reliably in multiplayer by bypassing UE4SS's injection method, UE4SS is still required and the old method is used as a fallback should subsystem injection fail)
Changed : Sexual Heat is now gained during Erotic Animations independant of natural Sexual Heat gain, this rate is x25 stronger than natural generation and stacks
Changed : Moved validity checks outside of the Animation Player so it runs before an animation even tries to start (this is an optimization, if you bypass the API and try to start an animation directly from the EventComp, it may now fail to start/play correctly, if there's a valid reason not to use the API ensure you are validating everything is compatible beforehand)
Changed : "Valid For Animation" checks and systems overhauled for better modularity and additions (should also perform faster in situations where multiple compatibility checks must take place within reasonable actor limits, however large numbers of actors (more than 4) in a single scene may perform worse in some situations but will not suffer from random failures)
Changed : Character arrays passed for animation playback should now act in a deterministic way (Compatibility is now done in a non-random way, previously while the functions were linear in comparing compatibility they were passed as TMaps, which do not resolve into a deterministic array meaning outcomes where seemingly random, the Pal Character Array is now passed directly and not altered through-out the process.)
Changed : "Settings" are now "System Settings" to help differenciate between other new settings menus
Changed : Animation List and Animation Event List in the menu now divides into pages with 20 entries per-page (Should be much easier to navigate, note the page sorting is not consistent because of how UE5 handles hashing)
Changed : In instances where the game doesn't assign a gender, 'Male' will now be used by default (Only affects like, 2 human NPCs at the time of writing, felt this was the best option to make compatibility settings work closer to expectation but may still cause some strangeness. More advanced methods/exceptions will need to be implemented in the future.)
Changed/Fixed : Minor UI related things (spacing, readability, typo fixes, ect)
Changed/Fixed : While in an Erotic Animation, characters who orgasm will now continue decreasing in Sex Heat and no longer gain the increase for being in the animation itself until reaching zero or triggering an increase in Sex Heat from another source to trigger Sex Heat back into a rising state.
Removed (Techincally?) : Removed multiplier to Natural Sexual Heat generated while in Erotic Animations (Was technically broken in 0.2.1 since I had incomplete changes left in there)
Removed : API Function "SCake_StartAnimEvent_Advanced" is no longer available, use the new "SCake_StartAnimEvent" API Function which includes all the same variables and more
Removed : Register no longer validates if Animation Montage paths are valid (This validation step will become a debug option in the future, the current validator causes some issues for some players and extends loading time as it calls the Asset Registry, no idea why)
Removed : Characters no longer play the "Happy" action after anims (This also added SAN and affected AI behavior, may replace with a more dynamic system)
Fixed : Sexual Heat triggering a decrease when values were too close to 0.0 (Float percision error I didn't account for, now fixed)
Fixed : Natural Sexual Heat progression should now properly increase instead of constantly causing a decrease. (was caused by float percision error)
Fixed : "Valid For Animation" checks should no longer suffer from sporadic behavior/failures when comparing actor counts above 3
Fixed : After checking the Animation Event List, closing the menu without backing out first, then entering a player involved animation should no longer get the description box stuck on-screen with the details of the last viewed Event item
Fixed : Animation Events should now properly cull duplicate tags (worked before, but some variable changes broke the function somehow)
Fixed : Player should no longer have duplicate references within the tracker, fixing a number of issues (May not be fixed for mulitplayer, was caused by extra IDs being coded to point toward players when loading a game, current fix makes an exception and ignores these IDs)
Fixed : Aroused morph for the player should no longer act unpredictibly or 'flicker' (caused by duplicate reference fix)
Fixed : "SCake_ED_PalAroused" will now only call if a character went from not aroused to aroused as intended (Was calling any time Sex Heat changed before)
Fixed : Sex Heat getting stuck increasing after a character had been in an Erotic Animation
Fixed : The animation player now calculates its on-tick/per-frame functions after physics have applied, preventing a couple of issues (Fixes some odd positional flicker when playing at high framerates, fixes expressions not always applying correctly, fixes some logic interfering with other functions which tick during physics)
Fixed : CharacterID should no longer parse incorrectly within SCake's logic code fixing strange inconsistencies and lucky/alpha pal compatibility (For example, 'JetDragon' should not register as compatible with other other IDs that end with 'Dragon')
Fixed : Automatic compatibiltiy checker for CharacterIDs should now work for Lucky/Boss/Variants properly (Fixed with internal CharacterID processing fix)
Fixed : SCake should no longer run as if it's in-game when entering a game then heading back to the title screen (implemented a better title screen detection method)
Fixed : Animation Events now correct slots while switching animations/stages so Events that don't have slots aligned through-out should now correct themselves during playback (as-in, if slot 1 switches to slot 0 from stage 1-2, the animation should correct itself rather than breaking or stopping the animation)
Fixed : Animation Events not starting with proper offsets configured on an animation's start (was only applying offsets after the first stage had started, should now load properly on the first stage as well)
Fixed : Animation Player should now properly track how many characters have orgasmed and how many times
Fixed : Expressions not applying to all characters in an animation at all times, also fixed expressions applying too rapidly causing some strangeness (Most notice-able on the player if their expression was forcefully changed)
Fixed : Animation Player calculating character positions multiple times per-frame
Fixed : Animation Player causing some AI weirdness (SCake's Action Override had some flags set that could change AI behavior in some rare cases)
Succubus Heart 5.3.7 DEV
- Added : "Drain Affects NPCs" now has a "Hostile Only" option that attempts to only drain hostile NPCs (Based on relationship rank so may not catch all attacking NPCs if they are not normally hostile, such as a friendly NPC you attack in combat on accident >.>)
- Added : "Allow Drain to Kill" now has a selection similar to "Drain Affects NPCs" with Never/Always/Non-Allies/Hostile Only
- Added : More decorations to the Succubus Realm
- Changed : Lusting from NPCs now takes twice as long to trigger on average, also takes longer after declining a lustful interaction (saying decline in the message that pops up)
- Changed : "Always Drain Kill" now respects "Drain Affects NPCs" and "Allow Drain to Kill" setting, making it only skip the health check
- Changed : Sexual Fluids in the Succubus Realm will now spawn as the new versions (Note : In existing saves this may take a few in-game days to happen depending how the game decides to respawn the items)
- =Fixed : OStim not registering for events properly if SexLab was also enabled (missed an elseif change when re-writing the framework switching stuffs)
- =Fixed : OStim NPC End with player involved accidentally skipping the 'first' NPC in the act (This indirectly fixes issues such as drain kill failing, "Prevent Death in Acts" getting stuck, and other effects.)
- Fixed : Drain Kill should no longer fail if the NPC has health buffs that prevent them from falling below the threshold
- Fixed : While using DOM, returning to the Succubus Realm now tries to stop combat to prevent getting stuck without being able to teleport.
- Fixed : Version regression error message not displaying
- Fixed : Drain Kill no longer triggers on Essentual and Protected flagged characters (prevents Drain Kill farming on characters that can't die)