Trnpack/trnunpack can also pack and unpack the mdb files, as they use same format as trn / trx files. Now I expanded the trnprint.pl program to understand more of those data structures used in mdb files. Also the Trn(3) library can encode and decode those structures, so I could make program to fix the internal names inside the RIGD/COL3/HOOK/WALK etc resources when changing the variation number of the tile. I added 2 new specific programs, remove-roof and update-variations. The first one will take the tile mdb file, and remove roof RIGD from it, and write out new tile with new variation number. The update-variations will update the tiles.2da so the variations counts match what is in the directory. I also included windows exe files for the trnpack, trnunpack and trnprint.
There seems to be cases where the toolset will put out variables having wrong type in the Type field but still storing the Value with incompatible format, i.e. Type field might have 1 to indicate the variable is integer, but the Value is stored having gff format type 10 (CExoString) or 8 (Float) instead of the correct 5 (Int). The check-module.pl will now detect these and print out the warnings. You can use check-module.pl with --dofix option to fix those errors. Note, that it will overwrite the old module == use it on backup copy. This should get rid of "invalid type cast" error when loading it in the toolset.
I made small program called mpcutsceneconv.pl that will change the conversations inside a module to be normal instead of multiplayer cutscene conversations. I also used PAR to package some of the perl programs to windows executables, so you can run them without installing perl. Those start slower than perl programs, but would be ok for mpcutsceneconv.exe style stuff.
There is now new program called check-module, that will verify that the module directory is valid, and has all the needed resources, and does not have any broken gff files in it. It will verify there is required files for each area, and that area files in the directory and in the module.ifo match. There is also initial version of the modules to read and write trn/trx files. There is tools to unpack and pack those to separate resources, and a program to print out information from each resource. There is not yet program to write modified resources back (it is next on my todo list).
Now erfpack.pl and erfunpack.pl should be able to recognize all nwn2 file types, and there is support for unknown file types (i.e. the files are expanded with extension xxxx, where xxxx is the resource type number, then when packing of the directory those extension are mapped back to the same resource type number).
Added support for encoding tlk files.
New version of tools released which understands Erf version 1.1, which used by the nwn2.
Now there is also three tar.gz files available for easier updating of the tools. The modules-*.tar.gz file contains the perl modules used by other tools. The genericbins-*.tar.gz have the general purpose perl scripts, and specificbins-*.tar.gz have the special purpose scripts.
Added some new tools, i.e. tile-extractor and tlkprint. Tile-extractor can be used to extract tile information from the area file and store it to the variable inside the area. This information can then be ingame to do various things. tlkprint allows you to print dialog.tlk files. There is also 2 new modules Tlk.pm and TlkRead.pm that will allow you to read and parse tlk files. Gffprint is also enchanced so it can be given the path to the dialog.tlk file, and then it can convert string refs to the actual texts.
Added some new features to gffmodify, and gffmatch. They now support some basic functions like @count@, @random@ and @substr@. Also erfunpack can now unpack data directly from zip file. This does require enough memory to uncompress the zip file to memory before unpacking the contents of erf.
There is also some new scripts like modify-height and export-shops.
Gffmodify.pl now supports parameters taken from the current structure, top level structure, area or from variables (from current structure, any parent structure or from toplevel structure). Those parameters can be named and used when setting value for fields of variables. Also added ability to set default value for @ask(default)@.
Builder-package.pl allows creation of builders basic package directly from module or unpacked directory. See documentation for more information.
Gffmodify allows now interactive query of the new values for the modified value. I.e. you can put @ask@ to the place of new value and it will query you a new value when it is needed. The gffmodify also now supports adding or replacing variables.
Added gffmodify.pl which allows modifying existing fields in the gff. This can be used to make quite a lot of different automatic things. Also added gffencode.pl which takes the output of gffprint -t (or gffprint -t -b if gffencode is give -f option) and write it back to the disk in gff format. This allows changes like gffprint.pl -t -b tay_mon*.git | sed 's/gi_0042_40_/gi_0045_40_/g' | gffencode.pl -f