<?xml version="1.0" encoding="utf-8"?>
<CheatTable ApoctEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>105</ID>
      <Description>"Map Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civ IV: Warlords
  Version: 
  Date   : 2023-08-29
  Author : Apocalypticx

  This script does map reveal
}

[ENABLE]

aobscanmodule(mapreveal,Civ4Warlords.exe,0F B6 54 4D 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movzx edx,byte ptr [ebp+ecx*2+00]
  mov byte ptr [ebp+ecx*2+00],(byte)2
  jmp return

mapreveal:
  jmp newmem
return:
registersymbol(mapreveal)

[DISABLE]

mapreveal:
  db 0F B6 54 4D 00

unregistersymbol(mapreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Civ4Warlords.exe+66B53

Civ4Warlords.exe+66B2F: 89 54 24 48           - mov [esp+48],edx
Civ4Warlords.exe+66B33: 8B 50 08              - mov edx,[eax+08]
Civ4Warlords.exe+66B36: 8B 40 0C              - mov eax,[eax+0C]
Civ4Warlords.exe+66B39: 89 44 24 50           - mov [esp+50],eax
Civ4Warlords.exe+66B3D: B8 01 00 00 00        - mov eax,00000001
Civ4Warlords.exe+66B42: 89 54 24 4C           - mov [esp+4C],edx
Civ4Warlords.exe+66B46: 89 44 24 14           - mov [esp+14],eax
Civ4Warlords.exe+66B4A: 3B 4C 24 3C           - cmp ecx,[esp+3C]
Civ4Warlords.exe+66B4E: 74 0A                 - je Civ4Warlords.exe+66B5A
Civ4Warlords.exe+66B50: 8D 0C 1F              - lea ecx,[edi+ebx]
// ---------- INJECTING HERE ----------
Civ4Warlords.exe+66B53: 0F B6 54 4D 00        - movzx edx,byte ptr [ebp+ecx*2+00]
// ---------- DONE INJECTING  ----------
Civ4Warlords.exe+66B58: EB 0D                 - jmp Civ4Warlords.exe+66B67
Civ4Warlords.exe+66B5A: 80 7C 24 13 00        - cmp byte ptr [esp+13],00
Civ4Warlords.exe+66B5F: 74 47                 - je Civ4Warlords.exe+66BA8
Civ4Warlords.exe+66B61: 8B 0E                 - mov ecx,[esi]
Civ4Warlords.exe+66B63: 0F B6 14 79           - movzx edx,byte ptr [ecx+edi*2]
Civ4Warlords.exe+66B67: D9 44 24 44           - fld dword ptr [esp+44]
Civ4Warlords.exe+66B6B: C1 E2 04              - shl edx,04
Civ4Warlords.exe+66B6E: D8 84 32 8C 00 00 00  - fadd dword ptr [edx+esi+0000008C]
Civ4Warlords.exe+66B75: 8D 8C 32 8C 00 00 00  - lea ecx,[edx+esi+0000008C]
Civ4Warlords.exe+66B7C: 83 C0 01              - add eax,01
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>107</ID>
      <Description>"City Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civ IV: Warlords
  Version: 
  Date   : 2023-08-29
  Author : Apocalypticx

  This script does city reveal
}

[ENABLE]

aobscanmodule(cityreveal,CvGameCoreDLL.dll,8A 04 01 5E C2 08 00 81) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov al,[ecx+eax]
  mov al,(byte)1
  pop esi
  ret 0008
  jmp return

cityreveal:
  jmp newmem
  nop 2
return:
registersymbol(cityreveal)

[DISABLE]

cityreveal:
  db 8A 04 01 5E C2 08 00

unregistersymbol(cityreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvCity::isRevealed+29

CvGameCoreDLL.CvCity::isRevealed+8: 74 15              - je CvGameCoreDLL.CvCity::isRevealed+1F
CvGameCoreDLL.CvCity::isRevealed+A: 8B 0D 1C CA 39 07  - mov ecx,[CvGameCoreDLL.dll+35CA1C]
CvGameCoreDLL.CvCity::isRevealed+10: E8 5B BB 03 00     - call CvGameCoreDLL.CvGame::isDebugMode
CvGameCoreDLL.CvCity::isRevealed+15: 84 C0              - test al,al
CvGameCoreDLL.CvCity::isRevealed+17: 74 06              - je CvGameCoreDLL.CvCity::isRevealed+1F
CvGameCoreDLL.CvCity::isRevealed+19: B0 01              - mov al,01
CvGameCoreDLL.CvCity::isRevealed+1B: 5E                 - pop esi
CvGameCoreDLL.CvCity::isRevealed+1C: C2 08 00           - ret 0008
CvGameCoreDLL.CvCity::isRevealed+1F: 8B 86 A4 01 00 00  - mov eax,[esi+000001A4]
CvGameCoreDLL.CvCity::isRevealed+25: 8B 4C 24 08        - mov ecx,[esp+08]
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvCity::isRevealed+29: 8A 04 01           - mov al,[ecx+eax]
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvCity::isRevealed+2C: 5E                 - pop esi
CvGameCoreDLL.CvCity::isRevealed+2D: C2 08 00           - ret 0008
CvGameCoreDLL.CvCity::getNameKey: 81 C1 A8 01 00 00  - add ecx,000001A8
CvGameCoreDLL.CvCity::getNameKey+6: FF 25 7C 00 2C 07  - jmp dword ptr [CvGameCoreDLL.dll+28007C]
CvGameCoreDLL.CvCity::getNameKey+C: CC                 - int 3 
CvGameCoreDLL.CvCity::getNameKey+D: CC                 - int 3 
CvGameCoreDLL.CvCity::getNameKey+E: CC                 - int 3 
CvGameCoreDLL.CvCity::getNameKey+F: CC                 - int 3 
CvGameCoreDLL.CvCity::getNameKey+10: 51                 - push ecx
CvGameCoreDLL.CvCity::getNameKey+11: 56                 - push esi
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>108</ID>
      <Description>"Unit Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civ IV: Warlords
  Version: 
  Date   : 2023-09-01
  Author : Apocalypticx

  This script unit reveal
}

[ENABLE]

aobscanmodule(unitreveal,CvGameCoreDLL.dll,84 C0 74 06 B0 01 5E C2 08 00 8B 44) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  test al,al
  mov al,01
  jmp return

unitreveal:
  jmp newmem
  nop
return:
registersymbol(unitreveal)

[DISABLE]

unitreveal:
  db 84 C0 74 06 B0 01

unregistersymbol(unitreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvPlot::isVisible+15

CvGameCoreDLL.CvPlot::defenseModifier+33C: CC                 - int 3 
CvGameCoreDLL.CvPlot::defenseModifier+33D: CC                 - int 3 
CvGameCoreDLL.CvPlot::defenseModifier+33E: CC                 - int 3 
CvGameCoreDLL.CvPlot::defenseModifier+33F: CC                 - int 3 
CvGameCoreDLL.CvPlot::isVisible: 80 7C 24 08 00     - cmp byte ptr [esp+08],00
CvGameCoreDLL.CvPlot::isVisible+5: 56                 - push esi
CvGameCoreDLL.CvPlot::isVisible+6: 8B F1              - mov esi,ecx
CvGameCoreDLL.CvPlot::isVisible+8: 74 15              - je CvGameCoreDLL.CvPlot::isVisible+1F
CvGameCoreDLL.CvPlot::isVisible+A: 8B 0D 1C CA 38 07  - mov ecx,[CvGameCoreDLL.dll+35CA1C]
CvGameCoreDLL.CvPlot::isVisible+10: E8 7B 23 F5 FF     - call CvGameCoreDLL.CvGame::isDebugMode
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvPlot::isVisible+15: 84 C0              - test al,al
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvPlot::isVisible+17: 74 06              - je CvGameCoreDLL.CvPlot::isVisible+1F
CvGameCoreDLL.CvPlot::isVisible+19: B0 01              - mov al,01
CvGameCoreDLL.CvPlot::isVisible+1B: 5E                 - pop esi
CvGameCoreDLL.CvPlot::isVisible+1C: C2 08 00           - ret 0008
CvGameCoreDLL.CvPlot::isVisible+1F: 8B 44 24 08        - mov eax,[esp+08]
CvGameCoreDLL.CvPlot::isVisible+23: 83 F8 FF           - cmp eax,-01
CvGameCoreDLL.CvPlot::isVisible+26: 75 06              - jne CvGameCoreDLL.CvPlot::isVisible+2E
CvGameCoreDLL.CvPlot::isVisible+28: 32 C0              - xor al,al
CvGameCoreDLL.CvPlot::isVisible+2A: 5E                 - pop esi
CvGameCoreDLL.CvPlot::isVisible+2B: C2 08 00           - ret 0008
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>132</ID>
      <Description>"Unit Flags"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civ IV: Warlords
  Version: 
  Date   : 2023-09-01
  Author : Apocalypticx

  This script does unit flags
}

[ENABLE]

aobscanmodule(unitflags,CvGameCoreDLL.dll,7F 29 8B 4E 64) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  jmp CvGameCoreDLL.CvPlot::getSymbolOffsetX+13B
  mov ecx,[esi+64]
  jmp return

unitflags:
  jmp newmem
return:
registersymbol(unitflags)

[DISABLE]

unitflags:
  db 7F 29 8B 4E 64

unregistersymbol(unitflags)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvPlot::getSymbolOffsetX+110

CvGameCoreDLL.CvPlot::getSymbolOffsetX+ED: E8 AE 1D F5 FF                 - call CvGameCoreDLL.CvGame::getActiveTeam
CvGameCoreDLL.CvPlot::getSymbolOffsetX+F2: 8B 0D 1C CA 38 07              - mov ecx,[CvGameCoreDLL.dll+35CA1C]
CvGameCoreDLL.CvPlot::getSymbolOffsetX+F8: 8B F8                          - mov edi,eax
CvGameCoreDLL.CvPlot::getSymbolOffsetX+FA: E8 41 E0 F4 FF                 - call CvGameCoreDLL.CvGame::isDebugMode
CvGameCoreDLL.CvPlot::getSymbolOffsetX+FF: 84 C0                          - test al,al
CvGameCoreDLL.CvPlot::getSymbolOffsetX+101: 75 38                          - jne CvGameCoreDLL.CvPlot::getSymbolOffsetX+13B
CvGameCoreDLL.CvPlot::getSymbolOffsetX+103: 83 FF FF                       - cmp edi,-01
CvGameCoreDLL.CvPlot::getSymbolOffsetX+106: 74 14                          - je CvGameCoreDLL.CvPlot::getSymbolOffsetX+11C
CvGameCoreDLL.CvPlot::getSymbolOffsetX+108: 8B 46 60                       - mov eax,[esi+60]
CvGameCoreDLL.CvPlot::getSymbolOffsetX+10B: 66 83 3C 78 00                 - cmp word ptr [eax+edi*2],00
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvPlot::getSymbolOffsetX+110: 7F 29                          - jg CvGameCoreDLL.CvPlot::getSymbolOffsetX+13B
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvPlot::getSymbolOffsetX+112: 8B 4E 64                       - mov ecx,[esi+64]
CvGameCoreDLL.CvPlot::getSymbolOffsetX+115: 66 83 3C 79 00                 - cmp word ptr [ecx+edi*2],00
CvGameCoreDLL.CvPlot::getSymbolOffsetX+11A: 7F 1F                          - jg CvGameCoreDLL.CvPlot::getSymbolOffsetX+13B
CvGameCoreDLL.CvPlot::getSymbolOffsetX+11C: 83 BE 98 00 00 00 00           - cmp dword ptr [esi+00000098],00
CvGameCoreDLL.CvPlot::getSymbolOffsetX+123: 0F 84 67 02 00 00              - je CvGameCoreDLL.CvPlot::getSymbolOffsetX+390
CvGameCoreDLL.CvPlot::getSymbolOffsetX+129: 80 4E 22 80                    - or byte ptr [esi+22],-80
CvGameCoreDLL.CvPlot::getSymbolOffsetX+12D: 5F                             - pop edi
CvGameCoreDLL.CvPlot::getSymbolOffsetX+12E: C7 86 98 00 00 00 00 00 00 00  - mov [esi+00000098],00000000
CvGameCoreDLL.CvPlot::getSymbolOffsetX+138: 5E                             - pop esi
CvGameCoreDLL.CvPlot::getSymbolOffsetX+139: 59                             - pop ecx
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>140</ID>
      <Description>"Invis Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civ IV: Warlords
  Version: 
  Date   : 2023-09-04
  Author : Apocalypticx

  This script does invis reveal
}

[ENABLE]

aobscanmodule(invisreveal,CvGameCoreDLL.dll,66 39 04 4A 0F 9F C0) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  cmp [edx+ecx*2],ax
  setg al
  mov al,1
  jmp return

invisreveal:
  jmp newmem
  nop 2
return:
registersymbol(invisreveal)

[DISABLE]

invisreveal:
  db 66 39 04 4A 0F 9F C0

unregistersymbol(invisreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvPlot::getRevealedRouteType+2B3

CvGameCoreDLL.CvPlot::getRevealedRouteType+29B: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+29C: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+29D: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+29E: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+29F: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+2A0: 8B 81 A4 00 00 00  - mov eax,[ecx+000000A4]
CvGameCoreDLL.CvPlot::getRevealedRouteType+2A6: 8B 4C 24 04        - mov ecx,[esp+04]
CvGameCoreDLL.CvPlot::getRevealedRouteType+2AA: 8B 14 88           - mov edx,[eax+ecx*4]
CvGameCoreDLL.CvPlot::getRevealedRouteType+2AD: 8B 4C 24 08        - mov ecx,[esp+08]
CvGameCoreDLL.CvPlot::getRevealedRouteType+2B1: 33 C0              - xor eax,eax
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvPlot::getRevealedRouteType+2B3: 66 39 04 4A        - cmp [edx+ecx*2],ax
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvPlot::getRevealedRouteType+2B7: 0F 9F C0           - setg al
CvGameCoreDLL.CvPlot::getRevealedRouteType+2BA: C2 08 00           - ret 0008
CvGameCoreDLL.CvPlot::getRevealedRouteType+2BD: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+2BE: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+2BF: CC                 - int 3 
CvGameCoreDLL.CvPlot::getRevealedRouteType+2C0: 56                 - push esi
CvGameCoreDLL.CvPlot::getRevealedRouteType+2C1: 8B F1              - mov esi,ecx
CvGameCoreDLL.CvPlot::getRevealedRouteType+2C3: 8B 46 7C           - mov eax,[esi+7C]
CvGameCoreDLL.CvPlot::getRevealedRouteType+2C6: 85 C0              - test eax,eax
CvGameCoreDLL.CvPlot::getRevealedRouteType+2C8: 74 10              - je CvGameCoreDLL.CvPlot::getRevealedRouteType+2DA
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>141</ID>
      <Description>"Donate Paypal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
--NO_ACTIVATE
if syntaxcheck then return end
if memrec then print(memrec.Description) end

shellExecute('https://paypal.me/apocalypticx?country.x=GB&amp;locale.x=en_GB')

getLuaEngine().MenuItem1.DoClick()
getLuaEngine().Close()

[DISABLE]

</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
