Jump to content

Using Looksmenu on an NPC also changes the template record it was created from!?


PJMail

Recommended Posts

Really odd thing:

 

- Created an actor from an _NPC record in my mod via "Placeatme(_NPC)".

- Use Looksmenu (invoked via ShowRaceMenu) to change this Actors hair/face.

- Create another actor the same way (from the base _NPC record) - they have the new hair/face!

 

What gives? The base _NPC record specifies all the headparts/face morph stuff explicitly, yet it seems like Looksmenu has changed the Actor I was working on AND the base template it was created from.

 

Clearly I have not set things up correctly.

How do I specify a base NPC template, that I can create any number of Actors from, that doesn't change?

 

I don't want them to be randomized (like creating Settlers) - just independently modifyable.

 

Thanks

Link to comment
Share on other sites

I've never modified generic NPCs in the Looksmenu so I'm not sure but isn't ShowRaceMenu/Looksmenu supposed to actually work like this?
Didn't the developers intentionally make the Looksmenu to save the new facial and body morphs in the Actor Base form and not the Actor reference so that they can create multiple Actor references of the same Actor Base (e.g. the Player NPC in Kellogg's memory who's templated from the Player Actor Base, 00000007)? (Because any changes on the Player are also saved in the Actor Base form).

- Created an actor from an _NPC record in my mod via "Placeatme(_NPC)".

 

Is this NPC templated from a Leveled Character or they have any Actor Templates (Actor form >> Templates tab)?

 

- Create another actor the same way (from the base _NPC record) - they have the new hair/face!

 

Did you get their Actor Base with GetActorBase() or GetLeveledActorBase()?

Link to comment
Share on other sites

Thanks Zorkaz & LarannKiar.

 

You are confirming my suspicions that looksmenu modified the actorbase - a lot of other operations already do (setprotected, setoutfit) so I should not have been surprised...

 

So, I just have a basic _NPC record "baseactor" (not templated off anything else as I need to specify everything specially in it), and create an in-game actor from it via

Actor NewActor = Self.PlaceActorAtMe(BaseActor as Actorbase, 0, None)

How would you suggest I do this differently then? I don't want anything 'randomized' so thought I couldn't use a LeveledActor...

 

Thanks

Edited by PJMail
Link to comment
Share on other sites

Thanks Zorkaz & LarannKiar.

 

You are confirming my suspicions that looksmenu modified the actorbase - a lot of other operations already do (setprotected, setoutfit) so I should not have been surprised...

 

So, I just have a basic _NPC record "baseactor" (not templated off anything else as I need to specify everything specially in it), and create an in-game actor from it via

Actor NewActor = Self.PlaceActorAtMe(BaseActor as Actorbase, 0, None)

How would you suggest I do this differently then? I don't want anything 'randomized' so thought I couldn't use a LeveledActor...

 

Thanks

 

Maybe you could try Leveled Characters. Create a Leveled Character and use GetLeveledActorBase() to PlaceAtMe() them. (You can put different actors with the same appearance in the Leveled Character).

 

I've never used GetLeveledActorBase() for PlaceAtMe() so I have no idea if this would work at all.. but Leveled Characters (or Leveled Actors) can be edited with a script, so, (assuming that GetLeveledActorBase() and PlaceAtMe() work together), you might be able to create Actors which have generated Actor Bases who don't share facial and body morph data.

Edited by LarannKiar
Link to comment
Share on other sites

No, Just No. I don't understand this.

 

I Created a leveledNPC list (lChar_mynpc) containing just my original NPC_ template, then a created a new NPC record (Mynpc_template) totally templated on this LevelelNPC list.

Now when I create a new NPC via PlaceActorAtMe(mynpc_template) it all works fine and both the new NPC, and it's 'GetLeveledActorBase()', are FFxxxxxx formids.

BUT when I attempt to use looksmenu on it the Face/Hair WON'T change, and when I exit Looksmenu the entire NPC becomes invisible....

 

Bethesda hates me.

Edited by PJMail
Link to comment
Share on other sites

I certainly do SetCharGenSkeleton(True) when using using the script version (see my script here) - and while am in the looksmenu the NPC re-appears, but dissappears again when I exit.

The same thing happens if I just use SLM at the console. It seems to be a reported issue if you change the hair (etc) of an NPC based on a LeveledList.

 

People often report this invisibility issue when they try and change Curie.

Apparently the only way it works is to create a clone off the base record and modify that (what I was originally doing).

This suggests it doesn't work to use looksmenu on a leveled NPC...

 

What does precachechargen() do?

Link to comment
Share on other sites

People often report this invisibility issue when they try and change Curie.

 

I forgot that Curie is a Leveled Character.. sorry.

 

Apparently the only way it works is to create a clone off the base record and modify that (what I was originally doing).

This suggests it doesn't work to use looksmenu on a leveled NPC...

 

Unfortunately I don't have any ideas.. ShowRaceMenu() was designed for unique actors and it seems that it can't handle generated actor bases, only the ones created in the editor. If this is the case, then I'm faraid I won't be able to help much..

 

What does precachechargen() do?

 

It just precaches the face gen data. This function is called only once in the game, before the intro. I thought it would help with the Leveled Character issue...

 

 

As for the script, why did you change the NPC's facial animations to Player anims with "NPC.ChangeAnimFaceArchetype(AnimFaceArchetypePlayer)" in OnMenuOpenCloseEvent "LooksMenu" "abOpening == 0"? The Player's facial animations (including the animations cameras) were made specifically for the Player.

 

The PlayerKeyword is only necessary if you use the NPCSinkFacegenMarker (Interaction Point 0, Marker Keyword). Did you try other furnitures? CharGen furnitures (e.g., FaceGenSurgeryChair, FaceGenBarberChair) are not special furnitures. When you press "Confirm Character" in the LooksMenu, the Player exits any furniture automacally.

 

Sorry I couldn't be more help but CharGen seems to have a lot of hardcoded behavior.. But please update this topic if you manage to find a solution. (I'm actually interested in the differences of the editor made and generated actor bases).

Edited by LarannKiar
Link to comment
Share on other sites

  • Recently Browsing   0 members

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