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.