49
"[X] <== Stellaris v2.0.2-5e21 (final) Steam Script v8.1"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Stellaris - Apocalypse
Game Version : 2.0.2 (5e21) Final
Game Sponsor : Ubykh + WalletGifts + darkedone02 + hbpateiv + Patrons
Process Name : stellaris.exe
Relevant Info : 32bits/Space RTS with Pause
Script Version: 8.1
CE Version : 6.7
Release date : 29-Mar-2018
Author : Recifense
History:
14-Mar-16: First Release
15-Mar-16: Add one more feature and Fixed GM (s2.0)
18-Mar-16: Release for version 1.0.3.
20-Mar-16: Added more features (Warp Wind-down/Troop Morale/GM/Research).
23-Mar-16: Added more features (Planet Tile Info/Produced Resource Changing).
02-Jun-16: Release for version 1.1.0. (+improvement) (s4.1)
04-Jun-16: Added a new feature (max leaders) (s5.0)
27-Jun-16: Release for version 1.2.0.
01-Jul-16: Release for version 1.2.1.
05-Aug-16: Release for version 1.2.3. (+Renamed Fleets by TranscendPerfection)
12-Aug-16: Release for version 1.2.4. (+Wormhole+Terraforming)
16-Aug-16: Release for version 1.2.5. (+Hyperlane) (v6.5)
30-Oct-16: Release for version 1.3.1. (v6.6)
31-Oct-16: Finished the troop related scripts(v6.7)
10-Nov-16: Release for version 1.3.2. (v6.8)
13-Nov-16: Finished implementation of "Pretty Quick Move" (by TranscendPerfection) (v6.9)
05-Dec-16: Release for version 1.4.0. (v6.92)
09-Dec-16: Release for version 1.4.1.
09-Apr-17: Release for version 1.5.0. (+Unity)(v6.95)
10-Apr-17: Added quick mega construc and some adjustment (s7.0)
11-Apr-17: Change HP for player identification (v7.1)
11-Apr-17: Fixes for crashing. Added Anomaly Cheat (by TranscendPerfection). (v7.2)
11-Apr-17: Release for version 1.5.1. (BETA)
12-Apr-17: Release for version 1.5.1. (official Release)(+new feature)(v7.3)
13-Apr-17: Added one more option (Anomaly related)
10-May-17: Release for version 1.6.0 + Quick Level Up. (v7.5)
12-May-17: Release for version 1.6.1 (beta)
13-May-17: Fix for minimum Resources (v7.6)
17-Jun-17: Release for version 1.6.2.
22-Jul-17: Release for version 1.7.4 (beta)
22-Sep-17: Release for version 1.8.0 (s7.7)
23-Sep-17: Fixed Anomaly Risk (s7.8)
04-Oct-17: Added Machine in Quick Population (s7.9)
04-Oct-17: Release for version 1.8.1 (Beta)
11-Oct-17: Release for version 1.8.2.
25-Oct-17: Release for version 1.8.3.
01-Nov-17: Fix for construction of Megastructures (s7.a)
07-Dec-17: Release for version 1.9.0.
14-Dec-17: Release for version 1.9.1.
24-Feb-18: Release for version 2.0.0. (S8.0) Preliminary
25-Feb-18: Release for version 2.0.0. (S8.0) Final
27-Feb-18: Release for version 2.0.1. + Colossus Quick Action (S8.1)
03-Mar-18: Release for version 2.0.2. (Beta)
06-Mar-18: Release for version 2.0.2. (5781) (Beta)
11-Mar-18: Release for version 2.0.2. (5b9d) (Beta)
15-Mar-18: Release for version 2.0.2. (9b47) (Beta)
26-Mar-18: Release for version 2.0.2. (d07e) (Beta)
29-Mar-18: Release for version 2.0.2. (5e21) (Final)
Features:
- Minimum Resources:
- Energy
- Minerals
- Influence
- Unity (can be included or not)
- Minimum Research Points:
- Physics
- Society
- Engineering
- Quick Research
- Only Special Projects (original by transcendperfection) (v6.92)
- Quick Task (for some ships):
- Survey
- Investigation
- Quick Production (Ship Construction)
- Quick Colonization
- Quick Population
- included Machines (s7.9)
- Quick Buiding
- By Planet
- By Constructor Ship:
- Stations
- Megastructures (Utopia)
- God Mode:
- ships (Hull/Shield/Armor)
- Stations (Hull/Shield/Armor)
- Troops (new)
- Minimum Production per tile
- Troop Morale
- Planet Tile Info
- Minimum Maximum # Leaders
- Pretty Quick Fleet Move (original by transcendperfection) (v6.8/6.9)
- Anomaly Scan Risk (original by transcendperfection) (v7.2)
- Player's Characters quick level-up to max (v7.5)
- Colossus Quick Actions (2 days) new (v8.1)
- Some Pointers
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 6.7) then
ShowMessage('Sorry. CE version should be 6.7 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif (process ~= "stellaris.exe") then
ShowMessage('Error. Expected Process = stellaris.exe')
end
{$asm}
//=========================================
// Definitions
define(LUDO,"stellaris.exe")
define(MOHP,stellaris.exe+006bc077) //#===#=== 2 2
define(MOSC,stellaris.exe+00311734) //========
define(MOSS,stellaris.exe+002aec33) //X=======
define(MOSF,stellaris.exe+0032bd6a) //#=======
define(MOSP,stellaris.exe+0072dc70) //X=#===== 6 6
define(MSTE,stellaris.exe+008b0d33) //#=======
define(MSTP,stellaris.exe+002ea6e0) //#=======
define(MORP,stellaris.exe+002ec91f) //#===#===
define(MOTP,stellaris.exe+0014d471) //#=======
define(MOIP,stellaris.exe+0014e309) //#=======
define(MOPP,stellaris.exe+002905bd) //X=#=====
define(MPP2,stellaris.exe+0029abd5) //X=#=====
define(MPP3,stellaris.exe+00339d15) //N=#=====
define(MPP4,stellaris.exe+001715ad) //X=#=====
define(MOCP,stellaris.exe+00104b31) //#=#=====
define(MCP2,stellaris.exe+0014b894) //#=======
define(MBP2,stellaris.exe+00148789) //#=======
define(MOPT,stellaris.exe+00338951) //#=======
define(MSHL,stellaris.exe+002accd7) //#=#=#===
define(MSSD,stellaris.exe+002acc4b) //N===#===
define(MSAR,stellaris.exe+002acc61) //N===#===
define(MOTH,stellaris.exe+002e76da) //#=======
define(MOTM,stellaris.exe+002e86e7) //X=======
define(MOCX,stellaris.exe+0030fe4a) //#=======
define(MRIO,stellaris.exe+006c2ad5) //#=======
define(MOTC,stellaris.exe+001711e3) //#=======
define(MOML,stellaris.exe+00250113) //#=#===#=
define(MBP4,stellaris.exe+0015659e) //X=======
define(MOIM,stellaris.exe+003c1d0b) //========
define(MIM2,stellaris.exe+003c0b5a) //#=======
define(MIM3,stellaris.exe+003bc98b) //X=======
define(MIM4,stellaris.exe+003bcafb) //X=======
define(MIM5,stellaris.exe+002a92a9) //#=======
define(OOIM,stellaris.exe+010a1857) //========
define(MAR3,stellaris.exe+0020b0d3) //#=======
define(MOSM,stellaris.exe+007fe4e3) //#=======
define(MCP3,stellaris.exe+0062a7ee) //========
define(MOSO,stellaris.exe+003a2321) //N=======
define(MOCA,stellaris.exe+001577c0) //-N======
//=========================================
// Constants used in the script (that can be changed)
define(ctCE67,(float)6.7)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
assert(MOHP,8b b6 c0 08 00 00 8b 06 8b ce 8b 40 40 ff d0 84 c0 ?? ?? 8b 06 8b ce)
assert(MOSC,8b b1 a0 00 00 00 85 f6 ?? ?? 8b c6 5e 5f c3 81 c1 94 00 00 00 e8 ??)
assert(MOSS,8b 83 a4 00 00 00 3b 45 84 ?? ?? 8b 43 28 d1 e8 a8 01 ?? ?? 8b cb e8)
assert(MOSF,8b b1 28 07 00 00 8b c6 57 8b b9 2c 07 00 00 0b c7 ?? ?? 8d 44 24 08)
assert(MOSP,8b 87 20 02 00 00 25 ff ff ff 00 3b 42 10 ?? ?? 8d 0c 40 8b 42 0c 8b)
assert(MSTE,8b 48 78 8b 01 8b 40 04 ff d0 8d 4d d8 84 c0 0f 84 ?? ?? ?? ?? 6a 05)
assert(MSTP,8b 4e 28 89 0a 8d 8d c0 fe ff ff e8 ?? ?? ?? ?? 50 68 ?? ?? ?? ?? ba)
//---
assert(MORP,8b 70 04 8b 01 8b 40 1c ff d0 84 c0 ?? ?? 8b 45 fc 8d 8b 7c 01 00 00)
assert(MOTP,8b 00 39 43 1c 5b 0f 9d c0 5d c2 04 00 cc cc ?? ?? ?? ?? ?? ?? ?? ??)
assert(MOIP,8b 00 39 46 1c 0f 9d c0 5e 5s c2 04 00 8b 00 39 46 1c 5e 0f 9d c0 5d)
assert(MOPP,8b 46 34 3b 45 fc 5f 0f 9d c0 5e 8b e5 5d c3 cc cc ?? ?? ?? ?? ?? ??)
assert(MPP2,8b 00 01 41 34 8b 4d fc 3b 7d 10 ?? ?? 8b 43 0c 48 89 45 f8 83 f8 ff)
assert(MPP3,8b 00 01 41 34 8b 43 14 32 c9 2b 43 10 33 f6 c1 f8 02 88 4d ee c6 45)
assert(MPP4,8b 45 e0 01 41 34 8b 0f 8b 09 e8 ?? ?? ?? ?? 84 c0 0f 84 ?? ?? ?? ??)
assert(MOCP,8b 77 20 03 30 ?? ?? c7 47 20 18 fc ff ff c7 47 1c 02 00 00 00 5f 5e)
assert(MCP2,81 43 48 e8 03 00 00 5e 5f 5b 8b e5 5d c2 04 00 8b 5d fc 8b 4b 04 8b)
assert(MBP2,8b 00 39 46 24 0f 9d c0 5e 5d c2 04 00 8b 00 39 46 24 5e 0f 9d c0 5d)
assert(MOPT,8b 4b 78 8b 01 8b 40 04 ff d0 84 c0 ?? ?? 32 c0 5b 8b 4d f4 64 89 0d)
assert(MSHL,29 b7 8c 00 00 00 8b 0d ?? ?? ?? ?? be 18 fc ff ff 81 c1 98 00 00 00)
assert(MSSD,89 8f 90 00 00 00 33 c9 8b 87 94 00 00 00 2b 45 bc 85 c0 0f 4f c8 89)
assert(MSAR,89 8f 94 00 00 00 85 f6 ?? ?? e8 ?? ?? ?? ?? f6 40 20 01 ?? ?? 8a 1d)
assert(MOTH,8b 45 08 29 43 28 8b 43 28 8b 75 fc ?? ?? c7 43 28 00 00 00 00 ?? ??)
assert(MOTM,8b 46 68 3b c8 ?? ?? 8b c8 8b 45 08 29 4e 68 8b 4e 68 89 08 5f 5e 8b)
assert(MOCX,8b 00 39 46 74 ?? ?? 51 8b ce e8 ?? ?? ?? ?? 8b 7e 78 8b ce e8 ?? ??)
assert(MRIO,8b 7a 04 2b 3a c1 ff 02 85 ff 0f 8e ?? ?? ?? ?? 8b 83 f4 05 00 00 03)
assert(MOTC,69 46 4c e8 03 00 00 39 46 54 0f 9d c0 84 c0 0f 84 ?? ?? ?? ?? 8b 46)
assert(MOML,8a 80 e9 2c 00 00 84 c0 8b 47 10 8b 4c c8 04 0f 84 ?? ?? ?? ?? 85 c9)
assert(MBP4,8b 00 39 46 5c 0f 9d c0 5e 5d c2 04 00 8b 00 39 46 5c 5e 0f 9d c0 5d)
assert(MOIM,80 3d ?? ?? ?? ?? 00 53 8b d9 57 89 5d e8 ?? ?? 8b 55 08 8b 42 04 89)
assert(MIM2,80 3d ?? ?? ?? ?? 00 ?? ?? 83 bf 84 00 00 00 01 ?? ?? 8b 57 04 8d 77)
assert(MIM3,80 3d ?? ?? ?? ?? 00 53 56 57 8b f1 ?? ?? 33 c0 8b 4d f4 64 89 0d 00)
assert(MIM4,80 3d ?? ?? ?? ?? 00 53 56 57 8b f1 ?? ?? 33 c0 8b 4d f4 64 89 0d 00)
assert(MIM5,80 3d ?? ?? ?? ?? 00 53 56 57 8b fa 8b d9 89 7c 24 18 89 5c 24 1c ??)
assert(MAR3,8b 83 fc 00 00 00 2b 83 f8 00 00 00 83 f8 04 ?? ?? 8b 75 10 85 f6 ??)
assert(MOSM,8b 89 ac 00 00 00 85 c9 ?? ?? 83 c9 ff ?? ?? 8b 46 28 3d 8c 6c e7 ff)
assert(MCP3,8b 4b 40 8d 43 44 57 50 56 ff 35 ?? ?? ?? ?? e8 ?? ?? ?? ?? 80 3d ??)
assert(MOSO,c6 46 04 01 50 8d 4f 04 e8 ?? ?? ?? ?? 8b 06 8b ce 57 ff 50 04 5f 5e)
assert(MOCA,8b 41 1c 39 41 18 0f 9d c0 c2 04 00 cc cc ?? ?? ?? ?? ?? ?? ?? ?? ??)
//=========================================
alloc(MyCode,4096,$process)
//=========================================
// Declaration section
label(_MonHumanPlayer)
label(_BackMHP)
label(_MonSelChar)
label(_BackMSC)
label(_MonSelShip)
label(_BackMSS)
label(_MonSelFleet)
label(_BackMSF)
label(_MonSelPlanet)
label(_BackMSP)
label(_MonSelTile)
label(_BackSTE)
label(_MonSelTroop)
label(_BackMST)
label(_MonResearchProg)
label(_BackMRP)
label(_MonTaskProg)
label(_BackMTP)
label(_MonInvestigationProg)
label(_BackMIP)
label(_MonProdProg)
label(_BackMPP)
label(_MonProdProg2)
label(_BackPP2)
label(_MonProdProg3)
label(_BackPP3)
label(_MonProdProg4)
label(_BackPP4)
label(_MonColProg)
label(_BackMCP)
label(_MonColProg2)
label(_BackCP2)
label(_MonBuildProg2)
label(_BackBP2)
label(_MonPlanetTiles)
label(_BackMPT)
label(_MonShipHull)
label(_BackMSH)
label(_MonShipShield)
label(_BackSSD)
label(_MonShipArmor)
label(_BackMSA)
label(_MonTroopHealth)
label(_BackMTH)
label(_MonTroopMorale)
label(_BackMTM)
label(_MonCharXP)
label(_BackMCX)
label(_MonResourceInfo)
label(_BackRIO)
label(_MonTileConst)
label(_BackMTC)
label(_MonMaxLeaders)
label(_BackMML)
label(_MonBuildProg4)
label(_BackBP4)
label(_MonInstantMove)
label(_BackMIM)
label(_MonInstantMove2)
label(_BackIM2)
label(_MonInstantMove3)
label(_BackIM3)
label(_MonInstantMove4)
label(_BackIM4)
label(_MonInstantMove5)
label(_BackIM5)
label(_MonAnomalyRisk3)
label(_BackAR3)
label(_MonSelMega)
label(_BackMSM)
label(_MonSelObj)
label(_BackMSO)
label(_MonColossusAction)
label(_BackMCA)
label(iEnableMMR)
label(iEnableMSR)
label(iEnableMRP)
label(iEnableMTP)
label(iEnableMPP)
label(iEnableMCP)
label(iEnableMBP)
label(iEnableMPT)
label(iEnableGMD)
label(iEnableMTM)
label(iEnableQRP)
label(iEnableMML)
label(iEnableMTF)
label(iEnableQCP)
label(iEnableMIM)
label(iEnableSPO)
label(iEnableRIU)
label(iEnableMBM)
label(iEnableMAR)
label(iEnableIPR)
label(iEnableMCX)
label(iEnableMPG)
label(iEnableMCA)
label(iOwnerID)
label(iStatusID)
label(iResIndex)
label(iResMax)
label(iMinUnity)
label(pPlayer)
label(pRuler)
label(pChar)
label(pPlanet)
label(pShip)
label(pFleet)
label(pCommon)
label(pStatusInfo)
label(pProd)
label(pTile)
label(pResInfo)
label(pTroop)
label(pMega)
label(pObj)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMMR)
registersymbol(iEnableMSR)
registersymbol(iEnableMRP)
registersymbol(iEnableMTP)
registersymbol(iEnableMPP)
registersymbol(iEnableMCP)
registersymbol(iEnableMBP)
registersymbol(iEnableMPT)
registersymbol(iEnableGMD)
registersymbol(iEnableMTM)
registersymbol(iEnableQRP)
registersymbol(iEnableMML)
registersymbol(iEnableMTF)
registersymbol(iEnableQCP)
registersymbol(iEnableMIM)
registersymbol(iEnableSPO)
registersymbol(iEnableRIU)
registersymbol(iEnableMBM)
registersymbol(iEnableMAR)
registersymbol(iEnableIPR)
registersymbol(iEnableMCX)
registersymbol(iEnableMPG)
registersymbol(iEnableMCA)
registersymbol(iOwnerID)
registersymbol(iStatusID)
registersymbol(iResIndex)
registersymbol(iResMax)
registersymbol(iMinUnity)
registersymbol(pPlayer)
registersymbol(pRuler)
registersymbol(pChar)
registersymbol(pPlanet)
registersymbol(pShip)
registersymbol(pFleet)
registersymbol(pCommon)
registersymbol(pStatusInfo)
registersymbol(pTile)
registersymbol(pResInfo)
registersymbol(pTroop)
registersymbol(pMega)
registersymbol(pObj)
//=========================================
MyCode:
//========================================= 202 5b9d *
// At main game screen
_MonHumanPlayer:
push eax
push ebx
push ecx
push edx
push edi
mov edi,esi
mov ecx,[edi+08]
test ecx,ecx
js _ExitMHP
mov [pPlayer],edi
and ecx,00ffffff
mov [iOwnerID],ecx
lea ecx,[edi+000009f4]
mov [pBaseStatus],ecx
mov ecx,[edi+0000015c]
mov [pCommon],ecx
cmp dword ptr [iEnableMSR],0
je _MonHPZZ // Jump if feature is disabled
mov ecx,#267000
mov ebx,[edi+000001c0]
cmp ebx,ecx
cmovs ebx,ecx
mov [edi+000001c0],ebx
mov ebx,[edi+000001c4]
cmp ebx,ecx
cmovs ebx,ecx
mov [edi+000001c4],ebx
mov ebx,[edi+000001c8]
cmp ebx,ecx
cmovs ebx,ecx
mov [edi+000001c8],ebx
_MonHPZZ:
mov ecx,[edi+000008c0]
test ecx,ecx
jz _ExitMHP
cmp dword ptr [iEnableMMR],0
je _ExitMHP // Jump if feature is disabled
mov ebx,[ecx+0000008c]
test ebx,ebx
jz _ExitMHP
mov edx,[ecx+00000090]
test edx,edx
jz _ExitMHP
_MonHP00:
cmp ebx,edx
jns _ExitMHP
mov ecx,[ebx]
mov eax,[ecx+0c]
cmp eax,'unit'
je _MonHPNU
mov eax,[ecx+00000090]
test eax,eax
jns _MonHPNS
jmp _MonHP01
//=
_MonHPNU:
cmp dword ptr [iEnableRIU],0
je _MonHP01 // Jump if feature is disabled
mov eax,[iMinUnity]
imul eax,eax,#2000
_MonHPNS:
shr eax,1
movzx ecx,word ptr [ecx+000000ea] // Get Res ID
call _ChkAdditionalRes
add eax,ecx
test eax,eax
jz _MonHP01
_MonHPNZ:
cmp eax,[ebx+04]
js _MonHP01
mov [ebx+04],eax
_MonHP01:
lea ebx,[ebx+10]
jmp _MonHP00
_ExitMHP:
pop edi
pop edx
pop ecx
pop ebx
pop eax
mov esi,[esi+000008C0] // Original code (get pResourcesInfo)
jmp _BackMHP // Back to main code
//========================================= 200 ok
// Character Under Cursor (displaying age)
_MonSelChar:
mov [pChar],ecx
_ExitMSC:
mov esi,[ecx+000000a0] // Original code (get age)
jmp _BackMSC // Back to main code
//========================================= 200 ok
// Last selected ship/station (UC on flee view)
_MonSelShip:
mov [pShip],ebx
_ExitMSS:
mov eax,[ebx+000000A4] // Original code (get cHull)
jmp _BackMSS // Back to main code
//========================================= 200 ok
// Last selected fleet/station
_MonSelFleet:
mov [pFleet],ecx
_ExitMSF:
mov esi,[ecx+00000728] // Original code (get Total Hull)
jmp _BackMSF // Back to main code
//========================================= 202 *
// Last selected planet/sun/asteroid
_MonSelPlanet:
mov [pPlanet],edi
_ExitMSP:
mov eax,[edi+00000220] // Original code (get value)
jmp _BackMSP // Back to main code
//========================================= 200 ok
// Last selected Tile
_MonSelTile:
mov [pTile],eax
_ExitSTE:
mov ecx,[eax+78] // Original code (get pInfo)
mov eax,[ecx] // Original code
jmp _BackSTE // Back to main code
//========================================= 200 ok
// Last Troop Under Cursor
_MonSelTroop:
mov [pTroop],esi
_ExitMST:
mov ecx,[esi+28] // Original code (get HP)
mov [edx],ecx // Original code
jmp _BackMST // Back to main code
//========================================= 200 ok
// Every day
_MonResearchProg:
cmp dword ptr [iEnableMRP],0
je _ExitMRP // Jump if feature is disabled
cmp ebx,[pPlayer]
jne _ExitMRP
mov esi,[eax+04]
test esi,esi
jz _ExitMRP
cmp dword ptr [iEnableSPO],0
je _MonRP00 // Jump if feature is disabled
cmp dword ptr [ecx+24],3
jne _ExitMRP
_MonRP00:
mov esi,#670000000
cmp [eax+04],esi
jns _ExitMRP
mov [eax+04],esi
_ExitMRP:
mov esi,[eax+04] // Original code (get prog)
mov eax,[ecx] // Original code
jmp _BackMRP // Back to main code
//========================================= 200 *
// During updating (min = 90%) Science
_MonTaskProg:
push ecx
push edx
push edi
mov ecx,eax
cmp dword ptr [iEnableMTP],0
je _ExitMTP // Jump if feature is disabled
test esi,esi
jz _ExitMTP
mov eax,[esi+00000090]
cmp eax,[iOwnerID]
jne _ExitMTP
mov eax,[ecx]
imul eax,eax,#90
xor edx,edx
mov edi,#100
div edi
cmp [ebx+1c],eax
jns _ExitMTP
mov [ebx+1c],eax
_ExitMTP:
mov eax,ecx
pop edi
pop edx
pop ecx
mov eax,[eax] // Original code
cmp [ebx+1C],eax // Original code (chk prog)
jmp _BackMTP // Back to main code
//========================================= 200 *
// During updating (min = 98%)
_MonInvestigationProg:
push ebx
cmp dword ptr [iEnableMTP],0
je _ExitMIP // Jump if feature is disabled
mov ebx,[ebp+0c]
test ebx,ebx
jz _ExitMIP
mov ebx,[ebx+00000090]
and ebx,00ffffff
cmp ebx,[iOwnerID]
jne _ExitMIP
mov ebx,#98000
cmp [esi+1c],ebx
jns _ExitMIP
mov [esi+1c],ebx
_ExitMIP:
pop ebx
mov eax,[eax] // Original code
cmp [esi+1C],eax // Original code (chk prog)
jmp _BackMIP // Back to main code
//========================================= 202 *
// Right After updating (ships/Yards)(from Planet/Starbase)
_MonProdProg:
cmp dword ptr [iEnableMPP],0
je _ExitMPP // Jump if feature is disabled
cmp esi,[pProd]
jne _ExitMPP
mov dword ptr [pProd],55555555
mov eax,[ebp-04]
lea eax,[eax-000007d0]
test eax,eax
js _ExitMPP
cmp [esi+34],eax
jns _ExitMPP
mov [esi+34],eax
_ExitMPP:
mov eax,[esi+34] // Original code (get prod prog)
cmp eax,[ebp-04] // Original code
jmp _BackMPP // Back to main code
//========================================= 202 *
// When updating (from Starbase) (prepare environment for previous script)
// Ships/Platforms/Modules
_MonProdProg2:
push edx
mov edx,[ebp-04] // Get Starbase
test edx,edx
jz _ExitPP2
mov edx,[edx+1c]
and edx,00ffffff
cmp edx,[iOwnerID]
jne _ExitPP2
mov [pProd],ecx
_ExitPP2:
pop edx
mov eax,[eax] // Original code
add [ecx+34],eax // Original code (set prod prog)
jmp _BackPP2 // Back to main code
//========================================= 202 *
// When updating ship prod from planet (same as previous script)
_MonProdProg3:
push eax
mov eax,[edi+00000220]
and eax,00ffffff
cmp eax,[iOwnerID]
jne _ExitPP3
mov [pProd],ecx
_ExitPP3:
pop eax
mov eax,[eax] // Original code
add [ecx+34],eax // Original code (upd prog)
jmp _BackPP3 // Back to main code
//========================================= 202 *
// When updating soldiers prod from planet (same as previous script)
_MonProdProg4:
mov eax,[ebx+00000220]
and eax,00ffffff
cmp eax,[iOwnerID]
jne _ExitPP4
mov [pProd],ecx
_ExitPP4:
mov eax,[ebp-20] // Original code
add [ecx+34],eax // Original code (upd prog)
jmp _BackPP4 // Back to main code
//========================================= 202 *
// When updating planet colonization or Tile pop Growth
_MonColProg:
push ebx
push ecx
mov ebx,[edi+08]
test ebx,ebx
jns _MonCP00
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
// Planet Colonization
lea ebx,[edi-68]
cmp dword ptr [ebx+000002a8],'plan'
jne _ExitMCP
mov ecx,[ebx+00000220]
and ecx,00ffffff
cmp ecx,[iOwnerID]
jne _ExitMCP
mov ecx,[ebx+00000088]
test ecx,ecx
js _ExitMCP
mov ecx,[ebx+00000094]
cmp [ebx+00000088],ecx
jns _ExitMCP
mov [ebx+00000088],ecx
jmp _ExitMCP
// Tile Population
_MonCP00:
cmp dword ptr [iEnableMPG],0
je _ExitMCP // Jump if feature is disabled
// Mechs
mov ebx,[pPlayer]
cmp ebx,[iTileID]
je _MonCP01
//Normal
mov ebx,[ebp+14]
test ebx,ebx
jz _ExitMCP
js _ExitMCP
cmp dword ptr [ebx+000002a8],'plan'
jne _ExitMCP
mov ecx,[ebx+00000220]
and ecx,00ffffff
cmp ecx,[iOwnerID]
jne _ExitMCP
_MonCP01:
mov [iTileID],55555555
mov ebx,#1670000
cmp [edi+20],ebx
jns _ExitMCP
mov [edi+20],ebx
_ExitMCP:
pop ecx
pop ebx
mov esi,[edi+20] // Original code
add esi,[eax] // Original code
jmp _BackMCP // Back to main code
//========================================= 200 ok
// When updating (colonization by ship) 90% (x100)
_MonColProg2:
add [ebx+48],000003E8 // Original code (upd prog)
cmp dword ptr [iEnableQCP],0
je _ExitCP2 // Jump if feature is disabled
test edi,edi
jz _ExitCP2
mov esi,[edi+00000090]
cmp esi,[iOwnerID]
jne _ExitCP2
mov esi,#9000
cmp [ebx+48],esi
jns _ExitCP2
mov [ebx+48],esi
_ExitCP2:
jmp _BackCP2 // Back to main code
//========================================= 200 ok
// When constructing by constructor ship (ex.: outpost)(%)
// EDI = pFleet
_MonBuildProg2:
push ecx
cmp dword ptr [iEnableMBP],0
je _ExitBP2 // Jump if feature is disabled
mov ecx,[ebp+0c]
test ecx,ecx
jz _ExitBP2
mov ecx,[ecx+00000090]
cmp ecx,[iOwnerID]
jne _ExitBP2
mov ecx,#97000
cmp [esi+24],ecx
jns _ExitBP2
mov [esi+24],ecx
_ExitBP2:
pop ecx
mov eax,[eax] // Original code
cmp [esi+24],eax // Original code (chk % prog)
jmp _BackBP2 // Back to main code
//========================================= 202
// When looking at the planet surface (min existing res = 20)
_MonPlanetTiles:
push edx
cmp dword ptr [iEnableMPT],0
je _ExitMPT // Jump if feature is disabled
mov eax,[ebx+10]
test eax,eax
jz _ExitMPT
mov ecx,[ebx+04]
test ecx,ecx
jz _ExitMPT
mov ecx,[ecx+00000220]
and ecx,00ffffff
cmp ecx,[iOwnerID]
jne _ExitMPT
mov ecx,[ebx+1c]
test ecx,ecx
jz _ExitMPT
mov edx,[ebx+20]
test edx,edx
jz _ExitMPT
mov eax,#20000
_MonPT00:
cmp ecx,edx
jge _ExitMPT
cmp eax,[ecx+04]
js _MonPT01
mov [ecx+04],eax
_MonPT01:
lea ecx,[ecx+10]
jmp _MonPT00
//--
_ExitMPT:
pop edx
mov ecx,[ebx+78] // Original code (get pType)
mov eax,[ecx] // Original code
jmp _BackMPT // Back to main code
//========================================= 202 5b9d *
// During Battle (ship/stations)
_MonShipHull:
cmp dword ptr [iEnableGMD],0
je _ExitMSH // Jump if feature is disabled
mov eax,[edi+38]
call _ChkPlayerFleet
jne _ExitMSH
xor esi,esi
_ExitMSH:
sub [edi+0000008C],esi // Original code (dec cHull)
jmp _BackMSH // Back to main code
//========================================= 202 5b9d *
// During Battle (ship/stations)
_MonShipShield:
cmp dword ptr [iEnableGMD],0
je _ExitSSD // Jump if feature is disabled
mov eax,[edi+38]
call _ChkPlayerFleet
jne _ExitSSD
cmp ecx,[edi+00000090]
jns _ExitSSD
mov ecx,[edi+00000090]
_ExitSSD:
mov [edi+00000090],ecx // Original code (upd Shield)
jmp _BackSSD // Back to main code
//========================================= 202 5b9d *
// During Battle (ship/stations)
_MonShipArmor:
cmp dword ptr [iEnableGMD],0
je _ExitMSA // Jump if feature is disabled
mov eax,[edi+38]
call _ChkPlayerFleet
jne _ExitMSA
cmp ecx,[edi+00000094]
jns _ExitMSA
mov ecx,[edi+00000094]
_ExitMSA:
mov [edi+00000094],ecx // Original code (upd Shield)
jmp _BackMSA // Back to main code
//========================================= 200 ok
// During Battle (Troops)
_MonTroopHealth:
cmp dword ptr [iEnableGMD],0
je _ExitMTH // Jump if feature is disabled
mov eax,[ebx+08]
call _ChkPlayerTroop
jne _ExitMTH
xor eax,eax
mov [ebp+08],eax
_ExitMTH:
mov eax,[ebp+08] // Original code
sub [ebx+28],eax // Original code (dec cHealth)
jmp _BackMTH // Back to main code
//========================================= 200 ok
// During Battle (Troops)(defender/attacker)
_MonTroopMorale:
cmp dword ptr [iEnableMTM],0
je _ExitMTM // Jump if feature is disabled
mov eax,[esi+08]
call _ChkPlayerTroop
jne _ExitMTM
xor ecx,ecx
_ExitMTM:
mov eax,[esi+68] // Original code (get morale)
cmp ecx,eax // Original code
jmp _BackMTM // Back to main code
//========================================= 202
// Character will level up to max when getting any XP
_MonCharXP:
push ecx
mov ecx,eax
cmp dword ptr [esi+00000078],5
jns _ExitMCX
cmp dword ptr [iEnableMCX],0
je _ExitMCX // Jump if feature is disabled
mov eax,[esi+08]
call _ChkPlayerChars
jnz _ExitMCX
mov eax,[ecx]
cmp [esi+74],eax
jns _ExitMCX
mov [esi+74],eax
_ExitMCX:
mov eax,ecx
pop ecx
mov eax,[eax] // Original code
cmp [esi+74],eax // Original code
jmp _BackMCX // Back to main code
//========================================= 200 OK
// Find out the resource info of a given Index
_MonResourceInfo:
push ebx
mov edi,[edx+04]
sub edi,[edx]
mov dword ptr [iResMax],00
test edi,edi
jz _ExitRIO
sar edi,02
mov [iResMax],edi
cmp edi,[iResIndex]
js _ExitRIO
mov edi,[iResIndex]
test edi,edi
jz _ExitRIO
mov ebx,[edx]
mov edi,[ebx+edi*4-04]
mov [pResInfo],edi
_ExitRIO:
pop ebx
mov edi,[edx+04] // Original code (get pEnd)
sub edi,[edx] // Original code (pBegin)
jmp _BackRIO // Back to main code
//========================================= 202
// When checking const prog during turn (for tiles)
_MonTileConst:
push ecx
imul eax,[esi+4c],000003E8 // Original code (get #Days)
cmp dword ptr [iEnableMBP],0
je _ExitMTC // Jump if feature is disabled
mov ecx,[ebx+00000220]
and ecx,00ffffff
cmp ecx,[iOwnerID]
jne _ExitMTC
mov [esi+54],eax
_ExitMTC:
pop ecx
jmp _BackMTC // Back to main code
//========================================= 202 **
// At the pick one leader up screen (additional leader researched)
_MonMaxLeaders:
push eax
push ebx
cmp dword ptr [iEnableMML],0
je _ExitMML // Jump if feature is disabled
cmp edi,[pBaseStatus]
jne _ExitMML
mov eax,#67000
mov ebx,[edi+10]
cmp [ebx+ecx*8+04],eax
jns _ExitMML
mov [ebx+ecx*8+04],eax // Additional # of leaders (67)
_ExitMML:
pop ebx
pop eax
mov al,[eax+00002Ce9] // Original code
jmp _BackMML // Back to main code
//========================================= 200 ok
// When constructing by ship constructor (ex.: MEGA)
_MonBuildProg4:
push edi
cmp dword ptr [iEnableMBM],0
je _ExitBP4 // Jump if feature is disabled
mov edi,[ebp+0c]
test edi,edi
jz _ExitBP4
cmp edi,[ebp-04]
jne _ExitBP4
mov edi,[edi+00000090]
cmp edi,[iOwnerID]
jne _ExitBP4
mov edi,[eax]
cmp [esi+5C],edi
jns _ExitBP4
mov [esi+5C],edi
_ExitBP4:
pop edi
mov eax,[eax] // Original code
cmp [esi+5C],eax // Original code (chk prog)
jmp _BackBP4 // Back to main code
//========================================= 200 OK
// When Moving Fleet (original by transcendperfection)
_MonInstantMove:
push eax
push esi
movzx eax,byte ptr [OOIM]
cmp dword ptr [iEnableMIM],0
je _ExitMIM // Jump if feature is disabled
mov esi,[ecx+04]
test esi,esi
jz _ExitMIM
mov esi,[esi+00000090]
and esi,00ffffff
cmp esi,[iOwnerID]
jne _ExitMIM
inc eax
_ExitMIM:
test eax,eax
pop esi
pop eax
jmp _BackMIM // Back to main code
//========================================= 200 OK
// When Moving Fleet (original by transcendperfection)
_MonInstantMove2:
push eax
push esi
movzx eax,byte ptr [OOIM]
cmp dword ptr [iEnableMIM],0
je _ExitIM2 // Jump if feature is disabled
mov esi,[edi+04]
test esi,esi
jz _ExitIM2
mov esi,[esi+00000090]
cmp esi,[iOwnerID]
jne _ExitIM2
inc eax
_ExitIM2:
test eax,eax
pop esi
pop eax
jmp _BackIM2 // Back to main code
//========================================= 200 ok
// When Moving Fleet (original by transcendperfection)
_MonInstantMove3:
push eax
push esi
movzx esi,byte ptr [OOIM]
cmp dword ptr [iEnableMIM],0
je _ExitIM3 // Jump if feature is disabled
mov eax,[ecx+20] // Get fleet ID
call _ChkPlayerFleet
jnz _ExitIM3
inc esi
_ExitIM3:
test esi,esi
pop esi
pop eax
jmp _BackIM3 // Back to main code
//========================================= 200 ok
// When Moving Fleet (original by transcendperfection)
_MonInstantMove4:
push eax
push esi
movzx esi,byte ptr [OOIM]
cmp dword ptr [iEnableMIM],0
je _ExitIM4 // Jump if feature is disabled
mov eax,[ecx+20] // Get fleet ID
call _ChkPlayerFleet
jnz _ExitIM4
inc esi
_ExitIM4:
test esi,esi
pop esi
pop eax
jmp _BackIM4 // Back to main code
//========================================= 200 ok
// When Moving Ship (original by transcendperfection)
_MonInstantMove5:
push eax
push esi
movzx esi,byte ptr [OOIM]
cmp dword ptr [iEnableMIM],0
je _ExitIM5 // Jump if feature is disabled
mov eax,[ecx+50]
call _ChkPlayerFleet
jnz _ExitIM5
inc esi
_ExitIM5:
test esi,esi
pop esi
pop eax
jmp _BackIM5 // Back to main code
//========================================= 200 ok
// When viewing anomaly risk
_MonAnomalyRisk3:
push ecx
mov ecx,[ebp+0c]
lea ecx,[ecx]
mov eax,[ebx+000000fc] // Original code
test ecx,ecx
jz _ExitAR3
cmp dword ptr [iEnableMAR],0
je _ExitAR3 // Jump if feature is disabled
push eax
mov eax,[ecx+08]
call _ChkPlayerChars
pop eax
jnz _ExitAR3
mov eax,[ebx+000000f8]
_ExitAR3:
pop ecx
jmp _BackAR3 // Back to main code
//========================================= 200 ok
// Last selected megastructure during upgrade (game paused)
_MonSelMega:
mov [pMega],esi
_ExitMSM:
mov ecx,[ecx+000000ac] // Original code
jmp _BackMSM // Back to main code
//========================================= 200 ok
// When Populating a Tile (with Machine)
_MonColProg3:
mov [iTileID],esi
_ExitCP3:
mov ecx,[ebx+40] // Original code
lea eax,[ebx+44] // Original code
jmp _BackCP3 // Back to main code
//========================================= 200 ok
// Last selected Object
_MonSelObj:
mov [pObj],esi
_ExitMSO:
mov byte ptr [esi+04],01 // Original code (set sel)
push eax // Original code
jmp _BackMSO // Back to main code
//========================================= 201 ok
// When colossus is preparing or cracking
_MonColossusAction:
cmp dword ptr [iEnableMCA],0
je _ExitMCA // Jump if feature is disabled
test edi,edi
jz _ExitMCA
mov eax,[edi+00000090]
cmp eax,[iOwnerID]
jne _ExitMCA
mov eax,[ecx+1C]
lea eax,[eax-000007d0]
cmp [ecx+18],eax
jns _ExitMCA
mov [ecx+18],eax
_ExitMCA:
mov eax,[ecx+1C] // Original code
cmp [ecx+18],eax // Original code (chk prog)
jmp _BackMCA // Back to main code
//=========================================
align 10,cc
//========================================= 202 5b9d #
// Check if it is a player's ship/Station (based on its fleet id)
// Input : EAX = FleetID
// Output: Z = found and NZ = Not Found
_ChkPlayerFleet:
push ebx
push ecx
mov ebx,[pPlayer]
mov ecx,[ebx+00000738]
mov ebx,[ebx+00000734]
test ebx,ebx
jz _ChkPF01
_ChkPF00:
cmp ecx,ebx
jle _ChkPF01
cmp eax,[ebx]
je _ChkPF02
lea ebx,[ebx+04]
jmp _ChkPF00
//==
_ChkPF01:
inc eax
test eax,eax
_ChkPF02:
pop ecx
pop ebx
ret
//=========================================
align 10,cc
//========================================= 202 5b9d #
// Check if it is a player's troop (based on its id)
// Input : EAX = TroopID
// Output: Z = found and NZ = Not Found
_ChkPlayerTroop:
push ebx
push ecx
mov ebx,[pPlayer]
mov ecx,[ebx+00000744]
mov ebx,[ebx+00000740]
test ebx,ebx
jz _ChkPT01
_ChkPT00:
cmp ecx,ebx
jle _ChkPF01
cmp eax,[ebx]
je _ChkPT02
lea ebx,[ebx+04]
jmp _ChkPT00
//--
_ChkPT01:
inc eax
test eax,eax
_ChkPT02:
pop ecx
pop ebx
ret
//=========================================
align 10,cc
//========================================= 202 5b9d #
// Check if it is a player's character (based on its id)
// Input : EAX = CharID
// Output: Z = found and NZ = Not Found
_ChkPlayerChars:
push ebx
push ecx
mov ebx,[pPlayer]
mov ecx,[ebx+0000072c]
mov ebx,[ebx+00000728]
test ebx,ebx
jz _ChkPC01
_ChkPC00:
cmp ecx,ebx
jle _ChkPC01
cmp eax,[ebx]
je _ChkPC02
lea ebx,[ebx+04]
jmp _ChkPC00
//==
_ChkPC01:
inc eax
test eax,eax
_ChkPC02:
pop ecx
pop ebx
ret
//=========================================
align 10,cc
//========================================= 202 5b9d #
// Check for additional resource max value (via id)
// Input : ECX = Resource ID
// Output: ECX = Additinal value or Zero
_ChkAdditionalRes:
push ebx
push edx
mov ebx,[pPlayer]
mov edx,[ebx+00000a08]
mov ebx,[ebx+00000a04]
test ebx,ebx
jz _ChkAR02
_ChkAR00:
cmp edx,ebx
jle _ChkAR02
cmp ecx,[ebx]
je _ChkAR01
lea ebx,[ebx+08]
jmp _ChkAR00
//--
_ChkAR01:
mov ecx,[ebx+04]
test ecx,ecx
jns _ChkAR03
_ChkAR02:
xor ecx,ecx
_ChkAR03:
pop edx
pop ebx
ret
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE6.7 Script by Recifense 180329'
//=========================================
// Variables
iEnableMMR:
dd 0
iEnableMSR:
dd 0
iEnableMRP:
dd 0
iEnableMTP:
dd 0
iEnableMPP:
dd 0
iEnableMCP:
dd 0
iEnableMBP:
dd 0
iEnableMPT:
dd 0
iEnableGMD:
dd 0
iEnableMTM:
dd 0
iEnableQRP:
dd 0
iEnableMML:
dd 0
iEnableMTF:
dd 0
iEnableQCP:
dd 0
iEnableMIM:
dd 0
iEnableSPO:
dd 0
iEnableRIU:
dd 0
iEnableMBM:
dd 0
iEnableMAR:
dd 0
iEnableIPR:
dd 0
iEnableMCX:
dd 0
iEnableMPG:
dd 0
iEnableMCA:
dd 0
iOwnerID:
dd #999
iStatusID:
dd 0
iResIndex:
dd 2
iResMax:
dd 2
iMinUnity:
dd #670
iTileID:
dd 55555555
pPlayer:
dd MyCode
pRuler:
dd 0
pChar:
dd 0
pPlanet:
dd 0
pShip:
dd 0
pFleet:
dd 0
pTile:
dd 0
pResInfo:
dd 0
pCommon:
dd MyCode
pStatusInfo:
dd 0
pProd:
dd MyCode
pTroop:
dd 0
pMega:
dd 0
pObj:
dd 0
pBaseStatus:
dd MyCode
//=========================================
// Hacking Points
MOHP:
jmp _MonHumanPlayer
nop
_BackMHP:
MOSC:
jmp _MonSelChar
nop
_BackMSC:
MOSS:
jmp _MonSelShip
nop
_BackMSS:
MOSF:
jmp _MonSelFleet
nop
_BackMSF:
MOSP:
jmp _MonSelPlanet
nop
_BackMSP:
MSTE:
jmp _MonSelTile
_BackSTE:
MSTP:
jmp _MonSelTroop
_BackMST:
MORP:
jmp _MonResearchProg
_BackMRP:
MOTP:
jmp _MonTaskProg
_BackMTP:
MOIP:
jmp _MonInvestigationProg
_BackMIP:
MOPP:
jmp _MonProdProg
nop
_BackMPP:
MPP2:
jmp _MonProdProg2
_BackPP2:
MPP3:
jmp _MonProdProg3
_BackPP3:
MPP4:
jmp _MonProdProg4
nop
_BackPP4:
MOCP:
jmp _MonColProg
_BackMCP:
MCP2:
jmp _MonColProg2
nop
nop
_BackCP2:
MBP2:
jmp _MonBuildProg2
_BackBP2:
MOPT:
jmp _MonPlanetTiles
_BackMPT:
MSHL:
jmp _MonShipHull
nop
_BackMSH:
MSSD:
jmp _MonShipShield
nop
_BackSSD:
MSAR:
jmp _MonShipArmor
nop
_BackMSA:
MOTH:
jmp _MonTroopHealth
nop
_BackMTH:
MOTM:
jmp _MonTroopMorale
_BackMTM:
MOCX:
jmp _MonCharXP
_BackMCX:
MRIO:
jmp _MonResourceInfo
_BackRIO:
MOTC:
jmp _MonTileConst
nop
nop
_BackMTC:
MOML:
jmp _MonMaxLeaders
nop
_BackMML:
MBP4:
jmp _MonBuildProg4
_BackBP4:
MOIM:
jmp _MonInstantMove
nop
nop
_BackMIM:
MIM2:
jmp _MonInstantMove2
nop
nop
_BackIM2:
MIM3:
jmp _MonInstantMove3
nop
nop
_BackIM3:
MIM4:
jmp _MonInstantMove4
nop
nop
_BackIM4:
MIM5:
jmp _MonInstantMove5
nop
nop
_BackIM5:
MAR3:
jmp _MonAnomalyRisk3
nop
_BackAR3:
MOSM:
jmp _MonSelMega
nop
_BackMSM:
MCP3:
jmp _MonColProg3
nop
_BackCP3:
MOSO:
jmp _MonSelObj
_BackMSO:
MOCA:
jmp _MonColossusAction
nop
_BackMCA:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOHP:
// mov esi,[esi+000008C0]
db 8b b6 c0 08 00 00
MOSC:
// mov esi,[ecx+000000A0]
db 8b b1 a0 00 00 00
MOSS:
// mov eax,[ebx+000000A4]
db 8b 83 a4 00 00 00
MOSF:
// mov esi,[ecx+00000728]
db 8b b1 28 07 00 00
MOSP:
// mov eax,[edi+00000220]
db 8b 87 20 02 00 00
MSTE:
// mov ecx,[eax+78]
// mov eax,[ecx]
db 8b 48 78 8b 01
MSTP:
// mov ecx,[esi+28]
// mov [edx],ecx
db 8b 4e 28 89 0a
MORP:
// mov esi,[eax+04]
// mov eax,[ecx]
db 8b 70 04 8b 01
MOTP:
// mov eax,[eax]
// cmp [ebx+1C],eax
db 8b 00 39 43 1c
MOIP:
// mov eax,[eax]
// cmp [esi+1C],eax
db 8b 00 39 46 1c
MOPP:
// mov eax,[esi+34]
// cmp eax,[ebp-04]
db 8b 46 34 3b 45 fc
MPP2:
// mov eax,[eax]
// add [ecx+34],eax
db 8b 00 01 41 34
MPP3:
// mov eax,[eax]
// add [ecx+34],eax
db 8b 00 01 41 34
MPP4:
// mov eax,[ebp-20]
// add [ecx+34],eax
db 8b 45 e0 01 41 34
MOCP:
// mov esi,[edi+20]
// add esi,[eax]
db 8b 77 20 03 30
MCP2:
// add [ebx+48],000003E8
db 81 43 48 e8 03 00 00
MBP2:
// mov eax,[eax]
// cmp [esi+24],eax
db 8b 00 39 46 24
MOPT:
// mov ecx,[ebx+78]
// mov eax,[ecx]
db 8b 4b 78 8b 01
MSHL:
// sub [edi+0000008C],esi
db 29 b7 8c 00 00 00
MSSD:
// mov [edi+00000090],ecx
db 89 8f 90 00 00 00
MSAR:
// mov [edi+00000094],ecx
db 89 8f 94 00 00 00
MOTH:
// mov eax,[ebp+08]
// sub [ebx+28],eax
db 8b 45 08 29 43 28
MOTM:
// mov eax,[esi+68]
// cmp ecx,eax
db 8b 46 68 3b c8
MOCX:
// mov eax,[eax]
// cmp [esi+74],eax
db 8b 00 39 46 74
MRIO:
// mov edi,[edx+04]
// sub edi,[edx]
db 8b 7a 04 2b 3a
MOTC:
// imul eax,[esi+4C],000003E8
db 69 46 4c e8 03 00 00
MOML:
// mov al,[eax+00002CE9]
db 8a 80 e9 2c 00 00
MBP4:
// mov eax,[eax]
// cmp [esi+5C],eax
db 8b 00 39 46 5c
MOIM:
cmp byte ptr [OOIM],00
MIM2:
cmp byte ptr [OOIM],00
MIM3:
cmp byte ptr [OOIM],00
MIM4:
cmp byte ptr [OOIM],00
MIM5:
cmp byte ptr [OOIM],00
MAR3:
// mov eax,[ebx+000000FC]
db 8b 83 fc 00 00 00
MOSM:
// mov ecx,[ecx+000000AC]
db 8b 89 ac 00 00 00
MCP3:
// mov ecx,[ebx+40]
// lea eax,[ebx+44]
db 8b 4b 40 8d 43 44
MOSO:
// mov byte ptr [esi+04],01
// push eax
db c6 46 04 01 50
MOCA:
// mov eax,[ecx+1C]
// cmp [ecx+18],eax
db 8b 41 1c 39 41 18
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMMR)
unregistersymbol(iEnableMSR)
unregistersymbol(iEnableMRP)
unregistersymbol(iEnableMTP)
unregistersymbol(iEnableMPP)
unregistersymbol(iEnableMCP)
unregistersymbol(iEnableMBP)
unregistersymbol(iEnableMPT)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMTM)
unregistersymbol(iEnableQRP)
unregistersymbol(iEnableMML)
unregistersymbol(iEnableMTF)
unregistersymbol(iEnableQCP)
unregistersymbol(iEnableMIM)
unregistersymbol(iEnableSPO)
unregistersymbol(iEnableRIU)
unregistersymbol(iEnableMBM)
unregistersymbol(iEnableMAR)
unregistersymbol(iEnableIPR)
unregistersymbol(iEnableMCX)
unregistersymbol(iEnableMPG)
unregistersymbol(iEnableMCA)
unregistersymbol(iOwnerID)
unregistersymbol(iStatusID)
unregistersymbol(iResIndex)
unregistersymbol(iResMax)
unregistersymbol(iMinUnity)
unregistersymbol(pPlayer)
unregistersymbol(pRuler)
unregistersymbol(pChar)
unregistersymbol(pPlanet)
unregistersymbol(pShip)
unregistersymbol(pFleet)
unregistersymbol(pCommon)
unregistersymbol(pStatusInfo)
unregistersymbol(pTile)
unregistersymbol(pResInfo)
unregistersymbol(pTroop)
unregistersymbol(pMega)
unregistersymbol(pObj)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
96
"[X] <== Minimum Resources (main ones)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMR",1)
getAddressList().getMemoryRecordByID(96).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMR",0)
getAddressList().getMemoryRecordByID(96).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
350
"[X] <== Include UNITY"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableRIU",1)
getAddressList().getMemoryRecordByID(350).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableRIU",0)
getAddressList().getMemoryRecordByID(350).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
357
"Minimum Value for UNITY ==> (x1)"
0080FF
4 Bytes
iMinUnity
229
"[X] <== Minimum Research Points"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMSR",1)
getAddressList().getMemoryRecordByID(229).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMSR",0)
getAddressList().getMemoryRecordByID(229).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
230
"[X] <== Quick Research (in Few months or days)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRP",1)
getAddressList().getMemoryRecordByID(230).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRP",0)
getAddressList().getMemoryRecordByID(230).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
339
"[X] <== Special Projects Only (original by TranscendPerfection)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableSPO",1)
getAddressList().getMemoryRecordByID(339).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableSPO",0)
getAddressList().getMemoryRecordByID(339).Color = 0x00c08000
{$ASM}
231
"[X] <== Quick Tasks (Survey, Investigation, etc)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMTP",1)
getAddressList().getMemoryRecordByID(231).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMTP",0)
getAddressList().getMemoryRecordByID(231).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
232
"[X] <== Quick Production (of ships)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPP",1)
getAddressList().getMemoryRecordByID(232).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPP",0)
getAddressList().getMemoryRecordByID(232).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
233
"[X] <== Quick Colonization Process (in a few months or days)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCP",1)
getAddressList().getMemoryRecordByID(233).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCP",0)
getAddressList().getMemoryRecordByID(233).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
234
"[X] <== Quick Building (in Few months or days)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMBP",1)
getAddressList().getMemoryRecordByID(234).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMBP",0)
getAddressList().getMemoryRecordByID(234).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
351
"[X] <== Quick Building of Megastructures "
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMBM",1)
getAddressList().getMemoryRecordByID(351).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMBM",0)
getAddressList().getMemoryRecordByID(351).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
235
"[X] <== Minimum Resource per Tile (look at the planet surface)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPT",1)
getAddressList().getMemoryRecordByID(235).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPT",0)
getAddressList().getMemoryRecordByID(235).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
236
"[X] <== God Mode (Ships/Stations/Planets/Troops)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMD",1)
getAddressList().getMemoryRecordByID(236).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
getAddressList().getMemoryRecordByID(236).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
246
"[X] <== Static Troop Morale "
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMTM",1)
getAddressList().getMemoryRecordByID(246).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMTM",0)
getAddressList().getMemoryRecordByID(246).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
290
"[X] <== Minimum Maximum # of Leaders "
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMML",1)
getAddressList().getMemoryRecordByID(290).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMML",0)
getAddressList().getMemoryRecordByID(290).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
331
"[X] <== Quick Colonization (ship task)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableQCP",1)
getAddressList().getMemoryRecordByID(331).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableQCP",0)
getAddressList().getMemoryRecordByID(331).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
337
"[X] <== Pretty Quick Fleet Movement (original by TranscendPerfection)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMIM",1)
getAddressList().getMemoryRecordByID(337).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMIM",0)
getAddressList().getMemoryRecordByID(337).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
352
"[X] <== Quick Population Growth (Tiles)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPG",1)
getAddressList().getMemoryRecordByID(352).Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPG",0)
getAddressList().getMemoryRecordByID(352).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
353
"[X] <== Player's Science Ships Anomaly Scan with 0% Risk (original by TranscendPerfection)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMAR",1)
getAddressList().getMemoryRecordByID(353).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMAR",0)
getAddressList().getMemoryRecordByID(353).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
371
"[X] <== Character Quick Level Up"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCX",1)
getAddressList().getMemoryRecordByID(371).Color = 0x00008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCX",0)
getAddressList().getMemoryRecordByID(371).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
372
"[X] <== Colossus Quick Action (Cracking Planets)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCA",1)
getAddressList().getMemoryRecordByID(372).Color = 0x00004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCA",0)
getAddressList().getMemoryRecordByID(372).Color = 0x00c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
141
"[X] <======= Player Info"
404080
1
143
"Faction Name (>16)"
1
0000FF
String
32
0
0
1
pPlayer
0
b0
142
"Faction Name (< 16)"
1
0000FF
String
16
0
0
1
pPlayer
b0
144
"Physics Research Stored Points (x1000) ==>"
FF00FF
4 Bytes
pPlayer
1c0
156
"Society Research Stored Points (x1000) ==>"
FF00FF
4 Bytes
pPlayer
1c4
157
"Engineering Research Stored Points (x1000) ==>"
FF00FF
4 Bytes
pPlayer
1c8
146
"[X] <======= Last Selected Character Info (game Paused)"
404080
1
148
"First Name (>16)"
1
0000FF
String
32
0
0
1
pChar
0
10
147
"First Name (< 16)"
1
0000FF
String
16
0
0
1
pChar
10
149
"Current XP (x1000) ==>"
FF00FF
4 Bytes
pChar
74
150
"Age Base (x1) ==>"
FF00FF
4 Bytes
pChar
a0
115
"[X] <================ Resource X Selected Tile Info"
404080
1
266
"[X] <===================== Pick a Resource Info (by Index)"
4080FF
1
258
"Resource Current Index (1 to MAX) =====>"
0000FF
4 Bytes
iResIndex
116
"Resource Maximum Index (DONNOT CHANGE IT)"
0000FF
4 Bytes
iResMax
259
"Resource Current Index Pointer (can be copied) <======="
1
FF00FF
4 Bytes
pResInfo
118
"Resource Name (>15)"
0000FF
String
48
0
0
1
pResInfo
0
C
117
"Resource Name (<16)"
0000FF
String
16
0
0
1
pResInfo
C
267
"[X] <===================== Selected Tile Resource(s) Info"
4080FF
1
260
"Tile 1st Resource Type Pointer (can be pasted) =======>"
1
FF00FF
4 Bytes
pTile
0
1C
262
"Tile 1st Resource Name (>15)"
1
0000FF
String
16
0
0
1
pTile
0
C
0
1C
261
"Tile 1st Resource Name (<16)"
1
0000FF
String
16
0
0
1
pTile
C
0
1C
263
"Tile 2nd Resource Type Pointer (can be pasted) =======>"
1
FF00FF
4 Bytes
pTile
10
1C
265
"Tile 1st Resource Name (>15)"
1
0000FF
String
16
0
0
1
pTile
0
C
10
1C
264
"Tile 1st Resource Name (<16)"
1
0000FF
String
16
0
0
1
pTile
C
10
1C
295
"Tile 3rd Resource Type Pointer (can be pasted) =======>"
1
FF00FF
4 Bytes
pTile
20
1C
296
"Tile 1st Resource Name (>15)"
1
0000FF
String
16
0
0
1
pTile
0
C
20
1C
297
"Tile 1st Resource Name (<16)"
1
0000FF
String
16
0
0
1
pTile
C
20
1C
334
"[X] <====================== Selected Planet Info"
404080
1
336
"Name (< 16)"
1
0000FF
String
16
0
0
1
pPlanet
204
335
"Name (>16)"
1
0000FF
String
32
0
0
1
pPlanet
0
204
332
"Days already passed to Terraform ==>"
FF00FF
4 Bytes
pPlanet
8
3c4
333
"Days necessary to Terraform ==>"
FF00FF
4 Bytes
pPlanet
c
3c4
364
"[X] <=========== Selected Megastructure Upgrade Info"
404080
1
365
"Name (< 16)"
1
0000FF
String
16
0
0
1
pMega
8
24
366
"Name (>16)"
1
0000FF
String
32
0
0
1
pMega
0
8
24
367
"Days already passed to Upgrade ==>"
FF00FF
4 Bytes
pMega
28
368
"Days necessary to Upgrade ==>"
FF00FF
4 Bytes
pMega
ac
24
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20180329
===========================================
Game Title : Stellaris - Apocalypse
Game Version : 2.0.2 (5e21) Final
Game Sponsor : Ubykh + WalletGifts + darkedone02 + hbpateiv + Patrons
Process Name : stellaris.exe
Relevant Info : 32bits/Space RTS with Pause
Script Version: 8.1
CE Version : 6.7
Release date : 29-Mar-2018
Author : Recifense
History:
14-Mar-16: First Release
15-Mar-16: Add one more feature and Fixed GM (s2.0)
18-Mar-16: Release for version 1.0.3.
20-Mar-16: Added more features (Warp Wind-down/Troop Morale/GM/Research).
23-Mar-16: Added more features (Planet Tile Info/Produced Resource Changing).
02-Jun-16: Release for version 1.1.0. (+improvement) (s4.1)
04-Jun-16: Added a new feature (max leaders) (s5.0)
27-Jun-16: Release for version 1.2.0.
01-Jul-16: Release for version 1.2.1.
05-Aug-16: Release for version 1.2.3. (+Renamed Fleets by TranscendPerfection)
12-Aug-16: Release for version 1.2.4. (+Wormhole+Terraforming)
16-Aug-16: Release for version 1.2.5. (+Hyperlane) (v6.5)
30-Oct-16: Release for version 1.3.1. (v6.6)
31-Oct-16: Finished the troop related scripts(v6.7)
10-Nov-16: Release for version 1.3.2. (v6.8)
13-Nov-16: Finished implementation of "Pretty Quick Move" (by TranscendPerfection) (v6.9)
05-Dec-16: Release for version 1.4.0. (v6.92)
09-Dec-16: Release for version 1.4.1.
09-Apr-17: Release for version 1.5.0. (+Unity)(v6.95)
10-Apr-17: Added quick mega construc and some adjustment (s7.0)
11-Apr-17: Change HP for player identification (v7.1)
11-Apr-17: Fixes for crashing. Added Anomaly Cheat (by TranscendPerfection). (v7.2)
11-Apr-17: Release for version 1.5.1. (BETA)
12-Apr-17: Release for version 1.5.1. (official Release)(+new feature)(v7.3)
13-Apr-17: Added one more option (Anomaly related)
10-May-17: Release for version 1.6.0 + Quick Level Up. (v7.5)
12-May-17: Release for version 1.6.1 (beta)
13-May-17: Fix for minimum Resources (v7.6)
17-Jun-17: Release for version 1.6.2.
22-Jul-17: Release for version 1.7.4 (beta)
22-Sep-17: Release for version 1.8.0 (s7.7)
23-Sep-17: Fixed Anomaly Risk (s7.8)
04-Oct-17: Added Machine in Quick Population (s7.9)
04-Oct-17: Release for version 1.8.1 (Beta)
11-Oct-17: Release for version 1.8.2.
25-Oct-17: Release for version 1.8.3.
01-Nov-17: Fix for construction of Megastructures (s7.a)
07-Dec-17: Release for version 1.9.0.
14-Dec-17: Release for version 1.9.1.
24-Feb-18: Release for version 2.0.0. (S8.0) Preliminary
25-Feb-18: Release for version 2.0.0. (S8.0) Final
27-Feb-18: Release for version 2.0.1. + Colossus Quick Action (S8.1)
03-Mar-18: Release for version 2.0.2. (Beta)
06-Mar-18: Release for version 2.0.2. (5781) (Beta)
11-Mar-18: Release for version 2.0.2. (5b9d) (Beta)
15-Mar-18: Release for version 2.0.2. (9b47) (Beta)
26-Mar-18: Release for version 2.0.2. (d07e) (Beta)
29-Mar-18: Release for version 2.0.2. (5e21) (Final)
Features:
- Minimum Resources: [1]
- Energy
- Minerals
- Influence
- Unity (can be included or not) (new)
- Minimum Research Points: [2]
- Physics
- Society
- Engineering
- Quick Research [3]
- Special Projects Only [31] (by TranscendPerfection)
- Quick Task (for some ships): [4]
- Survey
- Investigation
- Quick Production (Ship Construction) [5]
- Quick Colonization
- Quick Population [6]
- included Machines (s7.9)
- Quick Buiding [7]
- By Planet
- By Constructor Ship:
- Stations
- Megastructures (Utopia)
- God Mode: [8]
- ships (Hull/Shield/Armor)
- Stations (Hull/Shield/Armor)
- Troops (pending)
- Minimum Production per tile (new) [9]
- Troop Morale (new) [B] (pending)
- Pretty Quick Fleet Move (original by transcendperfection) [C]
- Anomaly Scan Risk (original by transcendperfection) (v7.2) [D]
- Player's Characters quick level-up to max (v7.5) [E]
- Colossus Quick Actions (2 days) new (v8.1) [F]
- Some Pointers [G]
===========================================
[1] It will not go under MAximum/2;
[2] It will not go under 100;
[3] It may take a few days or months (but always faster than normal);
[31] Only Special Projects will be affected;
[4] It may take a few days (but always faster than normal);
[5] It may take a few days (but always faster than normal);
[6] It may take a few days or months (but always faster than normal);
[7] It may take a few days (but always faster than normal);
[8] That's it;
[9] Minimum Resource = 20; (looking at the planet surface)
[B] Morale will not decrease during battle;
[D] Human Play's fleets will travel pretty quickly;
[E] Human Play's characters will level to max pretty quickly;
[F] Human Play's Colossus will act quickly (~2 days);
[G] Used at the table;
===========================================
[USAGE]
1) Run CE67 or greater;
2) Run Game;
3) Load the game process "stellaris.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:
[HOTKEYS]
CTRL+Home = Enable ALL cheats;
CTRL+End = Disable ALL cheats;
===========================================
[IMPORTANT]
Save your game before unsing the cheats.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
BIG THANKS to Ubykh for providing the game.
===========================================
Have fun!