Jump to content

Need help modding companion appearance


Recommended Posts

The last two days I tried to change Palleginas appearance and got stuck shortly before the finish line.

 

I want to change her hair, since .... well it certainly not the best style.

 

With "uabe" I managed to swap her hair with one of the default. Progress below.

 

!ROEa1w8.jpg! after !340z2Ol.jpg!

 

As you can see her hair color is a little of. I want her to look like this adventurer I made.

 

!kz6570p.jpg!

 

I can't find a way to change companions appearance colors. I looked all over the assetbundles and found files called "NPCAppearance" for all companions in characters.unity3d. The problem is, the color settings in the files are ignored by the game.

 

I don't know, what else could handle it. I'm open to suggestions.

 

Here is the NPCAppearance file for Pallegina

 

0 MonoBehaviour Base
0 PPtr m_GameObject
0 int m_FileID = 0
0 SInt64 m_PathID = 4514072720062380221
1 UInt8 m_Enabled = 1
0 PPtr m_Script
0 int m_FileID = 0
0 SInt64 m_PathID = -1588795467945385459
1 string m_Name = ""
0 int CharacterLayer = -1
0 PersistentData m_persistentNPCAppearance
1 UInt8 HideHelmet = 0
0 ColorRGBA primaryColor
0 float r = 0.262745112
0 float g = 0.0117647098
0 float b = 0.200000003
0 float a = 1
0 ColorRGBA secondaryColor
0 float r = 0.0196078401
0 float g = 0.0196078401
0 float b = 0.0196078401
0 float a = 1
0 ColorRGBA skinColor
0 float r = 1
0 float g = 0.90196079
0 float b = 0.662745118
0 float a = 1
0 ColorRGBA skinColor2
0 float r = 1
0 float g = 0.90196079
0 float b = 0.662745118
0 float a = 1
0 ColorRGBA hairColor
0 float r = 0.0431372598
0 float g = 0.0431372598
0 float b = 0.0431372598
0 float a = 1
0 ColorRGBA hairColor2
0 float r = 0.113725498
0 float g = 0.125490203
0 float b = 0.145098001
0 float a = 1
0 ColorRGBA eyeColor
0 float r = 1
0 float g = 1
0 float b = 1
0 float a = 1
0 AppearancePiece headAppearance
0 PersistentData m_persistentAppearancePiece
0 int bodyPiece = 7
1 string m_modelVisualDataName = ""
1 UInt8 UseExactModelName = 0
1 string specialOverride = ""
0 PPtr<$CharacterModelVisualData> modelVisualData
0 int m_FileID = 3
0 SInt64 m_PathID = 3455358884964860568
0 AppearancePiece hairAppearance
0 PersistentData m_persistentAppearancePiece
0 int bodyPiece = 6
1 string m_modelVisualDataName = ""
1 UInt8 UseExactModelName = 0
1 string specialOverride = ""
0 PPtr<$CharacterModelVisualData> modelVisualData
0 int m_FileID = 3
0 SInt64 m_PathID = 6451339605213690596
0 AppearancePiece facialHairAppearance
0 PersistentData m_persistentAppearancePiece
0 int bodyPiece = 8
1 string m_modelVisualDataName = ""
1 UInt8 UseExactModelName = 0
1 string specialOverride = ""
0 PPtr<$CharacterModelVisualData> modelVisualData
0 int m_FileID = 0
0 SInt64 m_PathID = 0
1 UInt8 hasHair = 1
1 UInt8 hasFacialHair = 0
0 int m_racialBodyType = 1
1 string nudeModelOverride = ""
1 string skinOverride = "Pallegina"
1 string nudeAppearanceOverride = ""
1 string skinPathOverride = ""
0 float characterScaleMultiplier = 1
1 UInt8 hasHead = 1
1 UInt8 ignoreDefaultNudeLegModel = 0
1 UInt8 allowSelectionOfAnyModel = 1
1 UInt8 ForceUseHighPolyModels = 0
0 PPtr<$Avatar> avatar
0 int m_FileID = 0
0 SInt64 m_PathID = 7485921111017688211
0 PPtr<$RuntimeAnimatorController> controller
0 int m_FileID = 0
0 SInt64 m_PathID = 0
1 UInt8 m_useOverrideGenderRace = 0
0 int m_overrideGender = 0
0 int m_overrideRace = 0
0 int m_overrideSubrace = 0

 

Edited by Fhav6X
Link to comment
Share on other sites

See my sig dude!

 

We have many highly rated Modders in our group (31 of us at the time of writing)

 

https://poe.peardox.com/invite

 

It's late so forgive us if we don't reply tonight

 

We all live in diffo tmezones - in mine it's go to sleep Simon time :)

OK Fair warning has been applied

 

I'm gonna move the domain to https://perspak.com early Feb but will keep all content

 

There are reasons behind this move which basically boil down to unifying my release schedule

 

My friends are welcome to play (I'll set you up your own areas if you desire them)

 

Please note that this process is messy so may take a few weeks 

Link to comment
Share on other sites

tried to achieve that for days, seems that godlike head and body aren't compatible with color change.

Link to comment
Share on other sites

I started using AssetStudio to browse through the unity3d files, as it is more structured than uabe.

 

https://github.com/Perfare/AssetStudio/releases

 

Every model has V01 texture files containing the colors and other optical stuff. These V01_C textures are the base color of all models. There are no other textures with different colors for a model, which means the part that handles coloring is not to be found in gamedatabundles or assetbundles. I presume it is a piece of code in the assembly-csharp.dll.

 

@kilay

You could duplicate and rename the models and their prefabs and create new V01_C textures. Then you have to ad the prefabs to the corresponding line in your color mod.

  • Like 1
Link to comment
Share on other sites

I am trying a new approach. The idea is to activate the appearance button for companions, to make them customizable like main and hired characters.

 

For that I have been poking around in the assembly-csharp.dll and what I found so far....

 

The actual coloring of the models is done by creating paper dolls. The responsible class is the UICharacterCustomizeManager. This class gets data set in class NPCAppearance. So somewhere in this classes is the key to unlock full customization of all characters (companions and godlikes).

  • Like 2
Link to comment
Share on other sites

I am trying a new approach. The idea is to activate the appearance button for companions, to make them customizable like main and hired characters.

 

For that I have been poking around in the assembly-csharp.dll and what I found so far....

 

The actual coloring of the models is done by creating paper dolls. The responsible class is the UICharacterCustomizeManager. This class gets data set in class NPCAppearance. So somewhere in this classes is the key to unlock full customization of all characters (companions and godlikes).

 

Many thnks

 

Please check your Pm

 

EDIT: and this could be related

 

https://forums.obsidian.net/topic/97998-useful-tutorials-and-links/?p=2090777

Edited by kilay
Link to comment
Share on other sites

What is described in the link is theoretically doable, but it will require a loooooooot of work. Most likely more than there is ambition to do so. One would need to rewrite entire classes in the game's code.

 

The Problem here is easier. We have two "identical" groups (in terms of files). One can be customized and the other cannot. There has to be something (a flag, if clause, a list) that distinguishes between them. Change that and the Problem is solved.

Link to comment
Share on other sites

What is described in the link is theoretically doable, but it will require a loooooooot of work. Most likely more than there is ambition to do so. One would need to rewrite entire classes in the game's code.

 

The Problem here is easier. We have two "identical" groups (in terms of files). One can be customized and the other cannot. There has to be something (a flag, if clause, a list) that distinguishes between them. Change that and the Problem is solved.

 

That's the point, i don't think to spend time to support some kinda of modding w/o a devs support.

too much invasive and not shareable,  even patches broke the files for sure , so other warning for users about that..

Not in my chords, but thnks for have shared your knowledge

 

over other games I have already shared patches of 25-40 GB w/o no issues, but Nexus and neither steam support that.

this should require also a patching order (maybe modconfig.json could be the right way ).

and btw never touched core files if not in some hard case.

 

Edited by kilay
Link to comment
Share on other sites

UABE has a packageinstaller. I need to tinker with it a little to see if it works with poe2.

 

If it works, it will circumvent uploading 1GB+ files. So that can be handled.

 

As for assembly-csharp.dll....it needs to be updated with every new patch. I admit, while most hacks for it are very simple, it gets annoying to do them over. That is also the reason I have not posted my Godlike helmet mod yet.

 

6s4WgZx.jpg

 

Just two lines to remove and you have full helmet support without stupid commands. Hopefully someone can write something like WeiDu from BG for poe2 someday.

Link to comment
Share on other sites

I made some progress. I was successful in changing Pallegina's hair style. I also managed to make a new look for Xoti.

beforeNjPPlWN.jpg

after4QqbeXM.jpgTVGpbwH.jpg

 

With currently available modding tools (unity asset bundle extractor  in short uabe) it is possible to change the appearance of any object in the game. Skilled people may even create new meshes for npc's, armor, weapons or even redesign maps. 

 

What's not possible is making new things and add them to the game. The appearance of any npc, weapon etc is defined by a prefab monobehavier file in the items.unity3d assetbundle. With uabe it is possible to edit existing files, but because of a bug in uabe file creation routine, it is currently not possible to make new blank files of this sort.

 

I also figure that such mods are not very practical in the future, as they will have problems with overriding already used addresses. I got a clue though how one could make own assetbundles, which would circumvent such problems and the problem of file size.

 

Creating a guide for all this will take me some time, but I'm on it.

  • Like 2
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...