Standalone [1.4.4] Terrasavr, web-based inventory editor

Terrasavr now includes 1.3 items but can't save/load 1.3 characters yet.
You can get the new items into the game by making a blank 1.2.4.1 character in Terrasavr, giving them new items, and loading it in the game (which will convert it to 1.3 and allow to redeem your items).
 
FYI Mr Yellow:

Player file format changes w.r.t. format 102/v1.2.4.1:
After the game version 32bit int, skip/read the first new unknown block of 20 bytes.
Continue as before reading the name bytes.
After the is-male boolean, read 10 bytes.
Continue as before reading the health bytes.
After the buffs section, read 143 bytes.
Continue as before reading the world bytes.
At the previous end of the file, after the count of angler quests finished, read 13 bytes.

This should get you able to read the 146format/v1.3 file as though it were the previous, and ofc by saving those 4 byte chunks and writing them in the same sequence in an output file, you can create a valid 1.3 file that the game seems happy to load.
:-D

Now to work out what those 4 chunks contain...

edit: ok that's not quite right, noticed it's mis-aligned for armour and a bunch of other things. I think I need to shift some unknown bytes to be before the armour section... :(
edit 2: there's a 5 byte unknown somewhere between mana max and first armour item. This fixed my armour index alignment.
And there's still something more serious making my 1st calculated inventory slot still fall inside the inventory, but the 10th not...
Proper effort required tomorrow it seems.
 
Last edited:
Couldn't leave it to rest.
What I'm certain of so far, in byte counts:

After game_version index: 4
Before name index: 24
After is_male index: 41
Before health index: 51
After mana max index: 67
Before armour index: 93
After dyes? index: 213 not False
Before inventory index: 243
Before buffs index: 1593
Before worlds index: 1769
After angler_quests_finished index: 1799
End of file?: 1812 True
 
They do not show via the filters - you must search their names.
This too. Categories in Terrasavr are all made manually and are a horrible mess at the moment (created by inserting lists of item IDs into the code). I've recently released a separate program that focuses just on displaying game information so I was able to store data differently and include some automatic categorization.

FYI Mr Yellow:
Player file format changes w.r.t. format 102/v1.2.4.1:
After the game version 32bit int, skip/read the first new unknown block of 20 bytes.
Continue as before reading the name bytes.
After the is-male boolean, read 10 bytes.
Continue as before reading the health bytes.
After the buffs section, read 143 bytes.
Continue as before reading the world bytes.
At the previous end of the file, after the count of angler quests finished, read 13 bytes.

This should get you able to read the 146format/v1.3 file as though it were the previous, and ofc by saving those 4 byte chunks and writing them in the same sequence in an output file, you can create a valid 1.3 file that the game seems happy to load.
:-D

Now to work out what those 4 chunks contain...

edit: ok that's not quite right, noticed it's mis-aligned for armour and a bunch of other things. I think I need to shift some unknown bytes to be before the armour section... :(
edit 2: there's a 5 byte unknown somewhere between mana max and first armour item. This fixed my armour index alignment.
And there's still something more serious making my 1st calculated inventory slot still fall inside the inventory, but the 10th not...
Proper effort required tomorrow it seems.
Thanks! The new format seems to be around:
string name
byte difficulty
int64 playing time (?) - always changes a little.
int32 hair index
byte hair dye index
byte (flags for whether to hide each accessory)
[2 unknown bytes]
byte gender + ? ^1
int32 health
int32 max health
int32 mana
int32 max mana
[5 unknown bytes]
int24 hair color
int24 skin color
int24 eye color
int24 shirt color
int24 under shirt color
int24 pants color
int24 shoe color
20x{ int32 id, byte prefix }: equips ^2
10x{ int32 id, byte prefix }: dyes
58x{ int32 id, int32 stack, byte prefix, byte itemFlags ^3 }: inventory
[40 unknown bytes] ^4
40x{ int32 id, int32 stack, byte prefix }: piggy bank
40x{ int32 id, int32 stack, byte prefix }: safe
22x{ int32 id, int32 time }: buffs
Nx{ int32 x, int32 y, int32 id, string name }: servers
int32 endServers == -1
byte hotbar locked
[13 unknown bytes]
int32 number of angler quests finished

Notes:
^1: Seems to store that new shirt style option
^2: Hereby I make this kind of assumption that there are 2 new equip slots (implemented or not) because both equip and dye sections became longer.
^3: Probably just whether the slot is "favorited", but you never know when it's a boolean stored as a byte.
^4: 8 more equip/non-stackable slots? Or an inventory extension + flags. I don't know
This may also contain some imprecisions as it is 3AM at the moment.
 
Last edited:
hey can someone ell me whats up with this:
Screenshot (41).png
won't let me use any of my characters (im running terraria 1.3 btw)
 
Yeah as of right now the author specifically claimed that it can't load 1.3 saves. So you guys need to wait until he optimizes this.
 
Thank you @YellowAfterlife for making the character save and wiki available!!

Terrasavr now includes 1.3 items but can't save/load 1.3 characters yet.
You can get the new items into the game by making a blank 1.2.4.1 character in Terrasavr, giving them new items, and loading it in the game (which will convert it to 1.3 and allow to redeem your items).
 
I don't think gender is a recorded thing. Simply style.
Between some new male and new female chars, the only bytes that differed were the name, 0 vs 4 in style where AFAIK gender used to be, and the random 3 starting weapons prefixes.

I had 1 move and stand about for a few mins, didn't detect any time or steps count.

I'm just thoroughly testing my format reader atm, still got 20+10+5+30+50+13 new bytes, and need proper not-mostly-zero test chars to ensure the rest of the indexes are right.
 
Back
Top Bottom