Okay, so, this is... this is ugly. But I have made meaningful progress on finding pointers for editing the field stats, and so I am sharing despite the ugliness of it all, because there are a lot of things I don't understand and I don't know how to turn this into a script to edit multiple fields at once. I'm hoping somebody knowledgeable can take the framework of the work here to make a script to max these out, a table to edit them properly that *makes sense*, or anything. This is not user friendly, if you break your field I am sorry but there is nothing I can do for you, because I *really don't even understand how it actually works*.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>786</ID>
<Description>"FirstField"</Description>
<LastState Value="" RealAddress="00000000"/>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>793</ID>
<Description>"GrowthRateBoostDecimal?BehavesVeryOddly!"</Description>
<LastState Value="0" RealAddress="1C144EF9350"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>0</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>785</ID>
<Description>"GrowthRateBoostMainIntegerGetsWeirdAtHigherValues5IsIngameMax"</Description>
<LastState Value="5" RealAddress="1C144EF9351"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>1</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>788</ID>
<Description>"QualityBoostSetTo32704ForInGameMax"</Description>
<LastState Value="32704" RealAddress="1C144EF9352"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>2 Bytes</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>2</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>797</ID>
<Description>"SizeBoost255=Max0=MinButItsWeirdEffectedByDefenseFractions"</Description>
<LastState Value="0" RealAddress="1C144EF9354"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>4</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>795</ID>
<Description>"FieldDefenseIsThisValueDividedByFourIngameMaxIs63SoSetTo252FractionsEffectSize"</Description>
<LastState Value="252" RealAddress="1C144EF9355"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>5</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>787</ID>
<Description>"FieldHealth"</Description>
<LastState Value="39" RealAddress="1C144EF9356"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>6</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>789</ID>
<Description>"SecondField"</Description>
<LastState Value="" RealAddress="00000000"/>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>794</ID>
<Description>"GrowthRateBoostDecimal?BehavesVeryOddly!"</Description>
<LastState Value="128" RealAddress="1C144EF9360"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>10</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>790</ID>
<Description>"GrowthRateBoostMainIntegerGetsWeirdAtHigherValues5IsIngameMax"</Description>
<LastState Value="3" RealAddress="1C144EF9361"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>11</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>791</ID>
<Description>"QualityBoostSetTo32704ForInGameMax"</Description>
<LastState Value="32704" RealAddress="1C144EF9362"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>2 Bytes</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>12</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>798</ID>
<Description>"SizeBoost255=Max0=MinButItsWeirdEffectedByDefenseFractions"</Description>
<LastState Value="0" RealAddress="1C144EF9364"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>14</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>796</ID>
<Description>"FieldDefenseIsThisValueDividedByFourIngameMaxIs63SoSetTo252FractionsEffectSize"</Description>
<LastState Value="252" RealAddress="1C144EF9365"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>15</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>792</ID>
<Description>"FieldHealth"</Description>
<LastState Value="60" RealAddress="1C144EF9366"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>"RF4S.exe"+00E95D58</Address>
<Offsets>
<Offset>16</Offset>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
That code will give you pointers to modify some things in the first field (top left corner of the field directly behind the castle), and the field next to it one to the right, the "second field".
Some info on how this works. Every 2x2 field has its own set of stats, the sections I've found and made pointers for above are what let you edit the... 'temporary' changes. Things you can change with items, like the growth rate, the Ql.+, the Health, the Defense, the Size. If you go out of the usual bounds, you can also effect the "[No.] +" variable and increase (or decrease!) the number of items grown per plant. There's nothing in game that does that by messing with the "[No.] +" variable temporarily though.
Each individual 2x2 field also has *permanent* stats, which you can alter in memory shortly following the lines i've found. Your fields actually level up as you grow things on them, with each plant increasing the permanent stats of the field differently when fully grown. You can increase the *base* Number of items grown here slightly, even though there's no in-game way to access the temporary boost. Increases to the fields base stats, and booster stats, do stack, and show as separate variables when viewing the field with a magnifying glass. There is a "Soil Leveling Guide" if you want to get into the meat of that. I do not have codes to modify those base stats, because I straight up do not understand them at all. If you want to mess with them, you can browse memory near the regions my pointers alter and they're the very next 8 bytes. If you really want you can just set that entire region to straight F's and boost the ever loving crap out of your field. However, I have no idea what the stats are supposed to be base (definitely not 0, since things do grow there...) so I have no idea how to revert this if you do it.
This game stores things in weird freaking ways, some of the values interact with each other in weird freaking ways, and I don't get it. The only thing that's consistent at all is that "Health" is a single byte, and readily searchable, so if you want to find the address of a given field mess with its health to search in cheat engine then the surrounding bits are the rest of the stats. The offset between fields is (to the best of my knowledge) always just +10 to the address, it goes left to right then top to bottom in every single field, seasonal, additional ones, whatever. However, you need to find the new top-left field for each different map then add 10 to that. I haven't done so because... I'm not very far into the game and don't have most of the fields unlocked.