3
"[X] <== Warhammer 2 Total War v1.9.1-15282 Steam Script v7.9 LJ"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Total War - Warhammer 2
Game Version : 1.9.1 (15282)
Game Sponsor : Myself (Game+DLCs) (with Patreon's fund)
Process Name : Warhammer2.exe
Relevant Info : 64bits/TBS/RTS
Script Version: 7.9 (LJ)
CE Version : 7.0
Release date : 29-May-2020
Author : Recifense
History:
29-Sep-2017: First Release
30-Sep-2017: Trying to Fix Construction + Minimum Food (s2.0)
01-Oct-2017: Added "Rites Cooldown in 1 turn" and fix "CanActAgain" (s3.0)
03-Oct-2017: Included Arks in Pop Surplus (s3.1)
10-Oct-2017: God Mode for Auto-Resolve battles and Troop Quick Level Up (s3.2)
26-Oct-2017: Release for version 1.1.0-4871
28-Oct-2017: Porting of AMBER features from Warhammer TW (s3.3)
04-Nov-2017: Release for version 1.1.0-5003 beta
09-Nov-2017: Release for version 1.1.1-5078
14-Dec-2017: Release for version 1.2.0-5568
23-Jan-2018: Release for version 1.3.0-6014 (Rise of the Tomb kings)
24-Jan-2018: Added two more features releated to spell durng combat (s5.0)
25-Jan-2018: Include spells related to the army (s5.1)
30-Jan-2018: Minimum Slave per Settlement (Dark Elves) (s5.2)
14-Feb-2018: Release for version 1.3.1-6213 + Min Pop Surplus = 30 (s5.3)
31-May-2018: Release for version 1.4.0-7243
20-Jun-2018: Release for version 1.4.0-7312 Beta (CE68)(s5.4)
21-Jun-2018: Release for version 1.4.1-7450
30-Jun-2018: Include "Ever fresh units (Full Vigour)" (CE67)(s5.5)
10-Nov-2018: Release for version 1.5.0-8774 (s6.0)
11-Nov-2018: Fix for unlimited spell + can Search Treasure again (s6.1)
16-Dec-2018: Release for version 1.5.1-9184 Beta (s6.2)
22-Jan-2019: Release for version 1.5.1-9466 Beta (s6.3)
18-Apr-2019: Release for version 1.6.0-10563 (s6.4)
20-Apr-2019: Skaven Warpstorm and Warp-Fuel + Lizards Sacrificial Offerings (s6.5)
16-May-2019: Release for version 1.6.1-10846 (s6.6)
12-Sep-2019: Release for version 1.7.0-11694 + Feature (Old Ones) (s6.7)(CE70)
17-Sep-2019: Release for version 1.7.1-11765 (s6.8)
23-Sep-2019: Changed the hacking method to long jumps (s7.0)
16-Oct-2019: Release for version 1.7.2-12104 (s7.1)
14-Dec-2019: Release for version 1.8.0-13017 (s7.2)
15-Dec-2019: Fix for crashing during RTS battle (s7.3)
18-Dec-2019: Release for version 1.8.1-13089 (s7.4)
13-Jan-2020: Release for version 1.8.2-13152 (s7.5)
28-Feb-2020: Release for version 1.8.3-13831 (s7.6)
25-May-2020: Release for version 1.9.0-15159 (s7.7) Preliminary
26-May-2020: Fix for Rites/Influence (s7.8)
29-May-2020: Release for version 1.9.1-15282 + New feature (s7.9)
Features:
- God Mode (RTS)
- Full Ammo (RTS)
- Minimum Leadership (GM) (RTS)
- Fast Recover of Winds of Magic (RTS)
- Unlimited use of limited spells (RTS) (s5.0) new
- Spell Quick Cooldown (RTS) (s5.0) new
- Ever fresh units (RTS) (s5.5) new
- Minimum Treasure
- Minimum Influence
- Minimum Food (Skaven)
- Unlimited Action Points
- Recover Troop Size/Hero HP
- Research in 1 turn
- Recruitment in 1 turn
- Construction in 1 turn
- Rites Cooldown in 1 turn
- Minimum Public Order
- Minimum Pop Surplus (including Arks) (s3.1)
- Level almost complete (sel hero XP)
- Hero can Act Again
- Included Search for Treasure (s6.1)
- God Mode for Auto-resolve battles (s3.2)
- Troops Quick Level Up (s3.2)
- Minimum Amber Per Settlement (s3.3)
- Minimum Event Total Amber (s3.3)
- Minimum Slaves Per Settlement (s5.2) (for Dark Elves) (Pending)
- Minimum Special Resources: (s6.5)
- Nukes and Warps (Skaven)
- Sacrificial Offerings (Lizards)
- Minimum Old Ones (s6.7) (for Nakai the Wanderer)
- Minimum Scraps (s7.9) (new) (for Grom the Paunch)
- Some Pointers
===========================================
}
//=========================================
// 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("Warhammer2.exe")) then
ShowMessage('Warning. Expected Process = Warhammer2.exe')
end
{$asm}
//=========================================
{$lua}
-- monoAA_USEMONO(process,false)
if waitForPDB then --this way older CE versions are unaffected (by Dark Byte)
waitForPDB()
end
{$asm}
//=========================================
// Definitions
define(LUDO,"Warhammer2.exe")
define(GDMD,Warhammer2.exe+050325D0) //==================#===#=
define(MOTA,Warhammer2.exe+05B4F7BE) //==============#=#=#===#=
define(GDM2,Warhammer2.exe+055B9840) //============#=====#===#=
define(MOTU,Warhammer2.exe+04CE962A) //================#=#===#= 2 1
define(MOWM,Warhammer2.exe+05326563) //======================#=
define(MOSU,Warhammer2.exe+05177702) //----N=======#=====#===#= (s5.0)
define(MSCD,Warhammer2.exe+0054AEDA) //----N===========#=#===#= (s5.0)
define(CSCD,Warhammer2.exe+005AD880)
define(MSU2,Warhammer2.exe+04C785AC) //----N====#==#=====#===PP (s5.1)
define(MSC2,Warhammer2.exe+0054A95A) //----N===========#=#===#= (s5.1)
define(MOUS,Warhammer2.exe+0563170C) //--------N=======#=#===#= (s5.5)
//--
define(MOHP,Warhammer2.exe+02064F62) //====#====#==#=#=======#=
define(MOAP,Warhammer2.exe+06046A40) //=========#============#=
define(MAP2,Warhammer2.exe+05FB55A7) //=========#==#=#=======#=
define(MAP3,Warhammer2.exe+06421F50) //=========#========#===#=
define(MAP4,Warhammer2.exe+070E1E74) //=========#========#===#=
define(MORP,Warhammer2.exe+063824D6) //=========#======#=====X=
define(JORP,Warhammer2.exe+06382583)
define(MOTR,Warhammer2.exe+06F42C46) //=========#======#=====#=
define(COTR,Warhammer2.exe+00E0A1D0)
define(JOTR,Warhammer2.exe+06F42C5D)
define(MOCP,Warhammer2.exe+079B2960) //=========#============#=
define(MOPO,Warhammer2.exe+06DFD189) //=========#====#=#=#===X=
define(MOPS,Warhammer2.exe+022326AB) //=========#========#===#=
define(MPS2,Warhammer2.exe+06CED87C) //=========#========#===#= (s3.1)
define(MOSH,Warhammer2.exe+01E8E135) //=========#========#===#=
define(MOPF,Warhammer2.exe+02205033) //======================#=
define(MORC,Warhammer2.exe+07578F70) //====#===========#=#===X=
define(MRC2,Warhammer2.exe+07579030) //====#===========#=#===X=
define(GMTB,Warhammer2.exe+05E438F8) //=========#====#=#=====X= (s3.2)
define(MOPA,Warhammer2.exe+08E987B2) //N=================#===#= (s3.3)
define(MSPS,Warhammer2.exe+00b0d0e2) //----N===========#=PPPPPP (s5.2)
define(CSPS,Warhammer2.exe+00afabd0)
define(RPAS,Warhammer2.exe+061739DE) //N=====================#= (s3.3)
define(RPAE,Warhammer2.exe+061739F6) //N=====================#= (s3.3)
//=========================================
// Constants used in the script (that can be changed)
define(ctCE67,(float)7.0)
define(ctMMON,#70000) // Minimum Money
define(ctMINF,#70) // Minimum Influence
define(ctMFOO,#80) // Minimum Food
define(ctMSSR,#12) // Minimum Skaven Special Resources
define(ctMLSR,#500) // Minimum Lizard Special Resource
define(ctMAPS,(float)5.0)
define(ctMAPE,(float)15.0)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
assert(GDMD,44 8B 41 04 45 31 C9 41 29 D0 3B 51 04 45 0F 47 C1 44 89 41 04 8B 01)
assert(MOTA,45 85 C0 74 07 41 8D 48 FF 89 0C 38 84 D2 0F 84 ?? ?? 00 00 85 C9)
assert(GDM2,40 55 56 41 56 48 8D 6C 24 E0 48 81 EC 20 01 00 00 48 8B 81 E8 02 00 00)
assert(MOTU,F3 0F 11 85 A0 00 00 00 48 8B 88 E8 02 00 00 48 85 C9 74 ?? E8 ??)
assert(MOWM,F3 0F 58 47 08 0F 2F C1 F3 0F 11 47 08 76 ?? F3 0F 11 4F 08 49 83)
assert(MOSU,48 8B 46 10 83 78 28 00 7C 03 FF 4E 30 0F 57 F6 48 85 ED ?? ?? 48)
assert(MSCD,48 8B 95 70 3B 00 00 48 8B CE E8 ?? ?? ?? ?? 8B 4E 24 2B C8 89 4E 24)
//assert(MSU2,48 8b 4e 10 83 79 28 00 7c 03 ff 4e 30 0f 57 ff 48 85 db ?? ?? 80)
assert(MSC2,48 8B 95 E0 02 00 00 48 8B CE E8 ?? ?? ?? ?? 8B 4E 24 2B C8 89 4E 24)
assert(MOUS,01 D8 48 8B 5C 24 78 01 87 EC 06 00 00 48 89 F9 E8 ?? ?? ?? ?? 4C)
//--
assert(MOHP,48 8B 8A 88 01 00 00 48 81 C1 D0 02 00 00 E8 ?? ?? ?? ?? 8B F8 4C)
assert(MOAP,44 8B 81 A8 00 00 00 31 C0 45 89 C1 41 29 D1 41 39 D0 41 0F 47 C1)
assert(MAP2,41 8B 85 A8 00 00 00 41 89 87 EC 00 00 00 49 8B 45 70 48 85 C0 ??)
assert(MAP3,44 8B 49 2C 45 31 C0 44 89 C8 29 D0 44 39 CA 44 0F 46 C0 44 89 41 2C)
assert(MAP4,29 C6 89 43 2C 0F 48 F5 48 8B 6C 24 30 01 73 30 48 8B 74 24 38 48)
assert(MORP,44 8B 4A 0C 45 01 C1 44 3B 49 5C 0F 83 ?? ?? ?? ?? 44 89 4A 0C 48)
assert(MOTR,E8 ?? ?? ?? ?? 85 C0 78 ?? 03 43 50 48 83 C4 20 5B C3 B8 FF FF FF)
assert(MOCP,FF 41 0C 8B 41 0C 3B 41 10 0F 93 D0 C3 ?? ?? ?? ?? ?? ?? ?? ?? ??)
assert(MOPO,41 8B 4E 3C 89 4B 0C 41 83 7E 4C 01 ?? ?? 49 8B 0E 48 81 C1 A8 00)
assert(MOPS,44 8B BA 8C 03 00 00 48 8D B2 80 03 00 00 B2 01 48 8B CE E8 ?? ??)
assert(MPS2,48 8B 88 18 06 00 00 48 8B 41 18 8B 40 08 C3 ?? ?? ?? ?? ?? ?? ??)
assert(MOSH,44 8B F0 44 2B F3 41 8B B5 54 02 00 00 2B F3 48 8B 0D ?? ?? ?? ??)
assert(MOPF,48 8B 47 08 8B 40 20 48 8B 5C 24 60 48 8B 74 24 68 48 83 C4 50 5F)
assert(MORC,8B 51 10 8D 42 FF 83 F8 FD 77 06 8D 42 FF 89 41 10 39 79 14 ?? ??)
assert(MRC2,8B 51 08 8D 42 FF 83 F8 FD 77 06 8D 42 FF 89 41 08 48 83 C1 10 4C)
assert(GMTB,48 8B 81 80 00 00 00 49 89 D7 48 89 CD 80 B8 88 01 00 00 00 ?? ??)
assert(MOPA,F3 41 0F 10 48 18 0F 57 C0 0F 2F C8 76 ?? F3 0F 58 0D ?? ?? ?? ??)
//assert(MSPS,48 85 c0 74 0b 8b 50 08 48 8b c8 e8 ?? ?? ?? ?? 48 8b 5c 24 30 48) //??
//=========================================
alloc(MyCode,8000,$process)
//=========================================
alloc(SMSCD,18,$process)
registersymbol(SMSCD)
SMSCD:
readmem(MSCD,18)
//=========================================
alloc(SMSC2,18,$process)
registersymbol(SMSC2)
SMSC2:
readmem(MSC2,18)
//=========================================
alloc(SMORP,17,$process)
registersymbol(SMORP)
SMORP:
readmem(MORP,17)
//=========================================
alloc(SMOTR,12,$process)
registersymbol(SMOTR)
SMOTR:
readmem(MOTR,12)
//=========================================
alloc(SMSPS,16,$process)
registersymbol(SMSPS)
SMSPS:
readmem(MSPS,16)
//=========================================
// Declaration section
label(_GodMode)
label(_BackGMD)
label(_MonTroopAmmo)
label(_BackMTA)
label(_GodMode2)
label(_BackGM2)
label(_MonTroopUnits)
label(_BackMTU)
label(_MonWindsOfMagic)
label(_BackMWM)
label(_MonSpellUse)
label(_BackMSU)
label(_MonSpellCooldown)
label(_BackMSC)
label(_MonSpellUse2)
label(_BackSU2)
label(_MonSpellCooldown2)
label(_BackSC2)
label(_MonUnitStress)
label(_BackMUS)
label(_MonHumanPlayer)
label(_BackMHP)
label(_MonActionPoints)
label(_BackMAP)
label(_MonActionPoints2)
label(_BackAP2)
label(_MonActionPoints3)
label(_BackAP3)
label(_MonActionPoints4)
label(_BackAP4)
label(_MonResearchProg)
label(_BackMRP)
label(_MonTroopRecruit)
label(_BackMTR)
label(_MonConstProg)
label(_BackMCP)
label(_MonPublicOrder)
label(_BackMPO)
label(_MonPopSurplus)
label(_BackMPS)
label(_MonPopSurplus2)
label(_BackPS2)
label(_MonSelHero)
label(_BackMSH)
label(_MonPlayerFood)
label(_BackMPF)
label(_MonRitesCD)
label(_BackMRC)
label(_MonRitesCD2)
label(_BackRC2)
label(_GodModeTBS)
label(_BackGMT)
label(_MonPlayerAmber)
label(_BackMPA)
label(_MonSlavesPerSettlement)
label(_BackMSS)
label(iEnableGMD)
label(iEnableMTA)
label(iEnableMTL)
label(iEnableMWM)
label(iEnableMMT)
label(iEnableMAP)
label(iEnableMTS)
label(iEnableMRP)
label(iEnableMTR)
label(iEnableMCP)
label(iEnableMPO)
label(iEnableMPS)
label(iEnableMXP)
label(iEnableHAA)
label(iEnableMPI)
label(iEnableMPF)
label(iEnableMRC)
label(iEnableGMT)
label(iEnableMTX)
label(iEnablePAE)
label(iEnablePAS)
label(iEnableMSU)
label(iEnableMSC)
label(iEnableMSS)
label(iEnableMUS)
label(iEnableSSR)
label(iEnableLSR)
label(iEnableMOO)
label(iEnableSCR)
label(pPlayer)
label(pLord)
label(pHero)
label(pUnit)
label(pDebug)
label(pCommon)
label(pFood)
label(lRBX)
label(aLast)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableGMD)
registersymbol(iEnableMTA)
registersymbol(iEnableMTL)
registersymbol(iEnableMWM)
registersymbol(iEnableMMT)
registersymbol(iEnableMAP)
registersymbol(iEnableMTS)
registersymbol(iEnableMRP)
registersymbol(iEnableMTR)
registersymbol(iEnableMCP)
registersymbol(iEnableMPO)
registersymbol(iEnableMPS)
registersymbol(iEnableMXP)
registersymbol(iEnableHAA)
registersymbol(iEnableMPI)
registersymbol(iEnableMPF)
registersymbol(iEnableMRC)
registersymbol(iEnableGMT)
registersymbol(iEnableMTX)
registersymbol(iEnablePAE)
registersymbol(iEnablePAS)
registersymbol(iEnableMSU)
registersymbol(iEnableMSC)
registersymbol(iEnableMSS)
registersymbol(iEnableMUS)
registersymbol(iEnableSSR)
registersymbol(iEnableLSR)
registersymbol(iEnableMOO)
registersymbol(iEnableSCR)
registersymbol(pPlayer)
registersymbol(pLord)
registersymbol(pHero)
registersymbol(pUnit)
registersymbol(pDebug)
registersymbol(pCommon)
registersymbol(pFood)
registersymbol(aLast)
//=========================================
MyCode:
//========================================= LJ 190 *
// RTS - During Combat (HP)(Troop/Hero)
// RAX is safe
_GodMode:
mov dword ptr [aLast],'_GMD'
mov rax,_BackGMD
mov [pBack+00],rax
mov [pDebug],rbx
cmp dword ptr [iEnableGMD],0
je _ExitGMD // Jump if feature is disabled
lea rax,[rcx-00000AE0]
cmp rax,rbx
jne _ExitGMD
mov rax,[rbx+000002e8]
test rax,rax
jz _ExitGMD
cmp byte ptr [rax+00003B40],00
jne _ExitGMD
mov eax,[rcx]
mov [rcx+04],eax
xor edx,edx
_ExitGMD:
mov r8d,[rcx+04] // Original code
xor r9d,r9d // Original code
sub r8d,edx // Original code
cmp edx,[rcx+04] // Original code
cmova r8d,r9d // Original code
jmp [pBack+00] // Back to main code
//========================================= LJ 190 *
// RTS - After decreasing Ammo
_MonTroopAmmo:
mov dword ptr [aLast],'_MTA'
mov rcx,_BackMTA
mov [pBack+08],rcx
mov ecx,r8d // recover ECX
test r8d,r8d // Original code
jz _MonTA00
cmp dword ptr [iEnableMTA],0
je _ExitMTA // Jump if feature is disabled
cmp byte ptr [rdi+00003B40],00
jne _ExitMTA
inc ecx
mov r8d,ecx
_ExitMTA:
lea ecx,[r8-01] // Original code
mov [rax+rdi],ecx // Original code
_MonTA00:
jmp [pBack+08] // Back to main code
//========================================= LJ 190 *
// RTS - During Combat (HP)(Troop)
// RAX is safe
_GodMode2:
mov dword ptr [aLast],'_GM2'
mov rax,_BackGM2
mov [pBack+10],rax
cmp dword ptr [iEnableGMD],0
je _ExitGM2 // Jump if feature is disabled
mov rax,[rcx+000002e8]
test rax,rax
jz _ExitGM2
cmp byte ptr [rax+00003B40],00
jne _ExitGM2
mov eax,[rcx+00000AE0]
mov [rcx+00000AE4],eax
ret
//==
_ExitGM2:
push rbp // Original code
push rsi // Original code
push r14 // Original code
lea rbp,[rsp-20] // Original code
sub rsp,00000120 // Original code
jmp [pBack+10] // Back to main code
//========================================= LJ 190 *
// RTS - All the time during battle
_MonTroopUnits:
mov dword ptr [aLast],'_MTU'
mov rcx,_BackMTU
mov [pBack+18],rcx
push rax
push rbx
push rdx
mov rdx,rax
mov rcx,[rdx+000002E8]
test rcx,rcx
jz _ExitMTU
cmp dword ptr [rcx+70],55555555
cmp byte ptr [rcx+00003B40],00
jne _ExitMTU
mov rax,[rcx+70]
mov [pCommon],rax
cmp dword ptr [iEnableGMD],0
je _MonTU00 // Jump if feature is disabled
mov eax,#100
mov ebx,[rcx+0000379C]
cmp ebx,eax
cmovs ebx,eax
mov [rcx+0000379C],ebx
mov [rcx+000039C0],ebx
mov [rcx+000039C4],ebx
_MonTU00:
cmp dword ptr [iEnableGMD],0
je _ExitMTU // Jump if feature is disabled
cmp dword ptr [rdx+00000AE4],0
je _ExitMTU
mov eax,#671000
mov [rdx+00000AE0],eax
mov [rdx+00000AE4],eax
_ExitMTU:
pop rdx
pop rbx
pop rax
movss [rbp+000000A0],xmm0 // Original code
mov rcx,[rax+000002E8] // Original code (get pTroop)
jmp [pBack+18] // Back to main code
//========================================= LJ 190 *
// RTS - When increasing value
// RCX is safe
_MonWindsOfMagic:
mov dword ptr [aLast],'_MWM'
mov rcx,_BackMWM
mov [pBack+20],rcx
addss xmm0,[rdi+08] // Original code (inc cWoM)
cmp dword ptr [iEnableMWM],0
je _ExitMWM // Jump if feature is disabled
mov rcx,[rdi]
cmp rcx,[pCommon]
jne _ExitMWM
movss xmm0,xmm1
_ExitMWM:
comiss xmm0,xmm1 // Original code
movss [rdi+08],xmm0 // Original code
jmp [pBack+20] // Back to main code
//========================================= LJ 190 *
// RTS - when activating a spell (troop)
_MonSpellUse:
mov dword ptr [aLast],'_MSU'
mov rax,_BackMSU
mov [pBack+28],rax
test rbp,rbp
jz _ExitMSU
mov rax,[rsi+10]
cmp dword ptr [rax+28],00
jle _ExitMSU
cmp dword ptr [iEnableMSU],0
je _ExitMSU // Jump if feature is disabled
cmp byte ptr [rbp+00003B40],00 // s7.2 #
jne _ExitMSU
cmp dword ptr [rsi+30],01
js _ExitMSU
inc dword ptr [rsi+30]
_ExitMSU:
mov rax,[rsi+10] // Original code
cmp dword ptr [rax+28],00 // Original code
jl _EMSU00
dec [rsi+30] // Original code
_EMSU00:
jmp [pBack+28] // Back to main code
//========================================= LJ 190 *
// RTS - when a spell cooling down (troop)
// RAX if safe
_MonSpellCooldown:
mov dword ptr [aLast],'_MSC'
mov rdx,_BackMSC
mov [pBack+30],rdx
mov rdx,[rbp+00003B70] // Original code
mov rcx,rsi // Original code
mov rax,CSCD
call rax // Original code
mov ecx,[rsi+24] // Original code
cmp dword ptr [iEnableMSC],0
je _ExitMSC // Jump if feature is disabled
cmp byte ptr [rbp+00003B40],00
jne _ExitMSC
sub ecx,eax
cmp ecx,#50
js _MonSC00
mov ecx,#50
_MonSC00:
add ecx,eax
_ExitMSC:
jmp [pBack+30] // Back to main code
//========================================= LJ ok 180 #
// RTS - when activating a spell (army)
_MonSpellUse2:
mov dword ptr [aLast],'_SU2'
mov rcx,_BackSU2
mov [pBack+38],rcx
mov rcx,[rsi+10]
cmp dword ptr [rcx+28],00
jle _ExitSU2
cmp dword ptr [iEnableMSU],0
je _ExitSU2 // Jump if feature is disabled
cmp rbx,[pCommon] // s7.2 #
jne _ExitSU2
cmp dword ptr [rsi+30],01
js _ExitSU2
inc dword ptr [rsi+30]
_ExitSU2:
mov rcx,[rsi+10] // Original code
cmp dword ptr [rcx+28],00 // Original code
jl _ESU200 // Original code
dec dword ptr [rsi+30] // Original code
_ESU200:
jmp [pBack+38] // Back to main code
//========================================= LJ 190 *
// RTS - when a spell cooling down (army)
_MonSpellCooldown2:
mov dword ptr [aLast],'_SC2'
mov rdx,_BackSC2
mov [pBack+40],rdx
mov rdx,[rbp+000002E0] // Original code
mov rcx,rsi // Original code
mov rax,CSCD
call rax // Original code
mov ecx,[rsi+24] // Original code
cmp dword ptr [iEnableMSC],0
je _ExitSC2 // Jump if feature is disabled
cmp rbp,[pCommon]
jne _ExitSC2
sub ecx,eax
cmp ecx,#50
js _MonSC20
mov ecx,#50
_MonSC20:
add ecx,eax
_ExitSC2:
jmp [pBack+40] // Back to main code
//========================================= LJ 190 * (Chariots)
// RTS - All the time during battle
// RCX is safe
_MonUnitStress:
mov dword ptr [aLast],'_MUS'
mov rcx,_BackMUS
mov [pBack+48],rcx
add eax,ebx // Original code
mov rbx,[rsp+78] // Original code
mov rcx,[rdi+000002E8]
test rcx,rcx
jz _ExitMUS
cmp byte ptr [rcx+00003B40],00
jne _ExitMUS
cmp dword ptr [iEnableGMD],0
je _MonUS00 // Jump if feature is disabled
cmp dword ptr [rdi+00000AE4],0
je _MonUS00
mov ecx,#671000
mov [rdi+00000AE0],ecx
mov [rdi+00000AE4],ecx
_MonUS00:
cmp dword ptr [iEnableMUS],0
je _ExitMUS // Jump if feature is disabled
mov [rdi+000006EC],00
test eax,eax
js _ExitMUS
mov eax,#-100
_ExitMUS:
add [rdi+000006EC],eax // Original code (upd Stress)
// mov rcx,rdi
jmp [pBack+48] // Back to main code
//========================================= ok
//------------------------------TBS --------------------------------------
//========================================= LJ 190 #
// TBS - All the time at main game screen
_MonHumanPlayer:
mov dword ptr [aLast],'_MHP'
mov rcx,_BackMHP
mov [pBack+50],rcx
mov rcx,[rdx+00000188] // Original code (get pPlayer)
mov [pPlayer],rcx
mov rax,[rcx+00000C20]
mov [pWay],rax
mov rax,[rcx+00001D70]
mov [pRites],rax
cmp dword ptr [iEnableMMT],0
je _MonHP00 // Jump if feature is disabled
mov eax,ctMMON
cmp [rcx+00000BF0],eax
jns _MonHP00
mov [rcx+00000BF0],eax
_MonHP00:
cmp dword ptr [iEnableMPI],0
je _ExitMHP // Jump if feature is disabled
cmp [rcx+00000EB0],0
je _ExitMHP
mov eax,ctMINF
cmp [rcx+00000EB0],eax
jns _ExitMHP
mov [rcx+00000EB0],eax
_ExitMHP:
add rcx,000002D0 // Original code
jmp [pBack+50] // Back to main code
//========================================= LJ 190 *
// TBS - WHen troop is moving (MP, TS, HHP)
// RAX is safe
_MonActionPoints:
mov dword ptr [aLast],'_MAP'
mov rax,_BackMAP
mov [pBack+58],rax
mov rax,[rcx+78]
cmp rax,[pPlayer]
jne _ExitMAP
cmp dword ptr [iEnableMAP],0
je _MonAP00 // Jump if feature is disabled
xor edx,edx
_MonAP00:
cmp dword ptr [iEnableMTS],0
je _ExitMAP // Jump if feature is disabled
mov eax,[rcx+0000008c]
mov [rcx+00000088],eax
_ExitMAP:
mov r8d,[rcx+000000A8] // Original code (get AP)
xor eax,eax // Original code
mov r9d,r8d // Original code
sub r9d,edx // Original code
jmp [pBack+58] // Back to main code
//========================================= LJ 190 *
// TBS - When Army is selected (MP, TS, HHP)
_MonActionPoints2:
mov dword ptr [aLast],'_MA2'
mov rax,_BackAP2
mov [pBack+60],rax
mov rax,[r13+78]
cmp rax,[pPlayer]
jne _ExitAP2
cmp dword ptr [r13+000001b0],0
je _MonAP2Z
mov [pLord],r13
_MonAP2Z:
cmp dword ptr [iEnableMAP],0
je _MonAP20 // Jump if feature is disabled
mov eax,#3661
cmp eax,[r13+000000a8]
js _MonAP20
mov [r13+000000a8],eax
_MonAP20:
cmp dword ptr [iEnableMTS],0
je _ExitAP2 // Jump if feature is disabled
mov eax,[r13+0000008c]
mov [r13+00000088],eax
_ExitAP2:
mov eax,[r13+000000A8] // Original code (get AP)
mov [r15+000000EC],eax // Original code
jmp [pBack+60] // Back to main code
//========================================= LJ 190 *
// TBS - When Hero is moving
// RAX is safe
_MonActionPoints3:
mov dword ptr [aLast],'_MA3'
mov rax,_BackAP3
mov [pBack+68],rax
cmp dword ptr [iEnableMAP],0
je _ExitAP3 // Jump if feature is disabled
mov rax,[rcx+00000360]
test rax,rax
jz _ExitAP3
mov rax,[rax+10]
cmp rax,[pPlayer]
jne _ExitAP3
mov eax,[rcx+28]
mov [rcx+2c],eax
xor edx,edx
mov [rcx+30],edx
_ExitAP3:
mov r9d,[rcx+2C] // Original code (get AP)
xor r8d,r8d // Original code
mov eax,r9d // Original code
sub eax,edx // Original code
jmp [pBack+68] // Back to main code
//========================================= LJ 190 *
// TBS - When Lord is moving (in the army)
// RDI is safe
_MonActionPoints4:
mov dword ptr [aLast],'_MA4'
mov rdi,_BackAP4
mov [pBack+70],rdi
mov rdi,[rbx+00000360]
test rdi,rdi
jz _ExitAP4
mov rdi,[rdi+10]
cmp rdi,[pPlayer]
jne _ExitAP4
mov [pHero],rbx // It is, in fact, a Lord
cmp dword ptr [iEnableMAP],0
je _ExitAP4 // Jump if feature is disabled
mov eax,[rbx+28]
xor rsi,rsi
mov [rbx+30],esi
_ExitAP4:
sub esi,eax // Original code
mov [rbx+2C],eax // Original code (upd AP)
cmovs esi,ebp // Original code
mov rbp,[rsp+30] // Original code
jmp [pBack+70] // Back to main code
//========================================= LJ 190 X
// TBS - During Turn Changing
// RAX is safe
_MonResearchProg:
mov dword ptr [aLast],'_MRP'
mov rax,_BackMRP
mov [pBack+78],rax
mov r9d,[rdx+0C] // Original code
add r9d,r8d // Original code
cmp dword ptr [iEnableMRP],0
je _ExitMRP // Jump if feature is disabled
mov rax,[rsi+20]
cmp rax,[pPlayer]
jne _ExitMRP
mov r9d,[rcx+5C]
_ExitMRP:
cmp r9d,[rcx+5C] // Original code (chk if finished)
jae _MonRP00
jmp [pBack+78] // Back to main code
_MonRP00:
mov rax,JORP
jmp rax
//========================================= LJ 190 *
// TBS - When looking at the Army (When recruiting)
// RAX is safe
_MonTroopRecruit:
mov dword ptr [aLast],'_MTR'
mov rax,_BackMTR
mov [pBack+80],rax
mov rax,COTR
call rax // Original code
test eax,eax // Original code
js _EMTR00
push rcx
cmp dword ptr [iEnableMTR],0
je _ExitMTR // Jump if feature is disabled
mov rcx,[rbx+38]
test rcx,rcx
jz _ExitMTR
mov rcx,[rcx+70]
cmp rcx,[pPlayer]
jne _ExitMTR
mov dword ptr [rbx+50],0
_ExitMTR:
pop rcx
add eax,[rbx+50] // Original code (get #turns)
jmp [pBack+80] // Back to main code
_EMTR00:
mov rbx,JOTR
jmp rbx
//========================================= LJ 190 #
// TBS - During Turn Changing
_MonConstProg:
mov dword ptr [aLast],'_MCP'
mov rax,_BackMCP
mov [pBack+88],rax
inc [rcx+0C] // Original code (upd prog)
cmp dword ptr [rcx+10],1
je _ExitMCP
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
cmp r14,[pPlayer]
jne _ExitMCP
mov eax,[rcx+10]
mov [rcx+0C],eax
_ExitMCP:
mov eax,[rcx+0C] // Original code
cmp eax,[rcx+10] // Original code
setae al // Original code
jmp [pBack+88] // Back to main code
//========================================= LJ 190 X
// TBS - During Turn Changing
_MonPublicOrder:
mov dword ptr [aLast],'_MPO'
mov rcx,_BackMPO
mov [pBack+90],rcx
cmp dword ptr [iEnableMPO],0
je _ExitMPO // Jump if feature is disabled
cmp r15,[pPlayer]
jne _ExitMPO
{
xor edx,edx
mov ebx,[r14+30]
test ebx,ebx
cmovs ebx,edx
mov [r14+30],ebx
mov ebx,[r14+34]
test ebx,ebx
cmovs ebx,edx
mov [r14+34],ebx
mov ebx,[r14+38]
test ebx,ebx
cmovs ebx,edx
mov [r14+38],ebx
mov ebx,[r14+3c]
test ebx,ebx
cmovs ebx,edx
mov [r14+3c],ebx
}
mov ecx,[r14+3C]
add ecx,eax
cmp ecx,#68
jns _ExitMPO
mov ecx,[r14+3C]
mov eax,#68
sub eax,ecx // Val to be added
_ExitMPO:
mov ecx,[r14+3C] // Original code
mov [rbx+0C],ecx // Original code (upd PO)
cmp dword ptr [r14+4C],01 // Original code
jmp [pBack+90] // Back to main code
//========================================= LJ 190 #
// TBS - When looking at the Province
_MonPopSurplus:
mov dword ptr [aLast],'_MPS'
mov rsi,_BackMPS
mov [pBack+98],rsi
cmp dword ptr [iEnableMPS],0
je _ExitMPS // Jump if feature is disabled
mov rsi,[rdx+000000d0]
test rsi,rsi
jz _ExitMPS
mov rsi,[rsi+10]
cmp rsi,[pPlayer]
jne _ExitMPS
mov esi,#30
cmp esi,[rdx+00000388]
js _ExitMPS
mov [rdx+00000388],esi
_ExitMPS:
mov r15d,[rdx+0000038C] // Original code (Get Growth)
lea rsi,[rdx+00000380] // Original code
jmp [pBack+98] // Back to main code
//========================================= LJ 190 *
// TBS - On ARK selection
_MonPopSurplus2:
mov dword ptr [aLast],'_PS2'
mov rcx,_BackPS2
mov [pBack+00A0],rcx
cmp dword ptr [iEnableMPS],0
je _ExitPS2 // Jump if feature is disabled
mov rcx,[rax+00000140]
test rcx,rcx
jz _ExitPS2
mov rcx,[rcx+10]
cmp rcx,[pPlayer]
jne _ExitPS2
mov rcx,[rax+00000618]
mov rcx,[rcx+18]
cmp dword ptr [rcx+08],#32
jns _ExitPS2
mov dword ptr [rcx+08],#32
_ExitPS2:
mov rcx,[rax+00000618] // Original code (Get ppPopSp)
mov rax,[rcx+18] // Original code
mov eax,[rax+08] // Original code
jmp [pBack+00A0] // Back to main code
//========================================= LJ 190 *
// TBS - When a hero/Lord is selected
// RCX is safe
_MonSelHero:
mov dword ptr [aLast],'_MSH'
mov rsi,_BackMSH
mov [pBack+00A8],rsi
mov r14,[r13]
test r14,r14
jz _ExitMSH
mov [pHero],r14
mov rcx,[r14+00000360]
test rcx,rcx
jz _ExitMSH
mov rcx,[rcx+10]
cmp rcx,[pPlayer]
jne _ExitMSH
cmp dword ptr [iEnableMAP],0
je _MonSH00 // Jump if feature is disabled
mov esi,[r14+28]
mov [r14+2c],esi
_MonSH00:
cmp dword ptr [iEnableHAA],0
je _MonSH01 // Jump if feature is disabled
mov byte ptr [r14+00000940],00 // (s3.0)
mov byte ptr [r14+00000948],00
mov byte ptr [r14+00000E28],00 // SearchedTreasure (s6.1)
mov byte ptr [r14+00000E29],00 // SearchedTreasure (s6.1)
mov byte ptr [r14+00000E2A],00 // SearchedTreasure (s6.1)
_MonSH01:
cmp dword ptr [iEnableMXP],0
je _ExitMSH // Jump if feature is disabled
lea rcx,[rax-64]
cmp ecx,[r13+00000254]
js _ExitMSH
mov [r13+00000254],ecx
_ExitMSH:
mov r14d,eax // Original code
sub r14d,ebx // Original code
mov esi,[r13+00000254] // Original code (Get XP)
jmp [pBack+00A8] // Back to main code
//========================================= LJ 190 *
// TBS - All the time at main game screen (Skaven/Lizards)
_MonPlayerFood:
mov dword ptr [aLast],'_MPF'
mov rax,_BackMPF
mov [pBack+00B0],rax
mov rax,[rdi+08] // Original code
mov rbx,[rax+08]
test rbx,rbx
jz _ExitMPF
mov rbx,[rbx+18]
cmp rbx,[pPlayer]
jne _ExitMPF
mov rbx,[rax]
test rbx,rbx
jz _ExitMPF
mov rbx,[rbx]
test rbx,rbx
jz _ExitMPF
mov rbx,[rbx+08]
test rbx,rbx
jz _ExitMPF
mov ebx,[rbx+04]
cmp ebx,'en_f'
jne _MonPF00
mov [pFood],rax
cmp dword ptr [iEnableMPF],0
je _ExitMPF // Jump if feature is disabled
mov ebx,ctMFOO
jmp _MonPF0X
//--
_MonPF00:
cmp ebx,'reac'
je _MonPF01
cmp ebx,'nuke'
jne _MonPF02
_MonPF01:
cmp dword ptr [iEnableSSR],0 // s6.5
je _ExitMPF // Jump if feature is disabled
mov ebx,ctMSSR
jmp _MonPF0X
//--
_MonPF02:
cmp ebx,'sacr'
jne _MonPF03
cmp dword ptr [iEnableLSR],0 // s6.5
je _ExitMPF // Jump if feature is disabled
mov ebx,ctMLSR
jmp _MonPF0X
//--
_MonPF03:
cmp ebx,'old_'
jne _MonPF04
cmp dword ptr [iEnableMOO],0 // s7.1
je _ExitMPF // Jump if feature is disabled
mov ebx,#700
jmp _MonPF0X
//--
_MonPF04:
cmp ebx,'salv'
jne _MonPF05
cmp dword ptr [iEnableSCR],0 // s7.9 (Scrap)
je _ExitMPF // Jump if feature is disabled
mov ebx,#700
jmp _MonPF0X
//--
_MonPF05:
jmp _ExitMPF
//--
_MonPF0X:
cmp [rax+20],ebx
jns _ExitMPF
mov [rax+20],ebx
_ExitMPF:
mov eax,[rax+20] // Original code
mov rbx,[rsp+60] // Original code
jmp [pBack+00B0] // Back to main code
//========================================= LJ 190 X
// TBS - During turn changing
_MonRitesCD:
mov dword ptr [aLast],'_MRC'
mov rax,_BackMRC
mov [pBack+00B8],rax
mov edx,[rcx+10] // Original code
lea eax,[rdx-01] // Original code
cmp eax,-03 // Original code
ja _EMRC00
cmp rbp,[pRites]
jne _ExitMRC
cmp dword ptr [iEnableMRC],0
je _ExitMRC // Jump if feature is disabled
test edx,edx
js _ExitMRC
mov edx,1
_ExitMRC:
lea eax,[rdx-01] // Original code
mov [rcx+10],eax // Original code (upd CD)
_EMRC00:
jmp [pBack+00B8] // Back to main code
//========================================= LJ 190 X
// TBS - During turn changing
_MonRitesCD2:
mov dword ptr [aLast],'_RC2'
mov rax,_BackRC2
mov [pBack+00C0],rax
mov edx,[rcx+08] // Original code (fix 7.8)
lea eax,[rdx-01] // Original code
cmp eax,-03 // Original code
ja _ERC200
cmp rbp,[pRites]
jne _ExitRC2
cmp dword ptr [iEnableMRC],0
je _ExitRC2 // Jump if feature is disabled
test edx,edx
js _ExitRC2
mov edx,1
_ExitRC2:
lea eax,[rdx-01] // Original code
mov [rcx+08],eax // Original code (upd CD)
_ERC200:
jmp [pBack+00C0] // Back to main code
//========================================= LJ 190 X
// TBS - God Mode for Autobattle and Troop XP
_GodModeTBS:
mov r15,_BackGMT
mov [pBack+00C8],r15
cmp dword ptr [iEnableGMT],0
je _GodMT01 // Jump if feature is disabled
mov r15,[rcx+78]
cmp r15,[pPlayer]
je _GodMT00
// mov dword ptr [rdx+58],00
// mov dword ptr [rdx+6c],00
// mov dword ptr [rdx+000000A4],00
jmp _ExitGMT
//--
_GodMT00:
mov r15d,[rdx+50]
mov [rdx+58],r15d
mov r15d,[rdx+64]
mov [rdx+6c],r15d
mov byte ptr [rdx+78],01
mov byte ptr [rdx+7a],00
_GodMT01:
cmp dword ptr [iEnableMTX],0
je _ExitGMT // Jump if feature is disabled
mov r15,[rcx+78]
cmp r15,[pPlayer]
jne _ExitGMT
cmp dword ptr [rdx+00000098],00
je _ExitGMT
cmp byte ptr [rcx+000000C8],09
jns _ExitGMT
mov r15d,#30000
cmp [rdx+00000098],r15d
jns _ExitGMT
mov [rdx+00000098],r15d
_ExitGMT:
mov rax,[rcx+00000080] // Original code
mov r15,rdx // Original code
mov rbp,rcx // Original code
jmp [pBack+00C8] // Back to main code
//========================================= LJ 190 X
// TBS - Keep human player's AMBER at minimum (per Settlement / per Event)
// RAX is safe
_MonPlayerAmber:
mov dword ptr [aLast],'_MPA'
mov rax,_BackMPA
mov [pBack+00D0],rax
mov ax,[r8+08]
cmp ax,00eb
je _MonPA00
cmp ax,00ec
jne _ExitMPA
mov rax,RPAE
cmp rax,[esp]
jne _ExitMPA
cmp dword ptr [iEnablePAE],0
je _ExitMPA // Jump if feature is disabled
mov rax,[rbp+60]
test rax,rax
jz _ExitMPA
mov rax,[rax+00000188]
cmp rax,[pPlayer]
jne _ExitMPA
mov eax,ctMAPE
jmp _MonPA01
//==
_MonPA00:
mov rax,RPAS
cmp rax,[esp]
jne _ExitMPA
cmp dword ptr [iEnablePAS],0
je _ExitMPA // Jump if feature is disabled
mov rax,[rbp+60]
test rax,rax
jz _ExitMPA
mov rax,[rax+00000188]
cmp rax,[pPlayer]
jne _ExitMPA
mov eax,ctMAPS
_MonPA01:
cmp [r8+18],eax
jns _ExitMPA
mov [r8+18],eax
mov [r8+1c],eax
_ExitMPA:
movss xmm1,[r8+18] // Original code (get value)
xorps xmm0,xmm0 // Original code
comiss xmm1,xmm0 // Original code
jmp [pBack+00D0] // Back to main code
//========================================= LJ ok
// TBS - Keep human player's Slaves per Settlement at minimum (for Dark Elves)
_MonSlavesPerSettlement:
mov dword ptr [aLast],'_MSS'
mov rdx,_BackMSS
mov [pBack+00D8],rdx
test rax,rax // Original code
je _EMSS00 // Original code
movsd [qXMM0],xmm0
movsd [qXMM1],xmm1
cmp r15,[pPlayer]
jne _ExitMSS
cmp dword ptr [iEnableMSS],0
je _ExitMSS // Jump if feature is disabled
movsd xmm0,[qMinimum]
cvtsi2sd xmm1,[rax+0c]
mulsd xmm0,xmm1
cvtsi2sd xmm1,[rax+08]
maxsd xmm0,xmm1
cvtsd2si ecx,xmm0
mov [rax+08],ecx
_ExitMSS:
movsd xmm0,[qXMM0]
movsd xmm1,[qXMM1]
mov edx,[rax+08] // Original code (get value)
mov rcx,rax // Original code
mov rbx,CSPS // RBX is safe
call rbx // Original code
_EMSS00:
jmp [pBack+00D8] // Back to main code
qMinimum:
dq (double)0.20
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE7.0 Script by Recifense 200529'
//=========================================
// Variables
iEnableGMD:
dq 0
iEnableMTA:
dq 0
iEnableMTL:
dq 0
iEnableMWM:
dq 0
iEnableMMT:
dq 0
iEnableMAP:
dq 0
iEnableMTS:
dq 0
iEnableMRP:
dq 0
iEnableMTR:
dq 0
iEnableMCP:
dq 0
iEnableMPO:
dq 0
iEnableMPS:
dq 0
iEnableMXP:
dq 0
iEnableHAA:
dq 0
iEnableMPI:
dq 0
iEnableMPF:
dq 0
iEnableMRC:
dq 0
iEnableGMT:
dq 0
iEnableMTX:
dq 0
iEnablePAE:
dq 0
iEnablePAS:
dq 0
iEnableMSU:
dq 0
iEnableMSC:
dq 0
iEnableMSS:
dq 0
iEnableMUS:
dq 0
iEnableSSR:
dq 0
iEnableLSR:
dq 0
iEnableMOO:
dq 0
iEnableSCR:
dq 0
pPlayer:
dq MyCode
pWay:
dq MyCode
pRites:
dq MyCode
pFood:
dq 0
pLord:
dq 0
pHero:
dq 0
pUnit:
dq 0
pDebug:
dq 0
pCommon:
dq MyCode
lRBX:
dq 0
qXMM0:
dq 0
qXMM1:
dq 0
pBack:
dq 0,0,0,0,0,0,0,0
dq 0,0,0,0,0,0,0,0
dq 0,0,0,0,0,0,0,0
dq 0,0,0,0,0,0,0,0
aLast:
db 'CE70'
iSize:
dd iSize-MyCode
//=========================================
// Hacking Points
GDMD:
mov rax,_GodMode
jmp rax
nop
nop
nop
nop
nop
_BackGMD:
MOTA:
mov rcx,_MonTroopAmmo
jmp rcx
_BackMTA:
GDM2:
mov rax,_GodMode2
jmp rax
nop
nop
nop
nop
nop
_BackGM2:
MOTU:
mov rcx,_MonTroopUnits
jmp rcx
nop
nop
nop
_BackMTU:
MOWM:
mov rcx,_MonWindsOfMagic
jmp rcx
nop
_BackMWM:
MOSU:
mov rax,_MonSpellUse
jmp rax
nop
_BackMSU:
MSCD:
mov rdx,_MonSpellCooldown
jmp rdx
nop
nop
nop
nop
nop
nop
_BackMSC:
MSU2:
// mov rcx,_MonSpellUse2
// jmp rcx
// nop
_BackSU2:
MSC2:
mov rdx,_MonSpellCooldown2
jmp rdx
nop
nop
nop
nop
nop
nop
_BackSC2:
MOUS:
mov rcx,_MonUnitStress
jmp rcx
nop
_BackMUS:
// ---------------------- TBS
MOHP:
mov rcx,_MonHumanPlayer
jmp rcx
nop
nop
_BackMHP:
MOAP:
mov rax,_MonActionPoints
jmp rax
nop
nop
nop
_BackMAP:
MAP2:
mov rax,_MonActionPoints2
jmp rax
nop
nop
_BackAP2:
MAP3:
mov rax,_MonActionPoints3
jmp rax
_BackAP3:
MAP4:
mov rdi,_MonActionPoints4
jmp rdi
nop
_BackAP4:
MORP:
mov rax,_MonResearchProg
jmp rax
nop
nop
nop
nop
nop
_BackMRP:
MOTR:
mov rax,_MonTroopRecruit
jmp rax
_BackMTR:
MOCP:
mov rax,_MonConstProg
jmp rax
_BackMCP:
MOPO:
mov rcx,_MonPublicOrder
jmp rcx
_BackMPO:
MOPS:
mov rsi,_MonPopSurplus
jmp rsi
nop
nop
_BackMPS:
MPS2:
mov rcx,_MonPopSurplus2
jmp rcx
nop
nop
_BackPS2:
MOSH:
mov rsi,_MonSelHero
jmp rsi
nop
_BackMSH:
MOPF:
mov rax,_MonPlayerFood
jmp rax
_BackMPF:
MORC:
mov rax,_MonRitesCD
jmp rax
nop
nop
nop
nop
nop
_BackMRC:
MRC2:
mov rax,_MonRitesCD2
jmp rax
nop
nop
nop
nop
nop
_BackRC2:
GMTB:
mov r15,_GodModeTBS
jmp r15
_BackGMT:
MOPA:
mov rax,_MonPlayerAmber
jmp rax
_BackMPA:
MSPS:
{
mov rdx,_MonSlavesPerSettlement
jmp rdx
nop
nop
nop
nop
}
_BackMSS:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
GDMD:
db 44 8B 41 04 45 31 C9 41 29 D0 3B 51 04 45 0F 47 C1
MOTA:
db 45 85 C0 74 07 41 8D 48 FF 89 0C 38
GDM2:
db 40 55 56 41 56 48 8D 6C 24 E0 48 81 EC 20 01 00 00
MOTU:
db F3 0F 11 85 A0 00 00 00 48 8B 88 E8 02 00 00
MOWM:
db F3 0F 58 47 08 0F 2F C1 F3 0F 11 47 08
MOSU:
db 48 8B 46 10 83 78 28 00 7C 03 FF 4E 30
MSCD:
readmem(SMSCD,18)
//MSU2:
// db 48 8b 4e 10 83 79 28 00 7c 03 ff 4e 30
MSC2:
readmem(SMSC2,18)
MOUS:
db 01 D8 48 8B 5C 24 78 01 87 EC 06 00 00
// ---------------------- TBS
MOHP:
db 48 8b 8a 88 01 00 00 48 81 c1 d0 02 00 00
MOAP:
db 44 8B 81 A8 00 00 00 31 C0 45 89 C1 41 29 D1
MAP2:
db 41 8B 85 A8 00 00 00 41 89 87 EC 00 00 00
MAP3:
db 44 8B 49 2C 45 31 C0 44 89 C8 29 D0
MAP4:
db 29 C6 89 43 2C 0F 48 F5 48 8B 6C 24 30
MORP:
readmem(SMORP,17)
MOTR:
readmem(SMOTR,12)
MOCP:
db FF 41 0C 8B 41 0C 3B 41 10 0F 93 D0
MOPO:
db 41 8B 4E 3C 89 4B 0C 41 83 7E 4C 01
MOPS:
db 44 8b ba 8c 03 00 00 48 8d b2 80 03 00 00
MPS2:
db 48 8B 88 18 06 00 00 48 8B 41 18 8B 40 08
MOSH:
db 44 8B F0 44 2B F3 41 8B B5 54 02 00 00
MOPF:
db 48 8B 47 08 8B 40 20 48 8B 5C 24 60
MORC:
db 8B 51 10 8D 42 FF 83 F8 FD 77 06 8D 42 FF 89 41 10
MRC2:
db 8B 51 08 8D 42 FF 83 F8 FD 77 06 8D 42 FF 89 41 08
GMTB:
db 48 8B 81 80 00 00 00 49 89 D7 48 89 CD
MOPA:
db F3 41 0F 10 48 18 0F 57 C0 0F 2F C8
//MSPS:
//readmem(SMSPS,16)
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMTA)
unregistersymbol(iEnableMTL)
unregistersymbol(iEnableMWM)
unregistersymbol(iEnableMMT)
unregistersymbol(iEnableMAP)
unregistersymbol(iEnableMTS)
unregistersymbol(iEnableMRP)
unregistersymbol(iEnableMTR)
unregistersymbol(iEnableMCP)
unregistersymbol(iEnableMPO)
unregistersymbol(iEnableMPS)
unregistersymbol(iEnableMXP)
unregistersymbol(iEnableHAA)
unregistersymbol(iEnableMPI)
unregistersymbol(iEnableMPF)
unregistersymbol(iEnableMRC)
unregistersymbol(iEnableGMT)
unregistersymbol(iEnableMTX)
unregistersymbol(iEnablePAE)
unregistersymbol(iEnablePAS)
unregistersymbol(iEnableMSU)
unregistersymbol(iEnableMSC)
unregistersymbol(iEnableMSS)
unregistersymbol(iEnableMUS)
unregistersymbol(iEnableSSR)
unregistersymbol(iEnableLSR)
unregistersymbol(iEnableMOO)
unregistersymbol(iEnableSCR)
unregistersymbol(pPlayer)
unregistersymbol(pLord)
unregistersymbol(pHero)
unregistersymbol(pUnit)
unregistersymbol(pDebug)
unregistersymbol(pCommon)
unregistersymbol(pFood)
unregistersymbol(aLast)
unregistersymbol(SMSCD)
unregistersymbol(SMSC2)
unregistersymbol(SMORP)
unregistersymbol(SMOTR)
unregistersymbol(SMSPS)
//=========================================
dealloc(MyCode)
dealloc(SMSCD)
dealloc(SMSC2)
dealloc(SMORP)
dealloc(SMOTR)
dealloc(SMSPS)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
345
"========== (HK: CTRL+numeric 1 / CTRL+numeric 0)"
0000FF
1
138
"[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}
Activate
17
97
0
Deactivate
17
96
1
153
"[X] <== Unlimited Ammo"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMTA",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMTA",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
97
0
Deactivate
17
96
1
241
"[X] <== Full Wind Of Magic"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMWM",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMWM",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
97
0
Deactivate
17
96
1
319
"[X] <== Spell Unlimited Usage"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMSU",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMSU",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
97
0
Deactivate
17
96
1
320
"[X] <== Spell Quick Cooldown"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMSC",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMSC",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
97
0
Deactivate
17
96
1
339
"[X] <== Ever fresh units (Full Vigour)"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMUS",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMUS",0)
memrec.Color=0x0c08000
{$ASM}
Activate
17
97
0
Deactivate
17
96
1
346
"========== (HK: CTRL+Home / CTRL+End)"
0000FF
1
247
"[X] <== Minimum Influence"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPI",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPI",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
96
"[X] <== Minimum Treasure"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMT",1)
memrec.Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMT",0)
memrec.Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
248
"[X] <== Minimum Food (Skaven)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPF",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPF",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
143
"[X] <== Research in 1 Turn"
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}
Activate
17
36
0
Deactivate
17
35
1
161
"[X] <== Construction in 1 Turn"
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}
Activate
17
36
0
Deactivate
17
35
1
278
"[X] <== Rites Cooldown in 1 Turn"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRC",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRC",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
144
"[X] <== Minimum Public Order"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPO",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPO",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
146
"[X] <== Minimum Pop Surplus"
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}
Activate
17
36
0
Deactivate
17
35
1
347
"========== (HK: CTRL+Page Up / CTRL+Page Down)"
0000FF
1
139
"[X] <== Recover Troop Size"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMTS",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMTS",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
33
0
Deactivate
17
34
1
140
"[X] <== Recruitment in 1 Turn"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMTR",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMTR",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
33
0
Deactivate
17
34
1
348
"========== (HK: CTRL+Insert / CTRL+Delete)"
0000FF
1
147
"[X] <== Unlimited Action Points"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMAP",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMAP",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
45
0
Deactivate
17
46
1
149
"[X] <== Agents can Act Again"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableHAA",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableHAA",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
45
0
Deactivate
17
46
1
155
"[X] <== Hero XP almost complete"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMXP",1)
memrec.Color=0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMXP",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
45
0
Deactivate
17
46
1
349
"========== (HK: Miscellaneous)"
0000FF
1
280
"[X] <== Auto-Resolve God Mode (HK: CTRL+numeric 7 / CTRL+numeric 4)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMT",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMT",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
103
0
Deactivate
17
100
1
281
"[X] <== Troops Quick Level Up (HK: CTRL+numeric 9 / CTRL+numeric 6)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMTX",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMTX",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
105
0
Deactivate
17
102
1
351
"========== (HK: CTRL+numeric 8 / CTRL+numeric 5)"
0000FF
1
308
"[X] <== Minimum Amber per Settlement"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnablePAS",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnablePAS",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
104
0
Deactivate
17
101
1
309
"[X] <== Minimum Event Amber (total)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnablePAE",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnablePAE",0)
memrec.Color=0x00c08000
{$ASM}
Activate
17
104
0
Deactivate
17
101
1
350
"========== (HK: None Defined)"
0000FF
1
341
"[X] <== Minimum Warpstorm and Warp-Fuel (Skaven - Clan Skryre)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableSSR",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableSSR",0)
memrec.Color=0x00c08000
{$ASM}
342
"[X] <== Minimum Sacrificial Offerings (Lizards - Cult of Sotek)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableLSR",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableLSR",0)
memrec.Color=0x00c08000
{$ASM}
356
"[X] <== Minimum Old Ones (Lizards - Nakai the Wanderer)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMOO",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMOO",0)
memrec.Color=0x00c08000
{$ASM}
384
"[X] <== Minimum Craps (Greenskins - Grom the Paunch)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableSCR",1)
memrec.Color=0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableSCR",0)
memrec.Color=0x00c08000
{$ASM}
243
"[X] <==================== Lord/Hero Info"
404080
1
244
"Lord/Hero Name ==>"
FF00FF
String
32
1
0
1
pHero
0
8
420
245
"Current Available Points ==>"
0000FF
4 Bytes
pHero
610
246
"Current XP ==>"
0000FF
4 Bytes
pHero
61C
357
"[X] <==================== Player Info"
404080
1
358
"Faction Name ==>"
FF00FF
String
32
1
0
1
pPlayer
0
8
c38
359
"Current Treasure (ALL) ==>"
0000FF
4 Bytes
pPlayer
bf0
360
"Current Influence (High Elves Only) ==>"
0000FF
4 Bytes
pPlayer
EB0
361
"Current Slaves (Dark Elves Only) ==>"
0000FF
4 Bytes
pPlayer
20
50
1D78
362
"Current Food (Skaven Only) ==>"
4080FF
4 Bytes
pFood
20
377
"[X] <== Some Values with Name (valid for some factions/Lords)"
404080
1
378
"Number of Available Resource Pointers"
FF00FF
4 Bytes
pPlayer
0c
1D98
379
"Resource Name ==>"
FF8080
String
32
0
0
1
pPlayer
0
8
0
0
10
1D98
380
"Current Value ==>"
0000FF
4 Bytes
pPlayer
20
10
1D98
381
"Resource Name ==>"
FF8080
String
32
0
0
1
pPlayer
0
8
0
38
10
1D98
382
"Current Value ==>"
0000FF
4 Bytes
pPlayer
58
10
1D98
369
"Resource Name ==>"
FF8080
String
32
0
0
1
pPlayer
0
8
0
70
10
1D98
370
"Current Value ==>"
0000FF
4 Bytes
pPlayer
90
10
1D98
371
"Resource Name ==>"
FF8080
String
32
0
0
1
pPlayer
0
8
0
a8
10
1D98
372
"Current Value ==>"
0000FF
4 Bytes
pPlayer
c8
10
1D98
373
"Resource Name ==>"
FF8080
String
32
0
0
1
pPlayer
0
8
0
e0
10
1D98
374
"Current Value ==>"
0000FF
4 Bytes
pPlayer
100
10
1D98
375
"Resource Name ==>"
FF8080
String
32
0
0
1
pPlayer
0
8
0
118
10
1D98
376
"Current Value ==>"
0000FF
4 Bytes
pPlayer
138
10
1D98
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20200529
===========================================
Game Title : Total War - Warhammer 2
Game Version : 1.9.1 (15282)
Game Sponsor : Myself (Game+DLCs) (with Patreon's fund)
Process Name : Warhammer2.exe
Relevant Info : 64bits/TBS/RTS
Script Version: 7.9 (LJ)
CE Version : 7.0
Release date : 29-May-2020
Author : Recifense
History:
29-Sep-2017: First Release
30-Sep-2017: Trying to Fix Construction + Minimum Food (s2.0)
01-Oct-2017: Added "Rites Cooldown in 1 turn" and fix "CanActAgain" (s3.0)
03-Oct-2017: Included Arks in Pop Surplus (s3.1)
10-Oct-2017: God Mode for Auto-Resolve battles and Troop Quick Level Up (s3.2)
26-Oct-2017: Release for version 1.1.0-4871
28-Oct-2017: Porting of AMBER features from Warhammer TW (s3.3)
04-Nov-2017: Release for version 1.1.0-5003 beta
09-Nov-2017: Release for version 1.1.1-5078
14-Dec-2017: Release for version 1.2.0-5568
23-Jan-2018: Release for version 1.3.0-6014 (Rise of the Tomb kings)
24-Jan-2018: Added two more features releated to spell durng combat (s5.0)
25-Jan-2018: Include spells related to the army (s5.1)
30-Jan-2018: Minimum Slave per Settlement (Dark Elves) (s5.2)
14-Feb-2018: Release for version 1.3.1-6213 + Min Pop Surplus = 30 (s5.3)
31-May-2018: Release for version 1.4.0-7243
20-Jun-2018: Release for version 1.4.0-7312 Beta (CE68)(s5.4)
21-Jun-2018: Release for version 1.4.1-7450
30-Jun-2018: Include "Ever fresh units (Full Vigour)" (CE67)(s5.5)
10-Nov-2018: Release for version 1.5.0-8774 (s6.0)
11-Nov-2018: Fix for unlimited spell + can Search Treasure again (s6.1)
16-Dec-2018: Release for version 1.5.1-9184 Beta (s6.2)
22-Jan-2019: Release for version 1.5.1-9466 Beta (s6.3)
18-Apr-2019: Release for version 1.6.0-10563 (s6.4)
20-Apr-2019: Skaven Warpstorm and Warp-Fuel + Lizards Sacrificial Offerings (s6.5)
16-May-2019: Release for version 1.6.1-10846 (s6.6)
12-Sep-2019: Release for version 1.7.0-11694 + Feature (Old Ones) (s6.7)(CE70)
17-Sep-2019: Release for version 1.7.1-11765 (s6.8)
23-Sep-2019: Changed the hacking method to long jumps (s7.0)
16-Oct-2019: Release for version 1.7.2-12104 (s7.1)
14-Dec-2019: Release for version 1.8.0-13017 (s7.2)
15-Dec-2019: Fix for crashing during RTS battle (s7.3)
18-Dec-2019: Release for version 1.8.1-13089 (s7.4)
13-Jan-2020: Release for version 1.8.2-13152 (s7.5)
28-Feb-2020: Release for version 1.8.3-13831 (s7.6)
25-May-2020: Release for version 1.9.0-15159 (s7.7) Preliminary
26-May-2020: Fix for Rites/Influence (s7.8)
29-May-2020: Release for version 1.9.1-15282 + New feature (s7.9)
Features:
- God Mode (RTS) [1]
- Full Ammo (RTS) [2]
- Minimum Leadership (RTS) [3] (GM)
- Fast Recover of Winds of Magic (RTS) [L]
- Unlimited use of limited spells (RTS) [M] (s5.0) new
- Spell Quick Cooldown (RTS) [N] (s5.0) new
- Ever fresh units (RTS) [P] (s5.5) new
- Minimum Treasure [4]
- Minimum Influence [E]
- Minimum Food (Skaven) [F]
- Unlimited Action Points [5]
- Recover Troop Size/Hero HP [6]
- Research in 1 turn [7]
- Recruitment in 1 turn [8]
- Construction in 1 turn [9]
- Rites Cooldown in 1 turn [G]
- Minimum Public Order [A]
- Minimum Pop Surplus [B] (including Arks) (s3.1)
- Level almost complete (sel hero XP) [C]
- Hero can Act Again [D]
- Included Search for Treasure (s6.1) new
- God Mode for Auto-resolve battles [H] (s3.2)
- Troops Quick Level Up [I] (s3.2)
- Minimum Amber Per Settlement[J] (s3.3)
- Minimum Total Event Amber [K] (s3.3)
- Minimum Special Resources: [Q] (s6.5) (new)
- Nukes and Warps (Skaven)
- Sacrificial Offerings (Lizards)
- Minimum Old Ones [R] (s6.7) (new) (for Nakai the Wanderer)
- Minimum Scraps [S] (s7.9) (new) (for Grom the Paunch)
- Some Pointers [T]
===========================================
[1] For your troops/heroes/lords duirng RTS battles;
[2] For your troops that use it;
[3] For avoiding your troops/heroes/lords to panic (Included in GM);
[4] Minimum value is 68000;
[5] Your armies and heroes can move freely;
[6] Your troops will recover size and lords will recover health;
[7] Your research will complete in 1 turn;
[8] Your armies will be reinforced in 1 turn;
[9] The construction in your provinces will complete in 1 turn;
[A] Minimum Public Order for your provinces will be 68;
[B] Every time you access your province the POP Surplus will be 10 at least;
[C] Your Heroes/Lords/etc will level up quickly;
[D] You heroes/Lords/etc can act more then once during a turn;
[E] Minimum value is 68;
[F] Minimum value is 80;
[G] A Rite per turn;
[H] You don't need to manually fight all battles;
[I] Troops will get to max level after the first battle;
[J] When playing Elves, minimu is set to 5;
[K] When playing Elves, minimu is set to 15;
[L] Minimum Wind of Magic = 30;
[M] Spell Usage Number will not decrease (Troop);
[N] Maximum Spell Cooldown = 5 seconds (Troop);
[P] Units always fresh during battle (for human Player only);
[Q] Minimum Skaven Warpstorm and Warp-Fuel + Lizards Sacrificial Offerings;
[R] Minimum Old Ones Lizard - Nakai the Wanderer (700);
[S] Minimum Scraps - Grom the Paunch (700);
[T] Used at the table;
===========================================
[USAGE]
1) Run CE70 or greater;
2) Run Game;
3) Load the game process "Warhammer2.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]
- See description on the table entries;
===========================================
[ADVICE]
When you can,save the game before starting using table/cheat. So you can always come back in case you don't like the result.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
Cheers!