A small script that allow to craft items at the workshop in the HQ for free.
You still need to have the required resources though even if they are not used.
Only activate the script when you are buying/crafting decorations at the workshop, the script may crash the game otherwise (if you try to upgrade your weapon at the forge it will freeze the game for example).
The script may allow you to buy/craft for free from other shops/npc too, but it may also crash so save your game and backup your save before and be careful
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>217931</ID>
<Description>"Free Workshop Craft"</Description>
<Options moAlwaysHideChildren="1"/>
<LastState/>
<Color>FFFF00</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : EiyudenChronicle.exe
Version:
Date : 2024-04-28
Author : acecel
This script does blah blah blah
}
[ENABLE]
aobscanmodule(aob_craft_workshop,GameAssembly.dll,49 C2 89 41 14 C3 CC CC CC CC) // should be unique
alloc(newmem,$1000,aob_craft_workshop)
label(code)
label(return)
newmem:
code:
// mov [rcx+14],eax
ret
int 3
jmp return
aob_craft_workshop+02:
jmp newmem
return:
registersymbol(aob_craft_workshop)
aobscanmodule(aob_craft_workshop_cash1,GameAssembly.dll,89 7B 10 48 8B 0D 89 EB 1C 04) // should be unique
alloc(newmem1,$1000,aob_craft_workshop_cash1)
label(code1)
label(return1)
newmem1:
code1:
// mov [rbx+10],edi
mov rcx,[GameAssembly.dll.data+2228E0]
jmp return1
aob_craft_workshop_cash1:
jmp newmem1
nop 5
return1:
registersymbol(aob_craft_workshop_cash1)
aobscanmodule(aob_craft_workshop_cash2,GameAssembly.dll,4C C7 89 43 10 48 8B 5C 24 30) // should be unique
alloc(newmem2,$1000,aob_craft_workshop_cash2)
label(code2)
label(return2)
newmem2:
code2:
// mov [rbx+10],eax
mov rbx,[rsp+30]
jmp return2
aob_craft_workshop_cash2+02:
jmp newmem2
nop 3
return2:
registersymbol(aob_craft_workshop_cash2)
[DISABLE]
aob_craft_workshop+02:
db 89 41 14 C3 CC
unregistersymbol(aob_craft_workshop)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll.il2cpp+BE79E
GameAssembly.dll.il2cpp+BE78C: CC - int 3
GameAssembly.dll.il2cpp+BE78D: CC - int 3
GameAssembly.dll.il2cpp+BE78E: CC - int 3
GameAssembly.dll.il2cpp+BE78F: CC - int 3
ItemData.set_Count: 8B 41 18 - mov eax,[rcx+18]
GameAssembly.dll.il2cpp+BE793: 3B C2 - cmp eax,edx
GameAssembly.dll.il2cpp+BE795: 7C 07 - jl GameAssembly.dll.il2cpp+BE79E
GameAssembly.dll.il2cpp+BE797: 33 C0 - xor eax,eax
GameAssembly.dll.il2cpp+BE799: 85 D2 - test edx,edx
GameAssembly.dll.il2cpp+BE79B: 0F 49 C2 - cmovns eax,edx
// ---------- INJECTING HERE ----------
GameAssembly.dll.il2cpp+BE79E: 89 41 14 - mov [rcx+14],eax
// ---------- DONE INJECTING ----------
GameAssembly.dll.il2cpp+BE7A1: C3 - ret
GameAssembly.dll.il2cpp+BE7A2: CC - int 3
GameAssembly.dll.il2cpp+BE7A3: CC - int 3
GameAssembly.dll.il2cpp+BE7A4: CC - int 3
GameAssembly.dll.il2cpp+BE7A5: CC - int 3
GameAssembly.dll.il2cpp+BE7A6: CC - int 3
GameAssembly.dll.il2cpp+BE7A7: CC - int 3
GameAssembly.dll.il2cpp+BE7A8: CC - int 3
GameAssembly.dll.il2cpp+BE7A9: CC - int 3
GameAssembly.dll.il2cpp+BE7AA: CC - int 3
}
aob_craft_workshop_cash1:
db 89 7B 10 48 8B 0D 89 EB 1C 04
unregistersymbol(aob_craft_workshop_cash1)
dealloc(newmem1)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll.il2cpp+485D4D
GameAssembly.dll.il2cpp+485D12: 48 8D 0D 7F B0 13 04 - lea rcx,[GameAssembly.dll.data+18ED98]
GameAssembly.dll.il2cpp+485D19: E8 82 36 A8 FF - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll.il2cpp+485D1E: 48 8D 0D 23 F6 1A 04 - lea rcx,[GameAssembly.dll.data+203348]
GameAssembly.dll.il2cpp+485D25: E8 76 36 A8 FF - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll.il2cpp+485D2A: 48 8D 0D AF A5 12 04 - lea rcx,[GameAssembly.dll.data+17E2E0]
GameAssembly.dll.il2cpp+485D31: E8 6A 36 A8 FF - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll.il2cpp+485D36: 48 8D 0D A3 EB 1C 04 - lea rcx,[GameAssembly.dll.data+2228E0]
GameAssembly.dll.il2cpp+485D3D: E8 5E 36 A8 FF - call GameAssembly.il2cpp_get_exception_argument_null+2B0
GameAssembly.dll.il2cpp+485D42: C6 05 BF E9 44 04 01 - mov byte ptr [GameAssembly.dll+4E23708],01
GameAssembly.dll.il2cpp+485D49: 48 8B 6B 30 - mov rbp,[rbx+30]
// ---------- INJECTING HERE ----------
GameAssembly.dll.il2cpp+485D4D: 89 7B 10 - mov [rbx+10],edi
// ---------- DONE INJECTING ----------
GameAssembly.dll.il2cpp+485D50: 48 8B 0D 89 EB 1C 04 - mov rcx,[GameAssembly.dll.data+2228E0]
GameAssembly.dll.il2cpp+485D57: E8 94 37 A8 FF - call GameAssembly.il2cpp_method_get_class+40
GameAssembly.dll.il2cpp+485D5C: 48 8B F0 - mov rsi,rax
GameAssembly.dll.il2cpp+485D5F: 48 85 C0 - test rax,rax
GameAssembly.dll.il2cpp+485D62: 74 5B - je GameAssembly.dll.il2cpp+485DBF
GameAssembly.dll.il2cpp+485D64: 4C 8B 05 75 A5 12 04 - mov r8,[GameAssembly.dll.data+17E2E0]
GameAssembly.dll.il2cpp+485D6B: 45 33 C9 - xor r9d,r9d
GameAssembly.dll.il2cpp+485D6E: 48 8B D3 - mov rdx,rbx
GameAssembly.dll.il2cpp+485D71: 48 8B C8 - mov rcx,rax
GameAssembly.dll.il2cpp+485D74: E8 07 FF D5 00 - call GameAssembly.dll.il2cpp+11E5C80
}
aob_craft_workshop_cash2+02:
db 89 43 10 48 8B 5C 24 30
unregistersymbol(aob_craft_workshop_cash2)
dealloc(newmem2)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll.il2cpp+485DA7
GameAssembly.dll.il2cpp+485D83: 48 8B CD - mov rcx,rbp
GameAssembly.dll.il2cpp+485D86: E8 05 FD AF 00 - call GameAssembly.dll.il2cpp+F85A90
GameAssembly.dll.il2cpp+485D8B: 48 8B 15 06 B0 13 04 - mov rdx,[GameAssembly.dll.data+18ED98]
GameAssembly.dll.il2cpp+485D92: 48 8B C8 - mov rcx,rax
GameAssembly.dll.il2cpp+485D95: E8 96 5A AD 00 - call GameAssembly.dll.il2cpp+F5B830
GameAssembly.dll.il2cpp+485D9A: 48 85 C0 - test rax,rax
GameAssembly.dll.il2cpp+485D9D: 74 0B - je GameAssembly.dll.il2cpp+485DAA
GameAssembly.dll.il2cpp+485D9F: 8B 40 1C - mov eax,[rax+1C]
GameAssembly.dll.il2cpp+485DA2: 3B F8 - cmp edi,eax
GameAssembly.dll.il2cpp+485DA4: 0F 4C C7 - cmovl eax,edi
// ---------- INJECTING HERE ----------
GameAssembly.dll.il2cpp+485DA7: 89 43 10 - mov [rbx+10],eax
// ---------- DONE INJECTING ----------
GameAssembly.dll.il2cpp+485DAA: 48 8B 5C 24 30 - mov rbx,[rsp+30]
GameAssembly.dll.il2cpp+485DAF: 48 8B 6C 24 38 - mov rbp,[rsp+38]
GameAssembly.dll.il2cpp+485DB4: 48 8B 74 24 40 - mov rsi,[rsp+40]
GameAssembly.dll.il2cpp+485DB9: 48 83 C4 20 - add rsp,20
GameAssembly.dll.il2cpp+485DBD: 5F - pop rdi
GameAssembly.dll.il2cpp+485DBE: C3 - ret
GameAssembly.dll.il2cpp+485DBF: E8 7C 37 A8 FF - call GameAssembly.il2cpp_method_get_class+90
GameAssembly.dll.il2cpp+485DC4: CC - int 3
GameAssembly.dll.il2cpp+485DC5: CC - int 3
GameAssembly.dll.il2cpp+485DC6: CC - int 3
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>217933</ID>
<Description>" Only activate when crafting items via the Workshop, will crash game otherwise"</Description>
<LastState Value="" RealAddress="00000000"/>
<Color>008080</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>217934</ID>
<Description>"You still need the resources for the craft even if they are not used"</Description>
<LastState Value="" RealAddress="00000000"/>
<Color>008080</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>