Tag Archives: Npc

New Release Scripted Argonian Feet v0.4 beta

Controlling clothing equipment and exchange on NPCs through scripts running on magic effects from the Resist Poison Argonian Racial Ability always seemed to me to be a bit unreliable. It seems the script effect wasn’t always running continuously on them, so I experienced some Argonians with human clothing items at some really rare but still noticeable times. It was time for a new approach and I gave the idea of “tokens” a try, simply some (preferably unnoticeable) inventory items having scripts running on them, thus practically controlling the NPC that wears those, with remarkable results in the end. Object Scripts in Oblivion seem to be way more reliable and stable than Spell Scripts for Abilities, at least I haven’t experienced one single weird occurance anymore since I improved my scripts.

The Argonian Racial Ability Resist Poison is still used, but only to provide those tokens now to all Argonian NPCs, which only has to happen once. This way now the NPC or Player Character also doesn’t have to be exactly of the vanilla race “Argonian” anymore (as it was the case previously) for my scripts to take control. The only necessity now is that the Argonian Racial Ability Resist Poison is affecting the NPC’s or player’s race, and this particular ability mustn’t be altered by another mod, or this will remove my scripts providing the tokens in the first place from it. Technically even any custom race is fine now, as long as it has the specific Argonian Racial Ability.

Due to Object Scripts never ceasing to run, even corpses are now still controlled, thus you can’t strip dead NPCs down to showing human body parts anymore either. My scripts are now technically “waiting” for a body slot to get changed (an item equipped or unequipped) before any further action is taking place, which again improved performance drastically, were they previously checking all body slots continuously over and over again each frame. For convenience there’s also a delay of 10 frames before any further checks take place, so they don’t even check for this each frame but only each 10th frame. The exact value of frames to skip can be changed via console ingame (“set ABraceQuest.framesToSkip to X“, X being the number of frames you want them to wait).

Also they aren’t altering “base items” anymore, but create new ones with adapted meshes instead, copying about all stats and properties from the originals. There will be no more Argonian items seen worn by Non-Argonians just because of “bad timing” anymore! To keep track of already adapted items and not to create new base items again each time, which shouts for savegame-bloating, I now use Pluggy Arrays to store once adapted items in and regularly check for existance before adding new items to them. Thus it became necessary to have a recent release of the OBSE plugin “Elys Pluggy” installed and running for my scripts to work. Failure to do so or an insufficient version of OBSE should now raise an alarm by my Quest Script the first time you play a game after installing my latest release and result in my scripts immediately terminating!

Another important point is, any release of OBSE prior to the recently released v0015a bugfix will, when used by my scripts, lead to an inevitable and guaranteed CTD, when equipping an item without a designated female NIF file! (A few random items, mainly custom modded content, intended for male only, fail to have designated meshes for both genders) So I highly recommend upgrading if it hasn’t happened already, though my scripts will still “accept” previous releases for convenience’s sake. Also I took special care to catch any such cases in my scripts and make them basically work exactly like the game engine itself, using male meshes if there are no female meshes present, not running into a script-breaking condition. Unfortunately, as I was told, there’s no way to check for this condition without triggering such a CTD the same time. But as long as you have a recent OBSE release v0015a or later, it will be totally fine for items to not have meshes for both genders assigned now. My scripts are guaranteed work-safe regarding this issue.

Due to base items possibly still altered by a previous version of my mod I highly recommend deactivating it first and saving, so all possibly altered base items will hopefully get reverted back to normal, before installing and running my latest release!

download from TES Nexus
download from Planet Elder Scrolls
as usual as an alternative download file alongside Argonian Beautification

WIP new scripts and more adapted clothing

I soon realized my scripts released previously only exchange the meshes with the version fitting the Argonian Feet when equipped by an Argonian, but will never revert them back to normal, e.g. if they are taken away from the Argonian and given to another NPC or the player. Fixing this though was really easy and is already implemented and working and will be included in the next release.

I also adapted the Arena Raiment, as it is a very important armor and can’t stay an item forbidden to equip, which will be automatically force-unequipped as soon as you try to equip it.
Female Light Arena RaimentFemale Light Arena Raiment feet close-up
And again I really like the results.

But working with the raiment I realized another very annoying fault of my scripts, which I unfortunately can’t fix currently as it originates from an engine glitch of Oblivion, so they might not work as expected for items having a script running on them.

Technical details:
Due to an engine glitch the script command “EquipItem” doesn’t trigger an “OnEquip” block in a script running on the item that gets force-equipped. The Arena Raiment uses such a script to set a flag if it is worn or not to allow entering the arena or not. Unfortunately now the script command “UnequipItem” in fact does trigger an “OnUnequip” block in a script on the item that gets force-unequipped. So when you equip the Arena Raiment, its script sets the flag to 1 (allowing you to enter the arena), then my script kicks in and force-unequips it (because it’s not a mesh fitting the Argonian Feet) and the flag is set to 0 (normal behavior up to here as expected), it replaces the mesh to be loaded to one fitting the feet and afterwards re-equips it. Now the flag doesn’t get set to 1 again as expected due to the engine glitch mentioned, which eternally prevents you from entering the arena.

There are some possible workarounds for this and one of them will be included in the next release, but only affecting the Arena Raiment for now, because I will only change the script running on it into something working more fail-safe and reliable. Later after I implemented a “global” workaround I have in mind already this will no longer be neccessary nor needed anyways.