Cozy1 do the DDS files in the parsc for the inlays attach to a .nif? I have experience with gambryo from the elderscrolls and fallout games, but if we get an importer/exporter working you can change the way the faces work on the nif and set up the dds to work better for 24 notes. I don't know if they bother deving a tool for rs nif files though, I remember coming across a old post when the game released on the nifskope forums. In the very least there may be some scripts for blender that could be modified to do this. https://forum.niftools.org/topic/3624-decode-nif-version-30103/ header_v30.1.0.3.bt
//--------------------------------------
//--- 010 Editor v4.0.3 Binary Template
//
// File: 30.1.0.3
// Author: jonwd7
// Revision:
// Purpose:
//--------------------------------------
// REF
typedef uint REF <read=ReadREF, open=suppress>;
string ReadREF ( REF &r ) {
if ( r == 4294967295 )
return "None";
string s;
SPrintf(s, "%u", r);
return s;
}
// STRING
typedef uint STRING <read=ReadSTRING>;
string ReadSTRING ( STRING &s ) {
string t;
SPrintf(t, "%s [%u]", file.header.strs[s].str, s);
return t;
}
// SSTRING
typedef struct {
uint stringlength <hidden=true>;
char str[stringlength] <open=suppress>;
} SSTRING <read=ReadSSTRING>;
string ReadSSTRING( SSTRING &s )
{
if ( s.stringlength > 0 )
return s.str;
return "";
}
typedef struct (int size) {
byte data[size] <open=suppress>;
} BLOCK;
struct FILE {
struct HEADER{
char version[0x26];
byte unk_newline;
byte version1_rev;
byte version2_build;
byte version3_minor;
byte version4_major;
byte endian;
uint userversion;
uint numblocks;
uint userversion2;
ushort numblocktypes;
struct BLOCKTYPES{
uint blocklen;
char blocktype[blocklen];
} blocktypes[numblocktypes]<optimize=false>;
short blockindex[numblocks];
uint blocksize[numblocks] <open=suppress>;
uint numstrings;
uint maxstringlength;
SSTRING strs[numstrings] <optimize=false, open=suppress>;
byte unknown[5];
uint unknown2;
}header;
struct BLOCKS {
local int i <hidden=true>;
for ( i = 0 ; i < header.numblocks; i++ )
{
BLOCK data(header.blocksize[i]) <open=suppress>;
}
} blocks;
struct FOOTER {
ushort numRoots;
byte unknown;
if ( numRoots > 0 )
REF root[numRoots] <optimize=false>;
} footer;
} file;