5
"[X] <== Hearts of Iron IV x64 v1.9.0 (ab9c) Steam Script v8.2"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Hearts of Iron IV (x64)
Game Version : 1.9.0 (ab9c) (La Resistance)
Game Sponsor : TheSaviour + PF (DLCs)
Process Name : hoit4.exe
Relevant Info : 64bits/RTS/New Engine
Script Version: 8.2 (for x64)
CE Version : 7.0
Release date : 09-Mar-2020
Author : Recifense
History:
07-Jun-2019: First Release for 64bits (v1.7.0)(s7.0)(CE68)
14-Jun-2019: Fix for some crashes + improve time to load the table(s7.1)
23-Jun-2019: Fix for some Weak Foe (Ships) (s7.2)
23-Jun-2019: Release for v1.7.1-f8d7 (Beta) (s7.3)
24-Jun-2019: Release for v1.7.1-87c8 (Beta) (s7.4)
03-Sep-2019: Fix for GM (s7.5)(CE70)
22-Sep-2019: A script patch due to CE70 issue (s7.6)
13-Nov-2019: Release for v1.8.0-3241 (s7.7)
14-Nov-2019: Release for v1.8.1-aa59 (s7.8)
01-Dec-2019: Fix for identifying the player (s7.9)
19-Dec-2019: Fix GM for ships (s7.10)
07-Feb-2020: Release for v1.8.2-ce2f (s7.11)
27-Feb-2020: Release for v1.9.0-ab9c + new features (s8.0)
02-Mar-2020: Fix Manpower (s8.1)
09-Mar-2020: Added 4 new features(s8.2)
Features:
- Minimum Political Points (700)
- Minimum Natural Resources (250)
- Construction in 1 day
- Research in 1 day
- Production in 1 day
- Move to adjacent region in 1 hour
- God Mode (Army/Fleet)
- Minimum Manpower per State (7000)
- Fill up player squadrons
- Weak Foe (s4.0)
- Minimum Base Stability (80%)
- Minimum Base War Support (50%)
- Finish Focus in 1 day
- Refitting in 1 day
- Minimum Army/Navy/Air XP (268)
- Minimum Command Points (68)
- Agency Construction in 1 day (new) (s80)
- Agency Upgrade in 1 day (new) (s80)
- Operative Recruitment in 1 day (new) (s80)
- Cipher Decrypting in 1 Day (new) (s80)
- Deployment in 1 Day (new) (s82)
- Network Creation in 1 Days (new) (s82)
- Intel Operation in 1 Day (new) (s82)
- Each Operation Phase in 3 Days (new) (s82)
- Some Pointers
===========================================
}
//{$STRICT}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 7.0) then
ShowMessage('Warning. CE version should be 7.0 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif (string.upper(process) ~= string.upper("hoi4.exe")) then
ShowMessage('Warning. Expected Process = hoi4.exe')
end
{$asm}
//=========================================
// Checking if CE mono features are ON
{$lua}
-- monoAA_USEMONO(process,false)
if waitForPDB then --this way older CE versions are unaffected (By Dark Byte)
waitForPDB()
end
{$asm}
//=========================================
// Definitions
define(LUDO,"hoi4.exe")
{
define(MOHP,"hoi4.exe"+00aa816d) //===X#
define(MOCP,"hoi4.exe"+00796b09) //====#
define(MOPP,"hoi4.exe"+0079727c) //=====
define(MPP1,"hoi4.exe"+00797457) //=====
define(MPP2,"hoi4.exe"+009b656b) //=====
define(MORP,"hoi4.exe"+006bef37) //====#
define(MOFP,"hoi4.exe"+00130e9c) //====#
define(MOSF,"hoi4.exe"+005285e4) //==#=#
define(MOAM,"hoi4.exe"+00658574) //=====
define(MAM1,"hoi4.exe"+00658343) //=====
define(MOPS,"hoi4.exe"+009b1650) //====#
define(GDMD,"hoi4.exe"+00672dda) //====#
define(GMDS,"hoi4.exe"+00773eed) //====#
define(GDS2,"hoi4.exe"+0076bf98) //====#
}
define(MOSR,"hoi4.exe"+00adaf20) //======
define(MOMR,"hoi4.exe"+0041466b) //=====#
define(MOMM,"hoi4.exe"+006a4b00) //=====# 2 1
// La Resistance DLC
define(MOAC,"hoi4.exe"+0058710e) //-----N
define(MOAU,"hoi4.exe"+005871a2) //-----N
define(MOOR,"hoi4.exe"+00587231) //-----N
define(MODP,"hoi4.exe"+00a28d6c) //-----N
define(MONP,"hoi4.exe"+00882f5b) //-----N
define(MOOP,"hoi4.exe"+0086be43) //-----N
define(MOPH,"hoi4.exe"+00977647) //-----N
// General
define(MUDP,"hoi4.exe"+00a33eee) //-----N
//=========================================
// Constants used in the script (that can be changed)
define(ctCE70,(float)7.0)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
AOBScanModule(MOHP,$process,41 8b 97 bc 01 00 00 48 8d 4d d8 e8 ?? ?? ?? ?? 48 8b d8 48 8b 4f) //
AOBScanModule(MOCP,$process,01 4b 38 83 cd ff 4c 89 7c 24 30 49 bd CF F7 53 E3 A5 9B C4 20 48) //
AOBScanModule(MOPP,$process,45 01 4e 38 49 63 46 38 45 85 c0 ?? ?? 8d 88 73 93 18 00 81 f9 0d)
AOBScanModule(MPP1,$process,01 47 38 48 63 47 38 45 85 c0 ?? ?? 83 c9 ff ?? ?? 8d 88 73 93 18)
AOBScanModule(MPP2,$process,01 57 38 8b 47 30 39 47 38 ?? ?? 29 47 38 48 8d 8f 98 00 00 00 48)
AOBScanModule(MORP,$process,01 83 14 01 00 00 48 83 c4 20 5b c3 8b 0d ?? ?? ?? ?? 48 8d 54 24) //
AOBScanModule(MOFP,$process,8b 88 e8 03 00 00 39 4b 28 ?? ?? 48 8b 53 10 48 8b 05 ?? ?? ?? ??) //
AOBScanModule(MOSF,$process,48 8b 80 80 01 00 00 4c 8d 45 68 8b 56 0c 8b 88 94 00 00 00 89 4d) //
AOBScanModule(MOAM,$process,41 39 9f c0 01 00 00 0f 8c ?? ?? ?? ?? 41 39 bf a8 00 00 00 ?? ??)
AOBScanModule(MAM1,$process,41 39 9f c0 01 00 00 ?? ?? 41 89 9f c0 01 00 00 80 3d ?? ?? ?? ??)
AOBScanModule(MOPS,$process,48 8b 0a 48 8d 52 08 49 ff c0 44 03 49 68 4c 3b c0 ?? ?? 41 8b c1) //
AOBScanModule(GDMD,$process,57 48 83 ec 48 48 8b 81 a8 02 00 00 41 0f b6 f9 48 8b d9 48 85 c0) //
AOBScanModule(GMDS,$process,89 b5 28 03 00 00 e8 ?? ?? ?? ?? 8b 85 9c 02 00 00 f3 0f 2c c8 3b) //
AOBScanModule(GDS2,$process,44 89 83 2c 03 00 00 8b 05 ?? ?? ?? ?? 44 3b c0 ?? ?? 48 8b 74 24)
assert(MOSR,48 8b 96 18 01 00 00 48 8b 8b 78 01 00 00 48 8b 14 fa 48 8b 0c f9)
assert(MOMR,8b 43 28 48 8b 5c 24 30 4f 8d 04 40 49 c1 e0 04 4c 03 47 10 41 01)
assert(MOMM,48 8b 8e f8 03 00 00 48 8b 0c d9 e8 ?? ?? ?? ?? 48 8b c8 e8 ?? ??)
// La Resistance DLC
assert(MOAC,39 83 b4 00 00 00 ?? ?? 40 38 3d ?? ?? ?? ?? 0f 84 ?? ?? ?? ?? 48) //N
assert(MOAU,39 8b b4 00 00 00 7d ?? 40 38 3d ?? ?? ?? ?? 74 ?? 48 8b 05 ?? ??) //N
assert(MOOR,89 83 d8 00 00 00 3b c1 ?? ?? 8d 42 01 89 bb d8 00 00 00 89 83 d4) //N
assert(MODP,8b 4b 1c 3b c8 ?? ?? 89 43 1c ?? ?? 3b ca ?? ?? 89 53 1c 39 53 1c) //N
assert(MONP,49 8B 4E 10 89 44 29 20 48 FF C3 48 83 C5 38 48 3B DE 0F 85 ?? ??) //N
assert(MOOP,8B 43 30 3B 43 34 ?? ?? 49 8B 4E 10 E8 ?? ?? ?? ?? 48 8B C8 48 8D) //N
assert(MOPH,83 B9 80 00 00 00 00 ?? ?? 8B 05 ?? ?? ?? ?? 89 45 FF 8B 05 ?? ??) //N
assert(MUDP,8B 47 5C 39 47 58 0F 8D ?? ?? ?? ?? 80 3D ?? ?? ?? ?? 00 48 8B 87) //N
//=========================================
alloc(MyCode,4096,$process)
//=========================================
// Declaration section
label(_MonHumanPlayer)
label(_BackMHP)
label(_MonConstProg)
label(_BackMCP)
label(_MonProdProg)
label(_BackMPP)
label(_MonProdProg1)
label(_BackPP1)
label(_MonProdProg2)
label(_BackPP2)
label(_MonResearchProg)
label(_BackMRP)
label(_MonFocusProg)
label(_BackMFP)
label(_MonSelArmyFleet)
label(_BackMSF)
label(_MonArmyFleetMove)
label(_BackMAM)
label(_MonArmyFleetMove1)
label(_BackAM1)
label(_MonPlayerSquadrons)
label(_BackMPS)
label(_GodMode)
label(_BackGMD)
label(_GodModeS)
label(_BackGMS)
label(_GodModeS2)
label(_BackGS2)
label(_MonSelRegion)
label(_BackMSR)
label(_MonMinResource)
label(_BackMMR)
label(_MonMinMP)
label(_BackMMM)
label(_MonAgencyConst)
label(_BackMAC)
label(_MonAgencyUpg)
label(_BackMAU)
label(_MonOperRec)
label(_BackMOR)
label(_MonDecryptProg)
label(_BackMDP)
label(_MonUnitDeployProg)
label(_BackMUP)
label(_MonNetProg)
label(_BackMNP)
label(_MonOperProg)
label(_BackMOP)
label(_MonOperPhase)
label(_BackOPH)
label(iEnableMPP)
label(iEnableMMR)
label(iEnableMCP)
label(iEnableMRP)
label(iEnablePNP)
label(iEnableMAM)
label(iEnableGMD)
label(iEnableMMM)
label(iEnableMPS)
label(iEnableMWF)
label(iEnableMSY)
label(iEnableMWS)
label(iEnableMFP)
label(iEnableMQR)
label(iEnableMPX)
label(iEnableMPC)
label(iEnableMAC)
label(iEnableMAU)
label(iEnableMOR)
label(iEnableMDP)
label(iEnableMUP)
label(iEnableMNP)
label(iEnableMOP)
label(iEnableOPH)
label(pPlayer)
label(pPlayer1)
label(pPlayer2)
label(pArmyFleet)
label(pRegion)
label(iPlayerID)
label(aLast)
label(pRAX)
label(pRBX)
label(pRCX)
label(pRDX)
label(pRDI)
label(pRSI)
label(pRBP)
label(_MonHP00)
label(_MonHP01)
label(_MonHP02)
label(_MonHP03)
label(_MonHPN3)
label(_MonHPA3)
label(_MonHP04)
label(_ExitMHP)
label(_ExitMCP)
label(_ExitMPP)
label(_ExitPP1)
label(_ExitPP2)
label(_ExitMRP)
label(_ExitMFP)
label(_ExitMSF)
label(_ExitMAM)
label(_ExitAM1)
label(_ExitMPS)
label(_GodMD00)
label(_ExitGMD)
label(_GodMDS0)
label(_GodMDS1)
label(_ExitGMS)
label(_ExitGS2)
label(_ExitMSR)
label(_ExitMMR)
label(_MonMM00)
label(_ExitMMM)
label(_ExitMAC)
label(_ExitMAU)
label(_ExitMOR)
label(iCount)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMPP)
registersymbol(iEnableMMR)
registersymbol(iEnableMCP)
registersymbol(iEnableMRP)
registersymbol(iEnablePNP)
registersymbol(iEnableMAM)
registersymbol(iEnableGMD)
registersymbol(iEnableMMM)
registersymbol(iEnableMPS)
registersymbol(iEnableMWF)
registersymbol(iEnableMSY)
registersymbol(iEnableMWS)
registersymbol(iEnableMFP)
registersymbol(iEnableMQR)
registersymbol(iEnableMPX)
registersymbol(iEnableMPC)
registersymbol(iEnableMAC)
registersymbol(iEnableMAU)
registersymbol(iEnableMOR)
registersymbol(iEnableMDP)
registersymbol(iEnableMUP)
registersymbol(iEnableMNP)
registersymbol(iEnableMOP)
registersymbol(iEnableOPH)
registersymbol(iPlayerID)
registersymbol(pPlayer)
registersymbol(pPlayer1)
registersymbol(pPlayer2)
registersymbol(pArmyFleet)
registersymbol(pRegion)
registersymbol(aLast)
registersymbol(pRAX)
registersymbol(pRBX)
registersymbol(pRCX)
registersymbol(pRDX)
registersymbol(pRDI)
registersymbol(pRSI)
registersymbol(pRBP)
registersymbol(MOHP)
registersymbol(MOCP)
registersymbol(MOPP)
registersymbol(MPP1)
registersymbol(MPP2)
registersymbol(MORP)
registersymbol(MOFP)
registersymbol(MOSF)
registersymbol(MOAM)
registersymbol(MAM1)
registersymbol(MOPS)
registersymbol(GDMD)
registersymbol(GMDS)
registersymbol(GDS2)
registersymbol(iCount)
//=========================================
MyCode:
//========================================= 1.9.0 *
// - Find out the Human Player
// - Minimum Political Points
// - Minimum Command Points
// - Minimum Army/Navy/Air XP
// RCX is safe
_MonHumanPlayer:
mov dword ptr [aLast],'_MHP'
cmp r15,[pPlayer]
je _MonHPZZ
inc dword ptr [iCount]
_MonHPZZ:
mov [pPlayer],r15
mov rcx,[r15+000007b0]
mov [pPlayer1],rcx
mov rcx,[r15+000007a8]
mov [pPlayer2],rcx
mov ecx,[r15+18]
and ecx,00ffffff
mov [iPlayerID],ecx
cmp dword ptr [iEnableMPP],0 // Political Power
je _MonHP00 // Jump if feature is disabled
mov ecx,#700000
mov rdx,[r15+000007d8]
cmp [rdx+000000c8],ecx
jns _MonHP00
mov [rdx+000000c8],ecx
_MonHP00:
cmp dword ptr [iEnableMSY],0 // National Unity
je _MonHP01 // Jump if feature is disabled
mov ecx,#800
cmp [r15+000008f8],ecx
jns _MonHP01
mov [r15+000008f8],ecx
_MonHP01:
cmp dword ptr [iEnableMWS],0 // War Support
je _MonHP02 // Jump if feature is disabled
mov ecx,#500
cmp [r15+000008fc],ecx
jns _MonHP02
mov [r15+000008fc],ecx
_MonHP02:
cmp dword ptr [iEnableMPC],0 // Command Power
je _MonHP03 // Jump if feature is disabled
mov ecx,#70000
cmp [r15+000001bc],ecx
jns _MonHP03
mov [r15+000001bc],ecx
_MonHP03:
cmp dword ptr [iEnableMPX],0 // XPs
je _MonHP04 // Jump if feature is disabled
mov rcx,#8781824 // 8781824 = 268 x 32K
cmp [r15+000001d8],rcx
jns _MonHPN3
mov [r15+000001d8],rcx
_MonHPN3:
cmp [r15+000001e8],rcx
jns _MonHPA3
mov [r15+000001e8],rcx
_MonHPA3:
cmp [r15+000001f8],rcx
jns _MonHP04
mov [r15+000001f8],rcx
_MonHP04:
_ExitMHP:
mov edx,[r15+000001BC] // Original code
jmp _BackMHP // Back to main code
//========================================= 1.9.0 #
// - Construction Progress (when day changes)
_MonConstProg:
mov dword ptr [aLast],'_MCP'
push rax
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
mov rax,[rbx+28]
cmp rax,[pPlayer1]
jne _ExitMCP
mov eax,[rbx+30]
cmp [rbx+38],eax
jns _ExitMCP
mov [rbx+38],eax
_ExitMCP:
pop rax
add [rbx+38],ecx // Original code (upd prog)
or ebp,-01 // Original code
jmp _BackMCP // Back to main code
//========================================= 1.9.0 ok
// - Production Progress (airplanes, weapons, etc) (when day changes)
_MonProdProg:
mov dword ptr [aLast],'_MPP'
cmp dword ptr [iEnablePNP],0
je _ExitMPP // Jump if feature is disabled
mov rax,[r14+28]
cmp rax,[pPlayer1]
jne _ExitMPP
mov eax,[r14+30]
add eax,ebx
cmp [r14+38],eax
jns _ExitMPP
mov [r14+38],eax
_ExitMPP:
add [r14+38],r9d // Original code (upd prog)
movsxd rax,dword ptr [r14+38] // Original code
jmp _BackMPP // Back to main code
//========================================= 1.9.0 ok
// - Production Progress (ship) (when day changes)
_MonProdProg1:
mov dword ptr [aLast],'_PP1'
push rbx
cmp dword ptr [iEnablePNP],0
je _ExitPP1 // Jump if feature is disabled
mov rbx,[rdi+28]
cmp rbx,[pPlayer1]
jne _ExitPP1
mov ebx,[rdi+30]
add ebx,ebx
cmp [rdi+38],ebx
jns _ExitPP1
mov [rdi+38],ebx
_ExitPP1:
pop rbx
add [rdi+38],eax // Original code (upd prog)
movsxd rax,dword ptr [rdi+38] // Original code
jmp _BackPP1 // Back to main code
//========================================= 1.9.0 ok
// - Refitting Progress (when day changes)
_MonProdProg2:
mov dword ptr [aLast],'_PP2'
cmp dword ptr [iEnableMQR],0
je _ExitPP2 // Jump if feature is disabled
mov rax,[rdi+28]
cmp rax,[pPlayer1]
jne _ExitPP2
mov eax,[rdi+30]
cmp [rdi+38],eax
jns _ExitPP2
mov [rdi+38],eax
_ExitPP2:
add [rdi+38],edx // Original code(upd prog)
mov eax,[rdi+30] // Original code
jmp _BackPP2 // Back to main code
//========================================= 1.9.0 *
// - Research Progress (when day changes)
_MonResearchProg:
mov dword ptr [aLast],'_MRP'
push rcx
cmp dword ptr [iEnableMRP],0
je _ExitMRP // Jump if feature is disabled
mov rcx,[rbx+000000c8]
cmp rcx,[pPlayer2]
jne _ExitMRP
mov rcx,[rbx+000000d0]
test rcx,rcx
jz _ExitMRP
mov ecx,[rcx+00000330]
add ecx,ecx
imul ecx,ecx,64
test ecx,ecx
js _ExitMRP
cmp [rbx+00000114],ecx
jns _ExitMRP
mov [rbx+00000114],ecx
_ExitMRP:
pop rcx
add [rbx+00000114],eax // Original code (upd prog)
jmp _BackMRP // Back to main code
//========================================= 1.9.0 *
// - Finish focus in a day (when day changes)
_MonFocusProg:
mov dword ptr [aLast],'_MFP'
cmp dword ptr [iEnableMFP],0
je _ExitMFP // Jump if feature is disabled
mov rcx,[rbx+10]
cmp rcx,[pPlayer]
jne _ExitMFP
mov ecx,[rax+000003E8]
cmp [rbx+28],ecx
jns _ExitMFP
mov [rbx+28],ecx
_ExitMFP:
mov ecx,[rax+000003E8] // Original code (get val)
jmp _BackMFP // Back to main code
//========================================= 1.9.0 #
// - When Army/Fleet is selected
_MonSelArmyFleet:
mov [pArmyFleet],rax
_ExitMSF:
mov rax,[rax+00000180] // Original code (get pLocation)
jmp _BackMSF // Back to main code
//========================================= 1.9.0 ok
// - Movement in 1 hour (When Army/Fleet is moving)
_MonArmyFleetMove:
mov dword ptr [aLast],'_MFM'
push rax
cmp dword ptr [iEnableMAM],0
je _ExitMAM // Jump if feature is disabled
mov eax,[iPlayerID]
cmp eax,[r15+00000168]
jne _ExitMAM
cmp [r15+000001c0],ebx
jns _ExitMAM
mov [r15+000001c0],ebx
_ExitMAM:
pop rax
cmp [r15+000001C0],ebx // Original code (chk Move)
jmp _BackMAM // Back to main code
//========================================= 1.9.0 ok
// - Movement in 1 hour (When Army/Fleet is moving during battle)
_MonArmyFleetMove1:
mov dword ptr [aLast],'_FM1'
push rax
cmp dword ptr [iEnableMAM],0
je _ExitAM1 // Jump if feature is disabled
mov eax,[iPlayerID]
cmp eax,[r15+00000168]
jne _ExitAM1
cmp [r15+000001c0],ebx
jns _ExitAM1
mov [r15+000001c0],ebx
_ExitAM1:
pop rax
cmp [r15+000001C0],ebx // Original code (chk Move)
jmp _BackAM1 // Back to main code
//========================================= 1.9.0 #
// - All the time
_MonPlayerSquadrons:
mov dword ptr [aLast],'_MPS'
push rax
push rbx
push rdx
mov rcx,[rdx] // Original code (get squadron)
cmp dword ptr [iEnableMPS],0
je _ExitMPS // Jump if feature is disabled
mov eax,[rcx+0000055c]
cmp eax,[iPlayerID]
jne _ExitMPS
mov eax,[rcx+70]
cmp eax,[rcx+68]
js _ExitMPS
je _ExitMPS
mov [rcx+68],eax
imul eax,eax,#1000
mov rbx,[rcx+00000198]
test rbx,rbx
jz _ExitMPS
mov [rbx+10],eax
mov rbx,[rcx+000001a8]
test rbx,rbx
jz _ExitMPS
mov [rbx+08],eax
_ExitMPS:
pop rdx
pop rbx
pop rax
lea rdx,[rdx+08] // Original code
jmp _BackMPS // Back to main code
//========================================= 1.9.0 *
// - When in battle (army)
// RAX and RBX are safe to use
_GodMode:
mov dword ptr [aLast],'_GMD'
push rdi // Original code
sub rsp,48 // Original code
cmp dword ptr [iEnableGMD],0
je _GodMD00 // Jump if feature is disabled
mov eax,[iPlayerID]
cmp eax,[rcx+00000168]
jne _GodMD00
mov rbx,[rcx+78]
test rbx,rbx
jz _ExitGMD
mov eax,[rbx+00000228] // Organization
mov [rcx+0000031c],eax
mov eax,[ebx+0000022c] // HP
mov [rcx+00000318],eax
xor eax,eax
mov [rsp+68],eax
mov [rsp+70],eax
mov [rcx+00000328],eax
mov [rcx+0000032c],eax
mov [rcx+00000330],eax
jmp _ExitGMD
//==
_GodMD00:
cmp dword ptr [iEnableMWF],0 // s4.0
je _ExitGMD // Jump if feature is disabled
mov rbx,[rsp+40] // 1.9.0
test rbx,rbx
js _ExitGMD
mov rax,0000000010000000
cmp rbx,rax
js _ExitGMD
mov eax,[iPlayerID]
cmp eax,[rbx+00000168] // Chk if player is the attacker
jne _ExitGMD
mov eax,[rcx+0000031c]
mov [rsp+70],eax
mov eax,[rcx+00000318]
shr eax,1
cmp [rsp+68],eax
jns _ExitGMD
mov [rsp+68],eax
_ExitGMD:
jmp _BackGMD // Back to main code
//========================================= 1.9.0 *
// - When in battle (ships)(strength)
// RAX is safe to use
_GodModeS:
mov dword ptr [aLast],'_GMS'
cmp dword ptr [iEnableGMD],0
je _GodMDS0 // Jump if feature is disabled
mov rax,[rbp+000003f0]
mov eax,[rax+00000168]
cmp eax,[iPlayerID]
jne _GodMDS0
mov eax,[rbp+00000298] // Organization
mov [rbp+0000032c],eax
mov esi,[rbp+0000029c] // Strength
mov [rbp+00000328],esi
xor eax,eax
mov [rsp+78],eax
mov [rsp+00000080],eax
mov eax,[rbp+00000414]
cmp [rbp+00000410],eax // Manpower
jns _ExitGMS
mov [rbp+00000410],eax
jmp _ExitGMS
//==
_GodMDS0:
cmp dword ptr [iEnableMWF],0 // s4.0
je _ExitGMS // Jump if feature is disabled
mov rax,[rbp+000003f0] // get fleet
test rax,rax
jz _ExitGMS
mov rax,[rax+00000200]
test rax,rax
jz _ExitGMS
mov eax,[rax]
cmp eax,[iPlayerID]
jne _ExitGMS
mov eax,[rbp+0000032c]
mov [rsp+00000080],eax
mov eax,[rbp+00000328]
shr eax,1
cmp eax,[rsp+78]
js _GodMDS1
mov [rsp+78],eax
_GodMDS1:
mov eax,[rsp+78]
mov esi,[rbp+00000328]
sub esi,eax
_ExitGMS:
mov [rbp+00000328],esi // Original code (upd str)
jmp _BackGMS // Back to main code
//========================================= 1.9.0 #
// - When in battle (ships)(organization)
// RAX is safe to use
_GodModeS2:
mov dword ptr [aLast],'_GS2'
cmp dword ptr [iEnableGMD],0
je _ExitGS2 // Jump if feature is disabled
mov rax,[rbx+000003f0]
mov eax,[rax+00000168]
cmp eax,[iPlayerID]
jne _ExitGS2
mov r8d,[rbx+00000298] // Organization
mov [rbx+0000032c],r8d
mov eax,[rbx+0000029c] // Strength
mov [rbx+00000328],eax
mov eax,[rbx+00000414]
cmp [rbx+00000410],eax // Manpower
jns _ExitGS2
mov [rbx+00000410],eax
_ExitGS2:
mov [rbx+0000032C],r8d // Original code (upd org)
jmp _BackGS2 // Back to main code
//========================================= 1.9.0 ok
// - When a Province region is selected
_MonSelRegion:
mov [pRegion],rsi
_ExitMSR:
mov rdx,[rsi+00000118] // Original code (pInfras)
jmp _BackMSR // Back to main code
//========================================= 1.9.0 X
// - Each hour
_MonMinResource:
mov dword ptr [aLast],'_MMR'
cmp dword ptr [iEnableMMR],0
je _ExitMMR // Jump if feature is disabled
mov rax,[rsp+20]
test rax,rax
jz _ExitMMR
cmp rax,[rsp+000000d0]
jne _ExitMMR
mov rax,[rax+48]
cmp rax,[pPlayer]
jne _ExitMMR
mov eax,#250000
cmp [rbx+28],eax
jns _ExitMMR
mov [rbx+28],eax
_ExitMMR:
mov eax,[rbx+28] // Original code (get resource)
mov rbx,[rsp+30] // Original code
jmp _BackMMR // Back to main code
//========================================= 1.9.0 * (fix 8.1)
// - All the time (Manpower)
// RAX can be used
_MonMinMP:
mov dword ptr [aLast],'_MMM'
mov rcx,[rsi+000003F8] // Original code (get list)
mov rcx,[rcx+rbx*8] // Original code (get Province)
cmp dword ptr [iEnableMMM],0
je _ExitMMM // Jump if feature is disabled
cmp rsi,[pPlayer]
jne _ExitMMM
mov eax,#7000
cmp [rcx+00000648],eax
jns _MonMM00
mov [rcx+00000648],eax
_MonMM00:
_ExitMMM:
jmp _BackMMM // Back to main code
//========================================= 1.9.0 (new)(80)
// - When const prog is updated (for La Resistance DLC)
_MonAgencyConst:
mov dword ptr [aLast],'_MAC'
cmp r15,[pPlayer]
jne _ExitMAC
cmp dword ptr [iEnableMAC],0
je _ExitMAC // Jump if feature is disabled
cmp [rbx+000000B4],eax
jns _ExitMAC
mov [rbx+000000B4],eax
_ExitMAC:
cmp [rbx+000000B4],eax // Original code (chk prog)
jmp _BackMAC // Back to main code
//========================================= 1.9.0 (new)(80)
// - When upgrade prog is updated (for La Resistance DLC)
_MonAgencyUpg:
mov dword ptr [aLast],'_MAU'
cmp r15,[pPlayer]
jne _ExitMAU
cmp dword ptr [iEnableMAU],0
je _ExitMAU // Jump if feature is disabled
cmp [rbx+000000B4],ecx
jns _ExitMAU
mov [rbx+000000B4],ecx
_ExitMAU:
cmp [rbx+000000B4],ecx // Original code (chk prog)
jmp _BackMAU // Back to main code
//========================================= 1.9.0 (new)(80)
// - When operative recruitment prog is updated (for La Resistance DLC)
_MonOperRec:
mov dword ptr [aLast],'_MOR'
cmp r15,[pPlayer]
jne _ExitMOR
cmp dword ptr [iEnableMOR],0
je _ExitMOR // Jump if feature is disabled
mov eax,ecx
_ExitMOR:
mov [rbx+000000D8],eax // Original code (upd prog)
jmp _BackMOR // Back to main code
//========================================= 1.9.0 (new)(80)
// - When Decrypting prog is updated (for La Resistance DLC)
_MonDecryptProg:
mov dword ptr [aLast],'_MDP'
cmp dword ptr [iEnableMDP],0
je _ExitMDP // Jump if feature is disabled
test rsi,rsi
jz _ExitMDP
mov rcx,[rsi+10]
cmp rcx,[pPlayer]
jne _ExitMDP
cmp [rbx+1C],edx
jns _ExitMDP
mov [rbx+1C],edx
_ExitMDP:
mov ecx,[rbx+1C] // Original code (get prog)
cmp ecx,eax // Original code
jmp _BackMDP // Back to main code
//========================================= 1.9.0 (new)(82)
// - When Deployment progress is updated
_MonUnitDeployProg:
mov dword ptr [aLast],'_MUP'
push rbx
push rcx
push rdx
push rsi
push rbp
cmp dword ptr [iEnableMUP],0
je _ExitMUP // Jump if feature is disabled
cmp r15,[pPlayer]
jne _ExitMUP
mov eax,#1000
cmp [rdi+5C],eax
je _MonUD0X
mov rsi,[rdi+000000a8]
test rsi,rsi
jz _ExitMUP
mov rsi,[rsi+38]
test rsi,rsi
jz _ExitMUP
mov rsi,[rsi+20]
test rsi,rsi
jz _ExitMUP
movzx rcx,word ptr [rsi+0000009c]
test rcx,rcx
jz _ExitMUP
mov rbx,[rsi+00000090]
test rbx,rbx
jz _ExitMUP
cmp ecx,[rdi+3c]
jne _ExitMUP
mov rsi,[rdi+30]
imul rdx,rcx,00000018
add rdx,rsi
_MonUD00:
mov rbp,[rbx]
mov eax,[rbx+08]
cmp rbp,[rsi]
je _MonUD01
lea rsi,[rsi+18]
cmp rsi,rdx
js _MonUD00
jmp _ExitMUP // Something wrong, exit.
_MonUD01:
mov [rsi+10],eax
mov rsi,[rdi+30]
lea rbx,[rbx+10]
loop _MonUD00
mov eax,#1000
mov [rdi+5C],eax
_MonUD0X:
dec eax
cmp [rdi+58],eax
jns _ExitMUP
mov [rdi+58],eax
_ExitMUP:
pop rbp
pop rsi
pop rdx
pop rcx
pop rbx
mov eax,[rdi+5C] // Original code (get max prog)
cmp [rdi+58],eax // Original code
jmp _BackMUP // Back to main code
//========================================= 1.9.0 (new)(82)
// - When updating Networking Creation Progress
_MonNetProg:
mov dword ptr [aLast],'_MNP'
cmp dword ptr [iEnableMNP],0
je _ExitMNP // Jump if feature is disabled
test eax,eax
jz _ExitMNP
test r15,r15
jz _ExitMNP
mov ecx,[r15+00000088]
cmp ecx,[iPlayerID]
jne _ExitMNP
mov ecx,#100000
cmp eax,ecx
jns _ExitMNP
mov eax,ecx
_ExitMNP:
mov rcx,[r14+10] // Original code
mov [rcx+rbp+20],eax // Original code (upd prog)
jmp _BackMNP // Back to main code
//========================================= 1.9.0 (new)(82)
// - When operation Progress is updated
_MonOperProg:
mov dword ptr [aLast],'_MOP'
cmp dword ptr [iEnableMOP],0
je _ExitMOP // Jump if feature is disabled
mov rax,[rbx+48]
cmp rax,[pPlayer]
jne _ExitMOP
mov eax,[rbx+34]
cmp eax,#1000
js _ExitMOP
mov eax,#-1000
add eax,[rbx+34]
cmp [rbx+30],eax
jns _ExitMOP
mov [rbx+30],eax
_ExitMOP:
mov eax,[rbx+30] // Original code (get prog)
cmp eax,[rbx+34] // Original code
jmp _BackMOP // Back to main code
//========================================= 1.9.0 (new)(82)
// - When operation phase is in Progress (When lookin at the Agency)
// RAX is safe
_MonOperPhase:
mov dword ptr [aLast],'_OPH'
cmp dword ptr [iEnableOPH],0
je _ExitOPH // Jump if feature is disabled
mov rax,[rcx+48]
cmp rax,[pPlayer]
jne _ExitOPH
cmp byte ptr [rcx+3a],01
je _ExitOPH
cmp dword ptr [rcx+00000080],00
je _ExitOPH
cmp dword ptr [rcx+0000010c],00
je _ExitOPH
movzx rax,word ptr [rcx+0000010c]
imul rax,rax,3
cmp [rcx+00000080],eax
js _ExitOPH
mov [rcx+00000080],eax
_ExitOPH:
cmp dword ptr [rcx+00000080],00 // Original code (chk #days)
jmp _BackOPH // Back to main code
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE7.0 Script by Recifense 200309'
//=========================================
// Variables
iEnableMPP:
dd 0
iEnableMMR:
dd 0
iEnableMCP:
dd 0
iEnableMRP:
dd 0
iEnablePNP:
dd 0
iEnableMAM:
dd 0
iEnableGMD:
dd 0
iEnableMMM:
dd 0
iEnableMPS:
dd 0
iEnableMWF:
dd 0
iEnableMSY:
dd 0
iEnableMWS:
dd 0
iEnableMFP:
dd 0
iEnableMQR:
dd 0
iEnableMPX:
dd 0
iEnableMPC:
dd 0
iEnableMAC:
dd 0
iEnableMAU:
dd 0
iEnableMOR:
dd 0
iEnableMDP:
dd 0
iEnableMUP:
dd 0
iEnableMNP:
dd 0
iEnableMOP:
dd 0
iEnableOPH:
dd 0
iPlayerID:
dd #999999
pPlayer:
dq MyCode
pPlayer1:
dq MyCode
pPlayer2:
dq MyCode
pArmyFleet:
dq 0
pRegion:
dq 0
pRAX:
dq 0
pRBX:
dq 0
pRCX:
dq 0
pRDX:
dq 0
pRDI:
dq 0
pRSI:
dq 0
pRBP:
dq 0
iCount:
dq 0
aLast:
db 'CE70'
//=========================================
// Hacking Points
MOHP:
jmp _MonHumanPlayer
nop
nop
_BackMHP:
MOCP:
jmp _MonConstProg
nop
_BackMCP:
MOPP:
jmp _MonProdProg
nop
nop
nop
_BackMPP:
MPP1:
jmp _MonProdProg1
nop
nop
_BackPP1:
MPP2:
jmp _MonProdProg2
nop
_BackPP2:
MORP:
jmp _MonResearchProg
nop
_BackMRP:
MOFP:
jmp _MonFocusProg
nop
_BackMFP:
MOSF:
jmp _MonSelArmyFleet
nop
nop
_BackMSF:
MOAM:
jmp _MonArmyFleetMove
nop
nop
_BackMAM:
MAM1:
jmp _MonArmyFleetMove1
nop
nop
_BackAM1:
MOPS:
jmp _MonPlayerSquadrons
nop
nop
_BackMPS:
GDMD:
jmp _GodMode
_BackGMD:
GMDS:
jmp _GodModeS
nop
_BackGMS:
GDS2:
jmp _GodModeS2
nop
nop
_BackGS2:
MOSR:
jmp _MonSelRegion
nop
nop
_BackMSR:
MOMR:
jmp _MonMinResource
nop
nop
nop
_BackMMR:
MOMM:
jmp _MonMinMP
nop
nop
nop
nop
nop
nop
_BackMMM:
MOAC:
jmp _MonAgencyConst
nop
_BackMAC:
MOAU:
jmp _MonAgencyUpg
nop
_BackMAU:
MOOR:
jmp _MonOperRec
nop
_BackMOR:
MODP:
jmp _MonDecryptProg
_BackMDP:
MUDP:
jmp _MonUnitDeployProg
nop
_BackMUP:
MONP:
jmp _MonNetProg
nop
nop
nop
_BackMNP:
MOOP:
jmp _MonOperProg
nop
_BackMOP:
MOPH:
jmp _MonOperPhase
nop
nop
_BackOPH:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOHP:
// mov edx,[r15+000001BC]
db 41 8b 97 bc 01 00 00
MOCP:
// add [rbx+38],ecx
// or ebp,-01
db 01 4b 38 83 cd ff
MOPP:
// add [r14+38],r9d
// movsxd rax,dword ptr [r14+38]
db 45 01 4e 38 49 63 46 38
MPP1:
// add [rdi+38],eax
// movsxd rax,dword ptr [rdi+38]
db 01 47 38 48 63 47 38
MPP2:
// add [rdi+38],edx
// mov eax,[rdi+30]
db 01 57 38 8b 47 30
MORP:
// add [rbx+00000114],eax
db 01 83 14 01 00 00
MOFP:
// mov ecx,[rax+000003E8]
db 8b 88 e8 03 00 00
MOSF:
// mov rax,[rax+00000180]
db 48 8b 80 80 01 00 00
MOAM:
// cmp [r15+000001C0],ebx
db 41 39 9f c0 01 00 00
MAM1:
// cmp [r15+000001C0],ebx
db 41 39 9f c0 01 00 00
MOPS:
// mov rcx,[rdx]
// lea rdx,[rdx+08]
db 48 8b 0a 48 8d 52 08
GDMD:
// push rdi
// sub rsp,48
db 57 48 83 ec 48
GMDS:
// mov [rbp+00000328],esi
db 89 b5 28 03 00 00
GDS2:
// mov [rbx+0000032C],r8d
db 44 89 83 2c 03 00 00
MOSR:
// mov rdx,[rsi+00000118]
db 48 8b 96 18 01 00 00
MOMR:
// mov eax,[rbx+28]
// mov rbx,[rsp+30]
db 8b 43 28 48 8b 5c 24 30
MOMM:
// mov rcx,[rsi+000003F8]
// mov rcx,[rcx+rbx*8]
db 48 8b 8e f8 03 00 00 48 8b 0c d9
MOAC:
// cmp [rbx+000000B4],eax
db 39 83 b4 00 00 00
MOAU:
// cmp [rbx+000000B4],ecx
db 39 8b b4 00 00 00
MOOR:
// mov [rbx+000000D8],eax
db 89 83 d8 00 00 00
MODP:
// mov ecx,[rbx+1C]
// cmp ecx,eax
db 8b 4b 1c 3b c8
MUDP:
// mov eax,[rdi+5C]
// cmp [rdi+58],eax
db 8B 47 5C 39 47 58
MONP:
// mov rcx,[r14+10]
// mov [rcx+rbp+20],eax
db 49 8B 4E 10 89 44 29 20
MOOP:
// mov eax,[rbx+30]
// cmp eax,[rbx+34]
db 8B 43 30 3B 43 34
MOPH:
// cmp dword ptr [rcx+00000080],00
db 83 B9 80 00 00 00 00
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMPP)
unregistersymbol(iEnableMMR)
unregistersymbol(iEnableMCP)
unregistersymbol(iEnableMRP)
unregistersymbol(iEnablePNP)
unregistersymbol(iEnableMAM)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMMM)
unregistersymbol(iEnableMPS)
unregistersymbol(iEnableMWF)
unregistersymbol(iEnableMSY)
unregistersymbol(iEnableMWS)
unregistersymbol(iEnableMFP)
unregistersymbol(iEnableMQR)
unregistersymbol(iEnableMPX)
unregistersymbol(iEnableMPC)
unregistersymbol(iEnableMAC)
unregistersymbol(iEnableMAU)
unregistersymbol(iEnableMOR)
unregistersymbol(iEnableMDP)
unregistersymbol(iEnableMUP)
unregistersymbol(iEnableMNP)
unregistersymbol(iEnableMOP)
unregistersymbol(iEnableOPH)
unregistersymbol(iPlayerID)
unregistersymbol(pPlayer)
unregistersymbol(pPlayer1)
unregistersymbol(pPlayer2)
unregistersymbol(pArmyFleet)
unregistersymbol(pRegion)
unregistersymbol(aLast)
unregistersymbol(pRAX)
unregistersymbol(pRBX)
unregistersymbol(pRCX)
unregistersymbol(pRDX)
unregistersymbol(pRDI)
unregistersymbol(pRSI)
unregistersymbol(pRBP)
unregistersymbol(MOHP)
unregistersymbol(MOCP)
unregistersymbol(MOPP)
unregistersymbol(MPP1)
unregistersymbol(MPP2)
unregistersymbol(MORP)
unregistersymbol(MOFP)
unregistersymbol(MOSF)
unregistersymbol(MOAM)
unregistersymbol(MAM1)
unregistersymbol(MOPS)
unregistersymbol(GDMD)
unregistersymbol(GMDS)
unregistersymbol(GDS2)
unregistersymbol(iCount)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
96
"[X] <== Minimum Political Power"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPP",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPP",0)
memrec.Color = 0x00c08000
{$ASM}
246
"[X] <== Minimum Base Stability"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMSY",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMSY",0)
memrec.Color = 0x00c08000
{$ASM}
247
"[X] <== Minimum War Support"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMWS",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMWS",0)
memrec.Color = 0x00c08000
{$ASM}
229
"[X] <== Minimum Manpower per State"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMM",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMM",0)
memrec.Color = 0x00c08000
{$ASM}
262
"[X] <== Minimum Command Power"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPC",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPC",0)
memrec.Color = 0x00c08000
{$ASM}
263
"[X] <== Minimum Army/Navy/Air XP"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPX",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPX",0)
memrec.Color = 0x00c08000
{$ASM}
97
"[X] <== Minimum Natural Resources"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMR",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMR",0)
memrec.Color = 0x00c08000
{$ASM}
252
"[X] <== Finish Focus in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMFP",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMFP",0)
memrec.Color = 0x00c08000
{$ASM}
99
"[X] <== Research in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRP",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRP",0)
memrec.Color = 0x00c08000
{$ASM}
98
"[X] <== Construction in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCP",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCP",0)
memrec.Color = 0x00c08000
{$ASM}
100
"[X] <== Production in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnablePNP",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnablePNP",0)
memrec.Color = 0x00c08000
{$ASM}
258
"[X] <== Refitting in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMQR",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMQR",0)
memrec.Color = 0x00c08000
{$ASM}
101
"[X] <== Movement to adjacent region in 1 Hour"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMAM",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMAM",0)
memrec.Color = 0x00c08000
{$ASM}
102
"[X] <== God Mode"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMD",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
memrec.Color = 0x00c08000
{$ASM}
245
"[X] <== Weak Foe"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMWF",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMWF",0)
memrec.Color = 0x00c08000
{$ASM}
235
"[X] <== Fill up Player Squadrons"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPS",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPS",0)
memrec.Color = 0x00c08000
{$ASM}
270
"[X] <== Agency Construction in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMAC",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMAC",0)
memrec.Color = 0x00c08000
{$ASM}
272
"[X] <== Agency Upgrade in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMAU",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMAU",0)
memrec.Color = 0x00c08000
{$ASM}
275
"[X] <== Operative Recruitment in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMOR",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMOR",0)
memrec.Color = 0x00c08000
{$ASM}
279
"[X] <== Cipher Decrypting in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMDP",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMDP",0)
memrec.Color = 0x00c08000
{$ASM}
286
"[X] <== Unit Deployment in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMUP",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMUP",0)
memrec.Color = 0x00c08000
{$ASM}
287
"[X] <== Intel Network in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMNP",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMNP",0)
memrec.Color = 0x00c08000
{$ASM}
289
"[X] <== Intel Operation in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMOP",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMOP",0)
memrec.Color = 0x00c08000
{$ASM}
297
"[X] <== Each Operation Phase in 3 Days (Select the Agency)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableOPH",1)
memrec.Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableOHP",0)
memrec.Color = 0x00c08000
{$ASM}
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20200309
===========================================
Game Title : Hearts of Iron IV (x64)
Game Version : 1.9.0 (ab9c) (La Resistance)
Game Sponsor : TheSaviour + PF (DLCs)
Process Name : hoit4.exe
Relevant Info : 64bits/RTS/New Engine
Script Version: 8.2 (for x64)
CE Version : 7.0
Release date : 09-Mar-2020
Author : Recifense
History:
07-Jun-2019: First Release for 64bits (v1.7.0)(s7.0)(CE68)
14-Jun-2019: Fix for some crashes + improve time to load the table(s7.1)
23-Jun-2019: Fix for some Weak Foe (Ships) (s7.2)
23-Jun-2019: Release for v1.7.1-f8d7 (Beta) (s7.3)
24-Jun-2019: Release for v1.7.1-87c8 (Beta) (s7.4)
03-Sep-2019: Fix for GM (s7.5)(CE70)
22-Sep-2019: A script patch due to CE70 issue (s7.6)
13-Nov-2019: Release for v1.8.0-3241 (s7.7)
14-Nov-2019: Release for v1.8.1-aa59 (s7.8)
01-Dec-2019: Fix for identifying the player (s7.9)
19-Dec-2019: Fix GM for ships (s7.10)
07-Feb-2020: Release for v1.8.2-ce2f (s7.11)
27-Feb-2020: Release for v1.9.0-ab9c + new features (s8.0)
02-Mar-2020: Fix Manpower (s8.1)
09-Mar-2020: Added 4 new features(s8.2)
Features:
- Minimum Political Points (700) [1]
- Minimum Natural Resources (250) [2]
- Construction in 1 day [3]
- Research in 1 day [4]
- Production in 1 day [5]
- Move to adjacent region in 1 hour [6]
- God Mode (Army/Fleet) [7]
- Minimum Manpower per State (7000) [8]
- Fill up player squadrons [9] (s3.0)
- Weak Foe [A] (s4.0)
- Minimum Base Stability (80%) [B] (new)
- Minimum Base War Support (50%) [C} (new)
- Finish Focus in 1 day [D] (new) (s5.2)
- Refitting in 1 day [E] (new) (s6.0)
- Minimum Army/Navy/Air XP (268) [F] (new) (s6.0)
- Minimum Command Points (68) [G] (new) (s6.0)
- Agency Construction in 1 day [H] (brand-new) (s8.0)(La Resistance)
- Agency Upgrade in 1 day [I] (brand-new) (s8.0)(La Resistance)
- Operative Recruitment in 1 day [J] (brand-new) (s8.0)(La Resistance)
- Cipher Decrypting in 1 Day [K] (brand-new) (s8.0)(La Resistance)
- Deployment in 1 Day [L] (brand-new) (s8.2)
- Network Creation in 1 Days [M] (brand-new) (s8.2)(La Resistance)
- Intel Operation in 1 Day [N] (brand-new) (s8.2)(La Resistance)
- Each Operation Phase in 3 Days [O] (brand-new) (s8.2)(La Resistance)
- Some Pointers [P]
===========================================
[1] It will not go under 700;
[2] It will not be lower than 250 (*);
[3] That's it;
[4] That's it;
[5] That's it;
[6] Now every hour counts; :)
[7] HP and Organization (Army and Navy);
[8] It will not go under 7000;
[9] The planes will replaced very quickly;
[A] Battles involving the Human Player will end quickly (army/fleet);
[B] Human player minimum base stability will be 80%;
[C] Human player minimum War Support will be 50%;
[D] That's it; :)
[E] That's it; :)
[F] It will not go under 268;
[G] It will not go under 68;
[H] That's it; :)
[I] That's it; :)
[J] That's it; :)
[K] That's it; :)
[L] At least, one item of each requirement should be available;
[M] That's it; :)
[N] That's it; :)
[O] It depends on the available requirements and the Agency should be selected at least once after starting;
[P] Not used at the table;
(*) Let an hour pass so you can see the effect on the trade tab.
(**)You have to look at the contruction tab once a day, preferably at 23:00.
===========================================
[USAGE]
1) Run CE70 or greater;
2) Run Game;
3) Load the game process "hoi4.exe" in CE;
4) Load this table and activate the main script;
5) Now Activate the script of each cheat you want to use;
6) Game On;
===========================================
HOTKEYS:
None pre-defined
===========================================
[IMPORTANT]
Save your game before unsing the cheats.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
Cheers!