Rafts should be flat!
A bit of ancient history: when I was first creating this mod, I made a nice raft mesh using Caliente's
Outfit Studio (yes, really) to combine several planks and crates. It looked good, but when I put it in the game, the following happened:
On try one, I jumped on the raft and went right through it. Apparently, objects' collision doesn't carry over into new nif (more precisely, only one does, so chose carefully;).
Well, I found a static (piece of a floor) with a simple collision object that more or less fit the raft dimensions, managed to copy it into the file using nifskope, and tried again.
On the second try, I jumped on the raft and stood on it. Great! Then I set it to sail and... the raft sailed away, leaving me behind,
standing on water like a prophet or something. Trying to get on the raft after it left the harbor proved impossible - once again I went right through it. Apparently, if you make a static object move in-game, it leaves its collision behind.
The rowboat, which is a 'movable static', was the only item I could find that takes its collision along for the ride when moving around Skyrim. Thus I abandoned the raft idea, and used a boat instead, even though it didn't really go with my vision ;P.
Fast forward 9 months, andI finally found a tutorial that addressed my problem. After watching it, I fixed the nif file in 30 seconds. It works beautifully. Let us all thank Darkfox127 for "Creation Kit Tutorial (AnimateStatic Objects)". The relevant bit starts at 16:20, if youwant to check it out.
How to do that, short-hand instructions:
Basically you need to open the mesh in nifskope, go to bhkCollisionObject → bhkRigidBody in Block list, and then edit three values in Block Details:
Havok Col Filter → Layer - change value from STATIC to ANIMSTATIC
Havok Col Filter Copy → Layer -change value from STATIC to ANIMSTATIC
Motion System - change value fromMO_SYS_BOX_STABILIZED TO MO_SYS_BOX
Then find BSXFlags in Block list, in Block Details click the tiny flag in Integer Data, and in the popup
windowlet check Bit 0: Animated and Bit 3: Complex (not sure about the second one, but the first one is a must).
Now you can move your mesh about toyour heart content, and the collision will move with it.
Oh, one more thing: when putting yourmesh in Creation Kit as new object, make sure to make it movable
static, not regular static. It won't work otherwise.
...but... but I can climb really low objects!
One other thing that bugged me aboutthe raft from the beginning was that I couldn't climb on it if I was already in the water. I knew it was possible – you can 'climb' onto icefloes – but I didn't know how to do it. Today, another 9 months later, I have the solution. I found it by finding the only type of icefloe I couldn't climb in game, finding it's file, and then comparing it to the file of a climbable icefloe. After a lot of clicking, I found the one difference that made the big difference:
How to:
Find bhkRigidBody in Block list(again), click-open it all the way to bhkCompressedMeshShapeData, and then in Block Details find Chunk Materials → Chunk Materials → Material and change value to MAT_STAIRS_WOOD.
That's it. Now as you swim up to the mesh, you are automatically moved up and placed on top of it. (I can't wait to see if I can do the same with rooftops, I'd love to take the thieves highway route from time to time :D )
Let there be light (and flame).
Adding the lantern/candle to the raft was a new idea. I once again used Outfit Studio to drop the lantern on the raft and move it to where I wanted it. Easy peasy. Alas, in game the candles where there, and they were a little glowy, but the animated flames where missing. Having now spend a lot of time poking through nif properties, I figured out this one quite quickly. What
needs to be done is this:
a) in nifskope, first click the 'shownodes' button to see the nodes. Look for BSValueNode named AddOnNode49 (I'm fairly sure the number 49 is what tells the game what it's supposed to be adding to the node, so if you have more than one, name them the same and add @#0 at the end (or @#1, etc).
(Luckily for me, the Outfit Studio copied the lantern's flame nodes into the raft mesh, so I didn't need to create them or copy them from different file). Use the transform/edit function to place the nodes where you want the flames to appear. (Fun fact – you can change scale of the node to get bigger/smaller flames in game. You can see it on the ghost candle in the mod).
And now, to let the game know that it's supposed to be adding something to the mesh, find BSXFlags in Block list (again), in Block Details click the tiny flag in Integer Data, and in the popup windowlet check Bit 0: Animated and Bit 4: Addon.
Voila.
When you use your mesh in game, it will have animated flames on it.
Where did you want the light to go?
Fun fact: you can turn any mesh into alight source. Just create a new light in CK, make it whatever color you like, then pick your mesh in the 'model' box. However, the light will be centered on the mesh center node. It can give you some pretty
amazing effects, but if you just want to have the light be above (or under or at the side of) your mesh, you need to add an
'Attachlight' NiNode to your mesh (I copied mine from a torch.nif), and move it to wherever you want your the light to be generated.
Would you like to sit?
So... one of the ideas I had to forego that I regret the most is having the ferrymen actually sit on and ride the ferry. It didn't work out for various reasons, but the raft mesh still has the furniture node in it, and can be made into furniture in CK. To preserve the knowledge I gained making it so, here's a receipt.
How to make a mesh furniture-ready:
You need to add furniture marker to it. To do this, right-click Scene Root, click node → attach extra data → BSFurnitureMarker. Name the new node 'FRN'. Now in Block Details set value of Num Positions to however many interactive places you want (vanilla chairs have one, benches 2 or more, for example).
Now click the 'refresh' symbol next to Positions. Now go to Positions → Positions → Animation Type and chose the type of animation this marker should be used for (sit, sleep or lean – further customization is possible in CK, using keywords, but I didn't investigate this in any depth).
That done, go to Positions → Positions → Entry Properties and pick entry points (front, behind, up, left, right) – you can check more than one (most vanilla bedrolls have three).
Now, if you hadn't already, click the'show markers' button on the toolbar and transform/edit the node to move it where you want it. (Tip: for some reason the new sit marker I added appears in nifskope rotated by 180 degrees from how it is in game. I don't know why, or if it's always true. Vanilla meshes have their markers facing the right way...).
Let's talk about the raft (or how I learned to do many interesting things with my nifs)
-
Endorsements
-
Total views1.5k
1 comment
In 'The Sidrat' I've got a similar boat to yours, with a lantern at the front, holding a shadow effect light which takes the player from one area to a new one - only problem is the candle effect animations don't move with the boat, so leave a trail.
It also has a dwemer lift with working doors and internal controls as separate activators. The trick to those is to use the 'almost completely working' attachref feature. I say almost working as it fails to retrieve them correctly after loading a save. However this can be alleviated by disabling them, moving them to a named node and re-enabling when loading a save. A similar effect is also needed to 'reparent' a cell in exterior cells if moving over a long distance.
Re getting an actor to sit, this can be done using 'setVehicle' on the actor to anchor it to the vehicle and then forcing a sit idle. You may find the idle sets the offset for the animation relative to the vehicle's nif coordinates, so you may need to use the attachref trick above to hide a 'seat' on the vehicle and using that as the vehicle instead.
In fact it could be possible to even use a crafting station on a vehicle (eg a large boat) - these don't have support for movement, so you may need to fake the idle again and activate a station remotely, or possibly 'placeAt' another attachRef a version of the crafting station without a model. Didn't ever quite get this working though!
Thanks for posting this - hopefully my additions will help someone in the future!