Jump to content

Recommended Posts

Posted

There seems no way I can find to tell a Robot is being worked on in the Robot Workbench (via scripts/effects/conditions on that Robot).

They are not unconscious, sitting (maybe because Robots don't generate 'OnSit' events - only 'OnGetUp'), waiting, or have any extra keyword attached that I can find. The Robot Workbench is done entirely in game code (no scripts) so nothing I can look at.

 

I am not even sure the Player can tell, as there is only an 'onrobotmodified' or 'onrobotcreated' event at the end when you exit the bench..

 

I did see "isInRobotWorkbench" in the console (help workbench 1) but it returns nothing and I can't find it in scripting.

 

Any thoughts?

Posted (edited)

With F4SE:

  Reveal hidden contents
Function MyFunction()

	Actor MyRobot
	ObjectReference FurnitureRef
	FurnitureRef = MyRobot.GetFurnitureReference()      ; F4SE actor script function

	If MyRobot.GetSitState() == 3 && FurnitureRef.HasKeyword(AnimsFurnWorkbenchRobot) && FurnitureRef.HasKeyword(DLC01WorkbenchRobotKeyword)
		; Robot is sitting in a robot workbench
	EndIf

EndFunction

 

 

 

Without F4SE, maybe this:

 

  Reveal hidden contents

 

 

Conditions:

 

  Reveal hidden contents

 

 

 

  Reveal hidden contents

 

 

 

  Reveal hidden contents

 

 

 

By the way, robots don't generate OnSit events? That's interesting..
Edited by LarannKiar
Posted (edited)

Unfortunately they are not 'sitting' when at the Robot workbench (I mentioned that) - which removed all the easy checks.

D*mn Bethesda for just hacking it in via base game code rather than nice furniture interactions, keywords, and 'stay still' packages.

 

I didn't try GetFurnitureReference() because I want a fix that doesn't require F4SE, and they are not sitting so I doubt there is an associated furniture.

 

I considered FindClosestReferenceOfTypeFromRef but it would trigger even when they are 'near' the Workbench (no 'onsitting' check remember) - and Automatrons hug you like a lover so they are ALWAYS friggen close when using the workbench!

 

I simply want to put a check in the effects script for robots so annoying effects aren't triggered when you flip through their various Omod parts - so needs to be quick.

 

Oh well, I will just release my 'fix stuck Red head light' mod as a 'problem remover' rather than a total 'problem preventer'.

Edited by PJMail
Posted

And I know they don't generate 'onsit' as sitstate = 3 when they are on a Vertibird, yet any magiceffect scripts on the Automatron don't receive an 'onsit' event when boarding, but they DO receive an 'onGetup' when they exit.

Posted (edited)

Which nif? The workbench?

 

Looked - and the Workbench has a whole bunch of animations built in - but looks like just to move the arms etc.

Anything more than that is beyond me...

Edited by PJMail
Posted
  On 4/9/2022 at 12:58 AM, PJMail said:

Unfortunately they are not 'sitting' when at the Robot workbench (I mentioned that) - which removed all the easy checks.

 

So the robot is just standing on the platform with "GetSitState() == 0" and "IsOnMount() == 0"? That's unfortunate...

 

But maybe you could try this:

 

  Reveal hidden contents

 

If there really is no "IsInRobotWorkbench" bool function then I guess this is as realiable as it gets. But if you find something better, post it here, I might want to use it someday. :)

 

  On 4/9/2022 at 12:58 AM, PJMail said:

D*mn Bethesda for just hacking it in via base game code rather than nice furniture interactions, keywords, and 'stay still' packages.

 

Well, judging by the amount of default objects (and their purposes, e.g., "RobotWorkBench_CurieReplacementModList"...), the game code must be pretty messy..

Posted

Enormously messy - also look at how they 'replace' Codsworth with a moddable robot. And the duplicate Mr.Handy omods (old ones on codsworth and new ones for robot workbench).

And all those modlists!

 

Tracking the player to get this info is just far too messy for the small returns. I was hoping for a 'sneaky' trick (something the workbench touched on the robot) - but no.

As you say "GetSitState() == 0" and "IsOnMount() == 0". Even their own robot effect scripts don't work (they listen for 'onsit' to disable some effects - which is why the effects never stop)

 

Bugthesda. Giving up on it for now, and will just release my mod without a permanent fix in it.

 

Thanks anyway @LarannKiar.

  • Recently Browsing   0 members

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