mistery issues 12: private spheres refusing to hybernate...

Post » Tue Mar 24, 2015 6:20 pm

been stuck with 2 die-hard mini issues keeping me from releasing for, dunno, feels like years now, and i just don't know what to try anymore, maybe somebody can help.

issue #1: 2 dwemer "private spheres" accompany the player when a lever is set on and go "hybernate" in their ports when it's off.

this all works fine except for one thing: i can't seem to get them into their ports.

setup's like this:

spheres got their respective ports as linked refs.

they have 2 packages, conditioned to a bool on the lever.

one of them (false) currently is an 1:1 copy of the default ambush sleep pack, with just the condition changed to my lever

(the other one (true) is a custom do-stuff-pack).

they run custom scripts that shouldn't have anything to do with the actual sleeping (in this version anyway), but just to make sure (also left some stuff i tried in vain in there, for the same reason...):

Spoiler
Scriptname s7oDK01creaDweSphereJanitorSCRIPT extends ActorObjectReference                Property    SwitchLeverJanitor                AutoEvent OnDeath ( Actor akKiller )    ( SwitchLeverJanitor         as s7oDK01actiSwitchLeverJanitorSCRIPT ).    CountSpheres     ()    ( SwitchLeverJanitor         as s7oDK01actiSwitchLeverJanitorSCRIPT ).    Switch             ( ( Self as Actor ) )endEventEvent OnLoad ()    if !( SwitchLeverJanitor as s7oDK01actiSwitchLeverJanitorSCRIPT ). SetOn        EvaluatePackage ()    endifendEvent;Event OnActivate ( ObjectReference akActionRef );    if ( akActionRef == SwitchLeverJanitor );        if ( SwitchLeverJanitor     as s7oDK01actiSwitchLeverJanitorSCRIPT ).    SetOn;            GetLinkedRef ().        Activate ( ( Self as Actor ) );;        else;            EvaluatePackage     ();        endif;    endif;endEvent

the ports themselves also run custom scripts, that also shouldn't affect the actual activation though (in this version):

Spoiler
Scriptname s7oDK01furnDweSphereJanitorPortSCRIPT extends ObjectReference  Event OnActivate ( ObjectReference akActionRef )    if ( akActionRef.GetLinkedRef () && ( akActionRef.GetLinkedRef () == ( Self as ObjectReference ) ) )        UnregisterForUpdate         ()        PlayAnimation                ( "open" )        RegisterForSingleUpdate     ( 2 );        Activate                    ( akActionRef as Actor, true )    endifendEventEvent OnUpdate ()    PlayAnimation                     ( "close" )endEvent

what happens is this: initially (OnLoad actually), they're not waiting in their ports as should, but at their editor locs in front of these.

with the lever on, they come following as should.

with the lever off, they, well, kind of run their sleep package, but instead of traveling to the port, activating it and getting into it, they just drop right where they stand -

where i assumed the sleep procedure (nothing else in that pack, just like in the vanilla ambush sleep pack i copied it from) handles the traveling, activating etc, but i also tried a custom pack including an own travel procedure, this made them travel to their ports and drop there)

the ports never seem to receive any activation at all (didn't put up with tracing though, as neither their OnActivates nor activation children they've got ever fire)

i tried tons of stuff (script activation, dedicated activate procedures and what not), checked all props, links etc of course and read through the vanilla ambush scripts dozens of times, without finding _anything_ -

anything, anybody...? i just don't know what to try anymore...

User avatar
Natalie Taylor
 
Posts: 3301
Joined: Mon Sep 11, 2006 7:54 pm

Post » Tue Mar 24, 2015 6:35 pm

Regarding their initial lack of ambush. What's the navmesh situation? I had a similar issue recently with an automaton of my own, until I had finalized the cell navmesh he was never sleeping in his ambush properly.

As for getting them back into their initial ambush state........... very tricky. I think many people have attempted this. I don't think ambushes can be "entered", they exist only as an initial state........

You'd probably have to use overwhelming force :P. Disable them, kill them, resurrect them, translate them into position.... something like that. You may have tried all this already, sorry just thinking out loud.

User avatar
mishionary
 
Posts: 3414
Joined: Tue Feb 20, 2007 6:19 am

Post » Tue Mar 24, 2015 9:31 pm

all there, all finalized (their editor loc's within activation distance actually, and they start from there and get back to there without any problems)

don't actually think so, sphere refs, as any, start outside their ports (which is just some ordinary furniture actually), so they _do_ enter.

from what i see, it's just that the vanilla sphere port script goes to an AllDone state when they first exit (which just is why i wrote my own)

sounds cool, how's the syntax go? MyActor.UseOverwhelmingForce ( Float ForceApplied )...? :-)

User avatar
Eve Booker
 
Posts: 3300
Joined: Thu Jul 20, 2006 7:53 pm


Return to V - Skyrim