[WIPz/RELz] Drake's Anthro-Dragon Race (#5)

Post » Wed Mar 09, 2011 8:11 am

http://www.gamesas.com/index.php?showtopic=1056082

(Reaching post limit the 5th time now already... this must be a very attractive project. Either this or I'm just talking too much.)

The latest test-release, for playing around or help with bug-tracking, of the mod would be the semi-official v0.0.7 pre-beta, still, due to me still not having a working pc at hand to go on with modding full-scale.

http://www.megaupload.com/?d=K1EKLHQH

Now also available at TES Nexus on a special pre-beta releases page:
http://www.tesnexus.com/downloads/file.php?id=30094

requires http://obse.silverlock.org/
Unfortunately the latest OBSE (beta 5) isn't yet linked on their site. The link can only be found on every 1st page of an OBSE thread here.
http://obse.silverlock.org/beta/obse_1_2_416_dll_beta_5.zip
As it again fixed some bugs from beta 4, I suggest using this now. However, I can't even tell if I was using it already, but I strongly guess so, as I'm always up-to-date in regards of OBSE.
A Script Effect Silencer could also come in handy, to get rid of these regular or random thumping sounds and maybe even visual anomalies like purple clouds or something.
For example http://www.tesnexus.com/downloads/file.php?id=15677.
male meshes/textures made to fit Robert's V4 (muscular)
female meshes/textures fitting TFF
(due to the nature of my scripting approach though using different bodies in general won't cause issues when all slots are under control of my scripts and fitting equipment is enforced)

For the lowerbody meshes there are quite some alternatives. Parallel to Robert's body mod there are several different underwear variants plus a mammalian and a reptilian nvde version.
All files can be found inside the folder "meshes/characters/DrakeDragon/male". For females likewise.
The names should be self-explanatory, but if you possess NifSkope, you can even open them and take a look inside to select which one you prefer.
DragonLegs_pants1_dcpart.nif
DragonLegs_pants2_dcpart.nif
DragonLegs_pants4_dcpart.nif
DragonLegs_pants5_dcpart.nif
DragonLegs_nvde-mammalian_dcpart.nif
DragonLegs_nvde-reptilian_dcpart.nif

Whichever one you prefer you simply have to create a copy of it and rename it into "DragonLegs_dcpart.nif" (that's the one the game will use).

There was an issue reported with the new foot wraps not being rigged properly. This is because I didn't have time to check it at all but just rescued everything "as it was" from my drive before cleaning it.
The following resource pack will remedy this as well of course.

Well, here is the complete package of Cloth Wraps, in all possible slot-combinations with all corresponding human-dragon-hybrid adaptations
(ranging from full-human to full-dragon, making it an actual "resource" with applicability far beyond that little race of mine)
.
I actually wanted to do this for quite some time already, but as you can imagine I previously didn't get the opportunity to start it.

http://www.megaupload.com/?d=FJ5GEKY6

You won't need my plugin to use these, but due to me being unable to create plugins currently and the nature of this resource release you will need to put them into the game as actual clothing (or armor, if you prefer) yourself.

Latest pictures (some of them might be a bit outdated mesh-wise already)

http://img154.imageshack.us/img154/3707/dragontextures.jpg (latest state textures)
http://img12.imageshack.us/img12/1764/tfforiginal.jpg (latest state textures)
http://img4.imageshack.us/img4/7746/tffblack.jpg (latest state textures)
http://img4.imageshack.us/img4/5310/tffredgold.jpg (latest state textures)
http://img188.imageshack.us/img188/7079/newdragonwings1.jpg (latest state meshes)
http://img43.imageshack.us/img43/1875/newdragonwings2.jpg (latest state meshes)
http://img44.imageshack.us/img44/651/newdragonwings3.jpg (latest state meshes)
http://img44.imageshack.us/img44/5043/newdragonwings4.jpg (latest state meshes)
http://img17.imageshack.us/img17/4858/lessglossynormalmaps.jpg (latest state textures and meshes)

This is what you get right now.

Now here is what you don't get yet. All released now apart from animations.

http://img705.imageshack.us/img705/3568/improvedwings1.jpg,
http://img189.imageshack.us/img189/8449/improvedwings2.jpg

I shortened the phalanges, elongated the 2 outermost fingers, rectified the curving of the membrane's borders between the tips, and also altered the rigging pose a little by bending the wing arms one more unit. It actually increased the wing span yet again, so I think any bigger than this now won't ever happen. Anyways, I really like this result. Even those questionable forward membranes seem to look way better now, somehow "fitting in" finally without disturbing the overall shape.

This is Drake's new look, not necessarily a replacement for the red-gold theme.
The body is now (in my eyes) sufficiently armored with sturdy scales at exposed areas (which was horribly lacking before).
The whole area around the chest was completely redone from scratch and this plated chestpiece turned out way better than the last one.
I think I went a bit overboard with the sharpen-filter though.
I'm really surprised with how great my first attempt at veined membrane textures turned out, but judge for yourself:

http://img189.imageshack.us/img189/8312/newscalytexturesandwing.jpg (mind the new plates on the chest),
http://img269.imageshack.us/img269/8312/newscalytexturesandwing.jpg (mind the faint see-through effect, the tail shimmering through),
http://img29.imageshack.us/img29/8312/newscalytexturesandwing.jpg (slight shadows of the hands this time),
http://img716.imageshack.us/img716/8312/newscalytexturesandwing.jpg (full view of the new wing-anatomy, mind the improved phalanges)

Now the veins in the membranes are less prominent, more like "underneath" the skin.
I added another layer of flesh, giving the membranes a much more fleshy structure.
And while I was at it I also reduced the transparency further, as it was far too clear for my taste previously.
It's just getting better and better me thinks.

http://img9.imageshack.us/img9/8312/newscalytexturesandwing.jpg,
http://img189.imageshack.us/img189/3475/newscalytexturesandwingk.jpg
I also like it how the original "golden"-coloured areas returned once the transparency vanished.

Due to Drake being quite a young dragon still, almost a child, always walking on his hindlegs, like the others of his kind prefer to do to better blend in with human society, gets quite taxing after some time. This and him and the others having been forced to retreat into their ancestors' caves ages ago makes him prefer walking on all fours (feral-style) when not too close to humans, or anyways when he's quite exhausted.
This made me start trying to create some feral-style movement animations a while ago and my attempts at creating these 4-legged animations are turning out to yield quite fine results.
As I can't use Fraps on the netbook for capturing videos of them in NifSkope (it reduced the whole animation from 24 to just 2 frames, the first of each leg's motion cycle, which obviously doesn't make it a "movement" anymore... talking about how slow that thing is...), I just used Blender to render a full animation cycle instead and created Animated GIFs from that. They're round about 1.5 megs each, so be patient when opening them.

http://img109.imageshack.us/img109/4628/runfwdanimback.gif (the most interesting point of view in my eyes),
http://img695.imageshack.us/img695/6362/runfwdanimside.gif (giving the best view of the legs' movement),
http://img44.imageshack.us/img44/9518/runfwdanimfront.gif (looking cool already?),
http://img403.imageshack.us/img403/7369/runfwdanimtop.gif (mind the fluid bending of the spine with each step)

Next I made it a walk now. Looks actually far better than last time, better than I expected.

http://img7.imageshack.us/img7/9881/walkfwdanimround.gif (give it some time to load)

Don't mind the camera going round in a crazy circle. This is just me experimenting with just another play-thing I found during the process, animating camera movement as well and a moving lightsource creating some nice highlights occasionally. Hope you won't get sick by watching... and you can see the animation that is. :facepalm:

Oh and if anybody's wondering, these are Drake's new personal textures, many smaller high-detail unresized elements, like scales etc., added to bring back the sharpness even the sharpen tool could not restore. I'll never again use double-sized resources as a basis for my textures. It just gets way too blurry right from the start this way.

Due to me altering the wings' geometry that drastically all available dragon races will need new wing-membrane textures at least as soon as I release the new meshes and the skeletons going along with these.
Now I think I'm finally done with this little task, so here are the results:
http://img9.imageshack.us/img9/8312/newscalytexturesandwing.jpg (I posted this already but here it is again for direct comparison),
http://img191.imageshack.us/img191/5721/originaldragonnewwings.jpg,
http://img191.imageshack.us/img191/8215/blackdragonnewwings.jpg

lordsoulstrike, I hope you don't mind, but I took the liberty to create some fitting ones for all your fine retextures I could find as well:
http://img211.imageshack.us/img211/4813/blackreddragonretexneww.jpg (black membranes),
http://img130.imageshack.us/img130/4813/blackreddragonretexneww.jpg (dark-red membranes from black dragon),
http://img80.imageshack.us/img80/4813/blackreddragonretexneww.jpg (original-color membranes like you did in your release),
http://img62.imageshack.us/img62/9494/icedragonretexnewwings.jpg (the most-sophisticated work of all of them),
http://img211.imageshack.us/img211/5273/albinodragonretexnewwin.jpg (was hard to hit the right tone)

Those will all be included in the next upcoming resource release/update. I hope you like them and they're fitting in Your eyes as well.

Now while I was at it I also gave all existing texture variants a quick work-over to create matching counterparts to Drake's brand new textures, the "red-gold scaly" variant. Thus I actually created a complete second branch of new scaly textures.

http://img503.imageshack.us/img503/1576/redgolddragonscaly1.jpg,
http://img33.imageshack.us/img33/9025/redgolddragonscaly2.jpg,
http://img94.imageshack.us/img94/748/originaldragonscaly1.jpg,
http://img94.imageshack.us/img94/4360/originaldragonscaly2.jpg,
http://img33.imageshack.us/img33/3428/blackdragonscaly1.jpg,
http://img39.imageshack.us/img39/2758/blackdragonscaly2.jpg,

http://img684.imageshack.us/img684/8305/blackreddragonretexscal.jpg,
http://img30.imageshack.us/img30/8305/blackreddragonretexscal.jpg,
http://img62.imageshack.us/img62/4097/icedragonretexscaly1.jpg,
http://img30.imageshack.us/img30/7149/icedragonretexscaly2.jpg,
http://img269.imageshack.us/img269/9398/albinodragonretexscaly1.jpg,
http://img15.imageshack.us/img15/2347/albinodragonretexscaly2.jpg

This makes 12 variants overall already.

And now here's another resource release:
http://www.megaupload.com/?d=6N12E2K4

It contains the new and improved wing meshes, all wing membrane textures I did, plus the scaly textures for male and female I created.
Attention: the scaly textures are contained in a seperate folder inside "textures/characters". I conveniently named it "DrakeDragonScaly". Right now you can only use one or the other, but at least you can decide about this on a per-race basis.
If you replace the files of the species you want with the scaly ones or change the textures used by the race in the ESP itself is up to you, both should work fine.
Replacing the skeletons though is mandatory for the new meshes to work!
I included "skeleton.nif" and "skeletonbeast.nif" in "_male" as well as "skeleton.nif" and "skeleton_loupsombre.nif" in "_1stperson". Latter is a replacement for when you are also using Loup Sombre's "3rd-Person Animations in 1st-Person View" like I do. It has a different 1st-person skeleton, so that's a compatible one.


I now also resummarized my CS instructions and the latest unreleased scripts, for anybody who feels like going on with what I currently can't do.
It all can be found in http://www.gamesas.com/bgsforums/index.php?showtopic=1071472&view=findpost&p=15580318 on this page.
User avatar
Emma-Jane Merrin
 
Posts: 3477
Joined: Fri Aug 08, 2008 1:52 am

Post » Wed Mar 09, 2011 6:34 am

just an idea, from what i've seen of the hands they are pretty much human apart from claws and some armblades. when i imagine dragons i often think of them having more... knobely didgits, kind of like having more obvious knuckles. i dont really know how to explain this.... but whatever.

great job with the walk by the way, this race just keeps getting better and better.

and just a side note, because fallout 3 runs off the same engine, would it be possible to import this into fallout 3, (just for the lols)
User avatar
Hannah Barnard
 
Posts: 3421
Joined: Fri Feb 09, 2007 9:42 am

Post » Wed Mar 09, 2011 8:50 am

I never understood the 3 finger\toe thing with dragons. If you look at a lizard it has 5 toes per claw. So i like you having 5 fingers and toes on him. I should be getting a new desktop soon so i might be able to help more. TES4 runs fine on my laptop now but the CS kinda acts up(i think its vista). having only 30GB of free space now makes it hard to mod. Ive been playing dragon age a lot lately too.(which throws a fit running in my laptop LOL.)
User avatar
Katharine Newton
 
Posts: 3318
Joined: Tue Jun 13, 2006 12:33 pm

Post » Wed Mar 09, 2011 1:57 am

Just a quick update.

Due to me altering the wings' geometry that drastically all available dragon races will need new wing-membrane textures at least as soon as I release the new meshes and the skeletons going along with these.

Now I think I'm finally done with this little task, so here are the results:

http://img9.imageshack.us/img9/8312/newscalytexturesandwing.jpg (I posted this already but here it is again for direct comparison),
http://img191.imageshack.us/img191/5721/originaldragonnewwings.jpg,
http://img191.imageshack.us/img191/8215/blackdragonnewwings.jpg,
http://img148.imageshack.us/img148/612/blackdragonnewwings2.jpg (fiery-red veins as requested by Equinox aka Who Cares?)

lordsoulstrike, I hope you don't mind, but I took the liberty to create some fitting ones for all your fine retextures I could find as well:
http://img211.imageshack.us/img211/4813/blackreddragonretexneww.jpg (black membranes),
http://img130.imageshack.us/img130/4813/blackreddragonretexneww.jpg (dark-red membranes from black dragon),
http://img80.imageshack.us/img80/4813/blackreddragonretexneww.jpg (original-color membranes like you did in your release),
http://img62.imageshack.us/img62/9494/icedragonretexnewwings.jpg (the most-sophisticated work of all of them),
http://img211.imageshack.us/img211/5273/albinodragonretexnewwin.jpg (was hard to hit the right tone)

Those will all be included in the next upcoming resource release/update. I hope you like them and they're fitting in Your eyes as well.
User avatar
Jerry Cox
 
Posts: 3409
Joined: Wed Oct 10, 2007 1:21 pm

Post » Tue Mar 08, 2011 9:53 pm

Here's an idea, Drake: Do you think, on your black dragon, that you could make the veins layer blazing, firey red? They would still be underneath the slightly transparent 'skin' layer, but the 'flaming veins' would add to the theme that you already have going on your black dragon, with the patterns of red around the scales. Just an idea.

Maybe you could also do it with the black-red dragon?

I am so envious of these new wings, I really want to try them on Equinox (remember him? I tried to retex him a while back, it was my first Oblivion retex, and svcked), but I am NOT good at texturing at all... DO you think someone could make a retex for Equinox for me? I've got the odd-colored eyes still, I think, but as far as all these new textures go, Equinox is toast. :P I have screenshots of him if anyone is remotely interested...

(and a minor, minor, minuscule note: i finally figured out what my username SHOULD be. :P If anyone could address me as Equinox, that would be great. *headdesk* signup fail. :P I hate my username XD)
User avatar
Life long Observer
 
Posts: 3476
Joined: Fri Sep 08, 2006 7:07 pm

Post » Wed Mar 09, 2011 12:19 am

Well, then, Equinox, that was an intriguing suggestion.

Does this look somewhat close to what you had in mind?
http://img148.imageshack.us/img148/612/blackdragonnewwings2.jpg (actually looks somewhat scary, doesn't it?)

You see, I'm all up for requests, if they interest me, and that is usually the case anyways. Little distractions like these keep my imagination busy and my creativity benefits from this.
If you post those screenshots of yours, I could give it a try. It would be the 2nd or 3rd texture request for a personal character from someone I fulfill, so I'm used to this already.

Which wings will be used with the Black-Red Dragon Retex would be up to lordsoulstrike though. I'm just providing the alternatives.
However, of course everyone can use whichever textures one wants for whichever dragon race on his side in the end. So the very-last decision would be up to you anyways.
User avatar
Guinevere Wood
 
Posts: 3368
Joined: Mon Dec 04, 2006 3:06 pm

Post » Wed Mar 09, 2011 4:32 am

Ok, thanks Drake! I'm getting the screenshots now. It's taking a long time for the thumbnails in my screenshots folder to load though, which is frustrating.

EDIT: Here they are. You can interpret those swirlies however you want, they're not well drawn on the first place, so don't try to stay close to my design. :P http://img718.imageshack.us/i/screenshot504.png/
http://img138.imageshack.us/i/screenshot511.png/

And the wings look awesome, that's exactly what I was thinking. Do you like them better that way? Or will you just have 2 different versions?

My avatar is an old animation I did of Equinox, and it didn't turn out the way I wanted to on here, but oh well. It's more fitting. :P
User avatar
Kelly Osbourne Kelly
 
Posts: 3426
Joined: Sun Nov 05, 2006 6:56 pm

Post » Tue Mar 08, 2011 9:31 pm

dam, my internets being funny again, i cant see the pictures, glad to see that people think their good, i may need to create a new charachter to test these new textures out for myself.

and just a question, is there any fitting clothes for the wings? because whenever i use any clothes with wings shown it had major clipping issues with the clothes. i may be missing something, but i know i have seen adapted armours to fit the wings in the forums somewhere....
User avatar
Ludivine Poussineau
 
Posts: 3353
Joined: Fri Mar 30, 2007 2:49 pm

Post » Wed Mar 09, 2011 7:55 am

Just a quick update.

Due to me altering the wings' geometry that drastically all available dragon races will need new wing-membrane textures at least as soon as I release the new meshes and the skeletons going along with these.

Now I think I'm finally done with this little task, so here are the results:

http://img9.imageshack.us/img9/8312/newscalytexturesandwing.jpg (I posted this already but here it is again for direct comparison),
http://img191.imageshack.us/img191/5721/originaldragonnewwings.jpg,
http://img191.imageshack.us/img191/8215/blackdragonnewwings.jpg,
http://img148.imageshack.us/img148/612/blackdragonnewwings2.jpg (fiery-red veins as requested by Equinox aka Who Cares?)

lordsoulstrike, I hope you don't mind, but I took the liberty to create some fitting ones for all your fine retextures I could find as well:
http://img211.imageshack.us/img211/4813/blackreddragonretexneww.jpg (black membranes),
http://img130.imageshack.us/img130/4813/blackreddragonretexneww.jpg (dark-red membranes from black dragon),
http://img80.imageshack.us/img80/4813/blackreddragonretexneww.jpg (original-color membranes like you did in your release),
http://img62.imageshack.us/img62/9494/icedragonretexnewwings.jpg (the most-sophisticated work of all of them),
http://img211.imageshack.us/img211/5273/albinodragonretexnewwin.jpg (was hard to hit the right tone)

Those will all be included in the next upcoming resource release/update. I hope you like them and they're fitting in Your eyes as well.

Nope, go right ahead Drake. They are based off of your awesome textures after all.

Edit: BTW. If you could re-summarize the CS stuff I'd try to give it another go. When you talked about it last thread I was away from Oblivion. However I'm back and if you could give me the scripts in order in which they should be added I'll try again assuming I do not come down with another cold again. ><
User avatar
Rozlyn Robinson
 
Posts: 3528
Joined: Wed Jun 21, 2006 1:25 am

Post » Wed Mar 09, 2011 6:02 am

Thanks, I will do that tomorrow right after sorting out which posts are out-of-date already or redundant and compiling it all together in the right order again.

Mr Smiles, I'm sorry but the hunchback where the wings are connected to the upperbody will always clip in non-adapted clothing/armor meshes. I don't know of any specifically adapted for use with these wings either.
However, as soon as the latest state of the scripts got implemented, tested and finally released, there will be full control over this part of the appearance in adapted items as well. So we can start making those upperbody items fitting to the wings.

I actually do like them better this way myself, Equinox. Thanks for giving me this idea. This will be the new official look of the Black Dragon style. I will keep the plain dark-red one as well though, as you never know where it might perhaps fit in nicely later.
I'll give your Equinox textures a go tomorrow. Let's see what I can come up with.

Now while I was at it... oh, and you can really say I was on a "retexturing-spree" of sorts... I also gave all existing texture variants a quick work-over to create matching counterparts to Drake's brand new textures, the "red-gold scaly" variant. Thus I actually created a complete second branch of new scaly textures.

http://img503.imageshack.us/img503/1576/redgolddragonscaly1.jpg,
http://img33.imageshack.us/img33/9025/redgolddragonscaly2.jpg,
http://img94.imageshack.us/img94/748/originaldragonscaly1.jpg,
http://img94.imageshack.us/img94/4360/originaldragonscaly2.jpg,
http://img33.imageshack.us/img33/3428/blackdragonscaly1.jpg,
http://img39.imageshack.us/img39/2758/blackdragonscaly2.jpg,

http://img684.imageshack.us/img684/8305/blackreddragonretexscal.jpg,
http://img30.imageshack.us/img30/8305/blackreddragonretexscal.jpg,
http://img62.imageshack.us/img62/4097/icedragonretexscaly1.jpg,
http://img30.imageshack.us/img30/7149/icedragonretexscaly2.jpg,
http://img269.imageshack.us/img269/9398/albinodragonretexscaly1.jpg,
http://img15.imageshack.us/img15/2347/albinodragonretexscaly2.jpg

This makes 12 variants overall already.
Now that was "speed-painting", eh? :ahhh:

Next I can think about how to use them in the future.
Make these the new one-and-only male textures and leave the females how they are?
Or create the female counterparts next and stick with a set of 6 or more color-schemes per base-structure variant?
I don't know... any suggestions?

edit: Considering I created this thread only a couple hours ago, I think the 1st post got quite flooded with new content already. Guess I was quite productive today, for a very-welcome change.
User avatar
Veronica Flores
 
Posts: 3308
Joined: Mon Sep 11, 2006 5:26 pm

Post » Wed Mar 09, 2011 3:52 am

No rush. If everything is in one post it should not take me too long to come up with something in the CS. :)
User avatar
glot
 
Posts: 3297
Joined: Mon Jul 17, 2006 1:41 pm

Post » Wed Mar 09, 2011 5:03 am

I'm glad to see those variations are being included!
User avatar
Anna Krzyzanowska
 
Posts: 3330
Joined: Thu Aug 03, 2006 3:08 am

Post » Wed Mar 09, 2011 4:54 am

I'm now going to post all new and altered scripts as well as hopefully all steps to be done to get it all working.

Let this be a gentle warning for the occasional "I'm trying this out because it looks like fun, but I'm glad I finally managed to get it working as I don't know much about modding myself"-type of testers.
I don't want to confuse you with the following possibly over-complex tasks to fulfill only to have you end up with a non-functional mod in the end.
If you're not one of the few who know what they have to do to get certain things fixed on their own in the CS and outside of it, you might rather want to wait for a finished ESP to be released, by me or someone else who felt like sharing.

Now, that being said you will need to do certain preparations messing around with files and new item records/quests/scripts in the CS before you can even begin altering the existing ones.
I hope I'm able to tell you exactly what you need to do in exactly the right order, but truth is I'm not able to edit the ESP myself and am basically "tapping around in the dark blindly", metaphorically speaking, when it comes to the steps I'm going to explain.

First of all you should load any savegame with a dragon character you want to continue later on. Once it's loaded stop the main race control quest by typing "stopquest DrakeDragonRaceQuest" into the console. Then save and quit.
This is to make the quest script update when you alter it in the ESP, as it occurred sometimes to be not taking over all changes when it was still running. I don't know if it would take over the changes correctly when you stop the quest after loading and then restart it, but I know doing the changes after the quest was stopped always worked till today.

Now let's get the new Clothwraps Complete Resource to be used by my mod and scripts.
I'll now post a list of items you need to create and which files each of them corresponds to. (It's not complicated, EditorID and filename are mostly identical.):

1. The already existing items you need to alter:

- "DrakeDragonChestWraps" (folder has changed)
male: "meshes/clothes/DrakeDragon/male/DragonChestWraps.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsTFF.nif"

- "DrakeDragonHandWraps" (folder has changed)
male: "meshes/clothes/DrakeDragon/male/DragonHandWraps.nif"
female: "meshes/clothes/DrakeDragon/female/DragonHandWrapsTFF.nif"

- "DrakeDragonFootWraps" (folder has changed)
male: "meshes/clothes/DrakeDragon/male/DragonFootWraps.nif"
female: "meshes/clothes/DrakeDragon/female/DragonFootWrapsTFF.nif"

- "DrakeDragonLegWraps" (folder has changed)
male: "meshes/clothes/DrakeDragon/male/DragonLegWraps.nif"
female: "meshes/clothes/DrakeDragon/female/DragonLegWrapsTFF.nif"

2. New items to complement the replacer template resources:

- "DrakeDragonChestWrapsWinged" (occupied slots: upperbody)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWinged.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedTFF.nif"

- "DrakeDragonLegWrapsTailed" (occupied slots: lowerbody)
male: "meshes/clothes/DrakeDragon/male/DragonLegWrapsTailed.nif"
female: "meshes/clothes/DrakeDragon/female/DragonLegWrapsTailedTFF.nif"


- "DrakeDragonChestWrapsHands" (occupied slots: upperbody, hands)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsHands.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsHandsTFF.nif"

- "DrakeDragonChestWrapsLower" (occupied slots: upperbody, lowerbody)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsLower.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsLowerTFF.nif"

- "DrakeDragonChestWrapsLowerHands" (occupied slots: upperbody, lowerbody, hand)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsLowerHands.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsLowerHandsTFF.nif"

- "DrakeDragonChestWrapsLowerFeet" (occupied slots: upperbody, lowerbody, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsLowerFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsLowerFeetTFF.nif"

- "DrakeDragonChestWrapsLowerHandsFeet" (occupied slots: upperbody, lowerbody, hand, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsLowerHandsFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsLowerHandsFeetTFF.nif"


- "DrakeDragonChestWrapsTailedLower" (occupied slots: upperbody, lowerbody)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsTailedLower.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsTailedLowerTFF.nif"

- "DrakeDragonChestWrapsTailedLowerHands" (occupied slots: upperbody, lowerbody, hand)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsTailedLowerHands.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsTailedLowerHandsTFF.nif"

- "DrakeDragonChestWrapsTailedLowerFeet" (occupied slots: upperbody, lowerbody, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsTailedLowerFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsTailedLowerFeetTFF.nif"

- "DrakeDragonChestWrapsTailedLowerHandsFeet" (occupied slots: upperbody, lowerbody, hand, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsTailedLowerHandsFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsTailedLowerHandsFeetTFF.nif"


- "DrakeDragonChestWrapsWingedHands" (occupied slots: upperbody, hands)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedHands.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedHandsTFF.nif"

- "DrakeDragonChestWrapsWingedLower" (occupied slots: upperbody, lowerbody)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedLower.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedLowerTFF.nif"

- "DrakeDragonChestWrapsWingedLowerHands" (occupied slots: upperbody, lowerbody, hand)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedLowerHands.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedLowerHandsTFF.nif"

- "DrakeDragonChestWrapsWingedLowerFeet" (occupied slots: upperbody, lowerbody, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedLowerFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedLowerFeetTFF.nif"

- "DrakeDragonChestWrapsWingedLowerHandsFeet" (occupied slots: upperbody, lowerbody, hand, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedLowerHandsFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedLowerHandsFeetTFF.nif"


- "DrakeDragonChestWrapsWingedTailedLower" (occupied slots: upperbody, lowerbody)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedTailedLower.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedTailedLowerTFF.nif"

- "DrakeDragonChestWrapsWingedTailedLowerHands" (occupied slots: upperbody, lowerbody, hand)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedTailedLowerHands.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedTailedLowerHandsTFF.nif"

- "DrakeDragonChestWrapsWingedTailedLowerFeet" (occupied slots: upperbody, lowerbody, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsTailedWingedLowerFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsTailedWingedLowerFeetTFF.nif"

- "DrakeDragonChestWrapsWingedTailedLowerHandsFeet" (occupied slots: upperbody, lowerbody, hand, foot)
male: "meshes/clothes/DrakeDragon/male/DragonChestWrapsWingedTailedLowerHandsFeet.nif"
female: "meshes/clothes/DrakeDragon/female/DragonChestWrapsWingedTailedLowerHandsFeetTFF.nif"

(seeing a pattern already?)
You might have guessed already what's the purpose of the slotnames at the end, or why there are always "tailed", "winged" or "wingedtailed" versions of almost each combination (chest and hands only doesn't cover the tail of course).
Those of you who are used to my scripting approach might have recognized all the "tagged" files as well, which were not used here,... yepp, you guessed it, these will of course as usual automatically be taken up by my scripts and used appropriately for the specific dragon-human-hybrid combination you selected in the config menu.

Now you need to create following "object"-type scripts (actually all new OBSE "user-functions"):
scn DrakeDragonRaceReplacerHairFunctionarray_var confArrayref itemref templatebegin Function {confArray, item}	let template := DrakeEmptyItem	setFunctionValue templateend

scn DrakeDragonRaceReplacerUpperFunctionarray_var confArrayref itemref templatelong slotmaskshort req0short req1short req2short req3begin Function {confArray, item}	;this one is getting a bit complex. select the fitting replacer template according to occupied slots	set slotmask to getBipedSlotMask item	let req0 := confArray[5]["combinations"][0]["req"]	let req1 := confArray[5]["combinations"][1]["req"]	let req2 := confArray[5]["combinations"][2]["req"]	let req3 := confArray[5]["combinations"][3]["req"]	if(req0 == 1) ;tail		if eval (slotmask & 20 == 20)			let template := DrakeDragonChestWrapsHands		elseif eval (slotmask & 12 == 12)			let template := DrakeDragonChestWrapsTailedLower		elseif eval (slotmask & 28 == 28)			let template := DrakeDragonChestWrapsTailedLowerHands		elseif eval (slotmask & 44 == 44)			let template := DrakeDragonChestWrapsTailedLowerFeet		elseif eval (slotmask & 60 == 60)			let template := DrakeDragonChestWrapsTailedLowerHandsFeet		else			let template := DrakeDragonChestWraps		endif	elseif(req1 == 1) ;wings		if eval (slotmask & 20 == 20)			let template := DrakeDragonChestWrapsWingedHands		elseif eval (slotmask & 12 == 12)			let template := DrakeDragonChestWrapsWingedLower		elseif eval (slotmask & 28 == 28)			let template := DrakeDragonChestWrapsWingedLowerHands		elseif eval (slotmask & 44 == 44)			let template := DrakeDragonChestWrapsWingedLowerFeet		elseif eval (slotmask & 60 == 60)			let template := DrakeDragonChestWrapsWingedLowerHandsFeet		else			let template := DrakeDragonChestWrapsWinged		endif	elseif(req2 == 1 || req3 == 1) ;wings and tail		if eval (slotmask & 20 == 20)			let template := DrakeDragonChestWrapsWingedHands		elseif eval (slotmask & 12 == 12)			let template := DrakeDragonChestWrapsWingedTailedLower		elseif eval (slotmask & 28 == 28)			let template := DrakeDragonChestWrapsWingedTailedLowerHands		elseif eval (slotmask & 44 == 44)			let template := DrakeDragonChestWrapsWingedTailedLowerFeet		elseif eval (slotmask & 60 == 60)			let template := DrakeDragonChestWrapsWingedTailedLowerHandsFeet		else			let template := DrakeDragonChestWrapsWinged		endif	else ;none of both		if eval (slotmask & 20 == 20)			let template := DrakeDragonChestWrapsHands		elseif eval (slotmask & 12 == 12)			let template := DrakeDragonChestWrapsLower		elseif eval (slotmask & 28 == 28)			let template := DrakeDragonChestWrapsLowerHands		elseif eval (slotmask & 44 == 44)			let template := DrakeDragonChestWrapsLowerFeet		elseif eval (slotmask & 60 == 60)			let template := DrakeDragonChestWrapsLowerHandsFeet		else			let template := DrakeDragonChestWraps		endif	endif	setFunctionValue templateend

scn DrakeDragonRaceReplacerLowerFunctionarray_var confArrayref itemref templateshort req0short req2short req3begin Function {confArray, item}	let req0 := confArray[5]["combinations"][0]["req"]	let req2 := confArray[5]["combinations"][2]["req"]	let req3 := confArray[5]["combinations"][3]["req"]	if(req0 == 1 || req2 == 1 || req3 == 1) ;tail		let template := DrakeDragonLegWrapsTailed	else		let template := DrakeDragonLegWraps	endif	setFunctionValue templateend

scn DrakeDragonRaceReplacerHandsFunctionarray_var confArrayref itemref templatebegin Function {confArray, item}	let template := DrakeDragonHandWraps	setFunctionValue templateend

scn DrakeDragonRaceReplacerFeetFunctionarray_var confArrayref itemref templatebegin Function {confArray, item}	let template := DrakeDragonFootWraps	setFunctionValue templateend

scn DrakeDragonRaceReplacerTailFunctionarray_var confArrayref itemref templateshort req0short req1short req2short req3begin Function {confArray, item}	let req0 := confArray[5]["combinations"][0]["req"]	let req1 := confArray[5]["combinations"][1]["req"]	let req2 := confArray[5]["combinations"][2]["req"]	let req3 := confArray[5]["combinations"][3]["req"]	if(req0 == 1) ;tail		let template := DrakeDragonTail	elseif(req1 == 1) ;wings		let template := DrakeDragonWings	elseif(req2 == 1 || req3 == 1) ;wings and tail		let template := DrakeDragonWingsTail	else ;none of both		let template := DrakeEmptyItem	endif	setFunctionValue templateend

scn DrakeDragonRaceReplacerSelectFunctionstring_var slotIdarray_var confArrayref itemref templatebegin Function {slotId, confArray, item}	;select proper function according to slot	if eval (slotId == "upperbody")		let template := Call DrakeDragonRaceReplacerUpperFunction confArray item	elseif eval (slotId == "lowerbody")		let template := Call DrakeDragonRaceReplacerLowerFunction confArray item	elseif eval (slotId == "hands")		let template := Call DrakeDragonRaceReplacerHandsFunction confArray item	elseif eval (slotId == "feet")		let template := Call DrakeDragonRaceReplacerFeetFunction confArray item	elseif eval (slotId == "hair")		let template := Call DrakeDragonRaceReplacerHairFunction confArray item	elseif eval (slotId == "tail")		let template := Call DrakeDragonRaceReplacerTailFunction confArray item	endif	setFunctionValue templateend

Here you can actually witness the birth of the new and improved template replacer selection system. There's way more space and possibilities inside those new function scripts than there'll ever be inside the token script itself or a replacer template array (as there was before). OBSE's getting quite convenient for me now isn't it?
Noticed the "tagId" changed into "confArray"? "tagId" was no longer needed, as this part of the actual filename is generated outside of the template selection now.
But I needed the "confArray" of the specific race to access your personal dragon-human-hybrid selection of choice as defined in the config menu.

Next create a new quest "DrakeDragonRaceConfigQuest". Make it not "start game enabled" and check "allow repeating stages".
Once this is done create following "quest"-type script:
scn DrakeDragonRaceConfigQuestScriptshort choicefloat fQuestDelayTimebegin gameMode	set fQuestDelayTime to 0.5	if(DrakeDragonRaceQuest.doConfig == 1)		MessageBoxEX "Dragon Race > Do You want to keep all default settings?|Yes|No"		set DrakeDragonRaceQuest.doConfig to -2		return	elseif(DrakeDragonRaceQuest.doConfig == -2)		set choice to getButtonPressed		if(choice == 0) ;stick to defaults			MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No"			set DrakeDragonRaceQuest.doConfig to 12		elseif(choice == 1) ;customize			MessageBoxEX "Dragon Race > Select Your shape:%rDo You want to be Full-Dragon shape?|Yes|No"			set DrakeDragonRaceQuest.doConfig to 2		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 2) ;full-dragon or custom?		set choice to getButtonPressed		if(choice == 0) ;stay full-dragon			set DrakeDragonRaceQuest.showclaws to 1			set DrakeDragonRaceQuest.showfeet to 1			set DrakeDragonRaceQuest.showtail to 1			set DrakeDragonRaceQuest.showwings to 1			MessageBoxEX "Dragon Race > Select Your shape:%rDo You want controlled helmet slot,%rnot actually force-equipping anything%rbut keeping non-fitting helmets unequipped?|Yes|No"			set DrakeDragonRaceQuest.doConfig to 5		elseif(choice == 1) ;further customize			MessageBoxEX "Dragon Race > Select Your shape:%rWhich wings & tail combination do You prefer?|Wings and tail|Only wings|Only tail|None at all"			set DrakeDragonRaceQuest.doConfig to 3		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 3) ;tail & wings options		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;both				set DrakeDragonRaceQuest.showtail to 1				set DrakeDragonRaceQuest.showwings to 1			elseif(choice == 1) ;only wings				set DrakeDragonRaceQuest.showtail to 0				set DrakeDragonRaceQuest.showwings to 1			elseif(choice == 2) ;only tail				set DrakeDragonRaceQuest.showtail to 1				set DrakeDragonRaceQuest.showwings to 0			elseif(choice == 3) ;neither wings nor tail				set DrakeDragonRaceQuest.showtail to 0				set DrakeDragonRaceQuest.showwings to 0			endif			MessageBoxEX "Dragon Race > Select Your shape:%rWhich hands & feet/legs combination do You prefer?|Dragon hands and feet/legs|Dragon hands but human feet/legs|Human hands but dragon feet/legs|Human hands and human feet/legs"			set DrakeDragonRaceQuest.doConfig to 4		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 4) ;hands & feet options		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;both				set DrakeDragonRaceQuest.showclaws to 1				set DrakeDragonRaceQuest.showfeet to 1			elseif(choice == 1) ;dragon hands, human feet				set DrakeDragonRaceQuest.showclaws to 1				set DrakeDragonRaceQuest.showfeet to 0			elseif(choice == 2) ;humand hands, dragon feet				set DrakeDragonRaceQuest.showclaws to 0				set DrakeDragonRaceQuest.showfeet to 1			elseif(choice == 3) ;all human				set DrakeDragonRaceQuest.showclaws to 0				set DrakeDragonRaceQuest.showfeet to 0			endif			MessageBoxEX "Dragon Race > Select Your shape:%rDo You want controlled helmet slot,%rnot actually force-equipping anything%rbut keeping non-fitting helmets unequipped?|Yes|No"			set DrakeDragonRaceQuest.doConfig to 5		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 5) ;helmet options		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;controlled helmet				set DrakeDragonRaceQuest.showhelmet to 1			elseif(choice == 1) ;keep hairstyles				set DrakeDragonRaceQuest.showhelmet to 0			endif			MessageBoxEX "Dragon Race > Forced unequipping:%rBy default unequipping of non-fitting items%ris forced for all slots but upperbody.%rThis includes visual replacement while keeping stats.%rWhich settings do You prefer?|Keep default (All)|None at all|Customize..."			set DrakeDragonRaceQuest.doConfig to 6		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 6)		set choice to getButtonPressed		if(choice > -1)			if(choice == 0); all slots				set DrakeDragonRaceQuest.forcehelmet to 1				set DrakeDragonRaceQuest.forceupper to 0				set DrakeDragonRaceQuest.forcehands to 1				set DrakeDragonRaceQuest.forcelower to 1				set DrakeDragonRaceQuest.forcefeet to 1				set DrakeDragonRaceQuest.forcetail to 1				MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No"				set DrakeDragonRaceQuest.doConfig to 12			elseif(choice == 1) ;none at all				set DrakeDragonRaceQuest.forcehelmet to 0				set DrakeDragonRaceQuest.forceupper to 0				set DrakeDragonRaceQuest.forcehands to 0				set DrakeDragonRaceQuest.forcelower to 0				set DrakeDragonRaceQuest.forcefeet to 0				set DrakeDragonRaceQuest.forcetail to 0				MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No"				set DrakeDragonRaceQuest.doConfig to 12			elseif(choice == 2) ;customize				MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the helmet/hair slot to be forced?%r(Only relevant, if it is controlled.)|Yes|No"				set DrakeDragonRaceQuest.doConfig to 7			endif		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 7)		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;yes				set DrakeDragonRaceQuest.forcehelmet to 1			elseif(choice == 1) ;no				set DrakeDragonRaceQuest.forcehelmet to 0			endif			MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the lowerbody/legs slot to be forced?%r(Only relevant, if it is in Dragon shape.)|Yes|No"			set DrakeDragonRaceQuest.doConfig to 8		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 8) ;lowerbody		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;yes				set DrakeDragonRaceQuest.forcelower to 1			elseif(choice == 1) ;no				set DrakeDragonRaceQuest.forcelower to 0			endif			MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the hands slot to be forced?%r(Only relevant, if it is in Dragon shape.)|Yes|No"			set DrakeDragonRaceQuest.doConfig to 9		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 9) ;hands		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;yes				set DrakeDragonRaceQuest.forcehands to 1			elseif(choice == 1) ;no				set DrakeDragonRaceQuest.forcehands to 0			endif			MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the feet slot to be forced?%r(Only relevant, if it is in Dragon shape.)|Yes|No"			set DrakeDragonRaceQuest.doConfig to 10		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 10) ;feet		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;yes				set DrakeDragonRaceQuest.forcefeet to 1			elseif(choice == 1) ;no				set DrakeDragonRaceQuest.forcefeet to 0			endif			MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the tail slot to be forced?%r(Only relevant, if tail or wings were selected.)|Yes|No"			set DrakeDragonRaceQuest.doConfig to 11		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 11) ;tail		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;yes				set DrakeDragonRaceQuest.forcetail to 1			elseif(choice == 1) ;no				set DrakeDragonRaceQuest.forcetail to 0			endif			MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No"			set DrakeDragonRaceQuest.doConfig to 12		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 12) ;combined-slot items exception		set choice to getButtonPressed		if(choice > -1)			if(choice == 0) ;yes				set DrakeDragonRaceQuest.forcecombined to 0			elseif(choice == 1) ;no				set DrakeDragonRaceQuest.forcecombined to 1			endif			set DrakeDragonRaceQuest.doConfig to 13		endif		return	elseif(DrakeDragonRaceQuest.doConfig == 13) ;finish		MessageBoxEX "Dragon Race: Thank You for your time.%rYour Dragon race should now be successfully configured.%rIf You wish to do this again, just type%r'startquest DrakeDragonRaceConfigQuest'%rinto the console.%rIf You called this in the middle of a game,%rYou might need to reequip your clothing,%rfor the changes to take effect!"		set DrakeDragonRaceQuest.doConfig to 0		stopQuest DrakeDragonRaceConfigQuest	else ;either coming from racequest init (-1) or from startquest via console (0)		set DrakeDragonRaceQuest.doConfig to 1	endifend

Once this script exists assign it to your newly created quest.

The new and improved main control quest script:
scn DrakeDragonRaceQuestScriptlong adaptedItemsArraylong itemsDCpartcArraylong itemsDCpartfArraylong itemsDCpartcfArraylong itemsDCpartArraylong itemsDCpartfoArraylong itemsDCpartfcArrayshort showclawsshort showfeetshort showtailshort showwingsshort showhelmetshort forcehelmetshort forceuppershort forcelowershort forcehandsshort forcefeetshort forcetailshort forcecombinedshort initshort initArraysshort debugshort debugShowRaceTokenshort debugShowRevTokenshort doConfigshort choicearray_var confArrayarray_var itemArrayarray_var defaultItemArrayarray_var tempArrayarray_var itemstring_var raceIdlong framesToSkiplong itemsRevertPerFrameref sourceref actorRacefloat timerfloat playerXfloat playerYfloat playerZfloat fQuestDelayTimebegin gameMode	set fQuestDelayTime to 0.5		if(init == 0)		if(getOBSEVersion < 18)			MessageBoxEX "Dragon Race:%rCurrent release requires OBSE v0018 beta 5 or higher to run.%rYou don't have a proper version of OBSE!"			set init to -1			return		endif				if(initArrays == 0)			let itemArray := ar_Construct StringMap			let itemArray["original"] := ar_Construct StringMap			;let itemArray["original"][x] := original_BaseId			let itemArray["dcpartc"] := ar_Construct StringMap			let itemArray["dcpartf"] := ar_Construct StringMap			let itemArray["dcpartcf"] := ar_Construct StringMap			let itemArray["dcpartw"] := ar_Construct StringMap			let itemArray["dcpartt"] := ar_Construct StringMap			let itemArray["dcpartwt"] := ar_Construct StringMap			let itemArray["dcpart"] := ar_Construct StringMap			;let itemArray[tagCode][x] := adapted_BaseId			;matching indices "x"!						set initArrays to 1		endif		set showhelmet to 1		set showclaws to 1		set showfeet to 1		set showtail to 1		set showwings to 1		set forcehelmet to 0		set forceupper to 0		set forcelower to 1		set forcehands to 1		set forcefeet to 1		set forcetail to 1		set forcecombined to 0		let confArray := ar_Construct StringMap		let confArray["races"] := ar_Construct StringMap		let confArray["races"]["dragon"] := DrakeDragon		let confArray["races"]["dragonblack"] := DrakeDragonBlack		let confArray["races"]["dragonredgold"] := DrakeDragonRedGold				foreach item <- confArray["races"]			let raceId := item["key"]						let confArray[raceId] := ar_Construct Array			let confArray[raceId][0] := ar_Construct StringMap			let confArray[raceId][0]["slotname"] := "upperbody"			let confArray[raceId][0]["slotmask"] := 4			let confArray[raceId][0]["combinations"] := ar_Construct Array			let confArray[raceId][0]["combinations"][0] := ar_Construct StringMap			let confArray[raceId][0]["combinations"][0]["tag"] := "dcpartc"			let confArray[raceId][0]["combinations"][0]["req"] := eval (showclaws == 1 && showfeet == 0)			let confArray[raceId][0]["combinations"][1] := ar_Construct StringMap			let confArray[raceId][0]["combinations"][1]["tag"] := "dcpartf"			let confArray[raceId][0]["combinations"][1]["req"] := eval (showclaws == 0 && showfeet == 1)			let confArray[raceId][0]["combinations"][2] := ar_Construct StringMap			let confArray[raceId][0]["combinations"][2]["tag"] := "dcpartcf"			let confArray[raceId][0]["combinations"][2]["req"] := eval (showclaws == 1 && showfeet == 1)			let confArray[raceId][0]["combinations"][3] := ar_Construct StringMap			let confArray[raceId][0]["combinations"][3]["tag"] := "dcpart"			let confArray[raceId][0]["combinations"][3]["req"] := showclaws			let confArray[raceId][0]["forced"] := forceupper			let confArray[raceId][1] := ar_Construct StringMap			let confArray[raceId][1]["slotname"] := "lowerbody"			let confArray[raceId][1]["slotmask"] := 8			let confArray[raceId][1]["combinations"] := ar_Construct Array			let confArray[raceId][1]["combinations"][0] := ar_Construct StringMap			let confArray[raceId][1]["combinations"][0]["tag"] := "dcpart"			let confArray[raceId][1]["combinations"][0]["req"] := showfeet			let confArray[raceId][1]["forced"] := forcelower			let confArray[raceId][2] := ar_Construct StringMap			let confArray[raceId][2]["slotname"] := "hands"			let confArray[raceId][2]["slotmask"] := 16			let confArray[raceId][2]["combinations"] := ar_Construct Array			let confArray[raceId][2]["combinations"][0] := ar_Construct StringMap			let confArray[raceId][2]["combinations"][0]["tag"] := "dcpart"			let confArray[raceId][2]["combinations"][0]["req"] := showclaws			let confArray[raceId][2]["forced"] := forcehands			let confArray[raceId][3] := ar_Construct StringMap			let confArray[raceId][3]["slotname"] := "feet"			let confArray[raceId][3]["slotmask"] := 32			let confArray[raceId][3]["combinations"] := ar_Construct Array			let confArray[raceId][3]["combinations"][0] := ar_Construct StringMap			let confArray[raceId][3]["combinations"][0]["tag"] := "dcpart"			let confArray[raceId][3]["combinations"][0]["req"] := showfeet			let confArray[raceId][3]["forced"] := forcefeet			let confArray[raceId][4] := ar_Construct StringMap			let confArray[raceId][4]["slotname"] := "hair"			let confArray[raceId][4]["slotmask"] := 2			let confArray[raceId][4]["combinations"] := ar_Construct Array			let confArray[raceId][4]["combinations"][0] := ar_Construct StringMap			let confArray[raceId][4]["combinations"][0]["tag"] := "dcpart"			let confArray[raceId][4]["combinations"][0]["req"] := showhelmet			let confArray[raceId][4]["forced"] := forcehelmet			let confArray[raceId][5] := ar_Construct StringMap			let confArray[raceId][5]["slotname"] := "tail"			let confArray[raceId][5]["slotmask"] := 32768			let confArray[raceId][5]["combinations"] := ar_Construct Array			let confArray[raceId][5]["combinations"][0] := ar_Construct StringMap			let confArray[raceId][5]["combinations"][0]["tag"] := "dcpartt"			let confArray[raceId][5]["combinations"][0]["req"] := eval (showtail == 1 && showwings == 0)			let confArray[raceId][5]["combinations"][1] := ar_Construct StringMap			let confArray[raceId][5]["combinations"][1]["tag"] := "dcpartw"			let confArray[raceId][5]["combinations"][1]["req"] := eval (showtail == 0 && showwings == 1)			let confArray[raceId][5]["combinations"][2] := ar_Construct StringMap			let confArray[raceId][5]["combinations"][2]["tag"] := "dcpartwt"			let confArray[raceId][5]["combinations"][2]["req"] := eval (showtail == 1 && showwings == 1)			let confArray[raceId][5]["combinations"][3] := ar_Construct StringMap			let confArray[raceId][5]["combinations"][3]["tag"] := "dcpart"			let confArray[raceId][5]["combinations"][3]["req"] := eval (showtail == 1 && showwings == 1)			let confArray[raceId][5]["forced"] := forcetail		Loop			let defaultItemArray := ar_Construct StringMap		let defaultItemArray["hair"] := ar_Construct StringMap		let defaultItemArray["hair"]["dcpart"] := DrakeEmptyItem		let defaultItemArray["upperbody"] := ar_Construct StringMap		let defaultItemArray["upperbody"]["dcpartc"] := DrakeDragonUpperbody		let defaultItemArray["upperbody"]["dcpartf"] := DrakeEmptyItem		let defaultItemArray["upperbody"]["dcpartcf"] := DrakeDragonUpperbody		let defaultItemArray["upperbody"]["dcpart"] := DrakeDragonUpperbody		let defaultItemArray["lowerbody"] := ar_Construct StringMap		let defaultItemArray["lowerbody"]["dcpart"] := DrakeDragonLegs		let defaultItemArray["hands"] := ar_Construct StringMap		let defaultItemArray["hands"]["dcpart"] := DrakeDragonClaws		let defaultItemArray["feet"] := ar_Construct StringMap		let defaultItemArray["feet"]["dcpart"] := DrakeDragonFeet		let defaultItemArray["tail"] := ar_Construct StringMap		let defaultItemArray["tail"]["dcpartt"] := DrakeDragonTail		let defaultItemArray["tail"]["dcpartw"] := DrakeDragonWings		let defaultItemArray["tail"]["dcpartwt"] := DrakeDragonWingsTail		let defaultItemArray["tail"]["dcpart"] := DrakeEmptyItem		let tempArray := ar_Construct StringMap				set framesToSkip to 10		set itemsRevertPerFrame to 100		MessageBoxEX "Dragon Race:%rAll requirements met. Arrays initialized successfully."		set doConfig to -1		startQuest DrakeDragonRaceConfigQuest		set init to 1	endif	if(doConfig != 0) ;stay idle until config menu is done		return	endif	foreach item <- confArray["races"]		let raceId := item["key"]				;update shape shift settings, just in case		let confArray[raceId][0]["combinations"][0]["req"] := eval (showclaws == 1 && showfeet == 0)		let confArray[raceId][0]["combinations"][1]["req"] := eval (showclaws == 0 && showfeet == 1)		let confArray[raceId][0]["combinations"][2]["req"] := eval (showclaws == 1 && showfeet == 1)		let confArray[raceId][0]["combinations"][3]["req"] := showclaws		let confArray[raceId][1]["combinations"][0]["req"] := showfeet		let confArray[raceId][2]["combinations"][0]["req"] := showclaws		let confArray[raceId][3]["combinations"][0]["req"] := showfeet		let confArray[raceId][4]["combinations"][0]["req"] := showhelmet		let confArray[raceId][5]["combinations"][0]["req"] := eval (showtail == 1 && showwings == 0)		let confArray[raceId][5]["combinations"][1]["req"] := eval (showtail == 0 && showwings == 1)		let confArray[raceId][5]["combinations"][2]["req"] := eval (showtail == 1 && showwings == 1)				;update forced unequipping, just in case		let confArray[raceId][0]["forced"] := forceupper		let confArray[raceId][1]["forced"] := forcelower		let confArray[raceId][2]["forced"] := forcehands		let confArray[raceId][3]["forced"] := forcefeet		let confArray[raceId][4]["forced"] := forcehelmet		let confArray[raceId][5]["forced"] := forcetail	Loop		if(actorRace != player.getRace)		set actorRace to player.getRace		let raceId := ar_Find actorRace confArray["races"]		if eval (raceId != "")			if(player.getItemCount DrakeDragonRaceToken < 1)				player.addItemNS DrakeDragonRaceToken 1			endif		else			if(player.getItemCount DrakeDragonRaceReverterToken < 1)				player.addItemNS DrakeDragonRaceReverterToken 1			endif		endif	endif		set source to DrakeDragonRaceScanner	;move into new cell with player and reset count so spell is cast immediately	if(source.getInSameCell player != 1)		source.moveTo player		set timer to 0	endif		if(timer <= 0)		set playerX to player.getPos X		source.setPos X playerX		set playerY to player.getPos Y		source.setPos Y playerY		set playerZ to player.getPos Z		source.setPos Z playerZ		source.cast DrakeDragonRaceScannerAura player		set timer to 1	else		set timer to (timer - getSecondsPassed)	endifend

Notice the "itemArray" initialization being isolated inside its own do-once condition? If all's well, then this should make updating between existing savegames much easier now.
The whole configuration menu thing was exported into its own quest script, the "confArray"'s slots are indexed by numbers now, as I realized "foreach" is iterating an alphabetically "sorted" array with string indices and not in the order I created it in, which caused trouble with combined adapted items most likely not being equipped properly because "upperbody" was not the 1st slot to be processed as intended, the replacer template array vanished in favor of the new user-function-driven design, and quite some other minor changes.

Note: The checks for requirements like OBSE are still not improved, as you can see in the unaltered GetOBSEVersion line close to the top!

Now, there's one more user-function to be created, which will shorten the token scripts always containing the same twice, in menumode and in gamemode, drastically:
scn DrakeDragonRaceTokenFunctionarray_var confArrayarray_var repeatArrayref actorRefshort actorFemaleshort slotNumref oldslotContentarray_var itemArrayarray_var defaultItemArrayref actslotContentref tempItemref tempItem2short switchItemsshort wearsAdaptedshort foundAdaptedshort requirementshort foundRequirementshort currentRequirementshort slotCodeshort index2short slotEnforcedlong slotMasklong tempNumarray_var itemarray_var item2string_var slotIdstring_var indexstring_var tagIdstring_var tagCodestring_var currentlyWearingstring_var shouldBeWearingfloat healthBufferbegin Function {confArray, repeatArray, actorRef, actorFemale, slotNum, oldslotContent}	let itemArray := DrakeDragonRaceQuest.itemArray	let defaultItemArray := DrakeDragonRaceQuest.defaultItemArray	;check slot for changes	let slotId := confArray[slotNum]["slotname"]	let slotMask := confArray[slotNum]["slotmask"]	set actslotContent to (actorRef.getEquipmentSlotMask slotMask)	set slotEnforced to 0	if eval (confArray[slotNum]["forced"] == 1) ;forced unequipping for this slot		if eval (getBipedSlotMask actslotContent == slotMask || DrakeDragonRaceQuest.forcecombined == 1 || getBipedSlotMask actslotContent == 1 + 2) ;must not be a combined-slot item or combined-slot items exception must be turned off, full-helmets being an exception			set slotEnforced to 1		endif	endif	if eval (actslotContent != oldslotContent || repeatArray[slotId] == 1)		let index := ""		let index2 := ar_First confArray[slotNum]["combinations"]		While eval ((index == "") && (index2 != ar_BadNumericIndex))			let tagId := confArray[slotNum]["combinations"][index2]["tag"]			let index := ar_Find oldslotContent itemArray[tagId]			let index2 := ar_Next confArray[slotNum]["combinations"] index2		Loop					if eval (index != "") ;needs exchange			if(actorRef.getItemCount oldslotContent > 0)				let tempItem := itemArray["original"][index]				actorRef.removeItemNS oldslotContent 1				actorRef.addItemNS tempItem 1			endif		endif				let shouldBeWearing := "original"		set foundAdapted to 0		set foundRequirement to 0		ForEach item2 <- confArray[slotNum]["combinations"]			let tagId := item2["value"]["tag"]			if eval (item2["key"] == ar_Last confArray[slotNum]["combinations"])				let tagCode := "_" + tagId			else				let tagCode := "_" + tagId + ".nif"			endif			let requirement := item2["value"]["req"]						if(actorFemale == 1 && isBipedModelPathValid 1 actslotContent == 1)				set wearsAdapted to compareFemaleBipedPath $tagCode actslotContent			else				set wearsAdapted to compareMaleBipedPath $tagCode actslotContent			endif						if(wearsAdapted == 1 && foundAdapted != 1) ;always take the 1st one				set foundAdapted to 1				let currentlyWearing := tagId				set currentRequirement to requirement			endif			if(requirement == 1 && foundRequirement != 1) ;always take the 1st one				set foundRequirement to 1				let shouldBeWearing := tagId			endif		Loop				set switchItems to 0		if(foundAdapted == 1) ;is wearing an adapted item			if(foundRequirement == 1) ;only if slot in question should be controlled according to selected shape				if(currentRequirement == 0) ;in case of shape shifting races and worn adapted item not fitting selected shape					let index := ar_Find actslotContent itemArray[currentlyWearing]					if eval (index != "") ;safety check						let tempItem := itemArray[shouldBeWearing][index]						set switchItems to 1					endif				endif			else ;is wearing adapted item or bodypart but should not				let index := ar_Find actslotContent itemArray[currentlyWearing]				if eval (index != "") ;no bodypart					let tempItem := itemArray["original"][index]					set switchItems to 1				else ;bodypart					set tempItem to 0					set switchItems to 2				endif			endif		else ;not wearing any adapted item			if(foundRequirement == 1) ;only if slot in question should be controlled according to selected shape				if(actslotContent != 0) ;normal clothing					let index := ar_Find actslotContent itemArray["original"]					if eval (index != "") ;already an adapted present						if eval (ar_HasKey itemArray[shouldBeWearing] index)							let tempItem := itemArray[shouldBeWearing][index]						else							let tempItem := itemArray[(ar_Last itemArray)][index]						endif						set switchItems to 1					else ;try to find adapted item						set switchItems to 3					endif				else ;empty					let tempItem := defaultItemArray[slotId][shouldBeWearing]					set switchItems to 2				endif			endif		endif		;handle updates		let repeatArray[slotId] := 0		if(switchItems == 1 && tempItem != 0 && tempItem != DrakeEmptyItem) ;just swap			if(actorFemale == 1 && isBipedModelPathValid 1 tempItem == 1)				set wearsAdapted to compareFemaleBipedPath $tagCode tempItem			else				set wearsAdapted to compareMaleBipedPath $tagCode tempItem			endif			if(wearsAdapted == 1) ;has passed gender-dependent validity check above				set slotCode to getEquipmentSlot actslotContent				set healthBuffer to actorRef.getEquippedCurrentHealth slotCode				actorRef.addItemNS tempItem 1				actorRef.equipItemNS tempItem				actorRef.removeItemNS actslotContent 1				actorRef.setEquippedCurrentHealth healthBuffer slotCode			else				set switchItems to 3 ;use replacer template for missing gender for the time being			endif		endif		if(switchItems == 2) ;equip bodyparts			if(tempItem == 0 || tempItem == DrakeEmptyItem)				actorRef.unequipItemNS actslotContent			else				actorRef.equipItemNS tempItem			endif		endif		if(switchItems == 3) ;check for presence of alternatives			let index := ar_Find actslotContent itemArray["original"] ;first check if we're coming from switchItems == 1			if eval (index == "")				let index := $(ar_Size itemArray["original"]) ;else proceed creating a new entry as usual			endif			ForEach item2 <- confArray[slotNum]["combinations"]				let tagId := item2["value"]["tag"]				let tagCode := ".nif|_" + tagId + ".nif"				if(isBipedModelPathValid 0 actslotContent == 0 || isBipedModelPathValid 1 actslotContent == 0) ;at least one gender is missing from the start					if(slotEnforced == 1) ;forced unequipping for this slot						let tempItem2 := Call DrakeDragonRaceReplacerSelectFunction slotId confArray actslotContent ;determine fitting replacer template for current settings and item to replace visuals of					endif				endif				if(isBipedModelPathValid 0 actslotContent == 1)					copyMaleBipedPath actslotContent DrakeTempItem				else					setMaleBipedPath "empty" DrakeTempItem					if(slotEnforced == 1) ;forced unequipping for this slot						if(tempItem2 != DrakeEmptyItem && tempItem2 != 0)							if(isBipedModelPathValid 0 tempItem2 == 1)								copyMaleBipedPath tempItem2 DrakeTempItem							endif						endif					endif				endif				modMaleBipedPath $tagCode DrakeTempItem				if(isBipedModelPathValid 1 actslotContent == 1)					copyFemaleBipedPath actslotContent DrakeTempItem				else					setFemaleBipedPath "empty" DrakeTempItem					if(slotEnforced == 1) ;forced unequipping for this slot						if(tempItem2 != DrakeEmptyItem && tempItem2 != 0)							if(isBipedModelPathValid 1 tempItem2 == 1)								copyFemaleBipedPath tempItem2 DrakeTempItem							endif						endif					endif				endif				modFemaleBipedPath $tagCode DrakeTempItem				if(isBipedModelPathValid 0 DrakeTempItem == 0 || isBipedModelPathValid 1 DrakeTempItem == 0) ;at least one gender is missing adapted clothing					if(slotEnforced == 1) ;forced unequipping for this slot						let tempItem2 := Call DrakeDragonRaceReplacerSelectFunction slotId confArray actslotContent ;determine fitting replacer template for current settings and item to replace visuals of					endif				endif				if(isBipedModelPathValid 0 DrakeTempItem == 1 || isBipedModelPathValid 1 DrakeTempItem == 1 || slotEnforced == 1) ;adapted clothing exists for at least one gender or forced unequipping for this slot					if eval ((ar_HasKey itemArray["original"] index) == 0)						let itemArray["original"][index] := actslotContent ;do this only once					endif					if eval ((ar_HasKey itemArray[tagId] index) == 0)						set tempItem to cloneForm actslotContent ;create new entry					else						let tempItem := itemArray[tagId][index] ;update existing one instead					endif				endif				if(isBipedModelPathValid 0 DrakeTempItem == 1) ; male does exist					copyMaleBipedPath DrakeTempItem tempItem				else					if(slotEnforced == 1) ;forced unequipping for this slot						setMaleBipedPath "empty" tempItem						if(tempItem2 != DrakeEmptyItem && tempItem2 != 0)							if(isBipedModelPathValid 0 tempItem2 == 1)								copyMaleBipedPath tempItem2 tempItem								modMaleBipedPath $tagCode tempItem							endif						endif					endif				endif				if(isBipedModelPathValid 1 DrakeTempItem == 1) ; female does exist					copyFemaleBipedPath DrakeTempItem tempItem				else					if(slotEnforced == 1) ;forced unequipping for this slot						setFemaleBipedPath "empty" tempItem						if(tempItem2 != DrakeEmptyItem && tempItem2 != 0)							if(isBipedModelPathValid 1 tempItem2 == 1)								copyFemaleBipedPath tempItem2 tempItem								modFemaleBipedPath $tagCode tempItem							endif						endif					endif				endif				let itemArray[tagId][index] := tempItem			Loop			if eval (ar_HasKey itemArray["original"] index) ;at least 1 adapted clothing was found during foreach				let repeatArray[slotId] := 1 ;do exchange next frame			else ;no adapted clothing found				if(slotEnforced == 1) ;forced unequipping for this slot					let tempItem := defaultItemArray[slotId][shouldBeWearing]					if(tempItem == 0 || tempItem == DrakeEmptyItem)						actorRef.unequipItemNS actslotContent					else						actorRef.equipItemNS tempItem					endif				endif			endif		endif	endif	;clean up string_vars	sv_Destruct slotId	sv_Destruct index	sv_Destruct tagId	sv_Destruct tagCode	sv_Destruct currentlyWearing	sv_Destruct shouldBeWearingend


Well, here's a "hopefully" neat and clever way to keep track of all tokens ever provided to actors, be it NPCs or the player, race control tokens or reverter tokens.
This little invention manages a list of actors which already got a token.
It checks for "internal" version numbers of these in its arrays and will immediately replace any left-over tokens with out-dated scripts (in case a token's script didn't update, don't know if it can happen at all, but now this system will know when, just in case).
Also if it finds any tokens on actors not in its list, it replaces them right away with proper ones.
The tokens should regularly update their respective "timeout" records in its lists, while the tracker itself will make them count down, and whenever one of these entries reaches "0", which usually means its token didn't update for a long time, i.e. "is dead", it will be removed and, if necessary, replaced by a working one.

Now whenever a script on a token stalls for whatever reason, it will stop resetting its timeout and thus ultimately end up being removed and replaced.
As an additional bonus feature, now that I always have a list of all provided race control and reverter tokens and the actors carrying them, I can also easily implement something to remove all race control tokens, revert all items in inventories and then remove all reverter tokens either, before uninitializing and shutting down the main control quest, so you can safely update a running game with new releases of my scripts in the future.
Well, if everything turns out as planned, that is, I think this little feature will come in really handy.

Alright, here's the quest script for the new quest "DrakeDragonRaceTokenTrackingQuest", "start game enabled" and nothing else:
scn DrakeDragonRaceTokenTrackingQuestScriptarray_var actorArrayarray_var raceTokenArrayarray_var reverterTokenArrayshort initshort timeOutCountshort replaceRaceTokenshort replaceReverterTokenstring_var index1string_var index2string_var versionNumberref containerReffloat fQuestDelayTimebegin gameMode 	set fQuestDelayTime to 0.5 	 	if(init == 0) 		let actorArray := ar_Construct StringMap 		let raceTokenArray := ar_Construct StringMap 		let reverterTokenArray := ar_Construct StringMap 		let versionNumber := "0.0.7_0.0" 		set timeOutCount to 100 		let index1 := "" 		let index2 := "" 		set init to 1 	endif 	 	if eval ((ar_Size raceTokenArray) > 0) 		if eval (index1 == "" || index1 == ar_Last raceTokenArray) 			let index1 := ar_First raceTokenArray 		endif		set replaceRaceToken to 0 		let containerRef := actorArray[index1] 		if(containerRef != 0)	 		if eval (raceTokenArray[index1]["version"] != versionNumber)	 			set replaceRaceToken to 1	 		endif	 		if eval (raceTokenArray[index1]["timeout"] > 0)		 		let raceTokenArray[index1]["timeout"] := raceTokenArray[index1]["timeout"] - 1	 		else	 			set replaceRaceToken to 1	 		endif	 			 		if(replaceRaceToken == 1)	 			if(containerRef.getItemCount DrakeDragonRaceToken > 0)		 			containerRef.removeItemNS DrakeDragonRaceToken 1		 		endif		 		if(containerRef.getInSameCell player == 1)	 				containerRef.addItemNS DrakeDragonRaceToken 1	 			endif	 		endif	 	endif 		 		let index1 := ar_Next raceTokenArray index1 	endif 	if eval ((ar_Size reverterTokenArray) > 0) 		if eval (index2 == "" || index2 == ar_Last reverterTokenArray) 			let index2 := ar_First reverterTokenArray 		endif		set replaceReverterToken to 0 		let containerRef := actorArray[index2] 		if(containerRef != 0)	 		if eval (reverterTokenArray[index2]["timeout"] > 0)		 		let reverterTokenArray[index2]["timeout"] := reverterTokenArray[index2]["timeout"] - 1	 		else	 			set replaceReverterToken to 1	 		endif	 			 		if(replaceReverterToken == 1)	 			if(containerRef.getItemCount DrakeDragonRaceReverterToken > 0)		 			containerRef.removeItemNS DrakeDragonRaceReverterToken 1		 		endif		 		if(containerRef.getInSameCell player == 1)		 			containerRef.addItemNS DrakeDragonRaceReverterToken 1		 		endif	 		endif	 	endif	 	 		let index2 := ar_Next reverterTokenArray index2 	endifend


The new spell script for the scanner aura:
scn DrakeDragonRaceScannerAuraScriptshort GAT ; GetActorTypearray_var confArrayarray_var actorArrayarray_var raceTokenArrayarray_var reverterTokenArraystring_var raceIdstring_var indexref actorRefbegin scriptEffectUpdate	if(DrakeDragonRaceQuest.init != 1 || DrakeDragonRaceTokenTrackingQuest.init != 1)		dispel DrakeDragonRaceScannerAura		return	endif	let confArray := DrakeDragonRaceQuest.confArray	let actorArray := DrakeDragonRaceTokenTrackingQuest.actorArray	let raceTokenArray := DrakeDragonRaceTokenTrackingQuest.raceTokenArray	let reverterTokenArray := DrakeDragonRaceTokenTrackingQuest.reverterTokenArray	set GAT to (getIsCreature * 8) + (getIsGhost) + (getVampire * 2) + (isActor) + (isEssential * 4) - 1	if(getIsReference player == 1 || (GAT >= 0 && GAT < 8)) ; only run on actors and only on NPCs, dont run on creatures!		set actorRef to getSelf		let index := ar_Find actorRef actorArray		if eval (index == "") ;not in list, must be a non-tracked one			if(getItemCount DrakeDragonRaceReverterToken > 0)				removeItemNS DrakeDragonRaceReverterToken 1			endif			if(getItemCount DrakeDragonRaceToken > 0)				removeItemNS DrakeDragonRaceToken 1			endif		endif		let raceId := ar_Find (getRace) confArray["races"]		if eval (raceId == "") ;definitely is NOT a Dragon			if(getItemCount DrakeDragonRaceReverterToken < 1)				addItemNS DrakeDragonRaceReverterToken 1			endif		else			if(getItemCount DrakeDragonRaceToken < 1)				addItemNS DrakeDragonRaceToken 1			endif		endif	endif	if(getItemCount DrakeDragonEyeSensesMarker < 1)		addItemNS DrakeDragonEyeSensesMarker 1	endif		dispel DrakeDragonRaceScannerAuraend


The new race control token script:
scn DrakeDragonRaceTokenScriptref actorRefref actorRaceref actslotContentref oldslotContentref tempItemshort initshort actorFemaleshort switchItemsshort wearsAdaptedshort foundAdaptedshort requirementshort foundRequirementshort currentRequirementshort slotCodeshort slotNumshort index2long frameNumlong slotMasklong tempNumarray_var confArrayarray_var itemArrayarray_var defaultItemArrayarray_var slotArrayarray_var repeatArrayarray_var keysArrayarray_var itemarray_var item2array_var actorArrayarray_var raceTokenArrayarray_var reverterTokenArraystring_var indexstring_var tagIdstring_var tagCodestring_var currentlyWearingstring_var shouldBeWearingstring_var slotIdstring_var raceIdstring_var actorIdfloat healthBufferbegin gameMode	if eval(-1 == ar_Size confArray)		set init to 0	endif	if(init != 1)		set actorRef to 0		if(DrakeDragonRaceQuest.init != 1)			return		endif		if(DrakeDragonRaceTokenTrackingQuest.init != 1)			return		endif		let confArray := DrakeDragonRaceQuest.confArray		let itemArray := DrakeDragonRaceQuest.itemArray		let defaultItemArray := DrakeDragonRaceQuest.defaultItemArray		let actorArray := DrakeDragonRaceTokenTrackingQuest.actorArray		let raceTokenArray := DrakeDragonRaceTokenTrackingQuest.raceTokenArray		let reverterTokenArray := DrakeDragonRaceTokenTrackingQuest.reverterTokenArray		let slotArray := ar_Construct StringMap		let repeatArray := ar_Construct StringMap		let actorId := ""		set frameNum to 0		set actorFemale to -1		set init to 1	endif	if(actorRef == 0)		set actorRef to getContainer		return	endif	if(actorFemale == -1)		set actorFemale to actorRef.isFemale	endif	if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRaceToken == 1)		actorRef.playMagicShaderVisuals DrakeDEFriendlyDetectedXR	else		actorRef.stopMagicShaderVisuals DrakeDEFriendlyDetectedXR	endif		if(actorRace != actorRef.getRace)		set actorRace to actorRef.getRace		let confArray := DrakeDragonRaceQuest.confArray		let raceId := ar_Find actorRace confArray["races"]		if eval (raceId != "")			let confArray := confArray[raceId] ;race-specific part of confArray			let keysArray := ar_Keys confArray			ForEach item <- keysArray				let slotNum := item["value"]				let slotId := confArray[slotNum]["slotname"]				let slotArray[slotId] := DrakeEmptyItem ;initialize empty				let repeatArray[slotId] := 0			Loop			set slotNum to 0			let slotId := ""			if(DrakeDragonRaceQuest.debug == 1 && actorRef.getIsReference player == 1)				printToConsole "Player race identified as dragon."			endif		else			;is not a dragon, remove bodyparts, if present!			ForEach item <- defaultItemArray				ForEach item2 <- item["value"]					let tempItem := item2["value"]					set tempNum to actorRef.getItemCount tempItem					if(tempItem != DrakeEmptyItem && tempNum > 0)						actorRef.removeItemNS tempItem tempNum					endif				Loop			Loop			if(DrakeDragonRaceQuest.debug == 1 && actorRef.getIsReference player == 1)				printToConsole "Player race identified as NON-dragon!"			endif			removeMe ;is not a dragon, should not have this!		endif		return	endif	if eval (actorId == "")		let actorId := ar_Find actorRef actorArray		if eval (actorId == "")			let actorId := $(ar_Size actorArray)			let actorArray[actorId] := actorRef ;add actor to tracking list		endif		return	endif		if(frameNum < DrakeDragonRaceQuest.framesToSkip)		set frameNum to (frameNum + 1)		return ;dont run every frame	endif	if eval (ar_HasKey raceTokenArray actorId == 0) ;initialize		let raceTokenArray[actorId] := ar_Construct StringMap		let raceTokenArray[actorId]["version"] := DrakeDragonRaceTokenTrackingQuest.versionNumber		let raceTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount	else		let raceTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount ;keep i-am-alive ticker ticking	endif	if eval (slotNum <= 0 || slotNum == ar_Last confArray)		let slotNum := ar_First confArray		set frameNum to 0 ;finished all slots this run	endif	let slotId := confArray[slotNum]["slotname"]	if(actorRef.getInSameCell player != 1)		if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRaceToken == 1)			actorRef.stopMagicShaderVisuals DrakeDEFriendlyDetectedXR		endif		set init to 0		removeMe	endif	;provide with bodyparts	ForEach item2 <- defaultItemArray[slotId]		let tempItem := item2["value"]		if(tempItem != DrakeEmptyItem && actorRef.getItemCount tempItem < 1)			actorRef.addItemNS tempItem 1		endif	Loop	let oldslotContent := slotArray[slotId]	Call DrakeDragonRaceTokenFunction confArray, repeatArray, actorRef, actorFemale, slotNum, oldslotContent	let slotMask := confArray[slotNum]["slotmask"]	set oldslotContent to (actorRef.getEquipmentSlotMask slotMask)	let slotArray[slotId] := oldslotContent	let slotNum := ar_Next confArray slotNum ;proceed with next slot next frameendbegin menuMode 1002 || 1008	if eval(-1 == ar_Size confArray)		set init to 0	endif	if(init != 1)		set actorRef to 0		if(DrakeDragonRaceQuest.init != 1)			return		endif		if(DrakeDragonRaceTokenTrackingQuest.init != 1)			return		endif		let confArray := DrakeDragonRaceQuest.confArray		let itemArray := DrakeDragonRaceQuest.itemArray		let defaultItemArray := DrakeDragonRaceQuest.defaultItemArray		let actorArray := DrakeDragonRaceTokenTrackingQuest.actorArray		let raceTokenArray := DrakeDragonRaceTokenTrackingQuest.raceTokenArray		let reverterTokenArray := DrakeDragonRaceTokenTrackingQuest.reverterTokenArray		let slotArray := ar_Construct StringMap		let repeatArray := ar_Construct StringMap		let actorId := ""		set frameNum to 0		set actorFemale to -1		set init to 1	endif	if(actorRef == 0)		set actorRef to getContainer		return	endif	if(actorRef.getIsReference player != 1)		return ;NPCs don't need control during MenuMode	endif	if(actorFemale == -1)		set actorFemale to actorRef.isFemale	endif	if(actorRace != actorRef.getRace)		set actorRace to actorRef.getRace		let confArray := DrakeDragonRaceQuest.confArray		let raceId := ar_Find actorRace confArray["races"]		if eval (raceId != "")			let confArray := confArray[raceId] ;race-specific part of confArray			let keysArray := ar_Keys confArray			ForEach item <- keysArray				let slotNum := item["value"]				let slotId := confArray[slotNum]["slotname"]				let slotArray[slotId] := DrakeEmptyItem ;initialize empty				let repeatArray[slotId] := 0			Loop			set slotNum to 0			let slotId := ""			if(DrakeDragonRaceQuest.debug == 1 && actorRef.getIsReference player == 1)				printToConsole "Player race identified as dragon."			endif		else			;is not a dragon, remove bodyparts, if present!			ForEach item <- defaultItemArray				ForEach item2 <- item["value"]					let tempItem := item2["value"]					set tempNum to actorRef.getItemCount tempItem					if(tempItem != DrakeEmptyItem && tempNum > 0)						actorRef.removeItemNS tempItem tempNum					endif				Loop			Loop			if(DrakeDragonRaceQuest.debug == 1 && actorRef.getIsReference player == 1)				printToConsole "Player race identified as NON-dragon!"			endif			removeMe ;is not a dragon, should not have this!		endif		return	endif	if eval (actorId == "")		let actorId := ar_Find actorRef actorArray		if eval (actorId == "")			let actorId := $(ar_Size actorArray)			let actorArray[actorId] := actorRef ;add actor to tracking list		endif		return	endif	if(frameNum < DrakeDragonRaceQuest.framesToSkip)		set frameNum to (frameNum + 1)		return ;dont run every frame	endif	if eval (ar_HasKey raceTokenArray actorId == 0) ;initialize		let raceTokenArray[actorId] := ar_Construct StringMap		let raceTokenArray[actorId]["version"] := DrakeDragonRaceTokenTrackingQuest.versionNumber		let raceTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount	else		let raceTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount ;keep i-am-alive ticker ticking	endif		if eval (slotNum <= 0 || slotNum == ar_Last confArray)		let slotNum := ar_First confArray		set frameNum to 0 ;finished all slots this run	endif	let slotId := confArray[slotNum]["slotname"]	if(actorRef.getInSameCell player != 1)		if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRaceToken == 1)			actorRef.stopMagicShaderVisuals DrakeDEFriendlyDetectedXR		endif		set init to 0		removeMe	endif	;provide with bodyparts	ForEach item2 <- defaultItemArray[slotId]		let tempItem := item2["value"]		if(tempItem != DrakeEmptyItem && actorRef.getItemCount tempItem < 1)			actorRef.addItemNS tempItem 1		endif	Loop	let oldslotContent := slotArray[slotId]			call DrakeDragonRaceTokenFunction confArray, repeatArray, actorRef, actorFemale, slotNum, oldslotContent	let slotMask := confArray[slotNum]["slotmask"]	set oldslotContent to (actorRef.getEquipmentSlotMask slotMask)	let slotArray[slotId] := oldslotContent	let slotNum := ar_Next confArray slotNum ;proceed with next slot next frameend


You see how much shorter this one got by using the same user-function where previously was the whole code in both blocks?
Now I can only hope I didn't screw up the interface of this function!

And the new reverter token script:
scn DrakeDragonRaceReverterTokenScriptref actorRefref tempItemref tempItem2array_var itemarray_var item2long numItemslong endilong ilong tempNumstring_var tagIdstring_var indexlong frameNumarray_var itemArrayarray_var defaultItemArrayarray_var actorArrayarray_var raceTokenArrayarray_var reverterTokenArraystring_var actorIdshort equippedshort initshort init2float healthBuffershort slotCodebegin menuMode 1002 || 1008	if(init != 1)		set actorRef to 0		if(DrakeDragonRaceQuest.init != 1)			return		endif		if(DrakeDragonRaceTokenTrackingQuest.init != 1)			return		endif		let itemArray := DrakeDragonRaceQuest.itemArray		let defaultItemArray := DrakeDragonRaceQuest.defaultItemArray		let actorArray := DrakeDragonRaceTokenTrackingQuest.actorArray		let raceTokenArray := DrakeDragonRaceTokenTrackingQuest.raceTokenArray		let reverterTokenArray := DrakeDragonRaceTokenTrackingQuest.reverterTokenArray		let actorId := ""		set frameNum to 0		set init2 to 0		set init to 1	endif	if eval (-1 == ar_Size itemArray) ;shouldn't happen, but just in case		if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRevToken == 1)			actorRef.stopMagicShaderVisuals DrakeDEHostileDetectedXR		endif		removeMe	endif	if(actorRef == 0)		set actorRef to getContainer		return	endif	if eval (actorId == "")		let actorId := ar_Find actorRef actorArray		if eval (actorId == "")			let actorId := $(ar_Size actorArray)			let actorArray[actorId] := actorRef ;add actor to tracking list		endif		return	endif	if(init2 != 1)		set numItems to actorRef.getNumItems		set i to (numItems - 1)		set init2 to 1	endif	if(frameNum < DrakeDragonRaceQuest.framesToSkip)		set frameNum to (frameNum + 1)		return ;dont run every frame	else		set frameNum to 0		set endi to (i - DrakeDragonRaceQuest.itemsRevertPerFrame)	endif	if eval (ar_HasKey reverterTokenArray actorId == 0) ;initialize		let reverterTokenArray[actorId] := ar_Construct StringMap		let reverterTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount	else		let reverterTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount ;keep i-am-alive ticker ticking	endif	label	if(i >= endi && i >= 0)		set tempItem to actorRef.getInventoryObject i		if((isArmor tempItem == 1) || (isClothing tempItem == 1))			ForEach item <- itemArray				if eval (item["key"] == "original")					Continue				endif				let tagId := item["key"]				let index := ar_Find tempItem itemArray[tagId]				if eval (index != "") ;needs exchange					let tempItem2 := itemArray["original"][index]					set equipped to (actorRef.getEquipped tempItem)					if(equipped == 1)						set slotCode to getEquipmentSlot tempItem						set healthBuffer to actorRef.getEquippedCurrentHealth slotCode					endif					actorRef.removeItemNS tempItem 1					actorRef.addItemNS tempItem2 1					if(equipped == 1)						actorRef.equipItemNS tempItem2						actorRef.setEquippedCurrentHealth healthBuffer slotCode					endif				endif			Loop		endif		set i to (i - 1)		goto	endif	if(i < 0)		set init to 0		if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRevToken == 1)			actorRef.stopMagicShaderVisuals DrakeDEHostileDetectedXR		endif		;remove bodyparts, if present!		ForEach item <- defaultItemArray			ForEach item2 <- item["value"]				let tempItem := item2["value"]				set tempNum to actorRef.getItemCount tempItem				if(tempItem != DrakeEmptyItem && tempNum > 0)					actorRef.removeItemNS tempItem tempNum				endif			Loop		Loop		removeMe ;we're done, remove us	endifendbegin gameMode	if(init != 1)		set actorRef to 0		if(DrakeDragonRaceQuest.init != 1)			return		endif		if(DrakeDragonRaceTokenTrackingQuest.init != 1)			return		endif		let itemArray := DrakeDragonRaceQuest.itemArray		let defaultItemArray := DrakeDragonRaceQuest.defaultItemArray		let actorArray := DrakeDragonRaceTokenTrackingQuest.actorArray		let raceTokenArray := DrakeDragonRaceTokenTrackingQuest.raceTokenArray		let reverterTokenArray := DrakeDragonRaceTokenTrackingQuest.reverterTokenArray		let actorId := ""		set frameNum to 0		set init2 to 0		set init to 1	endif	if eval (-1 == ar_Size itemArray) ;shouldn't happen, but just in case		if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRevToken == 1)			actorRef.stopMagicShaderVisuals DrakeDEHostileDetectedXR		endif		removeMe	endif	if(actorRef == 0)		set actorRef to getContainer		return	endif	if eval (actorId == "")		let actorId := ar_Find actorRef actorArray		if eval (actorId == "")			let actorId := $(ar_Size actorArray)			let actorArray[actorId] := actorRef ;add actor to tracking list		endif		return	endif	if(init2 != 1)		set numItems to actorRef.getNumItems		set i to (numItems - 1)		set init2 to 1	endif		if(frameNum < DrakeDragonRaceQuest.framesToSkip)		set frameNum to (frameNum + 1)		return ;dont run every frame	else		set frameNum to 0		set endi to (i - DrakeDragonRaceQuest.itemsRevertPerFrame)	endif	if eval (ar_HasKey reverterTokenArray actorId == 0) ;initialize		let reverterTokenArray[actorId] := ar_Construct StringMap		let reverterTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount	else		let reverterTokenArray[actorId]["timeout"] := DrakeDragonRaceTokenTrackingQuest.timeOutCount ;keep i-am-alive ticker ticking	endif	if(DrakeDragonRaceQuest.debug == 1)		if(DrakeDragonRaceQuest.debugShowRevToken == 1)			actorRef.playMagicShaderVisuals DrakeDEHostileDetectedXR		else			actorRef.stopMagicShaderVisuals DrakeDEHostileDetectedXR		endif	endif	label	if(i >= endi && i >= 0)		set tempItem to actorRef.getInventoryObject i		if((isArmor tempItem == 1) || (isClothing tempItem == 1))			ForEach item <- itemArray				if eval (item["key"] == "original")					Continue				endif				let tagId := item["key"]				let index := ar_Find tempItem itemArray[tagId]				if eval (index != "") ;needs exchange					let tempItem2 := itemArray["original"][index]					set equipped to (actorRef.getEquipped tempItem)					if(equipped == 1)						set slotCode to getEquipmentSlot tempItem						set healthBuffer to actorRef.getEquippedCurrentHealth slotCode					endif					actorRef.removeItemNS tempItem 1					actorRef.addItemNS tempItem2 1					if(equipped == 1)						actorRef.equipItemNS tempItem2						actorRef.setEquippedCurrentHealth healthBuffer slotCode					endif				endif			Loop		endif		set i to (i - 1)		goto	endif	if(i < 0)		set init to 0		if(DrakeDragonRaceQuest.debug == 1 && DrakeDragonRaceQuest.debugShowRevToken == 1)			actorRef.stopMagicShaderVisuals DrakeDEHostileDetectedXR		endif		;remove bodyparts, if present!		ForEach item <- defaultItemArray			ForEach item2 <- item["value"]				let tempItem := item2["value"]				set tempNum to actorRef.getItemCount tempItem				if(tempItem != DrakeEmptyItem && tempNum > 0)					actorRef.removeItemNS tempItem tempNum				endif			Loop		Loop		removeMe ;we're done, remove us	endifend


The tracking is done by the tokens and the other scripts, but the regular checks for validity of the provided tokens or stalled scripts are for now only taking place in "gamemode".
I could expand this to menumode as well later, but I thought not letting items get removed or added in menumode without knowing about the current circumstances would be better and safer.

Now, I only hope this new approach will work as intended... and that I didn't make any stupid syntax mistakes anywhere anymore. :rolleyes:

Now when you saved this and started the game with one of your savegames, by all means let the first thing you do before re-starting the main control quest be to type
"set DrakeDragonRaceQuest.initArrays to 1"
into console, so this section of the script shouldn't be entered anymore even when you do
"set DrakeDragonRaceQuest.init to 0"
next to take over all changes to the arrays and such.
If you start a new game though, this of course won't be necessary at all.


I can only hope this all works the way I intended it to do. My apologies in advance, if it won't.

I know it's quite a lot, but currently the only way for you to test my latest (hopefully)"improvements". I'm sorry.

Now I hope at least some of you will try out the latest changes and tell me if there's anything still working at all.
(Please keep in mind you can only say a feature is broken when it doesn't work on a "new" game, as in "created after installation".)
User avatar
N Only WhiTe girl
 
Posts: 3353
Joined: Mon Oct 30, 2006 2:30 pm

Post » Wed Mar 09, 2011 7:04 am

I only know the basics around the CS. I think I'll give it a go anyways. It may take me a few days so I don't get too frustrated in 1 sitting. :)
User avatar
Rachie Stout
 
Posts: 3480
Joined: Sun Jun 25, 2006 2:19 pm

Post » Wed Mar 09, 2011 6:51 am

Are you going to use the 4-limbed movement for running?
User avatar
RObert loVes MOmmy
 
Posts: 3432
Joined: Fri Dec 08, 2006 10:12 am

Post » Wed Mar 09, 2011 7:55 am

Are you going to use the 4-limbed movement for running?

I don't know yet what its final application will be.
I'm personally wishing for it to be freely toggleable at all times, maybe even driven by certain circumstances (as I said, Drake cannot keep standing/walking upright for too long, because he's too young and it's exhausting).
But I don't yet know exactly what can be done and what can't.

Let me first finish the animations, then I will see how to put them ingame.
By this time I should be able to mod my ESP myself again either, or so I hope at least.
User avatar
James Potter
 
Posts: 3418
Joined: Sat Jul 07, 2007 11:40 am

Post » Wed Mar 09, 2011 5:33 am

I don't know yet what its final application will be.
I'm personally wishing for it to be freely toggleable at all times, maybe even driven by certain circumstances (as I said, Drake cannot keep standing/walking upright for too long, because he's too young and it's exhausting).
But I don't yet know exactly what can be done and what can't.

Let me first finish the animations, then I will see how to put them ingame.
By this time I should be able to mod my ESP myself again either, or so I hope at least.


ahh, now that would be a cool feature!

The current textures are not released yet are they? I think the new ones you've shown are great! The chest is definately more befitting to a dragon race. Where did the horns on the head go btw?

Also, I don't know if you've already done this, but when using hand to hand combat can you make it where he claws instead of punches?
User avatar
Dragonz Dancer
 
Posts: 3441
Joined: Sat Jun 24, 2006 11:01 am

Post » Wed Mar 09, 2011 3:25 am

i've allready suggested the possibility of claws/bite attacks and i am shure it has been suggested many times before, but drake is only one person, he cant do everything at once, and creating a new animation, new scripts and new textures is alot to do. (and he still needs to sleep, :snoring:)

btw, those textures are awsome, they look really good.

and as for the saphire dragon i told you about before, i have thought about it and i think it can be done with mainly deep blue and silver highlights (no rush with this, i just had to tell someone before i forgot, (because i will :rolleyes: ))
User avatar
FABIAN RUIZ
 
Posts: 3495
Joined: Mon Oct 15, 2007 11:13 am

Post » Tue Mar 08, 2011 8:49 pm

i've allready suggested the possibility of claws/bite attacks and i am shure it has been suggested many times before, but drake is only one person, he cant do everything at once, and creating a new animation, new scripts and new textures is alot to do. (and he still needs to sleep, :snoring:)

btw, those textures are awsome, they look really good.

and as for the saphire dragon i told you about before, i have thought about it and i think it can be done with mainly deep blue and silver highlights (no rush with this, i just had to tell someone before i forgot, (because i will :rolleyes: ))


Hmm, well I wasn't trying to sound demanding about it or anything. It was just a suggestion.

And yes, the textures are truly great! Or as Tony the Tiger says, "They're GRRRRRRRRREAT!"




.....okay, I feel like an idiot now......
User avatar
NO suckers In Here
 
Posts: 3449
Joined: Thu Jul 13, 2006 2:05 am

Post » Wed Mar 09, 2011 6:05 am

its ok, we all feel like an idiot at some point, (personally, i feel like an idiot now) sorry if i seemed too hard, it isn't my place to be the one judging people (it's not my mod) but i am glad to see that it isn't just me thinking about the possibility of claw attacks :bigsmile:
User avatar
Laura Cartwright
 
Posts: 3483
Joined: Mon Sep 25, 2006 6:12 pm

Post » Wed Mar 09, 2011 9:50 am

Hey now, absolutely nobody has to feel like an idiot in my WIP threads... well, apart from me occasionally.

Well, consider the current textures you were adressing as being released right now!
Here's the download link:
http://www.megaupload.com/?d=6N12E2K4

It contains the new and improved wing meshes, all wing membrane textures I did, plus the scaly textures for male and female I created. The female ones were taking some time, that's the only cause for why I couldn't release it yesterday already. May I beg your attention though... the scaly textures are contained in a seperate folder inside "textures/characters". I conveniently named it "DrakeDragonScaly". Right now you can only use one or the other, but at least you can decide about this on a per-race basis.
If you replace the files of the species you want with the scaly ones or change the textures used by the race in the ESP itself is up to you, both should work fine.
Replacing the skeletons though is mandatory for the new meshes to work!
I included "skeleton.nif" and "skeletonbeast.nif" in "_male" as well as "skeleton.nif" and "skeleton_loupsombre.nif" in "_1stperson". Latter is a replacement for when you are also using Loup Sombre's "3rd-Person Animations in 1st-Person View" like I do. It has a different 1st-person skeleton, so that's a compatible one.

Unfortunately this is currently the only way... that is of course only if you don't figure out how simple a task it actually is to add sub-species/races to my race control quest script. :rolleyes:

Now as for the horns on the head, they actually didn't go anywhere. I am just unable to post any ingame screenshots, due to me not being able to get ingame, due to me not having a machine to run the game on, etc. etc. etc.
So these are either from Blender or from NifSkope, and in both it isn't really easy to import proper FaceGen-ready hairstyles/horns without them being of little-to-no use to you afterwards. So that's why they're missing in the pictures.

Regarding the claw attacks, I don't know what can be done and what can't right now, but as Drake also makes use of his claws in combat when the situation requires/allows it, this is a feature I already have on my list.
Creating the animations shouldn't be that complicated, now that I'm getting used to this business. But actually making use of them ingame requires me doing some further research for what is possible currently.

Don't ever feel uneasy about making suggestions. Just keep them coming, even if they were posted over and over already. That's what this thread is meant for after all.

lonewolf_kai, if you feel uneasy because of your Tony the Tiger quote though, I could understand it.
This particular sentence is new to me, but here in Germany he's saying something very similar. Even the emphasis is on the exact same sillable of the German expression of that word. Just a funny side note.
However, there's really no need for uneasy feelings or whatever in general around here anyways, not with me. :angel:
User avatar
Chloe Yarnall
 
Posts: 3461
Joined: Sun Oct 08, 2006 3:26 am

Post » Wed Mar 09, 2011 11:44 am

i have an idea for the claw attacks, i have seen a mod (werewolf mod) on tes nexus. in it it appears thay you use claws to attack your opponent, what they have really done is create a new weapon that appears to be claws but is actually a sword with a changed audio and meshes. from here a new animation shoudn't be that hard. (i know it's not mutch but it's a start)

i cant get onto tes nexus atm, but when i do i'll post a link to it incase people cant find it.

(note, i remembered this when i accidentally turned my dragon charachter into a werewolf because i forgot i had the mod still running.)
User avatar
Reven Lord
 
Posts: 3452
Joined: Mon May 21, 2007 9:56 pm

Post » Wed Mar 09, 2011 7:06 am

Sorry I'm not much help as of late. All the CS stuff blows over my head. The only advice I can ever offer are on an artistic scale. Anyway. I'll check out these updated textures ASAP. :3

Absolutely no rush at all (take all the time you need- or never, if you so wish), but was there any update on the Equinox textures that I might have missed?
User avatar
Neliel Kudoh
 
Posts: 3348
Joined: Thu Oct 26, 2006 2:39 am

Post » Tue Mar 08, 2011 11:34 pm

I'm dling right now. I'll back those up in case megaupload decides to mega blow up your stuff again. I'll try and post screenies either in a bit or tomorrow. Driving in a snow squall for an hour does not help in the energy department. xD

Edit 1:
Drake, where there supposed to be any enhanced head textures?

Edit 2:
Some Pics!

Black & Red
http://img.photobucket.com/albums/v628/lordsoulstrike/Drake%20Dragon/pray1.gif
http://img.photobucket.com/albums/v628/lordsoulstrike/Drake%20Dragon/pray2.gif
http://img.photobucket.com/albums/v628/lordsoulstrike/Drake%20Dragon/pray3.gif

I'll see about more tomorrow. As of right now I need to get to bed. :snoring:
User avatar
Alister Scott
 
Posts: 3441
Joined: Sun Jul 29, 2007 2:56 am

Post » Wed Mar 09, 2011 1:06 am

Hey Drake the Dragon :wave:
I can't seem to find the albino texture for the head in the last texture pack :huh:

Pictures ( warning- large files, may take some time to load )
http://img137.imageshack.us/img137/5420/81256158.png
http://img59.imageshack.us/img59/7633/95144234.png
http://img19.imageshack.us/img19/4516/54991458.png
User avatar
Cheryl Rice
 
Posts: 3412
Joined: Sat Aug 11, 2007 7:44 am

Next

Return to IV - Oblivion