Jump to content

[LE] Can a creature's skin alter with the terrain?


cumbrianlad

Recommended Posts

Before I explain further, I'd like to ask if you could also take a look at my post about pet follower problems! That's driving me insane and I really need it sorted.

 

Anyway, I made a custom Dwarven spider follower and gave it a new skin which has camouflage patterns (It's a stealth spider. It's camouflaged, has high stealth skills and makes far less noise than a regular Dwemer spider. It even has the perk 'Quiet Casting' for its destruction spells... nice!). While I was testing it, I dismissed it near Azura's shrine and followed it back to it's package destination to see if I wanted to alter any of the package flags.

 

It's a long way to Tipperary and it's also a long way from Azura's shrine to the spider's home near Riften! Thank the Divines I made its preferred speed 'Run'! On the way my character and the spider crossed all sorts of terrain. It's camo skin worked so well that I almost lost track of it on several occasions.* It blended well with tundra, woodland and even road textures weren't bad. In green caves it almost disappears. However, on the snowy landscapes it stuck out like a sore thumb.

 

I had heaps of time to ponder all sorts of weird ideas, as we trecked across Skyrim. One such ludicrous notion was 'Is there any way of altering its skin when it crosses different terrain?'. I wondered if it could be given a snow camo outfit via script. At the moment it only has it's skin, though I should probably add an FX outfit like the standard ones. The other problem, even if it's possible to change its skin, would be detecting when it's on snow or ice, other than a change location event with a massive array of all the snowy/icy cells, I couldn't think of anything!

 

Don't put too much effort into this unless you think it's reasonably simple to do. I don't want the poor thing to be running a massive script with every step it takes!** I also can't be a***d to write such a script!

 

* I'll be honest here, I took my eye off it near Shor's Stone to fight a bear. It only took a couple of seconds but when I turned around, the spider had vanished. Maybe I shouldn't have flagged it to ignore combat. No amount of running around let me find it, even though I knew the general direction it had taken and where it was aiming for.

 

** that reminds me of a song. Ah, The Police! (No I'm not being arrested for my crimes against Skyrim... the band).

Every breath you take and every move you make
Every bond you break, every step you take, I'll be watching you.. great song. I don't think it was about Dwemer spiders, though.

I'll shut up now.

Link to comment
Share on other sites

There are two ways you could do something like this.

1) Use SKSE "NetImmerse.SetNodeTextureSet()".

* Uses texture set to change the textures on a object.

* Problem, i don't think there is a way that an a Actor or an Object can retrive information on the texture that he is standing.


Example on how to make your "NetImmerse.SetNodeTextureSet()" Script:



GlobalVariable Property UpdateGlobal Auto
{Global is set to 1 upon loading the game for the function to change when this object is activated}

Int Property CurrentTexture = 1 Auto Hidden

ObjectReference Property MeshTC Auto
{The mesh to changed the textureset}

String Property NodeName Auto
{The mesh's node name to change}

TextureSet Property TexSet_01 Auto
{First texture sets in the cycle}

TextureSet Property TexSet_02 Auto
{Second texture sets in the cycle}

TextureSet Property TexSet_03 Auto
{Third texture sets in the cycle}


Event OnCellLoad()
TexturesOnLoad()
EndEvent


Event OnActivate(ObjectReference akActionRef)
If UpdateGlobal.GetValue() == 0

If CurrentTexture == 1
NetImmerse.SetNodeTextureSet(MeshTC, NodeName, TexSet_02, True)
CurrentTexture = 2
ElseIf CurrentTexture == 2
NetImmerse.SetNodeTextureSet(MeshTC, NodeName, TexSet_03, True)
CurrentTexture = 3
ElseIf CurrentTexture == 3
NetImmerse.SetNodeTextureSet(MeshTC, NodeName, TexSet_04, True)
CurrentTexture = 1
EndIf
Else
TexturesOnLoad()
EndIf
EndEvent


Function TexturesOnLoad()
If CurrentTexture == 1
NetImmerse.SetNodeTextureSet(MeshTC, NodeName, TexSet_01, True)
ElseIf CurrentTexture == 2
NetImmerse.SetNodeTextureSet(MeshTC, NodeName, TexSet_02, True)
ElseIf CurrentTexture == 3
NetImmerse.SetNodeTextureSet(MeshTC, NodeName, TexSet_03, True)
EndIf
EndFunction



2) You can make him a ghost, but you will need to create your own Shaders & spell, so that you can remove all the FX that resemble the ghost look that the vanilla shader & spell gives to the actor, example: remove the ghost mist.


My suggestion is to make something like the cloak FX that the "Predator" has (from the movie Predator), so this way you will have the result you are looking for without too much work.

Edited by maxarturo
Link to comment
Share on other sites

Food for thought.

 

Thanks.

 

Given that he's a 'Stealth Spider', the idea of giving him cloaking devices is great. I could toggle them on and off when entering combat, for instance, or on being near an enemy. I'm pleased i asked my 'daft' question, now.

Link to comment
Share on other sites

You can even make a "Misc Item" equippable with a script that "OnEquiped()" will add/remove the cloak spell visual FX to the spider, something like a "Remote Control Cloaking Device".


The only downside here is that you can not added to favorit equipable misc item, you need to enter your inventory each time to equip and unequip the misc item.


But in the other hand... it would make it a nice little gadgets to have.

Link to comment
Share on other sites

Thanks again. I'll look into it.

 

Edit: In the meantime, I've added a script to the actor.

 

Scriptname MBRVstealthSpiderSpellScript extends Actor
{Every time the spider casts an offensive spell it will cast invisibility straight after.}

 

Spell Property Invisibility Auto

 

Event OnSpellCast(Form akSpell)
Spell spellCast = akSpell as Spell
If SpellCast && SpellCast!=Invisibility
Invisibility.Cast(Self)
Endif
EndEvent

 

It's nice for my stealth spider because it turns invisible when it fires its first destruction spell in combat and the instant it casts a lightning bolt that would make it visible again, it re-casts the invisibility spell. The downside is that the enemies always attack the player because they can't detect the spider! Looks good, though.

Link to comment
Share on other sites

 

"The downside is that the enemies always attack the player because they can't detect the spider! Looks good, though."
Isn't this the whole idea of cloaking spider...?

 

Ha! I suppose so. It makes for an interesting experience when fighting. Normally, the enemies swarm around the aggressive followers. Now, the player has to defend themselves whilst a little ball of barely visible steam circles around the enemy, zapping them from behind. I'm definitely keeping this. It was your suggestion of adding a cloak that prompted me to think of doing this 'Auto Invisibility' idea in combat.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...