<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>192</ID>
      <Description>"Map Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civilization IV
  Version: 
  Date   : 2023-08-28
  Author : Apocalypticx

  This script does map reveal
}

[ENABLE]

aobscanmodule(reveal1,Civilization4.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 dword ptr [ebp+ecx*2+00],2
  jmp return

reveal1:
  jmp newmem
return:
registersymbol(reveal1)

[DISABLE]

reveal1:
  db 0F B6 54 4D 00

unregistersymbol(reveal1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Civilization4.exe+63E63

Civilization4.exe+63E3F: 89 54 24 48           - mov [esp+48],edx
Civilization4.exe+63E43: 8B 50 08              - mov edx,[eax+08]
Civilization4.exe+63E46: 8B 40 0C              - mov eax,[eax+0C]
Civilization4.exe+63E49: 89 44 24 50           - mov [esp+50],eax
Civilization4.exe+63E4D: B8 01 00 00 00        - mov eax,00000001
Civilization4.exe+63E52: 89 54 24 4C           - mov [esp+4C],edx
Civilization4.exe+63E56: 89 44 24 14           - mov [esp+14],eax
Civilization4.exe+63E5A: 3B 4C 24 3C           - cmp ecx,[esp+3C]
Civilization4.exe+63E5E: 74 0A                 - je Civilization4.exe+63E6A
Civilization4.exe+63E60: 8D 0C 1F              - lea ecx,[edi+ebx]
// ---------- INJECTING HERE ----------
Civilization4.exe+63E63: 0F B6 54 4D 00        - movzx edx,byte ptr [ebp+ecx*2+00]
// ---------- DONE INJECTING  ----------
Civilization4.exe+63E68: EB 0D                 - jmp Civilization4.exe+63E77
Civilization4.exe+63E6A: 80 7C 24 13 00        - cmp byte ptr [esp+13],00
Civilization4.exe+63E6F: 74 47                 - je Civilization4.exe+63EB8
Civilization4.exe+63E71: 8B 0E                 - mov ecx,[esi]
Civilization4.exe+63E73: 0F B6 14 79           - movzx edx,byte ptr [ecx+edi*2]
Civilization4.exe+63E77: D9 44 24 44           - fld dword ptr [esp+44]
Civilization4.exe+63E7B: C1 E2 04              - shl edx,04
Civilization4.exe+63E7E: D8 84 32 8C 00 00 00  - fadd dword ptr [edx+esi+0000008C]
Civilization4.exe+63E85: 8D 8C 32 8C 00 00 00  - lea ecx,[edx+esi+0000008C]
Civilization4.exe+63E8C: 83 C0 01              - add eax,01
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>210</ID>
      <Description>"City Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civilization IV
  Version: 
  Date   : 2023-08-28
  Author : Apocalypticx

  This script does cities reveal
}

[ENABLE]

aobscanmodule(cityreveal,CvGameCoreDLL.dll,8A 84 30 CA 02 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov al,[eax+esi+000002CA]
  mov al,1
  jmp return

cityreveal:
  jmp newmem
  nop
  nop
return:
registersymbol(cityreveal)

[DISABLE]

cityreveal:
  db 8A 84 30 CA 02 00 00

unregistersymbol(cityreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvCity::isRevealed+23

CvGameCoreDLL.CvCity::isRevealed+6: 8B F1                 - mov esi,ecx
CvGameCoreDLL.CvCity::isRevealed+8: 74 15                 - je CvGameCoreDLL.CvCity::isRevealed+1F
CvGameCoreDLL.CvCity::isRevealed+A: 8B 0D 04 9D 5E 07     - mov ecx,[CvGameCoreDLL.dll+339D04]
CvGameCoreDLL.CvCity::isRevealed+10: E8 0B 7F 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 44 24 08           - mov eax,[esp+08]
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvCity::isRevealed+23: 8A 84 30 CA 02 00 00  - mov al,[eax+esi+000002CA]
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvCity::isRevealed+2A: 5E                    - pop esi
CvGameCoreDLL.CvCity::isRevealed+2B: C2 08 00              - ret 0008
CvGameCoreDLL.CvCity::isRevealed+2E: CC                    - int 3 
CvGameCoreDLL.CvCity::isRevealed+2F: CC                    - int 3 
CvGameCoreDLL.CvCity::getNameKey: 81 C1 E0 02 00 00     - add ecx,000002E0
CvGameCoreDLL.CvCity::getNameKey+6: FF 25 7C 30 51 07     - jmp dword ptr [CvGameCoreDLL.dll+26307C]
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 
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>213</ID>
      <Description>"Unit Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civilization IV
  Version: 
  Date   : 2023-08-28
  Author : Apocalypticx

  This script does unit reveal
}

[ENABLE]

aobscanmodule(unitreveal,CvGameCoreDLL.dll,F9 F5 FF 84 C0 74 06 B0 01) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  test al,al
  mov al,1
  jmp return

unitreveal+03:
  jmp newmem
  nop
return:
registersymbol(unitreveal)

[DISABLE]

unitreveal+03:
  db 84 C0 74 06 B0 01

unregistersymbol(unitreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvPlot::isVisible+15

CvGameCoreDLL.CvPlot::defenseModifier+2CC: CC                 - int 3 
CvGameCoreDLL.CvPlot::defenseModifier+2CD: CC                 - int 3 
CvGameCoreDLL.CvPlot::defenseModifier+2CE: CC                 - int 3 
CvGameCoreDLL.CvPlot::defenseModifier+2CF: 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 04 9D 60 07  - mov ecx,[CvGameCoreDLL.dll+339D04]
CvGameCoreDLL.CvPlot::isVisible+10: E8 BB F9 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>214</ID>
      <Description>"Flag Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civilization IV
  Version: 
  Date   : 2023-08-28
  Author : Apocalypticx

  This script does flags reveal
}

[ENABLE]

aobscanmodule(flagreveal,CvGameCoreDLL.dll,7F 2A 66 83 BC 7E 4E 01 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  jmp CvGameCoreDLL.CvPlot::getSymbolOffsetX+13D
  cmp word ptr [esi+edi*2+0000014E],00
  jmp return

flagreveal:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(flagreveal)

[DISABLE]

flagreveal:
  db 7F 2A 66 83 BC 7E 4E 01 00 00 00

unregistersymbol(flagreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvPlot::getSymbolOffsetX+111

CvGameCoreDLL.CvPlot::getSymbolOffsetX+EC: 57                             - push edi
CvGameCoreDLL.CvPlot::getSymbolOffsetX+ED: E8 8E 0E F6 FF                 - call CvGameCoreDLL.CvGame::getActiveTeam
CvGameCoreDLL.CvPlot::getSymbolOffsetX+F2: 8B 0D 04 9D 60 07              - mov ecx,[CvGameCoreDLL.dll+339D04]
CvGameCoreDLL.CvPlot::getSymbolOffsetX+F8: 8B F8                          - mov edi,eax
CvGameCoreDLL.CvPlot::getSymbolOffsetX+FA: E8 81 D1 F5 FF                 - call CvGameCoreDLL.CvGame::isDebugMode
CvGameCoreDLL.CvPlot::getSymbolOffsetX+FF: 84 C0                          - test al,al
CvGameCoreDLL.CvPlot::getSymbolOffsetX+101: 75 3A                          - jne CvGameCoreDLL.CvPlot::getSymbolOffsetX+13D
CvGameCoreDLL.CvPlot::getSymbolOffsetX+103: 83 FF FF                       - cmp edi,-01
CvGameCoreDLL.CvPlot::getSymbolOffsetX+106: 74 16                          - je CvGameCoreDLL.CvPlot::getSymbolOffsetX+11E
CvGameCoreDLL.CvPlot::getSymbolOffsetX+108: 66 83 BC 7E 28 01 00 00 00     - cmp word ptr [esi+edi*2+00000128],00
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvPlot::getSymbolOffsetX+111: 7F 2A                          - jg CvGameCoreDLL.CvPlot::getSymbolOffsetX+13D
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvPlot::getSymbolOffsetX+113: 66 83 BC 7E 4E 01 00 00 00     - cmp word ptr [esi+edi*2+0000014E],00
CvGameCoreDLL.CvPlot::getSymbolOffsetX+11C: 7F 1F                          - jg CvGameCoreDLL.CvPlot::getSymbolOffsetX+13D
CvGameCoreDLL.CvPlot::getSymbolOffsetX+11E: 83 BE F8 01 00 00 00           - cmp dword ptr [esi+000001F8],00
CvGameCoreDLL.CvPlot::getSymbolOffsetX+125: 0F 84 60 02 00 00              - je CvGameCoreDLL.CvPlot::getSymbolOffsetX+38B
CvGameCoreDLL.CvPlot::getSymbolOffsetX+12B: 80 4E 22 80                    - or byte ptr [esi+22],-80
CvGameCoreDLL.CvPlot::getSymbolOffsetX+12F: 5F                             - pop edi
CvGameCoreDLL.CvPlot::getSymbolOffsetX+130: C7 86 F8 01 00 00 00 00 00 00  - mov [esi+000001F8],00000000
CvGameCoreDLL.CvPlot::getSymbolOffsetX+13A: 5E                             - pop esi
CvGameCoreDLL.CvPlot::getSymbolOffsetX+13B: 59                             - pop ecx
CvGameCoreDLL.CvPlot::getSymbolOffsetX+13C: C3                             - ret 
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>220</ID>
      <Description>"Invis Reveal"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Civilization IV
  Version: 
  Date   : 2023-09-04
  Author : Apocalypticx

  This script does invis units reveal
}

[ENABLE]

aobscanmodule(invisreveal,CvGameCoreDLL.dll,66 39 04 51 0F 9F C0) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  cmp [ecx+edx*2],ax
  setg al
  mov al,1
  jmp return

invisreveal:
  jmp newmem
  nop
  nop
return:
registersymbol(invisreveal)

[DISABLE]

invisreveal:
  db 66 39 04 51 0F 9F C0

unregistersymbol(invisreveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CvGameCoreDLL.CvPlot::getCenterUnit+B1

CvGameCoreDLL.CvPlot::getCenterUnit+9A: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+9B: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+9C: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+9D: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+9E: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+9F: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+A0: 8B 44 24 04           - mov eax,[esp+04]
CvGameCoreDLL.CvPlot::getCenterUnit+A4: 8B 8C 81 4C 02 00 00  - mov ecx,[ecx+eax*4+0000024C]
CvGameCoreDLL.CvPlot::getCenterUnit+AB: 8B 54 24 08           - mov edx,[esp+08]
CvGameCoreDLL.CvPlot::getCenterUnit+AF: 33 C0                 - xor eax,eax
// ---------- INJECTING HERE ----------
CvGameCoreDLL.CvPlot::getCenterUnit+B1: 66 39 04 51           - cmp [ecx+edx*2],ax
// ---------- DONE INJECTING  ----------
CvGameCoreDLL.CvPlot::getCenterUnit+B5: 0F 9F C0              - setg al
CvGameCoreDLL.CvPlot::getCenterUnit+B8: C2 08 00              - ret 0008
CvGameCoreDLL.CvPlot::getCenterUnit+BB: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+BC: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+BD: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+BE: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+BF: CC                    - int 3 
CvGameCoreDLL.CvPlot::getCenterUnit+C0: 56                    - push esi
CvGameCoreDLL.CvPlot::getCenterUnit+C1: 8B F1                 - mov esi,ecx
CvGameCoreDLL.CvPlot::getCenterUnit+C3: 8B 86 DC 01 00 00     - mov eax,[esi+000001DC]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>221</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>
