PLT files - Packed Layer Textures - offer support for multiple layers and are used for tintable armor/body parts for multipart complex models (player characters), tail models and wing models. They can be interpreted as 10 grayscale textures, which can then be tinted separately.
This is a solution circa 2002 for the problem of easily editable colours on items / armor etc. Because of this it might seem archaic in the present day and there may be other options nowadays with shaders.
File Format Heirarchy
Note that PLT files are loaded over the top of TGA files, but under DDS files (ie a DDS file is the first one checked for). Only certain objects can load PLT files in the first place as noted below: creature body parts/armor/helmets/cloaks and their icons, and tail/wings.
Some PLT tools:
- GIMP PLT Plugin - python plugin for saving and loading in GIMP
- Bioware PLT Photoshop Exporter
- PLT Editor - Basic editor for PLT files, can batch convert to/from BMP
PLT Files Basics
You basically have a standard TGA-like image, but with a number of "layers" - these layers don't really overlap they merely represent which colour option affects which pixel.
The easiest way to edit them is likely the GIMP plugin where the layers for each colour selection can be generated, and thus cutout portions of which part of the image should be tied to which layer can be done.
They can only be applied to:
- Multipart creature appearances (usually just the default player races, eg Human, Elf, Dwarf etc.)
- Armor on these appearances (and their icons) replace limbs and torso but not the head
- Helmets (replaces the head object)
- Robes (slightly different - it replaces the shoulder body parts of the current armor/body) and their icons
- Tails - see tailmodels.2da
- Wings - see wingmodels.2da
While shields, weapons and other held items technically can be more advanced as of writing I am not sure they do support PLTs.
PLT File Usage
You can use PLT files to define the colours in the toolset (or via. scripting) of an object. For instance a specific armour piece could have a red breastplate with one appearance and blue with another.
Since it applies to complex models, meaning a lot of different little models for each race / gender, it can be quite time consuming to make them. Robes have some shortcuts (although a lot of file duplication).
For non-complex models you might be able to workaround this by using tailmodels.2da or wingmodels.2da. The tail.models.2da may be easiest since it already uses a lot of existing model appearances there (used pre-EE to scale certain monsters) so should be simple to replicate and already have a set of "invisible" appearances to attach to properly with the right orientations.
- Note with this method the PLT textures do not show up properly in the toolset only in the game
You can't apply PLT files to simple models even with script commands, the engine just doesn't like it.
The palette itself used for PLT files is a specific set of options, not a simple RGB number. Some of these options are quite odd looking in certain situations!
There are always 176 (0 - 175) options in the palette (relevant for script commands).
Each layer has different options - well, a choice of 4 as noted below. The texture names used by the game to replace the colours is hardcoded - ie no more than 176 entries and the file is loaded in a particular way. The "pal_xxx01.tga" files are 256 x 176, with presumably each colour option being a line. The X axis appears to be the amount of alpha applied - for presumably environmental maps and other shiny/matt purposes.
Due to how they are loaded please fill in this section if you've tried to replace them; they might be loaded at client load thus not available for use in Hakpack files. For sure there is a selector texture loaded by the game used in character creation - gui_pal_xxx.tga - which may need also changing to match changes to pal_xxx01.tga files.
Default Palette Files
The BMP files are only used by the toolset. The in-game selectors are limited since you can only select the skin, hair and tattoo in-game (at chargen). The BMP files could be converted to TGA/DDS to be used in game if necessary.
|Layer Name||Toolset Options Picture||Palette Texture||Palette Texture Name||In Game Selector Texture||Toolset Selector Texture||Notes|
|Skin||pal_skin01.tga||gui_pal_skin.tga||mvpal_skin.bmp||Not sure if selector texture is for in-game as well as toolset|
|pal_cloth01 and pal_tattoo01 are identical, but it might be you could use different colours in each.|
|mvpal_armor01.bmp||pal_armor_02.tga seems to be a lightened version of 01. Presumably that PLT layer is a bit lighter / brighter in game even if the toolset shows the same options.|
The engine will load the PLT files in and convert them to a texture for the GPU using the CPU, with whatever colours were selected for the given object. Since this is all client side there is nothing special on the server side for it.
File Format Information
PLTs are binary files consisting of a 24 byte header and an image data block. The image data consist of 2 bytes per pixel, each representing a (color, layer) tuple.
|. . .|
Valid layer Ids