5
"[X] <== Hearts of Iron IV x64 v1.12.3 (f3bb) Steam Script v9.1"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Hearts of Iron IV (x64)
Game Version : 1.12.3 (f3bb) (By Blood Alone)
Game Sponsor : TheSaviour + PF (DLCs)
Process Name : hoit4.exe
Relevant Info : 64bits/RTS/New Engine
Script Version: 9.1 (for x64)(AOB)
CE Version : 7.4
Release date : 12-Oct-2022
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)
10-Apr-2020: Release for v1.9.1-6d23 (s8.3)
06-May-2020: Release for v1.9.2-a73d (s8.4)
04-Jun-2020: Release for v1.9.3-a7a4 (s8.5)
16-Oct-2020: Release for v1.10.1-dd56 (s8.6) (Battle for the Bosporus)
12-Nov-2020: Release for v1.10.2-f82d (s8.7)
26-Nov-2020: Release for v1.10.3-aa89 (s8.8) (AOB)
07-Feb-2021: Release for v1.10.4-8878 (s8.9) (AOB)
15-Apr-2021: Release for v1.10.5-502a (s8.10)(AOB)
26-Nov-2021: Release for v1.11.2-7844 (s8.11) (No Step Back)
15-Dec-2021: Release for v1.11.4-b22c (s8.12)
30-Jan-2022: Release for v1.11.5-7e1e (s8.13)(CE7.4)
17-Feb-2022: Release for v1.11.7-98bf (s8.14)(CE7.4)
03-Apr-2022: Release for v1.11.9-3f99 (s8.15) (not finished)
09-Apr-2022: Release for v1.11.10-09ac (s8.16) + New feature
29-Sep-2022: Release for v1.12.1-a74e (s9.0) (By Blood Alone)
12-Oct-2022: Release for v1.12.3-f3bb (s9.1) + Fix GM/WF
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)
- Each railway in 1 day (new) (S8.16)
- 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+01202D4A) //===X#=======#=#===#
define(MOCP,hoi4.exe+00B27171) //====#=======X=#====
define(MOPP,hoi4.exe+00B279F4) //=====#======X====##
define(MPP1,hoi4.exe+00B27BF9) //============X=#====
define(MPP2,hoi4.exe+00DF3664) //============X======
define(MORP,hoi4.exe+00CDC206) //====#=======#=##===
define(MOFP,hoi4.exe+00200296) //====#=======X=#===#
define(MOSF,hoi4.exe+008475EF) //==#=#=======#=#=#=#
define(MOAM,hoi4.exe+009E7DAF) //============#=#=#=#
define(MAM1,hoi4.exe+009E7BDF) //=====#======X=#=#=X
define(MOPS,hoi4.exe+00DE73E0) //====#=======X=#===P
define(GDMD,hoi4.exe+00AA25AA) //====#=======X=#===#
define(GMDS,hoi4.exe+00BD4075) //====#=======X=X===#
define(GDS2,hoi4.exe+00BCB15D) //====#=======#=#===#
define(MOSR,hoi4.exe+010ED384) //============#=X===#
define(MOMR,hoi4.exe+003B9C2B) //=====#==#=====#===P
define(MOMM,hoi4.exe+0095A8E0) //=====#===#==#=#===# 2 1
}
// La Resistance DLC
//define(MOAC,hoi4.exe+008CC362) //-----N====#=====#
//define(MOAU,hoi4.exe+008CC453) //-----N====##====#
//define(MOOR,hoi4.exe+008CC4E7) //-----N#===#=====#
//define(MODP,hoi4.exe+00E9A44C) //-----N====X=X====
//define(MONP,hoi4.exe+00C654FC) //-----N====#=#===#
//define(MOOP,hoi4.exe+00C0BA25) //-----N#===#=====#
//define(MOPH,hoi4.exe+00DDE509) //-----N====#======
// General
//define(MUDP,hoi4.exe+00ECF5B7) //-----N===##=====#
// No Step Back
//define(MORW,hoi4.exe+012AB496) //---------------N=
//=========================================
// Constants used in the script (that can be changed)
define(ctCE74,(float)7.4)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
AOBScanModule(MOHP,$process,8B 96 CC 01 00 00 48 8D 4C 24 30 E8 ?? ?? ?? ?? 90 48 8B D0 48 8B CB) //.
AOBScanModule(MOCP,$process,8B 53 38 BD FF FF FF FF 03 D1 4C 89 74 24 30 89 53 38 48 BF ?? ??) //=
AOBScanModule(MOPP,$process,44 8B 56 38 45 03 D1 44 89 56 38 45 85 C0 0F 84 ?? ?? ?? ?? 41 8D) //.
AOBScanModule(MPP1,$process,8B 57 38 03 54 24 48 48 89 5C 24 50 89 57 38 45 85 C0 0F 84 ?? ??) //=
AOBScanModule(MPP2,$process,44 89 43 38 44 3B C1 7C ?? 44 2B C1 48 8D 8B 98 00 00 00 44 89 43) //=
AOBScanModule(MORP,$process,01 8F 24 01 00 00 48 8B 9F 30 01 00 00 48 63 87 3C 01 00 00 48 8D) //=
AOBScanModule(MOFP,$process,3B 88 30 04 00 00 0F 8C ?? ?? ?? ?? 48 8B 0D ?? ?? ?? ?? 48 81 C1) //#
AOBScanModule(MOSF,$process,48 8B 82 18 02 00 00 49 8D 5F 3C 48 C1 E3 04 48 03 DF 8B B0 8C 00) //#
AOBScanModule(MOAM,$process,41 39 9E 58 02 00 00 0F 8C ?? ?? ?? ?? 41 39 BE 08 01 00 00 0F 8F) //#
AOBScanModule(MAM1,$process,41 8B 86 58 02 00 00 85 C0 79 ?? 45 89 BE 58 02 00 00 41 8B C7 45) //X
AOBScanModule(MOPS,$process,48 8B 0A 48 83 C2 08 03 41 74 49 3B D0 75 ?? C3 48 89 5C 24 10 ??) //P
AOBScanModule(GDMD,$process,48 8B 81 70 03 00 00 45 0F B6 F1 49 63 F8 48 8B F1 48 63 DA 48 85) //#
AOBScanModule(GMDS,$process,89 91 80 03 00 00 44 8B 81 D8 02 00 00 44 3B C0 41 0F 4F C0 85 D2) //#
AOBScanModule(GDS2,$process,89 8D 84 03 00 00 85 C9 79 ?? 44 89 BD 84 03 00 00 EB ?? 41 3B CE) //#
AOBScanModule(MOSR,$process,48 8B 87 20 01 00 00 48 8B 1C F0 48 8B 8B 00 01 00 00 E8 ?? ?? ??) //#
AOBScanModule(MOMR,$process,48 8B 87 20 01 00 00 48 8B 1C F0 48 8B 8B 00 01 00 00 E8 ?? ?? ??) //P
///AOBScanModule(MOMR,$process,8b 43 28 48 8b 5c 24 30 4f 8d 04 40 49 c1 e0 04 4c 03 47 10 41 01) //P
AOBScanModule(MOMM,$process,48 8B 8E 48 04 00 00 48 8B 0C D9 E8 ?? ?? ?? ?? 48 8B C8 E8 ?? ?? ?? ?? 03 F8 48 FF C3 48 3B DD 7C ?? 48 8B 5C 24 30) //#
// La Resistance DLC
AOBScanModule(MOAC,$process,39 87 B4 00 00 00 7D ?? 40 38 35 ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 48) //#
AOBScanModule(MOAU,$process,39 87 B4 00 00 00 7D ?? 40 38 35 ?? ?? ?? ?? 74 ?? 48 8B 05 ?? ??) //#
AOBScanModule(MOOR,$process,89 8F D8 00 00 00 3B C8 7C ?? 89 B7 D8 00 00 00 FF 87 D4 00 00 00) //#
AOBScanModule(MODP,$process,03 C3 89 47 1C 79 ?? 33 C0 89 47 1C 3B C2 75 ?? 48 8B 0D ?? ?? ??) //=
AOBScanModule(MONP,$process,48 8B 45 10 41 89 4C 06 20 48 FF C3 49 83 C6 38 48 3B DF 0F 85 ??) //#
AOBScanModule(MOOP,$process,8B 43 30 3B 43 34 7D ?? 49 8B 4E 10 E8 ?? ?? ?? ?? 48 8D 94 24 80) //#
AOBScanModule(MOPH,$process,83 B9 80 00 00 00 00 74 ?? 48 8B 05 ?? ?? ?? ?? 48 89 45 60 48 85) //=
AOBScanModule(MUDP,$process,8B 43 5C 44 89 8B A0 00 00 00 39 43 58 0F 8D ?? ?? ?? ?? 80 3D ??) //#
AOBScanModule(MORW,$process,4C 8B 46 28 8B 56 20 C6 44 24 28 00 48 8B 88 90 01 00 00 4D 8B 80) //=
//=========================================
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(iEnableMRW)
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(iEnableMRW)
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(MOSR)
registersymbol(MOMR)
registersymbol(MOMM)
registersymbol(MOAC)
registersymbol(MOAU)
registersymbol(MOOR)
registersymbol(MODP)
registersymbol(MONP)
registersymbol(MOOP)
registersymbol(MOPH)
registersymbol(MUDP)
registersymbol(MORW)
registersymbol(iCount)
//=========================================
MyCode:
//========================================= 1.12.1 *
// - 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'
xchg R15,RSI
cmp r15,[pPlayer]
je _MonHPZZ
inc dword ptr [iCount]
_MonHPZZ:
mov [pPlayer],r15
mov rcx,[r15+00000F00] // Prod
mov [pPlayer1],rcx
mov rcx,[r15+00000EF8] // Tech
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+00000F28]
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+00001030],ecx
jns _MonHP01
mov [r15+00001030],ecx
_MonHP01:
cmp dword ptr [iEnableMWS],0 // War Support
je _MonHP02 // Jump if feature is disabled
mov ecx,#500
cmp [r15+00001034],ecx
jns _MonHP02
mov [r15+00001034],ecx
_MonHP02:
cmp dword ptr [iEnableMPC],0 // Command Power
je _MonHP03 // Jump if feature is disabled
mov ecx,#70000
cmp [r15+000001CC],ecx
jns _MonHP03
mov [r15+000001CC],ecx
_MonHP03:
cmp dword ptr [iEnableMPX],0 // XPs
je _MonHP04 // Jump if feature is disabled
mov rcx,#8781824 // 8781824 = 268 x 32K
cmp [r15+000001E8],rcx
jns _MonHPN3
mov [r15+000001E8],rcx
_MonHPN3:
cmp [r15+00000200],rcx
jns _MonHPA3
mov [r15+00000200],rcx
_MonHPA3:
cmp [r15+00000218],rcx
jns _MonHP04
mov [r15+00000218],rcx
_MonHP04:
_ExitMHP:
xchg R15,RSI
mov edx,[rsi+000001CC] // Original code (get CP)
jmp _BackMHP // Back to main code
//========================================= 1.12.1 ok
// - Construction Progress (when day changes)
_MonConstProg:
mov dword ptr [aLast],'_MCP'
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
mov rdx,[rbx+28]
cmp rdx,[pPlayer1]
jne _ExitMCP
mov edx,[rbx+30]
cmp [rbx+38],edx
jns _ExitMCP
mov [rbx+38],edx
_ExitMCP:
mov edx,[rbx+38] // Original code (get prog)
mov ebp,FFFFFFFF // Original code
jmp _BackMCP // Back to main code
//========================================= 1.12.1 *
// - 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 r10,[rsi+28]
cmp r10,[pPlayer1]
jne _ExitMPP
mov r10d,[rsi+30]
add r10d,r10d
cmp [rsi+38],r10d
jns _ExitMPP
mov [rsi+38],r10d
_ExitMPP:
mov r10d,[rsi+38] // Original code (get prog)
add r10d,r9d // Original code
jmp _BackMPP // Back to main code
//========================================= 1.12.1 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
mov edx,[rdi+38] // Original code (get prog)
add edx,[rsp+48] // Original code
jmp _BackPP1 // Back to main code
//========================================= 1.12.1 ok
// - Refitting Progress (when day changes)
_MonProdProg2:
mov dword ptr [aLast],'_PP2'
push rax
cmp dword ptr [iEnableMQR],0
je _ExitPP2 // Jump if feature is disabled
mov rax,[rbx+28]
cmp rax,[pPlayer1]
jne _ExitPP2
cmp r8d,ecx
jns _ExitPP2
mov r8d,ecx
_ExitPP2:
pop rax
mov [rbx+38],r8d // Original code(upd prog)
cmp r8d,ecx // Original code
jmp _BackPP2 // Back to main code
//========================================= 1.12.1 ok
// - Research Progress (when day changes)
_MonResearchProg:
mov dword ptr [aLast],'_MRP'
push rax
cmp dword ptr [iEnableMRP],0
je _ExitMRP // Jump if feature is disabled
mov rax,[rdi+000000D8]
cmp rax,[pPlayer2]
jne _ExitMRP
mov rax,[rdi+000000E0]
test rax,rax
jz _ExitMRP
mov eax,[rax+00000330]
add eax,eax
imul eax,eax,64
test eax,eax
js _ExitMRP
cmp [rdi+00000124],eax
jns _ExitMRP
mov [rdi+00000124],eax
_ExitMRP:
pop rax
add [rdi+00000124],ecx // Original code (upd prog)
jmp _BackMRP // Back to main code
//========================================= 1.12.1 *
// - Finish focus in a day (when day changes)
// RDX is safe and RBX = pFocus
_MonFocusProg:
mov dword ptr [aLast],'_MFP'
cmp dword ptr [iEnableMFP],0
je _ExitMFP // Jump if feature is disabled
mov rdx,[rbx+10]
cmp rdx,[pPlayer]
jne _ExitMFP
mov edx,[rax+00000430]
cmp [rbx+28],edx
jns _ExitMFP
mov [rbx+28],edx
mov ecx,edx
_ExitMFP:
cmp ecx,[rax+00000430] // Original code (get val)
jmp _BackMFP // Back to main code
//========================================= 1.12.1 *
// - When Army/Fleet is selected
_MonSelArmyFleet:
mov [pArmyFleet],rdx
_ExitMSF:
mov rax,[rdx+00000218] // Original code (get pLocation)
jmp _BackMSF // Back to main code
//========================================= 1.12.1 *
// - 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,[r14+00000200]
jne _ExitMAM
cmp [r14+00000258],ebx
jns _ExitMAM
mov [r14+00000258],ebx
_ExitMAM:
pop rax
cmp [r14+00000258],ebx // Original code (chk Move)
jmp _BackMAM // Back to main code
//========================================= 1.12.1 X
// - 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,[r14+00000200]
jne _ExitAM1
cmp [r14+00000258],r15d
jns _ExitAM1
mov [r14+00000258],r15d
_ExitAM1:
pop rax
mov eax,[r14+00000258] // Original code (get Move)
jmp _BackAM1 // Back to main code
//========================================= 1.12.1 P
// - 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+0000058C]
cmp eax,[iPlayerID]
jne _ExitMPS
mov eax,[rcx+74]
cmp eax,[rcx+6C]
js _ExitMPS
je _ExitMPS
mov [rcx+6C],eax
imul eax,eax,#1000
mov rbx,[rcx+000001A0]
test rbx,rbx
jz _ExitMPS
mov [rbx+10],eax
mov rbx,[rcx+000001B0]
test rbx,rbx
jz _ExitMPS
mov [rbx+08],eax
_ExitMPS:
pop rdx
pop rbx
pop rax
add rdx,08 // Original code
jmp _BackMPS // Back to main code
//========================================= 1.12.3 # (New Appoach)
// - When in battle (army)
// RAX, RSI and RBX are safe to use
_GodMode:
mov dword ptr [aLast],'_GMD'
cmp dword ptr [iEnableGMD],0
je _GodMD00 // Jump if feature is disabled
mov eax,[iPlayerID]
cmp eax,[rcx+00000200]
jne _GodMD00
mov rbx,[rcx+000000D8]
test rbx,rbx
jz _ExitGMD
mov eax,[rbx+00000264] // Organization
mov [rcx+000003E4],eax
mov eax,[rbx+00000268] // HP
mov [rcx+000003E0],eax
xor eax,eax
mov [rcx+000003F0],eax
mov [rcx+000003F4],eax
mov [rcx+000003F8],eax
xor r8,r8
xor rdx,rdx
jmp _ExitGMD
//==
_GodMD00:
cmp dword ptr [iEnableMWF],0 // s4.0
je _ExitGMD // Jump if feature is disabled
cmp rcx,r15
jne _ExitGMD
test r14,r14
jz _ExitGMD
mov eax,[r14+00000200]
cmp eax,[iPlayerID] // Chk if player is the attacker
jne _ExitGMD
mov r8d,[rcx+000003E4]
mov eax,[rcx+000003E0]
shr eax,1
cmp edx,eax
jns _ExitGMD
mov edx,eax
_ExitGMD:
mov rax,[rcx+00000370] // Original code
jmp _BackGMD // Back to main code
//========================================= 1.12.1 #
// - When in battle (ships)(strength)
// RAX is safe to use
_GodModeS:
mov dword ptr [aLast],'_GMS'
push rbp
mov rbp,rcx
cmp dword ptr [iEnableGMD],0
je _GodMDS0 // Jump if feature is disabled
mov rax,[rbp+00000448]
mov eax,[rax+00000200]
cmp eax,[iPlayerID]
jne _GodMDS0
mov eax,[rbp+000002D4] // Organization
mov [rbp+00000384],eax
mov edx,[rbp+000002D8] // Strength
mov [rbp+00000380],edx
mov eax,[rbp+0000046C]
cmp [rbp+00000468],eax // Manpower
jns _ExitGMS
mov [rbp+00000468],eax
jmp _ExitGMS
//==
_GodMDS0:
cmp dword ptr [iEnableMWF],0 // s4.0
je _ExitGMS // Jump if feature is disabled
mov rax,[rbp+00000448] // get fleet
test rax,rax
jz _ExitGMS
mov rax,[rax+00000298]
test rax,rax
jz _ExitGMS
mov eax,[rax]
cmp eax,[iPlayerID]
jne _ExitGMS
xor eax,eax
mov [rbp+00000384],eax
mov eax,[rbp+00000380]
shr eax,1
cmp eax,edx
jns _GodMDS1
mov edx,eax
_GodMDS1:
_ExitGMS:
mov rcx,rbp
pop rbp
mov [rcx+00000380],edx // Original code (upd str)
jmp _BackGMS // Back to main code
//========================================= 1.12.1 #
// - 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,[rbp+00000448]
mov eax,[rax+00000200]
cmp eax,[iPlayerID]
jne _ExitGS2
mov ecx,[rbp+000002D4] // Organization
mov [rbp+00000384],ecx
mov eax,[rbp+000002D8] // Strength
mov [rbp+00000380],eax
mov eax,[rbp+0000046C]
cmp [rbp+00000468],eax // Manpower
jns _ExitGS2
mov [rbp+00000468],eax
_ExitGS2:
mov [rbp+00000384],ecx // Original code (upd org)
jmp _BackGS2 // Back to main code
//========================================= 1.12.1 *
// - When a Province region is selected
_MonSelRegion:
mov [pRegion],rdi
_ExitMSR:
mov rax,[rdi+00000120] // Original code (pInfras)
jmp _BackMSR // Back to main code
//========================================= 1.11.5 ok
// - Each hour
_MonMinResource:
mov dword ptr [aLast],'_MMR'
cmp dword ptr [iEnableMMR],0
je _ExitMMR // Jump if feature is disabled
mov rax,[rsp+00000430]
test rax,rax
jz _ExitMMR
cmp rax,[rsp+00000478]
jne _ExitMMR
// cmp rax,[qMinAddress]
// js _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
qMinAddress:
dq 0000010000000000
//========================================= 1.12.1 *
// - All the time (Manpower)
// RAX can be used
_MonMinMP:
mov dword ptr [aLast],'_MMM'
mov rcx,[rsi+00000448] // 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+00000650],eax
jns _MonMM00
mov [rcx+00000650],eax
_MonMM00:
_ExitMMM:
jmp _BackMMM // Back to main code
//========================================= 1.12.1 #
// - When const prog is updated (for La Resistance DLC)
_MonAgencyConst:
mov dword ptr [aLast],'_MAC'
cmp r14,[pPlayer]
jne _ExitMAC
cmp dword ptr [iEnableMAC],0
je _ExitMAC // Jump if feature is disabled
cmp [rdi+000000B4],eax
jns _ExitMAC
mov [rdi+000000B4],eax
_ExitMAC:
cmp [rdi+000000B4],eax // Original code (chk prog)
jmp _BackMAC // Back to main code
//========================================= 1.12.1 #
// - When upgrade prog is updated (for La Resistance DLC)
_MonAgencyUpg:
mov dword ptr [aLast],'_MAU'
cmp r14,[pPlayer]
jne _ExitMAU
cmp dword ptr [iEnableMAU],0
je _ExitMAU // Jump if feature is disabled
cmp [rdi+000000B4],eax
jns _ExitMAU
mov [rdi+000000B4],eax
_ExitMAU:
cmp [rdi+000000B4],eax // Original code (chk prog)
jmp _BackMAU // Back to main code
//========================================= 1.12.1 *
// - When operative recruitment prog is updated (for La Resistance DLC)
_MonOperRec:
mov dword ptr [aLast],'_MOR'
cmp r14,[pPlayer]
jne _ExitMOR
cmp dword ptr [iEnableMOR],0
je _ExitMOR // Jump if feature is disabled
mov ecx,eax
_ExitMOR:
mov [rdi+000000D8],ecx // Original code (upd prog)
jmp _BackMOR // Back to main code
//========================================= 1.11.1 *
// - When Decrypting prog is updated (for La Resistance DLC)
_MonDecryptProg:
mov dword ptr [aLast],'_MDP'
push rsi
cmp dword ptr [iEnableMDP],0
je _ExitMDP // Jump if feature is disabled
test rsi,rsi
jz _ExitMDP
mov rsi,[rsi+10]
cmp rsi,[pPlayer]
jne _ExitMDP
cmp eax,edx
jns _ExitMDP
mov eax,edx
_ExitMDP:
pop rsi
add eax,ebx // Original code (calc prog)
mov [rdi+1C],eax // Original code (upd prog)
jmp _BackMDP // Back to main code
//========================================= 1.12.1 *
// - When Deployment progress is updated
_MonUnitDeployProg:
mov dword ptr [aLast],'_MUP'
push rbx
push rcx
push rdx
push rdi
push rsi
push rbp
mov rsi,rbx
cmp dword ptr [iEnableMUP],0
je _ExitMUP // Jump if feature is disabled
cmp r14,[pPlayer]
jne _ExitMUP
mov eax,#1000
cmp [rsi+5C],eax // CMilitaryDeployment+5C
je _MonUD0X
mov rdi,[rsi+000000a8] // CMilitaryDeploymentLine
test rdi,rdi
jz _ExitMUP
mov rdi,[rdi+38] // CMilitaryDeploymentConveyor
test rdi,rdi
jz _ExitMUP
mov rdi,[rdi+20] // CReferencedDivisionTemplate
test rdi,rdi
jz _ExitMUP
movzx rcx,word ptr [rdi+0000009c] // 1
test rcx,rcx
jz _ExitMUP
mov rbx,[rdi+00000090]
test rbx,rbx
jz _ExitMUP
cmp ecx,[rsi+3c] // 1
jne _ExitMUP
mov rdi,[rsi+30] // pList
imul rdx,rcx,00000018
add rdx,rdi // pLEnd
_MonUD00:
mov rbp,[rbx]
mov eax,[rbx+08]
cmp rbp,[rdi]
je _MonUD01
lea rdi,[rdi+18]
cmp rdi,rdx
js _MonUD00
jmp _ExitMUP // Something wrong, exit.
_MonUD01:
mov [rdi+10],eax
mov rdi,[rsi+30]
lea rbx,[rbx+10]
loop _MonUD00
mov eax,#1000
mov [rsi+5C],eax
_MonUD0X:
dec eax
cmp [rsi+58],eax
jns _ExitMUP
mov [rsi+58],eax
_ExitMUP:
pop rbp
pop rsi
pop rdi
pop rdx
pop rcx
pop rbx
mov eax,[rbx+5C] // Original code
mov [rbx+000000A0],r9d // Original code
jmp _BackMUP // Back to main code
//========================================= 1.12.1 *
// - When updating Networking Creation Progress
_MonNetProg:
mov dword ptr [aLast],'_MNP'
cmp dword ptr [iEnableMNP],0
je _ExitMNP // Jump if feature is disabled
test ecx,ecx
jz _ExitMNP
test r15,r15
jz _ExitMNP
mov eax,[r15+00000088]
cmp eax,[iPlayerID]
jne _ExitMNP
mov eax,#100000
cmp ecx,eax
jns _ExitMNP
mov ecx,eax
_ExitMNP:
mov rax,[rbp+10] // Original code
mov [r14+rax+20],ecx // Original code (upd prog)
jmp _BackMNP // Back to main code
//========================================= 1.12.1 *
// - 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.10.4 #
// - 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,2
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
//========================================= 1.11.10 (New)
// - When construction Railways (during turn)
// RCX/R8 are safe
_MonRailWay:
mov dword ptr [aLast],'_MRW'
mov r8,[rsi+28] // Original code
mov edx,[rsi+20] // Original code
cmp dword ptr [iEnableMRW],0
je _ExitMRW // Jump if feature is disabled
cmp r8,[pPlayer1]
jne _ExitMRW
mov edx,#200
_ExitMRW:
jmp _BackMRW // Back to main code
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE7.4 Script by Recifense 221012'
//=========================================
// 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
iEnableMRW:
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 'CE74'
//=========================================
// Hacking Points
MOHP:
jmp _MonHumanPlayer
nop
_BackMHP:
MOCP:
jmp _MonConstProg
nop
nop
nop
_BackMCP:
MOPP:
jmp _MonProdProg
nop
nop
_BackMPP:
MPP1:
jmp _MonProdProg1
nop
nop
_BackPP1:
MPP2:
jmp _MonProdProg2
nop
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
nop
nop
_BackGMD:
GMDS:
jmp _GodModeS
nop
_BackGMS:
GDS2:
jmp _GodModeS2
nop
_BackGS2:
MOSR:
jmp _MonSelRegion
nop
nop
_BackMSR:
MOMR:
// jmp _MonMinResource
// nop
// nop
// nop
_BackMMR:
MOMM:
jmp _MonMinMP
jmp _MonMinMP
nop
_BackMMM:
MOAC:
jmp _MonAgencyConst
nop
_BackMAC:
MOAU:
jmp _MonAgencyUpg
nop
_BackMAU:
MOOR:
jmp _MonOperRec
nop
_BackMOR:
MODP:
jmp _MonDecryptProg
_BackMDP:
MUDP:
jmp _MonUnitDeployProg
jmp _MonUnitDeployProg
_BackMUP:
MONP:
jmp _MonNetProg
nop
nop
nop
nop
_BackMNP:
MOOP:
jmp _MonOperProg
nop
_BackMOP:
MOPH:
jmp _MonOperPhase
nop
nop
_BackOPH:
MORW:
jmp _MonRailWay
nop
nop
_BackMRW:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOHP:
// mov edx,[rsi+000001CC]
db 8B 96 CC 01 00 00
MOCP:
// mov edx,[rbx+38]
// mov ebp,FFFFFFFF
db 8B 53 38 BD FF FF FF FF
MOPP:
// mov r10d,[rsi+38]
// add r10d,r9d
db 44 8B 56 38 45 03 D1
MPP1:
// mov edx,[rdi+38]
// add edx,[rsp+48]
db 8B 57 38 03 54 24 48
MPP2:
// mov [rbx+38],r8d
// cmp r8d,ecx
db 44 89 43 38 44 3B C1
MORP:
// add [rdi+00000124],ecx
db 01 8F 24 01 00 00
MOFP:
// cmp ecx,[rax+00000430]
db 3B 88 30 04 00 00
MOSF:
// mov rax,[rdx+00000218]
db 48 8B 82 18 02 00 00
MOAM:
// cmp [r14+00000258],ebx
db 41 39 9E 58 02 00 00
MAM1:
// mov eax,[r14+00000258]
db 41 8B 86 58 02 00 00
//MOPS:
// mov rcx,[rdx]
// add rdx,08
// db 48 8B 0A 48 83 C2 08
GDMD:
// mov rax,[rcx+00000370]
db 48 8B 81 70 03 00 00
GMDS:
// mov [rcx+00000380],edx
db 89 91 80 03 00 00
GDS2:
// mov [rbp+00000384],ecx
db 89 8D 84 03 00 00
MOSR:
// mov rax,[rdi+00000120]
db 48 8B 87 20 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+00000448]
// mov rcx,[rcx+rbx*8]
db 48 8B 8E 48 04 00 00 48 8B 0C D9
MOAC:
// cmp [rdi+000000B4],eax
db 39 87 B4 00 00 00
MOAU:
// cmp [rdi+000000B4],eax
db 39 87 B4 00 00 00
MOOR:
// mov [rdi+000000D8],ecx
db 89 8F D8 00 00 00
MODP:
// add eax,ebx
// mov [rdi+1C],eax
db 03 C3 89 47 1C
MUDP:
// mov eax,[rbx+5C]
// mov [rbx+000000A0],r9d
db 8B 43 5C 44 89 8B A0 00 00 00
MONP:
// mov rax,[rbp+10]
// mov [r14+rax+20],ecx
db 48 8B 45 10 41 89 4C 06 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
MORW:
// mov r8,[rsi+28]
// mov edx,[rsi+20]
db 4C 8B 46 28 8B 56 20
//=========================================
// 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(iEnableMRW)
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(MOSR)
unregistersymbol(MOMR)
unregistersymbol(MOMM)
unregistersymbol(MOSR)
unregistersymbol(MOMR)
unregistersymbol(MOMM)
unregistersymbol(MOAC)
unregistersymbol(MOAU)
unregistersymbol(MOOR)
unregistersymbol(MODP)
unregistersymbol(MONP)
unregistersymbol(MOOP)
unregistersymbol(MOPH)
unregistersymbol(MUDP)
unregistersymbol(MORW)
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}
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}
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}
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 (***) (PENDING)"
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 (PENDING)"
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("iEnableOPH",0)
memrec.Color = 0x00c08000
{$ASM}
303
"[X] <== Each Railway Construction in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRW",1)
memrec.Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRW",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
20221012
===========================================
Game Title : Hearts of Iron IV (x64)
Game Version : 1.12.3 (f3bb) (By Blood Alone)
Game Sponsor : TheSaviour + PF (DLCs)
Process Name : hoit4.exe
Relevant Info : 64bits/RTS/New Engine
Script Version: 9.1 (for x64)(AOB)
CE Version : 7.4
Release date : 12-Oct-2022
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)
10-Apr-2020: Release for v1.9.1-6d23 (s8.3)
06-May-2020: Release for v1.9.2-a73d (s8.4)
04-Jun-2020: Release for v1.9.3-a7a4 (s8.5)
16-Oct-2020: Release for v1.10.1-dd56 (s8.6) (Battle for the Bosporus)
12-Nov-2020: Release for v1.10.2-f82d (s8.7)
26-Nov-2020: Release for v1.10.3-aa89 (s8.8) (AOB)
07-Feb-2021: Release for v1.10.4-8878 (s8.9) (AOB)
15-Apr-2021: Release for v1.10.5-502a (s8.10)(AOB)
26-Nov-2021: Release for v1.11.2-7844 (s8.11) (No Step Back)
15-Dec-2021: Release for v1.11.4-b22c (s8.12)
30-Jan-2022: Release for v1.11.5-7e1e (s8.13)(CE7.4)
17-Feb-2022: Release for v1.11.7-98bf (s8.14)(CE7.4)
03-Apr-2022: Release for v1.11.9-3f99 (s8.15) (not finished)
09-Apr-2022: Release for v1.11.10-09ac (s8.16) + New feature
29-Sep-2022: Release for v1.12.1-a74e (s9.0) (By Blood Alone)
12-Oct-2022: Release for v1.12.3-f3bb (s9.1) + Fix GM/WF
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] (new) (s8.0)(La Resistance)
- Agency Upgrade in 1 day [I] (new) (s8.0)(La Resistance)
- Operative Recruitment in 1 day [J] (new) (s8.0)(La Resistance)
- Cipher Decrypting in 1 Day [K] (new) (s8.0)(La Resistance)
- Deployment in 1 Day [L] (new) (s8.2)
- Network Creation in 1 Days [M] (new) (s8.2)(La Resistance)
- Intel Operation in 1 Day [N] (new) (s8.2)(La Resistance)
- Each Operation Phase in 3 Days [O] (new) (s8.2)(La Resistance)
- Each railway in 1 day [P] (brand-new) (S8.16)
- Some Pointers [Q]
===========================================
[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] That's it; :)
[Q] 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.
(***) If you are using "Minimum Natural Resources (250)" and decides to load/play a different faction/Country, you HAVE to close the game and re-start CE and GAME. If you don't do that the previous faction natural resources will remain changed. The reason for that is that the game does not reflesh those numbers.
===========================================
[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 using the cheats.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
Cheers!