[RESEARCH/CODING] The Silent Archivist — IL2CPP Research & F4CK Scripts

Wait 5 sec.

Game: The Silent Archivist Platform: iOS / Unity IL2CPP Tool: F4CK IL2CPP Tool v1.1.10 Hello everyone, I've spent some time reverse-engineering The Silent Archivist (currently modded by @Laxus) with F4CK IL2CPP Tool, mainly to understand how the game's equipment, enhancements, jobs and character progression systems work. Rather than keeping the results to myself, I thought I'd share them here in case they are useful to other players, researchers, or mod-menu developers. Everything below has been tested in-game, rather than inferred from metadata alone. Equipment creation: Both armor and weapons can be created directly from their corresponding Master objects and added to the player's inventory. Armor: Weapon: The exact internal Master ID can therefore be selected directly. See the scripts below. I also catalogued the available definitions: 313 ArmorMaster entries443 WeaponMaster entriesInternal IDsLevelsDisplay namesEnhancements: The Enhancement class contains: kind @ 0x10 value @ 0x14 I identified 33 Enhancement.Kind values, including Damage, Defense, MaxDamage, MaxDefense, MagicDefense, Agility, CriticalRate, Avoid, MagicPower, Fire, Ice, and others. The most interesting discovery was: Equipment.RunCraft(Int32) The parameter is not the Forge level. Testing showed: RunCraft(6) → 6 new Enhancements RunCraft(100) → 100 new Enhancements The generated enhancements are real native Enhancement objects and are attached to the equipment normally. This makes it possible to generate a large number of enhancements on the equipment currently displayed in the UI. A wooden Sword+100 basically. See the end of the post for the working script. Jobs / XP: The Job system exposes: A large amount of XP can be assigned to jobs and then processed through the game's normal Adventure XP / level-up mechanism. A working script was made to raise all jobs to their maximum level. Once again, see the bottom of the post. Attribute points: This one was particularly interesting to reverse-engineer. CreateAdventureDialog contains: addPoint @ 0xC8 System.Int32 This is the available attribute-point budget. Temporary allocations are stored separately: CharacterPointCellView.Point addPoint @ 0x18 The actual flow is: This was confirmed through controlled in-game tests. A native F4CK write to CreateAdventureDialog + 0xC8 successfully changes the available distribution-point counter. There is, however, one limitation: F4CK v1.1.10 does not expose its native write_field/read_field functions to Lua. The Lua bridge currently exposes only: So a clean standalone Lua implementation for the attribute-point budget is currently impossible. For anyone developing a mod menu or extending the F4CK bridge, exposing something equivalent to... : ...would be sufficient to make this fully scriptable. Working scripts: The following scripts have been tested and work perfectly: SPAWN - Armor (Only change the ArmorID based on the catalogue) SPAWN - Weapons (Only change the WeaponID based on the catalogue) (Need to have the chosen equipment window opened) MAX ALL JOBS MAX ENHANCEMENTS — CURRENT EQUIPMENT (Need to have the chosen equipment window opened) The scripts are posted on CodeShare. I can also provide the PDF for ArmorMaster and WeaponMaster catalogues if anyone is interested. Also, if anyone is interested in integrating these findings into a proper mod menu, please feel free to use or build upon them. The following have been experimentally verified: direct Armor creationdirect Weapon creationinventory insertion through GameData.AddEquipmentarbitrary enhancement generation through RunCraft(N)Job XP manipulationattribute-point budget manipulation through native F4CK writingHopefully this saves someone else a few hours of digging through IL2CPP metadata..! Thanks to everyone who develops and maintains the tools that make this kind of research possible. And if anyone takes these findings further, I'd be genuinely happy to see what you come up with.