I've been able to whip up a Skill-Cooldown entry after some tinkering. Works with the newest available version, whichever that is...
I'm not going to update this for any other versions if the AOB should break, I'd have finished the game long ago by that time and won't be feeling the need to delve into it again
There's an adress that stores the seconds a cooldown still needs as float.
So if the skill takes 5 seconds to cooldown, this value will count down from 5 to 0 (in real seconds in decimal). So doing a "Values between"-search you'd arrive at that adress pretty quick.
From there you need to figure out what writes to that adress, which brings you to a function that calls another function prior (the one I injected the code into) which substracts the current run time of the game from the timestamp in the skills' instance to figure out how many seconds remain.
Changing anything else in that function just changes how fast the white circle in the gui finishes a revolution around the used skill, but doesn't change the time needed to wait! The function is probably one used only to draw the UI...
I also tried to figure out what code wrote that initial timestamp so I could change it there, but had to give up pretty fast as that code also wrote timestamps for gui-events and other stuff so I wasn't comfortable changing anything there ...
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>13</ID>
<Description>"Skill cooldown"</Description>
<Options moHideChildren="1"/>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>// Game : EnderLiliesSteam-Win64-Shipping.exe
// Executable Version: 4.26.2.0
// Module Version :
// Script Date : 2021-08-03
// Author : fakerlol
[ENABLE]
aobscanmodule(aob_Cooldown,EnderLiliesSteam-Win64-Shipping.exe,40 53 48 83 ec x 0f 57 c0 48 8b d9 0f 2f 81 x x 0 0 73 x 80)
registersymbol(aob_Cooldown)
alloc(newmem_Cooldown,64,aob_Cooldown)
label(return_Cooldown)
registersymbol(Cooldown_Modifier)
label(Cooldown_Modifier)
newmem_Cooldown:
xorps xmm0, xmm0
mov rbx, rcx
// check if we've run this code at least once to avoid accumulative errors
movss xmm1, [r8]
comiss xmm1, xmm0
ja short done
// Get the cooldown of the skill (in seconds)
movss xmm1, [rcx+194]
movss xmm2, xmm1
// modified CD = Original CD - (Original CD / Modifier)
divss xmm1, [Cooldown_Modifier]
subss xmm2, xmm1
// subtract the modifier from the skills timestamp
// thus shortening the time needed to wait for the CD
movss xmm1, [rcx+1f0]
subss xmm1, xmm2
movss [rcx+1f0], xmm1
done:
jmp return_Cooldown
Cooldown_Modifier:
dd (float)3
aob_Cooldown+6:
jmp newmem_Cooldown
nop
return_Cooldown:
[DISABLE]
aob_Cooldown+6:
xorps xmm0, xmm0
mov rbx, rcx
unregistersymbol(*)
dealloc(newmem_Cooldown)
{
// ORIGINAL CODE - INJECTION POINT: EnderLiliesSteam-Win64-Shipping.exe+CD05A0
EnderLiliesSteam-Win64-Shipping.exe+CD055F: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD0560: F3 0F 10 41 70 - movss xmm0,[rcx+70]
EnderLiliesSteam-Win64-Shipping.exe+CD0565: C3 - ret
EnderLiliesSteam-Win64-Shipping.exe+CD0566: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD0567: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD0568: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD0569: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD056A: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD056B: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD056C: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD056D: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD056E: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD056F: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD0570: 40 53 - push rbx
EnderLiliesSteam-Win64-Shipping.exe+CD0572: 48 83 EC 20 - sub rsp,20
EnderLiliesSteam-Win64-Shipping.exe+CD0576: 48 8D 99 44 03 00 00 - lea rbx,[rcx+00000344]
EnderLiliesSteam-Win64-Shipping.exe+CD057D: 48 8B CB - mov rcx,rbx
EnderLiliesSteam-Win64-Shipping.exe+CD0580: E8 4B 1E 3E 00 - call EnderLiliesSteam-Win64-Shipping.exe+10B23D0
EnderLiliesSteam-Win64-Shipping.exe+CD0585: 84 C0 - test al,al
EnderLiliesSteam-Win64-Shipping.exe+CD0587: 74 0D - je EnderLiliesSteam-Win64-Shipping.exe+CD0596
EnderLiliesSteam-Win64-Shipping.exe+CD0589: 48 8B CB - mov rcx,rbx
EnderLiliesSteam-Win64-Shipping.exe+CD058C: 48 83 C4 20 - add rsp,20
EnderLiliesSteam-Win64-Shipping.exe+CD0590: 5B - pop rbx
EnderLiliesSteam-Win64-Shipping.exe+CD0591: E9 8A E0 3D 00 - jmp EnderLiliesSteam-Win64-Shipping.exe+10AE620
EnderLiliesSteam-Win64-Shipping.exe+CD0596: 33 C0 - xor eax,eax
EnderLiliesSteam-Win64-Shipping.exe+CD0598: 48 83 C4 20 - add rsp,20
EnderLiliesSteam-Win64-Shipping.exe+CD059C: 5B - pop rbx
EnderLiliesSteam-Win64-Shipping.exe+CD059D: C3 - ret
EnderLiliesSteam-Win64-Shipping.exe+CD059E: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD059F: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD05A0: 40 53 - push rbx
EnderLiliesSteam-Win64-Shipping.exe+CD05A2: 48 83 EC 30 - sub rsp,30
// ---------- INJECTING HERE ----------
EnderLiliesSteam-Win64-Shipping.exe+CD05A6: 0F 57 C0 - xorps xmm0,xmm0
EnderLiliesSteam-Win64-Shipping.exe+CD05A9: 48 8B D9 - mov rbx,rcx
// ---------- DONE INJECTING ----------
EnderLiliesSteam-Win64-Shipping.exe+CD05AC: 0F 2F 81 F0 01 00 00 - comiss xmm0,[rcx+000001F0]
EnderLiliesSteam-Win64-Shipping.exe+CD05B3: 73 53 - jae EnderLiliesSteam-Win64-Shipping.exe+CD0608
EnderLiliesSteam-Win64-Shipping.exe+CD05B5: 80 B9 98 01 00 00 00 - cmp byte ptr [rcx+00000198],00
EnderLiliesSteam-Win64-Shipping.exe+CD05BC: 0F 29 74 24 20 - movaps [rsp+20],xmm6
EnderLiliesSteam-Win64-Shipping.exe+CD05C1: F3 0F 10 B1 94 01 00 00 - movss xmm6,[rcx+00000194]
EnderLiliesSteam-Win64-Shipping.exe+CD05C9: 74 15 - je EnderLiliesSteam-Win64-Shipping.exe+CD05E0
EnderLiliesSteam-Win64-Shipping.exe+CD05CB: 0F 28 CE - movaps xmm1,xmm6
EnderLiliesSteam-Win64-Shipping.exe+CD05CE: F3 0F 59 0D 9A 6D 62 02 - mulss xmm1,[EnderLiliesSteam-Win64-Shipping.exe+32F7370]
EnderLiliesSteam-Win64-Shipping.exe+CD05D6: F3 0F 59 89 F8 01 00 00 - mulss xmm1,[rcx+000001F8]
EnderLiliesSteam-Win64-Shipping.exe+CD05DE: EB 03 - jmp EnderLiliesSteam-Win64-Shipping.exe+CD05E3
EnderLiliesSteam-Win64-Shipping.exe+CD05E0: 0F 57 C9 - xorps xmm1,xmm1
EnderLiliesSteam-Win64-Shipping.exe+CD05E3: F3 0F 5C F1 - subss xmm6,xmm1
EnderLiliesSteam-Win64-Shipping.exe+CD05E7: 0F 2F F0 - comiss xmm6,xmm0
EnderLiliesSteam-Win64-Shipping.exe+CD05EA: 73 03 - jae EnderLiliesSteam-Win64-Shipping.exe+CD05EF
EnderLiliesSteam-Win64-Shipping.exe+CD05EC: 0F 57 F6 - xorps xmm6,xmm6
EnderLiliesSteam-Win64-Shipping.exe+CD05EF: E8 EC FF 83 01 - call EnderLiliesSteam-Win64-Shipping.exe+25105E0
EnderLiliesSteam-Win64-Shipping.exe+CD05F4: F3 0F 5C 83 F0 01 00 00 - subss xmm0,[rbx+000001F0]
EnderLiliesSteam-Win64-Shipping.exe+CD05FC: F3 0F 5C F0 - subss xmm6,xmm0
EnderLiliesSteam-Win64-Shipping.exe+CD0600: 0F 28 C6 - movaps xmm0,xmm6
EnderLiliesSteam-Win64-Shipping.exe+CD0603: 0F 28 74 24 20 - movaps xmm6,[rsp+20]
EnderLiliesSteam-Win64-Shipping.exe+CD0608: 48 83 C4 30 - add rsp,30
EnderLiliesSteam-Win64-Shipping.exe+CD060C: 5B - pop rbx
EnderLiliesSteam-Win64-Shipping.exe+CD060D: C3 - ret
EnderLiliesSteam-Win64-Shipping.exe+CD060E: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD060F: CC - int 3
EnderLiliesSteam-Win64-Shipping.exe+CD0610: 0F B6 81 55 05 00 00 - movzx eax,byte ptr [rcx+00000555]
EnderLiliesSteam-Win64-Shipping.exe+CD0617: C3 - ret
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>11</ID>
<Description>"Shorten by"</Description>
<LastState Value="3" RealAddress="7FF76EC80041"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Float</VariableType>
<Address>Cooldown_Modifier</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>