DocClox Posted April 12, 2021 Share Posted April 12, 2021 Long story short: I have a rideable bot that I want to place using the workshop and then assign actors to it as if it were furniture. I can place the bot, but assigning actors does nothing. Longer version: I have a frame that I want to place and actor on, and then the frame will rotate 90 about the Y-Axis (yaw) so that the settler is on their back. Problem with that, of course, is that I can't rotate actors through the y-axis. So I added a RotateHelperFree and attached both the frame and the actor to that. That works wonderfully well, except when I try and use it on the likes of Piper. I can only use AttachTo on references placed at runtime, and Piper is placed in the editor. So I thought to make the furniture a rideable bot, and then rotate the bot. So I made the bot, got it to use the idle I want, and confirmed that I can rotate the bot and the actor will follow. And with some fiddling with keywords, I can place my furniture bot in a settlement. But I can't assign a settler to it. I get the "Enter to assign" prompt, but hitting enter doesn't do anything. Anyone tried this? I feel like I'm really close, but I can't work out this last bit. Link to comment Share on other sites More sharing options...
LarannKiar Posted April 13, 2021 Share Posted April 13, 2021 Sorry I couldn’t be more help, but settlers use "WorkshopNPCScript" for workshop assignments while workshop objects (which can be managed by settlers like the powercycle, shops, crops) use the "WorkshopObjectScript". You can try attaching the workshopobjectscript to an actor (the "rideable bot") but I really don't know if this would help. Don't forget to fill the Property "WorkshopParent" on that script. Link to comment Share on other sites More sharing options...
DocClox Posted April 13, 2021 Author Share Posted April 13, 2021 You can try attaching the workshopobjectscript to an actor (the "rideable bot") but I really don't know if this would help.I tried that. That's how I got the the damn thing to snap to the connect point. And I can select a settler in the workshop, then point the cursor at the bot and I get an "assign" prompt, but nothing happens if I hit enter. Current plan is to use a second item of furniture as a staging area, and once they activate that, use the WorkshopObjectScript Assign method to reassign the settler from papyrus. No idea if it'll work, but at least I should learn something. Link to comment Share on other sites More sharing options...
LarannKiar Posted April 13, 2021 Share Posted April 13, 2021 I think the workshop system can't accept actors as workshop objects (I've never tried that). Of course the final decision is yours, but forcing such object to a workshop object may break your assigned settler or your settlement's data. Link to comment Share on other sites More sharing options...
DocClox Posted April 13, 2021 Author Share Posted April 13, 2021 I think the workshop system can't accept actors as workshop objects (I've never tried that). Of course the final decision is yours, but forcing such object to a workshop object may break your assigned settler or your settlement's data.Yeah, possibly. Having got this far, I want to see what happens. Plan C is to mount the bot, and then snapIntoInteraction on it. Trouble with that is that the workshop keeps trying to get it back on the initial furniture. I can probably de-assign the settler, but then it's marked as not doing anything. We'll see what happens. If this doesn't work, I'll have to break out Max and see about animating the rotation that way. I'd far sooner not, though. Link to comment Share on other sites More sharing options...
niston Posted April 13, 2021 Share Posted April 13, 2021 Could you spawn a furniture marker from script, next to the bot? Link to comment Share on other sites More sharing options...
DocClox Posted April 13, 2021 Author Share Posted April 13, 2021 Could you spawn a furniture marker from script, next to the bot?I can. Only the actor needs to be mounted on the bot or else I'm limited to rotating actors with a 0xff refid. What could work, and what I'm trying at the moment, is to add a separate item of furniture as an addon. Settler activates that, the platform moves back on rails (I can do that with TranslateTo) and then when they get to the box, either Assign them to the bot, or SnapIntoInteraction to get them there. I don't strictly need the moving platform on rails part, but I figure if I have to have a secondary activator, I might at least use it for something interesting. Link to comment Share on other sites More sharing options...
LarannKiar Posted April 13, 2021 Share Posted April 13, 2021 (edited) I might be wrong about this, but only objects placed in workshop mode can be actually workshop objects. So you can't assign NPCs to papyrus placed objects. Spawned workshop NPCs can be assigned to workshop objects though. Also, moving a "properly" placed workshop object (using the MoveTo function) can break that object permanently: you won't have the option to assign settlers to it anymore. "Assignments" in the workshop system use the SetActorOwner (if I remember correctly). When you assign an NPC to an object, the NPC will "activate" that object (thanks to the workshopnpcscript) so that they can gain ownership. You can identify assigned settlers using the GetActorOwner function. Thanks to the workshop NPCs' AI package, they only work on "their own" objects. You can create such AI package to get them into that frame. Edited April 13, 2021 by LarannKiar Link to comment Share on other sites More sharing options...
niston Posted April 13, 2021 Share Posted April 13, 2021 It should be possible, if the spawned object gets properly reflinked with WorkshopItemKeyword to the workshop (and has the workshopobjectscript, of course). Link to comment Share on other sites More sharing options...
LarannKiar Posted April 13, 2021 Share Posted April 13, 2021 It should be possible, if the spawned object gets properly reflinked with WorkshopItemKeyword to the workshop (and has the workshopobjectscript, of course). Haven't thought about that. But good to know it's possible :) Link to comment Share on other sites More sharing options...
Recommended Posts