Jump to content

The critter thread


Sclerocephalus

Recommended Posts

New game with USKP 2.0.1 Beta. No old savegames, no loose *.pex.

 

[01/26/2014 - 03:50:59PM] error: Unable to call Is3DLoaded - no native object bound to the script object, or object is of incorrect type
stack:
    [None].ObjectReference.Is3DLoaded() - "<native>" Line ?
    [ (FF000C87)].critterMoth.PlaceLandingMarker() - "Critter.psc" Line 345
    [ (FF000C87)].critterMoth.BellShapeTranslateToRefAtSpeed() - "Critter.psc" Line 624
    [ (FF000C87)].critterMoth.BellShapeTranslateToRefNodeAtSpeedAndGotoState() - "Critter.psc" Line 713
    [ (FF000C87)].critterMoth.GoToNewPlant() - "critterMoth.psc" Line 278
    [ (FF000C87)].critterMoth.OnUpdate() - "critterMoth.psc" Line 138
[01/26/2014 - 03:50:59PM] warning: Assigning None to a non-object variable named "::temp23"
stack:
    [ (FF000C87)].critterMoth.PlaceLandingMarker() - "Critter.psc" Line 345
    [ (FF000C87)].critterMoth.BellShapeTranslateToRefAtSpeed() - "Critter.psc" Line 624
    [ (FF000C87)].critterMoth.BellShapeTranslateToRefNodeAtSpeedAndGotoState() - "Critter.psc" Line 713
    [ (FF000C87)].critterMoth.GoToNewPlant() - "critterMoth.psc" Line 278
    [ (FF000C87)].critterMoth.OnUpdate() - "critterMoth.psc" Line 138
 

91,574 lines in the log!

 

I've also noticed that butterflies and moths seem to be flying quite slowly, compared to their usual speed.

 

[edit] And again - 96,000+ lines. Never moved outside Whiterun (Dragonsreach/Arcadia/Belethor). [/edit]

[edit2] Further investigation shows that the Moth (FF000C87) is already marked for delete (prid shows it with a [D]). It's not in Whiterun itself, but is in Whiterun Hold, not far from Bleakwind Basin. [/edit2]

Link to comment
Share on other sites

New game with USKP 2.0.1 Beta. No old savegames, no loose *.pex.

There's a beta? I'm working on these scripts. This is a known problem. I'd already posted a few messages back that the Moth and DragonFly scripts need the same checks that were already added to FireFly back in 1.3.3.

I'm on the road, but I'll look at the beta after I get home later today.

Link to comment
Share on other sites

Yes - there a full set of 2.0.1 Betas (SK/HF/DG/DB).

 

I'm well aware that the critter problem has been around for a while - I've reported enough of them - and that they are being looked at, but I've never seen anything like that volume of errors before. You would have to check with Arthmoor as to exactly which version of the script(s) is/are in the Beta release because previously the errors were a nuisance, now they're an absolute PITA.

 

Note that it is all about that one refID. I guess I managed to kill it - accidentally - otherwise why would it be marked for delete? For this specific issue that's the place (situation/condition/state) to look at.

 

It is that bad I've had to make copies of the savegames and logs and continue from a savegame prior to the issue appearing.

Link to comment
Share on other sites

I'll look to see what changes he made. The problem you are reporting isn't Moth, it's the invisible Critter landing marker created at the same time that's moved around for the various translate functions.

 

No, you didn't accidentally delete a Moth/butterfly. The Is3DLoaded on an invisible marker is hanging because the 3d isn't loaded in the area the moth/butterfly is headed. I don't know why the script wants an invisible marker to be loaded.

 

Translate routines will operate properly in unloaded areas. So the script is having problems because of the 2 competing game engine constraints -- or changes in the game engine since the scripts were originally written!

Link to comment
Share on other sites

That seems rather disturbing. I can't imagine anything that got done to them could produce something that ridiculous. There aren't any Nirnroots in Whiterun which is the only major thing I can think of that could have screwed with them.

Link to comment
Share on other sites

Load Skyrim, don't load a savegame.

 

COC LostKnifeHideoutExterior

 

Walk inside, quit.

 

Log will almost certainly have firefly errors. If not, try again - shouldn't take too many tries before it happens - it's pretty consistent here.

 

Note that one of the 2 errors is "cannot find variable named Takeoff.". Spot the similarity to #13907 which would indicate that that bug wasn't quite as fixed as may have been hoped.

The original (posted above) errors on CritterMoth haven't happened again - yet - but I reloaded from an earlier save and avoided that precise location.

 

Load Order:-

Update.esm
USKP (2.0.1 Beta)
SBBasement.esm
no killmoves, no killcams, no killbites.esp

 

Do you want new Tracdown issues for these (and others) which may be marked as Fixed in existing issues?
 

Link to comment
Share on other sites

Wasn't done as of 1-0-5c, or even 1-2-6, was done in 1-2-7 -- the explanation doesn't match:

 

FXfakeCritterScript.psc does not reset its doOnce variable when the scripted object resets itself. (Bug #9882)

 

The changelog entry for bug 9882 tells you what *WE* did to it, not what someone before us did to it. Blue says it's not used. Perhaps Kivan thought the same. If it's not going to interfere with something then I'd just as soon uncomment it and put it back into service but I'd like to be sure it isn't going to cause problems related to flora harvesting first.

I did a binary search through the bsa files.

 

Kivan didn't do it. It wasn't done as of 1-0-5c, or even 1-2-6.

 

It was done in 1-2-7, but without any explanation!

 

 

Actually, I was wrong. It looks like it is used by Hearthfire for the waterfall salmon, for the roe. But, I don't think anything should be done with ingredients in the OnHit() event handler, only OnActivate(). For OnHit(), the script will place the dead salmon (DeadFXSalmon0X) which already give the roe. The vanilla script seems to actually place the ingredient directly in the world, in addition to the flora object (i.e. DeadFXSalmon0X), which shouldn't be happening. So, the MyIngredient property is used in the OnActivate() handler, and needs to be used; and MyIngredientRef is used in vanilla in the OnHit() handler, but should not be, since those are added directly to player inventory (via the flora or container object placed in the OnHit() handler).

[...]

I did notice another thing though, when looking at this, in the USKP and UHFP. For the waterfall salmon, in the unplugged game (without Hearthfire even) the meat is added via script when killing then harvesting. USKP changes this to adding via the ingredient field for FLOR objects. This is fine, although AFAICT it doesn't make much difference either way. For the UHFP, the ingredient field is changed to BYOHSalmonRoe01, so the player gets the roe instead. However, both the meat and the roe are already added via script (and, indeed, they need to be added via script, since the player is supposed to get two items and you can add only one by using that field). So, if you kill waterfall salmon and then harvest them, you'll get an extra roe - once from the script, and once from the field. That field should be put back as None in UHFP, as it is in vanilla Hearthfire. Then the player will get one of each.

 

If you directly harvest the salmon instead, without killing first, everything appears to work fine I think, because the DeadFXSalmon0X objects never gets placed by fxfakecritterscript anyway.

This seems very reasonable. I'll make equivalent changes in my local copy, and put up a proposed beta fix soon (after testing). I'll also put up a log entry so we can point at it!

Link to comment
Share on other sites

Log will almost certainly have firefly errors. If not, try again - shouldn't take too many tries before it happens - it's pretty consistent here.

Firefly is still screwed up. There are a couple of fixes, one in 1.3.3 and one 2.0.1, but a lot of the fixes from other critters haven't been applied. I've been working on that.

 

Note that one of the 2 errors is "cannot find variable named Takeoff.". Spot the similarity to #13907 which would indicate that that bug wasn't quite as fixed as may have been hoped.

The original (posted above) errors on CritterMoth haven't happened again - yet - but I reloaded from an earlier save and avoided that precise location.

It's called "takeOff" in critterBird.

playAnimationAndWait("takeOff","end")
It's called "fTakeOff" in vanilla Critter, and that was changed by 2.0.1 to "TakeOff". The Critter version is used in critterMoth and FireFly.

Function DoPathStartStuff()
	; Transition to the flight state
;!	SetAnimationVariableFloat("fTakeOff", 0.0);
	SetAnimationVariableFloat("TakeOff", 0.0); [USKP 2.0.1]
endFunction

Function DoPathEndStuff()
	; Transition to the hover/landed state
;!	SetAnimationVariableFloat("fTakeOff", 0.0);
	SetAnimationVariableFloat("TakeOff", 0.0); [USKP 2.0.1]
endFunction
How do we check there is actually such an animation or variable?

UPDATE: http://www.creationkit.com/List_of_Animation_Variables doesn't have it listed.

Do you want new Tracdown issues for these (and others) which may be marked as Fixed in existing issues?

That's up to Arthmoor. My take would be a bad fix to an existing issue would keep the same issue name, so that we can track how things happened without Duplicate or whatever links.
Link to comment
Share on other sites

How do we check there is actually such an animation or variable?

See the thread I linked to. Sclerocephalus's post towards the bottom of the 1st page.

 

That's up to Arthmoor. My take would be a bad fix to an existing issue would keep the same issue name, so that we can track how things happened without Duplicate or whatever links.

Except that I've been told off for posting to fixed issues. Hence the question.

Link to comment
Share on other sites

Load Skyrim, don't load a savegame.

 

COC LostKnifeHideoutExterior

That's an invalid test and not something we're going to consider for a bug report.

 

Except that I've been told off for posting to fixed issues. Hence the question.

I think "told off" it a bit of an exaggeration. That implies someone gave you a verbal beatdown for it, which never happened.

We don't generally want posts in closed issues because most of the time they're no longer being followed and end up getting neglected if someone responds to one.

Besides, if this critter situation is new it should be in a new entry anyway.

Link to comment
Share on other sites

That was just a quick way to prove it is happening - I have a savegame which is suitable, if you prefer.

 

Ok, so "politely reminded that it was inappropriate" :P

 

I'll create new issues then, because although they are, in some cases, virtually identical and actually related directly to existing (fixed) issues, they are not exactly the same.

 

The sheer volume of this spam really is preventing me finding any as yet unreported errors - hoping to spot them in logs that big is difficult, to put it mildly. Likewise for checking that fixed issues have actually worked.

Link to comment
Share on other sites

So this is strictly with a new game or does that even matter? Cause so far in my beta romps I have yet to encounter anything remotely close to critter spam from hell.

Link to comment
Share on other sites

Yes, brand new game. No old savegames present, no loose scripts (*.pex) except those required by the Basement (they're not packaged).

Update, USKP, SBBasement, no killcams.

 

I've not tried it with an old game as that would exclude many of the fixes such as those concerning the Torturer and the Dust falling while escaping Helgen. Both of those now seem OK, but the dunCGFXBirdFleeSCRIPT is not as the error is still occurring.

 

I'll go through the (usable) logs I have so far and add new trackers for everything currently marked as Fixed, but apparently are not, and add comments to those not marked Fixed.

Link to comment
Share on other sites

I'm not seeing a flood of critter spam, on old games either.

With my current code, I am having some progress on cleaning them up. In fact, such an improvement that hordes of old critters in the savegame are cleaning up. Leaving Honeyside (I've turned on some of the debug lines):

[01/28/2014 - 07:38:46AM] UDGP 2.0.1 Retroactive Updates Complete
[01/28/2014 - 07:38:46AM] UDBP 2.0.1 Retroactive Updates Complete
[01/28/2014 - 07:38:46AM] UHFP 2.0.1 Retroactive Updates Complete
[01/28/2014 - 07:38:47AM] USKP 2.0.1 Retroactive Updates Complete
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF00110B)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001113)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF00111A)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001125)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF001127)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001128)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF00112A)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001129)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF00113C)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF00113E)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF00113D)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF001143)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001142)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001147)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF001148)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001149)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001156)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF001157)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF001155)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF00115B)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF00115C)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001162)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterFish < (FF001163)>] is triggering OnStart
[01/28/2014 - 07:38:55AM] Critter [critterdragonfly < (FF001164)>] is triggering OnStart
Going back in the same door:

[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF001070)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF001070)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF001037)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF001037)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF00106E)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF00106E)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF001051)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF001051)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF00103A)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF00103A)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF00104C)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF00104C)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF001070)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF001070)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF001037)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF001037)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF00106E)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF00106E)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF001051)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF001051)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF00103A)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF00103A)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:08AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF00104C)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF00104C)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:08AM] Critter [critterFish < (FF001070)>] just killed itself.
[01/28/2014 - 07:39:08AM] Critter [critterFish < (FF001037)>] just killed itself.
[01/28/2014 - 07:39:08AM] Critter [critterFish < (FF00106E)>] just killed itself.
[01/28/2014 - 07:39:08AM] Critter [critterFish < (FF001051)>] just killed itself.
[01/28/2014 - 07:39:08AM] Critter [critterFish < (FF00103A)>] just killed itself.
[01/28/2014 - 07:39:08AM] Critter [critterFish < (FF00104C)>] just killed itself.
[01/28/2014 - 07:39:10AM] Critter [critterdragonfly < (FF001149)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterdragonfly < (FF001142)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF001157)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF001155)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF00113E)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF00113C)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterdragonfly < (FF00115B)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF001127)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF001143)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF001148)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterdragonfly < (FF001147)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterFish < (FF00115C)>] just killed itself.
[01/28/2014 - 07:39:13AM] Critter [critterdragonfly < (FF001164)>] just killed itself.
[01/28/2014 - 07:39:14AM] Critter [critterFish < (FF001163)>] just killed itself.
[01/28/2014 - 07:39:14AM] Critter [critterFish < (FF00111A)>] just killed itself.
[01/28/2014 - 07:39:14AM] Critter [critterFish < (FF00110B)>] just killed itself.
[01/28/2014 - 07:39:14AM] Critter [critterdragonfly < (FF001125)>] just killed itself.
[01/28/2014 - 07:39:14AM] Critter [critterFish < (FF00112A)>] just killed itself.
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D98)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D98)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D95)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D95)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DE8)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DE8)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D9A)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D9A)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D98)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D98)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D95)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D95)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DE8)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DE8)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D9A)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D9A)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DE3)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DE3)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DC9)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DC9)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DDD)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DDD)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D74)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D74)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D8C)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D8C)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D9E)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D9E)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000BCE)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000BCE)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DB0)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DB0)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DC0)].critterMoth.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DC0)].critterMoth.OnUpdate() - "critterMoth.psc" Line 108
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000BC7)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000BC7)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DE3)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DE3)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DC9)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DC9)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000D95)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000D98)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DE8)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000D9A)>] just killed itself.
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DDD)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DDD)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D74)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D74)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D8C)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D8C)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D9E)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D9E)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000BCE)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000BCE)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DB0)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DB0)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DC0)].critterMoth.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DC0)].critterMoth.OnUpdate() - "critterMoth.psc" Line 108
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000BC7)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000BC7)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DA1)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DA1)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DAD)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DAD)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DAC)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DAC)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DEF)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DEF)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DB1)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DB1)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D99)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000D99)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DD4)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DD4)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DFB)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DFB)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DD5)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DD5)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DE3)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DC9)>] just killed itself.
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DBE)].critterMoth.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DBE)].critterMoth.OnUpdate() - "critterMoth.psc" Line 108
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DE2)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DE2)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DC4)].critterMoth.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DC4)].critterMoth.OnUpdate() - "critterMoth.psc" Line 108
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DB4)].critterFish.DisableAndDelete() - "Critter.psc" Line 363
	[ (FF000DB4)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000D74)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DDD)>] just killed itself.
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DA1)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DA1)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DAD)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DAD)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DB0)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterMoth < (FF000DC0)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000D8C)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000D9E)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000BC7)>] just killed itself.
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DAC)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DAC)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000BCE)>] just killed itself.
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DEF)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DEF)].critterFish.OnUpdate() - "critterFish.psc" Line 98
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DB1)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DB1)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000D99)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000D99)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DD4)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DD4)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DFB)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DFB)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DD5)].critterdragonfly.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DD5)].critterdragonfly.OnUpdate() - "critterDragonFly.psc" Line 81
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DBE)].critterMoth.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DBE)].critterMoth.OnUpdate() - "critterMoth.psc" Line 108
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DE2)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DE2)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DC4)].critterMoth.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DC4)].critterMoth.OnUpdate() - "critterMoth.psc" Line 108
[01/28/2014 - 07:39:15AM] Error: Unable to call Delete - no native object bound to the script object, or object is of incorrect type
stack:
	[None].ObjectReference.Delete() - "<native>" Line ?
	[ (FF000DB4)].critterFish.DisableAndDelete() - "Critter.psc" Line 368
	[ (FF000DB4)].critterFish.OnUpdate() - "critterFish.psc" Line 148
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DA1)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DEF)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DAC)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DB1)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DAD)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000D99)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DD4)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DFB)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterdragonfly < (FF000DD5)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterMoth < (FF000DBE)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DE2)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterMoth < (FF000DC4)>] just killed itself.
[01/28/2014 - 07:39:15AM] Critter [critterFish < (FF000DB4)>] just killed itself.
[01/28/2014 - 07:39:20AM] Critter [critterdragonfly < (FF00113D)>] just killed itself.
[01/28/2014 - 07:39:20AM] Critter [critterdragonfly < (FF001162)>] just killed itself.
[01/28/2014 - 07:39:20AM] Critter [critterdragonfly < (FF001156)>] just killed itself.
[01/28/2014 - 07:39:20AM] Critter [critterdragonfly < (FF001128)>] just killed itself.
[01/28/2014 - 07:39:20AM] Critter [critterdragonfly < (FF001113)>] just killed itself.
[01/28/2014 - 07:39:20AM] Critter [critterdragonfly < (FF001129)>] just killed itself.

That is, many more critters (note Moths that weren't spawned above) have now cleaned themselves up! Easy to see as all the new spawns are FF0011xx, the old ones are FF000xxx.

But only the newest ones clean up without a None problem. Still working on that!

UPDATE: Unable to handle the None problem for old savefiles. Successful cleanup only 1 of 3 objects that make each critter. The things that won't delete are 2 invisible path markers.

Link to comment
Share on other sites

 Created a new Issue for this - #14686 and uploaded a savegame which may, hopefully, show them happening. If not, then I do have a savegame which WILL show them immediately it is loaded, but obviously that won't show the initial errors (when the spam started) as they were already happening when that savegame was made.

Link to comment
Share on other sites

has all the stuff from steve40 been looked into allready?

 

http://forums.nexusmods.com/index.php?/topic/981701-critter-script-bugfix

 

 

Thanks, I wondered where that came from.... Yes, there are plenty of lines indicating STEVE40. But the dates are older than his most recent. So I'll take a look and compare.

 

UPDATE: Looks like I've been duplicating some of his work. I'd already discovered that USKP hadn't done anything to DragonFly and Moth, and I've applied the same techniques to them. He mentioned that problem in: http://forums.nexusmods.com/index.php?/topic/981701-critter-script-bugfix/page-5#entry8498833

Here's my merge of STEVE40's old work, with a few exceptions. It also handles a large number of other bugs. These are Source files for Arthmoor, but of course anybody can test them.

Unlike STEVE40, I didn't make the critter and its 2 path markers persistent. It didn't fix the problem on old save files, and wasn't needed for new ones.

I fixed a couple of bad changes made in 2.0.1. Details in a later message.

[old code deleted]

Link to comment
Share on other sites

Bugs in 2.0.1 beta.

 

 

; Picks a new plant and fly to it if possible
Function GoToNewPlant(float afSpeed)
    ; Find a plant reference, trying to pick a different one than the current one
    ObjectReference newPlant = PickNextPlant()
    
    if( newPlant != none && newPlant.Is3DLoaded() ) ; USKP 2.0.1 - Added 3D check because critters can attempt to pick disabled Nirnroots.
[...]
    else
        ; This moth is stuck, wait until the player is far enough away that it can delete itself
;         Debug.Trace("Moth " + self + " is stuck and will wait to kill itself", 1)
        RegisterForSingleUpdate(fWaitingToDieTimer)
    endIf
Also in WarpToNewPlant() in critterMoth. The problem is the critter becomes stuck. Instead, the test should be in one place: PickNextPlant(), which loops until a plant is found:

        ; Check whether the new plant is valid (different from current)
        ; and 3D check because critters can attempt to pick disabled Nirnroots [USKP 2.0.1]
        ; and not too close to an actor
        bnewPlantValid = false
        if (newPlant != none && newPlant != currentPlant && !newPlant.IsDisabled() && newPlant.Is3DLoaded())
            if (Game.FindClosestActorFromRef(newPlant, fActorDetectionDistance) == none)
                bnewPlantValid = true
            endIf
        endIf
Also needed in FireFly, which wasn't done in this beta (an error of omission). Fixed in #67 Source above.
Link to comment
Share on other sites

Explanation of the primary sources of critter spam:

* bugs that are fixed in critterMoth were never fixed in critterDragonFly.

* bugs that are fixed in FireFly were never fixed in critterMoth and critterDragonFly.

* critterBird: Critter enables after onStart() of the bird. The bird setup requires both enable and 3D *before* setMotionType() -- all the other critters had this fixed, but not bird!

* the biggest: a game engine bug. Moving critters around uses Translate functions (TranslateTo, SplineTranslateTo, etc). Translate works even with the cell not attached and having no 3D. But StopTranslation() requires the cell attached and loaded 3D. There's no reason for it, but it throws an error without it!

Meanwhile, to clean up the critter, you have to StopTranslation() first, because the translation functions lock the path objects. You cannot delete them. The error message says you cannot delete a None object, but that's a bad message. It's a locked object, not a None object.

All the critters try to delete as you go inside, or go too far away. That's usually a cell detach. But there's a small window inside the OnCellDetach event where the parent cell is still connected and the 3D is still there. That's the only time allowed for StopTranslation().

Got it? Tiny time window, throws error otherwise. Bad game engine design!

So, either you have to be lucky and StopTranslation(), or you have to wait until the Translate function finishes and releases the locked objects. Therefore, I've changed the OnCellDetach event to not call DisableAndDelete() directly, using a pair of other events to call it instead:

EVENT onCellDetach()
	; Safety measure - when my cell is detached, for whatever reason, kill me.
; 	;debug.trace("Killing self due to onCellDetach() - "+self)
;!	DisableAndDelete()
	; kick the OnUpdate in hopes it will clean up. [USKP 2.0.1]
	bDetaching = true
	RegisterForSingleUpdate(fWaitingToDieTimer)
	if GetParentCell()
		; timing may remove parent cell before this event triggers
		; possibly trigger shorter OnUpdate time in Critter OnCritterGoalFailed()
		StopTranslation()
	endIf
endEVENT
So, why does that fix it for new critters, but not old critters? Because the old script is still embedded in the save file for old critters, and I cannot seem to find a method to override it.

However, it does now cleanup the visible critter part of old critters. Just not the 2 still-locked invisible path markers.

Link to comment
Share on other sites

Translate works even with the cell not attached and having no 3D. But StopTranslation() requires the cell attached and loaded 3D. There's no reason for it, but it throws an error without it!

So, why does that fix it for new critters, but not old critters? Because the old script is still embedded in the save file for old critters, and I cannot seem to find a method to override it.

However, it does now cleanup the visible critter part of old critters. Just not the 2 still-locked invisible path markers.

The more I look at this code, the more I think the documentation is wrong:

You can however translate an enabled activator when it has no 3D... meaning you can do it from ANYWHERE at any time - as long as it was enabled (and a slight wait or other function afterwards).

There's just no way Translate is running on unattached cells without 3D. If it were, it would have finished and the locked objects would be unlocked by the next time the player comes around, and certainly by the time the player has both attached and detached the cell. Something is fishy. Maybe it finished translating, but can only unlock the objects in an attached cell?

 

But I think I've found an unused hook that I can prod at least some of the old critters. OnCellAttach isn't used in Critter yet. Testing....

Link to comment
Share on other sites

So, why does that fix it for new critters, but not old critters? Because the old script is still embedded in the save file for old critters, and I cannot seem to find a method to override it.

Jesus. And here I thought things couldn't get worse than the weapon racks.

Unfortunately there is no way to override a script baked into the save. I have tried all manner of ways to get around this for those things currently stuck in one of my character's stack dumps, but the game steadfastly refuses to budge even when prodded by the console.

Situations like that effectively require you to revisit the cell that originated the error before the scripts will update on their own. They will, because that's how I got rid of all my "dust drop" errors after that script was fixed. One by one MoveTo visits to each affected ref.

Dunno if that'd work on critters unless the FF refs are still valid enough to target that way. Manual cleanup is a serious pain though, assuming it would even work.

Link to comment
Share on other sites

I'm sure everyone is probably well aware of this, but just in case, the errors below are appearing in my log over and over with the 2.0.1 beta:

[01/28/2014 - 06:37:28PM] warning: Function Critter.KickOffOnStart.OnUpdate in stack frame 0 in stack 2082297 differs from the in-game resource files - using version from save
[01/28/2014 - 06:37:28PM] warning: Function Firefly..OnStart in stack frame 1 in stack 2082297 differs from the in-game resource files - using version from save
Link to comment
Share on other sites

Those are the result of baked in data. Several references are locked in with the previous script versions.

Link to comment
Share on other sites

Those are the result of baked in data. Several references are locked in with the previous script versions.

I was afraid of that. Oh well, nothing can be done about that issue then.

Link to comment
Share on other sites

These papyrus errors appeared in my log with the 2.0.1 beta:

[01/29/2014 - 12:13:28PM] error: Cannot call GetValue() on a None object, aborting function call
stack:
    [ (000E1493)].critterSpawn01.IsActiveTime() - "CritterSpawn.psc" Line 198
    [ (000E1493)].critterSpawn01.shouldSpawn() - "CritterSpawn.psc" Line 187
    [ (000E1493)].critterSpawn01.OnCellAttach() - "CritterSpawn.psc" Line 79
[01/29/2014 - 12:13:28PM] warning: Assigning None to a non-object variable named "::temp26"
stack:
    [ (000E1493)].critterSpawn01.IsActiveTime() - "CritterSpawn.psc" Line 198
    [ (000E1493)].critterSpawn01.shouldSpawn() - "CritterSpawn.psc" Line 187
    [ (000E1493)].critterSpawn01.OnCellAttach() - "CritterSpawn.psc" Line 79

This is not on a new game, so I can't rule out "baked in" data, but I have never seen these particular errors before, which leads me to believe they might be a new issue with 2.0.1. I'm not going make a tracker issue on this (unless someone thinks I should), because like I said they were on an old save.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...