<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>30</ID>
      <Description>"Compact Mode"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
--https://forum.cheatengine.org/viewtopic.php?t=570055
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>31</ID>
      <Description>"啟用 (建議啟用二次) / Enable (enable twice)"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then
    return
end
if process == nil then
    ShowMessage("Process is not selected.")
elseif readInteger(process) == 0 then
    ShowMessage("Process cannot be opened.")
else
    if monopipe ~= nil and monopipe.ProcessID ~= getOpenedProcessID() then
        monopipe.destroy()
        monopipe = nil
    end
    if monopipe == nil then
        LaunchMonoDataCollector()
    end
end


{$asm}
//define(PlayerControllerManagedUpdateProc,"PlayerController.ManagedUpdate")

//registersymbol(PlayerControllerManagedUpdateProc)


[DISABLE]
{$lua}
if syntaxcheck then return end;if not syntaxcheck and monopipe then monopipe=nil,monopipe.Destroy()end

{$asm}
unregistersymbol(*)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>50</ID>
          <Description>"戰役：HP滿血 / Group Battle: inf HP"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-15
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_SET_BAT_HEALTH,8B 41 20 50 DB 04 24) // should be unique
aobscanregion(INJECT_SET_BAT_HEALTH,Mortal.Battle.PlayerStateTransition:CanDash+40,Mortal.Battle.PlayerStateTransition:CanDash+80,8B 41 20 50 DB 04 24) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(is_uhp_enabled2)
label(i_hp_addr2)
newmem:
  push eax
  push edx
  mov [i_hp_addr2], ecx

  cmp dword ptr [is_uhp_enabled2], 1
  jne endp

  mov eax, [ecx+10] //_defaultHealth
  mov eax, [eax+C] //_health

  mov [i_base_health], eax
  mov eax, [ecx+18] //_defaultAddHealth
  add eax, [i_base_health]
  mov [ecx+20], eax //&lt;CurrentHealth&gt;k__BackingField

endp:
  pop edx
  pop eax


code:
  mov eax,[ecx+20]
  push eax
  fild dword ptr [esp]
  jmp return
align 10 cc
  is_uhp_enabled2:
  dd 1
  i_hp_addr2:
  dd 0
  i_base_health:
  dd 0

INJECT_SET_BAT_HEALTH:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_BAT_HEALTH)
registersymbol(is_uhp_enabled2)
registersymbol(i_hp_addr2)
[DISABLE]

INJECT_SET_BAT_HEALTH:
  db 8B 41 20 50 DB 04 24

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Battle.PlayerStateTransition:CanDash+49

Mortal.Battle.PlayerStateTransition:CanDash+30: 85 C0           - test eax,eax
Mortal.Battle.PlayerStateTransition:CanDash+32: 74 07           - je Mortal.Battle.PlayerStateTransition:CanDash+3b
Mortal.Battle.PlayerStateTransition:CanDash+34: 33 C0           - xor eax,eax
Mortal.Battle.PlayerStateTransition:CanDash+36: E9 9E 01 00 00  - jmp Mortal.Battle.PlayerStateTransition:CanDash+1d9
Mortal.Battle.PlayerStateTransition:CanDash+3b: 8B 47 08        - mov eax,[edi+08]
Mortal.Battle.PlayerStateTransition:CanDash+3e: 8B C8           - mov ecx,eax
Mortal.Battle.PlayerStateTransition:CanDash+40: 39 09           - cmp [ecx],ecx
Mortal.Battle.PlayerStateTransition:CanDash+42: 8B 48 58        - mov ecx,[eax+58]
Mortal.Battle.PlayerStateTransition:CanDash+45: 8B C1           - mov eax,ecx
Mortal.Battle.PlayerStateTransition:CanDash+47: 39 00           - cmp [eax],eax
// ---------- INJECTING HERE ----------
Mortal.Battle.PlayerStateTransition:CanDash+49: 8B 41 20        - mov eax,[ecx+20]
// ---------- DONE INJECTING  ----------
Mortal.Battle.PlayerStateTransition:CanDash+4c: 50              - push eax
Mortal.Battle.PlayerStateTransition:CanDash+4d: DB 04 24        - fild dword ptr [esp]
Mortal.Battle.PlayerStateTransition:CanDash+50: D9 1C 24        - fstp dword ptr [esp]
Mortal.Battle.PlayerStateTransition:CanDash+53: D9 04 24        - fld dword ptr [esp]
Mortal.Battle.PlayerStateTransition:CanDash+56: 83 C4 04        - add esp,04
Mortal.Battle.PlayerStateTransition:CanDash+59: 8B 41 10        - mov eax,[ecx+10]
Mortal.Battle.PlayerStateTransition:CanDash+5c: 8B D0           - mov edx,eax
Mortal.Battle.PlayerStateTransition:CanDash+5e: 39 12           - cmp [edx],edx
Mortal.Battle.PlayerStateTransition:CanDash+60: 8B 40 0C        - mov eax,[eax+0C]
Mortal.Battle.PlayerStateTransition:CanDash+63: 8B 49 18        - mov ecx,[ecx+18]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>51</ID>
              <Description>"啟用? / Enabled?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_uhp_enabled2</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>52</ID>
              <Description>"HP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_hp_addr2</Address>
              <Offsets>
                <Offset>20</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"戰．你．娘．親：HP / Battle: HP"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-14
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_BATTLE_HP,8B 49 74 89 4D F4) // should be unique
aobscanregion(INJECT_BATTLE_HP,Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+41,Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+71,8B 49 74 89 4D F4) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_base_player_hp_addr)
label(is_full_hp)


newmem:
  push edx
  cmp dword ptr [ecx+1C], 0 //CombatAvatar
  jne endp
  mov [i_base_player_hp_addr], ecx
  cmp dword ptr [is_full_hp], 1
  jne next2

  mov edx, [ecx+64]
  mov [ecx+74], edx
  jmp endp

next2:
  cmp dword ptr [is_full_hp], 2
  jne endp

  xor edx, edx
  mov [ecx+74], edx

endp:
  pop edx

code:
  mov ecx,[ecx+74]
  mov [ebp-0C],ecx
  jmp return
align 10 cc
  i_base_player_hp_addr:
  dd 0
  is_full_hp:
  dd 0

INJECT_BATTLE_HP:
  jmp newmem
  nop
return:
registersymbol(INJECT_BATTLE_HP)
registersymbol(i_base_player_hp_addr)
registersymbol(is_full_hp)
[DISABLE]

INJECT_BATTLE_HP:
  db 8B 49 74 89 4D F4

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+41

Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+1a: 83 7D F0 01           - cmp dword ptr [ebp-10],01
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+1e: 0F 84 49 00 00 00     - je Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+6d
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+24: 33 C0                 - xor eax,eax
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+26: E9 4B 00 00 00        - jmp Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+76
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+2b: C7 47 10 FF FF FF FF  - mov [edi+10],FFFFFFFF
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+32: 8B 45 EC              - mov eax,[ebp-14]
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+35: 8B 48 0C              - mov ecx,[eax+0C]
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+38: 8B 51 64              - mov edx,[ecx+64]
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+3b: 89 55 F8              - mov [ebp-08],edx
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+3e: 8B 48 0C              - mov ecx,[eax+0C]
// ---------- INJECTING HERE ----------
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+41: 8B 49 74              - mov ecx,[ecx+74]
// ---------- DONE INJECTING  ----------
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+44: 89 4D F4              - mov [ebp-0C],ecx
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+47: 8B 40 14              - mov eax,[eax+14]
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+4a: 89 54 24 08           - mov [esp+08],edx
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+4e: 89 4C 24 04           - mov [esp+04],ecx
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+52: 89 04 24              - mov [esp],eax
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+55: 39 00                 - cmp [eax],eax
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+57: E8 34 00 00 00        - call Mortal.Combat.CombatStatBar:Setup
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+5c: 89 47 08              - mov [edi+08],eax
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+5f: C7 47 10 01 00 00 00  - mov [edi+10],00000001
Mortal.Combat.CombatStatUI+&lt;UpdateHealth&gt;d__13:MoveNext+66: B8 01 00 00 00        - mov eax,00000001
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>29</ID>
              <Description>"需要時啟用 / Enable only when needed"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>60</ID>
              <Description>"對敵人傷害倍率 / damage multiplier"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript Async="1">{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-15
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_DAMAGE_MULTI,8B 48 74 8B 57 14) // should be unique
aobscanregion(INJECT_DAMAGE_MULTI,Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+20,Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+60,8B 48 74 8B 57 14) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(vf_damage_multi)

newmem:

code:
  mov ecx,[eax+74]
  mov edx,[edi+14]

  // code start
  cmp eax, [i_base_player_hp_addr]
  je return

  movss xmm7, [vf_damage_multi]
  cvtsi2ss xmm6, edx
  mulss xmm6, xmm7
  cvtss2si edx, xmm6
  mov [edi+14], edx
  // code end

  jmp return
align 10 cc
  vf_damage_multi:
  dd (float)1.5

INJECT_DAMAGE_MULTI:
  jmp newmem
  nop
return:
registersymbol(INJECT_DAMAGE_MULTI)
registersymbol(vf_damage_multi)

[DISABLE]

INJECT_DAMAGE_MULTI:
  db 8B 48 74 8B 57 14

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+30

Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+c: 8B 77 10              - mov esi,[edi+10]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+f: 8B 5F 0C              - mov ebx,[edi+0C]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+12: 85 F6                 - test esi,esi
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+14: 74 10                 - je Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+26
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+16: 83 FE 01              - cmp esi,01
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+19: 0F 84 D2 00 00 00     - je Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+f1
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+1f: 33 C0                 - xor eax,eax
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+21: E9 D4 00 00 00        - jmp Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+fa
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+26: C7 47 10 FF FF FF FF  - mov [edi+10],FFFFFFFF
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+2d: 8B 43 10              - mov eax,[ebx+10]
// ---------- INJECTING HERE ----------
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+30: 8B 48 74              - mov ecx,[eax+74]
// ---------- DONE INJECTING  ----------
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+33: 8B 57 14              - mov edx,[edi+14]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+36: 03 CA                 - add ecx,edx
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+38: 89 48 74              - mov [eax+74],ecx
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+3b: 8B 43 10              - mov eax,[ebx+10]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+3e: 89 45 C8              - mov [ebp-38],eax
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+41: 8B 40 74              - mov eax,[eax+74]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+44: 8B 8B AC 00 00 00     - mov ecx,[ebx+000000AC]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+4a: 8B 53 10              - mov edx,[ebx+10]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+4d: 8B 52 64              - mov edx,[edx+64]
Mortal.Combat.CombatStatController+&lt;ModifyHealth&gt;d__241:MoveNext+50: 89 54 24 08           - mov [esp+08],edx
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>61</ID>
                  <Description>"倍率 / multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>Float</VariableType>
                  <Address>vf_damage_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>28</ID>
              <Description>"HP選項 / HP Option"</Description>
              <DropDownList DisplayValueAsItem="1">0:不設定 / N/A
1:試著滿血 / full
2:一擊趴地 / one hit down
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_full_hp</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>26</ID>
              <Description>"HP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_player_hp_addr</Address>
              <Offsets>
                <Offset>74</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>27</ID>
              <Description>"氣 / Stamina"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_player_hp_addr</Address>
              <Offsets>
                <Offset>78</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"取得一些數據 / Get stats"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-14
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
//aobscan(INJECT_GET_STATS,89 45 F4 89 3C 24 E8 40) // should be unique
aobscanregion(INJECT_GET_STATS,Mortal.Core.GameStat:get_FinalValue+a,Mortal.Core.GameStat:get_FinalValue+1d,89 45 F4 89 3C 24) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_coco_addr)
label(i_actionP_addr)
label(i_contribution_addr)
label(i_mind_phase_addr)
label(i_assets_addr)
label(i_fame)
label(i_forge_addr)
label(i_morality_addr)
label(i_cohesive_addr)
label(i_disciples_addr)
label(i_skill_pt_addr)
label(i_alch_addr)
label(i_disposition_addr)
label(i_conduct_addr)
label(i_refinement_addr)
label(i_con_addr)
label(i_chi_addr)
label(i_lightness_addr)
label(i_sword_addr)
label(i_fist_addr)
label(i_hidden_weapons_addr)
label(i_def_addr)
label(i_mouth_cannon_addr)
label(i_antip_addr)
label(i_burst_addr)
label(i_knowledge_addr)
label(i_coco_addr_min)
label(i_destiny_addr)
label(i_guild_stat_addr)
label(i_elemental_addr)
label(i_morality_addr_min)


label(i_mind_phase_addr_min)

newmem:
  push ecx
  mov ecx, [edi+20]

t_coco:
  cmp ecx, 3
  jne next0
  mov [i_coco_addr], edi

  // adjust value
  push ecx
  mov ecx, [i_coco_addr_min]
  cmp ecx, [edi+28]
  jle mp_endp0
  mov [edi+28], ecx

mp_endp0:
  pop ecx
  // end

  jmp endp

next0:
t_ap:
  cmp ecx, #19
  jne @F
  mov [i_actionP_addr], edi

  jmp endp

t_cb:
  cmp ecx, #20
  jne @F
  mov [i_contribution_addr], edi

  jmp endp
t_mindp:
  cmp ecx, 6
  jne t_next1
  mov [i_mind_phase_addr], edi


  // adjust value
  push ecx
  mov ecx, [i_mind_phase_addr_min]
  cmp ecx, [edi+28]
  jle mp_endp
  mov [edi+28], ecx

mp_endp:
  pop ecx
  // end

  jmp endp

t_next1:
t_assets:
  cmp ecx, #33
  jne @F
  mov [i_assets_addr], edi

  jmp endp
t_forge:
  cmp ecx, #17
  jne @F
  mov [i_forge_addr], edi

  jmp endp
t_morality:
  cmp ecx, #11
  jne t_cohesive
  mov [i_morality_addr], edi

  // adjust value
  push ecx
  mov ecx, [i_morality_addr_min]
  cmp ecx, [edi+28]
  jle mp_endp_m0
  mov [edi+28], ecx

mp_endp_m0:
  pop ecx
  // end

  jmp endp

t_cohesive:
  cmp ecx, #16
  jne @F
  mov [i_cohesive_addr], edi

  jmp endp

t_fame:
  cmp ecx, #14
  jne @F
  mov [i_fame], edi

  jmp endp

t_disciples:
  cmp ecx, #15
  jne @F
  mov [i_disciples_addr], edi

  jmp endp

t_skill_pt:
  cmp ecx, #31
  jne @F
  mov [i_skill_pt_addr], edi

  jmp endp

t_alch:
  cmp ecx, #18
  jne @F
  mov [i_alch_addr], edi

  jmp endp

t_disposition:
  cmp ecx, 8
  jne @F
  mov [i_disposition_addr], edi

  jmp endp

t_conduct:
  cmp ecx, 9
  jne @F
  mov [i_conduct_addr], edi

  jmp endp

t_refinement:
  cmp ecx, #10
  jne @F
  mov [i_refinement_addr], edi

  jmp endp

t_con:
  cmp ecx, 0
  jne @F
  mov [i_con_addr], edi

  jmp endp

t_chi:
  cmp ecx, 1
  jne @F
  mov [i_chi_addr], edi

  jmp endp

t_ightness:
  cmp ecx, 2
  jne @F
  mov [i_lightness_addr], edi

  jmp endp

t_sword:
  cmp ecx, #100
  jne @F
  mov [i_sword_addr], edi

  jmp endp

t_fist:
  cmp ecx, #102
  jne @F
  mov [i_fist_addr], edi

  jmp endp

t_hweapon:
  cmp ecx, #101
  jne @F
  mov [i_hidden_weapons_addr], edi

  jmp endp

t_def:
  cmp ecx, #29
  jne @F
  mov [i_def_addr], edi

  jmp endp

t_mcannon:
  cmp ecx, #12
  jne @F
  mov [i_mouth_cannon_addr], edi

  jmp endp

t_antip:
  cmp ecx, #23
  jne @F
  mov [i_antip_addr], edi

  jmp endp

t_burst:
  cmp ecx, #401
  jne @F
  mov [i_burst_addr], edi

  jmp endp

t_knowledge:
  cmp ecx, 5
  jne @F
  mov [i_knowledge_addr], edi

  jmp endp

t_destiny:
  cmp ecx, 7
  jne @F
  mov [i_destiny_addr], edi

  jmp endp

t_guild:
  cmp ecx, #13
  jne @F
  mov [i_guild_stat_addr], edi

  jmp endp

t_element:
  cmp ecx, #28
  jne @F
  mov [i_elemental_addr], edi

  jmp endp


endp:
  pop ecx

code:
  mov [ebp-0C],eax
  mov [esp],edi
  jmp return
align 10 cc
  i_coco_addr: // 3
  dd 0
  i_actionP_addr: //19
  dd 0
  i_contribution_addr: //20
  dd 0
  i_mind_phase_addr: // 6
  dd 0
  i_assets_addr: // 33
  dd 0
  i_fame: // 14
  dd 0
  i_forge_addr: // 17
  dd 0
  i_morality_addr: // 11
  dd 0
  i_cohesive_addr: // 16
  dd 0
  i_disciples_addr: // 15
  dd 0
  i_skill_pt_addr: // 31
  dd 0
  i_alch_addr: // 18
  dd 0
  i_disposition_addr: // 8
  dd 0
  i_conduct_addr: // 9
  dd 0
  i_refinement_addr: //10
  dd 0
  i_con_addr: // 0
  dd 0
  i_chi_addr: // 1
  dd 0
  i_lightness_addr: // 2
  dd 0
  i_sword_addr: // 100
  dd 0
  i_fist_addr: // 102
  dd 0
  i_hidden_weapons_addr: // 101
  dd 0
  i_def_addr: // 29
  dd 0
  i_mouth_cannon_addr: // 12
  dd 0
  i_antip_addr: // 23
  dd 0
  i_burst_addr: // 401
  dd 0
  i_knowledge_addr: // 5
  dd 0
  i_destiny_addr: // 7
  dd 0
  i_guild_stat_addr: // 13
  dd 0
  i_elemental_addr:  // 28
  dd 0



  i_mind_phase_addr_min:
  dd 0
  i_coco_addr_min:
  dd 0
  i_morality_addr_min:
  dd 0



INJECT_GET_STATS:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_STATS)
registersymbol(i_coco_addr)
registersymbol(i_actionP_addr)
registersymbol(i_contribution_addr)
registersymbol(i_mind_phase_addr)
registersymbol(i_assets_addr)
registersymbol(i_fame)
registersymbol(i_forge_addr)
registersymbol(i_morality_addr)
registersymbol(i_cohesive_addr)
registersymbol(i_disciples_addr)
registersymbol(i_skill_pt_addr)
registersymbol(i_alch_addr)
registersymbol(i_disposition_addr)
registersymbol(i_conduct_addr)
registersymbol(i_refinement_addr)
registersymbol(i_con_addr)
registersymbol(i_chi_addr)
registersymbol(i_lightness_addr)
registersymbol(i_sword_addr)
registersymbol(i_fist_addr)
registersymbol(i_hidden_weapons_addr)
registersymbol(i_mind_phase_addr_min)
registersymbol(i_def_addr)
registersymbol(i_mouth_cannon_addr)
registersymbol(i_antip_addr)
registersymbol(i_burst_addr)
registersymbol(i_knowledge_addr)
registersymbol(i_coco_addr_min)
registersymbol(i_destiny_addr)
registersymbol(i_guild_stat_addr)
registersymbol(i_elemental_addr)
registersymbol(i_morality_addr_min)

[DISABLE]

INJECT_GET_STATS:
  db 89 45 F4 89 3C 24

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Core.GameStat:get_FinalValue+d

39BF35CF: 00 00           - add [eax],al
39BF35D1: 00 00           - add [eax],al
39BF35D3: 00 00           - add [eax],al
39BF35D5: 00 00           - add [eax],al
39BF35D7: 00 55 8B        - add [ebp-75],dl
Mortal.Core.GameStat:get_FinalValue+2: EC              - in al,dx
Mortal.Core.GameStat:get_FinalValue+3: 57              - push edi
Mortal.Core.GameStat:get_FinalValue+4: 83 EC 24        - sub esp,24
Mortal.Core.GameStat:get_FinalValue+7: 8B 7D 08        - mov edi,[ebp+08]
Mortal.Core.GameStat:get_FinalValue+a: 8B 47 28        - mov eax,[edi+28]
// ---------- INJECTING HERE ----------
Mortal.Core.GameStat:get_FinalValue+d: 89 45 F4        - mov [ebp-0C],eax
// ---------- DONE INJECTING  ----------
Mortal.Core.GameStat:get_FinalValue+10: 89 3C 24        - mov [esp],edi
Mortal.Core.GameStat:get_FinalValue+13: E8 40 00 00 00  - call Mortal.Core.GameStat:get_AdditionValue
Mortal.Core.GameStat:get_FinalValue+18: 8B C8           - mov ecx,eax
Mortal.Core.GameStat:get_FinalValue+1a: 8B 45 F4        - mov eax,[ebp-0C]
Mortal.Core.GameStat:get_FinalValue+1d: 03 C1           - add eax,ecx
Mortal.Core.GameStat:get_FinalValue+1f: 89 45 F8        - mov [ebp-08],eax
Mortal.Core.GameStat:get_FinalValue+22: 8B 4F 2C        - mov ecx,[edi+2C]
Mortal.Core.GameStat:get_FinalValue+25: 8B 57 30        - mov edx,[edi+30]
Mortal.Core.GameStat:get_FinalValue+28: 8B 47 34        - mov eax,[edi+34]
Mortal.Core.GameStat:get_FinalValue+2b: 03 D0           - add edx,eax
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>17</ID>
              <Description>"等待遊戲進行 / waiting for the game to proceed"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>11</ID>
              <Description>"金錢 / Money"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_coco_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>84</ID>
                  <Description>"最小金錢值 / min. money / may not work"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_coco_addr_min</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>12</ID>
              <Description>"行動力 / AP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_actionP_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13</ID>
              <Description>"貢獻 / contribution"</Description>
              <ShowAsSigned>1</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_contribution_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>14</ID>
              <Description>"心相 / mind's image"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_mind_phase_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>78</ID>
                  <Description>"最小心相值 / min. value / may not work"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_mind_phase_addr_min</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>15</ID>
              <Description>"資產 / assets"</Description>
              <ShowAsSigned>1</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_assets_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>16</ID>
              <Description>"名聲 / reputation"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_fame</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>34</ID>
              <Description>"向心 / cohesive force"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_cohesive_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>35</ID>
              <Description>"門人數量 / number of disciples"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_disciples_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>86</ID>
              <Description>"唐門狀況 / Guild stat"</Description>
              <DropDownList DisplayValueAsItem="1">1:日薄稀山
2:雲開見日
3:噴薄欲出
4:旭日東昇
5:如日方中
6:烈日當空
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_guild_stat_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>39</ID>
              <Description>"武學點數 / Skill pt."</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_skill_pt_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>25</ID>
              <Description>"鍛造點數 / forge cnt#"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_forge_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>42</ID>
              <Description>"煉丹點數 / alchemy"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_alch_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>43</ID>
              <Description>"性情 / disposition"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_disposition_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>44</ID>
              <Description>"處世 / conduct"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_conduct_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>33</ID>
              <Description>"道德 / morality"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_morality_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>129</ID>
                  <Description>"最低道德值 / min. morality / may not work"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_morality_addr_min</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>45</ID>
              <Description>"修養 / refinement"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_refinement_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>83</ID>
              <Description>"基礎學問 / base Knowledge"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_knowledge_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>80</ID>
              <Description>"基礎嘴力 / base trash talk"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_mouth_cannon_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>81</ID>
              <Description>"基礎抗麻 / base anti-paralyze"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_antip_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>82</ID>
              <Description>"基礎爆發 / base burst"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_burst_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>79</ID>
              <Description>"基礎防禦 / base def."</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_def_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>54</ID>
              <Description>"基礎體力 / base constitution"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_con_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>55</ID>
              <Description>"基礎內力 / base chi"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_chi_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>58</ID>
              <Description>"基礎拳掌 / base fist &amp; palm skill"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_fist_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>59</ID>
              <Description>"基礎暗器 / base hidden weapons skill"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_hidden_weapons_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>57</ID>
              <Description>"基礎刀劍 / base sword skill"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_sword_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>56</ID>
              <Description>"基礎輕功 / base lightness skill"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_lightness_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>128</ID>
              <Description>"屬性 / Elemental"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_elemental_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>85</ID>
              <Description>"命運 (移至屬性人物頭像上) / Destiny"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_destiny_addr</Address>
              <Offsets>
                <Offset>28</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>38</ID>
          <Description>"鍛造：最大消費不減 / Upgrade count no dec."</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-14
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
//aobscan(INJECT_UPGRADE_NO_DEC,49 89 88 9C 00 00 00) // should be unique
aobscanregion(INJECT_UPGRADE_NO_DEC,"Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext"+bd,"Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext"+ed,49 89 88 9C 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  //dec ecx
  mov [eax+0000009C],ecx
  jmp return

INJECT_UPGRADE_NO_DEC:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_UPGRADE_NO_DEC)

[DISABLE]

INJECT_UPGRADE_NO_DEC:
  db 49 89 88 9C 00 00 00

unregistersymbol(INJECT_UPGRADE_NO_DEC)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+cd

Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+a6: 8B 4D D4                 - mov ecx,[ebp-2C]
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+a9: F7 D9                    - neg ecx
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+ab: C7 44 24 08 01 00 00 00  - mov [esp+08],00000001
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+b3: 89 4C 24 04              - mov [esp+04],ecx
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+b7: 89 04 24                 - mov [esp],eax
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+ba: 39 00                    - cmp [eax],eax
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+bc: 8D 6D 00                 - lea ebp,[ebp+00]
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+bf: E8 4C 6C FA FF           - call Mortal.Core.GameStat:AddValue
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+c4: 8B 45 CC                 - mov eax,[ebp-34]
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+c7: 8B 88 9C 00 00 00        - mov ecx,[eax+0000009C]
// ---------- INJECTING HERE ----------
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+cd: 49                       - dec ecx
// ---------- DONE INJECTING  ----------
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+ce: 89 88 9C 00 00 00        - mov [eax+0000009C],ecx
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+d4: 8B 80 88 00 00 00        - mov eax,[eax+00000088]
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+da: 89 45 C0                 - mov [ebp-40],eax
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+dd: 39 00                    - cmp [eax],eax
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+df: C7 04 24 40 F0 D6 4D     - mov [esp],4DD6F040
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+e6: 90                       - nop 
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+e7: E8 DC F3 0A 03           - call System.Object:__icall_wrapper_ves_icall_object_new_specific
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+ec: 8B 4D C0                 - mov ecx,[ebp-40]
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+ef: C7 40 10 00 00 00 00     - mov [eax+10],00000000
Mortal.Core.UpgradePanel+&lt;StartHandleUpgarde&gt;d__44:MoveNext+f6: 89 48 0C                 - mov [eax+0C],ecx
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>41</ID>
          <Description>"修練：最大消費不減 / Skill upgrade # no dec."</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-14
  Author : bbfox@https://opencheattables.com
}

[ENABLE]


//aobscan(INJECT_INF_SKILL_UPGRADE,00 00 00 49 89 88 B4 00 00 00) // should be unique
aobscanregion(INJECT_INF_SKILL_UPGRADE,Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+85,Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+B5,49 89 88 B4 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  //dec ecx
  mov [eax+000000B4],ecx
  jmp return

INJECT_INF_SKILL_UPGRADE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_INF_SKILL_UPGRADE)

[DISABLE]

INJECT_INF_SKILL_UPGRADE:
  db 49 89 88 B4 00 00 00

unregistersymbol(INJECT_INF_SKILL_UPGRADE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+95

Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+6b: 8B 45 D0                 - mov eax,[ebp-30]
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+6e: 8B 40 14                 - mov eax,[eax+14]
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+71: C7 44 24 08 01 00 00 00  - mov [esp+08],00000001
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+79: C7 44 24 04 FF FF FF FF  - mov [esp+04],FFFFFFFF
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+81: 89 04 24                 - mov [esp],eax
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+84: 39 00                    - cmp [eax],eax
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+86: 90                       - nop 
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+87: E8 D4 F9 F9 FF           - call Mortal.Core.GameStat:AddValue
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+8c: 8B 45 D0                 - mov eax,[ebp-30]
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+8f: 8B 88 B4 00 00 00        - mov ecx,[eax+000000B4]
// ---------- INJECTING HERE ----------
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+95: 49                       - dec ecx
// ---------- DONE INJECTING  ----------
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+96: 89 88 B4 00 00 00        - mov [eax+000000B4],ecx
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+9c: 8B 80 A0 00 00 00        - mov eax,[eax+000000A0]
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+a2: 89 45 C4                 - mov [ebp-3C],eax
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+a5: 39 00                    - cmp [eax],eax
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+a7: C7 04 24 40 F0 D6 4D     - mov [esp],4DD6F040
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+ae: 90                       - nop 
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+af: E8 64 81 0A 03           - call System.Object:__icall_wrapper_ves_icall_object_new_specific
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+b4: 8B 4D C4                 - mov ecx,[ebp-3C]
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+b7: C7 40 10 00 00 00 00     - mov [eax+10],00000000
Mortal.Core.MartialPanel+&lt;StartHandleUpgarde&gt;d__70:MoveNext+be: 89 48 0C                 - mov [eax+0C],ecx
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>65</ID>
          <Description>"取得親蜜度 / Get relationship pt"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_GET_RELATION,8B 40 20 B9 67 66 66 66 F7 E9 89 55 E4) // should be unique
aobscanregion(INJECT_GET_RELATION,Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+f,Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+2f,8B 40 20 B9 67 66 66 66) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_base_rel_addr1)

newmem:
  mov [i_base_rel_addr1], eax

code:
  mov eax,[eax+20]
  mov ecx,66666667
  jmp return
align 10 cc
  i_base_rel_addr1:
  dd 0

INJECT_GET_RELATION:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_GET_RELATION)
registersymbol(i_base_rel_addr1)

[DISABLE]

INJECT_GET_RELATION:
  db 8B 40 20 B9 67 66 66 66

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+13

Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle: 55              - push ebp
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+1: 8B EC           - mov ebp,esp
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+3: 53              - push ebx
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+4: 57              - push edi
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+5: 56              - push esi
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+6: 83 EC 3C        - sub esp,3C
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+9: 8B 45 08        - mov eax,[ebp+08]
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+c: 8B 40 38        - mov eax,[eax+38]
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+f: 8B C8           - mov ecx,eax
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+11: 39 09           - cmp [ecx],ecx
// ---------- INJECTING HERE ----------
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+13: 8B 40 20        - mov eax,[eax+20]
// ---------- DONE INJECTING  ----------
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+16: B9 67 66 66 66  - mov ecx,66666667
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+1b: F7 E9           - imul ecx
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+1d: 89 55 E4        - mov [ebp-1C],edx
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+20: 89 45 E0        - mov [ebp-20],eax
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+23: 8B 4D E4        - mov ecx,[ebp-1C]
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+26: C1 F9 02        - sar ecx,02
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+29: 8B C1           - mov eax,ecx
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+2b: C1 E8 1F        - shr eax,1F
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+2e: 03 C1           - add eax,ecx
Mortal.Core.SocialStatPanel:UpdateCharacterInfoToggle+30: 89 45 DC        - mov [ebp-24],eax
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>70</ID>
              <Description>"手動使用方式：狀態 -&gt; 人際關係"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>71</ID>
                  <Description>"Usage: stats -&gt; relationship"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>66</ID>
              <Description>"ID"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_rel_addr1</Address>
              <Offsets>
                <Offset>1C</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>67</ID>
              <Description>"親蜜度 / rel."</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_rel_addr1</Address>
              <Offsets>
                <Offset>20</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>68</ID>
              <Description>"預設親蜜度 / def. rel."</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_rel_addr1</Address>
              <Offsets>
                <Offset>24</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>87</ID>
              <Description>"是否已經啟用 / active?"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_rel_addr1</Address>
              <Offsets>
                <Offset>2C</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>72</ID>
          <Description>"親蜜度增減時倍率 / relationship multiplier"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-16
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_ADD_REL_PT,8B 46 20 03 45 0C 89) // should be unique
aobscanregion(INJECT_ADD_REL_PT,Mortal.Core.RelationshipStat:AddValue+7,Mortal.Core.RelationshipStat:AddValue+27,8B 46 20 03 45 0C 89) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(is_mul_rel_add)
label(is_mul_rel_min)
label(vf_rel_add_multi)
label(vf_rel_min_multi)
label(i_base_rel_addr_4mul)

newmem:
  mov [i_base_rel_addr_4mul], esi
  cvtsi2ss xmm7, [ebp+0C]

  xorps xmm5, xmm5
  ucomiss xmm7, xmm5
  je code

  movaps xmm6, [vf_rel_add_multi]
  shufps xmm7, xmm7, 0
  mulps xmm7, xmm6

  ucomiss xmm7, xmm5
  jb to_min

to_add:
  cmp dword ptr [is_mul_rel_add], 1
  jne code

  jmp code_pre

to_min:
  cmp dword ptr [is_mul_rel_min], 1
  jne code

  shufps xmm7, xmm7, 55

code_pre:
  cvtss2si eax, xmm7
  mov [ebp+0C], eax

code:
  mov eax,[esi+20]
  add eax,[ebp+0C]
  jmp return
align 10 cc
  vf_rel_add_multi:
  dd (float)1.5
  vf_rel_min_multi:
  dd (float)0.5
  dd 0 0
  is_mul_rel_add:
  dd 1
  is_mul_rel_min:
  dd 0
  i_base_rel_addr_4mul:
  dd 0

INJECT_ADD_REL_PT:
  jmp newmem
  nop
return:
registersymbol(INJECT_ADD_REL_PT)
registersymbol(is_mul_rel_add)
registersymbol(is_mul_rel_min)
registersymbol(vf_rel_add_multi)
registersymbol(vf_rel_min_multi)
registersymbol(i_base_rel_addr_4mul)


[DISABLE]

INJECT_ADD_REL_PT:
  db 8B 46 20 03 45 0C

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Core.RelationshipStat:AddValue+a

&lt;Module&gt;:runtime_invoke_void__this___object_int_int+da: 74 BD                    - je &lt;Module&gt;:runtime_invoke_void__this___object_int_int+99
&lt;Module&gt;:runtime_invoke_void__this___object_int_int+dc: 83 EC 0C                 - sub esp,0C
&lt;Module&gt;:runtime_invoke_void__this___object_int_int+df: 57                       - push edi
&lt;Module&gt;:runtime_invoke_void__this___object_int_int+e0: 8D 6D 00                 - lea ebp,[ebp+00]
&lt;Module&gt;:runtime_invoke_void__this___object_int_int+e3: E8 D8 E7 BD 00           - call 01A00B40
Mortal.Core.RelationshipStat:AddValue: 55                       - push ebp
Mortal.Core.RelationshipStat:AddValue+1: 8B EC                    - mov ebp,esp
Mortal.Core.RelationshipStat:AddValue+3: 56                       - push esi
Mortal.Core.RelationshipStat:AddValue+4: 83 EC 24                 - sub esp,24
Mortal.Core.RelationshipStat:AddValue+7: 8B 75 08                 - mov esi,[ebp+08]
// ---------- INJECTING HERE ----------
Mortal.Core.RelationshipStat:AddValue+a: 8B 46 20                 - mov eax,[esi+20]
// ---------- DONE INJECTING  ----------
Mortal.Core.RelationshipStat:AddValue+d: 03 45 0C                 - add eax,[ebp+0C]
Mortal.Core.RelationshipStat:AddValue+10: 89 46 20                 - mov [esi+20],eax
Mortal.Core.RelationshipStat:AddValue+13: 8B 4E 28                 - mov ecx,[esi+28]
Mortal.Core.RelationshipStat:AddValue+16: 89 4C 24 08              - mov [esp+08],ecx
Mortal.Core.RelationshipStat:AddValue+1a: C7 44 24 04 00 00 00 00  - mov [esp+04],00000000
Mortal.Core.RelationshipStat:AddValue+22: 89 04 24                 - mov [esp],eax
Mortal.Core.RelationshipStat:AddValue+25: 8B C0                    - mov eax,eax
Mortal.Core.RelationshipStat:AddValue+27: E8 9C DE F1 1B           - call UnityEngine.Mathf:Clamp
Mortal.Core.RelationshipStat:AddValue+2c: 89 46 20                 - mov [esi+20],eax
Mortal.Core.RelationshipStat:AddValue+2f: 8D 65 FC                 - lea esp,[ebp-04]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>73</ID>
              <Description>"增加時啟動? / mul. when pt increase?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_mul_rel_add</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>74</ID>
              <Description>"減少時啟動? / mul. when pt decrease?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_mul_rel_min</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>75</ID>
              <Description>"增加時倍率 / inc. multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_rel_add_multi</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>76</ID>
              <Description>"減少時倍率 / dec. multiplier"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>Float</VariableType>
              <Address>vf_rel_min_multi</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>77</ID>
              <Description>"目前值 / cur. value"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF8080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_base_rel_addr_4mul</Address>
              <Offsets>
                <Offset>20</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>88</ID>
          <Description>"編輯人際關係顯示或隱藏 (依操作、可能無法復原) / force active relationship"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_FORCE_ACTIVE_REL,0F B6 40 2C 89 44 24 04) // should be unique
aobscanregion(INJECT_FORCE_ACTIVE_REL,Mortal.Core.SocialCharacterButton:InitData+39,Mortal.Core.SocialCharacterButton:InitData+59,0F B6 40 2C 89 44 24 04) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(is_force_show_all)
label(i_base_rel_addr)

newmem:
  cmp dword ptr [is_force_show_all], 1
  jne @F
  mov byte ptr [eax+2C], 1

chk_next:
  push ecx
  push edi
  xor edi, edi

loop_start:
  mov ecx, i_base_rel_addr
  lea ecx, [ecx+edi*4]
  cmp [ecx], eax
  je endp

  cmp dword ptr [ecx], 0
  jne loop_n
  mov [ecx], eax
  jmp endp

loop_n:
  inc edi
  cmp edi, 21
  jae endp
  jmp loop_start

endp:
  pop edi
  pop ecx


code:
  movzx eax,byte ptr [eax+2C]
  mov [esp+04],eax
  jmp return
align 10 cc
  is_force_show_all:
  dd 0
  i_base_rel_addr:
  dd 0
  align 100 0
  db 0
  align 100 0
  db 0


INJECT_FORCE_ACTIVE_REL:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_FORCE_ACTIVE_REL)
registersymbol(is_force_show_all)
registersymbol(i_base_rel_addr)

[DISABLE]

INJECT_FORCE_ACTIVE_REL:
  db 0F B6 40 2C 89 44 24 04

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Core.SocialCharacterButton:InitData+40

Mortal.Core.SocialCharacterButton:InitData+1b: E8 D8 AA 0E EA           - call UnityEngine.Object:op_Equality
Mortal.Core.SocialCharacterButton:InitData+20: 85 C0                    - test eax,eax
Mortal.Core.SocialCharacterButton:InitData+22: 74 15                    - je Mortal.Core.SocialCharacterButton:InitData+39
Mortal.Core.SocialCharacterButton:InitData+24: C7 44 24 04 00 00 00 00  - mov [esp+04],00000000
Mortal.Core.SocialCharacterButton:InitData+2c: 89 3C 24                 - mov [esp],edi
Mortal.Core.SocialCharacterButton:InitData+2f: E8 6C 00 00 00           - call 32F067E8
Mortal.Core.SocialCharacterButton:InitData+34: E9 4F 00 00 00           - jmp Mortal.Core.SocialCharacterButton:InitData+88
Mortal.Core.SocialCharacterButton:InitData+39: 8B 47 20                 - mov eax,[edi+20]
Mortal.Core.SocialCharacterButton:InitData+3c: 8B C8                    - mov ecx,eax
Mortal.Core.SocialCharacterButton:InitData+3e: 39 09                    - cmp [ecx],ecx
// ---------- INJECTING HERE ----------
Mortal.Core.SocialCharacterButton:InitData+40: 0F B6 40 2C              - movzx eax,byte ptr [eax+2C]
// ---------- DONE INJECTING  ----------
Mortal.Core.SocialCharacterButton:InitData+44: 89 44 24 04              - mov [esp+04],eax
Mortal.Core.SocialCharacterButton:InitData+48: 89 3C 24                 - mov [esp],edi
Mortal.Core.SocialCharacterButton:InitData+4b: E8 60 00 00 00           - call Mortal.Core.SocialCharacterButton:SetActive
Mortal.Core.SocialCharacterButton:InitData+50: 8B 77 1C                 - mov esi,[edi+1C]
Mortal.Core.SocialCharacterButton:InitData+53: 33 DB                    - xor ebx,ebx
Mortal.Core.SocialCharacterButton:InitData+55: EB 2A                    - jmp Mortal.Core.SocialCharacterButton:InitData+81
Mortal.Core.SocialCharacterButton:InitData+57: 90                       - nop 
Mortal.Core.SocialCharacterButton:InitData+58: 39 5E 0C                 - cmp [esi+0C],ebx
Mortal.Core.SocialCharacterButton:InitData+5b: 0F 86 32 00 00 00        - jbe Mortal.Core.SocialCharacterButton:InitData+93
Mortal.Core.SocialCharacterButton:InitData+61: 8D 44 9E 10              - lea eax,[esi+ebx*4+10]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>89</ID>
              <Description>"手動使用方式：狀態 -&gt; 人際關係"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>90</ID>
                  <Description>"Usage: stats -&gt; relationship"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>91</ID>
              <Description>"強制顯示全部? / Force active all?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>is_force_show_all</Address>
              <CheatEntries>
                <CheatEntry>
                  <ID>92</ID>
                  <Description>"切換頁面生效 / switch tabs to proceed"</Description>
                  <Color>8000FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>94</ID>
              <Description>"各別資料 (點擊展開) / Data+"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>96</ID>
                  <Description>"#1 唐中翎"</Description>
                  <DropDownList DisplayValueAsItem="1">0:隱藏 / Hide
1:顯示 / Show
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>97</ID>
                  <Description>"#2 唐布衣"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+4</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>98</ID>
                  <Description>"#3 唐錚"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+8</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>99</ID>
                  <Description>"#4 唐陞"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>100</ID>
                  <Description>"#5 唐惟元"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+10</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>101</ID>
                  <Description>"#6 唐默鈴"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+14</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>102</ID>
                  <Description>"#7 龍淵"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+18</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>103</ID>
                  <Description>"#8 龍湘"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+1C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>104</ID>
                  <Description>"#9 石公遠"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+20</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>105</ID>
                  <Description>"#10 葉雲舟"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+24</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>106</ID>
                  <Description>"#11 葉雲裳"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+28</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>107</ID>
                  <Description>"#12 宋悲"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+2C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>108</ID>
                  <Description>"#13 王二壯"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+30</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>109</ID>
                  <Description>"#14 宋富貴"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+34</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>110</ID>
                  <Description>"#15 樊嘯天"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+38</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>111</ID>
                  <Description>"#16 劉顎"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+3C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>112</ID>
                  <Description>"#17 福韞"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+40</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>113</ID>
                  <Description>"#18 萬里鵬程"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+44</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>114</ID>
                  <Description>"#19 南宮深"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+48</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>115</ID>
                  <Description>"#20 南宮淺"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+4C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>116</ID>
                  <Description>"#21 尹志平"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+50</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>117</ID>
                  <Description>"#22 申屠龍"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+54</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>118</ID>
                  <Description>"#23 解無塵"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+58</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>119</ID>
                  <Description>"#24 丹霞子"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+5C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>120</ID>
                  <Description>"#25上官螢"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+60</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>121</ID>
                  <Description>"#26 虞小梅"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+64</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>122</ID>
                  <Description>"#27 夏侯蘭"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+68</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>123</ID>
                  <Description>"#28 郁竹"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+6C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>124</ID>
                  <Description>"#29 魏菊"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+70</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>125</ID>
                  <Description>"#30 瑞笙"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+74</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>126</ID>
                  <Description>"#31 夏靈犀"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+78</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>127</ID>
                  <Description>"#32 趙逵"</Description>
                  <DropDownListLink>#1 唐中翎</DropDownListLink>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>FF8080</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_base_rel_addr+7C</Address>
                  <Offsets>
                    <Offset>2C</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>46</ID>
          <Description>"設定擲骰子結果 / Set dice result"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Mortal.exe
  Version: 
  Date   : 2024-06-15
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_SET_DICE_RESULT,8B C3 8D 65 F8 8D 65 F8 5E 5B C9 C3 00 00 68 88) // should be unique
aobscanregion(INJECT_SET_DICE_RESULT,Mortal.Story.DiceCheckResult:get_ResultCount+90,Mortal.Story.DiceCheckResult:get_ResultCount+E0,8B C3 8D 65 F8) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_dtarget_value)
label(i_dice_result)

newmem:
  cmp dword ptr [i_dtarget_value], -1
  je code
  mov [i_dice_result], ebx
  mov ebx, [i_dtarget_value]
  //mov dword ptr [i_dtarget_value], -1
code:
  mov eax,ebx
  lea esp,[ebp-08]
  jmp return
align 10 cc
  i_dtarget_value:
  dd -1
  i_dice_result:
  dd 1

INJECT_SET_DICE_RESULT:
  jmp newmem
return:
registersymbol(INJECT_SET_DICE_RESULT)
registersymbol(i_dtarget_value)
registersymbol(i_dice_result)

[DISABLE]

INJECT_SET_DICE_RESULT:
  db 8B C3 8D 65 F8

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Mortal.Story.DiceCheckResult:get_ResultCount+9a

Mortal.Story.DiceCheckResult:get_ResultCount+7e: 74 08           - je Mortal.Story.DiceCheckResult:get_ResultCount+88
Mortal.Story.DiceCheckResult:get_ResultCount+80: 8D 6D 00        - lea ebp,[ebp+00]
Mortal.Story.DiceCheckResult:get_ResultCount+83: E8 C0 CB 63 F4  - call 046F37D8
Mortal.Story.DiceCheckResult:get_ResultCount+88: EB 10           - jmp Mortal.Story.DiceCheckResult:get_ResultCount+9a
Mortal.Story.DiceCheckResult:get_ResultCount+8a: 89 65 F4        - mov [ebp-0C],esp
Mortal.Story.DiceCheckResult:get_ResultCount+8d: 83 EC 10        - sub esp,10
Mortal.Story.DiceCheckResult:get_ResultCount+90: 8D 45 DC        - lea eax,[ebp-24]
Mortal.Story.DiceCheckResult:get_ResultCount+93: 89 45 D4        - mov [ebp-2C],eax
Mortal.Story.DiceCheckResult:get_ResultCount+96: 8B 65 F4        - mov esp,[ebp-0C]
Mortal.Story.DiceCheckResult:get_ResultCount+99: C3              - ret 
// ---------- INJECTING HERE ----------
Mortal.Story.DiceCheckResult:get_ResultCount+9a: 8B C3           - mov eax,ebx
// ---------- DONE INJECTING  ----------
Mortal.Story.DiceCheckResult:get_ResultCount+9c: 8D 65 F8        - lea esp,[ebp-08]
Mortal.Story.DiceCheckResult:get_ResultCount+9f: 8D 65 F8        - lea esp,[ebp-08]
Mortal.Story.DiceCheckResult:get_ResultCount+a2: 5E              - pop esi
Mortal.Story.DiceCheckResult:get_ResultCount+a3: 5B              - pop ebx
Mortal.Story.DiceCheckResult:get_ResultCount+a4: C9              - leave 
Mortal.Story.DiceCheckResult:get_ResultCount+a5: C3              - ret 
100B6C36: 00 00           - add [eax],al
100B6C38: 68 88 CA B8 23  - push 23B8CA88
100B6C3D: E9 BE 94 5A F4  - jmp 04660100
100B6C42: 00 00           - add [eax],al
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>47</ID>
              <Description>"結果 / result"</Description>
              <DropDownList DisplayValueAsItem="1">-1:不設定
</DropDownList>
              <ShowAsSigned>1</ShowAsSigned>
              <Color>C08000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_dtarget_value</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>62</ID>
              <Description>"orig. result"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>i_dice_result</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>32</ID>
      <Description>"活俠傳 Legend of Mortal v1.0.3126  /  https://opencheattables.com  /  CE 7.5+"</Description>
      <Color>00AE57</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
