The game's list builder runs on a reordered copy of the book: the story, then one section per region (id blocks of 100 grouped by the region their quests lie in, named as the megamap names regions), unknown quests as "???", the rest joined to the nearest area, undiscovered counts. Act tabs hidden, page turning kept. "Erledigte anzeigen" row toggles completed quests ([questbook] ShowCompleted). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
93 lines
2.9 KiB
CMake
93 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
project(sacredK LANGUAGES C CXX)
|
|
|
|
# sacred.exe is a 32-bit process; everything we inject into it must be 32-bit too.
|
|
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
message(FATAL_ERROR "sacredK must be built for 32-bit x86 (use the 'x86-*' presets / an x86 MSVC environment).")
|
|
endif()
|
|
if(NOT MSVC)
|
|
message(FATAL_ERROR "sacredK requires MSVC (the game's C++ ABI is MSVC's).")
|
|
endif()
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
# Static CRT: no VC++ redistributable needed next to the game.
|
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
|
add_compile_definitions(WIN32_LEAN_AND_MEAN NOMINMAX _CRT_SECURE_NO_WARNINGS)
|
|
|
|
include(cmake/Detours.cmake)
|
|
include(cmake/Json.cmake)
|
|
|
|
set(SACREDK_CXX_FLAGS /W4 /permissive- /utf-8)
|
|
|
|
# --- sacredK.dll: injected into sacred.exe, installs the hooks -------------
|
|
add_library(sacredK SHARED
|
|
src/re/dllmain.cpp
|
|
src/re/hook.cpp
|
|
src/re/log.cpp
|
|
src/re/config.cpp
|
|
src/re/patch.cpp
|
|
src/re/crash.cpp
|
|
src/re/sacredK.def
|
|
src/game/engine/log.cpp
|
|
src/game/engine/cmdline.cpp
|
|
src/game/engine/events.cpp
|
|
src/game/engine/fx.cpp
|
|
src/game/engine/orders.cpp
|
|
src/game/engine/items.cpp
|
|
src/game/engine/stream.cpp
|
|
src/game/ui/texts.cpp
|
|
src/game/engine/art.cpp
|
|
src/mods/borderless.cpp
|
|
src/mods/widescreen.cpp
|
|
src/mods/hud.cpp
|
|
src/mods/wasd.cpp
|
|
src/mods/skillkeys.cpp
|
|
src/mods/input.cpp
|
|
src/mods/skillslots.cpp
|
|
src/mods/inventory_save.cpp
|
|
src/mods/potioncounts.cpp
|
|
src/mods/itemstack.cpp
|
|
src/mods/sharedchest.cpp
|
|
src/mods/skillbar.cpp
|
|
src/mods/arttarget.cpp
|
|
src/mods/aura_restore.cpp
|
|
src/mods/autoattack.cpp
|
|
src/mods/aurarecast.cpp
|
|
src/mods/artregen.cpp
|
|
src/mods/combos.cpp
|
|
src/mods/aurahits.cpp
|
|
src/mods/chainlightning.cpp
|
|
src/mods/arttooltip.cpp
|
|
src/mods/escape.cpp
|
|
src/mods/recordcache.cpp
|
|
src/mods/megamap.cpp
|
|
src/mods/respec.cpp
|
|
src/mods/runetrade.cpp
|
|
src/mods/teleportpotion.cpp
|
|
src/mods/guards.cpp
|
|
src/mods/options.cpp
|
|
src/mods/lootfilter.cpp
|
|
src/mods/userfolders.cpp
|
|
src/mods/charfile.cpp
|
|
src/mods/screen.cpp
|
|
src/mods/characters.cpp
|
|
src/mods/mainmenu.cpp
|
|
src/mods/mapreveal.cpp
|
|
src/mods/questbook.cpp
|
|
src/mods/questfail.cpp
|
|
src/mods/anticheat.cpp
|
|
src/mods/loadingscreen.cpp
|
|
)
|
|
target_include_directories(sacredK PRIVATE src)
|
|
target_compile_options(sacredK PRIVATE ${SACREDK_CXX_FLAGS})
|
|
target_link_libraries(sacredK PRIVATE detours nlohmann_json::nlohmann_json dbghelp)
|
|
|
|
# --- sacredK.exe: launches sacred.exe with sacredK.dll injected ----------
|
|
add_executable(sacredK_launcher WIN32 src/launcher/main.cpp)
|
|
set_target_properties(sacredK_launcher PROPERTIES OUTPUT_NAME sacredK)
|
|
target_compile_options(sacredK_launcher PRIVATE ${SACREDK_CXX_FLAGS})
|
|
target_link_libraries(sacredK_launcher PRIVATE detours)
|
|
add_dependencies(sacredK_launcher sacredK)
|