The v1.0.7 address of the Skills table pointer is: Tactics Ogre Reborn.exe+D682D8
I might have done so before, but here is part of my custom CT and an explanation of what each part is/does:
Code: Select all
<CheatEntry>
<Description>"Mods"</Description>
<Options moHideChildren="1"/>
<Color>800080</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<Description>"Skills"</Description>
<Color>800080</Color>
<VariableType>String</VariableType>
<Length>4</Length>
<ZeroTerminate>0</ZeroTerminate>
<Address>Tactics Ogre Reborn.exe+D682D8</Address>
<Offsets>
<Offset>0</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<Description>"First Aid I"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+66*1BF</Address>
<CheatEntries>
<CheatEntry>
<Description>"Class Set - RuneFencer: 10"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+15</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>10</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"First Aid II"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+66*1C0</Address>
<CheatEntries>
<CheatEntry>
<Description>"Class Set - RuneFencer: 22"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+15</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>22</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"First Aid III"</Description>
...
<Address>+10+66*1C1</Address>
...
<Description>"Class Set - RuneFencer: 34"</Description>
...
<Value>34</Value>
...
<CheatEntry>
<Description>"First Aid IV"</Description>
...
<Address>+10+66*1C2</Address>
...
<Description>"Class Set - RuneFencer: 50"</Description>
...
<Value>50</Value>
...
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
Next is the "Skills" 'cheat', which is not actually a cheat exactly. What it does is have the address of the pointer to the Skills data table, which enables its subordinate cheats to use that address as a reference base. The vartype=string, length=4, and 0-terminated=no parts describe the Value that is supposed to be found at the beginning of the address pointed to: it should be text "xlce", so I can quickly open the Mods group, and see "Skills | P->{address} | String[4] | xlce" if everything is working correctly. Address is where to find the pointer to the data table. The Offset 0 thing indicates that this Address contains a pointer--use the value found at the Address as another address.
After that is a bunch of 'cheats' each pointing to one skill, one record in the skills table. Description is the name of the skill. Don't really care what the value type is, as this 'cheat' won't modify anything. Address is where the action happens here: the first + indicates that it is using an offset from the address of its parent 'cheat': if the parent was pointing to address 1000, a child with address +42 would point to address 1042. Keep in mind that the raw XML of the <Address> tag is interpreted as a hexadecimal, not base-10. All the data tables have a header that is 0x10 (16) bytes long, which is what the +10 is for: to skip over 0x10 bytes. Each record in the Skills data table is 0x66 (102) bytes wide (says so in the header), so we have +10+66. There are a bunch of sources to find which record to look up; anyone can use my [Link] to start off, or look around for something better. If you count the first record as #0, the First Aid 1 record that I'm looking for is #447 or 0x1BF, and so we have the full address of +10+66*1BF.
The sub-subordinate record is an actual cheat--something that modifies the game. Description is what it is supposed to do; for example, allow the RuneFencer class to learn First Aid 1 at level 10. VariableType is kind of value being modified at this Address. Address here also starts with a +, indicating that it is an offset from the address of its parent 'cheat'; in a record in the Skills table, if the first byte is #0 the part that controls if/when the RuneFencer class can use it is a 1-byte value at #21 (0x15). So the Address is +15, and VariableType = byte. Finally, there is that Hotkey stuff--if you don't want to manually go in and (re)set this each time, you set up a hotkey that can do stuff; you still have to use the hotkey each time you run the game, but this is the best you can do without actually re-writing the game's data. This one here is Action = Set Value, to write the Value to the address when the hotkey 17+32 (Ctrl+Space) is pressed. Value is 10 (0x0A) = learn at level 10 (for RuneFencer), which is written over the game's value here of 0xFF = cannot learn + cannot use.
The other records are there, some abbreviated to only show differences. Notice that you can have the same key combination activate multiple cheats' Hotkey Action.
Let's see... answer some questions... Velocity Shift is Skill record #739, so use Address +10+66*2E3. Byte for Lord class is #60, so use Address +3C. White Knights get it at Level 0x12 (18), so use Value = 18 or a higher unless you're extra-greedy.
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1