I have something for you. Here's a demo of the final product:
You must be registered to see the links
Attached is an en/decoder for the encrypted files. Unlike the dat encoder, this one is not a binary executable, but a node script. I was lazy with the argument parsing and used a 3rd-party library, which means you need to extract both files somewhere and do
npm i (or yarn, or pnpm, ...) once.
Then run the script like this like this
- in decode mode:
node endecoder.js -m decode -i E:\games\victorias_official_v100\package.nw\data_encrypted -o E:\games\victorias_official_v100\package.nw\data_decrypted --seed 521478963
- in encode mode:
node endecoder.js -m encode -i E:\games\victorias_official_v100\package.nw\data_decrypted -o E:\games\victorias_official_v100\package.nw\data_encrypted --seed 521478963
The game uses a few constants for the de/encoding process, which I hardcoded into the script. In case they changed, you would find them in
package.nw\js\plugins\DataEncryption.js. Furthermore, the seed may change between builds as well. You can extract it from the
package.nw\js\plugins.js file, near the bottom. It looks like this:
JSON:
{"name":"DataEncryption","status":true,"description":"","parameters":{"execEncrypt":"false","seed":"521478963","exceptedNames":"$dataSystem,$dataMap","logProcessTime":""}}
I found the strings to translate inside the ExternMessage.csv file. You need to pay attention to a few things here:
- the messages are multi-lined and are wrapped between quotes to indicate the start and end
- the text uses modifiers to align text on the screen, e.g. \ac. Looks like this:
scn_text_1004,"\ac地上の人々は自然の過酷さになすすべもなく、. When translating, make sure to put a space after the \ac, otherwise the engine or game (not sure which one) will try to parse the following letters as a modifier as well. For example you would put: scn_text_1004,"\ac Hello, I love programming. It's my favorite thing to do.