I lookd through the code a bit how the models are loaded
1.) psclientchar.cpp: LoadRaceInformation
Loads and Parse the file /data/races/description.xml
at this point the mappings are done while the mappings are still only CStrings:
Stonebreaker: stonebm, stobebf
Enkidukai: enkim, enkif
Ynnwn: ynnwnm, fynnwn
Ylian: ynnwnm, fynnwn
Xacha: ynnwnm, fynnwn
Nolthrir: dermm, fynnwn
Demorian: dermm, fynnwn
Hammerwielder: stonebm, stobebf
Diaboli: ynnwnm, fynnwn
Kran: kran, kran
Lemur: dermm, fynnwn
Klyros: klyrosm, klyrosm
as one can see except for Kran, Enki and Klyors its mostly Ynnwn textures, as well as the Hammerwielder look the same as the Stonebreaker
2.) psengine.cpp: PreloadSubDir
Loads the real cal3d and texture data from /planeshift/models/* (this is the ZIP file models.zip)
3.) pawscharpick.cpp: SelectCharacter
This is on the loading screen the character view of the turning selected character .. this is the first time the loaded data is used .. anyhow the Data is processed through the CacheManager in the way:
->GetCacheManager()->getFactoryEntry(models[selectedCharacter].filename);
where the filename is the ZIP entry .. e.g. for a kran this will be /planeshift/models/kran/kran.cal3d
--------------------
so indeed .. if you add your own texture for the 'Xacha' as example you have to modify the description.xml as well as to add the models.zip, overall if you just copy most of the files from the Ynnwn directory to your new Xacha directory will this lead to load the same data twice to the memory .. but this will happen sooner or later anyway as soon as the Textures for those races is ready .. so my guess is (if not possible yet) to add the option to not realy load an object but link to an existing one inside of the CachManger as soon as an Object should be added .. so instead of using something like CacheManager()->LoadObject(name, filename) .. we might use somethink like CacheManager()->LinkToObject(name, linkedname) .. that way the object isn't realy loaded twice but instead will return the other object ..
anyhow in fact of lack of an other cal3d file I was unable to check on the first run if everything is implemented and we don't have to change any code but only add the entry to the models.zip and description.xml to work proper .. maybe Under_The_Moon .. I saw that you created a female Klyros .. so you might just test it if it will work that way

- Sisilam