https://www.patreon.com/posts/how-to-unlock-38446873

This tutorial will teach you how to unlock general interactions that are normally hidden for your average sim. The first thing you want to do is track down the interaction you need and add it to your package. You then need to give it a new instance, tuning ID, and name, which you can learn how to do in my other tutorial if you don’t know how. If you only want to override the interaction, then just leave the instance, etc. the same. Then, you need to scroll towards the bottom until you reach <L n="test_globals"> which is where (majority of) the tests that block or allow interactions are located at. You need to read through this section to find the test that is blocking the interaction from appearing on regular sims. Note that sometimes there is no test and is being blocked because it’s a trait, buff, etc. only interaction. For my first example interaction I am doing Ghost_Possess, and the test that is blocking it is this testset.

Method 1 Now normally you just remove the test altogether to unlock it for everybody, however, if you need it only unlocked for certain sims then you need to add in your own test. Depending on which sims need it and why alters how you add the tests. If a sim is using it for a certain trait or buff, you need to add a whitelist list and add the trait or buff to it. Or, you can create your own testset and list a bunch of requirements inside of it. There are several options to choose from, you just need to figure out which is best for your mod. For my mod, I made a new testset and added my trait to it for easy replacement.

The next step is to either add my newly unlocked interaction to sims, buffs, or traits. Since Ghost_Possess is an object super affordance and needs to be added to the same objects the original appeared on, I need to inject with XML Injector or write my own script. Below is an example of adding it to the XML Injector. Also, please note that some interactions and their animations, like Ghost Possess, can break upon unlocking them. This is very rare though, but if it happens you need a script to fix it.

Method 2 Sometimes you get tests that you want to keep and alter the settings of so it works in your favor. For this example I’ll be using Gardening_Water_with_Tears, and I want to make it available for the cowplant. The test I am looking for is this one:

Notice how it says NOTEQUAL which is blocking the interaction from appearing. What we want to do is remove the NOT so it now only says EQUAL. This will make the new interaction only appear on full grown cowplants.

To make sure it doesn’t appear on the dead version of the cowplant though, I have to add in a new test to check for the dead state. When cowplants are dead they have the hunger state “Hunger_4_Withered”, and I need to make a new test like this using that state and set it to NOTEQUAL. And now that I’m done, I add the new interaction to my list of object Super Affordances.

Method 3 And then sometimes you get interactions locked behind a trait or buff. It’s very simple to unlock it. All you do is rename/make a new instance for your interaction, remove any tests that would block it from appearing on your sim, maybe add a test, and then add it to your sim. That could be either in your own buff or trait, or it could be by injecting with XML Injector.