5
"[X] <== Hearts of Iron IV v1.3.3 (2dd2) Steam Script v4.3"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Hearts of Iron IV
Game Version : 1.3.3 (2dd2)
Game Sponsor : TheSaviour
Process Name : hoit4.exe
Relevant Info : 32bits/RTS/New Engine
Script Version: 4.3
CE Version : 6.6 (6.5)
Release date : 04-Mar-2017
Author : Recifense
History:
09-Jun-16: First Release
12-Jun-16: More features (GM ships/MP/Natural Resources)(s2.0)
13-Jun-16: Release for v1.0.1
18-Jun-16: Fixed for GMS + 2 new feature (s3.0)
01-Jul-16: Release for v1.1.0
03-Jul-16: Added "Weak Fow" (s4.0)
17-Sep-16: Release for v1.2.0
16-Dec-16: Release for v1.3.0
16-Dec-16: Release for v1.3.1
17-Jan-17: Release for v1.3.2 (Back to CE65)
27-Feb-17: Release for v1.3.3
04-Mar-17: Fixed for Construction and Weak foe for army combat (s4.3)
Features:
- Minimum Political Points (660)
- 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 (6600)
- Fill up player squadrons (s3.0)
- Fast Recover Infrastructure (s3.0)
- Weak Fow (s4.0)
- Some Pointers
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 6.5) then
ShowMessage('Sorry. CE version should be 6.5 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif (process ~= "hoi4.exe") then
ShowMessage('Error. Expected Process = hoi4.exe')
end
{$asm}
//=========================================
// Definitions
define(LUDO,"hoi4.exe")
define(MOHP,hoi4.exe+0048df8d) //===#==#
define(MOCP,hoi4.exe+002aa9f2) //===X==#
define(MORP,hoi4.exe+0021d188) //===#==#
define(MOPP,hoi4.exe+002adbd7) //===#==#
define(MPP1,hoi4.exe+002ae065) //===#==#
define(MOAM,hoi4.exe+0031b32e) //===#==#
define(MAM1,hoi4.exe+0031b1d7) //===#==#
define(GDMD,hoi4.exe+0022ad00) //#==#==#
define(GMDS,hoi4.exe+00241eb3) //======#
define(MOMR,hoi4.exe+0030648c) //======#
define(MOMM,hoi4.exe+002830b5) //======#
define(MMM1,hoi4.exe+002830d6) //======#
define(MOSF,hoi4.exe+0020f712) //===#==#
define(MOSR,hoi4.exe+00505d99) //===#==#
define(MOPS,hoi4.exe+005424c0) //N#X===#
define(MOPI,hoi4.exe+0068bb52) //N==#==#
//=========================================
// Constants used in the script (that can be changed)
define(ctCE66,(float)6.6)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
assert(MOHP,8b 83 94 03 00 00 6a 00 ff b0 88 00 00 00 e8 ?? ?? ?? ?? 8b f0 c6)
assert(MOCP,01 4b 28 bf e8 03 00 00 85 f6 0f 84 ?? ?? ?? ?? 80 7b 4c 00 0f 84)
assert(MORP,01 86 a4 00 00 00 5e 8b e5 5d c3 cc cc cc cc ?? ?? ?? ?? ?? ?? ??)
assert(MOPP,01 4b 28 8b 73 44 8b 43 28 8b b6 1c 01 00 00 85 f6 ?? ?? 83 c9 ff)
assert(MPP1,01 4b 28 8b 4b 44 8b 43 28 8b 89 1c 01 00 00 85 c9 ?? ?? 83 c9 ff)
assert(MOAM,39 b3 dc 00 00 00 0f 8c ?? ?? ?? ?? 39 7b 6c ?? ?? 80 3d ?? ?? ??)
assert(MAM1,39 83 dc 00 00 00 ?? ?? 89 83 dc 00 00 00 84 c9 0f 84 ?? ?? ?? ??)
assert(GDMD,55 8b ec 8b 55 08 83 ec 0c 80 7d 10 00 ?? ?? 01 91 c0 01 00 00 01)
assert(GMDS,8b 8b 38 02 00 00 3b c1 ?? ?? 89 8b 34 02 00 00 2b 7d 08 8b 4d f8)
assert(MOMR,8b 48 68 8b 46 1c c1 e1 05 03 4b 40 01 41 1c 8b 4d fc 41 89 4d fc)
assert(MOMM,03 b0 7c 01 00 00 8b 41 fc 03 b8 7c 01 00 00 83 ea 01 ?? ?? 8b 45)
assert(MMM1,8b 90 7c 01 00 00 8d 04 3e 5f 5e 03 c2 5b 8b e5 5d c2 04 00 cc cc)
assert(MOSF,8b 81 b4 00 00 00 8d 4d fc 8b 58 64 8b 47 04 89 5d fc 3b c8 ?? ??)
assert(MOSR,8b 87 b8 00 00 00 33 f6 05 c0 00 00 00 89 45 f0 8b 58 04 2b 18 c1)
assert(MOPS,8b 40 20 8b 04 88 8b 50 40 8d 04 3e 8b 7d f4 8b 75 08 03 c2 03 f8)
assert(MOPI,8b 4f 28 33 c0 2b 4f 24 85 c9 0f 8e ?? ?? ?? ?? 8b 57 24 80 3c 10)
//=========================================
alloc(MyCode,4096,$process)
//=========================================
// Declaration section
label(_MonHumanPlayer)
label(_MonHP00)
label(_BackMHP)
label(_ExitMHP)
label(_MonConstProg)
label(_BackMCP)
label(_ExitMCP)
label(_MonResearchProg)
label(_BackMRP)
label(_ExitMRP)
label(_MonProdProg)
label(_BackMPP)
label(_ExitMPP)
label(_MonProdProg1)
label(_BackPP1)
label(_ExitPP1)
label(_MonArmyFleetMove)
label(_BackMAM)
label(_ExitMAM)
label(_MonArmyFleetMove1)
label(_BackAM1)
label(_ExitAM1)
label(_GodMode)
label(_BackGMD)
label(_ExitGMD)
label(_GodModeS)
label(_BackGMS)
label(_ExitGMS)
label(_MonMinResource)
label(_BackMMR)
label(_ExitMMR)
label(_MonMinMP)
label(_BackMMM)
label(_ExitMMM)
label(_MonMinMP1)
label(_BackMM1)
label(_ExitMM1)
label(_MonSelArmyFleet)
label(_BackMSF)
label(_ExitMSF)
label(_MonSelRegion)
label(_BackMSR)
label(_ExitMSR)
label(_MonPlayerSquadrons)
label(_BackMPS)
label(_ExitMPS)
label(_MonPlayerInfra)
label(_BackMPI)
label(_ExitMPI)
label(iEnableMPP)
label(iEnableMMR)
label(iEnableMCP)
label(iEnableMRP)
label(iEnablePNP)
label(iEnableMAM)
label(iEnableGMD)
label(iEnableMMM)
label(iEnableMPS)
label(iEnableMPI)
label(iEnableMWF)
label(pPlayer)
label(pPlayer1)
label(pPlayer2)
label(pArmyFleet)
label(pRegion)
label(iPlayerID)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMPP)
registersymbol(iEnableMMR)
registersymbol(iEnableMCP)
registersymbol(iEnableMRP)
registersymbol(iEnablePNP)
registersymbol(iEnableMAM)
registersymbol(iEnableGMD)
registersymbol(iEnableMMM)
registersymbol(iEnableMPS)
registersymbol(iEnableMPI)
registersymbol(iEnableMWF)
registersymbol(iPlayerID)
registersymbol(pPlayer)
registersymbol(pPlayer1)
registersymbol(pPlayer2)
registersymbol(pArmyFleet)
registersymbol(pRegion)
//=========================================
MyCode:
//========================================= 1.3.3 *
// - Find out the Human Player
// - Minimum Political Points
_MonHumanPlayer:
push edx
mov [pPlayer],ebx
mov eax,[ebx+00000380]
mov [pPlayer1],eax
mov eax,[ebx+0000037c]
mov [pPlayer2],eax
mov eax,[ebx+0c]
mov [iPlayerID],eax
cmp dword ptr [iEnableMPP],0
je _MonHP00 // Jump if feature is disabled
mov eax,#660000
mov edx,[ebx+00000394]
cmp [edx+00000088],eax
jns _MonHP00
mov [edx+00000088],eax
_MonHP00:
_ExitMHP:
pop edx
mov eax,[ebx+00000394] // Original code (get pPP)
jmp _BackMHP // Back to main code
//========================================= 1.3.3 * (s4.3)
// - Construction Progress (when day changes)
_MonConstProg:
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
mov edi,[ebx+1c]
cmp edi,[pPlayer1]
jne _ExitMCP
mov edi,[ebx+20]
cmp [ebx+28],edi
jns _ExitMCP
mov [ebx+28],edi
_ExitMCP:
add [ebx+28],ecx // Original code (upd prog)
mov edi,000003E8 // Original code
jmp _BackMCP // Back to main code
//========================================= 1.3.3 *
// - Research Progress (when day changes)
_MonResearchProg:
push eax
cmp dword ptr [iEnableMRP],0
je _ExitMRP // Jump if feature is disabled
mov eax,[esi+00000088]
cmp eax,[pPlayer2]
jne _ExitMRP
mov eax,[esi+0000008c]
test eax,eax
jz _ExitMRP
mov eax,[eax+00000188]
add eax,eax
imul eax,eax,64
test eax,eax
js _ExitMRP
cmp eax,[esi+000000a4]
js _ExitMRP
mov [esi+000000a4],eax
_ExitMRP:
pop eax
add [esi+000000A4],eax // Original code (upd prog)
jmp _BackMRP // Back to main code
//========================================= 1.3.3 *
// - Production Progress (airplanes, weapons, etc) (when day changes)
_MonProdProg:
cmp dword ptr [iEnablePNP],0
je _ExitMPP // Jump if feature is disabled
mov esi,[ebx+1c]
cmp esi,[pPlayer1]
jne _ExitMPP
mov esi,[ebx+20]
add esi,esi
cmp [ebx+28],esi
jns _ExitMPP
mov [ebx+28],esi
_ExitMPP:
add [ebx+28],ecx // Original code (upd prog)
mov esi,[ebx+44] // Original code
jmp _BackMPP // Back to main code
//========================================= 1.3.3 *
// - Production Progress (ship) (when day changes)
_MonProdProg1:
cmp dword ptr [iEnablePNP],0
je _ExitPP1 // Jump if feature is disabled
mov eax,[ebx+1c]
cmp eax,[pPlayer1]
jne _ExitPP1
mov eax,[ebx+20]
add eax,eax
cmp [ebx+28],eax
jns _ExitPP1
mov [ebx+28],eax
_ExitPP1:
add [ebx+28],ecx // Original code (upd prog)
mov ecx,[ebx+44] // Original code
jmp _BackPP1 // Back to main code
//========================================= 1.3.3 *
// - Movement in 1 hour (When Army/Fleet is moving)
_MonArmyFleetMove:
cmp dword ptr [iEnableMAM],0
je _ExitMAM // Jump if feature is disabled
call _ChkThisArmyFleet
jnz _ExitMAM
cmp [ebx+000000dc],esi
jns _ExitMAM
mov [ebx+000000dc],esi
_ExitMAM:
cmp [ebx+000000DC],esi // Original code (chk Move)
jmp _BackMAM // Back to main code
//========================================= 1.3.3 *
// - Movement in 1 hour (When Army/Fleet is moving during battle)
_MonArmyFleetMove1:
cmp dword ptr [iEnableMAM],0
je _ExitAM1 // Jump if feature is disabled
call _ChkThisArmyFleet
jnz _ExitAM1
cmp [ebx+000000dc],eax
jns _ExitAM1
mov [ebx+000000dc],eax
_ExitAM1:
cmp [ebx+000000DC],eax // Original code (chk Move)
jmp _BackAM1 // Back to main code
//========================================= 1.3.3 * (s4.3)
// - When in battle (army)
_GodMode:
push ebp // Original code
mov ebp,esp // Original code
push ebx
cmp dword ptr [iEnableGMD],0
je _GodMD00 // Jump if feature is disabled
mov ebx,ecx
call _ChkThisArmyFleet
jnz _GodMD00
mov ebx,[ecx+54]
test ebx,ebx
jz _ExitGMD
mov edx,[ebx+00000184]
mov [ecx+000001b4],edx
mov edx,[ebx+00000188]
mov [ecx+000001b0],edx
xor edx,edx
mov [ebp+08],edx
mov [ebp+0c],edx
mov [ecx+000001c4],edx
mov [ecx+000001c8],edx
jmp _ExitGMD
//==
_GodMD00:
cmp dword ptr [iEnableMWF],0 // s4.0
je _ExitGMD // Jump if feature is disabled
mov ebx,[ebp+0000010c]
call _ChkThisArmyFleet
jnz _ExitGMD
mov edx,[ebx+000001b4]
mov [ebp+0c],edx
mov edx,[ebx+000001b0]
shr edx,1
cmp [ebp+08],edx
jns _ExitGMD
mov [ebp+08],edx
_ExitGMD:
pop ebx
mov edx,[ebp+08] // Original code
jmp _BackGMD // Back to main code
//========================================= (s4.0) 1.3.3 *
// - When in battle (ships)
_GodModeS:
cmp dword ptr [iEnableGMD],0
je _GodMDS0 // Jump if feature is disabled
push ebx
mov ebx,[ebx+00000254]
call _ChkThisArmyFleet
pop ebx
jnz _GodMDS0
mov ecx,[ebx+000001d0]
mov [ebx+00000230],ecx
mov ecx,[ebx+000001d4]
mov [ebx+0000022c],ecx
xor ecx,ecx
mov [ebp+08],ecx
mov [ebp+0c],ecx
jmp _ExitGMS
//==
_GodMDS0:
cmp dword ptr [iEnableMWF],0 // s4.0
je _ExitGMS // Jump if feature is disabled
mov ecx,[ebx+00000254]
test ecx,ecx
jz _ExitGMS
mov ecx,[ecx+00000108]
test ecx,ecx
jz _ExitGMS
mov ecx,[ecx]
cmp ecx,[iPlayerID]
jne _ExitGMS
mov ecx,[ebx+00000230]
mov [ebp+0c],ecx
mov ecx,[ebx+0000022c]
shr ecx,1
cmp ecx,[ebp+08]
js _ExitGMS
mov [ebp+08],ecx
_ExitGMS:
mov ecx,[ebx+00000238] // Original code (get maxXP)
jmp _BackGMS // Back to main code
//========================================= 1.3.3 *
// - As time changes
_MonMinResource:
cmp dword ptr [iEnableMMR],0
je _ExitMMR // Jump if feature is disabled
mov ecx,[ebp+08]
cmp ecx,[pPlayer]
jne _ExitMMR
mov ecx,#250000
cmp [esi+1c],ecx
jns _ExitMMR
mov [esi+1c],ecx
_ExitMMR:
mov ecx,[eax+68] // Original code
mov eax,[esi+1C] // Original code (get resource)
jmp _BackMMR // Back to main code
//========================================= 1.3.3 *
// - All the time (Manpower)
_MonMinMP:
push ebx
push edx
cmp dword ptr [iEnableMMM],0
je _ExitMMM // Jump if feature is disabled
mov ebx,[ebp-08]
cmp ebx,[pPlayer]
jne _ExitMMM
mov ebx,#6600
cmp [eax+0000017c],ebx
jns _MonMM00
mov [eax+0000017c],ebx
_MonMM00:
mov edx,[ecx-04]
cmp [edx+0000017c],ebx
jns _ExitMMM
mov [edx+0000017c],ebx
_ExitMMM:
pop edx
pop ebx
add esi,[eax+0000017C] // Original code
jmp _BackMMM // Back to main code
//========================================= 1.3.3 *
// - All the time (Manpower)
_MonMinMP1:
cmp dword ptr [iEnableMMM],0
je _ExitMM1 // Jump if feature is disabled
mov edx,[ebp-08]
cmp edx,[pPlayer]
jne _ExitMM1
mov edx,#6600
cmp [eax+0000017c],edx
jns _ExitMM1
mov [eax+0000017c],edx
_ExitMM1:
mov edx,[eax+0000017C] // Original code
jmp _BackMM1 // Back to main code
//========================================= 1.3.3 *
// - When Army/Fleet is selected
_MonSelArmyFleet:
mov [pArmyFleet],ecx
_ExitMSF:
mov eax,[ecx+000000B4] // Original code (get pLocation)
jmp _BackMSF // Back to main code
//========================================= 1.3.3 *
// - When a Province region is selected
_MonSelRegion:
mov eax,[edi+000000B8] // Original code (ppInfras)
_ExitMSR:
mov [pRegion],eax
jmp _BackMSR // Back to main code
//========================================= s3.0 v1.3.3 *
// - All the time
_MonPlayerSquadrons:
push ebx
mov eax,[eax+20] // Original code
mov eax,[eax+ecx*4] // Original code (get squadron)
cmp dword ptr [iEnableMPS],0
je _ExitMPS // Jump if feature is disabled
mov edx,[ebp-28]
cmp edx,[pPlayer]
jne _ExitMPS
mov edx,[eax+48]
cmp edx,[eax+40]
js _ExitMPS
mov [eax+40],edx
imul edx,edx,#1000
mov ebx,[eax+000000cc]
test ebx,ebx
jz _ExitMPS
mov [ebx+0c],edx
mov ebx,[eax+000000d8]
test ebx,ebx
jz _ExitMPS
mov [ebx+04],edx
_ExitMPS:
pop ebx
mov edx,[eax+40] // Original code
jmp _BackMPS // Back to main code
//========================================= (s3.0) 1.3.3 *
// - When looking at the repair queue (at construction)
_MonPlayerInfra:
push ebx
cmp dword ptr [iEnableMPI],0
je _ExitMPI // Jump if feature is disabled
mov ebx,[ebx+000001c8]
mov eax,[ebx+1c]
cmp eax,[pPlayer1]
jne _ExitMPI
mov ecx,[edi+28]
mov ebx,[edi+24]
mov eax,#100
_MonPI00:
cmp ebx,ecx
je _ExitMPI
mov [ebx],al
inc ebx
jmp _MonPI00
_ExitMPI:
pop ebx
mov ecx,[edi+28] // Original code
xor eax,eax // Original code
jmp _BackMPI // Back to main code
//========================================= 1.3.3 *
// - Check if an army/fleet belongs to the human player
// Entry : EBX = pArmy/pFleet
// Output: Z ON = found
_ChkThisArmyFleet:
push eax
push ecx
push edx
mov eax,[pPlayer]
mov ecx,[eax+0000014c]
mov edx,[eax+00000150]
test edx,edx
jz _ChkTA01
cmp ecx,edx
jns _ChkTA01
_ChkTA00:
cmp ebx,[ecx]
je _ExitCTA
add ecx,4
cmp ecx,edx
js _ChkTA00
_ChkTA01:
mov ecx,[eax+00000140]
mov edx,[eax+00000144]
test edx,edx
jz _ChkTA03
cmp ecx,edx
jns _ChkTA03
_ChkTA02:
cmp ebx,[ecx]
je _ExitCTA
add ecx,4
cmp ecx,edx
js _ChkTA02
_ChkTA03:
mov ecx,1
test ecx,ecx
_ExitCTA:
pop edx
pop ecx
pop eax
ret
//=========================================
db '=================================>'
db 'CE6.6 Script by Recifense 030417'
//=========================================
// 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
iEnableMPI:
dd 0
iEnableMWF:
dd 0
iPlayerID:
dd #999999
pPlayer:
dd MyCode
pPlayer1:
dd MyCode
pPlayer2:
dd MyCode
pArmyFleet:
dd 0
pRegion:
dd 0
//=========================================
// Hacking Points
MOHP:
jmp _MonHumanPlayer
nop
_BackMHP:
MOCP:
jmp _MonConstProg
nop
nop
nop
_BackMCP:
MORP:
jmp _MonResearchProg
nop
_BackMRP:
MOPP:
jmp _MonProdProg
nop
_BackMPP:
MPP1:
jmp _MonProdProg1
nop
_BackPP1:
MOAM:
jmp _MonArmyFleetMove
nop
_BackMAM:
MAM1:
jmp _MonArmyFleetMove1
nop
_BackAM1:
GDMD:
jmp _GodMode
nop
_BackGMD:
GMDS:
jmp _GodModeS
nop
_BackGMS:
MOMR:
jmp _MonMinResource
nop
_BackMMR:
MOMM:
jmp _MonMinMP
nop
_BackMMM:
MMM1:
jmp _MonMinMP1
nop
_BackMM1:
MOSF:
jmp _MonSelArmyFleet
nop
_BackMSF:
MOSR:
jmp _MonSelRegion
nop
_BackMSR:
MOPS:
jmp _MonPlayerSquadrons
nop
nop
nop
nop
_BackMPS:
MOPI:
jmp _MonPlayerInfra
_BackMPI:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOHP:
// mov eax,[ebx+00000394]
db 8b 83 94 03 00 00
MOCP:
// add [ebx+28],ecx
// mov edi,000003E8
db 01 4b 28 bf e8 03 00 00
MORP:
// add [esi+000000A4],eax
db 01 86 a4 00 00 00
MOPP:
// add [ebx+28],ecx
// mov esi,[ebx+44]
db 01 4b 28 8b 73 44
MPP1:
// add [ebx+28],ecx
// mov ecx,[ebx+44]
db 01 4b 28 8b 4b 44
MOAM:
// cmp [ebx+000000DC],esi
db 39 b3 dc 00 00 00
MAM1:
// cmp [ebx+000000DC],eax
db 39 83 dc 00 00 00
GDMD:
// push ebp
// mov ebp,esp
// mov edx,[ebp+08]
db 55 8b ec 8b 55 08
GMDS:
// mov ecx,[ebx+00000238]
db 8b 8b 38 02 00 00
MOMR:
// mov ecx,[eax+68]
// mov eax,[esi+1C]
db 8b 48 68 8b 46 1c
MOMM:
// add esi,[eax+0000017C]
db 03 b0 7c 01 00 00
MMM1:
// mov edx,[eax+0000017C]
db 8b 90 7c 01 00 00
MOSF:
// mov eax,[ecx+000000B4]
db 8b 81 b4 00 00 00
MOSR:
// mov eax,[edi+000000B8]
db 8b 87 b8 00 00 00
MOPS:
// mov eax,[eax+20]
// mov eax,[eax+ecx*4]
// mov edx,[eax+40]
db 8b 40 20 8b 04 88 8b 50 40
MOPI:
// mov ecx,[edi+28]
// xor eax,eax
db 8b 4f 28 33 c0
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMPP)
unregistersymbol(iEnableMMR)
unregistersymbol(iEnableMCP)
unregistersymbol(iEnableMRP)
unregistersymbol(iEnablePNP)
unregistersymbol(iEnableMAM)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMMM)
unregistersymbol(iEnableMPS)
unregistersymbol(iEnableMPI)
unregistersymbol(iEnableMWF)
unregistersymbol(iPlayerID)
unregistersymbol(pPlayer)
unregistersymbol(pPlayer1)
unregistersymbol(pPlayer2)
unregistersymbol(pArmyFleet)
unregistersymbol(pRegion)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
96
"[X] <== Minimum Political Power"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPP",1)
getAddressList().getMemoryRecordByID(96).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPP",0)
getAddressList().getMemoryRecordByID(96).Color = 0x00c08000
{$ASM}
97
"[X] <== Minimum Natural Resources"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMR",1)
getAddressList().getMemoryRecordByID(97).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMR",0)
getAddressList().getMemoryRecordByID(97).Color = 0x00c08000
{$ASM}
98
"[X] <== Construction in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCP",1)
getAddressList().getMemoryRecordByID(98).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCP",0)
getAddressList().getMemoryRecordByID(98).Color = 0x00c08000
{$ASM}
99
"[X] <== Research in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRP",1)
getAddressList().getMemoryRecordByID(99).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRP",0)
getAddressList().getMemoryRecordByID(99).Color = 0x00c08000
{$ASM}
100
"[X] <== Production in 1 Day"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnablePNP",1)
getAddressList().getMemoryRecordByID(100).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnablePNP",0)
getAddressList().getMemoryRecordByID(100).Color = 0x00c08000
{$ASM}
101
"[X] <== Movement to adjacent region in 1 Hour"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMAM",1)
getAddressList().getMemoryRecordByID(101).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMAM",0)
getAddressList().getMemoryRecordByID(101).Color = 0x00c08000
{$ASM}
102
"[X] <== God Mode"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMD",1)
getAddressList().getMemoryRecordByID(102).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
getAddressList().getMemoryRecordByID(102).Color = 0x00c08000
{$ASM}
229
"[X] <== Minimum Manpower per State"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMM",1)
getAddressList().getMemoryRecordByID(229).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMM",0)
getAddressList().getMemoryRecordByID(229).Color = 0x00c08000
{$ASM}
235
"[X] <== Fill up Player Squadrons"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPS",1)
getAddressList().getMemoryRecordByID(235).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPS",0)
getAddressList().getMemoryRecordByID(235).Color = 0x00c08000
{$ASM}
241
"[X] <== Infrastructure Fast Repair"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPI",1)
getAddressList().getMemoryRecordByID(241).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPI",0)
getAddressList().getMemoryRecordByID(241).Color = 0x00c08000
{$ASM}
245
"[X] <== Weak Fow"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMWF",1)
getAddressList().getMemoryRecordByID(245).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMWF",0)
getAddressList().getMemoryRecordByID(245).Color = 0x00c08000
{$ASM}
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20170304
===========================================
Game Title : Hearts of Iron IV
Game Version : 1.3.3 (2dd2)
Game Sponsor : TheSaviour
Process Name : hoit4.exe
Relevant Info : 32bits/RTS/New Engine
Script Version: 4.3
CE Version : 6.6 (6.5)
Release date : 04-Mar-2017
Author : Recifense
History:
09-Jun-16: First Release
12-Jun-16: More features (GM ships/MP/Natural Resources)(s2.0)
13-Jun-16: Release for v1.0.1
18-Jun-16: Fixed for GMS + 2 new feature (s3.0)
01-Jul-16: Release for v1.1.0
03-Jul-16: Added "Weak Fow" (s4.0)
17-Sep-16: Release for v1.2.0
16-Dec-16: Release for v1.3.0
16-Dec-16: Release for v1.3.1
17-Jan-17: Release for v1.3.2 (Back to CE65)
27-Feb-17: Release for v1.3.3
04-Mar-17: Fixed for Construction and Weak foe for army combat (s4.3)
Features:
- Minimum Political Points (660) [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 (6600) [8]
- Fill up player squadrons (s3.0) [9]
- Fast Recover Infrastructure (s3.0)[A]
- Weak Foe (S4.0) [B]
- Some Pointers [C]
===========================================
[1] It will not go under 660;
[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 6600;
[9] The planes will replaced very quickly;
[A] Infrastructures will be repaired in 1 day (**);
[B] Battles involving the Human Player will end quickly (army/fleet);
[C] 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 CE65 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!