- I've removed this. Reason is in this post: http://www.gamesas.com/topic/1362474-compatibility-with-other-mods-tips/page__view__findpost__p__20568706
Do not change the origrinal Script files.SpoilerSome work-arounds:- Find ways to interact with it from your own separate Quest Script.
E.g. in my Vampirism Tweaks mod, I wanted the player to heal Health, Stamina and Magicka when they feed.
So, instead of changing the PlayerVampireQuestScript, I created my own Quest script that monitored the "Necks Bitten" stat. - Extend it. Then detach the original Script from its parent and attach yours. Remember to populate the Properties of your Script with the value of the original Script.E.g.:
ScriptName kuerteePlayerVampireQuestScript extends PlayerVampireQuestScript Conditional
When you do this, your Script extension takes on all the original Script's Properties and Functions.
So, any Script that changes the original's Properties and calls the original's Functions will also be called on yours.
- Find ways to interact with it from your own separate Quest Script.
- Do not enable what your mod didn't disable. Indirectly, track what you disabled so that you know which to renable.
What this means is easiely explained with an example.
For e.g. another mod disables player controls. But you need it disabled, too. So you do. Then you enable it. But since the other mod still needs it disabled, you've broken it because you've renabled it.SpoilerSolution:- check if the controls have been disabled already.
- If not, disable it and set a variable so that you know your mod disabled it.
- When you need it renabled again, check that flag and enable if that flag was set.
- check if the controls have been disabled already.
- ModActorValue: keep track of the value of your modification. And restore only that value when you need it restored. Give your user a way to restore your changes with an uninstall process. Usually, this is a Quest that they have to run separately via the console or a menu-sequence-control that you build.SpoilerThis was a problem in the early days of Oblivion gameplay Script mods. I really don't want to see this here in Skyrim.
- If two mods affect/apply ModActorValue to the same ActorValue, and one or both do not keep track of their own values and instead uses (GetBaseActorValue () - GetActorValue ()) as an indication of the changes to the ActorValue, one or both mods have corrupted the player's Stat.
- Alternative: Use Abilities. You won't get the same incremental control of modifications but it is a lot safer. And it offers a way for the user to see the changes in their Magic Effects list.
- If two mods affect/apply ModActorValue to the same ActorValue, and one or both do not keep track of their own values and instead uses (GetBaseActorValue () - GetActorValue ()) as an indication of the changes to the ActorValue, one or both mods have corrupted the player's Stat.
They are the three most important factors that I apply in all my mods. Do you use any others?
Replies from others. Click on them to view the actual posts for more info about them.
1. Aliases get priority in the packages system
2. Almost everything on an NPC is reset once a Quest has finished with the Alias.
Ex
EXP_TIF__FORMID.psc/pex
You can have up to four characters in your prefix
Also if you need to edit vanilla dialogue "rename" it, the Creation Kit will automatically make a new script with the new name and keep the old intact.
I learned a lot of useful practices while experimenting, the main one I learned the hard way was not to edit vanilla scripts even if you're changing a feature to do with them directly. You run into a lot of headaches with scripts running when they aren't suppose to, runtime errors mostly. Extending scripts should be a more common practice but unfortunately it is not, I'd guess its because its a more advanced concept for beginners. The plugin determines what script to load, if you edit a vanilla script and add or remove properties, if you disable your plugin but keep the loose scripts your going to encounter plenty of runtime errors....
ARTH_TIF__0200C74D.psc is nowhere near as obvious as ARTH_TIF_LALNewStart_0200C74D.psc for example. Having two of your own mods with 0200C74D as a form ID, you can probably guess where this would go if this clarification is not made while renaming the script.
Keywords can be used to track a lot of things, for ex :
-to track what kind of spell added by other mods are affecting actors.
-to track if the player is eating something added by other mods
-to track if the player is equipping a specific armor part added by other mods
-> about that, some keywords corresponding to armor slots :
Head : ClothingHead or ArmorHelmet
Body : ClothingBody or ArmorCuirass
Hands: ClothingHands or ArmorGauntlets
Feet : ClothingFeet or ArmorBoots
*Unlike Beth, if your create an armor that covers several slots, be careful to add each keyword for each slot that is covered by the armor (Beth have forgotten to add a head keyword to all robes that cover body and head for ex).
-Etc...
It seems that only abilities that change actor values (with a Value or a Peak Value modifier) are still affecting players values if a mod is disabled before an unstallation process !
If it's correct (and it seems to be), we should never use abilities to change actor values, but regular spells.
-> In my mod project I was using constant abilities to mod HealRateMult, MagickaRateMult, and StaminaRateMult. If I was disabling my mod before a scripted uninstallation process these modified values were still affecting the player.
I've just tried to replace these abilities by regular spells (wich have the exact same custom MagicEffects), and now if I disable my mod without any uninstallation process to dispel these MagicEffects -> the modified values of my mod no longer affect the player

*Don't forget to check the "Recover" flag in your custom magic effect tab.
*Note that even if you can select "constant" type for a regular spell (with constant ME), you must set a duration for each ME of the spell !
But just set a very long duration, for ex of 5000 days, and it's really like the spell was constant. You can even recast the spell by a conditioned script inside the magic effect or from another script to be sure that the spell will always be there if it's necessary.
*If you want to avoid the IG magic effects menu to display this very long duration : simply create a fake ability which will be cast with the real spell to display it in the menu, then simply hide all magic effects of the real spell by checking the "Hide in ui" flag in the magic effect tab.
I've just done some tests, and it seems to work, but please don't hesitate to test by yourself and to give feedback here ! Imo, this kind of game mechanism seems very important to understand for the modding community.
I've done some tests with these actor values : DestructionPowerMod, RestorationPowerMod, MarksManMod, OneHandedMod, TwoHandedMod, SpeedMult, HealRateMult, MagickaRateMult, and StaminaRateMult. It's working for all these values.
-> I've also tested with constant diseases, and it's working as regular duration spells : actor values wont be anymore affected if a mod is disabled without an uninstallation process. But be careful cause diseases will be dispeled by altars or potions.
*I'm only working with custom magic effects, so idk if it's working the same way with vanilla magic effects.
See you.
PS : sry for my none really fluent english, but I try to do my best ^^'
Simply add a condition to each MagicEffect of an ability (with a custom globalValue for ex), and the problem is gone. When you'll desactivate your mod, global will be reseted, so each MagicEffect will be dispelled, and ActorValues will be restored.
Thanks to Gérauld for finding that =)
In brief to ModAV by spells :
-Use an ability with MagicEffect conditioned by a custom var which will be reseted if your mod is disabled.
-Regular duration spells, and constant diseases are not concerned by this problem : any modified AV will be restored if your mod is disabled.

