19
"[X] <== Civilization VI XP1 v1.0.0.262 (362541) Script v2.8"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Civilization VI - Rise and Fall
Game Version : 1.0.0.262 (362541)
Game Sponsor : Fennix102 + daipm (XP1)
Process Name : CivilizationVI.exe
Relevant Info : 64bits/TBS/New Engine
Script Version: 2.8
CE Version : 6.7
Release date : 20-Jul-2018
Author : Recifense
History:
22-Oct-2016: Preliminary Release 1 (7 features)
24-Oct-2016: Preliminary Release 2 (6 more features)
25-Oct-2016: First Release
02-Nov-2016: Added unit prod in 1 turn (s2.0)
19-Nov-2016: Release for version 1.0.0.38. (s2.1)
21-Dec-2016: Release for version 1.0.0.56.
22-Dec-2016: Fix for Faith (s2.2).
25-Feb-2017: Release for version 1.0.0.110.
28-Mar-2017: Release for version 1.0.0.129.
29-Jul-2017: Release for version 1.0.0.167.
02-Aug-2017: Fix for "Build District in 1 turn" (s2.4)
15-Aug-2017: Fix for "Unit Production in 1 Turn" + GPA (s2.5)
19-Oct-2017: Release for version 1.0.0.194.
21-Oct-2017: Fix for Faith and Great People Action(s2.6).
08-Feb-2018: Release for version 1.0.0.216. + Fix for religious Units (s2.7)
09-Feb-2018: Release for version 1.0.0.216 - XP1
12-Feb-2018: Fix Construction in 1 Turn (city) => Only Wonders (s2.8)
13-Feb-2018: Release for version 1.0.0.220 - XP1
11-Mar-2018: Release for version 1.0.0.229 - XP1
11-May-2018: Release for version 1.0.0.259 - XP1
20-Jul-2018: Release for version 1.0.0.262 - XP1
Features:
- Minimum Gold
- Move unlimited Times
- Unic Can Act Again
- God Mode
- Research in 1 turn
- Build Construction in 1 turn:
- Only Wonders
- Unlimited Works for Builders
- Build District in 1 turn
- Build Project in 1 turn
- City Minimum Pop
- Minimum Faith
- City Garrison HP
- Unit Production in 1 turn
- Great People Action
- Unlimited Spreads for Religious Units (new)
- Some Pointers
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 6.7) then
ShowMessage('Sorry. CE version should be 6.7 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif ((process ~= "CivilizationVI.exe") and (process ~= "CivilizationVI_DX12.exe")) then
ShowMessage('Error. Expected Process = CivilizationVI.exe or CivilizationVI_DX12.exe')
end
{$asm}
//=========================================
// Definitions
define(LUDO,"CivilizationVI.exe")
define(MOPG,GameCore_XP1_FinalRelease.dll+0054dada) //==#==
define(MUMP,GameCore_XP1_FinalRelease.dll+00598660) //X====
define(MUDE,GameCore_XP1_FinalRelease.dll+00264cdd) //=====
define(MUD2,GameCore_XP1_FinalRelease.dll+00264cc6) //=====
define(MUD3,GameCore_XP1_FinalRelease.dll+000ad01f) //#====
define(MUD4,GameCore_XP1_FinalRelease.dll+000ad009) //#====
define(MOPR,GameCore_XP1_FinalRelease.dll+0020fb05) //=====
define(MOSC,GameCore_XP1_FinalRelease.dll+0008777d) //#====
define(MDHP,GameCore_XP1_FinalRelease.dll+000daeed) //#====
define(MOUP,GameCore_XP1_FinalRelease.dll+0006806f) //==#==
define(MOPP,GameCore_XP1_FinalRelease.dll+00068340) //#=#==
define(MODB,GameCore_XP1_FinalRelease.dll+00068539) //#=#==
define(MOPB,GameCore_XP1_FinalRelease.dll+000687b2) //==#==
//=========================================
// Constants used in the script (that can be changed)
define(ctCE67,(float)6.7)
define(ctMGLD,#6700) // Minimum Gold
define(ctMFAI,#670) // Minimum Faith
define(ctMUMP,#4) // Minimum MP
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
assert(MOPG,8b 81 a0 00 00 00 48 8b fa 89 02 48 8b d9 e8 ?? ?? ?? ?? 48 8b cb)
assert(MUMP,48 8b 82 18 13 00 00 48 85 c0 ?? ?? 83 b8 38 04 00 00 01 ?? ?? b0 01)
assert(MUDE,44 8b 87 28 05 00 00 33 db 41 3b f0 ?? ?? 0f b7 87 20 02 00 00 48)
assert(MUD2,48 8d 8f 08 05 00 00 44 0f b6 44 24 40 48 8d 54 24 40 e8 ?? ?? ??)
assert(MUD3,41 8b 87 28 05 00 00 03 44 24 40 89 44 24 44 e8 ?? ?? ?? ?? 39 85)
assert(MUD4,41 8b 85 28 05 00 00 49 8b cd 03 85 d8 00 00 00 89 85 c0 00 00 00)
assert(MOPR,48 8b 97 90 02 00 00 c1 e0 08 41 39 04 16 0f 8c ?? ?? ?? ?? 41 b0)
assert(MOSC,8b 98 20 02 00 00 e8 ?? ?? ?? ?? 8b cb 8b f8 e8 ?? ?? ?? ?? 2b f8 8b cf)
assert(MDHP,8b 87 68 05 00 00 ?? ?? 81 fd 3d 6a a5 6d ?? ?? 33 c0 ?? ?? 8b 81)
assert(MOUP,49 8b 87 08 01 00 00 41 c1 e5 08 44 89 6d 67 46 39 2c a0 0f 8c ??)
assert(MOPP,49 8b 87 f0 00 00 00 4a 8d 0c b5 00 00 00 00 41 c1 e5 08 48 89 4d 77)
assert(MODB,49 8b 87 20 01 00 00 c1 e1 08 89 4d 67 39 0c 03 0f 8c ?? ?? ?? ?? 49)
assert(MOPB,49 8b 87 38 01 00 00 4a 8d 34 b5 00 00 00 00 41 c1 e5 08 44 39 2c 06)
//=========================================
alloc(MyCode,4096,GameCore_XP1_FinalRelease.dll)
//=========================================
// Declaration section
label(_MonPlayerGold)
label(_BackMPG)
label(_MonUnitMP)
label(_BackMUM)
label(_MonUnitDamage)
label(_BackMUD)
label(_MonUnitDamage2)
label(_BackUD2)
label(_MonUnitDamage3)
label(_BackUD3)
label(_MonUnitDamage4)
label(_BackUD4)
label(_MonPlayerResearch)
label(_BackMPR)
label(_MonSelCity)
label(_BackMSC)
label(_MonDistrictHP)
label(_BackMDH)
label(_MonPlayerProd)
label(_BackMPP)
label(_MonDistrictBuild)
label(_BackMDB)
label(_MonProjectBuild)
label(_BackMPB)
label(_MonUnitProd)
label(_BackMUP)
label(iEnableMPG)
label(iEnableMMP)
label(iEnableFCA)
label(iEnableGMD)
label(iEnableMPR)
label(iEnableMPP)
label(iEnableMNW)
label(iEnableMDB)
label(iEnableMPB)
label(iEnableMPF)
label(iEnablePWO)
label(iEnableQLU)
label(iEnableCMP)
label(iEnableMDH)
label(iEnableMUP)
label(iEnableGPA)
label(iEnableMSR)
label(iPlayerID)
label(pPlayer)
label(pGold)
label(pUnit)
label(pResearch)
label(pCity)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMPG)
registersymbol(iEnableMMP)
registersymbol(iEnableFCA)
registersymbol(iEnableGMD)
registersymbol(iEnableMPR)
registersymbol(iEnableMPP)
registersymbol(iEnableMNW)
registersymbol(iEnableMDB)
registersymbol(iEnableMPB)
registersymbol(iEnableMPF)
registersymbol(iEnablePWO)
registersymbol(iEnableQLU)
registersymbol(iEnableCMP)
registersymbol(iEnableMDH)
registersymbol(iEnableMUP)
registersymbol(iEnableGPA)
registersymbol(iEnableMSR)
registersymbol(pGold)
registersymbol(pPlayer)
registersymbol(pUnit)
registersymbol(pResearch)
registersymbol(pCity)
//=========================================
MyCode:
//========================================= x229 xp1 #
// When GOLD is changed (Gold / Faith)
_MonPlayerGold:
push rbx
movzx eax,word ptr [rcx+40]
cmp eax,[iPlayerID]
jne _ExitMPG
mov rbx,[rcx+78]
test rbx,rbx
jz _ExitMPG
mov [pGold],rcx
mov [pPlayer],rbx
cmp dword ptr [iEnableMPG],0
je _MonPG00 // Jump if feature is disabled
mov eax,ctMGLD
shl eax,08
cmp eax,[rcx+000000A0]
js _MonPG00
mov [rcx+000000A0],eax
_MonPG00:
cmp dword ptr [iEnableMPF],0
je _ExitMPG // Jump if feature is disabled
mov rbx,[rbx+000008b0]
test rbx,rbx
jz _ExitMPG
mov eax,ctMFAI
shl eax,08
cmp [rbx+000000a8],eax
jns _ExitMPG
mov [rbx+000000a8],eax
_ExitMPG:
pop rbx
mov eax,[rcx+000000A0] // Original code (get Gold)
jmp _BackMPG // Back to main code
//========================================= x216 xp1 X
// When a unit is selected (move points/Act Again/Works/Points/religion)
_MonUnitMP:
push rcx
mov rax,[rdx+00001318] // Original code (get pMP2)
movzx ecx,[rdx+40]
cmp ecx,[iPlayerID]
jne _ExitMUM
mov [pUnit],rdx
test rax,rax
jz _ExitMUM
cmp dword ptr [iEnableMMP],0
je _MonUM00 // Jump if feature is disabled
mov ecx,ctMUMP
shl ecx,08
cmp ecx,[rax+00000148]
js _MonUM00
mov [rax+00000148],ecx
mov [rdx+00000608],ecx
_MonUM00:
cmp dword ptr [iEnableFCA],0
je _MonUM01 // Jump if feature is disabled
mov ecx,#1
cmp [rdx+00000640],ecx
jns _MonUM01
mov [rdx+00000640],ecx
_MonUM01:
cmp dword ptr [iEnableQLU],0
je _MonUM02 // Jump if feature is disabled
cmp dword ptr [rdx+000006b0],00
jne _MonUM02
mov ecx,[rdx+00000f50]
cmp ecx,#8
jns _MonUM02
mov ecx,[rdx+00000f48]
or ecx,00010101
mov [rdx+00000f48],ecx
_MonUM02:
cmp dword ptr [iEnableGPA],0
je _MonUM03 // Jump if feature is disabled
cmp dword ptr [rdx+00001008],00
je _MonUM03
mov ecx,#3
cmp [rdx+00001008],ecx
jns _MonUM03
mov [rdx+00001008],ecx
_MonUM03:
cmp dword ptr [iEnableMSR],0
je _MonUM04 // Jump if feature is disabled
cmp dword ptr [rdx+00001060],00
je _MonUM04
mov ecx,#3
cmp [rdx+00001060],ecx
jns _MonUM04
mov [rdx+00001060],ecx
_MonUM04:
cmp dword ptr [iEnableMNW],0
je _ExitMUM // Jump if feature is disabled
cmp dword ptr [rdx+000006b0],00
je _ExitMUM
mov ecx,#3
cmp [rdx+000006b0],ecx
jns _ExitMUM
mov [rdx+000006b0],ecx
_ExitMUM:
pop rcx
jmp _BackMUM // Back to main code
//========================================= 10038 OK
// During Battle
_MonUnitDamage:
cmp dword ptr [iEnableGMD],0
je _ExitMUD // Jump if feature is disabled
movzx r8d,[rdi+40]
cmp r8d,[iPlayerID]
jne _ExitMUD
xor r8d,r8d
mov [rdi+00000528],r8d
_ExitMUD:
mov r8d,[rdi+00000528] // Original code (get Damage)
jmp _BackMUD // Back to main code
//========================================= 10038 OK
// During Battle
_MonUnitDamage2:
cmp dword ptr [iEnableGMD],0
je _ExitUD2 // Jump if feature is disabled
movzx ecx,[rdi+40]
cmp ecx,[iPlayerID]
jne _ExitUD2
xor ecx,ecx
mov [rdi+00000528],ecx
mov [rsp+40],ecx
_ExitUD2:
lea rcx,[rdi+00000508] // Original code (get pBaseDamage)
jmp _BackUD2 // Back to main code
//========================================= x216 xp1
// During Battle (defender)
_MonUnitDamage3:
cmp dword ptr [iEnableGMD],0
je _ExitUD3 // Jump if feature is disabled
movzx ecx,[r15+40]
cmp ecx,[iPlayerID]
jne _ExitUD3
xor ecx,ecx
mov [r15+00000528],ecx
mov [rsp+40],ecx
_ExitUD3:
mov rcx,r13 // recover RCX
mov eax,[r15+00000528] // Original code (get Damage)
jmp _BackUD3 // Back to main code
//========================================= x216 xp1
// During Battle (attacker)
_MonUnitDamage4:
cmp dword ptr [iEnableGMD],0
je _ExitUD4 // Jump if feature is disabled
movzx ecx,[r13+40]
cmp ecx,[iPlayerID]
jne _ExitUD4
xor eax,eax
mov [r13+00000528],eax
mov [rbp+000000d8],eax
_ExitUD4:
mov eax,[r13+00000528] // Original code (get Damage)
jmp _BackUD4 // Back to main code
//========================================= 10038 OK
// During Turn
_MonPlayerResearch:
shl eax,08 // Original code
movzx edx,[rdi+40]
cmp edx,[iPlayerID]
jne _ExitMPR
mov [pResearch],rdi
cmp dword ptr [iEnableMPR],0
je _ExitMPR // Jump if feature is disabled
mov rdx,[rdi+00000290]
cmp eax,[r14+rdx]
js _ExitMPR
mov [r14+rdx],eax
_ExitMPR:
mov rdx,[rdi+00000290] // Original code (get pArray)
jmp _BackMPR // Back to main code
//========================================= x216 xp1 *
// When a city is selected
_MonSelCity:
mov [pCity],rax
movzx ebx,[rax+40]
cmp ebx,[iPlayerID]
jne _ExitMSC
cmp dword ptr [iEnableCMP],0
je _ExitMSC // Jump if feature is disabled
mov ebx,#2
cmp [rax+00000220],ebx
jns _ExitMSC
mov [rax+00000220],ebx
_ExitMSC:
mov ebx,[rax+00000220] // Original code (get Pop)
jmp _BackMSC // Back to main code
//========================================= x216 xp1 *
// When changing damage (during Attack or recovering)
_MonDistrictHP:
movzx eax,[rdi+40]
cmp eax,[iPlayerID]
jne _ExitMDH
cmp dword ptr [iEnableMDH],0
je _ExitMDH // Jump if feature is disabled
mov dword ptr [rdi+00000568],00
test esi,esi
js _ExitMDH
xor rsi,rsi
mov [rdi+00000568],esi
_ExitMDH:
mov eax,[rdi+00000568] // Original code (get damage)
jmp _BackMDH // Back to main code
//========================================= x229 *
// During Turn (Units)
_MonUnitProd:
shl r13d,08
mov rax,[r15+000000c8] // Get pCity
test rax,rax
jz _ExitMUP
movzx eax,[rax+40]
cmp eax,[iPlayerID]
jne _ExitMUP
cmp dword ptr [iEnableMUP],0
je _ExitMUP // Jump if feature is disabled
mov rax,[r15+00000108]
cmp [rax+r12*4],r13d
jns _ExitMUP
mov [rax+r12*4],r13d
_ExitMUP:
shr r13d,08
mov rax,[r15+00000108] // Original code (get pArray)
jmp _BackMUP // Back to main code
//========================================= x229 *
// During Turn (All prods or Wonders Only)
_MonPlayerProd:
shl r13d,08
mov rax,[r15+000000c8] // Get pCity
test rax,rax
jz _ExitMPP
movzx eax,[rax+40]
cmp eax,[iPlayerID]
jne _ExitMPP
cmp dword ptr [iEnableMPP],0
je _ExitMPP // Jump if feature is disabled
cmp dword ptr [iEnablePWO],0
je _MonPP00 // Jump if feature is disabled
mov eax,[r15+1c]
test eax,eax
js _ExitMPP
mov eax,[r15+24]
test eax,eax
js _ExitMPP
_MonPP00:
mov rax,[r15+000000F0]
lea rcx,[r14*4+00000000]
cmp r13d,[rcx+rax]
js _ExitMPP
mov [rcx+rax],r13d
_ExitMPP:
shr r13d,08
mov rax,[r15+000000F0] // Original code (get pArray)
jmp _BackMPP // Back to main code
//========================================= x229 *
// During Turn
_MonDistrictBuild:
shl ecx,08
mov rax,[r15+000000c8] // Get pCity
test rax,rax
jz _ExitMDB
movzx eax,[rax+40]
cmp eax,[iPlayerID]
jne _ExitMDB
cmp dword ptr [iEnableMDB],0
je _ExitMDB // Jump if feature is disabled
mov rax,[r15+00000120]
cmp ecx,[rax+rbx]
js _ExitMDB
mov [rax+rbx],ecx
_ExitMDB:
shr ecx,08
mov rax,[r15+00000120] // Original code (get pArray)
jmp _BackMDB // Back to main code
//========================================= x229 *
// During Turn
// RCX can be used
_MonProjectBuild:
shl r13d,08
mov rax,[r15+000000c8] // Get pCity
test rax,rax
jz _ExitMPB
movzx eax,[rax+40]
cmp eax,[iPlayerID]
jne _ExitMPB
cmp dword ptr [iEnableMPB],0
je _ExitMPB // Jump if feature is disabled
mov rax,[r15+00000138]
lea rsi,[r14*4+00000000]
cmp ecx,[rsi+rax]
js _ExitMPB
mov [rsi+rax],ecx
_ExitMPB:
shr r13d,08
mov rax,[r15+00000138] // Original code (get pArray)
jmp _BackMPB // Back to main code
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE6.7 Script by Recifense 180720'
//=========================================
// Variables
iEnableMPG:
dd 0
iEnableMMP:
dd 0
iEnableFCA:
dd 0
iEnableGMD:
dd 0
iEnableMPR:
dd 0
iEnableMPP:
dd 0
iEnableMNW:
dd 0
iEnableMDB:
dd 0
iEnableMPB:
dd 0
iEnableMPF:
dd 0
iEnablePWO:
dd 0
iEnableQLU:
dd 0
iEnableCMP:
dd 0
iEnableMDH:
dd 0
iEnableMUP:
dd 0
iEnableGPA:
dd 0
iEnableMSR:
dd 0
iPlayerID:
dd 0
pGold:
dq 0
pPlayer:
dq 0
pUnit:
dq 0
pResearch:
dq 0
pCity:
dq 0
//=========================================
// Hacking Points
MOPG:
jmp _MonPlayerGold
nop
_BackMPG:
MUMP:
jmp _MonUnitMP
nop
nop
_BackMUM:
MUDE:
jmp _MonUnitDamage
nop
nop
_BackMUD:
MUD2:
jmp _MonUnitDamage2
nop
nop
_BackUD2:
MUD3:
jmp _MonUnitDamage3
nop
nop
_BackUD3:
MUD4:
jmp _MonUnitDamage4
nop
nop
_BackUD4:
MOPR:
jmp _MonPlayerResearch
db 90 90 90 90 90
_BackMPR:
MOSC:
jmp _MonSelCity
nop
_BackMSC:
MDHP:
jmp _MonDistrictHP
nop
_BackMDH:
MOUP:
jmp _MonUnitProd
nop
nop
_BackMUP:
MOPP:
jmp _MonPlayerProd
nop
nop
_BackMPP:
MODB:
jmp _MonDistrictBuild
nop
nop
_BackMDB:
MOPB:
jmp _MonProjectBuild
nop
nop
_BackMPB:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOPG:
// mov eax,[rcx+000000A0]
db 8b 81 a0 00 00 00
MUMP:
// mov rax,[rdx+00001318]
db 48 8b 82 18 13 00 00
MUDE:
// mov r8d,[rdi+00000528]
db 44 8b 87 28 05 00 00
MUD2:
// lea rcx,[rdi+00000508]
db 48 8d 8f 08 05 00 00
MUD3:
// mov eax,[r15+00000528]
db 41 8b 87 28 05 00 00
MUD4:
// mov eax,[r13+00000528]
db 41 8b 85 28 05 00 00
MOPR:
// mov rdx,[rdi+00000290]
// shl eax,08
db 48 8b 97 90 02 00 00 c1 e0 08
MOSC:
// mov ebx,[rax+00000220]
db 8b 98 20 02 00 00
MDHP:
// mov eax,[rdi+00000568]
db 8b 87 68 05 00 00
MOUP:
// mov rax,[r15+00000108]
db 49 8b 87 08 01 00 00
MOPP:
// mov rax,[r15+000000F0]
db 49 8b 87 f0 00 00 00
MODB:
// mov rax,[r15+00000120]
db 49 8b 87 20 01 00 00
MOPB:
// mov rax,[r15+00000138]
db 49 8b 87 38 01 00 00
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMPG)
unregistersymbol(iEnableMMP)
unregistersymbol(iEnableFCA)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMPR)
unregistersymbol(iEnableMPP)
unregistersymbol(iEnableMNW)
unregistersymbol(iEnableMDB)
unregistersymbol(iEnableMPB)
unregistersymbol(iEnableMPF)
unregistersymbol(iEnablePWO)
unregistersymbol(iEnableQLU)
unregistersymbol(iEnableCMP)
unregistersymbol(iEnableMDH)
unregistersymbol(iEnableMUP)
unregistersymbol(iEnableGPA)
unregistersymbol(iEnableMSR)
unregistersymbol(pGold)
unregistersymbol(pPlayer)
unregistersymbol(pUnit)
unregistersymbol(pResearch)
unregistersymbol(pCity)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
138
"[X] <==Minimum Gold"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPG",1)
getAddressList().getMemoryRecordByID(138).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPG",0)
getAddressList().getMemoryRecordByID(138).Color=0x00c08000
{$ASM}
139
"[X] <==Move Unlimited Times (on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMP",1)
getAddressList().getMemoryRecordByID(139).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMP",0)
getAddressList().getMemoryRecordByID(139).Color=0x00c08000
{$ASM}
140
"[X] <==Can Act Again (on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableFCA",1)
getAddressList().getMemoryRecordByID(140).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableFCA",0)
getAddressList().getMemoryRecordByID(140).Color=0x00c08000
{$ASM}
141
"[X] <==God Mode"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMD",1)
getAddressList().getMemoryRecordByID(141).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
getAddressList().getMemoryRecordByID(141).Color=0x00c08000
{$ASM}
142
"[X] <==Research in 1 Turn"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPR",1)
getAddressList().getMemoryRecordByID(142).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPR",0)
getAddressList().getMemoryRecordByID(142).Color=0x00c08000
{$ASM}
143
"[X] <==Construction in 1 Turn (city)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPP",1)
getAddressList().getMemoryRecordByID(143).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPP",0)
getAddressList().getMemoryRecordByID(143).Color=0x00c08000
{$ASM}
145
"[X] <==Only Wonders"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnablePWO",1)
getAddressList().getMemoryRecordByID(145).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnablePWO",0)
getAddressList().getMemoryRecordByID(145).Color=0x00c08000
{$ASM}
144
"[X] <==Unlimited Constructions for Builders (on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMNW",1)
getAddressList().getMemoryRecordByID(144).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMNW",0)
getAddressList().getMemoryRecordByID(144).Color=0x00c08000
{$ASM}
146
"[X] <==District in 1 Turn"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMDB",1)
getAddressList().getMemoryRecordByID(146).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMDB",0)
getAddressList().getMemoryRecordByID(146).Color=0x00c08000
{$ASM}
147
"[X] <==Project in 1 Turn"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPB",1)
getAddressList().getMemoryRecordByID(147).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPB",0)
getAddressList().getMemoryRecordByID(147).Color=0x00c08000
{$ASM}
148
"[X] <==Minimum Faith"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPF",1)
getAddressList().getMemoryRecordByID(148).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPF",0)
getAddressList().getMemoryRecordByID(148).Color=0x00c08000
{$ASM}
149
"[X] <==Units Quick Level Up (on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableQLU",1)
getAddressList().getMemoryRecordByID(149).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableQLU",0)
getAddressList().getMemoryRecordByID(149).Color=0x00c08000
{$ASM}
230
"[X] <==Great People more than 1 Action (on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGPA",1)
getAddressList().getMemoryRecordByID(230).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGPA",0)
getAddressList().getMemoryRecordByID(230).Color=0x00c08000
{$ASM}
150
"[X] <==City Minimum Population ((on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableCMP",1)
getAddressList().getMemoryRecordByID(150).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableCMP",0)
getAddressList().getMemoryRecordByID(150).Color=0x00c08000
{$ASM}
151
"[X] <==God Mode for Garrison ( City)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMDH",1)
getAddressList().getMemoryRecordByID(151).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMDH",0)
getAddressList().getMemoryRecordByID(151).Color=0x00c08000
{$ASM}
152
"[X] <==Unit Production in 1 Turn ( City)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMUP",1)
getAddressList().getMemoryRecordByID(152).Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMUP",0)
getAddressList().getMemoryRecordByID(152).Color=0x00c08000
{$ASM}
231
"[X] <==Unlimited Spreads religious Units (on selecting)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMSR",1)
getAddressList().getMemoryRecordByID(231).Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMSR",0)
getAddressList().getMemoryRecordByID(231).Color=0x00c08000
{$ASM}
229
"[X] <==Civics advance in 1 Turn (By Hekmat)(adapted)"
FF0000
Auto Assembler Script
{ Game : CivilizationVI.exe
Version:
Date : 2017-01-14
Author : Hekmat
This script does blah blah blah
}
[ENABLE]
aobscanmodule(civic,GameCore_XP1_FinalRelease.dll,C1 E0 08 41 39 04 17) // should be unique
alloc(newmem,$1000,"GameCore_XP1_FinalRelease.dll")
label(code)
label(return)
newmem:
shl eax,08
cmp byte ptr [rsi+40],00
jne code
mov [rdx+r15],eax
code:
cmp [rdx+r15],eax
jmp return
civic:
jmp newmem
nop
nop
return:
registersymbol(civic)
[DISABLE]
civic:
db C1 E0 08 41 39 04 17
unregistersymbol(civic)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameCore_Base_FinalRelease.dll"+133E65
"GameCore_Base_FinalRelease.dll"+133E3B: 48 8D 8E C0 09 00 00 - lea rcx,[rsi+000009C0]
"GameCore_Base_FinalRelease.dll"+133E42: 2B D8 - sub ebx,eax
"GameCore_Base_FinalRelease.dll"+133E44: 48 8D 55 30 - lea rdx,[rbp+30]
"GameCore_Base_FinalRelease.dll"+133E48: 89 5D 30 - mov [rbp+30],ebx
"GameCore_Base_FinalRelease.dll"+133E4B: E8 50 4B 00 00 - call GameCore_Base_FinalRelease.dll+1389A0
"GameCore_Base_FinalRelease.dll"+133E50: 41 8B D6 - mov edx,r14d
"GameCore_Base_FinalRelease.dll"+133E53: 48 8B CE - mov rcx,rsi
"GameCore_Base_FinalRelease.dll"+133E56: 40 32 FF - xor dil,dil
"GameCore_Base_FinalRelease.dll"+133E59: E8 12 A3 FF FF - call GameCore_Base_FinalRelease.dll+12E170
"GameCore_Base_FinalRelease.dll"+133E5E: 48 8B 96 E0 05 00 00 - mov rdx,[rsi+000005E0]
// ---------- INJECTING HERE ----------
"GameCore_Base_FinalRelease.dll"+133E65: C1 E0 08 - shl eax,08
"GameCore_Base_FinalRelease.dll"+133E68: 41 39 04 17 - cmp [r15+rdx],eax
// ---------- DONE INJECTING ----------
"GameCore_Base_FinalRelease.dll"+133E6C: 0F 8C E5 00 00 00 - jl GameCore_Base_FinalRelease.dll+133F57
"GameCore_Base_FinalRelease.dll"+133E72: 41 B0 01 - mov r8l,01
"GameCore_Base_FinalRelease.dll"+133E75: 41 8B D6 - mov edx,r14d
"GameCore_Base_FinalRelease.dll"+133E78: 48 8B CE - mov rcx,rsi
"GameCore_Base_FinalRelease.dll"+133E7B: E8 80 FC FF FF - call GameCore_Base_FinalRelease.dll+133B00
"GameCore_Base_FinalRelease.dll"+133E80: 48 8D 8E C0 05 00 00 - lea rcx,[rsi+000005C0]
"GameCore_Base_FinalRelease.dll"+133E87: E8 64 13 26 00 - call GameCore_Base_FinalRelease.dll+3951F0
"GameCore_Base_FinalRelease.dll"+133E8C: 33 DB - xor ebx,ebx
"GameCore_Base_FinalRelease.dll"+133E8E: C7 45 F0 64 74 66 87 - mov [rbp-10],87667464
"GameCore_Base_FinalRelease.dll"+133E95: 89 5D F4 - mov [rbp-0C],ebx
}
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20180720
===========================================
Game Title : Civilization VI - Rise and Fall
Game Version : 1.0.0.262 (362541)
Game Sponsor : Fennix102 + daipm (XP1)
Process Name : CivilizationVI.exe
Relevant Info : 64bits/TBS/New Engine
Script Version: 2.8
CE Version : 6.7
Release date : 20-Jul-2018
Author : Recifense
History:
22-Oct-2016: Preliminary Release 1 (7 features)
24-Oct-2016: Preliminary Release 2 (6 more features)
25-Oct-2016: First Release
02-Nov-2016: Added unit prod in 1 turn (s2.0)
19-Nov-2016: Release for version 1.0.0.38. (s2.1)
21-Dec-2016: Release for version 1.0.0.56.
22-Dec-2016: Fix for Faith (s2.2).
25-Feb-2017: Release for version 1.0.0.110.
28-Mar-2017: Release for version 1.0.0.129.
29-Jul-2017: Release for version 1.0.0.167.
02-Aug-2017: Fix for "Build District in 1 turn" (s2.4)
15-Aug-2017: Fix for "Unit Production in 1 Turn" + GPA (s2.5)
19-Oct-2017: Release for version 1.0.0.194.
21-Oct-2017: Fix for Faith and Great People Action(s2.6).
08-Feb-2018: Release for version 1.0.0.216. + Fix for religious Units (s2.7)
09-Feb-2018: Release for version 1.0.0.216 - XP1
12-Feb-2018: Fix Construction in 1 Turn (city) => Only Wonders (s2.8)
13-Feb-2018: Release for version 1.0.0.220 - XP1
11-Mar-2018: Release for version 1.0.0.229 - XP1
11-May-2018: Release for version 1.0.0.259 - XP1
20-Jul-2018: Release for version 1.0.0.262 - XP1
Features:
- Minimum Gold [1]
- Move unlimited Times [2]
- Unic Can Act Again [3]
- God Mode [4]
- Research in 1 turn [5]
- Construction in 1 turn: [6]
- Only Wonders [7]
- Unlimited Works for Builders [8]
- Build District in 1 turn [9]
- Build Project in 1 turn [A]
- City Minimum Pop [B]
- Minimum Faith [C]
- City Garrison HP [D]
- Unit Production in 1 turn [E]
- Great People Action (new) [F]
- Unlimited Spreads for Religious Units (new) [G]
- Some Pointers
===========================================
[1] It will not go under 67000;
[2] Everytime you select a Unit, it will be ready to move;
[3] Everytime you select a Unit, it will be ready to act;
[4] That's it. A unit may dissapear, but it will be alive;
[5] A research per turn;
[6] For every city (player's);
[7] Only wonders will be produced in 1 turn;
[8] No limit for builders;
[9] That's it;
[A] That's it;
[B] The minimum population is 2;
[C] It will not go under 6700;
[D] God Mode for City;
[E] For every city (player's);
[F] Great People Actions is set to 3 on selection;
[G] No limit for Relegious Units;
===========================================
[USAGE]
1) Run CE67;
2) Run Game;
3) Start a match from the beginning or loading it;
4) Load the game process "CivilizationVI.exe" or "CivilizationVI_DX12.exe" in CE;
5) Load this table and activate the main script;
5) Now Activate the script of each cheat you want to use;
6) Game On;
[NOTE} When already playing a match, you decide to start another game or load a savegame, you should deactivate the script first and follow the steps from step 3 on. The reason is that the game is a DLL and may be unloaded and loaded again during this process.
===========================================
HOTKEYS:
None defined
===========================================
[IMPORTANT]
Save your game before unsing the cheats.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
BIG THANKS to Fennix102 for providing the game.
===========================================
Have fun!
https://www.patreon.com/posts/sid-meiers-vi-1-13507292