Skip to content

Instantly share code, notes, and snippets.

@sthalik
Created December 21, 2023 19:08
Show Gist options
  • Save sthalik/1888b1abef2bd3475bae6dc225dfe3fc to your computer and use it in GitHub Desktop.
Save sthalik/1888b1abef2bd3475bae6dc225dfe3fc to your computer and use it in GitHub Desktop.
underrail merchant refresh table
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
<CheatEntries>
<CheatEntry>
<ID>2039</ID>
<Description>"UnderRail AOB script; CharGen only"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobStatPtsChecker,83 BF ?? ?? 00 00 00 0F 9F C0 0F B6 C0)
aobscan(aobSkillPtsChecker,83 BA ?? ?? 00 00 00 7E ?? 8B 86 ?? ?? 00 00)
aobscan(aobFeatPtsChecker,83 B9 ?? ?? 00 00 00 7F ?? C7 86 ?? ?? 00 00 ?? ?? 00 00)
alloc(newmemStatPtsChecker,4096,aobStatPtsChecker)
label(aobStatPtsChecker_r)
label(aobStatPtsChecker_i)
registersymbol(aobStatPtsChecker_r)
registersymbol(aobStatPtsChecker_i)
label(lblStatPtsChecker)
label(lblStatPtsCheckerSkip)
label(lblStatPtsCheckerRet)
label(pBase)
label(iBaseStatOffset)
registersymbol(pBase)
registersymbol(iBaseStatOffset)
label(aobSkillPtsChecker_r)
label(aobSkillPtsChecker_i)
registersymbol(aobSkillPtsChecker_r)
registersymbol(aobSkillPtsChecker_i)
label(lblSkillPtsChecker)
label(lblSkillPtsCheckerSkip)
label(lblSkillPtsCheckerRet)
label(iBaseSkillOffset)
registersymbol(iBaseSkillOffset)
label(aobFeatPtsChecker_r)
label(aobFeatPtsChecker_i)
registersymbol(aobFeatPtsChecker_r)
registersymbol(aobFeatPtsChecker_i)
label(lblFeatPtsChecker)
label(lblFeatPtsCheckerSkip)
label(lblFeatPtsCheckerRet)
label(iBaseFeatOffset)
registersymbol(iBaseFeatOffset)
newmemStatPtsChecker:
lblStatPtsChecker:
mov dword ptr [pBase],edi
lblStatPtsCheckerSkip:
readmem(aobStatPtsChecker,7)
jmp lblStatPtsCheckerRet
aobStatPtsChecker_i:
readmem(aobStatPtsChecker,7)
pBase:
dd 0
iBaseStatOffset:
readmem(aobStatPtsChecker+2,4)
lblSkillPtsChecker:
mov dword ptr [pBase],edx
lblSkillPtsCheckerSkip:
readmem(aobSkillPtsChecker,7)
jmp lblSkillPtsCheckerRet
aobSkillPtsChecker_i:
readmem(aobSkillPtsChecker,7)
iBaseSkillOffset:
readmem(aobSkillPtsChecker+2,4)
lblFeatPtsChecker:
mov dword ptr [pBase],ecx
lblFeatPtsCheckerSkip:
readmem(aobFeatPtsChecker,7)
jmp lblFeatPtsCheckerRet
aobFeatPtsChecker_i:
readmem(aobFeatPtsChecker,7)
iBaseFeatOffset:
readmem(aobFeatPtsChecker+2,4)
aobFeatPtsChecker:
aobFeatPtsChecker_r:
jmp lblFeatPtsChecker
nop
nop
lblFeatPtsCheckerRet:
aobSkillPtsChecker:
aobSkillPtsChecker_r:
jmp lblSkillPtsChecker
nop
nop
lblSkillPtsCheckerRet:
aobStatPtsChecker:
aobStatPtsChecker_r:
jmp lblStatPtsChecker
nop
nop
lblStatPtsCheckerRet:
[DISABLE]
aobStatPtsChecker_r:
readmem(aobStatPtsChecker_i,7)
unregistersymbol(aobStatPtsChecker_r)
unregistersymbol(aobStatPtsChecker_i)
unregistersymbol(bEnableStatPtsChecker)
aobSkillPtsChecker_r:
readmem(aobSkillPtsChecker_i,7)
unregistersymbol(aobSkillPtsChecker_r)
unregistersymbol(aobSkillPtsChecker_i)
unregistersymbol(iBaseSkillOffset)
aobFeatPtsChecker_r:
readmem(aobFeatPtsChecker_i,7)
unregistersymbol(aobFeatPtsChecker_r)
unregistersymbol(aobFeatPtsChecker_i)
unregistersymbol(iBaseFeatOffset)
dealloc(newmemStatPtsChecker)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>2040</ID>
<Description>"iRemainingStatPoints"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>[pBase]+[iBaseStatOffset]</Address>
</CheatEntry>
<CheatEntry>
<ID>2041</ID>
<Description>"iRemainingSkillPoints"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>[pBase]+[iBaseSkillOffset]</Address>
</CheatEntry>
<CheatEntry>
<ID>2042</ID>
<Description>"iRemainingSkillPoints"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>[pBase]+[iBaseFeatOffset]</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>783</ID>
<Description>"UnderRail AOB script; force merchant refresh"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobMerchantRefresh,8B B5 ?? ?? FF FF 83 C6 ?? F3 0F 7E 06 66 0F D6 07 8B 85 ?? ?? FF FF 8B 95 ?? ?? FF FF)
alloc(newmemMerchantRefresh,4096,aobMerchantRefresh)
label(aobMerchantRefresh_r)
label(aobMerchantRefresh_i)
registersymbol(aobMerchantRefresh_r)
registersymbol(aobMerchantRefresh_i)
label(lblMerchantRefresh)
label(lblMerchantRefreshSkip)
label(lblMerchantRefreshRet)
label(bEnableMerchantRefresh)
registersymbol(bEnableMerchantRefresh)
newmemMerchantRefresh:
bEnableMerchantRefresh:
dd 1
lblMerchantRefresh:
readmem(aobMerchantRefresh,9)
cmp dword ptr [bEnableMerchantRefresh],1
jne short lblMerchantRefreshSkip
mov dword ptr [esi+04],0
lblMerchantRefreshSkip:
jmp lblMerchantRefreshRet
aobMerchantRefresh_i:
readmem(aobMerchantRefresh,9)
aobMerchantRefresh:
aobMerchantRefresh_r:
jmp lblMerchantRefresh
nop
nop
nop
nop
lblMerchantRefreshRet:
[DISABLE]
aobMerchantRefresh_r:
readmem(aobMerchantRefresh_i,9)
unregistersymbol(aobMerchantRefresh_r)
unregistersymbol(aobMerchantRefresh_i)
unregistersymbol(bEnableMerchantRefresh)
dealloc(newmemMerchantRefresh)
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Toggle Activation</Action>
<Keys>
<Key>122</Key>
</Keys>
<ID>1</ID>
<ActivateSound>Activate</ActivateSound>
<DeactivateSound>Deactivate</DeactivateSound>
</Hotkey>
</Hotkeys>
<CheatEntries>
<CheatEntry>
<ID>784</ID>
<Description>"bEnableMerchantRefresh"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableMerchantRefresh</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1885</ID>
<Description>"UnderRail AOB script; main"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game Executable : underrail.exe
// Author : Cs
// Executable Version: 0.1.0.0
// Module Version :
// Script Date : 2021-04-19
// Created with : customAOBInjectionTemplates version: 1.3.8
[ENABLE]
aobscan(aobCheckCoordsBlock,83 B8 ?? ?? 00 00 00 74 ?? 8B 43 ?? 8B 40)
aobscan(aobHealthOffset,8B 80 ?? ?? 00 00 8B 48 ?? FF 15 ?? ?? ?? ?? D9)
aobscan(aobPsiOffset,D9 ?? ?? 8B 8E ?? ?? 00 00 FF 15 ?? ?? ?? ?? 8B 8E ?? ?? ?? ?? D9)
aobscan(aobPsiRsrvOffset, 8B BE ?? ?? 00 00 8B 8E ?? ?? 00 00 FF 15 ?? ?? ?? ?? DD 5D ?? DD 45 ?? DD 5D ??)
alloc(newmemCheckCoordsBlock,4096,aobCheckCoordsBlock)
label(aobCheckCoordsBlock_r)
label(aobCheckCoordsBlock_i)
registersymbol(aobCheckCoordsBlock_r)
registersymbol(aobCheckCoordsBlock_i)
label(lblCheckCoordsBlock)
label(lblCheckCoordsBlockSkipGod)
label(lblCheckCoordsBlockSkip)
label(lblCheckCoordsBlockRet)
label(bEnableGodMode)
label(bInfinitePsi)
registersymbol(bEnableGodMode)
registersymbol(bInfinitePsi)
label(pPlayerBase)
label(pPlayerCoords)
registersymbol(pPlayerBase)
registersymbol(pPlayerCoords)
label(iPlayerDefensiveOffset)
label(iPlayerHealthOffset)
label(iPlayerPsiOffset)
label(iPlayerPsiRsrvOffset)
registersymbol(iPlayerDefensiveOffset)
registersymbol(iPlayerHealthOffset)
registersymbol(iPlayerPsiOffset)
registersymbol(iPlayerPsiRsrvOffset)
newmemCheckCoordsBlock:
//////////////////////////////////////////////
// Set your preferred default values below. //
//////////////////////////////////////////////
bEnableGodMode:
dd 0
bInfinitePsi:
dd 0
//////////////////////////////////////////////
// Set your preferred default values above. //
//////////////////////////////////////////////
lblCheckCoordsBlock:
mov dword ptr [pPlayerBase],eax
mov ecx,[aobCheckCoordsBlock_i+2]
mov ecx,[eax+ecx]
mov dword ptr [pPlayerCoords],ecx
cmp dword ptr [bEnableGodMode],1
jne short lblCheckCoordsBlockSkipGod
mov ecx,[iPlayerDefensiveOffset]
mov ecx,[eax+ecx]
add ecx,[iPlayerHealthOffset]
{$try}
mov ecx,[ecx]
cmp dword ptr [ecx+18],0
jle short lblCheckCoordsBlockSkipGod
mov edi,[ecx+10]
mov dword ptr [ecx+18],edi
{$except}
lblCheckCoordsBlockSkipGod:
cmp dword ptr [bInfinitePsi],1
jne short lblCheckCoordsBlockSkip
mov ecx,[iPlayerDefensiveOffset]
mov ecx,[eax+ecx+04]
add ecx,[iPlayerPsiOffset]
{$try}
mov ecx,[ecx]
cmp dword ptr [ecx+18],0
jle short lblCheckCoordsBlockSkip
mov edi,[ecx+10]
mov dword ptr [ecx+18],edi
{$except}
lblCheckCoordsBlockSkip:
xor edi,edi
readmem(aobCheckCoordsBlock,7)
jmp lblCheckCoordsBlockRet
aobCheckCoordsBlock_i:
readmem(aobCheckCoordsBlock,7)
align 4
pPlayerBase:
dd 0
pPlayerCoords:
dd 0
iPlayerDefensiveOffset:
readmem(aobHealthOffset+02,4)
align 4
iPlayerHealthOffset:
readmem(aobHealthOffset+08,1)
db 00 00 00
align 4
iPlayerPsiOffset:
readmem(aobPsiOffset+03+02,4)
align 4
iPlayerPsiRsrvOffset:
readmem(aobPsiRsrvOffset+06+02,4)
align 4
aobCheckCoordsBlock:
aobCheckCoordsBlock_r:
jmp lblCheckCoordsBlock
nop 2
lblCheckCoordsBlockRet:
[DISABLE]
aobCheckCoordsBlock_r:
readmem(aobCheckCoordsBlock_i,7)
unregistersymbol(*)
dealloc(*)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1886</ID>
<Description>"bEnableGodMode"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableGodMode</Address>
</CheatEntry>
<CheatEntry>
<ID>1887</ID>
<Description>"bInfinitePsi"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bInfinitePsi</Address>
</CheatEntry>
<CheatEntry>
<ID>1888</ID>
<Description>"sPlayerName"</Description>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>8</Offset>
<Offset>50</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>1889</ID>
<Description>"fPlayerCoords[x]"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerCoords</Address>
<Offsets>
<Offset>8c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1890</ID>
<Description>"fPlayerCoords[y]"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerCoords</Address>
<Offsets>
<Offset>90</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1891</ID>
<Description>"fPlayerCoords[z] (?)"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerCoords</Address>
<Offsets>
<Offset>94</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1892</ID>
<Description>"iXPLevel"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>d8</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1893</ID>
<Description>"iXP"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1894</ID>
<Description>"dCarryWeight"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>44</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1895</ID>
<Description>"iMaxCarryWeight"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>104</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1896</ID>
<Description>"LevelingPts"</Description>
<Options moHideChildren="1"/>
<Color>0080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>1897</ID>
<Description>"iRemainingStatPoints"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>154</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1898</ID>
<Description>"iRemainingSkillPoints"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>158</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1899</ID>
<Description>"iRemainingFeatPoints"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>15C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1900</ID>
<Description>"iRemainingSpecPoints"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>160</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1901</ID>
<Description>"Abilities"</Description>
<Options moHideChildren="1"/>
<Color>0080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>1902</ID>
<Description>"iStrengthBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1903</ID>
<Description>"iStrengthEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1904</ID>
<Description>"iDexterityBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1905</ID>
<Description>"iDexterityEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1906</ID>
<Description>"iAgilityBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1907</ID>
<Description>"iAgilityEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1908</ID>
<Description>"iConstitutionBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1909</ID>
<Description>"iConstitutionEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1910</ID>
<Description>"iPerceptionBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1911</ID>
<Description>"iPerceptionEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1912</ID>
<Description>"iWillBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>1C</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1913</ID>
<Description>"iWillEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>1C</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1914</ID>
<Description>"iIntelligenceBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>20</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1915</ID>
<Description>"iIntelligenceEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>20</Offset>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>5c</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1916</ID>
<Description>"Skills"</Description>
<Options moHideChildren="1"/>
<Color>0080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>1917</ID>
<Description>"iGunsBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1918</ID>
<Description>"iGunsEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1919</ID>
<Description>"iThrowingBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1920</ID>
<Description>"iThrowingEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1921</ID>
<Description>"iCrossbowsBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1922</ID>
<Description>"iCrossbowsEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1923</ID>
<Description>"iMeleeBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1924</ID>
<Description>"iMeleeEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1925</ID>
<Description>"iDodgeBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1926</ID>
<Description>"iDodgeEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1927</ID>
<Description>"iEvasionBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>1C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1928</ID>
<Description>"iEvasionEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>1C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1929</ID>
<Description>"iStealthBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>20</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1930</ID>
<Description>"iStealthEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>20</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1931</ID>
<Description>"iHackingBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>24</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1932</ID>
<Description>"iHackingEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>24</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1933</ID>
<Description>"iLockpickingBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>28</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1934</ID>
<Description>"iLockpickingEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>28</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1935</ID>
<Description>"iPickpocketingBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>2C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1936</ID>
<Description>"iPickpocketingEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>2C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1937</ID>
<Description>"iTrapsBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>30</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1938</ID>
<Description>"iTrapsEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>30</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1939</ID>
<Description>"iMechanicsBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>34</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1940</ID>
<Description>"iMechanicsEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>34</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1941</ID>
<Description>"iElectronicsBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>38</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1942</ID>
<Description>"iElectronicsEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>38</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1943</ID>
<Description>"iChemistryBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>3C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1944</ID>
<Description>"iChemistryEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>3C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1945</ID>
<Description>"iBiologyBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>40</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1946</ID>
<Description>"iBiologyEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>40</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1947</ID>
<Description>"iTailoringBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>44</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1948</ID>
<Description>"iTailoringEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>44</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1949</ID>
<Description>"iThoughtControlBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>48</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1950</ID>
<Description>"iThoughtControlEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>48</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1951</ID>
<Description>"iPhychokinesisBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>4C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1952</ID>
<Description>"iPhychokinesisEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>4C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1953</ID>
<Description>"iMetathermicsBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>50</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1954</ID>
<Description>"iMetathermicsEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>50</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1955</ID>
<Description>"iUnknownBase"</Description>
<Color>800080</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>54</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1956</ID>
<Description>"iUnknownEffective"</Description>
<Color>800080</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>54</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1957</ID>
<Description>"iPersuasionBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>58</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1958</ID>
<Description>"iPersuasionEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>58</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1959</ID>
<Description>"iIntimidationBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>5C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1960</ID>
<Description>"iIntimidationEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>5C</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1961</ID>
<Description>"iMerchantileBase"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1962</ID>
<Description>"iMerchantileEffective"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>14</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>8</Offset>
<Offset>60</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1963</ID>
<Description>"DefensiveAbilities"</Description>
<Options moHideChildren="1"/>
<Color>0080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>1964</ID>
<Description>"dArmourPenalty"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>08</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2080</ID>
<Description>"dWeaponCritChance"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>20</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1965</ID>
<Description>"dHealingEff."</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>30</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1966</ID>
<Description>"fMaxHealth"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>[iPlayerHealthOffset]</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1967</ID>
<Description>"fHealth"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>18</Offset>
<Offset>[iPlayerHealthOffset]</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1968</ID>
<Description>"iDodge"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>A4</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1969</ID>
<Description>"iEvasion"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>A8</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1970</ID>
<Description>"iFortitude"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>AC</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1971</ID>
<Description>"iResolve"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>B0</Offset>
<Offset>[iPlayerDefensiveOffset]</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1972</ID>
<Description>"OffensiveAbilities"</Description>
<Options moHideChildren="1"/>
<Color>0080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>1973</ID>
<Description>"dCritBonus"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>8</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1974</ID>
<Description>"dCritChance"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1975</ID>
<Description>"dSpecialAttackBonus"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>70</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1976</ID>
<Description>"pEquippedWeapon"</Description>
<ShowAsHex>1</ShowAsHex>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>78</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1977</ID>
<Description>"fMaxPsi"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>10</Offset>
<Offset>[iPlayerPsiOffset]</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1978</ID>
<Description>"fPsi"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>18</Offset>
<Offset>[iPlayerPsiOffset]</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1979</ID>
<Description>"iMaxActionPoints"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>B4</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1980</ID>
<Description>"iMaxMovementPoints"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>B8</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>1981</ID>
<Description>"iInitiative"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pPlayerBase</Address>
<Offsets>
<Offset>D0</Offset>
<Offset>[iPlayerDefensiveOffset]+4</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1982</ID>
<Description>"Script: Max Carry Weight Mod"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobMaxCarryWeightCalc,89 82 ?? ?? 00 00 8B 8A ?? ?? 00 00 39 09 FF 15 ?? ?? ?? ?? 8B ?? ?? DD)
alloc(newmemMaxCarryWeightCalc,4096,aobMaxCarryWeightCalc)
label(aobMaxCarryWeightCalc_r)
label(aobMaxCarryWeightCalc_i)
registersymbol(aobMaxCarryWeightCalc_r)
registersymbol(aobMaxCarryWeightCalc_i)
label(lblMaxCarryWeightCalc)
label(lblMaxCarryWeightCalcSkip)
label(lblMaxCarryWeightCalcRet)
label(bEnableMaxCarryWeightMod)
label(fMaxCarryWeightMod)
registersymbol(bEnableMaxCarryWeightMod)
registersymbol(fMaxCarryWeightMod)
newmemMaxCarryWeightCalc:
bEnableMaxCarryWeightMod:
dd 1
fMaxCarryWeightMod:
dd (float)100.0
lblMaxCarryWeightCalc:
cmp dword ptr [bEnableMaxCarryWeightMod],1
jne short lblMaxCarryWeightCalcSkip
push eax
fild dword ptr [esp]
fmul dword ptr [fMaxCarryWeightMod]
fistp dword ptr [esp]
pop eax
lblMaxCarryWeightCalcSkip:
readmem(aobMaxCarryWeightCalc,6)
jmp lblMaxCarryWeightCalcRet
aobMaxCarryWeightCalc_i:
readmem(aobMaxCarryWeightCalc,6)
aobMaxCarryWeightCalc:
aobMaxCarryWeightCalc_r:
jmp lblMaxCarryWeightCalc
nop
lblMaxCarryWeightCalcRet:
[DISABLE]
aobMaxCarryWeightCalc_r:
readmem(aobMaxCarryWeightCalc_i,6)
unregistersymbol(aobMaxCarryWeightCalc_r)
unregistersymbol(aobMaxCarryWeightCalc_i)
unregistersymbol(bEnableMaxCarryWeightMod)
dealloc(newmemMaxCarryWeightCalc)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1983</ID>
<Description>"bEnableMaxCarryWeightMod"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableMaxCarryWeightMod</Address>
<CheatEntries>
<CheatEntry>
<ID>1984</ID>
<Description>"fMaxCarryWeightMod"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>fMaxCarryWeightMod</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1985</ID>
<Description>"Script: JetSki Weight Calc (WORKING ???)"</Description>
<Options moHideChildren="1"/>
<Color>C0C0C0</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobJetSkiWeightCalc,DD 42 ?? DC 40 ?? DD 58 ?? 8B 45 ?? DD)
alloc(newmemJetSkiWeightCalc,4096,aobJetSkiWeightCalc)
label(aobJetSkiWeightCalc_r)
label(aobJetSkiWeightCalc_i)
registersymbol(aobJetSkiWeightCalc_r)
registersymbol(aobJetSkiWeightCalc_i)
label(lblJetSkiWeightCalc)
label(lblJetSkiWeightCalcSkip)
label(lblJetSkiWeightCalcRet)
label(bEnableJetSkiIgnoresPlayerWeight)
registersymbol(bEnableJetSkiIgnoresPlayerWeight)
newmemJetSkiWeightCalc:
bEnableJetSkiIgnoresPlayerWeight:
dd 1
lblJetSkiWeightCalc:
readmem(aobJetSkiWeightCalc,3)
cmp dword ptr [bEnableJetSkiIgnoresPlayerWeight],1
jne short lblJetSkiWeightCalcSkip
fstp st(0)
fldz
lblJetSkiWeightCalcSkip:
readmem(aobJetSkiWeightCalc+3,3)
jmp lblJetSkiWeightCalcRet
aobJetSkiWeightCalc_i:
readmem(aobJetSkiWeightCalc,6)
aobJetSkiWeightCalc:
aobJetSkiWeightCalc_r:
jmp lblJetSkiWeightCalc
nop
lblJetSkiWeightCalcRet:
[DISABLE]
aobJetSkiWeightCalc_r:
readmem(aobJetSkiWeightCalc_i,6)
unregistersymbol(aobJetSkiWeightCalc_r)
unregistersymbol(aobJetSkiWeightCalc_i)
unregistersymbol(bEnableJetSkiIgnoresPlayerWeight)
dealloc(newmemJetSkiWeightCalc)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1986</ID>
<Description>"bEnableJetSkiIgnoresPlayerWeight"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableJetSkiIgnoresPlayerWeight</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1987</ID>
<Description>"Script: XP Gain Mod"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobXPGainCalc,8B 45 ?? 01 86 ?? ?? 00 00 85 D2 75)
alloc(newmemXPGainCalc,4096,aobXPGainCalc)
label(aobXPGainCalc_r)
label(aobXPGainCalc_i)
registersymbol(aobXPGainCalc_r)
registersymbol(aobXPGainCalc_i)
label(lblXPGainCalc)
label(lblXPGainCalcSkip)
label(lblXPGainCalcRet)
label(bEnableXPGainMod)
label(fXPGainMod)
registersymbol(bEnableXPGainMod)
registersymbol(fXPGainMod)
newmemXPGainCalc:
bEnableXPGainMod:
dd 1
fXPGainMod:
dd (float)2.0
lblXPGainCalc:
cmp dword ptr [bEnableXPGainMod],1
jne short lblXPGainCalcSkip
movsx eax,[aobXPGainCalc_i+02]
fild dword ptr [ebp+eax]
fmul dword ptr [fXPGainMod]
fistp dword ptr [ebp+eax]
lblXPGainCalcSkip:
readmem(aobXPGainCalc,9)
jmp lblXPGainCalcRet
aobXPGainCalc_i:
readmem(aobXPGainCalc,9)
aobXPGainCalc:
aobXPGainCalc_r:
jmp lblXPGainCalc
nop
nop
nop
nop
lblXPGainCalcRet:
[DISABLE]
aobXPGainCalc_r:
readmem(aobXPGainCalc_i,9)
unregistersymbol(aobXPGainCalc_r)
unregistersymbol(aobXPGainCalc_i)
unregistersymbol(bEnableXPGainMod)
unregistersymbol(fXPGainMod)
dealloc(newmemXPGainCalc)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1988</ID>
<Description>"bEnableXPGainMod"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableXPGainMod</Address>
<CheatEntries>
<CheatEntry>
<ID>1989</ID>
<Description>"fXPGainMod"</Description>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>fXPGainMod</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2132</ID>
<Description>"Script: Combat Movement Tracker"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : underrail.exe
Version:
Date : 2021-12-29
Author : User
This script does blah blah blah
}
[ENABLE]
aobscan(fnCombatMoveUpdate,8B F1 DD 46 04) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(pCombatMoveTracker)
newmem:
pCombatMoveTracker:
dd 0
align 4
code:
mov [pCombatMoveTracker], ecx
mov esi,ecx
fld qword ptr [esi+04]
jmp return
fnCombatMoveUpdate:
jmp code
return:
registersymbol(fnCombatMoveUpdate)
registersymbol(pCombatMoveTracker)
[DISABLE]
fnCombatMoveUpdate:
db 8B F1 DD 46 04
unregistersymbol(fnCombatMoveUpdate)
unregistersymbol(pCombatMoveTracker)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0168E935
// ---------- INJECTING HERE ----------
0168E935: 8B F1 - mov esi,ecx
0168E937: DD 46 04 - fld qword ptr [esi+04]
// ---------- DONE INJECTING ----------
0168E93A: 83 EC 08 - sub esp,08
0168E93D: DD 1C 24 - fstp qword ptr [esp]
0168E940: E8 D3 E2 90 69 - call System.Convert::ToInt32
0168E945: 89 45 F8 - mov [ebp-08],eax
0168E948: DB 45 F8 - fild dword ptr [ebp-08]
0168E94B: DD 5E 04 - fstp qword ptr [esi+04]
0168E94E: DD 46 0C - fld qword ptr [esi+0C]
0168E951: 83 EC 08 - sub esp,08
0168E954: DD 1C 24 - fstp qword ptr [esp]
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>2138</ID>
<Description>"Note: Be careful about freezing values. This will show values for enemies on their turn"</Description>
<Color>FF00FF</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>2143</ID>
<Description>"Override Initial Player Movement Points"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : underrail.exe
Version:
Date : 2021-12-29
Author : User
This script does blah blah blah
}
[ENABLE]
aobscan(fnCombatStart,8B F1 8B 46 28 8B 48 4C FF 15 ?? ?? ?? ?? 8B 80 9C 00 00 00) // should be unique
assert(fnCombatStart+38, D9 EE DD 5E 14 D9 EE DD 5E 1C)
assert(fnCombatStart+42, 5E 5D C3)
alloc(newmem,$1000)
label(fnCombatStartInjCode)
label(fnCombatAlterInitCode)
label(fnCombatStartReturn)
label(fnCombatStartReturnSkip)
label(pCombatMoveBaseObj)
label(iPlayerMovementOverride)
label(iPlayerActionOverride)
newmem:
pCombatMoveBaseObj:
dd 0
iPlayerMovementOverride:
dd #0
iPlayerActionOverride:
dd #0
align 4
fnCombatStartInjCode:
// EAX will have player/enemy pointer
mov [pCombatMoveBaseObj], eax
reassemble(fnCombatStart+2+3+3+6) // mov eax,[eax+0000009C]
jmp fnCombatStartReturn
// it appears .net is tracking what should be called from where and crashes
// if skipped so we track the pointer and replace later as needed
align 4
fnCombatAlterInitCode:
// esi has the class pointer
// eax need not be preserved
fldz
fstp qword ptr [esi+14]
fldz
fstp qword ptr [esi+1C]
mov eax, [pCombatMoveBaseObj]
cmp eax, [pPlayerBase] // verify if player or not
jne fnCombatStartReturnSkip // normal initialization if not player
cmp [iPlayerActionOverride], 0
jne @f
// [[[pPlayerBase]+[iPlayerDefensiveOffset]+4]+B4]
mov eax, [pPlayerBase]
add eax, [iPlayerDefensiveOffset]
add eax, 4
mov eax, [eax]
add eax, B4
mov eax, [eax]
mov [iPlayerActionOverride], eax
@@:
cmp [iPlayerMovementOverride], 0
jne @f
// [[[pPlayerBase]+[iPlayerDefensiveOffset]+4]+B8]
mov eax, [pPlayerBase]
add eax, [iPlayerDefensiveOffset]
add eax, 4
mov eax, [eax]
add eax, B8
mov eax, [eax]
mov [iPlayerMovementOverride], eax
@@:
fild dword ptr [iPlayerActionOverride]
fstp qword ptr [esi+4]
fild dword ptr [iPlayerMovementOverride]
fstp qword ptr [esi+C]
@@:
jmp fnCombatStartReturnSkip // skip whole routine
fnCombatStart+E:
jmp fnCombatStartInjCode
nop
fnCombatStartReturn:
fnCombatStart+38:
jmp fnCombatAlterInitCode
nop 5
fnCombatStart+42:
fnCombatStartReturnSkip:
registersymbol(fnCombatStart)
registersymbol(fnCombatStartInjCode)
registersymbol(fnCombatAlterInitCode)
registersymbol(fnCombatStartReturn)
registersymbol(fnCombatStartReturnSkip)
registersymbol(pCombatMoveBaseObj)
registersymbol(iPlayerMovementOverride)
registersymbol(iPlayerActionOverride)
[DISABLE]
fnCombatStart+E:
// db 8B 80 9C 00 00 00
reassemble(fnCombatStartInjCode+6) // mov eax,[eax+0000009C]
fnCombatStart+38:
db D9 EE DD 5E 14 D9 EE DD 5E 1C
unregistersymbol(fnCombatStart)
unregistersymbol(fnCombatStartInjCode)
unregistersymbol(fnCombatAlterInitCode)
unregistersymbol(fnCombatStartReturn)
unregistersymbol(fnCombatStartReturnSkip)
unregistersymbol(pCombatMoveBaseObj)
unregistersymbol(iPlayerMovementOverride)
unregistersymbol(iPlayerActionOverride)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0168E48C
0168E48C - 8B F1 - mov esi,ecx
0168E48E - 8B 46 28 - mov eax,[esi+28]
0168E491 - 8B 48 4C - mov ecx,[eax+4C]
0168E494 - FF 15 B41E0937 - call dword ptr [37091EB4]
// ---------- INJECTING HERE ----------
0168E49A - 8B 80 9C000000 - mov eax,[eax+0000009C]
// ---------- DONE INJECTING ----------
0168E4A0 - DB 80 B4000000 - fild dword ptr [eax+000000B4]
0168E4A6 - DD 5E 04 - fstp qword ptr [esi+04]
0168E4A9 - 8B 46 28 - mov eax,[esi+28]
0168E4AC - 8B 48 4C - mov ecx,[eax+4C]
0168E4AF - FF 15 B81E0937 - call dword ptr [37091EB8]
0168E4B5 - 8B 80 9C000000 - mov eax,[eax+0000009C]
0168E4BB - DB 80 B8000000 - fild dword ptr [eax+000000B8]
0168E4C1 - DD 5E 0C - fstp qword ptr [esi+0C]
// ---------- INJECTING HERE ----------
0168E4C4 - D9EE - fldz
0168E4C6 - DD 5E 14 - fstp qword ptr [esi+14]
0168E4C9 - D9EE - fldz
0168E4CB - DD 5E 1C - fstp qword ptr [esi+1C]
// ---------- DONE INJECTING ----------
0168E4CE - 5E - pop esi
0168E4CF - 5D - pop ebp
0168E4D0 - C3 - ret
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>2145</ID>
<Description>"iPlayerActionOverride"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>iPlayerActionOverride</Address>
</CheatEntry>
<CheatEntry>
<ID>2146</ID>
<Description>"iPlayerMovementOverride"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>iPlayerMovementOverride</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2133</ID>
<Description>"Combat Movement"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0080FF</Color>
<GroupHeader>1</GroupHeader>
<Address>pCombatMoveTracker</Address>
<Offsets>
<Offset>0</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2134</ID>
<Description>"dActionPointsRemaining"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>+4</Address>
</CheatEntry>
<CheatEntry>
<ID>2135</ID>
<Description>"dMovementPointsRemaining"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>+C</Address>
</CheatEntry>
<CheatEntry>
<ID>2136</ID>
<Description>"dTotalMovementThisTurnUpper"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>+14</Address>
</CheatEntry>
<CheatEntry>
<ID>2137</ID>
<Description>"dTotalMovementThisTurnLower"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>+1C</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2151</ID>
<Description>"Script: Item Editor (Mouse Click Version)"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobItemCountReader,FF 50 ?? 83 78 ?? 01 0F 8E ?? ?? ?? ?? 8D 4D)
alloc(newmemItemCountReader,4096,aobItemCountReader)
label(aobItemCountReader_r)
label(aobItemCountReader_i)
registersymbol(aobItemCountReader_r)
registersymbol(aobItemCountReader_i)
label(lblItemCountReader)
label(lblItemCountReaderSkip)
label(lblItemCountReaderRet)
label(bEnableStackSizeIncrement)
label(iStackSizeIncrement)
registersymbol(bEnableStackSizeIncrement)
registersymbol(iStackSizeIncrement)
label(pLastClickedItem)
registersymbol(pLastClickedItem)
newmemItemCountReader:
bEnableStackSizeIncrement:
dd 0
iStackSizeIncrement:
dd (int)50
lblItemCountReader:
readmem(aobItemCountReader,3)
push ebx
push ecx
movsx ecx,[aobItemCountReader_i+5]
cmp [eax+ecx],1
jle short lblItemCountReaderSkip
pushad
push 12 // VK_MENU: ALT key
call GetAsyncKeyState
shr ax,#15
cmp ax,1
popad
jne short lblItemCountReaderSkip
cmp dword ptr [bEnableStackSizeIncrement],1
jne short lblItemCountReaderSkip
mov ebx,[iStackSizeIncrement]
add [eax+ecx],ebx
lblItemCountReaderSkip:
pop ecx
pop ebx
mov dword ptr [pLastClickedItem],eax
readmem(aobItemCountReader+3,4)
jmp lblItemCountReaderRet
aobItemCountReader_i:
readmem(aobItemCountReader,7)
pLastClickedItem:
dd 0
aobItemCountReader:
aobItemCountReader_r:
jmp lblItemCountReader
nop
nop
lblItemCountReaderRet:
[DISABLE]
//""+106C2839:
//Alt: call dword ptr [eax+10]
//Alt: cmp dword ptr [eax+20],01
//db FF 50 10 83 78 20 01
aobItemCountReader_r:
readmem(aobItemCountReader_i,7)
unregistersymbol(aobItemCountReader_r)
unregistersymbol(aobItemCountReader_i)
unregistersymbol(bEnableStackSizeIncrement)
unregistersymbol(iStackSizeIncrement)
unregistersymbol(pLastClickedItem)
dealloc(newmemItemCountReader)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1997</ID>
<Description>"bEnableStackSizeIncrement (hold ALT while clicking!)"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableStackSizeIncrement</Address>
<CheatEntries>
<CheatEntry>
<ID>1998</ID>
<Description>"iStackSizeIncrement"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>iStackSizeIncrement</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2152</ID>
<Description>"Last clicked Item"</Description>
<Options moHideChildren="1"/>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2153</ID>
<Description>"pLastClickedItem (Click on an item in the Inv. grid or copy pointer from Offensive)"</Description>
<ShowAsHex>1</ShowAsHex>
<Color>0000FF</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
</CheatEntry>
<CheatEntry>
<ID>2154</ID>
<Description>"sName"</Description>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>256</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2155</ID>
<Description>"iStackSize"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>24</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2156</ID>
<Description>"iMaxStackSize"</Description>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>30</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2157</ID>
<Description>"iRarity"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Grey
1:White
2:Green
3:Blue
4:Purple
5:Orange
</DropDownList>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>28</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2158</ID>
<Description>"iUnknown (seems to impact value shown)"</Description>
<Color>800080</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>2c</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2159</ID>
<Description>"dEnergyCurrent"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2160</ID>
<Description>"iEnergyMax"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>28</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2161</ID>
<Description>"dDurability"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2162</ID>
<Description>"dWeight"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2163</ID>
<Description>"iValue(Encoded)"</Description>
<ShowAsHex>1</ShowAsHex>
<ShowAsSigned>0</ShowAsSigned>
<Color>800080</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>54</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2164</ID>
<Description>"ArmourOnly"</Description>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2165</ID>
<Description>"dArmourPenalty"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>88</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2166</ID>
<Description>"Item Bonuses"</Description>
<Options moHideChildren="1"/>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2167</ID>
<Description>"sStatName[0]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2168</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2169</ID>
<Description>"sStatName[1]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2170</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2171</ID>
<Description>"sStatName[2]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2172</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2173</ID>
<Description>"sStatName[3]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2174</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2175</ID>
<Description>"sStatName[4]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2176</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2177</ID>
<Description>"CraftableOnly"</Description>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2178</ID>
<Description>"iQuality"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>40</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2179</ID>
<Description>"WeaponsOnly"</Description>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2180</ID>
<Description>"iImpactSpeed"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Very Low (Melee attacks)
1:Low (Slow projectiles)
2:Medium (Pistol and SMG bullets, shrapnel)
3:Fast (Explosives, extremely fast projectiles)
4:Very Fast (Lasers, plasma, electrical attacks)
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>EC</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2181</ID>
<Description>"iBaseAPCost"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>E8</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2182</ID>
<Description>"bHasSpread"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>130</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2183</ID>
<Description>"iSpreadAngle"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>134</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2184</ID>
<Description>"fRange"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>F4</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2185</ID>
<Description>"fOptimalRange"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>F8</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2186</ID>
<Description>"dPrecision"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>A0</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2187</ID>
<Description>"fCloseQuartersPrecision(Penalty!)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10C</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2188</ID>
<Description>"dMoveAndShootPresicion(Penalty!)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>B0</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2189</ID>
<Description>"dBurstPrecision"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>A8</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2190</ID>
<Description>"iExtraBurstShots"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>108</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2191</ID>
<Description>"dCritChance"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>88</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2192</ID>
<Description>"dCritDmgBonus"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>90</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2193</ID>
<Description>"iMinStrength"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>F0</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2194</ID>
<Description>"iMagazineCapacity"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>104</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2195</ID>
<Description>"iMagazineLoaded"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>c</Offset>
<Offset>40</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2196</ID>
<Description>"dReloadingCost"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>B8</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>1996</ID>
<Description>"Script: Item Editor (Mouse Over Version)"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
//aobscan(aobItemCountReader,FF 50 ?? 83 78 ?? 01 0F 8E ?? ?? ?? ?? 8D 4D)
aobscan(aobItemCountReader,E8 ?? ?? ?? ?? 83 7F ?? 01 0F 8E ?? ?? ?? ?? 8B) // should be unique
alloc(newmemItemCountReader,4096,aobItemCountReader)
label(aobItemCountReader_r)
label(aobItemCountReader_i)
registersymbol(aobItemCountReader_r)
registersymbol(aobItemCountReader_i)
label(lblItemCountReader)
//label(lblItemCountReaderSkip)
label(lblItemCountReaderRet)
label(bEnableStackSizeIncrement)
label(iStackSizeIncrement)
registersymbol(bEnableStackSizeIncrement)
registersymbol(iStackSizeIncrement)
label(pLastClickedItem)
registersymbol(pLastClickedItem)
newmemItemCountReader:
bEnableStackSizeIncrement:
dd 0
iStackSizeIncrement:
dd (int)50
lblItemCountReader:
// expect offset to be in edi
//push ebx
//push ecx
//movsx ecx,byte ptr [aobItemCountReader_i+5+3] // get offset
//cmp [edi+ecx],1
//jle short lblItemCountReaderSkip
//pushad
//push 12 // VK_MENU: ALT key
//call GetAsyncKeyState
//shr ax,#15
//cmp ax,1
//popad
//jne short lblItemCountReaderSkip
//cmp dword ptr [bEnableStackSizeIncrement],1
//jne short lblItemCountReaderSkip
//mov ebx,[iStackSizeIncrement]
//add [edi+ecx],ebx
//lblItemCountReaderSkip:
//pop ecx
//pop ebx
mov dword ptr [pLastClickedItem],edi
@@:
reassemble(aobItemCountReader+5) // cmp dword ptr [edi+24],01
reassemble(aobItemCountReader+5+4) // jng 0AA390BC
jmp lblItemCountReaderRet
aobItemCountReader_i:
readmem(aobItemCountReader+5,10)
align 4
pLastClickedItem:
dd 0
aobItemCountReader+5:
aobItemCountReader_r:
jmp lblItemCountReader
nop 5
lblItemCountReaderRet:
[DISABLE]
//""+106C2839:
//Alt: call dword ptr [eax+10]
//Alt: cmp dword ptr [eax+20],01
//db FF 50 10 83 78 20 01
aobItemCountReader_r:
readmem(aobItemCountReader_i,10)
unregistersymbol(aobItemCountReader_r)
unregistersymbol(aobItemCountReader_i)
unregistersymbol(bEnableStackSizeIncrement)
unregistersymbol(iStackSizeIncrement)
unregistersymbol(pLastClickedItem)
dealloc(newmemItemCountReader)
{
// ORIGINAL CODE - INJECTION POINT: 0AA39028
0AA39006: E8 BD A0 01 F7 - call 01A530C8
0AA3900B: 89 45 DC - mov [ebp-24],eax
0AA3900E: FF 75 E0 - push [ebp-20]
0AA39011: 8B C8 - mov ecx,eax
0AA39013: 8B 55 E4 - mov edx,[ebp-1C]
0AA39016: E8 55 0F 4B 4A - call 54EE9F70
0AA3901B: 8B 4D F0 - mov ecx,[ebp-10]
0AA3901E: 8B 55 DC - mov edx,[ebp-24]
0AA39021: 39 09 - cmp [ecx],ecx
0AA39023: E8 38 D7 DE 5F - call mscorlib.ni.dll+416760
// ---------- INJECTING HERE ----------
0AA39028: 83 7F 24 01 - cmp dword ptr [edi+24],01
// ---------- DONE INJECTING ----------
0AA3902C: 0F 8E 8A 00 00 00 - jng 0AA390BC
0AA39032: 8B 46 04 - mov eax,[esi+04]
0AA39035: 89 45 D8 - mov [ebp-28],eax
0AA39038: E8 7B 0E 4B 4A - call 54EE9EB8
0AA3903D: 89 45 D4 - mov [ebp-2C],eax
0AA39040: B9 CC 3D 50 15 - mov ecx,15503DCC
0AA39045: E8 7E A0 01 F7 - call 01A530C8
0AA3904A: 89 45 D0 - mov [ebp-30],eax
0AA3904D: 6A FF - push -01
0AA3904F: 8B C8 - mov ecx,eax
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>2081</ID>
<Description>"Last mouse over Item"</Description>
<Options moHideChildren="1"/>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>906</ID>
<Description>"pLastClickedItem (Click on an item in the Inv. grid or copy pointer from Offensive)"</Description>
<ShowAsHex>1</ShowAsHex>
<Color>0000FF</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
</CheatEntry>
<CheatEntry>
<ID>2082</ID>
<Description>"sName"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>256</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2083</ID>
<Description>"iStackSize"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>2C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2084</ID>
<Description>"iMaxStackSize"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>30</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2085</ID>
<Description>"iRarity"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Grey
1:White
2:Green
3:Blue
4:Purple
5:Orange
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>28</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2086</ID>
<Description>"iUnknown (seems to impact value shown)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>800080</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>2c</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2087</ID>
<Description>"dEnergyCurrent"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>4</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2088</ID>
<Description>"iEnergyMax"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>30</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2089</ID>
<Description>"dDurability"</Description>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>c</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2090</ID>
<Description>"dWeight"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>4</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2091</ID>
<Description>"iValue(Encoded)"</Description>
<ShowAsHex>1</ShowAsHex>
<ShowAsSigned>0</ShowAsSigned>
<Color>800080</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>54</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2115</ID>
<Description>"ArmourOnly"</Description>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2116</ID>
<Description>"dArmourPenalty"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>88</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2092</ID>
<Description>"Item Bonuses"</Description>
<Options moHideChildren="1"/>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2093</ID>
<Description>"sStatName[0]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2117</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>8</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2118</ID>
<Description>"sStatName[1]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2119</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>C</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2120</ID>
<Description>"sStatName[2]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2121</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>10</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2122</ID>
<Description>"sStatName[3]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2123</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>14</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2124</ID>
<Description>"sStatName[4]"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>0000FF</Color>
<VariableType>String</VariableType>
<Length>32</Length>
<Unicode>1</Unicode>
<CodePage>0</CodePage>
<ZeroTerminate>1</ZeroTerminate>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>8</Offset>
<Offset>14</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2125</ID>
<Description>"iBonusValue"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10</Offset>
<Offset>18</Offset>
<Offset>4</Offset>
<Offset>60</Offset>
<Offset>4</Offset>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2094</ID>
<Description>"CraftableOnly"</Description>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2095</ID>
<Description>"iQuality"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>48</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2096</ID>
<Description>"WeaponsOnly"</Description>
<Color>4080FF</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>2097</ID>
<Description>"iImpactSpeed"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Very Low (Melee attacks)
1:Low (Slow projectiles)
2:Medium (Pistol and SMG bullets, shrapnel)
3:Fast (Explosives, extremely fast projectiles)
4:Very Fast (Lasers, plasma, electrical attacks)
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>EC</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2098</ID>
<Description>"iBaseAPCost"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>E8</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2099</ID>
<Description>"bHasSpread"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>130</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2100</ID>
<Description>"iSpreadAngle"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>134</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2101</ID>
<Description>"fRange"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>F4</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2102</ID>
<Description>"fOptimalRange"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>F8</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2103</ID>
<Description>"dPrecision"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>A0</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2104</ID>
<Description>"fCloseQuartersPrecision(Penalty!)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Float</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>10C</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2105</ID>
<Description>"dMoveAndShootPresicion(Penalty!)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>B0</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2106</ID>
<Description>"dBurstPrecision"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>A8</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2107</ID>
<Description>"iExtraBurstShots"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>108</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2108</ID>
<Description>"dCritChance"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>88</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2109</ID>
<Description>"dCritDmgBonus"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>90</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2110</ID>
<Description>"iMinStrength"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>F0</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>2111</ID>
<Description>"iMagazineCapacity"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>104</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>2112</ID>
<Description>"iMagazineLoaded"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>4 Bytes</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>c</Offset>
<Offset>48</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2113</ID>
<Description>"dReloadingCost"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>808000</Color>
<VariableType>Double</VariableType>
<Address>pLastClickedItem</Address>
<Offsets>
<Offset>B8</Offset>
<Offset>4</Offset>
<Offset>1C</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2034</ID>
<Description>"Script: Infinite Durability"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobItemDurabilityUpdater,DD 40 ?? DC 65 ?? 83 EC ?? DD 1C 24)
alloc(newmemItemDurabilityUpdater,4096,aobItemDurabilityUpdater)
label(aobItemDurabilityUpdater_r)
label(aobItemDurabilityUpdater_i)
registersymbol(aobItemDurabilityUpdater_r)
registersymbol(aobItemDurabilityUpdater_i)
label(lblItemDurabilityUpdater)
label(lblItemDurabilityUpdaterSkip)
label(lblItemDurabilityUpdaterRet)
label(bEnableInfiniteItemDurability)
registersymbol(bEnableInfiniteItemDurability)
newmemItemDurabilityUpdater:
bEnableInfiniteItemDurability:
dd 1
lblItemDurabilityUpdater:
readmem(aobItemDurabilityUpdater,3)
cmp dword ptr [bEnableInfiniteItemDurability],1
jne short lblItemDurabilityUpdaterSkip
push ebx
movsx ebx,[aobItemDurabilityUpdater_i+05]
fadd qword ptr [ebp+ebx]
pop ebx
lblItemDurabilityUpdaterSkip:
readmem(aobItemDurabilityUpdater+3,3)
jmp lblItemDurabilityUpdaterRet
aobItemDurabilityUpdater_i:
readmem(aobItemDurabilityUpdater,6)
aobItemDurabilityUpdater:
aobItemDurabilityUpdater_r:
jmp lblItemDurabilityUpdater
nop
lblItemDurabilityUpdaterRet:
[DISABLE]
aobItemDurabilityUpdater_r:
readmem(aobItemDurabilityUpdater_i,6)
unregistersymbol(aobItemDurabilityUpdater_r)
unregistersymbol(aobItemDurabilityUpdater_i)
unregistersymbol(bEnableInfiniteItemDurability)
dealloc(newmemItemDurabilityUpdater)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>2035</ID>
<Description>"bEnableInfiniteItemDurability"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableInfiniteItemDurability</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>2036</ID>
<Description>"Script: Instant Cooldown; Real time"</Description>
<Options moHideChildren="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobRealtimeCooldownCalc,DD 40 ?? DC 65 ?? DD 50 ?? D9 EE DF F1 DD D8 7A)
aobscan(aobPlayerCooldownBaseOffset,8B 40 ?? 89 45 ?? 8B 7E ?? 80)
alloc(newmemRealtimeCooldownCalc,4096,aobRealtimeCooldownCalc)
label(aobRealtimeCooldownCalc_r)
label(aobRealtimeCooldownCalc_i)
registersymbol(aobRealtimeCooldownCalc_r)
registersymbol(aobRealtimeCooldownCalc_i)
label(lblRealtimeCooldownCalc)
label(lblRealtimeCooldownCalcSkip)
label(lblRealtimeCooldownCalcRet)
label(bEnableInstantSkillCooldown)
registersymbol(bEnableInstantSkillCooldown)
label(iPlayerCooldownBaseOffset)
registersymbol(iPlayerCooldownBaseOffset)
newmemRealtimeCooldownCalc:
bEnableInstantSkillCooldown:
dd 1
lblRealtimeCooldownCalc:
readmem(aobRealtimeCooldownCalc,6)
mov ecx,[pPlayerBase]
add ecx,[iPlayerCooldownBaseOffset]
cmp dword ptr [ecx],ebx
jne short lblRealtimeCooldownCalcSkip
cmp dword ptr [bEnableInstantSkillCooldown],1
jne short lblRealtimeCooldownCalcSkip
fstp st(0)
fldz
lblRealtimeCooldownCalcSkip:
jmp lblRealtimeCooldownCalcRet
aobRealtimeCooldownCalc_i:
readmem(aobRealtimeCooldownCalc,6)
iPlayerCooldownBaseOffset:
readmem(aobPlayerCooldownBaseOffset+2,1)
db 00 00 00
aobRealtimeCooldownCalc:
aobRealtimeCooldownCalc_r:
jmp lblRealtimeCooldownCalc
nop
lblRealtimeCooldownCalcRet:
[DISABLE]
aobRealtimeCooldownCalc_r:
readmem(aobRealtimeCooldownCalc_i,6)
unregistersymbol(aobRealtimeCooldownCalc_r)
unregistersymbol(aobRealtimeCooldownCalc_i)
unregistersymbol(bEnableInstantSkillCooldown)
unregistersymbol(iPlayerCooldownBaseOffset)
dealloc(newmemRealtimeCooldownCalc)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>2037</ID>
<Description>"bEnableInstantSkillCooldown"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Disabled
1:Enabled
</DropDownList>
<Color>008000</Color>
<VariableType>4 Bytes</VariableType>
<Address>bEnableInstantSkillCooldown</Address>
</CheatEntry>
<CheatEntry>
<ID>2038</ID>
<Description>"Script: Instant Cooldown; Turn-based (on end of turn)"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">// Game : underrail.exe
// Version:
// Date :
// Author : Cs
[ENABLE]
aobscan(aobTurnBasedCooldownCalc,DD 51 ?? D9 EE DF F1 DD D8 7A)
alloc(newmemTurnBasedCooldownCalc,4096,aobTurnBasedCooldownCalc)
label(aobTurnBasedCooldownCalc_r)
label(aobTurnBasedCooldownCalc_i)
registersymbol(aobTurnBasedCooldownCalc_r)
registersymbol(aobTurnBasedCooldownCalc_i)
label(lblTurnBasedCooldownCalc)
label(lblTurnBasedCooldownCalcSkip)
label(lblTurnBasedCooldownCalcRet)
newmemTurnBasedCooldownCalc:
lblTurnBasedCooldownCalc:
mov eax,[pPlayerBase]
add eax,[iPlayerCooldownBaseOffset]
cmp dword ptr [eax],ebx
jne short lblTurnBasedCooldownCalcSkip
cmp dword ptr [bEnableInstantSkillCooldown],1
jne short lblTurnBasedCooldownCalcSkip
fstp st(0)
fldz
lblTurnBasedCooldownCalcSkip:
readmem(aobTurnBasedCooldownCalc,5)
jmp lblTurnBasedCooldownCalcRet
aobTurnBasedCooldownCalc_i:
readmem(aobTurnBasedCooldownCalc,5)
aobTurnBasedCooldownCalc:
aobTurnBasedCooldownCalc_r:
jmp lblTurnBasedCooldownCalc
lblTurnBasedCooldownCalcRet:
[DISABLE]
aobTurnBasedCooldownCalc_r:
readmem(aobTurnBasedCooldownCalc_i,5)
unregistersymbol(aobTurnBasedCooldownCalc_r)
unregistersymbol(aobTurnBasedCooldownCalc_i)
dealloc(newmemTurnBasedCooldownCalc)
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
<UserdefinedSymbols/>
<LuaScript>PROCESS_NAME = 'underrail.exe'
--------
-------- Check for process and auto attach if need be
--------
local autoAttachTimer = nil ---- Declaration for our static timer object (no destroy here!)
local autoAttachTimerInterval = 5000 ---- Timer in milliseconds
function clearUserDefinedSymbols()
local mv,sf = getMemoryViewForm()
if not mv.frmSymbolhandler then
local mvHidden
if not mv.Visible then mvHidden=true,mv.Show() end
mv.miuserdefinedsymbols:OnClick()
if mvHidden then mv.hide()end
sf = mv.frmSymbolhandler
sf.Hide()
else
sf = mv.frmSymbolhandler
end
if sf ~= nil then
local symbol
for i = 0, sf.Listview1.Items.Count - 1 do
symbol = sf.Listview1.Items.Item[i].Caption
unregisterSymbol(symbol)
end
end
end
local function autoAttachTimer_tick(timer) ---- Timer callback
---- Check to see if we are attached to the right process
if getProcessIDFromProcessName(PROCESS_NAME) ~= getOpenedProcessID() then
---- If not the right process, check if process is running and attach if exists
AddressList.disableAllWithoutExecute()
clearUserDefinedSymbols()
if getProcessIDFromProcessName(PROCESS_NAME) ~= nil then
openProcess(PROCESS_NAME) ---- Open the process
end
end
end
autoAttachTimer = createTimer(getMainForm()) ---- Create timer with the main form as it's parent
autoAttachTimer.Interval = autoAttachTimerInterval ---- Set timer interval
autoAttachTimer.OnTimer = autoAttachTimer_tick ---- Set timer tick call back
</LuaScript>
</CheatTable>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment