<?xml version="1.0" encoding="utf-8"?>
<CheatTable UsesMono="1" CheatEngineTableVersion="52">
  <CheatEntries>
    <CheatEntry NoCheckbox="1">
      <ID>3744</ID>
      <Description>"━━━━━━━━ Medieval Conquest ━━━━━━━━"</Description>
      <Color>00FFFF</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>3746</ID>
      <Description>"━━━━━━━━ 🖥️ COMPACT VIEW ━━━━━━━━"</Description>
      <Color>00FFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
// Script Created By mgr.inz.Player On CE Forums
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>3760</ID>
      <Description>"━━━━━━━━ ENABLE MONO ━━━━━━━━"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{
  ==============================================
   Medieval Conquest Table by SeryogaSK
  ----------------------------------------------
   Game    : Medieval Conquest.exe
   Version :  (Steam)
   Author  : SeryogaSK
   Website : Habibrahimov.com
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}


[ENABLE]
{$lua}
LaunchMonoDataCollector()
[DISABLE]

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1</ID>
          <Description>"TOWER POWER"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
   Medieval Conquest Table by SeryogaSK
  ----------------------------------------------
   Game    : Medieval Conquest.exe
   Version :  (Steam)
   Author  : SeryogaSK
   Website : Habibrahimov.com
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}


define(address,Tower:Update+19e )
define(bytes,48 63 86 B4 00 00 00)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,Tower:Update+19e )

label(code)
label(return)

newmem:
cmp [rsi+B0],1
jne code
mov dword ptr [rsi+000000B4],#999
movsxd  rax,dword ptr [rsi+000000B4]
jmp return
code:
mov dword ptr [rsi+000000B4],#0
  movsxd  rax,dword ptr [rsi+000000B4]
  jmp return

address:
  jmp newmem
  nop 2
return:

[DISABLE]

address:
  db bytes
  // movsxd  rax,dword ptr [rsi+000000B4]

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Tower:Update+19e

Tower:Update+176: 48 8B 45 B0                    - mov rax,[rbp-50]
Tower:Update+17a: 48 8B 55 A8                    - mov rdx,[rbp-58]
Tower:Update+17e: 48 89 48 48                    - mov [rax+48],rcx
Tower:Update+182: 48 8B CE                       - mov rcx,rsi
Tower:Update+185: 90                             - nop 
Tower:Update+186: 49 BB E0 95 C2 E4 6C 01 00 00  - mov r11,Tower:UpdateText
Tower:Update+190: 41 FF D3                       - call r11
Tower:Update+193: 48 63 86 B0 00 00 00           - movsxd  rax,dword ptr [rsi+000000B0]
Tower:Update+19a: 85 C0                          - test eax,eax
Tower:Update+19c: 74 1F                          - je Tower:Update+1bd
// ---------- INJECTING HERE ----------
Tower:Update+19e: 48 63 86 B4 00 00 00           - movsxd  rax,dword ptr [rsi+000000B4]
// ---------- DONE INJECTING  ----------
Tower:Update+1a5: 48 63 8E B8 00 00 00           - movsxd  rcx,dword ptr [rsi+000000B8]
Tower:Update+1ac: 3B C1                          - cmp eax,ecx
Tower:Update+1ae: 7E 0D                          - jle Tower:Update+1bd
Tower:Update+1b0: 48 63 86 B8 00 00 00           - movsxd  rax,dword ptr [rsi+000000B8]
Tower:Update+1b7: 89 86 B4 00 00 00              - mov [rsi+000000B4],eax
Tower:Update+1bd: 48 8B 75 F8                    - mov rsi,[rbp-08]
Tower:Update+1c1: 48 8D 65 00                    - lea rsp,[rbp+00]
Tower:Update+1c5: 5D                             - pop rbp
Tower:Update+1c6: C3                             - ret 
16CE4C2F1D7: 00 01                          - add [rcx],al
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"FREE TOWER BUY"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
   Medieval Conquest Table by SeryogaSK
  ----------------------------------------------
   Game    : Medieval Conquest.exe
   Version :  (Steam)
   Author  : SeryogaSK
   Website : Habibrahimov.com
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}

define(address,MessageBuyTower:Update+49)
define(bytes,48 63 00 48 63 4E 78)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000,MessageBuyTower:Update+49)

label(code)
label(return)

newmem:
mov [rsi+78],#0
mov [rsi+7C],#0
code:
  movsxd  rax,dword ptr [rax]
  movsxd  rcx,dword ptr [rsi+78]
  jmp return

address:
  jmp newmem
  nop 2
return:

[DISABLE]

address:
  db bytes
  // movsxd  rax,dword ptr [rax]
  // movsxd  rcx,dword ptr [rsi+78]

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: MessageBuyTower:Update+49

MessageBuyTower:Update+16: 48 B8 1C 6E 9D 0E 6C 01 00 00  - mov rax,0000016C0E9D6E1C
MessageBuyTower:Update+20: 48 63 00                       - movsxd  rax,dword ptr [rax]
MessageBuyTower:Update+23: 83 F8 05                       - cmp eax,05
MessageBuyTower:Update+26: 7C 17                          - jl MessageBuyTower:Update+3f
MessageBuyTower:Update+28: 48 63 46 7C                    - movsxd  rax,dword ptr [rsi+7C]
MessageBuyTower:Update+2c: 48 B9 2C 6E 9D 0E 6C 01 00 00  - mov rcx,0000016C0E9D6E2C
MessageBuyTower:Update+36: 48 63 09                       - movsxd  rcx,dword ptr [rcx]
MessageBuyTower:Update+39: 0F AF C1                       - imul eax,ecx
MessageBuyTower:Update+3c: 89 46 78                       - mov [rsi+78],eax
MessageBuyTower:Update+3f: 48 B8 18 6E 9D 0E 6C 01 00 00  - mov rax,0000016C0E9D6E18
// ---------- INJECTING HERE ----------
MessageBuyTower:Update+49: 48 63 00                       - movsxd  rax,dword ptr [rax]
// ---------- DONE INJECTING  ----------
MessageBuyTower:Update+4c: 48 63 4E 78                    - movsxd  rcx,dword ptr [rsi+78]
MessageBuyTower:Update+50: 3B C1                          - cmp eax,ecx
MessageBuyTower:Update+52: 0F 8C B8 00 00 00              - jl MessageBuyTower:Update+110
MessageBuyTower:Update+58: 48 8B 46 20                    - mov rax,[rsi+20]
MessageBuyTower:Update+5c: 48 89 45 B8                    - mov [rbp-48],rax
MessageBuyTower:Update+60: 48 8B 46 30                    - mov rax,[rsi+30]
MessageBuyTower:Update+64: 48 8B C8                       - mov rcx,rax
MessageBuyTower:Update+67: 48 8B 00                       - mov rax,[rax]
MessageBuyTower:Update+6a: FF 90 68 04 00 00              - call qword ptr [rax+00000468]
MessageBuyTower:Update+70: 48 89 45 B0                    - mov [rbp-50],rax
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>3757</ID>
      <Description>"━━━━━━━━ 🔧 DEBUG ━━━━━━━━━"</Description>
      <Options moHideChildren="1"/>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>3750</ID>
      <Description>"━━━━━━━━ 📡 Links ━━━━━━━━"</Description>
      <Color>FFFF00</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry NoScriptTag="1">
          <ID>3751</ID>
          <Description>"├─ YouTube"</Description>
          <Color>FFFF00</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
[ENABLE]
shellExecute("https://www.youtube.com/@SeryogaSK");
createThread(function();sleep(100);memrec.Active=false;end);
[DISABLE]
</AssemblerScript>
        </CheatEntry>
        <CheatEntry NoScriptTag="1">
          <ID>3752</ID>
          <Description>"├─ OCT PROFILE"</Description>
          <Color>FFFF00</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
[ENABLE]
shellExecute("https://opencheattables.com/memberlist.php?mode=viewprofile&amp;u=6096");
createThread(function();sleep(100);memrec.Active=false;end);
[DISABLE]
</AssemblerScript>
        </CheatEntry>
        <CheatEntry NoScriptTag="1">
          <ID>3753</ID>
          <Description>"└─ Website"</Description>
          <Color>FFFF00</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
[ENABLE]
shellExecute("https://habibrahimov.com");
createThread(function();sleep(100);memrec.Active=false;end);
[DISABLE]
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>3755</ID>
      <Description>"━━━━━━━━ 📜 Last Update ━━━━━━━━"</Description>
      <Color>00FFFF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry NoCheckbox="1">
          <ID>3756</ID>
          <Description>"└─ 10.06.2026"</Description>
          <Color>00FFFF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Structures StructVersion="2">
    <Structure Name="MessageBuyTower" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="16" Vartype="Pointer" Bytesize="8" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
        <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" Description="m_CancellationTokenSource" DisplayMethod="unsigned integer"/>
        <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="ObjectTextMake" DisplayMethod="unsigned integer"/>
        <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="ObjectTextNoMoney" DisplayMethod="unsigned integer"/>
        <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="StringMake" DisplayMethod="unsigned integer"/>
        <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="StringNoMoney" DisplayMethod="unsigned integer"/>
        <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="tower" DisplayMethod="unsigned integer"/>
        <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="IcoTower" DisplayMethod="unsigned integer"/>
        <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="MessBuy" DisplayMethod="unsigned integer"/>
        <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="MessNoMoney" DisplayMethod="unsigned integer"/>
        <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="effect" DisplayMethod="unsigned integer"/>
        <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="SoundsBuy" DisplayMethod="unsigned integer"/>
        <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="audioSource" DisplayMethod="unsigned integer"/>
        <Element Offset="120" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000078" Description="cost" DisplayMethod="unsigned integer"/>
        <Element Offset="124" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000007C" Description="k" DisplayMethod="unsigned integer"/>
      </Elements>
    </Structure>
  </Structures>
  <Comments>Info about this table:
</Comments>
  <LuaScript>-- Cheat Table Decorator
function decorateSSKTable()
  local mainForm = getMainForm()

  -- Main Form Styling
  mainForm.Caption = 'Medieval Conquest (Steam) - Enhanced Table [by SeryogaSK] {Habibrahimov.com}'
  mainForm.Color = 0x2B2B2B  -- Dark background
  mainForm.Font.Color = 0xE6E6E6 -- Light text
  getAutoAttachList().add("Medieval Conquest.exe")
end

-- Execute when table loads
decorateSSKTable()




</LuaScript>
</CheatTable>
