been messing with the game for a while, found some interesting stuff i thought i'd share:
max sprint is a float and is equal to might/10.. so if your might is 35, wait until sprint meter is full, do an "exact value" search for 3.5...then run a bit (until meter at halfway) then do a search for "value between" 3.5/2 +- .5 or so (ie. search between 1 and 2.5 or so)...repeat process a couple times; freze addrss that comes up
XP is a 4-byte given by the formula
XP(lvl) = (lvl-1)*500 + c
where c is your xp for the current level shown in the top of the character screen
and
XP(0) = 0
or
to put it plainly
XP(1) = 0 + c
XP(2) = 500 +c
XP(3) = 1000 + 500 + c
XP(4) = 1500 + 1000 + 500 + c
XP(5) = 2000 + 1500 + 1000 + 500 + c
... etc.
once you find XP value, skill pts are +24 bytes away (+0x18) and stat points are +36 bytes away (+0x20). I think they're 4-byte
I also found a structure that contains stat/skill values, including current/max hp/food and some other fun stuff (like an xp mod, a walk speed mod, and a hunger rate mod, among other things). There's also some interesting stuff (tl;dr; - looks like devs have already coded in some future updates)
the easiest way i've found to find the base of the structure is to find current food (should be a float, make sure you use a rounded format, not truncated); usually searching will turn up four different addresses, but only one will change all when you change value; once you have that subtract 128 bytes (0x80) to get the base address of the structure.
as for the structure itself, it alternates between an 8-byte ID and a float value for that ID. Maybe some people can make a table/figure out the rest of these values...
Note, all these default values are with Engineer on Easy
+0 - 8-byte: 1737 - +8 - float: might
+C - 8-byte: 1738 - +14 - float: finesse
+18 - 8-byte: 1739 - +20 - float: brains
+24 - 8-byte: 1740 - +2C - float: power (seems consistent in value with original SoTS pit power/mind value for class)
+30 - 8-byte: 1725 - +38 - float: current HP
+3C - 8-byte: 1726- +44 - float: max HP
+48 - 8-byte: 1727 - +50 - float: unknown (default is value is 0)
+54 - 8-byte: 1733 - +5C - float: current PSI? (default is 100)
+60 - 8-byte: 1734 - +68 - float: max PSI? (default is 100)
+6C - 8-byte: 1730 - +74 - float: max food (cannot modify, set from other values)
+78 - 8-byte: 1729 - +80 - float: current food
+84 - 8-byte: 1731 - +8C - float: unknown (possibly related to food?)
+90 - 8-byte: 1732 - +98 - float: food/tick? (default is .75; setting to 500 results in near-instant death, setting to 0 results in food never decreasing)
+9C - 8-byte: 1743 - +A4 - float: walking speed (default is 450; setting to 10000 results in near-instant traversal of any corridor; note, walking is still very "floaty", extremely so at high speed)
+A8 - 8-byte: 1742 - +B0 - float: xp mult? (default is ~2.1, setting to 1000 got me level to 19 before floor 3)
+B4 - 8-byte: 1744 - +BC - float: unknown (default is 740)
+C0 - 8-byte: 1745 - +C8 - float: unknown (default is 1)
+CC - 8-byte: 1736 - +D4 - float: unknown (default is ~0.3)
+D8 - 8-byte: 1749 - +E0 - float: unknown (default is 0)
+E4 - 8-byte: 1750 - +EC - float: unknown (default is 1000)
+F0 - 8-byte: 1747 - +F8 - float: unknown (default is 165)
+FC - 8-byte: 1748 - +104 - float: unknown (default is 500)
+108 - 8-byte: 1751 - 110 - float: unknown (default is 1)
+114 - 8-byte: 1752 - +11C - float: unknown (default is 1)
+120 - 8-byte: 1829 - +128 - float: lockpick
+12C - 8-byte: 1826 - +134 - float: electronics
+138 - 8-byte: 1830 - +140 - float: mechanical
+144 - 8-byte: 1824 - +14C - float: computer
+150 - 8-byte: 1827 - +158 - float: engineering
+15C - 8-byte: 1820 - +164 - float: pistol
+168 - 8-byte: 1822 - +170 - float: rifle
+174 - 8-byte: 1816 - +17C - float: assault weapon
+180 - 8-byte: 1818 - +188 - float: heavy weapon
+18C - 8-byte: 1825 - +194 - float: decipher
+198 - 8-byte: 1819 - +1A0 - float: knife
+1A4 - 8-byte: 1817 - +1AC - float: blade
+1B0 - 8-byte: 1833 - +1B8 - float: traps
+1BC - 8-byte: 1831 - +1C4 - float: medical
+1C8 - 8-byte: 1821 - +1D0 - float: melee
+1D4 - 8-byte: 1828 - +1DC - float: foraging
+1E0 - 8-byte: 1823 - +1E8 - float: biotech
+1EC - 8-byte: 83149 - +1F4 - float: empathy?
+1F8 - 8-byte: 1837 - +200 - float: telekinesis? (seems to match SoTS: the pit values for each class)
+204 - 8-byte: 1838 - +20C - float: war mind?
+210 - 8-byte: 1836 - +218 - float: redaction?
+21C - 8-byte: 1834 - +224 - float: manifestation?
+228 - 8-byte: 1835 - +230 - float: mecha empathy? (seems to match SoTS: the pit values for each class)
+234 - 8-byte: 1832 - +23C - float: resistance?
+240 - 8-byte: 84933 - +248 - float: necro tech? (just a guess b/c of wildly different ID)
+24C - 8-byte: 1815 - +254 - float: unknown? (default 0)
+258 - 8-byte: 1814 - +260 - float: unknown? (default 0)
Maybe someone can use this info to make a decent table....
This is partly for my own notes. If someone wants to edit stuff the hard way..
To find items:
Find the amount of an item first. Then right click on the result and select 'Browse this memory region'. Before the amount should be an array like "## ## ## 00 00 00 00 ?? ?? 00" search Array of bytes to get (inventory?) items. The ?? ?? value will be the amount.
You can drop an item and watch the '## ## ##' part of the address change to '00 00 00' and figure which entry it is.
Current item durability is in Float and round numbers (25, 80, etc). Search > damage the weapon > search new durability.
Might get more than one result.
To test, right click on a result and select 'Browse this memory region'. You'll be sent to a 00 value byte.
Right click on it and select 'Display type' -> 'Float' (Byte Hex is the default mode). You should now see the durability number.
You'll know you have the right one if two doors down, you also see the max durability. (eg 24/30 = 24.00 / 0.00 / 0.00 / 30.00). Both can be edited, but you need to close the viewer and come back after each edit.