games/play-a-house-of-many-doors.sh0000755000000000000000000000400614471751340016211 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # A House of Many Doors # send your bug reports to bugs@dotslashplay.it ### script_version=20260510.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='a-house-of-many-doors' GAME_NAME='A House of Many Doors' ARCHIVE_BASE_0_NAME='A House of Many Doors.zip' ARCHIVE_BASE_0_MD5='bf3714af567c8e6290577af2d744dd0a' ARCHIVE_BASE_0_SIZE='463417' ARCHIVE_BASE_0_VERSION='1.2-itch.2017.03.30' ARCHIVE_BASE_0_URL='https://pixeltrickery.itch.io/a-house-of-many-doors' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' A House of Many Doors.exe HOMD.homd Game Data.ini options.ini' # TODO: Check if the following library is required. # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' D3DX9_43.dll' CONTENT_GAME_DATA_FILES=' Images audiogroup*.dat *.ogg penumbra_s.png data.win' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/A_House_of_Many_Doors' APP_MAIN_EXE='A House of Many Doors.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-akalabeth.sh0000755000000000000000000000352614471751340014102 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Mopi set -o errexit ### # Akalabeth: World of Doom # send your bug reports to bugs@dotslashplay.it ### script_version=20250826.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='akalabeth' GAME_NAME='Akalabeth: World of Doom' ARCHIVE_BASE_0_NAME='gog_akalabeth_world_of_doom_2.0.0.3.sh' ARCHIVE_BASE_0_MD5='11a770db592af2ac463e6cdc453b555b' ARCHIVE_BASE_0_SIZE='13000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.3' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' aklabeth.bas aklabeth.exe' CONTENT_DOC_MAIN_PATH='data/noarch/docs' CONTENT_DOC_MAIN_FILES=' *.pdf' APP_MAIN_EXE='aklabeth.exe' APP_MAIN_ICON='../support/icon.png' ## convmv is used to convert paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ## Convert all paths to lowercase. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-anima-gate-of-memories.sh0000755000000000000000000000523614471751340016411 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Anima: Gate of Memories # send your bug reports to bugs@dotslashplay.it ### script_version=20250509.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='anima-gate-of-memories' GAME_NAME='Anima: Gate of Memories' ARCHIVE_BASE_1_NAME='gog_anima_gate_of_memories_2.0.0.2.sh' ARCHIVE_BASE_1_MD5='97335d9741d3ae17c5d9e58a22165043' ARCHIVE_BASE_1_SIZE='8900000' ARCHIVE_BASE_1_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_0_NAME='gog_anima_gate_of_memories_2.0.0.1.sh' ARCHIVE_BASE_0_MD5='681d05255e1a162947af69d3e7537748' ARCHIVE_BASE_0_SIZE='8900000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.1' UNITY3D_NAME='GoMLinux' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_ASSETS_FILES=" ${UNITY3D_NAME}_Data/*.assets ${UNITY3D_NAME}_Data/*.assets.resS" PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_ASSETS PKG_DATA' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_ASSETS PKG_DATA' PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_ASSETS_ID="${GAME_ID}-assets" PKG_ASSETS_DESCRIPTION='assets' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-arcanum.sh0000755000000000000000000000700214471751340013605 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Arcanum: Of Steamworks and Magick Obscura # send your bug reports to bugs@dotslashplay.it ### script_version=20251118.7 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='arcanum' GAME_NAME='Arcanum: Of Steamworks and Magick Obscura' ARCHIVE_BASE_3_NAME='setup_arcanum_-_of_steamworks_and_magick_obscura_1.0.7.4_ddrawfix_(77721).exe' ARCHIVE_BASE_3_MD5='7a00ac83478518ae287e4f532f5c84ab' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='1177294' ARCHIVE_BASE_3_VERSION='1.0.7.4-gog77721' ARCHIVE_BASE_2_NAME='setup_arcanum_-_of_steamworks_and_magick_obscura_1.0.7.4_hotfix_(24155).exe' ARCHIVE_BASE_2_MD5='6d14d07f7cc8c9823cba5322cf2336f4' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='1200000' ARCHIVE_BASE_2_VERSION='1.0.7.4-gog24155' ARCHIVE_BASE_1_NAME='setup_arcanum_-_of_steamworks_and_magick_obscura_1.0.7.4_(19476).exe' ARCHIVE_BASE_1_MD5='298a3315baebf40f3cc6cee4acae9947' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1200000' ARCHIVE_BASE_1_VERSION='1.0.7.4-gog19476' ARCHIVE_BASE_0_NAME='setup_arcanum_2.0.0.15.exe' ARCHIVE_BASE_0_MD5='c09523c61edd18abb97da97463e07a88' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='1.0.7.4-gog2.0.0.15' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' ## arcanum.exe requirements CONTENT_LIBS_BIN_FILES=' binkw32.dll mss32.dll' CONTENT_GAME_BIN_FILES=' sierraup.cfg arcanum.exe sierra.inf *.asi' CONTENT_GAME_DATA_FILES=' data modules *.dat' CONTENT_DOC_DATA_FILES=' documents eula.doc customer_support.htm manual.pdf eula.txt readme.txt version.txt' CONTENT_DOC0_DATA_PATH='__support/app' CONTENT_DOC0_DATA_FILES=' eula.*' USER_PERSISTENT_DIRECTORIES=' data modules/arcanum/maps modules/arcanum/saves' USER_PERSISTENT_FILES=' *.cfg' ## Without a virtual desktop, both movies and gameplay suffer from graphical corruption. ## (WINE 10.0) WINE_VIRTUAL_DESKTOP='800x600' APP_MAIN_EXE='arcanum.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # In some archives, the game binary is compressed using UPX, REQUIREMENTS_LIST=' upx' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Decompress UPX-packed game binary. binary_file="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/$(application_exe 'APP_MAIN')" if upx -t -qqq "$binary_file"; then upx -d -qqq "$binary_file" fi # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. ln --force --symbolic $(path_libraries)/* "\${PATH_PREFIX}" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-asura.sh0000755000000000000000000000431214471751340013273 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Asura # send your bug reports to bugs@dotslashplay.it ### script_version=20250425.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='asura' GAME_NAME='Asura' ARCHIVE_BASE_0_NAME='asura_en_29046_16209.sh' ARCHIVE_BASE_0_MD5='cbfe1067fdf0cfe3e8361d08df55787c' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='29046-gog16209' UNITY3D_NAME='AsuraVengeance' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-baldurs-gate-3.sh0000755000000000000000000025317014471751340014702 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2025 Christian Stalp set -o errexit ### # Baldur's Gate 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20260525.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='baldurs-gate-3' GAME_NAME='Baldurʼs Gate III' ARCHIVE_BASE_PATCH8_3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470).exe' ARCHIVE_BASE_PATCH8_3_MD5='a421d3f30fc6b294c332d7d220ff3696' ARCHIVE_BASE_PATCH8_3_TYPE='innosetup' ARCHIVE_BASE_PATCH8_3_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-1.bin' ARCHIVE_BASE_PATCH8_3_PART1_MD5='6d3c54b030c74fa87613e124c1c2f4a4' ARCHIVE_BASE_PATCH8_3_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-2.bin' ARCHIVE_BASE_PATCH8_3_PART2_MD5='a8dd83790c43d5ddad91be22c1adde6c' ARCHIVE_BASE_PATCH8_3_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-3.bin' ARCHIVE_BASE_PATCH8_3_PART3_MD5='740b8baafc6a0a660edc5e0a3a67e9e9' ARCHIVE_BASE_PATCH8_3_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-4.bin' ARCHIVE_BASE_PATCH8_3_PART4_MD5='9de4ac51515a818b5ad976a4e69124d3' ARCHIVE_BASE_PATCH8_3_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-5.bin' ARCHIVE_BASE_PATCH8_3_PART5_MD5='850741f2899eee4d5799f1fd88e82f23' ARCHIVE_BASE_PATCH8_3_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-6.bin' ARCHIVE_BASE_PATCH8_3_PART6_MD5='1092361b15d860c6907ff610592b7c0a' ARCHIVE_BASE_PATCH8_3_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-7.bin' ARCHIVE_BASE_PATCH8_3_PART7_MD5='bc4e908c43aee7cd2af4ff771a729f59' ARCHIVE_BASE_PATCH8_3_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-8.bin' ARCHIVE_BASE_PATCH8_3_PART8_MD5='7b6ce58025a3bfa567eb49b56e62d28e' ARCHIVE_BASE_PATCH8_3_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-9.bin' ARCHIVE_BASE_PATCH8_3_PART9_MD5='ce550198d0125132d021a265903ffd20' ARCHIVE_BASE_PATCH8_3_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-10.bin' ARCHIVE_BASE_PATCH8_3_PART10_MD5='98b9b31326f2ef53ced729ca9d7225e3' ARCHIVE_BASE_PATCH8_3_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-11.bin' ARCHIVE_BASE_PATCH8_3_PART11_MD5='f0aaa3694a1625b3afd5b1f8d5b66fda' ARCHIVE_BASE_PATCH8_3_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-12.bin' ARCHIVE_BASE_PATCH8_3_PART12_MD5='672a1ee8251c824f5bc408c47944f98f' ARCHIVE_BASE_PATCH8_3_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-13.bin' ARCHIVE_BASE_PATCH8_3_PART13_MD5='85901594d19cb734e4bdad9caf3b6e85' ARCHIVE_BASE_PATCH8_3_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-14.bin' ARCHIVE_BASE_PATCH8_3_PART14_MD5='e9b090e64dbba8b26ed998c9c1c72902' ARCHIVE_BASE_PATCH8_3_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-15.bin' ARCHIVE_BASE_PATCH8_3_PART15_MD5='7b42826be6abd1bf65af668239234a06' ARCHIVE_BASE_PATCH8_3_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-16.bin' ARCHIVE_BASE_PATCH8_3_PART16_MD5='439df0ac4829b04012c9a6953bc981f9' ARCHIVE_BASE_PATCH8_3_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-17.bin' ARCHIVE_BASE_PATCH8_3_PART17_MD5='03be665ab6dfb966f86b9b080a3a683c' ARCHIVE_BASE_PATCH8_3_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-18.bin' ARCHIVE_BASE_PATCH8_3_PART18_MD5='5adfd73f4bb1055e07a3ba0575f01140' ARCHIVE_BASE_PATCH8_3_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-19.bin' ARCHIVE_BASE_PATCH8_3_PART19_MD5='1125e04781db4707346502ca048a8e41' ARCHIVE_BASE_PATCH8_3_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-20.bin' ARCHIVE_BASE_PATCH8_3_PART20_MD5='5eb7a97a9d8659ddad23d7d7defa2e16' ARCHIVE_BASE_PATCH8_3_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-21.bin' ARCHIVE_BASE_PATCH8_3_PART21_MD5='6571cf05bf99279cbb358808e9102fdd' ARCHIVE_BASE_PATCH8_3_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-22.bin' ARCHIVE_BASE_PATCH8_3_PART22_MD5='498b992282d70ba496ea396f2a8be5d1' ARCHIVE_BASE_PATCH8_3_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-23.bin' ARCHIVE_BASE_PATCH8_3_PART23_MD5='0ccc26d192514840532f456eae07a3a5' ARCHIVE_BASE_PATCH8_3_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-24.bin' ARCHIVE_BASE_PATCH8_3_PART24_MD5='9ba64d012f5c603d3c797f6028084e55' ARCHIVE_BASE_PATCH8_3_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-25.bin' ARCHIVE_BASE_PATCH8_3_PART25_MD5='8c7e182a2d32f7d1d97de141347c7bc9' ARCHIVE_BASE_PATCH8_3_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-26.bin' ARCHIVE_BASE_PATCH8_3_PART26_MD5='b647860a5db55682b7fd8d84f9b356e5' ARCHIVE_BASE_PATCH8_3_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-27.bin' ARCHIVE_BASE_PATCH8_3_PART27_MD5='c085e885a9b2bef07968653f35e2da5e' ARCHIVE_BASE_PATCH8_3_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-28.bin' ARCHIVE_BASE_PATCH8_3_PART28_MD5='50f563e1c6dafee97d28528051cfb407' ARCHIVE_BASE_PATCH8_3_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-29.bin' ARCHIVE_BASE_PATCH8_3_PART29_MD5='dcb10db41a726431a047f14c88d7e531' ARCHIVE_BASE_PATCH8_3_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-30.bin' ARCHIVE_BASE_PATCH8_3_PART30_MD5='8c59a5a45a8ee259e068e8f5a56a5bea' ARCHIVE_BASE_PATCH8_3_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-31.bin' ARCHIVE_BASE_PATCH8_3_PART31_MD5='28ff3f563da854a703bc851690829399' ARCHIVE_BASE_PATCH8_3_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.7209685_-_patch_patch8_hotfix8_(64bit)_(89470)-32.bin' ARCHIVE_BASE_PATCH8_3_PART32_MD5='630c4cda9b703fef501d14102948596b' ARCHIVE_BASE_PATCH8_3_SIZE='152456071' ARCHIVE_BASE_PATCH8_3_VERSION='4.1.1.7209685-gog89470' ARCHIVE_BASE_PATCH8_2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168).exe' ARCHIVE_BASE_PATCH8_2_MD5='11560af8d52ef9e14691005ab22bb514' ARCHIVE_BASE_PATCH8_2_TYPE='innosetup' ARCHIVE_BASE_PATCH8_2_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-1.bin' ARCHIVE_BASE_PATCH8_2_PART1_MD5='886a70664272c85185b71275dd22534f' ARCHIVE_BASE_PATCH8_2_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-2.bin' ARCHIVE_BASE_PATCH8_2_PART2_MD5='b0fa66b07e73df1ae2fe4852fb0d7a52' ARCHIVE_BASE_PATCH8_2_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-3.bin' ARCHIVE_BASE_PATCH8_2_PART3_MD5='d78d9ce3e9dd8085b85ccefd3af9cc16' ARCHIVE_BASE_PATCH8_2_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-4.bin' ARCHIVE_BASE_PATCH8_2_PART4_MD5='6f66ea775bdf984bec07e53bd2ef7134' ARCHIVE_BASE_PATCH8_2_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-5.bin' ARCHIVE_BASE_PATCH8_2_PART5_MD5='b9129de228d0afbcd4e56420b0de4bfe' ARCHIVE_BASE_PATCH8_2_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-6.bin' ARCHIVE_BASE_PATCH8_2_PART6_MD5='2151a76c67865e67b70fb922f8365186' ARCHIVE_BASE_PATCH8_2_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-7.bin' ARCHIVE_BASE_PATCH8_2_PART7_MD5='39bfc492c1feb3dfeeb72ae0b772ff38' ARCHIVE_BASE_PATCH8_2_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-8.bin' ARCHIVE_BASE_PATCH8_2_PART8_MD5='86c12eda248a536751add38b96d02de9' ARCHIVE_BASE_PATCH8_2_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-9.bin' ARCHIVE_BASE_PATCH8_2_PART9_MD5='7f62b01a94242c5db2afd243f60e2e88' ARCHIVE_BASE_PATCH8_2_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-10.bin' ARCHIVE_BASE_PATCH8_2_PART10_MD5='bbdf4175ff07be1efafdf3e73075f087' ARCHIVE_BASE_PATCH8_2_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-11.bin' ARCHIVE_BASE_PATCH8_2_PART11_MD5='6552d6e137c9062a91c129201aed7326' ARCHIVE_BASE_PATCH8_2_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-12.bin' ARCHIVE_BASE_PATCH8_2_PART12_MD5='896ecb909803cb3de08f83ac6eeb9a8e' ARCHIVE_BASE_PATCH8_2_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-13.bin' ARCHIVE_BASE_PATCH8_2_PART13_MD5='070c8e06a2ad8ac171bab660b9119397' ARCHIVE_BASE_PATCH8_2_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-14.bin' ARCHIVE_BASE_PATCH8_2_PART14_MD5='2d206e61d293fc09610ac6b80dff196a' ARCHIVE_BASE_PATCH8_2_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-15.bin' ARCHIVE_BASE_PATCH8_2_PART15_MD5='b93a61010b7a763b5288cfd8e71d8c0a' ARCHIVE_BASE_PATCH8_2_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-16.bin' ARCHIVE_BASE_PATCH8_2_PART16_MD5='c9c2e6910244b10d9554f601e734b7c9' ARCHIVE_BASE_PATCH8_2_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-17.bin' ARCHIVE_BASE_PATCH8_2_PART17_MD5='7de8b0144275b0f6a0ceda83d92e8126' ARCHIVE_BASE_PATCH8_2_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-18.bin' ARCHIVE_BASE_PATCH8_2_PART18_MD5='94f977747745c45f9fa390ffc332fea1' ARCHIVE_BASE_PATCH8_2_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-19.bin' ARCHIVE_BASE_PATCH8_2_PART19_MD5='e3a39b31dd8665ed8af6a1d2a38100c5' ARCHIVE_BASE_PATCH8_2_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-20.bin' ARCHIVE_BASE_PATCH8_2_PART20_MD5='54f545df48ebe7ddd8c9289d499fcad1' ARCHIVE_BASE_PATCH8_2_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-21.bin' ARCHIVE_BASE_PATCH8_2_PART21_MD5='9d0717aab8b4d0e850d20b3372ae21eb' ARCHIVE_BASE_PATCH8_2_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-22.bin' ARCHIVE_BASE_PATCH8_2_PART22_MD5='adf0ba691f737d3ce3c506bc8a328847' ARCHIVE_BASE_PATCH8_2_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-23.bin' ARCHIVE_BASE_PATCH8_2_PART23_MD5='e3df09af27d7d226854c49ea2920c611' ARCHIVE_BASE_PATCH8_2_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-24.bin' ARCHIVE_BASE_PATCH8_2_PART24_MD5='46662dbc81a543c7454870582c4d0ed2' ARCHIVE_BASE_PATCH8_2_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-25.bin' ARCHIVE_BASE_PATCH8_2_PART25_MD5='da3b5bb8a2dcb2e7a91ffd2a4646ae7a' ARCHIVE_BASE_PATCH8_2_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-26.bin' ARCHIVE_BASE_PATCH8_2_PART26_MD5='254ad9f2b458a6bfc9d7014ffab06672' ARCHIVE_BASE_PATCH8_2_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-27.bin' ARCHIVE_BASE_PATCH8_2_PART27_MD5='822856e426a34671ef1534e9a617d948' ARCHIVE_BASE_PATCH8_2_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-28.bin' ARCHIVE_BASE_PATCH8_2_PART28_MD5='2d3d186d758483274eea8e7911975ffc' ARCHIVE_BASE_PATCH8_2_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-29.bin' ARCHIVE_BASE_PATCH8_2_PART29_MD5='6a3dfb17da8f9509ce79fab1bb2d5518' ARCHIVE_BASE_PATCH8_2_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-30.bin' ARCHIVE_BASE_PATCH8_2_PART30_MD5='2609de707253770e070d6f856c949efa' ARCHIVE_BASE_PATCH8_2_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-31.bin' ARCHIVE_BASE_PATCH8_2_PART31_MD5='7c72e6936f88dc6755b306cc04282c01' ARCHIVE_BASE_PATCH8_2_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6848561_-_patch_patch8_hotfix3_(64bit)_(82168)-32.bin' ARCHIVE_BASE_PATCH8_2_PART32_MD5='b992d8020df4709b63b8c4ec5773faf6' ARCHIVE_BASE_PATCH8_2_SIZE='152456071' ARCHIVE_BASE_PATCH8_2_VERSION='4.1.1.6848561-gog82168' ARCHIVE_BASE_PATCH8_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757).exe' ARCHIVE_BASE_PATCH8_1_MD5='27bb31261705ebdd12ee8d0c890ba98e' ARCHIVE_BASE_PATCH8_1_TYPE='innosetup' ARCHIVE_BASE_PATCH8_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-1.bin' ARCHIVE_BASE_PATCH8_1_PART1_MD5='78b1da474c4686448c9b1cf3c9d7cda2' ARCHIVE_BASE_PATCH8_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-2.bin' ARCHIVE_BASE_PATCH8_1_PART2_MD5='42ac5a9b7888731f037874efdd4dd430' ARCHIVE_BASE_PATCH8_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-3.bin' ARCHIVE_BASE_PATCH8_1_PART3_MD5='cd7c3ed52cadc500e5705dd3e0dde26a' ARCHIVE_BASE_PATCH8_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-4.bin' ARCHIVE_BASE_PATCH8_1_PART4_MD5='bedd37f45d1f61c50ff7ce96c25ebfe5' ARCHIVE_BASE_PATCH8_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-5.bin' ARCHIVE_BASE_PATCH8_1_PART5_MD5='ca601cfc8cbf1aaabd7c75707bc1f37c' ARCHIVE_BASE_PATCH8_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-6.bin' ARCHIVE_BASE_PATCH8_1_PART6_MD5='eb8b82e6cebecbcace2423a6baf6c953' ARCHIVE_BASE_PATCH8_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-7.bin' ARCHIVE_BASE_PATCH8_1_PART7_MD5='c13aa46e2e1a923c331ee8ebb0edc3d8' ARCHIVE_BASE_PATCH8_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-8.bin' ARCHIVE_BASE_PATCH8_1_PART8_MD5='dc7d9f422b6224b70e410e4dd6106e37' ARCHIVE_BASE_PATCH8_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-9.bin' ARCHIVE_BASE_PATCH8_1_PART9_MD5='2fa28ade514946f8e1a0ce041573d018' ARCHIVE_BASE_PATCH8_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-10.bin' ARCHIVE_BASE_PATCH8_1_PART10_MD5='66e2d8b372db72f7d44c5cfea05a2d99' ARCHIVE_BASE_PATCH8_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-11.bin' ARCHIVE_BASE_PATCH8_1_PART11_MD5='38e9b907f12b267425c71e7b3e4edcfa' ARCHIVE_BASE_PATCH8_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-12.bin' ARCHIVE_BASE_PATCH8_1_PART12_MD5='02e033fb490622fd22312af2e44737bb' ARCHIVE_BASE_PATCH8_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-13.bin' ARCHIVE_BASE_PATCH8_1_PART13_MD5='9325aba404d72a1f107cb7f839d614c7' ARCHIVE_BASE_PATCH8_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-14.bin' ARCHIVE_BASE_PATCH8_1_PART14_MD5='920749a03f2c8a34d73e05642ea25631' ARCHIVE_BASE_PATCH8_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-15.bin' ARCHIVE_BASE_PATCH8_1_PART15_MD5='6c98be358adb6e095047c34f24e7acac' ARCHIVE_BASE_PATCH8_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-16.bin' ARCHIVE_BASE_PATCH8_1_PART16_MD5='a9828e864cff7007294ddc160cd118ca' ARCHIVE_BASE_PATCH8_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-17.bin' ARCHIVE_BASE_PATCH8_1_PART17_MD5='0aa4fa5620908768dd6f06efc03c7fb6' ARCHIVE_BASE_PATCH8_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-18.bin' ARCHIVE_BASE_PATCH8_1_PART18_MD5='eecaf035bc10d45ca64971abcae63d00' ARCHIVE_BASE_PATCH8_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-19.bin' ARCHIVE_BASE_PATCH8_1_PART19_MD5='d344d5f6da1839b1537080af308ecd24' ARCHIVE_BASE_PATCH8_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-20.bin' ARCHIVE_BASE_PATCH8_1_PART20_MD5='7273a61172e2432caef3a519f7c00eb7' ARCHIVE_BASE_PATCH8_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-21.bin' ARCHIVE_BASE_PATCH8_1_PART21_MD5='b09e0a4d0cb2ac609e7824cfebab9fe9' ARCHIVE_BASE_PATCH8_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-22.bin' ARCHIVE_BASE_PATCH8_1_PART22_MD5='5ebf64d949a2d27376403a29d9968bd8' ARCHIVE_BASE_PATCH8_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-23.bin' ARCHIVE_BASE_PATCH8_1_PART23_MD5='2c65662445a753902e384b0d79ba3f39' ARCHIVE_BASE_PATCH8_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-24.bin' ARCHIVE_BASE_PATCH8_1_PART24_MD5='64cba3abc9c088ec5789d1213ec31f0e' ARCHIVE_BASE_PATCH8_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-25.bin' ARCHIVE_BASE_PATCH8_1_PART25_MD5='4c95eed0e761ad8463303bbe285fff69' ARCHIVE_BASE_PATCH8_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-26.bin' ARCHIVE_BASE_PATCH8_1_PART26_MD5='e5ea40b1950bd3754ac7194ae8d5b43f' ARCHIVE_BASE_PATCH8_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-27.bin' ARCHIVE_BASE_PATCH8_1_PART27_MD5='8783defea6803d35b3cc13a9aaec7150' ARCHIVE_BASE_PATCH8_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-28.bin' ARCHIVE_BASE_PATCH8_1_PART28_MD5='dfe99b4b6a03cacaf1194e0f120265b4' ARCHIVE_BASE_PATCH8_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-29.bin' ARCHIVE_BASE_PATCH8_1_PART29_MD5='096e6e04edbf83e2500422963d68044f' ARCHIVE_BASE_PATCH8_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-30.bin' ARCHIVE_BASE_PATCH8_1_PART30_MD5='58d4f91743ec887eb013f190ecb0c7a3' ARCHIVE_BASE_PATCH8_1_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-31.bin' ARCHIVE_BASE_PATCH8_1_PART31_MD5='373d53e2703748138b6f38e44602f672' ARCHIVE_BASE_PATCH8_1_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6805605_-_patch_patch8_hotfix1_(64bit)_(81757)-32.bin' ARCHIVE_BASE_PATCH8_1_PART32_MD5='0dd1bc9ea3aed58a32b4328705b19cdc' ARCHIVE_BASE_PATCH8_1_SIZE='152165936' ARCHIVE_BASE_PATCH8_1_VERSION='4.1.1.6805605-gog81757' ARCHIVE_BASE_PATCH8_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102).exe' ARCHIVE_BASE_PATCH8_0_MD5='42ff176fcde947ad3f93f48a856cb065' ARCHIVE_BASE_PATCH8_0_TYPE='innosetup' ARCHIVE_BASE_PATCH8_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-1.bin' ARCHIVE_BASE_PATCH8_0_PART1_MD5='f66fe6c024a5cef9380b418dea4affa9' ARCHIVE_BASE_PATCH8_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-2.bin' ARCHIVE_BASE_PATCH8_0_PART2_MD5='7789c578aaaba3b7404c2f8c8629b016' ARCHIVE_BASE_PATCH8_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-3.bin' ARCHIVE_BASE_PATCH8_0_PART3_MD5='1f4e83be632f7b433c2611e11d5429ec' ARCHIVE_BASE_PATCH8_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-4.bin' ARCHIVE_BASE_PATCH8_0_PART4_MD5='f7ffb973042ddddd5f84434708ee6ab6' ARCHIVE_BASE_PATCH8_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-5.bin' ARCHIVE_BASE_PATCH8_0_PART5_MD5='0f25b0e95f1d5fb320696b2b6b475f3b' ARCHIVE_BASE_PATCH8_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-6.bin' ARCHIVE_BASE_PATCH8_0_PART6_MD5='b345b733fb71a243bf6e047ce23c30f6' ARCHIVE_BASE_PATCH8_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-7.bin' ARCHIVE_BASE_PATCH8_0_PART7_MD5='75d54a2f35d042cd390a1ae04d64ee4b' ARCHIVE_BASE_PATCH8_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-8.bin' ARCHIVE_BASE_PATCH8_0_PART8_MD5='a343f421467b67f175cf319c6432cbd5' ARCHIVE_BASE_PATCH8_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-9.bin' ARCHIVE_BASE_PATCH8_0_PART9_MD5='9a43344a0cc0e6f2b52c7423977ecfc7' ARCHIVE_BASE_PATCH8_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-10.bin' ARCHIVE_BASE_PATCH8_0_PART10_MD5='c10dc228be312439f3559dedb1eb070b' ARCHIVE_BASE_PATCH8_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-11.bin' ARCHIVE_BASE_PATCH8_0_PART11_MD5='0c0be09e1b5cdd1e8598603a2bf89358' ARCHIVE_BASE_PATCH8_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-12.bin' ARCHIVE_BASE_PATCH8_0_PART12_MD5='b4f9e9c569623977582e86d40222607b' ARCHIVE_BASE_PATCH8_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-13.bin' ARCHIVE_BASE_PATCH8_0_PART13_MD5='8b2a70d5d3c678127e7fa2447754d2b5' ARCHIVE_BASE_PATCH8_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-14.bin' ARCHIVE_BASE_PATCH8_0_PART14_MD5='e0ed1e068ccd9dd783a6be10fa18eba0' ARCHIVE_BASE_PATCH8_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-15.bin' ARCHIVE_BASE_PATCH8_0_PART15_MD5='8f0bca5090ebda3438b65693e1aab9ec' ARCHIVE_BASE_PATCH8_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-16.bin' ARCHIVE_BASE_PATCH8_0_PART16_MD5='031de42e76ad136ddb4fce0aa0388180' ARCHIVE_BASE_PATCH8_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-17.bin' ARCHIVE_BASE_PATCH8_0_PART17_MD5='0a82953a44bff3c6df14eff954044fb2' ARCHIVE_BASE_PATCH8_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-18.bin' ARCHIVE_BASE_PATCH8_0_PART18_MD5='f2cb812e4bed1d1c0e28aa4f5e0e5c39' ARCHIVE_BASE_PATCH8_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-19.bin' ARCHIVE_BASE_PATCH8_0_PART19_MD5='0ebc01b50d29dc52efa962223d154ee8' ARCHIVE_BASE_PATCH8_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-20.bin' ARCHIVE_BASE_PATCH8_0_PART20_MD5='fc1f5b9bfeb262f981e59e27c6bdfb89' ARCHIVE_BASE_PATCH8_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-21.bin' ARCHIVE_BASE_PATCH8_0_PART21_MD5='c0d155296f54f54475deedd316b2299f' ARCHIVE_BASE_PATCH8_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-22.bin' ARCHIVE_BASE_PATCH8_0_PART22_MD5='b20d70d0bdd953b31681709c2f3e080c' ARCHIVE_BASE_PATCH8_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-23.bin' ARCHIVE_BASE_PATCH8_0_PART23_MD5='d7b3d94e5628028d8bd24d56d2d14962' ARCHIVE_BASE_PATCH8_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-24.bin' ARCHIVE_BASE_PATCH8_0_PART24_MD5='470a2e21b7c64f911fc2a67a1c65807e' ARCHIVE_BASE_PATCH8_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-25.bin' ARCHIVE_BASE_PATCH8_0_PART25_MD5='27dda849c6a1548a1033eb9c49576754' ARCHIVE_BASE_PATCH8_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-26.bin' ARCHIVE_BASE_PATCH8_0_PART26_MD5='694d517c2628555637d350b6b05eb3b2' ARCHIVE_BASE_PATCH8_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-27.bin' ARCHIVE_BASE_PATCH8_0_PART27_MD5='940a470417f70699e4748890ae1a16e8' ARCHIVE_BASE_PATCH8_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-28.bin' ARCHIVE_BASE_PATCH8_0_PART28_MD5='598edbecb4f36c20985d2c3ef88551e0' ARCHIVE_BASE_PATCH8_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-29.bin' ARCHIVE_BASE_PATCH8_0_PART29_MD5='e3ee87c7bc9c2b3ed8c996b5eb55b4ed' ARCHIVE_BASE_PATCH8_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-30.bin' ARCHIVE_BASE_PATCH8_0_PART30_MD5='0f534eb66be5d46449cc3eeb6b0642c2' ARCHIVE_BASE_PATCH8_0_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-31.bin' ARCHIVE_BASE_PATCH8_0_PART31_MD5='1e4f367ec5ada8c44826ecca55a6455c' ARCHIVE_BASE_PATCH8_0_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6758295_(64bit)_(81102)-32.bin' ARCHIVE_BASE_PATCH8_0_PART32_MD5='72704470db264922f32d686f0aa461c8' ARCHIVE_BASE_PATCH8_0_SIZE='151923438' ARCHIVE_BASE_PATCH8_0_VERSION='4.1.1.6758295-gog81102' ARCHIVE_BASE_PATCH7_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035).exe' ARCHIVE_BASE_PATCH7_1_MD5='e49b2196b60ef76d39ece0c3b45e2382' ARCHIVE_BASE_PATCH7_1_TYPE='innosetup' ARCHIVE_BASE_PATCH7_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-1.bin' ARCHIVE_BASE_PATCH7_1_PART1_MD5='ccc70b5170c78451af59378cd07f00c4' ARCHIVE_BASE_PATCH7_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-2.bin' ARCHIVE_BASE_PATCH7_1_PART2_MD5='8d63d6e0527ed25093764220cd6697d3' ARCHIVE_BASE_PATCH7_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-3.bin' ARCHIVE_BASE_PATCH7_1_PART3_MD5='dc4a7756f4043b38313a02d77a83fb30' ARCHIVE_BASE_PATCH7_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-4.bin' ARCHIVE_BASE_PATCH7_1_PART4_MD5='e7da48782fd10869b7c673bf6c440323' ARCHIVE_BASE_PATCH7_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-5.bin' ARCHIVE_BASE_PATCH7_1_PART5_MD5='4186fbc6f85228737c1e75e64e5979ea' ARCHIVE_BASE_PATCH7_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-6.bin' ARCHIVE_BASE_PATCH7_1_PART6_MD5='a95f13f119e8bfad2ba8e691f37a7b45' ARCHIVE_BASE_PATCH7_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-7.bin' ARCHIVE_BASE_PATCH7_1_PART7_MD5='dcdd32dac6148e95784d0967e76631ed' ARCHIVE_BASE_PATCH7_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-8.bin' ARCHIVE_BASE_PATCH7_1_PART8_MD5='94632f860d3bf729951cba45a2ef1b49' ARCHIVE_BASE_PATCH7_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-9.bin' ARCHIVE_BASE_PATCH7_1_PART9_MD5='50f09f05df55f31a51e4dbe3be2c98ca' ARCHIVE_BASE_PATCH7_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-10.bin' ARCHIVE_BASE_PATCH7_1_PART10_MD5='688a0e7731f738550cbfc411e446df59' ARCHIVE_BASE_PATCH7_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-11.bin' ARCHIVE_BASE_PATCH7_1_PART11_MD5='6462b7d0535b861cdd12910710283f79' ARCHIVE_BASE_PATCH7_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-12.bin' ARCHIVE_BASE_PATCH7_1_PART12_MD5='f3b88af77ca87095d0fbbbe35d4e149b' ARCHIVE_BASE_PATCH7_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-13.bin' ARCHIVE_BASE_PATCH7_1_PART13_MD5='83eb0050d03a53a11adcf489657099fc' ARCHIVE_BASE_PATCH7_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-14.bin' ARCHIVE_BASE_PATCH7_1_PART14_MD5='002cfe500a6b7d3a26676576505e33f5' ARCHIVE_BASE_PATCH7_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-15.bin' ARCHIVE_BASE_PATCH7_1_PART15_MD5='bb72f89ba73b9d8d9db50eccf6d3f37a' ARCHIVE_BASE_PATCH7_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-16.bin' ARCHIVE_BASE_PATCH7_1_PART16_MD5='f4812aa946048954fd3d906bdcf1ec63' ARCHIVE_BASE_PATCH7_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-17.bin' ARCHIVE_BASE_PATCH7_1_PART17_MD5='a07e72be29ddec457388ec75eb97a0ce' ARCHIVE_BASE_PATCH7_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-18.bin' ARCHIVE_BASE_PATCH7_1_PART18_MD5='80ff7ccb2ceb4467af66f1c24d6afc7a' ARCHIVE_BASE_PATCH7_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-19.bin' ARCHIVE_BASE_PATCH7_1_PART19_MD5='7715912bf7256332eb1ac29567fb43ff' ARCHIVE_BASE_PATCH7_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-20.bin' ARCHIVE_BASE_PATCH7_1_PART20_MD5='811ec163e7a378f3c745e4995c6d696e' ARCHIVE_BASE_PATCH7_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-21.bin' ARCHIVE_BASE_PATCH7_1_PART21_MD5='e8bb834f904b0c87f8122b21a2ab3c52' ARCHIVE_BASE_PATCH7_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-22.bin' ARCHIVE_BASE_PATCH7_1_PART22_MD5='0ed518e8074550ad482478a299854c7b' ARCHIVE_BASE_PATCH7_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-23.bin' ARCHIVE_BASE_PATCH7_1_PART23_MD5='b76e7aed77fe5a135672a39c15670226' ARCHIVE_BASE_PATCH7_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-24.bin' ARCHIVE_BASE_PATCH7_1_PART24_MD5='504f1a93c47448c708bbd98949b1da94' ARCHIVE_BASE_PATCH7_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-25.bin' ARCHIVE_BASE_PATCH7_1_PART25_MD5='a54f1c6dda05b074d12d85f927483352' ARCHIVE_BASE_PATCH7_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-26.bin' ARCHIVE_BASE_PATCH7_1_PART26_MD5='db09910df98ac5d48da3da401a4d48c0' ARCHIVE_BASE_PATCH7_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-27.bin' ARCHIVE_BASE_PATCH7_1_PART27_MD5='ecb67780a96b9813153cf9f242e06e06' ARCHIVE_BASE_PATCH7_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-28.bin' ARCHIVE_BASE_PATCH7_1_PART28_MD5='3985434483da3658f0d6af669ea0d498' ARCHIVE_BASE_PATCH7_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-29.bin' ARCHIVE_BASE_PATCH7_1_PART29_MD5='77e6fb2852c03ed51793f30ed8378d4b' ARCHIVE_BASE_PATCH7_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-30.bin' ARCHIVE_BASE_PATCH7_1_PART30_MD5='6b492781abf4ce82ada772247cdb7418' ARCHIVE_BASE_PATCH7_1_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-31.bin' ARCHIVE_BASE_PATCH7_1_PART31_MD5='ed85272a3d4d0c8546a79d5f84c7e87b' ARCHIVE_BASE_PATCH7_1_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-32.bin' ARCHIVE_BASE_PATCH7_1_PART32_MD5='72b4ebad04dce811414037e87743eb63' ARCHIVE_BASE_PATCH7_1_SIZE='151202043' ARCHIVE_BASE_PATCH7_1_VERSION='4.1.1.6072089-gog77035' ARCHIVE_BASE_PATCH6_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479).exe' ARCHIVE_BASE_PATCH6_1_MD5='a68f1a0edcf026a1095c20efe1fa6edc' ARCHIVE_BASE_PATCH6_1_TYPE='innosetup' ARCHIVE_BASE_PATCH6_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-1.bin' ARCHIVE_BASE_PATCH6_1_PART1_MD5='c479abb170e4741bf731d5c89cb985c5' ARCHIVE_BASE_PATCH6_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-2.bin' ARCHIVE_BASE_PATCH6_1_PART2_MD5='4d3c3d90c5b70abf10502b2eac7e7b91' ARCHIVE_BASE_PATCH6_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-3.bin' ARCHIVE_BASE_PATCH6_1_PART3_MD5='34e7830447cfe59b71a6d3cdc627d473' ARCHIVE_BASE_PATCH6_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-4.bin' ARCHIVE_BASE_PATCH6_1_PART4_MD5='7700f5bd163051ad3b544920267158a5' ARCHIVE_BASE_PATCH6_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-5.bin' ARCHIVE_BASE_PATCH6_1_PART5_MD5='f7e89a93a24a921c71ed7d9efdb2cc52' ARCHIVE_BASE_PATCH6_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-6.bin' ARCHIVE_BASE_PATCH6_1_PART6_MD5='cf6044ced2436c68fa644b16c43bd486' ARCHIVE_BASE_PATCH6_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-7.bin' ARCHIVE_BASE_PATCH6_1_PART7_MD5='91bb08a6576f56dc7eecdfc8475cbbea' ARCHIVE_BASE_PATCH6_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-8.bin' ARCHIVE_BASE_PATCH6_1_PART8_MD5='735d68133f1ad45d43b67a19bdcaf6b7' ARCHIVE_BASE_PATCH6_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-9.bin' ARCHIVE_BASE_PATCH6_1_PART9_MD5='76334ea7438e73cb4ff83f03b9aa4f0b' ARCHIVE_BASE_PATCH6_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-10.bin' ARCHIVE_BASE_PATCH6_1_PART10_MD5='d9ee57b1a0fa335c9ddbf8857cdf83b6' ARCHIVE_BASE_PATCH6_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-11.bin' ARCHIVE_BASE_PATCH6_1_PART11_MD5='eae123041bbf9f775b285da32ffa234c' ARCHIVE_BASE_PATCH6_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-12.bin' ARCHIVE_BASE_PATCH6_1_PART12_MD5='ccd6d28381f5e375aec2768714b8f825' ARCHIVE_BASE_PATCH6_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-13.bin' ARCHIVE_BASE_PATCH6_1_PART13_MD5='8042f5a7280456fe309dd7840c04125f' ARCHIVE_BASE_PATCH6_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-14.bin' ARCHIVE_BASE_PATCH6_1_PART14_MD5='71899991f13404154119dc4eb88ee68d' ARCHIVE_BASE_PATCH6_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-15.bin' ARCHIVE_BASE_PATCH6_1_PART15_MD5='23f96cb8a4c49d99935805a9b7c531e1' ARCHIVE_BASE_PATCH6_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-16.bin' ARCHIVE_BASE_PATCH6_1_PART16_MD5='2adbe0b025aacbd2a24d8f91caed65c6' ARCHIVE_BASE_PATCH6_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-17.bin' ARCHIVE_BASE_PATCH6_1_PART17_MD5='518e9ea117e9bab82e3ba3ff12ee99a3' ARCHIVE_BASE_PATCH6_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-18.bin' ARCHIVE_BASE_PATCH6_1_PART18_MD5='d1c1b477754b7f2661b0669c8b3eebd4' ARCHIVE_BASE_PATCH6_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-19.bin' ARCHIVE_BASE_PATCH6_1_PART19_MD5='0b93534901cbfb0c523c690181cc4bde' ARCHIVE_BASE_PATCH6_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-20.bin' ARCHIVE_BASE_PATCH6_1_PART20_MD5='d8efb4ef169d590c89f884c240a0bf72' ARCHIVE_BASE_PATCH6_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-21.bin' ARCHIVE_BASE_PATCH6_1_PART21_MD5='b5babfb43c75a5b919e497d7d54c86bd' ARCHIVE_BASE_PATCH6_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-22.bin' ARCHIVE_BASE_PATCH6_1_PART22_MD5='bb9419ce976980f86df35a21646da355' ARCHIVE_BASE_PATCH6_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-23.bin' ARCHIVE_BASE_PATCH6_1_PART23_MD5='a2cb3ae76774d36ce04346510dd019b0' ARCHIVE_BASE_PATCH6_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-24.bin' ARCHIVE_BASE_PATCH6_1_PART24_MD5='a33ab802e04f0c4d4f17f1e7e9e8b94a' ARCHIVE_BASE_PATCH6_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-25.bin' ARCHIVE_BASE_PATCH6_1_PART25_MD5='9bdfa763b6832aff6dc023a2d8d340c9' ARCHIVE_BASE_PATCH6_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-26.bin' ARCHIVE_BASE_PATCH6_1_PART26_MD5='c852917906a08488e823e60500cfc175' ARCHIVE_BASE_PATCH6_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-27.bin' ARCHIVE_BASE_PATCH6_1_PART27_MD5='608cf14bb3839e87e755683ee22059bb' ARCHIVE_BASE_PATCH6_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-28.bin' ARCHIVE_BASE_PATCH6_1_PART28_MD5='f5b16334779fbb662323966ed4735f61' ARCHIVE_BASE_PATCH6_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-29.bin' ARCHIVE_BASE_PATCH6_1_PART29_MD5='441e05f65ad6f0cb2642c29468302385' ARCHIVE_BASE_PATCH6_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-30.bin' ARCHIVE_BASE_PATCH6_1_PART30_MD5='5565eb0a62b83e3ab2eab663f1ad802e' ARCHIVE_BASE_PATCH6_1_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-31.bin' ARCHIVE_BASE_PATCH6_1_PART31_MD5='b73f8e36b290be55b5aec3ba5aaf197e' ARCHIVE_BASE_PATCH6_1_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-32.bin' ARCHIVE_BASE_PATCH6_1_PART32_MD5='181d4fc84ee71980b1dce7d04003f5bf' ARCHIVE_BASE_PATCH6_1_SIZE='149637909' ARCHIVE_BASE_PATCH6_1_VERSION='4.1.1.5022896-gog72479' ARCHIVE_BASE_PATCH5_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408).exe' ARCHIVE_BASE_PATCH5_1_MD5='41d296389ec755596846312c290188ba' ARCHIVE_BASE_PATCH5_1_TYPE='innosetup' ARCHIVE_BASE_PATCH5_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-1.bin' ARCHIVE_BASE_PATCH5_1_PART1_MD5='ebbff6fbb2a38f555a30fe8e5c1a8b31' ARCHIVE_BASE_PATCH5_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-2.bin' ARCHIVE_BASE_PATCH5_1_PART2_MD5='a6577500e4ae2df79027a3aab47180ce' ARCHIVE_BASE_PATCH5_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-3.bin' ARCHIVE_BASE_PATCH5_1_PART3_MD5='413949288793c7ef6e7576cb573e6561' ARCHIVE_BASE_PATCH5_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-4.bin' ARCHIVE_BASE_PATCH5_1_PART4_MD5='ba3b2132916fb1a9924668e9c121eacd' ARCHIVE_BASE_PATCH5_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-5.bin' ARCHIVE_BASE_PATCH5_1_PART5_MD5='2833f2573f0c231eace28e5d55cdf760' ARCHIVE_BASE_PATCH5_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-6.bin' ARCHIVE_BASE_PATCH5_1_PART6_MD5='a14412e73266f5284fe3512f8531d5d6' ARCHIVE_BASE_PATCH5_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-7.bin' ARCHIVE_BASE_PATCH5_1_PART7_MD5='598fb783c55f0e750ce0dc9ff33d4e91' ARCHIVE_BASE_PATCH5_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-8.bin' ARCHIVE_BASE_PATCH5_1_PART8_MD5='4f15395994841e57ab238a417ad19f76' ARCHIVE_BASE_PATCH5_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-9.bin' ARCHIVE_BASE_PATCH5_1_PART9_MD5='3e0aeed6e2f499b74889600415bbbee8' ARCHIVE_BASE_PATCH5_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-10.bin' ARCHIVE_BASE_PATCH5_1_PART10_MD5='bf3b28a6d1c8210cff15a0a49d4c3773' ARCHIVE_BASE_PATCH5_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-11.bin' ARCHIVE_BASE_PATCH5_1_PART11_MD5='fa4fd60332c20e30217197f58e4bbf1b' ARCHIVE_BASE_PATCH5_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-12.bin' ARCHIVE_BASE_PATCH5_1_PART12_MD5='d00c210e621ab8163a36ca5973d3b8af' ARCHIVE_BASE_PATCH5_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-13.bin' ARCHIVE_BASE_PATCH5_1_PART13_MD5='80208dd51f3b41543b34b8a08c611bd8' ARCHIVE_BASE_PATCH5_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-14.bin' ARCHIVE_BASE_PATCH5_1_PART14_MD5='130710e4e6c422769453b7949a783f85' ARCHIVE_BASE_PATCH5_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-15.bin' ARCHIVE_BASE_PATCH5_1_PART15_MD5='bfc6635ab6f90b5168f67b88d3f7b57a' ARCHIVE_BASE_PATCH5_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-16.bin' ARCHIVE_BASE_PATCH5_1_PART16_MD5='84f39956129ff4e43c5dbe61a316315a' ARCHIVE_BASE_PATCH5_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-17.bin' ARCHIVE_BASE_PATCH5_1_PART17_MD5='fb05f610719dfed7278af617d70093e0' ARCHIVE_BASE_PATCH5_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-18.bin' ARCHIVE_BASE_PATCH5_1_PART18_MD5='40495dfc26875491f29eadeabeb77308' ARCHIVE_BASE_PATCH5_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-19.bin' ARCHIVE_BASE_PATCH5_1_PART19_MD5='d428eecb383c1317570ef4f9663045c8' ARCHIVE_BASE_PATCH5_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-20.bin' ARCHIVE_BASE_PATCH5_1_PART20_MD5='cdb6f938deb3ce2bc122f9effcc489b7' ARCHIVE_BASE_PATCH5_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-21.bin' ARCHIVE_BASE_PATCH5_1_PART21_MD5='6cbcaa9b7c412231b592b436f4e5b77a' ARCHIVE_BASE_PATCH5_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-22.bin' ARCHIVE_BASE_PATCH5_1_PART22_MD5='a68accd6f697dc9c7542441ce4373c5f' ARCHIVE_BASE_PATCH5_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-23.bin' ARCHIVE_BASE_PATCH5_1_PART23_MD5='67045ba580bfe38320d046caebf82799' ARCHIVE_BASE_PATCH5_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-24.bin' ARCHIVE_BASE_PATCH5_1_PART24_MD5='77d5c61d647007d6c2ee522d82354c10' ARCHIVE_BASE_PATCH5_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-25.bin' ARCHIVE_BASE_PATCH5_1_PART25_MD5='17db3c1c0706d86d074bad776401dfae' ARCHIVE_BASE_PATCH5_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-26.bin' ARCHIVE_BASE_PATCH5_1_PART26_MD5='6dc6d4ef5c7b3c6fdef926c1dbb79abe' ARCHIVE_BASE_PATCH5_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-27.bin' ARCHIVE_BASE_PATCH5_1_PART27_MD5='15d16729ba8fd25eaf3fe95bcfd89863' ARCHIVE_BASE_PATCH5_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-28.bin' ARCHIVE_BASE_PATCH5_1_PART28_MD5='51458a5835f079f452fbb32e57fe29d3' ARCHIVE_BASE_PATCH5_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-29.bin' ARCHIVE_BASE_PATCH5_1_PART29_MD5='771fe718c64fa6bfd9ac57cba1c18d4e' ARCHIVE_BASE_PATCH5_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-30.bin' ARCHIVE_BASE_PATCH5_1_PART30_MD5='9d1e8c2dde7c7e8d7be9684a1d2936dc' ARCHIVE_BASE_PATCH5_1_SIZE='144316256' ARCHIVE_BASE_PATCH5_1_VERSION='4.1.1.4494476-gog70408' ARCHIVE_BASE_PATCH4_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995).exe' ARCHIVE_BASE_PATCH4_0_MD5='ab6267432b272ff880127131e7b2f5f3' ARCHIVE_BASE_PATCH4_0_TYPE='innosetup' ARCHIVE_BASE_PATCH4_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-1.bin' ARCHIVE_BASE_PATCH4_0_PART1_MD5='df12c48514a6e053123b993536984db1' ARCHIVE_BASE_PATCH4_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-2.bin' ARCHIVE_BASE_PATCH4_0_PART2_MD5='7624eae52e3ba390cc451c92eb22971e' ARCHIVE_BASE_PATCH4_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-3.bin' ARCHIVE_BASE_PATCH4_0_PART3_MD5='55926fedfbe8bfc55259f43e279506c2' ARCHIVE_BASE_PATCH4_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-4.bin' ARCHIVE_BASE_PATCH4_0_PART4_MD5='6521b33ac90d7da85737fd789a035a4b' ARCHIVE_BASE_PATCH4_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-5.bin' ARCHIVE_BASE_PATCH4_0_PART5_MD5='9cab7eb4d37f6970d7c75620604f6260' ARCHIVE_BASE_PATCH4_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-6.bin' ARCHIVE_BASE_PATCH4_0_PART6_MD5='d6c465c93781fe3ff757c6c20a2ff373' ARCHIVE_BASE_PATCH4_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-7.bin' ARCHIVE_BASE_PATCH4_0_PART7_MD5='75a4703c4ab50e922f35c37dc0b2f91c' ARCHIVE_BASE_PATCH4_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-8.bin' ARCHIVE_BASE_PATCH4_0_PART8_MD5='2abf5bf419d07af67fa89ab9cf782401' ARCHIVE_BASE_PATCH4_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-9.bin' ARCHIVE_BASE_PATCH4_0_PART9_MD5='156c9711f63b8db03f31e41fd22e59af' ARCHIVE_BASE_PATCH4_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-10.bin' ARCHIVE_BASE_PATCH4_0_PART10_MD5='32430ec83c9b780c637c1d6b2de9ce68' ARCHIVE_BASE_PATCH4_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-11.bin' ARCHIVE_BASE_PATCH4_0_PART11_MD5='d0ae7f626c2f163f7192f2e6d10f09db' ARCHIVE_BASE_PATCH4_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-12.bin' ARCHIVE_BASE_PATCH4_0_PART12_MD5='5378372fae1cf46669db85f60091e77c' ARCHIVE_BASE_PATCH4_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-13.bin' ARCHIVE_BASE_PATCH4_0_PART13_MD5='f0e0d239c05867ceddd2f630794db82f' ARCHIVE_BASE_PATCH4_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-14.bin' ARCHIVE_BASE_PATCH4_0_PART14_MD5='49324f1d65939e8e41ea5530f369d5cd' ARCHIVE_BASE_PATCH4_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-15.bin' ARCHIVE_BASE_PATCH4_0_PART15_MD5='a6547b00be69663430c8c72bfa4a9f85' ARCHIVE_BASE_PATCH4_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-16.bin' ARCHIVE_BASE_PATCH4_0_PART16_MD5='c285e952585a260478c2d31f29448745' ARCHIVE_BASE_PATCH4_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-17.bin' ARCHIVE_BASE_PATCH4_0_PART17_MD5='d6fb24e9f9781f4f72c5435634ac6ac7' ARCHIVE_BASE_PATCH4_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-18.bin' ARCHIVE_BASE_PATCH4_0_PART18_MD5='c05f0ef6d178843fb0da80753752b5b5' ARCHIVE_BASE_PATCH4_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-19.bin' ARCHIVE_BASE_PATCH4_0_PART19_MD5='626615ae36a91d6f06b66f82090725e7' ARCHIVE_BASE_PATCH4_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-20.bin' ARCHIVE_BASE_PATCH4_0_PART20_MD5='e41563ed5af9e65893968dc4f3a3a11f' ARCHIVE_BASE_PATCH4_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-21.bin' ARCHIVE_BASE_PATCH4_0_PART21_MD5='f8c9ca01fa54f40c6720907a6754497c' ARCHIVE_BASE_PATCH4_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-22.bin' ARCHIVE_BASE_PATCH4_0_PART22_MD5='6c73b251f90ccdfc3478e36dd5c10ba2' ARCHIVE_BASE_PATCH4_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-23.bin' ARCHIVE_BASE_PATCH4_0_PART23_MD5='1b3b77c0ec4d9d0355964662ff82c9eb' ARCHIVE_BASE_PATCH4_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-24.bin' ARCHIVE_BASE_PATCH4_0_PART24_MD5='49538632c8eb659f017c3ae1a1698a1f' ARCHIVE_BASE_PATCH4_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-25.bin' ARCHIVE_BASE_PATCH4_0_PART25_MD5='6ee062ce652cb6606b9747f3ace8706e' ARCHIVE_BASE_PATCH4_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-26.bin' ARCHIVE_BASE_PATCH4_0_PART26_MD5='97fda2b27e9bf32387e17294f2dd05ed' ARCHIVE_BASE_PATCH4_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-27.bin' ARCHIVE_BASE_PATCH4_0_PART27_MD5='c4e2eee7ea51aa41ba1fcd2544a7423c' ARCHIVE_BASE_PATCH4_0_SIZE='126864164' ARCHIVE_BASE_PATCH4_0_VERSION='4.1.1.3956130-gog68995' ARCHIVE_BASE_PATCH3_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008).exe' ARCHIVE_BASE_PATCH3_0_MD5='e2da307eb714d2e746048e8fb7d646a4' ARCHIVE_BASE_PATCH3_0_TYPE='innosetup' ARCHIVE_BASE_PATCH3_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-1.bin' ARCHIVE_BASE_PATCH3_0_PART1_MD5='c1f97403bf1b7aef31aac7ac8a05c52c' ARCHIVE_BASE_PATCH3_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-2.bin' ARCHIVE_BASE_PATCH3_0_PART2_MD5='f758ba3cb8c8b92ec3f87d1b923b7c11' ARCHIVE_BASE_PATCH3_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-3.bin' ARCHIVE_BASE_PATCH3_0_PART3_MD5='0a74176898bbe90ba6df280d002c608f' ARCHIVE_BASE_PATCH3_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-4.bin' ARCHIVE_BASE_PATCH3_0_PART4_MD5='2839a599a52492bf7fc7e21a0f948792' ARCHIVE_BASE_PATCH3_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-5.bin' ARCHIVE_BASE_PATCH3_0_PART5_MD5='e6662560a171acf293da789ba73e66a5' ARCHIVE_BASE_PATCH3_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-6.bin' ARCHIVE_BASE_PATCH3_0_PART6_MD5='3fa48d0c2cbdb8d2bed0d7b1120e4807' ARCHIVE_BASE_PATCH3_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-7.bin' ARCHIVE_BASE_PATCH3_0_PART7_MD5='435d3b387cbd7f77149f4fd48e97172e' ARCHIVE_BASE_PATCH3_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-8.bin' ARCHIVE_BASE_PATCH3_0_PART8_MD5='3e6a2f03e58ec7067c9cebffc913144d' ARCHIVE_BASE_PATCH3_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-9.bin' ARCHIVE_BASE_PATCH3_0_PART9_MD5='9560938b6aa92559096c7db471c437fa' ARCHIVE_BASE_PATCH3_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-10.bin' ARCHIVE_BASE_PATCH3_0_PART10_MD5='42e9165bd6665754052936cf5949269a' ARCHIVE_BASE_PATCH3_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-11.bin' ARCHIVE_BASE_PATCH3_0_PART11_MD5='b536ed99f08843c8bb6c7af50f3a14b9' ARCHIVE_BASE_PATCH3_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-12.bin' ARCHIVE_BASE_PATCH3_0_PART12_MD5='86a43810f51761fd09a653f1b89e9936' ARCHIVE_BASE_PATCH3_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-13.bin' ARCHIVE_BASE_PATCH3_0_PART13_MD5='83d3432202ca5a775952afc001086a03' ARCHIVE_BASE_PATCH3_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-14.bin' ARCHIVE_BASE_PATCH3_0_PART14_MD5='db7dcdd36279cf06e014b3d51d06e978' ARCHIVE_BASE_PATCH3_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-15.bin' ARCHIVE_BASE_PATCH3_0_PART15_MD5='9e472641d3c34199dfeba8851f7bdcf5' ARCHIVE_BASE_PATCH3_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-16.bin' ARCHIVE_BASE_PATCH3_0_PART16_MD5='1f7d14f63ecafdbbcd727de7ac38223c' ARCHIVE_BASE_PATCH3_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-17.bin' ARCHIVE_BASE_PATCH3_0_PART17_MD5='f1359a59c61a955f0620febc487a1269' ARCHIVE_BASE_PATCH3_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-18.bin' ARCHIVE_BASE_PATCH3_0_PART18_MD5='bfd969ab39637c49b64f7cfaa1f20804' ARCHIVE_BASE_PATCH3_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-19.bin' ARCHIVE_BASE_PATCH3_0_PART19_MD5='e8eae4f90a2cea5bcbdee08a1b712aef' ARCHIVE_BASE_PATCH3_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-20.bin' ARCHIVE_BASE_PATCH3_0_PART20_MD5='b88525457e4b590b78c34f40e1ba60f0' ARCHIVE_BASE_PATCH3_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-21.bin' ARCHIVE_BASE_PATCH3_0_PART21_MD5='d74266b799d4d911838cf9173c87fda6' ARCHIVE_BASE_PATCH3_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-22.bin' ARCHIVE_BASE_PATCH3_0_PART22_MD5='75b917c7abbf4483a82b56b5395e39c0' ARCHIVE_BASE_PATCH3_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-23.bin' ARCHIVE_BASE_PATCH3_0_PART23_MD5='bd518745958733216fb50f9fce5cb494' ARCHIVE_BASE_PATCH3_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-24.bin' ARCHIVE_BASE_PATCH3_0_PART24_MD5='404946034a46864f9172c7b9cf13002b' ARCHIVE_BASE_PATCH3_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-25.bin' ARCHIVE_BASE_PATCH3_0_PART25_MD5='f6255a2a3130642c3f96fd43252e9dec' ARCHIVE_BASE_PATCH3_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-26.bin' ARCHIVE_BASE_PATCH3_0_PART26_MD5='d2bbcc99329999915b2b478e9d9218e4' ARCHIVE_BASE_PATCH3_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-27.bin' ARCHIVE_BASE_PATCH3_0_PART27_MD5='3e8cc3d3b3028f065e73296dcc714712' ARCHIVE_BASE_PATCH3_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-28.bin' ARCHIVE_BASE_PATCH3_0_PART28_MD5='1ad835b73e36f5fd9706f5a3e3ccd276' ARCHIVE_BASE_PATCH3_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-29.bin' ARCHIVE_BASE_PATCH3_0_PART29_MD5='27564ccea2ef5b369feee3b246631060' ARCHIVE_BASE_PATCH3_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-30.bin' ARCHIVE_BASE_PATCH3_0_PART30_MD5='c3729516a6fb77dad2f760ef9d21bb9a' ARCHIVE_BASE_PATCH3_0_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-31.bin' ARCHIVE_BASE_PATCH3_0_PART31_MD5='5fb4854aaac674f56a563dc4616b8792' ARCHIVE_BASE_PATCH3_0_SIZE='156835644' ARCHIVE_BASE_PATCH3_0_VERSION='4.1.1.3767641-gog68008' ARCHIVE_BASE_PATCH2_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336).exe' ARCHIVE_BASE_PATCH2_0_MD5='6eeac06fdc264d09052dd52a5d8f85fb' ARCHIVE_BASE_PATCH2_0_TYPE='innosetup' ARCHIVE_BASE_PATCH2_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-1.bin' ARCHIVE_BASE_PATCH2_0_PART1_MD5='a8ac39fc4ddd9dc8c8b451ddceb2bed7' ARCHIVE_BASE_PATCH2_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-2.bin' ARCHIVE_BASE_PATCH2_0_PART2_MD5='1e1806b014056b87e1d8d38310d27843' ARCHIVE_BASE_PATCH2_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-3.bin' ARCHIVE_BASE_PATCH2_0_PART3_MD5='3caaa1250e79563a94689b6cc7777226' ARCHIVE_BASE_PATCH2_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-4.bin' ARCHIVE_BASE_PATCH2_0_PART4_MD5='c73405adb39664c2580444be4d8f1e77' ARCHIVE_BASE_PATCH2_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-5.bin' ARCHIVE_BASE_PATCH2_0_PART5_MD5='d380505dfa53dfda7cfd446781cadc1e' ARCHIVE_BASE_PATCH2_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-6.bin' ARCHIVE_BASE_PATCH2_0_PART6_MD5='bbd932a09811206b178cbaaa3e1961f4' ARCHIVE_BASE_PATCH2_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-7.bin' ARCHIVE_BASE_PATCH2_0_PART7_MD5='9096d0e0d58509b010366140d74d0387' ARCHIVE_BASE_PATCH2_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-8.bin' ARCHIVE_BASE_PATCH2_0_PART8_MD5='bbfceef39180a8066727f23c9e494f9a' ARCHIVE_BASE_PATCH2_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-9.bin' ARCHIVE_BASE_PATCH2_0_PART9_MD5='5a118078fc27f3aa102023ef6f0f8b38' ARCHIVE_BASE_PATCH2_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-10.bin' ARCHIVE_BASE_PATCH2_0_PART10_MD5='0f221f4cb8c70bec4a76f605842e4b5a' ARCHIVE_BASE_PATCH2_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-11.bin' ARCHIVE_BASE_PATCH2_0_PART11_MD5='03bb396186275434f3630dcaea22f847' ARCHIVE_BASE_PATCH2_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-12.bin' ARCHIVE_BASE_PATCH2_0_PART12_MD5='94e6c7a3957f0692587dd1e17e57bd6b' ARCHIVE_BASE_PATCH2_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-13.bin' ARCHIVE_BASE_PATCH2_0_PART13_MD5='0e492c7302256ec45e5f01cb6d86f194' ARCHIVE_BASE_PATCH2_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-14.bin' ARCHIVE_BASE_PATCH2_0_PART14_MD5='2d476b947cd51d52d5406eb22772b370' ARCHIVE_BASE_PATCH2_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-15.bin' ARCHIVE_BASE_PATCH2_0_PART15_MD5='932de8332ecef4512f15942f306e35d9' ARCHIVE_BASE_PATCH2_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-16.bin' ARCHIVE_BASE_PATCH2_0_PART16_MD5='e7fd6a1d8b1191726d29beeb671db49a' ARCHIVE_BASE_PATCH2_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-17.bin' ARCHIVE_BASE_PATCH2_0_PART17_MD5='586951c282b7937106f303a80911245b' ARCHIVE_BASE_PATCH2_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-18.bin' ARCHIVE_BASE_PATCH2_0_PART18_MD5='f9a7d5f8dacd3469bdb79126bd4838e7' ARCHIVE_BASE_PATCH2_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-19.bin' ARCHIVE_BASE_PATCH2_0_PART19_MD5='9099f94ffe643239596ce857c1720e08' ARCHIVE_BASE_PATCH2_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-20.bin' ARCHIVE_BASE_PATCH2_0_PART20_MD5='9e20afbabdaea6d69bc51045da768f69' ARCHIVE_BASE_PATCH2_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-21.bin' ARCHIVE_BASE_PATCH2_0_PART21_MD5='4230156c15022f0634edd98542020683' ARCHIVE_BASE_PATCH2_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-22.bin' ARCHIVE_BASE_PATCH2_0_PART22_MD5='0471d8d45cd5eb7accdd16c563c1e972' ARCHIVE_BASE_PATCH2_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-23.bin' ARCHIVE_BASE_PATCH2_0_PART23_MD5='50d0b713eaa36adaf530f9bf87600baa' ARCHIVE_BASE_PATCH2_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-24.bin' ARCHIVE_BASE_PATCH2_0_PART24_MD5='05c0bdfd7c1b01083d511054f6a9f23a' ARCHIVE_BASE_PATCH2_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-25.bin' ARCHIVE_BASE_PATCH2_0_PART25_MD5='96141571c42a53a9bf78960e4c7d83ab' ARCHIVE_BASE_PATCH2_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-26.bin' ARCHIVE_BASE_PATCH2_0_PART26_MD5='3e23b9e016c006fae2c3c60a5af44a47' ARCHIVE_BASE_PATCH2_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-27.bin' ARCHIVE_BASE_PATCH2_0_PART27_MD5='b50cb9a55312f948909ee57c6ed09469' ARCHIVE_BASE_PATCH2_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-28.bin' ARCHIVE_BASE_PATCH2_0_PART28_MD5='24910c2975faf1762a177df3cb95c593' ARCHIVE_BASE_PATCH2_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-29.bin' ARCHIVE_BASE_PATCH2_0_PART29_MD5='2e4c222aabc70fd6068ad8834aaa7b2c' ARCHIVE_BASE_PATCH2_0_SIZE='145464212' ARCHIVE_BASE_PATCH2_0_VERSION='4.1.1.3700362-gog67336' ARCHIVE_BASE_PATCH1_0_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052).exe' ARCHIVE_BASE_PATCH1_0_MD5='09401cf3b960c56032b9c8d5492d2316' ARCHIVE_BASE_PATCH1_0_TYPE='innosetup' ARCHIVE_BASE_PATCH1_0_PART1_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-1.bin' ARCHIVE_BASE_PATCH1_0_PART1_MD5='f3a8409e3f4dd3db98bc5df6ce0742f5' ARCHIVE_BASE_PATCH1_0_PART2_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-2.bin' ARCHIVE_BASE_PATCH1_0_PART2_MD5='9135194fb160d8d8fb35aac207b668b3' ARCHIVE_BASE_PATCH1_0_PART3_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-3.bin' ARCHIVE_BASE_PATCH1_0_PART3_MD5='489c13ad3282beb71aa3de4db880fade' ARCHIVE_BASE_PATCH1_0_PART4_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-4.bin' ARCHIVE_BASE_PATCH1_0_PART4_MD5='24caf894181a2d7be008bfd6bce865a6' ARCHIVE_BASE_PATCH1_0_PART5_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-5.bin' ARCHIVE_BASE_PATCH1_0_PART5_MD5='17a4f372bd3d56a3b531eb2bf1c9f14d' ARCHIVE_BASE_PATCH1_0_PART6_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-6.bin' ARCHIVE_BASE_PATCH1_0_PART6_MD5='5897dad5e3de1419b13ea78ffb200510' ARCHIVE_BASE_PATCH1_0_PART7_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-7.bin' ARCHIVE_BASE_PATCH1_0_PART7_MD5='f652711efa1f8328d097be81527260f4' ARCHIVE_BASE_PATCH1_0_PART8_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-8.bin' ARCHIVE_BASE_PATCH1_0_PART8_MD5='748370642aefced9eb5647cc4e431828' ARCHIVE_BASE_PATCH1_0_PART9_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-9.bin' ARCHIVE_BASE_PATCH1_0_PART9_MD5='01e5e27b88c2d9a610136fafdb4b8f02' ARCHIVE_BASE_PATCH1_0_PART10_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-10.bin' ARCHIVE_BASE_PATCH1_0_PART10_MD5='084d3daf2161b8054e5a4d58fd859e80' ARCHIVE_BASE_PATCH1_0_PART11_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-11.bin' ARCHIVE_BASE_PATCH1_0_PART11_MD5='6a2e64ba408cfacc1cf4d4c87ef0ef7b' ARCHIVE_BASE_PATCH1_0_PART12_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-12.bin' ARCHIVE_BASE_PATCH1_0_PART12_MD5='c7936ac74791438308efb79b748a1a9e' ARCHIVE_BASE_PATCH1_0_PART13_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-13.bin' ARCHIVE_BASE_PATCH1_0_PART13_MD5='262a4d8e4c34d382a6220acf44205b84' ARCHIVE_BASE_PATCH1_0_PART14_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-14.bin' ARCHIVE_BASE_PATCH1_0_PART14_MD5='ccf42f75bdd18740ddc3680ece6c06b2' ARCHIVE_BASE_PATCH1_0_PART15_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-15.bin' ARCHIVE_BASE_PATCH1_0_PART15_MD5='2e2558d1b7c1d5252afcb6a0542b3848' ARCHIVE_BASE_PATCH1_0_PART16_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-16.bin' ARCHIVE_BASE_PATCH1_0_PART16_MD5='a7d40cc96e64cdb85aeccc2471900acc' ARCHIVE_BASE_PATCH1_0_PART17_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-17.bin' ARCHIVE_BASE_PATCH1_0_PART17_MD5='53b77f130bc641baf7e26007f9fc3849' ARCHIVE_BASE_PATCH1_0_PART18_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-18.bin' ARCHIVE_BASE_PATCH1_0_PART18_MD5='26ecb989f6d025bb4ab5ea726cacb496' ARCHIVE_BASE_PATCH1_0_PART19_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-19.bin' ARCHIVE_BASE_PATCH1_0_PART19_MD5='8f507b0da3729dba21989460f96d3781' ARCHIVE_BASE_PATCH1_0_PART20_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-20.bin' ARCHIVE_BASE_PATCH1_0_PART20_MD5='40493a3fb33da7202533823f1444b526' ARCHIVE_BASE_PATCH1_0_PART21_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-21.bin' ARCHIVE_BASE_PATCH1_0_PART21_MD5='8f2abd65aaaae133ac4e6233efda0654' ARCHIVE_BASE_PATCH1_0_PART22_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-22.bin' ARCHIVE_BASE_PATCH1_0_PART22_MD5='f5a21a6a93328adb55459b28d7096608' ARCHIVE_BASE_PATCH1_0_PART23_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-23.bin' ARCHIVE_BASE_PATCH1_0_PART23_MD5='0f2f3783421bbf5c7c714b0d99dc0bc2' ARCHIVE_BASE_PATCH1_0_PART24_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-24.bin' ARCHIVE_BASE_PATCH1_0_PART24_MD5='11ee20ad29f1dfa7ba9618664c974fa9' ARCHIVE_BASE_PATCH1_0_PART25_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-25.bin' ARCHIVE_BASE_PATCH1_0_PART25_MD5='4c93abd831b0469f2061f27b6ecaebe0' ARCHIVE_BASE_PATCH1_0_PART26_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-26.bin' ARCHIVE_BASE_PATCH1_0_PART26_MD5='610b63465163f61c5e645092800bc3d9' ARCHIVE_BASE_PATCH1_0_PART27_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-27.bin' ARCHIVE_BASE_PATCH1_0_PART27_MD5='9e81fa436fb596f0ae071ae1d7d660d6' ARCHIVE_BASE_PATCH1_0_PART28_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-28.bin' ARCHIVE_BASE_PATCH1_0_PART28_MD5='8581ed928d138c89a05d68a116684d7a' ARCHIVE_BASE_PATCH1_0_SIZE='140000000' ARCHIVE_BASE_PATCH1_0_VERSION='4.1.1.3669438-gog67052' ARCHIVE_BASE_PATCH0_0_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683).exe' ARCHIVE_BASE_PATCH0_0_MD5='986cbd346ca2444eba5ca65921557abc' ARCHIVE_BASE_PATCH0_0_TYPE='innosetup' ARCHIVE_BASE_PATCH0_0_PART1_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-1.bin' ARCHIVE_BASE_PATCH0_0_PART1_MD5='14c9146c4ef5c86dae1edcc4ffcf5953' ARCHIVE_BASE_PATCH0_0_PART2_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-2.bin' ARCHIVE_BASE_PATCH0_0_PART2_MD5='2768930a5a1f20998c087c483c298d4e' ARCHIVE_BASE_PATCH0_0_PART3_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-3.bin' ARCHIVE_BASE_PATCH0_0_PART3_MD5='f6de17882cf9c14bf4d9c35d1408b370' ARCHIVE_BASE_PATCH0_0_PART4_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-4.bin' ARCHIVE_BASE_PATCH0_0_PART4_MD5='57821851b52dbc96735e19ed4cea4412' ARCHIVE_BASE_PATCH0_0_PART5_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-5.bin' ARCHIVE_BASE_PATCH0_0_PART5_MD5='2699c17f29e4385685fedf8f4c722942' ARCHIVE_BASE_PATCH0_0_PART6_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-6.bin' ARCHIVE_BASE_PATCH0_0_PART6_MD5='dfda5cb12822ab47d0fbec331a3bf4e9' ARCHIVE_BASE_PATCH0_0_PART7_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-7.bin' ARCHIVE_BASE_PATCH0_0_PART7_MD5='a9c6c86ba6b752fdfe3b17e2bb671da9' ARCHIVE_BASE_PATCH0_0_PART8_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-8.bin' ARCHIVE_BASE_PATCH0_0_PART8_MD5='6b8124c98e89a4476fd5ebc5fb6eac4e' ARCHIVE_BASE_PATCH0_0_PART9_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-9.bin' ARCHIVE_BASE_PATCH0_0_PART9_MD5='0b40958f3d74bc799e39c0b6757dd210' ARCHIVE_BASE_PATCH0_0_PART10_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-10.bin' ARCHIVE_BASE_PATCH0_0_PART10_MD5='274034a44d58e127f845664c7ba290ee' ARCHIVE_BASE_PATCH0_0_PART11_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-11.bin' ARCHIVE_BASE_PATCH0_0_PART11_MD5='2f4d7c82fb650731a2e215d28b4aefc8' ARCHIVE_BASE_PATCH0_0_PART12_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-12.bin' ARCHIVE_BASE_PATCH0_0_PART12_MD5='bd3a022fe59b2089d97e5f3905bc3962' ARCHIVE_BASE_PATCH0_0_PART13_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-13.bin' ARCHIVE_BASE_PATCH0_0_PART13_MD5='712abe64604b05e2fbbc7bd9aacb1413' ARCHIVE_BASE_PATCH0_0_PART14_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-14.bin' ARCHIVE_BASE_PATCH0_0_PART14_MD5='4dfd9e4a56ce1d63293a0e7bcc66e7a4' ARCHIVE_BASE_PATCH0_0_PART15_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-15.bin' ARCHIVE_BASE_PATCH0_0_PART15_MD5='512fa657892ca991d3f626e21f2d6821' ARCHIVE_BASE_PATCH0_0_PART16_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-16.bin' ARCHIVE_BASE_PATCH0_0_PART16_MD5='e364b2302d2e23e79478eceda835b95f' ARCHIVE_BASE_PATCH0_0_PART17_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-17.bin' ARCHIVE_BASE_PATCH0_0_PART17_MD5='0623bd7550eb187d569ee66cf2bad6c1' ARCHIVE_BASE_PATCH0_0_PART18_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-18.bin' ARCHIVE_BASE_PATCH0_0_PART18_MD5='886a04f956eb69f6a644dd9faff319d0' ARCHIVE_BASE_PATCH0_0_PART19_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-19.bin' ARCHIVE_BASE_PATCH0_0_PART19_MD5='c6d3c5c670066872c7e0cf78162d96ad' ARCHIVE_BASE_PATCH0_0_PART20_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-20.bin' ARCHIVE_BASE_PATCH0_0_PART20_MD5='6517b23d62e752d5f28e607157690f9b' ARCHIVE_BASE_PATCH0_0_PART21_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-21.bin' ARCHIVE_BASE_PATCH0_0_PART21_MD5='e80bbbd92fa5992792679bf0f46d32ad' ARCHIVE_BASE_PATCH0_0_PART22_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-22.bin' ARCHIVE_BASE_PATCH0_0_PART22_MD5='16c82788a087f3ad44939854aed5b812' ARCHIVE_BASE_PATCH0_0_PART23_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-23.bin' ARCHIVE_BASE_PATCH0_0_PART23_MD5='ee096b68eb210b732348d31e940702ea' ARCHIVE_BASE_PATCH0_0_PART24_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-24.bin' ARCHIVE_BASE_PATCH0_0_PART24_MD5='df2a50351cc593ebaf7316afe7a0ae72' ARCHIVE_BASE_PATCH0_0_PART25_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-25.bin' ARCHIVE_BASE_PATCH0_0_PART25_MD5='1db116cd2f589addfa9cf258429c085b' ARCHIVE_BASE_PATCH0_0_PART26_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-26.bin' ARCHIVE_BASE_PATCH0_0_PART26_MD5='f937efd190dc0a93b918061f97d24ba9' ARCHIVE_BASE_PATCH0_0_PART27_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-27.bin' ARCHIVE_BASE_PATCH0_0_PART27_MD5='2c61a47bea3ed93960382139ba15c6b7' ARCHIVE_BASE_PATCH0_0_SIZE='131000000' ARCHIVE_BASE_PATCH0_0_VERSION='4.1.1.3635601-gog66683' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin' CONTENT_GAME_L10N_VOICES_FILES=' data/localization/voicemeta.pak' CONTENT_GAME_L10N_COMMON_FILES=' data/localization/english.pak data/localization/english_animations.pak' CONTENT_GAME_L10N_FR_FILES=' data/localization/french' CONTENT_GAME_DATA_MODELS_FILES=' data/models.pak' CONTENT_GAME_DATA_SOUNDS_FILES=' data/sharedsoundbanks.pak' CONTENT_GAME_DATA_TEXTURES_1_FILES=' data/gustav_textures.pak data/textures.pak data/textures_1.pak' CONTENT_GAME_DATA_TEXTURES_2_FILES=' data/textures_2.pak data/textures_3.pak data/virtualtextures.pak' CONTENT_GAME_DATA_TEXTURES_3_FILES=' data/virtualtextures_1.pak data/virtualtextures_2.pak' CONTENT_GAME_DATA_TEXTURES_4_FILES=' data/virtualtextures_3.pak data/virtualtextures_4.pak' CONTENT_GAME_DATA_TEXTURES_5_FILES=' data/virtualtextures_5.pak data/virtualtextures_6.pak' CONTENT_GAME_DATA_TEXTURES_6_FILES=' data/virtualtextures_7.pak data/virtualtextures_8.pak' CONTENT_GAME_DATA_TEXTURES_7_FILES=' data/virtualtextures_9.pak data/virtualtextures_10.pak' CONTENT_GAME_DATA_TEXTURES_8_FILES=' data/virtualtextures_11.pak data/virtualtextures_12.pak' CONTENT_GAME_DATA_TEXTURES_9_FILES=' data/virtualtextures_13.pak data/virtualtextures_14.pak' CONTENT_GAME_DATA_TEXTURES_10_FILES=' data/virtualtextures_15.pak data/virtualtextures_16.pak' CONTENT_GAME_DATA_TEXTURES_11_FILES=' data/virtualtextures_17.pak data/virtualtextures_18.pak' CONTENT_GAME_DATA_TEXTURES_12_FILES=' data/virtualtextures_*.pak' CONTENT_GAME_DATA_PATCH0_FILES=' data/patch0_hotfix*.pak' CONTENT_GAME_DATA_PATCH1_FILES=' data/patch1.pak' CONTENT_GAME_DATA_PATCH2_FILES=' data/patch2.pak data/patch2_hotfix*.pak' CONTENT_GAME_DATA_PATCH3_FILES=' data/patch3_hotfix*.pak' CONTENT_GAME_DATA_PATCH4_FILES=' data/patch4_hotfix*.pak' CONTENT_GAME_DATA_PATCH5_FILES=' data/patch5_hotfix*.pak' CONTENT_GAME_DATA_PATCH6_FILES=' data/patch6_hotfix*.pak' CONTENT_GAME_DATA_PATCH7_FILES=' data/patch7_hotfix*.pak' CONTENT_GAME_DATA_PATCH8_FILES=' data/patch8_hotfix*.pak' CONTENT_GAME_DATA_FILES=' data/assets.pak data/day0.pak data/diceset??.pak data/effects.pak data/engine.pak data/engineshaders.pak data/game.pak data/gameplatform.pak data/gustav_navcloud.pak data/gustav_video.pak data/gustavx.pak data/icons.pak data/lowtex.pak data/materials.pak data/psocache.pak data/shared.pak' HUGE_FILES_L10N_VOICES=' data/localization/voice.pak' HUGE_FILES_DATA=' data/gustav.pak' ## The size of sharedsounds.pak goes over the .deb size limit only with patch 5, ## but ./play.it has no problem "splitting" a file into a single chunk, ## at the cost of more time spent in post-install scripts. ## TODO: The library-side implementation of huge files should probably skip files under the size limit, ## putting the whole file into a dedicated package without "splitting" it into a single chunk first. HUGE_FILES_DATA_SOUNDS=' data/sharedsounds.pak' ## The _PATCH3 suffix is doubled so this matches: ## PKG_DATA_PATCH3 in the context of ARCHIVE_BASE_PATCH3 ## but does not match: ## PKG_DATA in the context of ARCHIVE_BASE_PATCH3. HUGE_FILES_DATA_PATCH3_PATCH3=' data/patch3.pak' WINE_PERSISTENT_DIRECTORIES=" users/\${USER}/AppData/Local/Larian Studios/Baldur's Gate 3" ## mfc140u.dll is required. ## TODO: Check if this is still required with current WINE WINE_WINETRICKS_VERBS='mfc140' APP_MAIN_EXE='bin/bg3.exe' ## The game crashes on launch when forcing the use of the wayland SDL backend APP_MAIN_PRERUN=' # The game crashes on launch when forcing the use of the wayland SDL backend if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST_BASE=' PKG_BIN PKG_L10N_VOICES PKG_L10N_COMMON PKG_L10N_EN PKG_L10N_FR PKG_DATA_MODELS PKG_DATA_SOUNDS PKG_DATA_TEXTURES_1 PKG_DATA_TEXTURES_2 PKG_DATA_TEXTURES_3 PKG_DATA_TEXTURES_4 PKG_DATA_TEXTURES_5 PKG_DATA_TEXTURES_6 PKG_DATA_TEXTURES_7 PKG_DATA_TEXTURES_8 PKG_DATA_TEXTURES_9 PKG_DATA_TEXTURES_10 PKG_DATA_TEXTURES_11 PKG_DATA' PACKAGES_LIST_PATCH0="$PACKAGES_LIST_BASE PKG_DATA_PATCH0" PACKAGES_LIST_PATCH1="$PACKAGES_LIST_BASE PKG_DATA_PATCH0 PKG_DATA_PATCH1" PACKAGES_LIST_PATCH2="$PACKAGES_LIST_BASE PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2" PACKAGES_LIST_PATCH3="$PACKAGES_LIST_BASE PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2 PKG_DATA_PATCH3" PACKAGES_LIST_PATCH4="$PACKAGES_LIST_BASE PKG_DATA_PATCH4" PACKAGES_LIST_PATCH5="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH5" PACKAGES_LIST_PATCH6="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH6" PACKAGES_LIST_PATCH7="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH7" PACKAGES_LIST_PATCH8="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH8" ## Before patch 8 hotfix 1, no extra data/patch8*.pak file is provided. PACKAGES_LIST_PATCH8_0="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12" PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='French localization' PKG_L10N_DEPENDENCIES_SIBLINGS=' PKG_L10N_COMMON PKG_L10N_VOICES' PKG_L10N_EN_DEPENDENCIES_SIBLINGS="$PKG_L10N_DEPENDENCIES_SIBLINGS" PKG_L10N_FR_DEPENDENCIES_SIBLINGS="$PKG_L10N_DEPENDENCIES_SIBLINGS" PKG_L10N_COMMON_ID="${PKG_L10N_ID}-common" PKG_L10N_COMMON_DESCRIPTION='localizations - shared files' PKG_L10N_VOICES_ID="${PKG_L10N_ID}-voices" PKG_L10N_VOICES_DESCRIPTION='localizations - voices' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_MODELS PKG_DATA_SOUNDS PKG_DATA_TEXTURES_1 PKG_DATA_TEXTURES_2 PKG_DATA_TEXTURES_3 PKG_DATA_TEXTURES_4 PKG_DATA_TEXTURES_5 PKG_DATA_TEXTURES_6 PKG_DATA_TEXTURES_7 PKG_DATA_TEXTURES_8 PKG_DATA_TEXTURES_9 PKG_DATA_TEXTURES_10 PKG_DATA_TEXTURES_11' PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH0="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH1="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0 PKG_DATA_PATCH1" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH2="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH3="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2 PKG_DATA_PATCH3" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH4="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH4" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH5="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH5" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH6="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH6" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH7="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH7" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH8="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH8" ## Before patch 8 hotfix 1, no extra data/patch8*.pak file is provided. PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH8_0="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12" PKG_DATA_MODELS_ID="${PKG_DATA_ID}-models" PKG_DATA_MODELS_DESCRIPTION="$PKG_DATA_DESCRIPTION - models" PKG_DATA_SOUNDS_ID="${PKG_DATA_ID}-sounds" PKG_DATA_SOUNDS_DESCRIPTION="$PKG_DATA_DESCRIPTION - sounds" PKG_DATA_TEXTURES_ID="${PKG_DATA_ID}-textures" PKG_DATA_TEXTURES_1_ID="${PKG_DATA_TEXTURES_ID}-1" PKG_DATA_TEXTURES_2_ID="${PKG_DATA_TEXTURES_ID}-2" PKG_DATA_TEXTURES_3_ID="${PKG_DATA_TEXTURES_ID}-3" PKG_DATA_TEXTURES_4_ID="${PKG_DATA_TEXTURES_ID}-4" PKG_DATA_TEXTURES_5_ID="${PKG_DATA_TEXTURES_ID}-5" PKG_DATA_TEXTURES_6_ID="${PKG_DATA_TEXTURES_ID}-6" PKG_DATA_TEXTURES_7_ID="${PKG_DATA_TEXTURES_ID}-7" PKG_DATA_TEXTURES_8_ID="${PKG_DATA_TEXTURES_ID}-8" PKG_DATA_TEXTURES_9_ID="${PKG_DATA_TEXTURES_ID}-9" PKG_DATA_TEXTURES_10_ID="${PKG_DATA_TEXTURES_ID}-10" PKG_DATA_TEXTURES_11_ID="${PKG_DATA_TEXTURES_ID}-11" PKG_DATA_TEXTURES_12_ID="${PKG_DATA_TEXTURES_ID}-12" PKG_DATA_TEXTURES_DESCRIPTION="$PKG_DATA_DESCRIPTION - textures" PKG_DATA_TEXTURES_1_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 1" PKG_DATA_TEXTURES_2_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 2" PKG_DATA_TEXTURES_3_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 3" PKG_DATA_TEXTURES_4_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 4" PKG_DATA_TEXTURES_5_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 5" PKG_DATA_TEXTURES_6_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 6" PKG_DATA_TEXTURES_7_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 7" PKG_DATA_TEXTURES_8_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 8" PKG_DATA_TEXTURES_9_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 9" PKG_DATA_TEXTURES_10_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 10" PKG_DATA_TEXTURES_11_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 11" PKG_DATA_TEXTURES_12_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 12" PKG_DATA_PATCH0_ID="${PKG_DATA_ID}-patch0" PKG_DATA_PATCH1_ID="${PKG_DATA_ID}-patch1" PKG_DATA_PATCH2_ID="${PKG_DATA_ID}-patch2" PKG_DATA_PATCH3_ID="${PKG_DATA_ID}-patch3" PKG_DATA_PATCH4_ID="${PKG_DATA_ID}-patch4" PKG_DATA_PATCH5_ID="${PKG_DATA_ID}-patch5" PKG_DATA_PATCH6_ID="${PKG_DATA_ID}-patch6" PKG_DATA_PATCH7_ID="${PKG_DATA_ID}-patch7" PKG_DATA_PATCH8_ID="${PKG_DATA_ID}-patch8" PKG_DATA_PATCH0_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch0" PKG_DATA_PATCH1_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch1" PKG_DATA_PATCH2_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch2" PKG_DATA_PATCH3_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch3" PKG_DATA_PATCH4_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch4" PKG_DATA_PATCH5_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch5" PKG_DATA_PATCH6_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch6" PKG_DATA_PATCH7_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch7" PKG_DATA_PATCH8_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch8" ## Archives patch0*.pak, patch1*.pak, patch2*.pak and patch3*.pak are dropped with the patch 4 release. PKG_DATA_PROVIDES_PATCH4=" $PKG_DATA_PATCH0_ID $PKG_DATA_PATCH1_ID $PKG_DATA_PATCH2_ID $PKG_DATA_PATCH3_ID ${PKG_DATA_PATCH3_ID}-chunk1 ${PKG_DATA_PATCH3_ID}-chunk2" ## Archives patch4*.pak are dropped with the patch 5 release. PKG_DATA_PROVIDES_PATCH5="$PKG_DATA_PROVIDES_PATCH4 $PKG_DATA_PATCH4_ID" ## Archives patch5*.pak are dropped with the patch 6 release. PKG_DATA_PROVIDES_PATCH6="$PKG_DATA_PROVIDES_PATCH5 $PKG_DATA_PATCH5_ID" ## Archives patch6*.pak are dropped with the patch 7 release. PKG_DATA_PROVIDES_PATCH7="$PKG_DATA_PROVIDES_PATCH6 $PKG_DATA_PATCH6_ID" ## Archives patch7*.pak are dropped with the patch 8 release. PKG_DATA_PROVIDES_PATCH8="$PKG_DATA_PROVIDES_PATCH7 $PKG_DATA_PATCH7_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Generate localizations configuration l10n_config_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/data/localization/language.lsx" l10n_config_pattern='' l10n_config_destination_en="$(package_path 'PKG_L10N_EN')$(path_game_data)/data/localization/language.lsx" l10n_config_replacement_en='' mkdir --parents "$(dirname "$l10n_config_destination_en")" sed --expression="s;${l10n_config_pattern};${l10n_config_replacement_en};" \ "$l10n_config_source" > "$l10n_config_destination_en" l10n_config_destination_fr="$(package_path 'PKG_L10N_FR')$(path_game_data)/data/localization/language.lsx" l10n_config_replacement_fr='' mkdir --parents "$(dirname "$l10n_config_destination_fr")" sed --expression="s;${l10n_config_pattern};${l10n_config_replacement_fr};" \ "$l10n_config_source" > "$l10n_config_destination_fr" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd bin $(wine_command) bg3.exe "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(messages_language)" in ('fr') message='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) message='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' ## English localization printf "$message" "$lang_en" ## Silence a ShellCheck false positive, word splitting is expected here ## SC2046 (warning): Quote this to prevent word splitting. # shellcheck disable=SC2046 print_instructions $(packages_list | sed 's/PKG_L10N_FR//') ## French localization printf "$message" "$lang_fr" ## Silence a ShellCheck false positive, word splitting is expected here ## SC2046 (warning): Quote this to prevent word splitting. # shellcheck disable=SC2046 print_instructions $(packages_list | sed 's/PKG_L10N_EN//') # Clean up working_directory_cleanup exit 0 games/play-book-of-demons.sh0000755000000000000000000000547014471751340015005 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Book of Demons # send your bug reports to bugs@dotslashplay.it ### script_version=20250504.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='book-of-demons' GAME_NAME='Book of Demons' ARCHIVE_BASE_3_NAME='setup_book_of_demons_1.05.240321_(72057).exe' ARCHIVE_BASE_3_MD5='d569fc4dddcec04aadea70ef49207566' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='946740' ARCHIVE_BASE_3_VERSION='1.05.240321-gog72057' ARCHIVE_BASE_2_NAME='setup_book_of_demons_1.05.221221_(61311).exe' ARCHIVE_BASE_2_MD5='fc7148454bba56db0bb1b8942d1bfa85' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='950000' ARCHIVE_BASE_2_VERSION='1.05.221221-gog61311' ARCHIVE_BASE_1_NAME='setup_book_of_demons_1.05.220217_(53747).exe' ARCHIVE_BASE_1_MD5='6d33342267e0b05af5f493339d450d60' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='900000' ARCHIVE_BASE_1_VERSION='1.05.220217-gog53747' ARCHIVE_BASE_0_NAME='setup_book_of_demons_1.05.211021_(50897).exe' ARCHIVE_BASE_0_MD5='ef098c3f8dd9bc7c82ec2e8ebd6c8ec5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='900000' ARCHIVE_BASE_0_VERSION='1.05.211021-gog50897' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' openal32.dll wrap_oal.dll r2g_launcher.exe r2g_launcher_2.xml' ## r2g_launcher.exe requires discord_game_sdk.dll and galaxy.dll CONTENT_GAME0_BIN_FILES=' discord_game_sdk.dll galaxy.dll' CONTENT_GAME_DATA_FILES=' *.pac supporters.utf8' CONTENT_DOC_DATA_FILES=' changelog.txt' USER_PERSISTENT_FILES=' custom_settings.txt *.xml' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/R2G_Common_WIP1/GOG users/${USER}/AppData/Roaming/Return2Games_WIP21/GOG' APP_MAIN_EXE='r2g_launcher.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-cat-quest-series.sh0000755000000000000000000000442414471751340015362 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Cat Quest series: # - Cat Quest # - Cat Quest 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID_EPISODE1=cat-quest-1 GAME_NAME_EPISODE1='Cat Quest' GAME_ID_EPISODE2=cat-quest-2 GAME_NAME_EPISODE2='Cat Quest II' ARCHIVE_BASE_EPISODE1_0_NAME='setup_cat_quest_1.2.10.2_(42782).exe' ARCHIVE_BASE_EPISODE1_0_MD5=496d069ea28098aa6d575fc56f8c71ec ARCHIVE_BASE_EPISODE1_0_TYPE=innosetup ARCHIVE_BASE_EPISODE1_0_SIZE=334416 ARCHIVE_BASE_EPISODE1_0_VERSION=1.2.10.2-1 ARCHIVE_BASE_EPISODE2_0_NAME='setup_cat_quest_ii_1.7.7.3_(51746).exe' ARCHIVE_BASE_EPISODE2_0_MD5=78f1001f07099b398ce66d971bf9b17c ARCHIVE_BASE_EPISODE2_0_TYPE=innosetup ARCHIVE_BASE_EPISODE2_0_SIZE=511796 ARCHIVE_BASE_EPISODE2_0_VERSION=1.7.7.3-1 UNITY3D_NAME_EPISODE1='Cat Quest' UNITY3D_NAME_EPISODE2='Cat Quest II' # TODO: Include an explicit list of Unity3D plugins. CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES_EPISODE1=' users/${USER}/AppData/LocalLow/The Gentlebros Pte_ Ltd_/Cat Quest' WINE_PERSISTENT_DIRECTORIES_EPISODE2=' users/${USER}/Documents/Cat Quest II' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=32 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID_EPISODE1="${GAME_ID_EPISODE1}-data" PKG_DATA_ID_EPISODE2="${GAME_ID_EPISODE2}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-chained-echoes.sh0000755000000000000000000000366214471751340015026 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Chained Echoes # send your bug reports to bugs@dotslashplay.it ### script_version=20260710.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=chained-echoes GAME_NAME='Chained Echoes' ARCHIVE_BASE_1_NAME='chained_echoes_1_322_71539.sh' ARCHIVE_BASE_1_MD5=1bfa6fc06f6f6dce5943d5a28ed92951 ARCHIVE_BASE_1_SIZE=822597 ARCHIVE_BASE_1_VERSION=1.322-1 ARCHIVE_BASE_0_NAME='chained_echoes_1_3_65510.sh' ARCHIVE_BASE_0_MD5=b319014ce49e39b8ff4aa3540a79e874 ARCHIVE_BASE_0_SIZE=830524 ARCHIVE_BASE_0_VERSION=1.3-1 UNITY3D_NAME='Chained_Echoes' UNITY3D_NAME_0='Chained Echoes' # No Unity3D plugins to include CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Prevent inclusion of shipped Steam libraries. rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Plugins" # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-children-of-morta-expansions.sh0000755000000000000000000000342314471751340017661 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Children of Morta expansions: # - Ancient Spirits # - Paws and Claws # send your bug reports to bugs@dotslashplay.it ### script_version=20260711.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=children-of-morta GAME_NAME='Children of Morta' EXPANSION_ID_ANCIENT=ancient-spirits EXPANSION_NAME_ANCIENT='Ancient Spirits' EXPANSION_ID_PAWS=paws-and-claws EXPANSION_NAME_PAWS='Paws and Claws' ARCHIVE_BASE_ANCIENT_0_NAME='backers_dlc_1_2_63_48061.sh' ARCHIVE_BASE_ANCIENT_0_MD5=931cfdfd304b909efbe61ac4d6c10b34 ARCHIVE_BASE_ANCIENT_0_SIZE=1026 ARCHIVE_BASE_ANCIENT_0_VERSION=1.2.63-1 ARCHIVE_BASE_PAWS_0_NAME='children_of_morta_paws_and_claws_1_2_63_48061.sh' ARCHIVE_BASE_PAWS_0_MD5=09efef01a9bd0c1a5172e1fe7fd19530 ARCHIVE_BASE_PAWS_0_SIZE=1026 ARCHIVE_BASE_PAWS_0_VERSION=1.2.63-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID=$GAME_ID PKG_MAIN_DEPENDENCIES_SIBLINGS=PKG_PARENT # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-children-of-morta.sh0000755000000000000000000000541314471751340015475 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Children of Morta # send your bug reports to bugs@dotslashplay.it ### script_version=20260713.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=children-of-morta GAME_NAME='Children of Morta' ARCHIVE_BASE_0_NAME='children_of_morta_1_2_63_48061.sh' ARCHIVE_BASE_0_MD5=3f70026a2f2adf1eff19c25041e94a3e ARCHIVE_BASE_0_SIZE=1309191 ARCHIVE_BASE_0_VERSION=1.2.63-1 UNITY3D_NAME='ChildrenOfMorta' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudioL.so libfmodstudio.so libgvraudio.so libresonanceaudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # libfmod*.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6" # libgvraudio.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0" # libresonanceaudio.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libgcc_s.so.1 libm.so.6 libstdc++.so.6" # ScreenSelector.so PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 libstdc++.so.6" PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. # Allow loading of shipped FMod libraries. game_exec_line() { cat <<- 'EOF' GLIBC_TUNABLES=glibc.rtld.execstack=2 ./ChildrenOfMorta -logFile ./logs/$(date +%F-%R).log "$@" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-citizen-sleeper.sh0000755000000000000000000000406414471751340015266 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Citizen Sleeper # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=citizen-sleeper GAME_NAME='Citizen Sleeper' ARCHIVE_BASE_2_NAME='setup_citizen_sleeper_1.4.9_(75233).exe' ARCHIVE_BASE_2_MD5=87a23767b623863d85a640892bff03f7 ARCHIVE_BASE_2_TYPE=innosetup ARCHIVE_BASE_2_SIZE=1202756 ARCHIVE_BASE_2_VERSION=1.4.9-1 ARCHIVE_BASE_1_NAME='setup_citizen_sleeper_1.4.6_(69854).exe' ARCHIVE_BASE_1_MD5=ac9b59f393ca34a89a42ba510bbba4ab ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_SIZE=1170957 ARCHIVE_BASE_1_VERSION=1.4.6-1 ARCHIVE_BASE_0_NAME='setup_citizen_sleeper_1.3.9_(65533).exe' ARCHIVE_BASE_0_MD5=50b240a6cd4fb79096d6d5252daac6b7 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_SIZE=973177 ARCHIVE_BASE_0_VERSION=1.3.9-1 UNITY3D_NAME='Citizen Sleeper' # TODO: Include an explicit list of Unity3D plugins. CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Jump Over the Age/Citizen Sleeper' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-convoy.sh0000755000000000000000000000555014471751340013502 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Convoy # send your bug reports to bugs@dotslashplay.it ### script_version=20250803.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='convoy' GAME_NAME='Convoy' ARCHIVE_BASE_4_NAME='convoy_1_1_55_37448.sh' ARCHIVE_BASE_4_MD5='73308f6e415850f9737bd2eb9f4d8a5b' ARCHIVE_BASE_4_SIZE='851872' ARCHIVE_BASE_4_VERSION='1.1.55-gog37448' ARCHIVE_BASE_3_NAME='convoy_1_1_54_27852.sh' ARCHIVE_BASE_3_MD5='2f7dd6c597e07638650cc01883e0367f' ARCHIVE_BASE_3_SIZE='860000' ARCHIVE_BASE_3_VERSION='1.1.54-gog27852' ARCHIVE_BASE_2_NAME='convoy_1_1_53_27205.sh' ARCHIVE_BASE_2_MD5='cda02a99f12adc608a0193f75fc9d7d3' ARCHIVE_BASE_2_SIZE='860000' ARCHIVE_BASE_2_VERSION='1.1.53-gog27205' ARCHIVE_BASE_1_NAME='convoy_1_1_52_26363.sh' ARCHIVE_BASE_1_MD5='99b331906d75443f08c4f787bc83a7ef' ARCHIVE_BASE_1_SIZE='860000' ARCHIVE_BASE_1_VERSION='1.1.52-gog26363' ARCHIVE_BASE_0_NAME='gog_convoy_2.4.0.7.sh' ARCHIVE_BASE_0_MD5='2d66599173990eb202a43dbc547c80f5' ARCHIVE_BASE_0_SIZE='860000' ARCHIVE_BASE_0_VERSION='1.1.51-gog2.4.0.7' UNITY3D_NAME='Convoy' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-cornerstone-the-song-of-tyrim.sh0000755000000000000000000000411214471751340020005 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Cornerstone: The Song of Tyrim # send your bug reports to bugs@dotslashplay.it ### script_version=20251023.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='cornerstone-the-song-of-tyrim' GAME_NAME='Cornerstone: The Song of Tyrim' ARCHIVE_BASE_0_NAME='Cornerstone_1.00_Linux.zip' ARCHIVE_BASE_0_MD5='ba8e257c18d3606d4b7e4295be893b9c' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.00-humble160425' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/cornerstone-the-song-of-tyrim' UNITY3D_NAME='Cornerstone' UNITY3D_PLUGINS=' libfmod.so libfmodstudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-costume-quest.sh0000755000000000000000000000470114471751340015000 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 VA # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Costume Quest # send your bug reports to bugs@dotslashplay.it ### script_version=20250905.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='costume-quest' GAME_NAME='Costume Quest' ARCHIVE_BASE_0_NAME='gog_costume_quest_2.0.0.3.sh' ARCHIVE_BASE_0_MD5='3c2f2126be1ca2148f333c453341b810' ARCHIVE_BASE_0_SIZE='650000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.3' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='lib' CONTENT_LIBS_BIN_FILES=' libfmodevent-4.42.16.so libfmodeventnet-4.42.16.so libfmodex-4.42.16.so' ## TODO: Check if system-provided SDL2 can be used. CONTENT_LIBS_BIN_FILES="$CONTENT_LIBS_BIN_FILES libSDL2-2.0.so.0" CONTENT_GAME_BIN_FILES=' Cq.bin.x86' CONTENT_GAME_DATA_FILES=' DFCONFIG Data/Config Linux/Packs OGL/Shaders Win/Audio/Music Win/Audio/Music_DLC Win/Audio/SFX Win/Audio/CostumeQuest_USEnglish Win/Audio/Voice' CONTENT_DOC_DATA_PATH='data/noarch/docs' ## FIXME: An explicit list of files should be set. CONTENT_DOC_DATA_FILES='*' APP_MAIN_EXE='Cq.bin.x86' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## TODO: Fix the dependencies list, SDL2 should not be both vendored and depended upon. PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libstdc++.so.6 libopenal.so.1 libGL.so.1 libGLU.so.1 libSDL2-2.0.so.0' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-crosscode.sh0000755000000000000000000000655214471751340014154 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # CrossCode # send your bug reports to bugs@dotslashplay.it ### script_version=20260517.2 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='crosscode' GAME_NAME='CrossCode' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_64BIT_0_NAME='crosscode-new-linux64.zip' ARCHIVE_BASE_64BIT_0_MD5='2fece5dc78bf6bfdde7e6b3239da73b6' ARCHIVE_BASE_64BIT_0_SIZE='1019175' ARCHIVE_BASE_64BIT_0_VERSION='1.4.2-itch.2022.04.19' ARCHIVE_BASE_64BIT_0_URL='https://radicalfishgames.itch.io/crosscode' ARCHIVE_BASE_32BIT_0_NAME='crosscode-new-linux32.zip' ARCHIVE_BASE_32BIT_0_MD5='630cfd22cd5e9e168f833dfa3fce9931' ARCHIVE_BASE_32BIT_0_SIZE='1021105' ARCHIVE_BASE_32BIT_0_VERSION='1.4.2-itch.2022.04.19' ARCHIVE_BASE_32BIT_0_URL='https://radicalfishgames.itch.io/crosscode' ARCHIVE_BASE_DEMO_64BIT_0_NAME='crosscode-demo-linux64.zip' ARCHIVE_BASE_DEMO_64BIT_0_MD5='242e4cc9f48bd70a04f2d5d5e3258207' ARCHIVE_BASE_DEMO_64BIT_0_SIZE='211392' ARCHIVE_BASE_DEMO_64BIT_0_VERSION='1.0-itch1' ARCHIVE_BASE_DEMO_64BIT_0_URL='https://radicalfishgames.itch.io/crosscode' ARCHIVE_BASE_DEMO_32BIT_0_NAME='crosscode-demo-linux32.zip' ARCHIVE_BASE_DEMO_32BIT_0_MD5='6b6c85bcd7ad315ee42a4c785e3e85a6' ARCHIVE_BASE_DEMO_32BIT_0_SIZE='221220' ARCHIVE_BASE_DEMO_32BIT_0_VERSION='1.0-itch1' ARCHIVE_BASE_DEMO_32BIT_0_URL='https://radicalfishgames.itch.io/crosscode' CONTENT_PATH_DEFAULT='assets' CONTENT_PATH_DEFAULT_DEMO='.' CONTENT_GAME_MAIN_FILES=' data extension game impact js media node-webkit.html package.json' APP_MAIN_EXE='node-webkit.html' APP_MAIN_ICON='../favicon.png' ## Easier upgrades from pre-20251127.1 packages PKG_MAIN_PROVIDES=' crosscode-data' PKG_MAIN_PROVIDES_DEMO=' crosscode-demo-data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) # No icon is provided with the demo builds ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/CrossCode" # unzip succeeds but returns non-zero status because of offset ARCHIVE_INNER_EXTRACTOR='bsdtar' archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" ;; (*) content_inclusion_icons ;; esac # Fix node-webkit.html to work with regular web browsers. sed --regexp-extended --in-place \ --expression="/ \/\/ make sure we don't let node-webkit show it's error page/,+8d" \ "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/node-webkit.html" content_inclusion_default # Write launchers, launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-darksiders-2.sh0000755000000000000000000000644414471751340014462 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Darksiders 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250828.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='darksiders-2' GAME_NAME='Darksiders Ⅱ' ARCHIVE_BASE_0_NAME='setup_darksiders2_deathinitive_2.1.0.4.exe' ARCHIVE_BASE_0_MD5='5b39f665a8367f4ebe7c845b2ebbac81' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_0_PART1_NAME='setup_darksiders2_deathinitive_2.1.0.4-1.bin' ARCHIVE_BASE_0_PART1_MD5='ec9c85b15f23b79bd87668282b8101ed' ARCHIVE_BASE_0_PART1_TYPE='rar' ARCHIVE_BASE_0_PART2_NAME='setup_darksiders2_deathinitive_2.1.0.4-2.bin' ARCHIVE_BASE_0_PART2_MD5='4eb87fd00792a0e35b0abd8b7bc124e0' ARCHIVE_BASE_0_PART3_NAME='setup_darksiders2_deathinitive_2.1.0.4-3.bin' ARCHIVE_BASE_0_PART3_MD5='113f5a09d0289db3b1c5a5f85a82849e' ARCHIVE_BASE_0_PART4_NAME='setup_darksiders2_deathinitive_2.1.0.4-4.bin' ARCHIVE_BASE_0_PART4_MD5='ca12e47f9cce195b09a66c7ff27121ab' ARCHIVE_BASE_0_SIZE='16000000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.4' CONTENT_PATH_DEFAULT='game' CONTENT_GAME_BIN_FILES=' darksiders2.exe *.dll' CONTENT_GAME_DATA_MEDIA_FILES=' media/media.upak' CONTENT_GAME_DATA_SOUNDS_FILES=' media/sounds_streamed' CONTENT_GAME_DATA_FILES=' darksiders2.dsl media' CONTENT_DOC_DATA_FILES=' manual.pdf' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Darksiders2 users/${USER}/Documents/My Games/Darksiders2' ## Work around a missing vkd3d feature leading to a black screen after the logo videos, ## cf. https://bugs.winehq.org/show_bug.cgi?id=54778 ## (WINE 10.0) WINE_WINETRICKS_VERBS='d3dcompiler_47' APP_MAIN_EXE='darksiders2.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA_MEDIA PKG_DATA_SOUNDS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_MEDIA PKG_DATA_SOUNDS' PKG_DATA_MEDIA_ID="${PKG_DATA_ID}-media" PKG_DATA_MEDIA_DESCRIPTION="$PKG_DATA_DESCRIPTION - media" PKG_DATA_SOUNDS_ID="${PKG_DATA_ID}-sounds" PKG_DATA_SOUNDS_DESCRIPTION="$PKG_DATA_DESCRIPTION - sounds" ## convmv is used to convert file paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Convert all file paths to lower case. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-deep-sky-derelicts.sh0000755000000000000000000000365114471751340015662 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Deep Sky Derelicts # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=deep-sky-derelicts GAME_NAME='Deep Sky Derelicts' ARCHIVE_BASE_0_NAME='deep_sky_derelicts_1_5_3_37791.sh' ARCHIVE_BASE_0_MD5=a55656f3033c2d339d0cbaeba7503270 ARCHIVE_BASE_0_SIZE=1131190 ARCHIVE_BASE_0_VERSION=1.5.3-1 UNITY3D_NAME='Deep Sky Derelicts' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' LICENSE README.txt' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' # ScreenSelector.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libstdc++.so.6" PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-deltarune-chapter-1.sh0000755000000000000000000000416314471751340015731 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Deltarune - Chapter 1 # send your bug reports to bugs@dotslashplay.it ### script_version=20250828.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='deltarune-chapter-1' GAME_NAME='Deltarune - Chapter 1' ARCHIVE_BASE_0_NAME='SURVEY_PROGRAM_WINDOWS_ENGLISH.exe' ARCHIVE_BASE_0_MD5='2f92f4ad09d41287b36650aaf1e5359e' ARCHIVE_BASE_0_TYPE='nullsoft-installer' ARCHIVE_BASE_0_VERSION='1.0-deltarune' ARCHIVE_BASE_0_SIZE='95000' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' deltarune.exe' CONTENT_GAME_DATA_FILES=' mus lang data.win *.dat *.ogg' CONTENT_DOC_DATA_FILES=' license.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/DELTARUNE' APP_MAIN_EXE='deltarune.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## convmv is used to convert file paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Convert all file paths to lower case. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-dex.sh0000755000000000000000000000436514471751340012750 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Hoël Bézier set -o errexit ### # Dex # send your bug reports to bugs@dotslashplay.it ### script_version=20250507.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='dex-game' GAME_NAME='Dex' ARCHIVE_BASE_1_NAME='dex_en_6_0_0_0_build_5553_17130.sh' ARCHIVE_BASE_1_MD5='3d6f8797fab72dcb867c92bf5a84b4dd' ARCHIVE_BASE_1_SIZE='6300000' ARCHIVE_BASE_1_VERSION='6.0.0.0.5553-gog17130' ARCHIVE_BASE_0_NAME='gog_dex_2.3.0.4.sh' ARCHIVE_BASE_0_MD5='199a1acc59879124e8e1c532909fd879' ARCHIVE_BASE_0_SIZE='6200000' ARCHIVE_BASE_0_VERSION='5.4.0.0-gog2.3.0.4' UNITY3D_NAME='Dex' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_PATH='data/noarch/docs' CONTENT_DOC_DATA_FILES=' Controller_readme.pdf' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-dicey-dungeons.sh0000755000000000000000000000445214471751340015102 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 berru # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Dicey Dungeons # send your bug reports to bugs@dotslashplay.it ### script_version=20260607.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='dicey-dungeons' GAME_NAME='Dicey Dungeons' ARCHIVE_BASE_1_NAME='dicey-dungeons-linux64.zip' ARCHIVE_BASE_1_MD5='7561697f602e3a0af054569e3a8114b3' ARCHIVE_BASE_1_SIZE='110000' ARCHIVE_BASE_1_VERSION='1.11-itch.2021.03.18' ARCHIVE_BASE_1_URL='https://terrycavanagh.itch.io/dicey-dungeons' ARCHIVE_BASE_0_NAME='dicey-dungeons-linux64.zip' ARCHIVE_BASE_0_MD5='14879aa94aef2291d6aec0c4c9e760c5' ARCHIVE_BASE_0_SIZE='450000' ARCHIVE_BASE_0_VERSION='1.10-itch.2020.11.05' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' diceydungeons lime.ndll data manifest mods soundstuff' APP_MAIN_EXE='diceydungeons' APP_MAIN_ICON='data/icon.png' PKG_MAIN_ARCH='64' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' # Easier upgrades from pre-20260607.2 packages PKG_MAIN_PROVIDES=' dicey-dungeons-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Build a 512×512 icon from the 1024×1024 provided one. if [ $(option_value 'icons') -eq 1 ]; then APP_MAIN_ICON_512="${APP_MAIN_ICON%.png}_512.png" gm convert "$(icon_full_path 'APP_MAIN_ICON')" \ -resize 512 "$(icon_full_path 'APP_MAIN_ICON_512')" APP_MAIN_ICONS_LIST="$(application_icons_list 'APP_MAIN') APP_MAIN_ICON_512" fi # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-dins-curse.sh0000755000000000000000000000414614471751340014241 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Din's Curse # send your bug reports to bugs@dotslashplay.it ### script_version=20260629.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='dins-curse' GAME_NAME='Din’s Curse' ARCHIVE_BASE_0_NAME='gog_din_s_curse_2.0.0.6.sh' ARCHIVE_BASE_0_MD5='abead770d1fe9a2c7adb6d250318b698' ARCHIVE_BASE_0_SIZE=161476 ARCHIVE_BASE_0_VERSION='1.034-1' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' DinsCurse Assets User' # TODO: Is this icon required? CONTENT_GAME0_MAIN_FILES=' DCIcon.png' CONTENT_DOC_MAIN_FILES=' changes.txt manual.txt OtherLicenses.txt ReadmeLinux.txt' APP_MAIN_EXE='DinsCurse' APP_MAIN_ICON='DCIcon.png' PKG_MAIN_ARCH='32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1' # Easier upgrades from pre-20260629.1 packages PKG_MAIN_PROVIDES=' dins-curse-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Force the use of system-provided SDL. # Prevent a game crash when using the Wayland video backend of SDL. APP_MAIN_PRERUN="$(application_prerun APP_MAIN) $(launcher_tweak_sdl_override) $(launcher_tweak_sdl_force_x11)" PKG_MAIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_MAIN) libSDL2-2.0.so.0" launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-divine-divinity.sh0000755000000000000000000000773614471751340015310 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Mopi set -o errexit ### # Divine Divinity # send your bug reports to bugs@dotslashplay.it ### script_version=20251117.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='divine-divinity' GAME_NAME='Divine Divinity' ARCHIVE_BASE_HUMBLE_EN_0_NAME='DivineDivinity.zip' ARCHIVE_BASE_HUMBLE_EN_0_MD5='01bd76cb8e3054d7a32dda383b96fa73' ARCHIVE_BASE_HUMBLE_EN_0_SIZE='4066351' ARCHIVE_BASE_HUMBLE_EN_0_VERSION='1.0062a-humble1' ARCHIVE_BASE_HUMBLE_EN_0_URL='https://www.humblebundle.com/store/divine-divinity' ## The Humble Bundle archive includes an InnoSetup installer. REQUIREMENTS_LIST_HUMBLE=' innoextract' ARCHIVE_BASE_GOG_FR_0_NAME='setup_divine_divinity_french_2.1.0.32.exe' ARCHIVE_BASE_GOG_FR_0_MD5='f755d69ad7d319fb70298844dcb3861a' ARCHIVE_BASE_GOG_FR_0_TYPE='innosetup' ARCHIVE_BASE_GOG_FR_0_SIZE='2400000' ARCHIVE_BASE_GOG_FR_0_VERSION='1.0062a-gog2.1.0.32' ARCHIVE_BASE_GOG_EN_0_NAME='setup_divine_divinity_2.0.0.21.exe' ARCHIVE_BASE_GOG_EN_0_MD5='3798d48f04a7a8444fd9f4c32b75b41d' ARCHIVE_BASE_GOG_EN_0_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_0_SIZE='2400000' ARCHIVE_BASE_GOG_EN_0_VERSION='1.0062a-gog2.0.0.21' CONTENT_PATH_DEFAULT='app' ## div.exe requirements CONTENT_LIBS_BIN_FILES=' fmod.dll DivDialogSystem.dll OsirisDLL.dll binkw32.dll' ## The game crashes on launch if the following libraries are missing. CONTENT_LIBS0_BIN_FILES=' slash?.dll' CONTENT_GAME_BIN_FILES=' sound.cfg configtool.exe div.exe secdrv.sys' CONTENT_GAME_L10N_FILES=' localizations dat/english dat/french config.lcl' CONTENT_GAME_DATA_FILES=' capture dat fonts global main sound static divinityevent.dat testimage.tga keylist.txt' CONTENT_DOC_DATA_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' dynamic global savegames' USER_PERSISTENT_FILES=' persist.dat config.div config.lcl keylist.txt dat/usernotes.bin static/imagelists/collide.* *.000 *.cfg' APP_MAIN_EXE='div.exe' APP_CONFIG_ID="${GAME_ID}_configuration" APP_CONFIG_NAME="${GAME_NAME} - Configuration" APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='configtool.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA PKG_L10N_BASE' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_HUMBLE_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_GOG_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_ID_GOG_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_HUMBLE_EN='English localisation' PKG_L10N_DESCRIPTION_GOG_FR='French localisation' PKG_L10N_DESCRIPTION_GOG_EN='English localisation' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_EN_'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Build/DivInstaller_EN.exe" ARCHIVE_INNER_TYPE='innosetup' archive_extraction 'ARCHIVE_INNER' rm --recursive "${PLAYIT_WORKDIR}/gamedata/Build" ;; esac # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. ln --force --symbolic $(path_libraries)/* "\${PATH_PREFIX}" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-divinity-original-sin-1.sh0000755000000000000000000001423714471751340016555 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Divinity: Original Sin # send your bug reports to bugs@dotslashplay.it ### script_version=20251022.4 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='divinity-original-sin-1' GAME_NAME='Divinity: Original Sin' ARCHIVE_BASE_0_NAME='divinity_original_sin_enhanced_edition_en_2_0_119_430_ch_17075.sh' ARCHIVE_BASE_0_MD5='89f526c1030d6d352b7df65361ab71e6' ARCHIVE_BASE_0_SIZE='11000000' ARCHIVE_BASE_0_VERSION='2.0.119.430-gog17075' ARCHIVE_OPTIONAL_ICONS_NAME='divinity-original-sin-1_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='8f01ea213b7b2c966ce3c065333f5406' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/divinity-original-sin-1/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256 512x512' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libbink2.so libCoreLib.so libGameEngine.so libGLEW.so.1.10 libGLEW.so.1.10.0 libicudata.so.54 libicuuc.so.54 libjpeg.so.8 libjpeg.so.8.0.2 libOGLBinding.so libosiris.so.2 libpcre.so.3 libpcre.so.3.13.1 libRenderFramework.so' ## The game binary is linked against libsteam_api.so, so this library can not be dropped. CONTENT_LIBS0_BIN_FILES=' libsteam_api.so' CONTENT_GAME_BIN_FILES=' EoCApp' CONTENT_GAME_L10N_EN_FILES=' Data/Localization/English.pak' CONTENT_GAME_L10N_FR_FILES=' Data/Localization/French.pak' CONTENT_GAME_DATA_VOICES_FILES=' Data/Localization/Voice.pak Data/Localization/Voice_1.pak Data/Localization/Voice_2.pak Data/Localization/Voice_3.pak Data/Localization/Voice_4.pak' CONTENT_GAME_DATA_FILES=' DigitalMap Data/Localization/Intro.pak Data/Localization/Reference.pak Data/Localization/Video.pak Data/DLC.pak Data/Effects.pak Data/Engine.pak Data/Game.pak Data/GamePlatform.pak Data/GLSLShaders.pak Data/Icons.pak Data/LowTex.pak Data/MainLSF.pak Data/Main.pak Data/Minimaps.pak Data/Sound_1.pak Data/SoundBanks.pak Data/Sound.pak Data/Textures_1.pak Data/Textures_2.pak Data/Textures.pak' FAKE_HOME_PERSISTENT_DIRECTORIES=' Larian Studios/Divinity Original Sin Enhanced Edition' APP_MAIN_EXE='EoCApp' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA_VOICES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc++abi.so.1 libc++.so.1 libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpng16.so.16 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' ## Easier upgrades from pre-20240516.2 packages PKG_BIN_PROVIDES=' divinity-original-sin' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_DESCRIPTION='English localisation' PKG_L10N_FR_DESCRIPTION='French localisation' ## Easier upgrades from pre-20240516.2 packages PKG_L10N_PROVIDES="$PKG_L10N_PROVIDES divinity-original-sin-l10n" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_VOICES' ## Easier upgrades from pre-20240516.2 packages PKG_DATA_PROVIDES=' divinity-original-sin-data' PKG_DATA_VOICES_ID="${PKG_DATA_ID}-voices" PKG_DATA_VOICES_DESCRIPTION="$PKG_DATA_DESCRIPTION - voices" ## Easier upgrades from pre-20240516.2 packages PKG_DATA_VOICES_PROVIDES=' divinity-original-sin-data-voices' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Generate the configuration of localization packages. config_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/Data/Localization/language.lsx" config_pattern='id="Value" value="[A-Za-z]*" type="20"' mkdir --parents \ "$(package_path 'PKG_L10N_EN')$(path_game_data)/Data/Localization" \ "$(package_path 'PKG_L10N_FR')$(path_game_data)/Data/Localization" ## English localization config_replacement_en='id="Value" value="English" type="20"' sed --expression="s/${config_pattern}/${config_replacement_en}/" \ "$config_source" > "$(package_path 'PKG_L10N_EN')$(path_game_data)/Data/Localization/language.lsx" ## French localization config_replacement_fr='id="Value" value="French" type="20"' sed --expression="s/${config_pattern}/${config_replacement_fr}/" \ "$config_source" > "$(package_path 'PKG_L10N_FR')$(path_game_data)/Data/Localization/language.lsx" # Include game data. content_inclusion_icons content_inclusion_default # Work around the binary link against libSDL2-2.0.so.1. ln --symbolic \ "$(path_libraries_system)/libSDL2-2.0.so.0" \ "$(package_path 'PKG_BIN')$(path_libraries)/libSDL2-2.0.so.1" # Write launchers. ## Force the use of system-provided SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" PKG_BIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list 'PKG_BIN') libSDL2-2.0.so.0" ## Prevent a game crash when using the Wayland video backend of SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Prevent a game crash when using the Wayland video backend of SDL. if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_DATA_VOICES' 'PKG_DATA' 'PKG_L10N_EN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA_VOICES' 'PKG_DATA' 'PKG_L10N_FR' # Clean up. working_directory_cleanup exit 0 games/play-divinity-original-sin-2.sh0000755000000000000000000003044514471751340016555 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Divinity: Original Sin 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250602.10 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='divinity-original-sin-2' GAME_NAME='Divinity: Original Sin 2' GAME_ID_CLASSIC='divinity-original-sin-2-classic' GAME_NAME_CLASSIC='Divinity: Original Sin 2 (classic)' ARCHIVE_BASE_0_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811).exe' ARCHIVE_BASE_0_MD5='bfb4abc5041d7cefd74931f97cfba847' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert file paths to lowercase, as it prevents some textures from being loaded. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-1.bin' ARCHIVE_BASE_0_PART1_MD5='540a4f6433cfc4db5e7e2a9d225ceb66' ARCHIVE_BASE_0_PART2_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-2.bin' ARCHIVE_BASE_0_PART2_MD5='e6a3d1c21b8df032544b56ca9fe36c5a' ARCHIVE_BASE_0_PART3_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-3.bin' ARCHIVE_BASE_0_PART3_MD5='5548e2c4e1a83a4856af5e713afcd4d8' ARCHIVE_BASE_0_PART4_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-4.bin' ARCHIVE_BASE_0_PART4_MD5='04dd17ab5af1cd4dc1c8d06afd23ca6a' ARCHIVE_BASE_0_PART5_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-5.bin' ARCHIVE_BASE_0_PART5_MD5='4902d66b7e69d575a1ade4e20fb36381' ARCHIVE_BASE_0_PART6_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-6.bin' ARCHIVE_BASE_0_PART6_MD5='ea7452ece6e4652c97f2f552c711b184' ARCHIVE_BASE_0_PART7_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-7.bin' ARCHIVE_BASE_0_PART7_MD5='f9c8f89d3d2216da07eccf517b5ce406' ARCHIVE_BASE_0_PART8_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-8.bin' ARCHIVE_BASE_0_PART8_MD5='55f514d93f39bbf77f70c45f4ef532bb' ARCHIVE_BASE_0_PART9_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-9.bin' ARCHIVE_BASE_0_PART9_MD5='59f6aa38beaf00f738c5b96ff62f3459' ARCHIVE_BASE_0_PART10_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-10.bin' ARCHIVE_BASE_0_PART10_MD5='e5db62f0e3fe46abbbd9f289f6e5fe6a' ARCHIVE_BASE_0_PART11_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-11.bin' ARCHIVE_BASE_0_PART11_MD5='84b8f9a8595133d51e1572bd7bacfcb1' ARCHIVE_BASE_0_PART12_NAME='setup_divinity_original_sin_2_-_definitive_edition_3.6.117.3735_ptbr_(58811)-12.bin' ARCHIVE_BASE_0_PART12_MD5='60b7bdd7b74ed067588f209498688d42' ARCHIVE_BASE_0_SIZE='62080538' ARCHIVE_BASE_0_VERSION='3.6.117.3735-gog58811' ## Definitive Edition CONTENT_PATH_DEFAULT='DefEd' CONTENT_GAME_BIN_FILES=' bin' CONTENT_GAME_L10N_EN_FILES=' data/localization/english.pak' CONTENT_GAME_L10N_FR_FILES=' data/localization/french' CONTENT_GAME_DATA_SOUNDS_FILES=' data/sharedsound*.pak data/localization/voice*.pak' CONTENT_GAME_DATA_VIDEOS_FILES=' data/localization/video*.pak' CONTENT_GAME_DATA_TEXTURES_FILES=' data/textures*.pak' CONTENT_GAME_DATA_FILES=' data/arena.pak data/effects.pak data/engine.pak data/engineshaders.pak data/gamemaster.pak data/game.pak data/gameplatform.pak data/icons.pak data/lowtex.pak data/materials.pak data/minimaps.pak data/origins*.pak data/patch*.pak data/shared*.pak' ## Original build CONTENT_PATH_DEFAULT_CLASSIC='.' CONTENT_GAME_CLASSIC_BIN_FILES=' classic' CONTENT_GAME_CLASSIC_L10N_EN_FILES=' data/localization/english.pak' CONTENT_GAME_CLASSIC_L10N_FR_FILES=' data/localization/french.pak' CONTENT_GAME_CLASSIC_DATA_SOUNDS_FILES=' data/sound data/soundbanks.pak data/localization/voice*.pak' CONTENT_GAME_CLASSIC_DATA_VIDEOS_FILES=' data/localization/video*.pak' CONTENT_GAME_CLASSIC_DATA_TEXTURES_1_FILES=' data/textures.pak data/textures_[1-4].pak' CONTENT_GAME_CLASSIC_DATA_TEXTURES_2_FILES=' data/textures_[5-9].pak' CONTENT_GAME_CLASSIC_DATA_FILES=' data/arena.pak data/effects.pak data/engine.pak data/engineshaders.pak data/gamemaster.pak data/game.pak data/gameplatform.pak data/icons.pak data/lowtex.pak data/materials.pak data/minimaps.pak data/shareddos.pak data/squirrel.pak data/origins*.pak data/patch*.pak data/shared*.pak' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Larian Studios/Divinity Original Sin 2 Definitive Edition' WINE_PERSISTENT_DIRECTORIES_CLASSIC=' users/${USER}/Documents/Larian Studios/Divinity Original Sin 2' ## With wined3d, some textures are rendered as plain white. ## cf. https://bugs.winehq.org/show_bug.cgi?id=43812 ## (WINE 10.0) WINE_DIRECT3D_RENDERER='dxvk' APP_MAIN_EXE='bin/EoCApp.exe' APP_MAIN_EXE_CLASSIC='Classic/EoCApp.exe' ## The game fails to display its window when using the wayland backend of SDL. APP_MAIN_PRERUN=' # The game fails to display its window when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA_SOUNDS PKG_DATA_VIDEOS PKG_DATA_TEXTURES PKG_DATA PKG_CLASSIC_BIN PKG_CLASSIC_L10N_EN PKG_CLASSIC_L10N_FR PKG_CLASSIC_DATA_SOUNDS PKG_CLASSIC_DATA_VIDEOS PKG_CLASSIC_DATA_TEXTURES_1 PKG_CLASSIC_DATA_TEXTURES_2 PKG_CLASSIC_DATA' ## Definitive Edition PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_DESCRIPTION='localization' PKG_L10N_EN_DESCRIPTION="$PKG_L10N_DESCRIPTION - English" PKG_L10N_FR_DESCRIPTION="$PKG_L10N_DESCRIPTION - French" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SOUNDS PKG_DATA_VIDEOS PKG_DATA_TEXTURES' PKG_DATA_SOUNDS_ID="${PKG_DATA_ID}-sounds" PKG_DATA_SOUNDS_DESCRIPTION="$PKG_DATA_DESCRIPTION - sounds and voices" PKG_DATA_VIDEOS_ID="${PKG_DATA_ID}-videos" PKG_DATA_VIDEOS_DESCRIPTION="$PKG_DATA_DESCRIPTION - videos" PKG_DATA_TEXTURES_ID="${PKG_DATA_ID}-textures" PKG_DATA_TEXTURES_DESCRIPTION="$PKG_DATA_DESCRIPTION - textures" ## Original build PKG_CLASSIC_BIN_ARCH='64' PKG_CLASSIC_BIN_DEPENDENCIES_SIBLINGS=' PKG_CLASSIC_L10N PKG_CLASSIC_DATA' PKG_CLASSIC_L10N_ID="${GAME_ID_CLASSIC}-l10n" PKG_CLASSIC_L10N_EN_ID="${PKG_CLASSIC_L10N_ID}-en" PKG_CLASSIC_L10N_FR_ID="${PKG_CLASSIC_L10N_ID}-fr" PKG_CLASSIC_L10N_PROVIDES=" $PKG_CLASSIC_L10N_ID" PKG_CLASSIC_L10N_EN_PROVIDES="$PKG_CLASSIC_L10N_PROVIDES" PKG_CLASSIC_L10N_FR_PROVIDES="$PKG_CLASSIC_L10N_PROVIDES" PKG_CLASSIC_L10N_DESCRIPTION='localization' PKG_CLASSIC_L10N_EN_DESCRIPTION="$PKG_CLASSIC_L10N_DESCRIPTION - English" PKG_CLASSIC_L10N_FR_DESCRIPTION="$PKG_CLASSIC_L10N_DESCRIPTION - French" PKG_CLASSIC_DATA_ID="${GAME_ID_CLASSIC}-data" PKG_CLASSIC_DATA_DESCRIPTION='data' PKG_CLASSIC_DATA_DEPENDENCIES_SIBLINGS=' PKG_CLASSIC_DATA_SOUNDS PKG_CLASSIC_DATA_VIDEOS PKG_CLASSIC_DATA_TEXTURES_1 PKG_CLASSIC_DATA_TEXTURES_2' PKG_CLASSIC_DATA_SOUNDS_ID="${PKG_CLASSIC_DATA_ID}-sounds" PKG_CLASSIC_DATA_SOUNDS_DESCRIPTION="$PKG_CLASSIC_DATA_DESCRIPTION - sounds and voices" PKG_CLASSIC_DATA_VIDEOS_ID="${PKG_CLASSIC_DATA_ID}-videos" PKG_CLASSIC_DATA_VIDEOS_DESCRIPTION="$PKG_CLASSIC_DATA_DESCRIPTION - videos" PKG_CLASSIC_DATA_TEXTURES_ID="${PKG_CLASSIC_DATA_ID}-textures" PKG_CLASSIC_DATA_TEXTURES_1_ID="${PKG_CLASSIC_DATA_TEXTURES_ID}-1" PKG_CLASSIC_DATA_TEXTURES_2_ID="${PKG_CLASSIC_DATA_TEXTURES_ID}-2" PKG_CLASSIC_DATA_TEXTURES_DESCRIPTION="$PKG_CLASSIC_DATA_DESCRIPTION - textures" PKG_CLASSIC_DATA_TEXTURES_1_DESCRIPTION="$PKG_CLASSIC_DATA_TEXTURES_DESCRIPTION - 1" PKG_CLASSIC_DATA_TEXTURES_2_DESCRIPTION="$PKG_CLASSIC_DATA_TEXTURES_DESCRIPTION - 2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Definitive Edition - Generate the configuration of localization packages. config_source='Data/Localization/language.lsx' config_pattern='id="Value" value="[A-Za-z]*" type="20"' ## English localization config_destination_en="$(package_path 'PKG_L10N_EN')$(path_game_data)/${config_source}" config_replacement_en='id="Value" value="English" type="20"' mkdir --parents "$(dirname "$config_destination_en")" sed --expression="s/${config_pattern}/${config_replacement_en}/" \ "$config_source" > "$config_destination_en" ## French localization config_destination_fr="$(package_path 'PKG_L10N_FR')$(path_game_data)/${config_source}" config_replacement_fr='id="Value" value="French" type="20"' mkdir --parents "$(dirname "$config_destination_fr")" sed --expression="s/${config_pattern}/${config_replacement_fr}/" \ "$config_source" > "$config_destination_fr" ) ( cd "${PLAYIT_WORKDIR}/gamedata/$( set_current_package 'PKG_CLASSIC_BIN' content_path_default )" # Original build - Generate the configuration of localization packages. config_source='Data/Localization/language.lsx' config_pattern='id="Value" value="[A-Za-z]*" type="20"' ## English localization config_destination_en="$(package_path 'PKG_CLASSIC_L10N_EN')$(set_current_package 'PKG_CLASSIC_L10N_EN';path_game_data)/${config_source}" config_replacement_en='id="Value" value="English" type="20"' mkdir --parents "$(dirname "$config_destination_en")" sed --expression="s/${config_pattern}/${config_replacement_en}/" \ "$config_source" > "$config_destination_en" ## French localization config_destination_fr="$(package_path 'PKG_CLASSIC_L10N_FR')$(set_current_package 'PKG_CLASSIC_L10N_FR';path_game_data)/${config_source}" config_replacement_fr='id="Value" value="French" type="20"' mkdir --parents "$(dirname "$config_destination_fr")" sed --expression="s/${config_pattern}/${config_replacement_fr}/" \ "$config_source" > "$config_destination_fr" ) # Include game data content_inclusion_icons 'PKG_DATA' ## Work around icons_inclusion_single_application incomplete support for package context. ( set_current_package 'PKG_CLASSIC_DATA' content_inclusion_icons 'PKG_CLASSIC_DATA' ) ## Work around content_inclusion incomplete support for package context. for package in $(packages_list); do ( set_current_package "$package" content_inclusion_default_game_data "$package" ) done # Write launchers launchers_generation 'PKG_BIN' launchers_generation 'PKG_CLASSIC_BIN' # Build packages packages_generation case "$(messages_language)" in ('fr') lang_string='Definitive Edition - version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='Definitive Edition - %s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions \ 'PKG_BIN' \ 'PKG_DATA' 'PKG_DATA_SOUNDS' 'PKG_DATA_VIDEOS' 'PKG_DATA_TEXTURES' \ 'PKG_L10N_EN' printf "$lang_string" "$lang_fr" print_instructions \ 'PKG_BIN' \ 'PKG_DATA' 'PKG_DATA_SOUNDS' 'PKG_DATA_VIDEOS' 'PKG_DATA_TEXTURES' \ 'PKG_L10N_FR' case "$(messages_language)" in ('fr') lang_string='Version originale - version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='Original build - %s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions \ 'PKG_CLASSIC_BIN' \ 'PKG_CLASSIC_DATA' 'PKG_CLASSIC_DATA_SOUNDS' 'PKG_CLASSIC_DATA_VIDEOS' 'PKG_CLASSIC_DATA_TEXTURES_1' 'PKG_CLASSIC_DATA_TEXTURES_2' \ 'PKG_CLASSIC_L10N_EN' printf "$lang_string" "$lang_fr" print_instructions \ 'PKG_CLASSIC_BIN' \ 'PKG_CLASSIC_DATA' 'PKG_CLASSIC_DATA_SOUNDS' 'PKG_CLASSIC_DATA_VIDEOS' 'PKG_CLASSIC_DATA_TEXTURES_1' 'PKG_CLASSIC_DATA_TEXTURES_2' \ 'PKG_CLASSIC_L10N_FR' # Clean up working_directory_cleanup exit 0 games/play-dragon-age-origins.sh0000755000000000000000000002505714471751340015645 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Dragon Age: Origins # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.3 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=dragon-age-origins GAME_NAME='Dragon Age: Origins' ARCHIVE_BASE_2_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205).exe' ARCHIVE_BASE_2_MD5=18e2e1f3fba4184ca15d6170d0a2ce51 ARCHIVE_BASE_2_TYPE=innosetup ARCHIVE_BASE_2_PART1_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205)-1.bin' ARCHIVE_BASE_2_PART1_MD5=0735b7a919fe9b1a7e7d31cfea156ee5 ARCHIVE_BASE_2_PART2_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205)-2.bin' ARCHIVE_BASE_2_PART2_MD5=c7f59542be194793d3f1664b2b079d64 ARCHIVE_BASE_2_PART3_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205)-3.bin' ARCHIVE_BASE_2_PART3_MD5=87ef8829f56c5b985b7f3eb1893249de ARCHIVE_BASE_2_PART4_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205)-4.bin' ARCHIVE_BASE_2_PART4_MD5=04f49cccc87d268fef2a7a4cafce27e8 ARCHIVE_BASE_2_PART5_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205)-5.bin' ARCHIVE_BASE_2_PART5_MD5=e44d862bd7221d065be30cd80de4d568 ARCHIVE_BASE_2_PART6_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.8_(78205)-6.bin' ARCHIVE_BASE_2_PART6_MD5=e97793771570a38174e202704297fe37 ARCHIVE_BASE_2_SIZE=38342773 ARCHIVE_BASE_2_VERSION=1.05-3 ARCHIVE_BASE_1_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885).exe' ARCHIVE_BASE_1_MD5=fa14b944ca5ce04e462afe61e932f1b0 ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_PART1_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885)-1.bin' ARCHIVE_BASE_1_PART1_MD5=910ff0ff7db44dd44c9b7fbc01439226 ARCHIVE_BASE_1_PART2_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885)-2.bin' ARCHIVE_BASE_1_PART2_MD5=317484fbbe084fdfac86af933a3827d3 ARCHIVE_BASE_1_PART3_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885)-3.bin' ARCHIVE_BASE_1_PART3_MD5=c7a236056afe1e24070e747760cab8d9 ARCHIVE_BASE_1_PART4_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885)-4.bin' ARCHIVE_BASE_1_PART4_MD5=0b08303e31e29708cc679d92b5b9c607 ARCHIVE_BASE_1_PART5_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885)-5.bin' ARCHIVE_BASE_1_PART5_MD5=dead382df73a84c02ee54a5b34050fcc ARCHIVE_BASE_1_PART6_NAME='setup_dragon_age_origins_-_ultimate_edition_1.05_gog_0.5_(76885)-6.bin' ARCHIVE_BASE_1_PART6_MD5=9c94a20453a52d5284c89aa4507949e0 ARCHIVE_BASE_1_SIZE=38343327 ARCHIVE_BASE_1_VERSION=1.05-2 ARCHIVE_BASE_0_NAME='setup_dragon_age_origins_ultimate_2.1.0.4.exe' ARCHIVE_BASE_0_MD5=2bfdbc94523ef4c21476f64ef8029479 ARCHIVE_BASE_0_EXTRACTOR=innoextract ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_0_PART1_NAME='setup_dragon_age_origins_ultimate_2.1.0.4-1.bin' ARCHIVE_BASE_0_PART1_MD5=b6e68b1b3b11fdddea809a5f11368036 ARCHIVE_BASE_0_PART1_EXTRACTOR=unar ARCHIVE_BASE_0_PART2_NAME='setup_dragon_age_origins_ultimate_2.1.0.4-2.bin' ARCHIVE_BASE_0_PART2_MD5=71d813d6827941a90422a40088d64b78 ARCHIVE_BASE_0_PART3_NAME='setup_dragon_age_origins_ultimate_2.1.0.4-3.bin' ARCHIVE_BASE_0_PART3_MD5=2ff9cc2bb41435429ee6277106a6a568 ARCHIVE_BASE_0_PART4_NAME='setup_dragon_age_origins_ultimate_2.1.0.4-4.bin' ARCHIVE_BASE_0_PART4_MD5=a25c58b43a2e468fcf72446f57542115 ARCHIVE_BASE_0_PART5_NAME='setup_dragon_age_origins_ultimate_2.1.0.4-5.bin' ARCHIVE_BASE_0_PART5_MD5=4ce5f6dceb01c9a1fc85c759c436b7b2 ARCHIVE_BASE_0_PART6_NAME='setup_dragon_age_origins_ultimate_2.1.0.4-6.bin' ARCHIVE_BASE_0_PART6_MD5=e2d13b236af30f210e0eb65aec5d137e ARCHIVE_BASE_0_SIZE=39000000 ARCHIVE_BASE_0_VERSION=1.05-1 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='game' # TODO: Move Awakening expansion to a dedicated package. CONTENT_GAME_MAIN_FILES=' bin_ship/DAOrigins.exe bin_ship/DAOriginsConfig.exe data modules Offers packages' # TODO: Is the launcher binary required? CONTENT_GAME0_MAIN_FILES=' DAOriginsLauncher.exe' # TODO: Are the updater binaries required? CONTENT_GAME1_MAIN_FILES=' bin_ship/DAUpdater.exe bin_ship/DAUpdaterSvc.Service.exe' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME2_MAIN_FILES=' bin_ship/binkw32.dll bin_ship/DAOriginsGDF.dll bin_ship/fmod_event.dll bin_ship/fmodex.dll bin_ship/icsharpcode.sharpziplib.dll bin_ship/msvcp71.dll bin_ship/msvcr71.dll bin_ship/nxcharacter.dll bin_ship/nxcooking.dll bin_ship/speedtreert.dll bin_ship/umbra.dll bin_ship/unrar.dll' # TODO: Is the updater library required? CONTENT_GAME3_MAIN_FILES=' bin_ship/DAUpdater.Engine.dll' CONTENT_GAME_L10N_FR_FILES=' Offers/*/audio/vo/fr-fr packages/*/audio/vo/fr-fr modules/*/audio/vo/fr-fr modules/*/locale/fr-fr' CONTENT_GAME_L10N_EN_FILES=' Offers/*/audio/vo/en-us packages/*/audio/vo/en-us modules/*/audio/vo/en-us modules/*/locale/en-us' CONTENT_GAME0_L10N_FR_FILES=' Offers/*/talktables/*_fr-fr*.tlk packages/*/talktables/*_fr-fr*.tlk modules/*/talktables/*_fr-fr*.tlk' CONTENT_GAME0_L10N_EN_FILES=' Offers/*/talktables/*_en-us*.tlk packages/*/talktables/*_en-us*.tlk modules/*/talktables/*_en-us*.tlk' CONTENT_GAME_ADDONS_FILES=' Addins/*/core/data Addins/*/core/env Addins/*/core/override Addins/*/core/textures Addins/*/module/data/coreep1 Addins/*/module/env Addins/*/module/patch' CONTENT_GAME0_ADDONS_FILES=' Addins/*/module/audio/sound Addins/*/talktables/*_pseudo*.tlk' CONTENT_GAME_ADDONS_L10N_FR_FILES=' Addins/*/module/audio/vo/fr-fr Addins/*/talktables/*_fr-fr*.tlk' CONTENT_GAME_ADDONS_L10N_EN_FILES=' Addins/*/module/audio/vo/en-us Addins/*/talktables/*_en-us*.tlk' CONTENT_DOC_MAIN_FILES=' manual.pdf' # TODO: This should be split into localisation packages. CONTENT_DOC0_MAIN_RELATIVE_PATH='docs' CONTENT_DOC0_MAIN_FILES=' *.rtf *.txt' CONTENT_SETTINGS_RELATIVE_PATH='__support/userdocs' CONTENT_SETTINGS_RELATIVE_PATH_0='../userdocs/bioware/dragon age/settings' CONTENT_SETTINGS_FILES=' Addins.xml' CONTENT_PHYSX_RELATIVE_PATH='redist' CONTENT_PHYSX_FILES=' PhysX_9.09.0408_SystemSoftware.exe' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/BioWare/Dragon Age' APP_MAIN_EXE='bin_ship/DAOrigins.exe' APP_CONFIG_ID=${GAME_ID}-config APP_CONFIG_NAME="$GAME_NAME - Configuration" APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='bin_ship/DAOriginsConfig.exe' # TODO: Improve files lists so PKG_MAIN can be set first. PACKAGES_LIST=' PKG_L10N_FR PKG_L10N_EN PKG_MAIN PKG_ADDONS PKG_ADDONS_L10N_FR PKG_ADDONS_L10N_EN' PKG_MAIN_ARCH=32 PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N' # Easier upgrades from pre-20260709.1 packages PKG_MAIN_PROVIDES=' dragon-age-origins-data dragon-age-origins-environment dragon-age-origins-movies' PKG_L10N_ID=${GAME_ID}-l10n PKG_L10N_FR_ID=${PKG_L10N_ID}-fr PKG_L10N_EN_ID=${PKG_L10N_ID}-en PKG_L10N_PROVIDES=$PKG_L10N_ID PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_EN_DESCRIPTION='English localisation' # Easier upgrades from pre-20260708.1 packages PKG_L10N_PROVIDES="$PKG_L10N_PROVIDES dragon-age-origins-l10n-text dragon-age-origins-l10n-voices" PKG_L10N_FR_PROVIDES=$PKG_L10N_PROVIDES PKG_L10N_EN_PROVIDES=$PKG_L10N_PROVIDES PKG_ADDONS_ID=${GAME_ID}-addons PKG_ADDONS_DESCRIPTION='Add-on content' PKG_ADDONS_DEPENDENCIES_SIBLINGS=' PKG_MAIN PKG_ADDONS_L10N' PKG_ADDONS_L10N_ID=${PKG_ADDONS_ID}-l10n PKG_ADDONS_L10N_FR_ID=${PKG_ADDONS_L10N_ID}-fr PKG_ADDONS_L10N_EN_ID=${PKG_ADDONS_L10N_ID}-en PKG_ADDONS_L10N_PROVIDES=$PKG_ADDONS_L10N_ID PKG_ADDONS_L10N_FR_PROVIDES=$PKG_ADDONS_L10N_PROVIDES PKG_ADDONS_L10N_EN_PROVIDES=$PKG_ADDONS_L10N_PROVIDES PKG_ADDONS_L10N_FR_DESCRIPTION="${PKG_ADDONS_DESCRIPTION} - French localisation" PKG_ADDONS_L10N_EN_DESCRIPTION="${PKG_ADDONS_DESCRIPTION} - English localisation" PKG_ADDONS_L10N_FR_DEPENDENCIES_SIBLINGS=' PKG_L10N_FR' PKG_ADDONS_L10N_EN_DEPENDENCIES_SIBLINGS=' PKG_L10N_EN' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" set_default_package 'PKG_MAIN' # Extract game data. archive_extraction_default # Drop extra localisations. path_archive_contents=$(path_archive_contents) find "${path_archive_contents}" \( \ -name cs-cz -o \ -name de-de -o \ -name es-es -o \ -name hu-hu -o \ -name it-it -o \ -name pl-pl -o \ -name ru-ru \ \) -exec rm --recursive {} + find "${path_archive_contents}" \( \ -name \*cs-cz.tlk -o \ -name \*cs-cz_f.tlk -o \ -name \*de-de.tlk -o \ -name \*de-de_f.tlk -o \ -name \*es-es.tlk -o \ -name \*es-es_f.tlk -o \ -name \*hu-hu.tlk -o \ -name \*hu-hu_f.tlk -o \ -name \*it-it.tlk -o \ -name \*it-it_f.tlk -o \ -name \*pl-pl.tlk -o \ -name \*pl-pl_f.tlk -o \ -name \*ru-ru.tlk -o \ -name \*ru-ru_f.tlk \ \) -delete find "${path_archive_contents}" -type d -empty -delete # Include game data. content_inclusion_icons content_inclusion SETTINGS PKG_MAIN "$(path_game_data)/settings" content_inclusion PHYSX PKG_MAIN "$(path_game_data)/physx" content_inclusion_default # Write launchers. # - Include shipped settings, to unlock expansions. # - Install shipped build of PhysX. wineprefix_init_custom() { cat <<- 'EOF' # Include shipped settings, to unlock expansions. settings_path="${PATH_PERSISTENT}/wineprefix/users/${USER}/Documents/BioWare/Dragon Age/Settings" if [ ! -e "$settings_path" ]; then mkdir --parents "$(dirname "$settings_path")" cp --recursive "${PATH_GAME_DATA}/settings" "$settings_path" fi EOF cat <<- EOF # Install shipped build of PhysX. ( # env --chdir does not work here, it leads to the following error: # Corrupt installation detected. cd "\${WINEPREFIX}/drive_c/${GAME_ID}" "\$(wine_command)" 'physx/PhysX_9.09.0408_SystemSoftware.exe' ) EOF } launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_fr='française' lang_en='anglaise' ;; ('en'|*) lang_string='%s version:' lang_fr='French' lang_en='English' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions PKG_MAIN PKG_L10N_FR PKG_ADDONS PKG_ADDONS_L10N_FR printf "$lang_string" "$lang_en" print_instructions PKG_MAIN PKG_L10N_EN PKG_ADDONS PKG_ADDONS_L10N_EN # Clean up. working_directory_cleanup exit 0 games/play-dust-an-elysian-tail.sh0000755000000000000000000000551214471751340016127 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dust: An Elysian Tail # send your bug reports to bugs@dotslashplay.it ### script_version=20250424.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='dust-an-elysian-tail' GAME_NAME='Dust: An Elysian Tail' ARCHIVE_BASE_GOG_0_NAME='gog_dust_an_elysian_tail_2.0.0.1.sh' ARCHIVE_BASE_GOG_0_MD5='57299e2e4af0283e68a7aa5e8b390697' ARCHIVE_BASE_GOG_0_SIZE='1500000' ARCHIVE_BASE_GOG_0_VERSION='1.04-gog2.0.0.1' ARCHIVE_BASE_HUMBLE_0_NAME='dustaet_05042016-bin' ARCHIVE_BASE_HUMBLE_0_MD5='6844c82f233b47417620be0bef8b140c' ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='1500000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.04-humble160504' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/dust-an-elysian-tail' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_LIBS_FILES=' libmojoshader.so libtheoraplay.so' CONTENT_GAME_LIBS64_RELATIVE_PATH='lib64' CONTENT_GAME_LIBS64_FILES="$CONTENT_GAME_LIBS_FILES" CONTENT_GAME_LIBS32_RELATIVE_PATH='lib' CONTENT_GAME_LIBS32_FILES="$CONTENT_GAME_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content data de es fr it ja DustAET.exe Dust An Elysian Tail.bmp monoconfig FNA.dll FNA.dll.config MonoGame.Framework.Net.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' APP_MAIN_EXE='DustAET.exe' APP_MAIN_ICON='Dust An Elysian Tail.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libopenal.so.1 libSDL2-2.0.so.0 libtheoradec.so.1 libvorbisfile.so.3' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers ## Disable language override mono_launcher_tweaks() { cat <<- 'EOF' ## Work around terminfo Mono bug, ## cf. https://github.com/mono/mono/issues/6752 export TERM="${TERM%-256color}" EOF } launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-earthlock.sh0000755000000000000000000000360114471751340014134 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Earthlock # send your bug reports to bugs@dotslashplay.it ### script_version=20260517.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='earthlock' GAME_NAME='Earthlock' ARCHIVE_BASE_0_NAME='setup_earthlock_1.1.0_(35125).exe' ARCHIVE_BASE_0_MD5='922c46185118046df2931fbd9e9d88c0' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_earthlock_1.1.0_(35125)-1.bin' ARCHIVE_BASE_0_PART1_MD5='4bc76160d2a6f1c097069f54a5009396' ARCHIVE_BASE_0_VERSION='1.1.0-gog35125' ARCHIVE_BASE_0_SIZE='4200000' UNITY3D_NAME='Earthlock' # TODO: Include an explicit list of Unity3D plugins. CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Snowcastle Games/Earthlock Enhanced Edition' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-eschalon-book-1.sh0000755000000000000000000000373314471751340015050 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Eschalon: Book 1 # send your bug reports to bugs@dotslashplay.it ### script_version=20250518.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='eschalon-book-1' GAME_NAME='Eschalon: Book I' ARCHIVE_BASE_0_NAME='gog_eschalon_book_i_2.0.0.5.sh' ARCHIVE_BASE_0_MD5='36588478c59f0fdabf775415eeaf7c6a' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.06-gog2.0.0.5' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Eschalon Book I' CONTENT_GAME_DATA_FILES=' data music sound gfx.pak' CONTENT_DOC_FILES=' license_full.txt' APP_MAIN_EXE='Eschalon Book I' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6 libX11.so.6 libXxf86vm.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-everspace.sh0000755000000000000000000000743314471751340014144 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Everspace # send your bug reports to bugs@dotslashplay.it ### script_version=20260708.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=everspace GAME_NAME='Everspace' ARCHIVE_BASE_3_NAME='everspace_1_3_5_3655_32896.sh' ARCHIVE_BASE_3_MD5=55c9230b3805c54d13371f940860d4a9 ARCHIVE_BASE_3_SIZE=10280299 ARCHIVE_BASE_3_VERSION=1.3.5-1 ARCHIVE_BASE_2_NAME='everspace_1_3_4_29339.sh' ARCHIVE_BASE_2_MD5=2010b839534fb5a265eea6116b9193ae ARCHIVE_BASE_2_SIZE=11000000 ARCHIVE_BASE_2_VERSION=1.3.4-1 ARCHIVE_BASE_1_NAME='everspace_1_3_3_25886.sh' ARCHIVE_BASE_1_MD5=df8f210059a515ef738f247bfcd61bb2 ARCHIVE_BASE_1_SIZE=11000000 ARCHIVE_BASE_1_VERSION=1.3.3-1 ARCHIVE_BASE_0_NAME='everspace_en_1_3_2_3_22978.sh' ARCHIVE_BASE_0_MD5=4290b47c1396f140198f45a74bf53abf ARCHIVE_BASE_0_SIZE=11000000 ARCHIVE_BASE_0_VERSION=1.3.2.3-1 UNREALENGINE4_NAME='RSG' CONTENT_PATH_DEFAULT='data/noarch/game' # RSG-Linux-Shipping requirement CONTENT_LIBS_BIN_RELATIVE_PATH='Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_7/linux64' CONTENT_LIBS_BIN_FILES=' libopenvr_api.so' # TODO: Why not a regular symlinks prefix? APPLICATIONS_PREFIX_TYPE=none APP_MAIN_EXE="${UNREALENGINE4_NAME}/Binaries/Linux/${UNREALENGINE4_NAME}-Linux-Shipping" APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1' # libopenvr_api.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 libstdc++.so.6" PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Drop shipped VLC libraries. rm --recursive "$(path_archive_contents)/$(unrealengine4_name)/Plugins" # Integrate with system-provided VLC libraries. libraries_source=$(path_libraries_system) libraries_destination=$(package_path PKG_BIN)$(path_game_data)/$(unrealengine4_name)/Plugins/VlcMedia/ThirdParty/vlc/Linux/x86_64-unknown-linux-gnu mkdir --parents "$libraries_destination" ln --symbolic "${libraries_source}/libvlc.so.5" "${libraries_destination}/libvlc.so" ln --symbolic "${libraries_source}/libvlccore.so.9" "${libraries_destination}/libvlccore.so" PKG_BIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_BIN) libvlc.so.5 libvlccore.so.9" # This Pulseaudio library is a shorthand for VLC base plugins. PKG_BIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_BIN) libvlc_pulse.so" # Include game data. content_inclusion_icons # Prevent inclusion of unwanted libraries. content_inclusion_default_libraries PKG_BIN rm --recursive "$(path_archive_contents)/Engine" content_inclusion_default # Write launchers. # Prevent a segmentation fault when using the wayland backend of SDL. # Using the system-provided SDL library is not an option, as it leads to a segmentation fault too. # TODO: Paste a copy of the segfault trace here. APP_MAIN_PRERUN="$(application_prerun APP_MAIN) $(launcher_tweak_sdl_force_x11)" launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-evoland-series.sh0000755000000000000000000001050314471751340015077 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Evoland series: # - Evoland # - Evoland 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250828.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID_EVOLAND1='evoland-1' GAME_NAME_EVOLAND1='Evoland' GAME_ID_EVOLAND2='evoland-2' GAME_NAME_EVOLAND2='Evoland 2, A Slight Case of Spacetime Continuum Disorder' ARCHIVE_BASE_EVOLAND1_GOG_0_NAME='setup_evoland_1.1.2490_(20677).exe' ARCHIVE_BASE_EVOLAND1_GOG_0_MD5='97978ef959d097876142ae2c6ce765c2' ARCHIVE_BASE_EVOLAND1_GOG_0_TYPE='innosetup' ARCHIVE_BASE_EVOLAND1_GOG_0_SIZE='120000' ARCHIVE_BASE_EVOLAND1_GOG_0_VERSION='1.1.2490-gog20677' ## This DRM-free native Linux build is no longer available for sale from the Humble Store, ## they now only sell Steam keys for the Evoland "Legendary Edition" bundle. ARCHIVE_BASE_EVOLAND1_HUMBLE_0_NAME='Evoland.exe' ARCHIVE_BASE_EVOLAND1_HUMBLE_0_MD5='9585142f38d769d4ac9125f587d0c891' ARCHIVE_BASE_EVOLAND1_HUMBLE_0_TYPE='nullsoft-installer' ARCHIVE_BASE_EVOLAND1_HUMBLE_0_SIZE='110000' ARCHIVE_BASE_EVOLAND1_HUMBLE_0_VERSION='1.1.2490-humble1' ARCHIVE_BASE_EVOLAND2_GOG_0_NAME='setup_evoland_2_1.0.9137_(20679).exe' ARCHIVE_BASE_EVOLAND2_GOG_0_MD5='a77db6e435460505bbc6beb1c4fcd5ed' ARCHIVE_BASE_EVOLAND2_GOG_0_TYPE='innosetup' ARCHIVE_BASE_EVOLAND2_GOG_0_SIZE='789305' ARCHIVE_BASE_EVOLAND2_GOG_0_VERSION='1.0.9137-gog20679' ## This DRM-free native Linux build is no longer available for sale from the Humble Store, ## they now only sell Steam keys for the Evoland "Legendary Edition" bundle. ARCHIVE_BASE_EVOLAND2_HUMBLE_0_NAME='Evoland2.zip' ARCHIVE_BASE_EVOLAND2_HUMBLE_0_MD5='0e34269cb7db3a6c065311eea90e651a' ARCHIVE_BASE_EVOLAND2_HUMBLE_0_SIZE='790000' ARCHIVE_BASE_EVOLAND2_HUMBLE_0_VERSION='1.0.9137-humble170116' CONTENT_PATH_DEFAULT_EVOLAND1='.' CONTENT_PATH_DEFAULT_EVOLAND2_GOG='.' CONTENT_PATH_DEFAULT_EVOLAND2_HUMBLE='Evoland2' CONTENT_GAME_BIN_FILES=' adobe air dinput8.dll evoland.exe evoland2.exe pad.exe gamepadconfig.txt' CONTENT_GAME_DATA_FILES=' icons meta-inf mimetype game.dat res.pak' WINE_PERSISTENT_DIRECTORIES_EVOLAND1=' users/${USER}/AppData/Roaming/com.shirogames.evoland' USER_PERSISTENT_DIRECTORIES_EVOLAND2=' save' APP_MAIN_EXE_EVOLAND1='evoland.exe' APP_MAIN_EXE_EVOLAND2='evoland2.exe' APP_MAIN_ICONS_LIST=' APP_MAIN_ICON_16 APP_MAIN_ICON_32 APP_MAIN_ICON_48 APP_MAIN_ICON_128' APP_MAIN_ICON_16='icons/evoicon16.png' APP_MAIN_ICON_32='icons/evoicon32.png' APP_MAIN_ICON_48='icons/evoicon48.png' APP_MAIN_ICON_128='icons/evoicon128.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## Easier upgrades from pre-20201219.1 packages PKG_BIN_PROVIDES_EVOLAND1='${PKG_BIN_PROVIDES_EVOLAND1:-} evoland' PKG_DATA_ID_EVOLAND1="${GAME_ID_EVOLAND1}-data" PKG_DATA_ID_EVOLAND2="${GAME_ID_EVOLAND2}-data" PKG_DATA_DESCRIPTION='data' ## Easier upgrades from pre-20201219.1 packages PKG_DATA_PROVIDES_EVOLAND1=' evoland-data' ## Humble Bundle builds - convmv is used to convert file paths to lower case. REQUIREMENTS_LIST_EVOLAND1_HUMBLE=' convmv' REQUIREMENTS_LIST_EVOLAND2_HUMBLE=' convmv' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Humble Bundle builds - Convert all file paths to lower case. case "$(current_archive)" in ('ARCHIVE_BASE_EVOLAND1_HUMBLE_'*|'ARCHIVE_BASE_EVOLAND2_HUMBLE_'*) tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ;; esac # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-fallout-classics.sh0000755000000000000000000001572414471751340015441 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2021 dany_wilde set -o errexit ### # Fallout classic games: # - Fallout # - Fallout 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250424.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_FALLOUT1='fallout-1' GAME_NAME_FALLOUT1='Fallout' GAME_ID_FALLOUT2='fallout-2' GAME_NAME_FALLOUT2='Fallout 2' # Archives ## Fallout 1 ARCHIVE_BASE_FALLOUT1_EN_1_NAME='setup_fallout_1.2_(27130).exe' ARCHIVE_BASE_FALLOUT1_EN_1_MD5='2cd1bb09f241c286498ea834480852ec' ARCHIVE_BASE_FALLOUT1_EN_1_TYPE='innosetup' ARCHIVE_BASE_FALLOUT1_EN_1_PART1_NAME='setup_fallout_1.2_(27130)-1.bin' ARCHIVE_BASE_FALLOUT1_EN_1_PART1_MD5='b9a0a59bc1426df4cc9588fdd5a8d736' ARCHIVE_BASE_FALLOUT1_EN_1_SIZE='600000' ARCHIVE_BASE_FALLOUT1_EN_1_VERSION='1.2-gog27130' ARCHIVE_BASE_FALLOUT1_FR_1_NAME='setup_fallout_1.2_(french)_(27130).exe' ARCHIVE_BASE_FALLOUT1_FR_1_MD5='2c0d7a347a903bb52ed1d70305038e9c' ARCHIVE_BASE_FALLOUT1_FR_1_TYPE='innosetup' ARCHIVE_BASE_FALLOUT1_FR_1_PART1_NAME='setup_fallout_1.2_(french)_(27130)-1.bin' ARCHIVE_BASE_FALLOUT1_FR_1_PART1_MD5='7db5f755168b89cc38b6e090130b0e1a' ARCHIVE_BASE_FALLOUT1_FR_1_SIZE='600000' ARCHIVE_BASE_FALLOUT1_FR_1_VERSION='1.2-gog27130' ARCHIVE_BASE_FALLOUT1_EN_0_NAME='setup_fallout_2.1.0.18.exe' ARCHIVE_BASE_FALLOUT1_EN_0_MD5='47b7b3c059d92c0fd6db5881635277ea' ARCHIVE_BASE_FALLOUT1_EN_0_TYPE='innosetup' ARCHIVE_BASE_FALLOUT1_EN_0_SIZE='600000' ARCHIVE_BASE_FALLOUT1_EN_0_VERSION='1.2-gog2.1.0.18' ARCHIVE_BASE_FALLOUT1_FR_0_NAME='setup_fallout_french_2.1.0.18.exe' ARCHIVE_BASE_FALLOUT1_FR_0_MD5='12ba5bb0489b5bafb777c8d07717b020' ARCHIVE_BASE_FALLOUT1_FR_0_TYPE='innosetup' ARCHIVE_BASE_FALLOUT1_FR_0_SIZE='600000' ARCHIVE_BASE_FALLOUT1_FR_0_VERSION='1.2-gog2.1.0.18' ## Fallout 2 ARCHIVE_BASE_FALLOUT2_EN_1_NAME='setup_fallout2_2.1.0.18.exe' ARCHIVE_BASE_FALLOUT2_EN_1_MD5='b20e9a133c23bf308b8460272fd32d2b' ARCHIVE_BASE_FALLOUT2_EN_1_TYPE='innosetup' ARCHIVE_BASE_FALLOUT2_EN_1_SIZE='740000' ARCHIVE_BASE_FALLOUT2_EN_1_VERSION='1.3-gog2.1.0.18' ARCHIVE_BASE_FALLOUT2_EN_0_NAME='setup_fallout2_2.1.0.17.exe' ARCHIVE_BASE_FALLOUT2_EN_0_MD5='b40a8f2e1ff9216e25b8f09577c27f33' ARCHIVE_BASE_FALLOUT2_EN_0_TYPE='innosetup' ARCHIVE_BASE_FALLOUT2_EN_0_SIZE='740000' ARCHIVE_BASE_FALLOUT2_EN_0_VERSION='1.3-gog2.1.0.17' ARCHIVE_BASE_FALLOUT2_FR_0_NAME='setup_fallout2_french_2.1.0.17.exe' ARCHIVE_BASE_FALLOUT2_FR_0_MD5='7df6f834b480873bea2f8593254b1960' ARCHIVE_BASE_FALLOUT2_FR_0_TYPE='innosetup' ARCHIVE_BASE_FALLOUT2_FR_0_SIZE='740000' ARCHIVE_BASE_FALLOUT2_FR_0_VERSION='1.3-gog2.1.0.17' # Archives content ## Fallout 1 CONTENT_PATH_DEFAULT_FALLOUT1='.' CONTENT_PATH_DEFAULT_FALLOUT1_EN_0='app' CONTENT_PATH_DEFAULT_FALLOUT1_FR_0='app' CONTENT_GAME_BIN_FILES_FALLOUT1=' falloutw.exe f1_res.dll f1_res_config.exe' CONTENT_GAME_L10N_PATH_FALLOUT1='__support/app' CONTENT_GAME_L10N_PATH_FALLOUT1_EN_0='app' CONTENT_GAME_L10N_PATH_FALLOUT1_FR_0='app' CONTENT_GAME_L10N_FILES_FALLOUT1=' fallout.cfg f1_res.ini' CONTENT_GAME_DATA_FILES_FALLOUT1=' critter.dat master.dat data extras fallout.ico' CONTENT_DOC_L10N_FILES_FALLOUT1=' readme.txt manual.pdf' CONTENT_DOC_DATA_FILES_FALLOUT1=' refcard.pdf readme.rtf f1_res_readme.rtf' ## Fallout 2 CONTENT_PATH_DEFAULT_FALLOUT2='app' CONTENT_GAME_BIN_FILES_FALLOUT2=' fallout2.exe f2_res.dll f2_res_config.exe f2_res.ini' CONTENT_GAME_L10N_FILES_FALLOUT2=' critter.dat master.dat translations fallout2.cfg' CONTENT_GAME_DATA_FILES_FALLOUT2=' data extras fallout2.ico sound' CONTENT_DOC_L10N_FILES_FALLOUT2=' manual.pdf' CONTENT_DOC_DATA_FILES_FALLOUT2=' refcard.pdf readme.rtf f2_res_readme.rtf faq.txt licence.txt f2_res_change.log' # Launchers USER_PERSISTENT_FILES=' *.cfg *.ini' USER_PERSISTENT_DIRECTORIES=' data/savegame' ## Disable WINE csmt to avoid performance issues WINE_WINETRICKS_VERBS='csmt=off' APP_RES_CAT='Settings' ## Fallout 1 ## The resolution tweaking tool expects write access to the game binary. USER_PERSISTENT_FILES_FALLOUT1="${USER_PERSISTENT_FILES:-} falloutw.exe" APP_MAIN_EXE_FALLOUT1='falloutw.exe' APP_MAIN_ICON_FALLOUT1='fallout.ico' APP_RES_ID_FALLOUT1="${GAME_ID_FALLOUT1}-resolution" APP_RES_NAME_FALLOUT1="$GAME_NAME_FALLOUT1 - resolution" APP_RES_EXE_FALLOUT1='f1_res_config.exe' ## Fallout 2 ## The resolution tweaking tool expects write access to the game binary. USER_PERSISTENT_FILES_FALLOUT2="${USER_PERSISTENT_FILES:-} fallout2.exe" APP_MAIN_EXE_FALLOUT2='fallout2.exe' APP_MAIN_ICON_FALLOUT2='fallout2.ico' APP_RES_ID_FALLOUT2="${GAME_ID_FALLOUT2}-resolution" APP_RES_NAME_FALLOUT2="$GAME_NAME_FALLOUT2 - resolution" APP_RES_EXE_FALLOUT2='f2_res_config.exe' # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' ## Fallout 1 PKG_L10N_BASE_ID_FALLOUT1="${GAME_ID_FALLOUT1}-l10n" PKG_L10N_ID_FALLOUT1_EN="${PKG_L10N_BASE_ID_FALLOUT1}-en" PKG_L10N_ID_FALLOUT1_FR="${PKG_L10N_BASE_ID_FALLOUT1}-fr" PKG_L10N_PROVIDES_FALLOUT1=" $PKG_L10N_BASE_ID_FALLOUT1" PKG_DATA_ID_FALLOUT1="${GAME_ID_FALLOUT1}-data" ## Easier upgrade from packages generated with pre-20190116.1 scripts PKG_BIN_PROVIDES_FALLOUT1="${PKG_BIN_PROVIDES_FALLOUT1} fallout" PKG_L10N_PROVIDES_FALLOUT1="${PKG_L10N_PROVIDES_FALLOUT1} fallout-l10n" PKG_DATA_PROVIDES_FALLOUT1="${PKG_DATA_PROVIDES_FALLOUT1} fallout-data" ## Fallout 2 PKG_L10N_BASE_ID_FALLOUT2="${GAME_ID_FALLOUT2}-l10n" PKG_L10N_ID_FALLOUT2_EN="${PKG_L10N_BASE_ID_FALLOUT2}-en" PKG_L10N_ID_FALLOUT2_FR="${PKG_L10N_BASE_ID_FALLOUT2}-fr" PKG_L10N_PROVIDES_FALLOUT2=" $PKG_L10N_BASE_ID_FALLOUT2" PKG_DATA_ID_FALLOUT2="${GAME_ID_FALLOUT2}-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data ## Drop the easter egg icon icon_extract_png_from_ico() { local icon destinaton icon="$1" destination="$2" icon_convert_to_png "$icon" "$destination" rm --force \ "${destination}/fallout-4.png" \ "${destination}/fallout2-4.png" } content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-fallout-new-vegas.sh0000755000000000000000000002455014471751340015526 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Fallout: New Vegas # send your bug reports to bugs@dotslashplay.it ### script_version=20260708.4 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=fallout-new-vegas GAME_NAME='Fallout: New Vegas' ARCHIVE_BASE_EN_1_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(55068).exe' ARCHIVE_BASE_EN_1_MD5=' 54d7878228b86284d360e8672ce5e85c 2381656fd552e5b93c143336fedbc21d' ARCHIVE_BASE_EN_1_TYPE=innosetup ARCHIVE_BASE_EN_1_PART1_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(55068)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5=' 7ce668d5d084250b7ea445447b05d9b1 e0979d7e1d0145cd7bb6d1ad62419a17' ARCHIVE_BASE_EN_1_PART2_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(55068)-2.bin' ARCHIVE_BASE_EN_1_PART2_MD5=' 6d86a620514632e5d8c453e27e32dce1 730ae6ea0eb5d41773be6bb19bb15d57' ARCHIVE_BASE_EN_1_SIZE=9879738 ARCHIVE_BASE_EN_1_VERSION=1.4.0.525-2 ARCHIVE_BASE_FR_1_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(french)_(55068).exe' ARCHIVE_BASE_FR_1_MD5=' 301a3885d574a88ebbe8147ce8f28cd0 841d652c40c7c4bb54830ba768bf48a7' ARCHIVE_BASE_FR_1_TYPE=innosetup ARCHIVE_BASE_FR_1_PART1_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(french)_(55068)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5=' 58eb0e07dc5eb8c1f1bc78dbfa1f9cfb 054a674e5246f8b8c78c02f3ee2095dc' ARCHIVE_BASE_FR_1_PART2_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(french)_(55068)-2.bin' ARCHIVE_BASE_FR_1_PART2_MD5=' a3d4bbfd30d2d60389ed2d2b4b5aed07 e57e233aea17d8f4ee23bf90d0318a38' # TODO: Check the 3rd part integrity if it is available, skip it if it is missing. # Only one of the 55068 builds comes with 3 parts, the other only include 2. #ARCHIVE_BASE_FR_1_PART3_NAME='setup_fallout_new_vegas_1.4.0.525(a)_(french)_(55068)-3.bin' #ARCHIVE_BASE_FR_1_PART3_MD5=c2020bf115acc116204e43ca09a58ef0 ARCHIVE_BASE_FR_1_SIZE=9999844 ARCHIVE_BASE_FR_1_VERSION=1.4.0.525-2 ARCHIVE_BASE_EN_0_NAME='setup_fallout_new_vegas_1.4.0.525_(12010).exe' ARCHIVE_BASE_EN_0_MD5=be32894fe423302d299fa532e5641079 ARCHIVE_BASE_EN_0_TYPE=innosetup ARCHIVE_BASE_EN_0_PART1_NAME='setup_fallout_new_vegas_1.4.0.525_(12010)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5=245661b2e1435c530763ae281ccecd9f ARCHIVE_BASE_EN_0_PART2_NAME='setup_fallout_new_vegas_1.4.0.525_(12010)-2.bin' ARCHIVE_BASE_EN_0_PART2_MD5=705e7097b9c18836118c2e9eb42b19ed ARCHIVE_BASE_EN_0_SIZE=11000000 ARCHIVE_BASE_EN_0_VERSION=1.4.0.525-1 ARCHIVE_BASE_FR_0_NAME='setup_fallout_new_vegas_french_1.4.0.525_(12010).exe' ARCHIVE_BASE_FR_0_MD5=da79e8756efb16b211a76756cd8865b3 ARCHIVE_BASE_FR_0_TYPE=innosetup ARCHIVE_BASE_FR_0_PART1_NAME='setup_fallout_new_vegas_french_1.4.0.525_(12010)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5=245661b2e1435c530763ae281ccecd9f ARCHIVE_BASE_FR_0_PART2_NAME='setup_fallout_new_vegas_french_1.4.0.525_(12010)-2.bin' ARCHIVE_BASE_FR_0_PART2_MD5=e148a49b1bbcfa4b2662e45691ae606e ARCHIVE_BASE_FR_0_SIZE=11000000 ARCHIVE_BASE_FR_0_VERSION=1.4.0.525-1 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_MAIN_FILES=' FalloutNV.exe Geck.exe low.ini medium.ini high.ini VeryHigh.ini MainTitle.wav' CONTENT_GAME0_MAIN_FILES=' Data/Music Data/Shaders Data/Sound Data/Fallout - Meshes.bsa Data/Fallout - Misc.bsa Data/Fallout - Sound.bsa Data/Fallout - Textures2.bsa Data/Fallout - Textures.bsa Data/Update.bsa Data/FalloutNV_lang.esp' # TODO: Are the icons required? CONTENT_GAME2_MAIN_FILES=' FalloutNV.ico GECKicon.ico' # FalloutNV.exe requirements CONTENT_LIBS_MAIN_FILES=' binkw32.dll libvorbisfile.dll libvorbis.dll' # FalloutNVLauncher.exe requirements CONTENT_LIBS0_MAIN_FILES=' GalaxyWrp.dll Galaxy.dll' # Geck.exe requirements CONTENT_LIBS1_MAIN_FILES=' SSCE5432.dll' CONTENT_GAME_L10N_FILES=' FalloutNVLauncher.exe Fallout_default.ini Data/Credits.txt Data/CreditsWacky.txt Data/Fallout - Voices1.bsa Data/FalloutNV.esm' # TODO: Move movies to a dedicated package. CONTENT_GAME0_L10N_FILES=' Data/Video' CONTENT_GAME_DLC1_FILES=' Data/DeadMoney*' CONTENT_GAME_DLC2_FILES=' Data/HonestHearts*' CONTENT_GAME_DLC3_FILES=' Data/OldWorldBlues*' CONTENT_GAME_DLC4_FILES=' Data/LonesomeRoad*' CONTENT_GAME_DLC5_FILES=' Data/GunRunnersArsenal*' CONTENT_GAME_DLC6_FILES=' Data/CaravanPack*' CONTENT_GAME_DLC7_FILES=' Data/ClassicPack*' CONTENT_GAME_DLC8_FILES=' Data/MercenaryPack*' CONTENT_GAME_DLC9_FILES=' Data/TribalPack*' CONTENT_DOC_L10N_FILES=' Readme.txt GECKReadme.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/FalloutNV' # Set required registry key. installed_path=C:\\\\${GAME_ID}/ WINE_REGISTRY_INIT=' [HKEY_LOCAL_MACHINE\Software\Bethesda Softworks\FalloutNV] "Installed Path"="'${installed_path}'"' # TODO: Can the launcher be skipped? APP_MAIN_EXE='FalloutNVLauncher.exe' APP_MAIN_ICON='FalloutNV.ico' # TODO: Move the editor to a dedicated package. APP_EDITOR_ID=${GAME_ID}-editor APP_EDITOR_NAME="${GAME_NAME} - Editor" APP_EDITOR_EXE='Geck.exe' APP_EDITOR_ICON='GECKicon.ico' PACKAGES_LIST=' PKG_MAIN PKG_L10N PKG_DLC1 PKG_DLC2 PKG_DLC3 PKG_DLC4 PKG_DLC5 PKG_DLC6 PKG_DLC7 PKG_DLC8 PKG_DLC9' PKG_MAIN_ARCH=32 PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE' PKG_MAIN_DEPENDENCIES_GSTREAMER_PLUGINS=' application/x-id3' # Easier upgrades from pre-20260708.2 packages PKG_MAIN_PROVIDES=' fallout-new-vegas-data' PKG_L10N_BASE_ID=${GAME_ID}-l10n PKG_L10N_ID_FR=${PKG_L10N_BASE_ID}-fr PKG_L10N_ID_EN=${PKG_L10N_BASE_ID}-en PKG_L10N_PROVIDES=$PKG_L10N_BASE_ID PKG_L10N_DESCRIPTION_FR='French localisation' PKG_L10N_DESCRIPTION_EN='English localisation' PKG_DLC1_ID=${GAME_ID}-dead-money PKG_DLC2_ID=${GAME_ID}-honest-hearts PKG_DLC3_ID=${GAME_ID}-old-world-blues PKG_DLC4_ID=${GAME_ID}-lonesome-road PKG_DLC5_ID=${GAME_ID}-gun-runners-arsenal PKG_DLC6_ID=${GAME_ID}-caravan-pack PKG_DLC7_ID=${GAME_ID}-classic-pack PKG_DLC8_ID=${GAME_ID}-mercenary-pack PKG_DLC9_ID=${GAME_ID}-tribal-pack PKG_DLC1_ID_FR=${PKG_DLC1_ID}-fr PKG_DLC2_ID_FR=${PKG_DLC2_ID}-fr PKG_DLC3_ID_FR=${PKG_DLC3_ID}-fr PKG_DLC4_ID_FR=${PKG_DLC4_ID}-fr PKG_DLC5_ID_FR=${PKG_DLC5_ID}-fr PKG_DLC6_ID_FR=${PKG_DLC6_ID}-fr PKG_DLC7_ID_FR=${PKG_DLC7_ID}-fr PKG_DLC8_ID_FR=${PKG_DLC8_ID}-fr PKG_DLC9_ID_FR=${PKG_DLC9_ID}-fr PKG_DLC1_ID_EN=${PKG_DLC1_ID}-en PKG_DLC2_ID_EN=${PKG_DLC2_ID}-en PKG_DLC3_ID_EN=${PKG_DLC3_ID}-en PKG_DLC4_ID_EN=${PKG_DLC4_ID}-en PKG_DLC5_ID_EN=${PKG_DLC5_ID}-en PKG_DLC6_ID_EN=${PKG_DLC6_ID}-en PKG_DLC7_ID_EN=${PKG_DLC7_ID}-en PKG_DLC8_ID_EN=${PKG_DLC8_ID}-en PKG_DLC9_ID_EN=${PKG_DLC9_ID}-en PKG_DLC1_PROVIDES=$PKG_DLC1_ID PKG_DLC2_PROVIDES=$PKG_DLC2_ID PKG_DLC3_PROVIDES=$PKG_DLC3_ID PKG_DLC4_PROVIDES=$PKG_DLC4_ID PKG_DLC5_PROVIDES=$PKG_DLC5_ID PKG_DLC6_PROVIDES=$PKG_DLC6_ID PKG_DLC7_PROVIDES=$PKG_DLC7_ID PKG_DLC8_PROVIDES=$PKG_DLC8_ID PKG_DLC9_PROVIDES=$PKG_DLC9_ID PKG_DLC1_DESCRIPTION='Dead Money' PKG_DLC2_DESCRIPTION='Honest Hearts' PKG_DLC3_DESCRIPTION='Old World Blues' PKG_DLC4_DESCRIPTION='Lonesome Road' PKG_DLC5_DESCRIPTION='Gun Runnersʼ Arsenal' PKG_DLC6_DESCRIPTION='Caravan Pack' PKG_DLC7_DESCRIPTION='Classic Pack' PKG_DLC8_DESCRIPTION='Mercenary Pack' PKG_DLC9_DESCRIPTION='Tribal Pack' PKG_DLC_DEPENDENCIES_SIBLINGS=' PKG_MAIN PKG_L10N' PKG_DLC1_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC2_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC3_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC4_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC5_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC6_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC7_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC8_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS PKG_DLC9_DEPENDENCIES_SIBLINGS=$PKG_DLC_DEPENDENCIES_SIBLINGS # Easier upgrades from pre-20260708.1 packages PKG_DLC1_PROVIDES="${PKG_DLC1_PROVIDES} fallout-new-vegas-dlc-dead-money" PKG_DLC2_PROVIDES="${PKG_DLC2_PROVIDES} fallout-new-vegas-dlc-honest-hearts" PKG_DLC3_PROVIDES="${PKG_DLC3_PROVIDES} fallout-new-vegas-dlc-old-world-blues" PKG_DLC4_PROVIDES="${PKG_DLC4_PROVIDES} fallout-new-vegas-dlc-lonesome-road" PKG_DLC5_PROVIDES="${PKG_DLC5_PROVIDES} fallout-new-vegas-dlc-gun-runners-arsenal" PKG_DLC6_PROVIDES="${PKG_DLC6_PROVIDES} fallout-new-vegas-dlc-caravan-pack" PKG_DLC7_PROVIDES="${PKG_DLC7_PROVIDES} fallout-new-vegas-dlc-classic-pack" PKG_DLC8_PROVIDES="${PKG_DLC8_PROVIDES} fallout-new-vegas-dlc-mercenary-pack" PKG_DLC9_PROVIDES="${PKG_DLC9_PROVIDES} fallout-new-vegas-dlc-tribal-pack" # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -type f | while read -r dll_source; do dll_destination=${PATH_PREFIX}${dll_source#${PATH_LIBRARIES_SYSTEM}} mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation print_instructions PKG_MAIN PKG_L10N ( GAME_NAME=$PKG_DLC1_DESCRIPTION set_current_package PKG_DLC1 print_instructions PKG_DLC1 ) ( GAME_NAME=$PKG_DLC2_DESCRIPTION set_current_package PKG_DLC2 print_instructions PKG_DLC2 ) ( GAME_NAME=$PKG_DLC3_DESCRIPTION set_current_package PKG_DLC3 print_instructions PKG_DLC3 ) ( GAME_NAME=$PKG_DLC4_DESCRIPTION set_current_package PKG_DLC4 print_instructions PKG_DLC4 ) ( GAME_NAME=$PKG_DLC5_DESCRIPTION set_current_package PKG_DLC5 print_instructions PKG_DLC5 ) ( GAME_NAME=$PKG_DLC6_DESCRIPTION set_current_package PKG_DLC6 print_instructions PKG_DLC6 ) ( GAME_NAME=$PKG_DLC7_DESCRIPTION set_current_package PKG_DLC7 print_instructions PKG_DLC7 ) ( GAME_NAME=$PKG_DLC8_DESCRIPTION set_current_package PKG_DLC8 print_instructions PKG_DLC8 ) ( GAME_NAME=$PKG_DLC9_DESCRIPTION set_current_package PKG_DLC9 print_instructions PKG_DLC9 ) # Clean up. working_directory_cleanup exit 0 games/play-final-fantasy-7.sh0000755000000000000000000001036214471751340015062 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Finale Fantasy 7 # send your bug reports to bugs@dotslashplay.it ### script_version=20260612.6 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='final-fantasy-7' GAME_NAME='Final Fantasy VII' ARCHIVE_BASE_0_NAME='setup_final_fantasy_vii_2.0_gog_v1_(88522).exe' ARCHIVE_BASE_0_MD5='c70dffd6321e5f7f199c39aa7a4b62ff' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_final_fantasy_vii_2.0_gog_v1_(88522)-1.bin' ARCHIVE_BASE_0_PART1_MD5='bf1f6e6178c83672292efd5e3524b9ab' ARCHIVE_BASE_0_SIZE='3782949' ARCHIVE_BASE_0_VERSION='2.0-1' CONTENT_PATH_DEFAULT='.' # Native Windows libraries # TODO: Check if all libraries are required. CONTENT_LIBS_MAIN_FILES=' SDL2.dll xaudio2_9redist.dll' # TODO: Check if the following libraries can be moved to localisation packages. CONTENT_LIBS0_MAIN_FILES=' ff7/resources/ff7_1.02/ff7_en ff7/resources/ff7_1.02/ff7_ja' # TODO: Check if the Galaxy library is required. CONTENT_LIBS1_MAIN_FILES=' Galaxy64.dll' # TODO: Check if the Steam library is required. CONTENT_LIBS2_MAIN_FILES=' steam_api64.dll' CONTENT_GAME_MAIN_FILES=' FFVII.exe Assets ff7/font ff7/Shaders ff7/workingdir/data/battle ff7/workingdir/data/cd ff7/workingdir/data/field ff7/workingdir/data/layout_pc ff7/workingdir/data/menu ff7/workingdir/data/midi ff7/workingdir/data/minigame ff7/workingdir/data/movies ff7/workingdir/data/music ff7/workingdir/data/music_ogg ff7/workingdir/data/png ff7/workingdir/data/sound ff7/workingdir/data/wm ff7/workingdir/ff7input.cfg' # TODO: Check if Galaxy settings are required. CONTENT_GAME0_MAIN_FILES=' GalaxyConfig.json' # TODO: Check if GOG metadata is required. CONTENT_GAME1_MAIN_FILES=' goggame-1698970154.info' CONTENT_GAME_L10N_FR_FILES=' be_loc/be_loc_fr.xml fr ff7/workingdir/data/lang-fr' CONTENT_GAME_L10N_JA_FILES=' be_loc/be_loc_ja.xml ja ff7/workingdir/data/lang-ja' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/FINAL FANTASY VII GOG Edition' APP_MAIN_EXE='FFVII.exe' # Set game language based on the installed localisation. APP_MAIN_PRERUN=' # Set game language based on the installed localisation. case $(ls be_loc/be_loc_??.xml) in (be_loc/be_loc_fr.xml) LC_ALL=fr_FR ;; (be_loc/be_loc_ja.xml) LC_ALL=ja_JP ;; esac export LC_ALL ' PACKAGES_LIST=' PKG_MAIN PKG_L10N_FR PKG_L10N_JA' PKG_MAIN_ARCH='64' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_JA_ID="${PKG_L10N_ID}-ja" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_JA_DESCRIPTION='Japanese localisation' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -type f | while read -r dll_source; do dll_destination="${PATH_PREFIX}${dll_source#"${PATH_LIBRARIES_SYSTEM}"}" mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='traduction %s :' lang_fr='française' lang_ja='japonaise' ;; ('en'|*) lang_string='%s localisation:' lang_fr='French' lang_ja='Japanese' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions 'PKG_MAIN' 'PKG_L10N_FR' printf "$lang_string" "$lang_ja" print_instructions 'PKG_MAIN' 'PKG_L10N_JA' # Clean up. working_directory_cleanup exit 0 games/play-forced.sh0000755000000000000000000000467614471751340013437 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Forced # send your bug reports to bugs@dotslashplay.it ### script_version=20251023.4 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='forced' GAME_NAME='Forced' ## This DRM-free archive is no longer available from humblebundle.com, ## they now only sell Steam keys for this game. ARCHIVE_BASE_0_NAME='FORCED_Linux.zip' ARCHIVE_BASE_0_MD5='039f971dc0ae0741e52865a9f23280d3' ARCHIVE_BASE_0_SIZE='3742323' ARCHIVE_BASE_0_VERSION='1.22-humble1' UNITY3D_NAME='FORCED' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='FORCED_Linux/FORCED' USER_PERSISTENT_DIRECTORIES=' FORCED_Data/Visual Scripting' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Do not disable the MAP_32BIT flag, ## as it would lead to a crash on launch. unity3d_disable_map32bit() { return 0; } launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-gamedec.sh0000755000000000000000000000636414471751340013556 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gamedec # send your bug reports to bugs@dotslashplay.it ### script_version=20251009.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='gamedec' GAME_NAME='Gamedec' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562).exe' ARCHIVE_BASE_0_MD5='81ce6923488911399dbd209cc574334a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-1.bin' ARCHIVE_BASE_0_PART1_MD5='e069d6764e368cd141d98ba93d286b50' ARCHIVE_BASE_0_PART2_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-2.bin' ARCHIVE_BASE_0_PART2_MD5='2e4507b72e2e47a9ccd658365fc8347e' ARCHIVE_BASE_0_PART3_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-3.bin' ARCHIVE_BASE_0_PART3_MD5='feee3d36bb8198f2d4e86eddaf0efd6e' ARCHIVE_BASE_0_SIZE='16408534' ARCHIVE_BASE_0_VERSION='1.7.1-gog60562' ARCHIVE_BASE_DEMO_0_NAME='setup_gamedec_demo_20211126_1.3.0.r47441_(64bit)_(51758).exe' ARCHIVE_BASE_DEMO_0_MD5='cc801764f1ebf5e9c6c044ca7429dd4c' ARCHIVE_BASE_DEMO_0_TYPE='innosetup' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_gamedec_demo_20211126_1.3.0.r47441_(64bit)_(51758)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='8d45c7abe34aef48ad40178230940713' ARCHIVE_BASE_DEMO_0_PART2_NAME='setup_gamedec_demo_20211126_1.3.0.r47441_(64bit)_(51758)-2.bin' ARCHIVE_BASE_DEMO_0_PART2_MD5='edf41425796878607f5c0574695b9ee8' ARCHIVE_BASE_DEMO_0_SIZE='10215245' ARCHIVE_BASE_DEMO_0_VERSION='1.3.0-gog51758' UNREALENGINE4_NAME='gamedec' CONTENT_PATH_DEFAULT='.' HUGE_FILES_DATA=" ${UNREALENGINE4_NAME}/content/paks/${UNREALENGINE4_NAME}-windowsnoeditor.pak" APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}-win64-shipping.exe" APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=123' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not install Visual C++ Runtime, as it prevents the game from starting. unrealengine4_wine_winetricks_verbs_default() { return 0; } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ghost-of-a-tale.sh0000755000000000000000000000433214471751340015051 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Ghost of a Tale # send your bug reports to bugs@dotslashplay.it ### script_version=20251024.4 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='ghost-of-a-tale' GAME_NAME='Ghost of a Tale' ARCHIVE_BASE_1_NAME='setup_ghost_of_a_tale_833(a)_(62775).exe' ARCHIVE_BASE_1_MD5='9026bc3f002bb5c71fe55f490a4e80d7' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_ghost_of_a_tale_833(a)_(62775)-1.bin' ARCHIVE_BASE_1_PART1_MD5='9970b40b5c464a551ec1c2c8a780fe9c' ARCHIVE_BASE_1_SIZE='4989232' ARCHIVE_BASE_1_VERSION='8.33-gog62775' ARCHIVE_BASE_0_NAME='setup_ghost_of_a_tale_833_(28317).exe' ARCHIVE_BASE_0_MD5='ce98494f39f3908d33ef46e438d94da4' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_ghost_of_a_tale_833_(28317)-1.bin' ARCHIVE_BASE_0_PART1_MD5='e5a2d7c834572c438c324a5104692afb' ARCHIVE_BASE_0_SIZE='5000000' ARCHIVE_BASE_0_VERSION='8.33-gog28317' UNITY3D_NAME='goat' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Ghost of a Tale' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-hand-of-fate.sh0000755000000000000000000000451414471751340014415 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 mortalius # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Hand of Fate # send your bug reports to bugs@dotslashplay.it ### script_version=20260706.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='hand-of-fate' GAME_NAME='Hand of Fate' ARCHIVE_BASE_2_NAME='hand_of_fate_1_3_20_25356.sh' ARCHIVE_BASE_2_MD5='f0a1b47a6e4b5cb7a9f1494b55982b54' ARCHIVE_BASE_2_SIZE=2705440 ARCHIVE_BASE_2_VERSION='1.3.20-1' ARCHIVE_BASE_1_NAME='hand_of_fate_en_1_3_19_21087.sh' ARCHIVE_BASE_1_MD5='5895ccaf640afff877b6cab5fa348748' ARCHIVE_BASE_1_SIZE='2800000' ARCHIVE_BASE_1_VERSION='1.3.19-1' ARCHIVE_BASE_0_NAME='gog_hand_of_fate_2.12.0.16.sh' ARCHIVE_BASE_0_MD5='54c61dce76b1281b4161d53d096d6ffe' ARCHIVE_BASE_0_SIZE='2800000' ARCHIVE_BASE_0_VERSION='1.3.17-1' UNITY3D_NAME='Hand of Fate' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Prevent inclusion of 32-bit libraries. rm --recursive \ "$(path_archive_contents)/$(unity3d_name)_Data/Mono/x86" \ "$(path_archive_contents)/$(unity3d_name)_Data/Plugins/x86" # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-haven.sh0000755000000000000000000000733014471751340013264 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Haven # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=haven GAME_NAME='Haven' ARCHIVE_BASE_2_NAME='setup_haven_v1.1.302_official_(64bit)_(54386).exe' ARCHIVE_BASE_2_MD5=8dca64cf157ae335dab462d52253aeeb ARCHIVE_BASE_2_TYPE=innosetup ARCHIVE_BASE_2_PART1_NAME='setup_haven_v1.1.302_official_(64bit)_(54386)-1.bin' ARCHIVE_BASE_2_PART1_MD5=03a08ea5c6b1a80b7a2f869da91d2df8 ARCHIVE_BASE_2_PART2_NAME='setup_haven_v1.1.302_official_(64bit)_(54386)-2.bin' ARCHIVE_BASE_2_PART2_MD5=04e4c87ee647fd0511fdda7ff47dc787 ARCHIVE_BASE_2_SIZE=5831558 ARCHIVE_BASE_2_VERSION=1.1.302-1 ARCHIVE_BASE_1_NAME='setup_haven_v1.1.296_official_(64bit)_(53728).exe' ARCHIVE_BASE_1_MD5=f5b9d5f71a2def217dc9e0f632a04360 ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_PART1_NAME='setup_haven_v1.1.296_official_(64bit)_(53728)-1.bin' ARCHIVE_BASE_1_PART1_MD5=598b4c5592f8f3aa4ab95c49cdf80fe0 ARCHIVE_BASE_1_PART2_NAME='setup_haven_v1.1.296_official_(64bit)_(53728)-2.bin' ARCHIVE_BASE_1_PART2_MD5=00990daa83f70d6440bb4ccabc07981a ARCHIVE_BASE_1_SIZE=5900000 ARCHIVE_BASE_1_VERSION=1.1.296-1 ARCHIVE_BASE_0_NAME='setup_haven_v1.1.258-rc_official_(64bit)_(49981).exe' ARCHIVE_BASE_0_MD5=1770f0efd829dc486cc37242085518d3 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_PART1_NAME='setup_haven_v1.1.258-rc_official_(64bit)_(49981)-1.bin' ARCHIVE_BASE_0_PART1_MD5=5aec89c6383ab1ee8f1371a9130e01f5 ARCHIVE_BASE_0_SIZE=4700000 ARCHIVE_BASE_0_VERSION=1.1.258-1 UNITY3D_NAME='Haven' # TODO: Include an explicit list of Unity3D plugins. CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/TheGameBakers/Haven' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' # TODO: Move videos to a dedicated package. PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Create some empty files. # TODO: Are these files required? common_directory=$(path_archive_contents)/$(unity3d_name)_Data/StreamingAssets/Audio/GeneratedSoundBanks/Windows touch \ "${common_directory}/Combat.txt" \ "${common_directory}/Dialogs_Epilogue.txt" \ "${common_directory}/Dialogs_SecretBeach.txt" \ "${common_directory}/Dialogs_Zone0.txt" \ "${common_directory}/Dialogs_Zone1.txt" \ "${common_directory}/Dialogs_Zone2.txt" \ "${common_directory}/Dialogs_Zone3.txt" \ "${common_directory}/Dialogs_Zone4.txt" \ "${common_directory}/Dialogs_Zone5.txt" \ "${common_directory}/Dialogs_Zone6.txt" \ "${common_directory}/Dialogs_ZoneK.txt" \ "${common_directory}/Nest.txt" \ "${common_directory}/NPC_Gorilla.txt" \ "${common_directory}/Panel_Desert_Main.txt" \ "${common_directory}/Panel_Main.txt" \ "${common_directory}/WorldMap.txt" # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-heroines-quest-the-herald-of-ragnarok.sh0000755000000000000000000000424214471751340021354 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Fabien Givors # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Heroine's Quest: The Herald of Ragnarok # send your bug reports to bugs@dotslashplay.it ### script_version=20260615.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='heroines-quest-the-herald-of-ragnarok' GAME_NAME='Heroine’s Quest: The Herald of Ragnarok' ARCHIVE_BASE_FIREFLOWER_0_NAME='Heroines_Quest_Linux.zip' ARCHIVE_BASE_FIREFLOWER_0_MD5='a421c0e15731510130d26343942f2553' ARCHIVE_BASE_FIREFLOWER_0_SIZE='487786' ARCHIVE_BASE_FIREFLOWER_0_VERSION='1.2.3-1' ARCHIVE_BASE_FIREFLOWER_0_URL='https://fireflowergames.com/products/heroines-quest' ARCHIVE_BASE_GOG_0_NAME='heroine_s_quest_the_herald_of_ragnarok_1_2_9_2_68339.sh' ARCHIVE_BASE_GOG_0_MD5='a9cfa6ca34e28fa4b06d7d6fc565421d' ARCHIVE_BASE_GOG_0_SIZE='500000' ARCHIVE_BASE_GOG_0_VERSION='1.2.9.2-1' AGS_NAME='heroinesquest' CONTENT_PATH_DEFAULT_FIREFLOWER='.' CONTENT_PATH_DEFAULT_GOG='data/noarch/game/data' CONTENT_DOC_MAIN_FILES=' history.txt' CONTENT_DOC0_MAIN_RELATIVE_PATH_GOG='..' CONTENT_DOC0_MAIN_FILES=' *.pdf' APP_MAIN_ICON_FIREFLOWER="Heroine's Quest.exe" APP_MAIN_ICON_GOG='../../support/icon.png' # Easier upgrades from pre-20241216.2 packages PKG_MAIN_PROVIDES=' heroines-quest-the-herald-of-ragnarok-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-horizon-zero-dawn.sh0000755000000000000000000002361514471751340015563 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Horizon Zero Dawn # send your bug reports to bugs@dotslashplay.it ### script_version=20260710.3 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=horizon-zero-dawn GAME_NAME='Horizon Zero Dawn' ARCHIVE_BASE_1_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037).exe' ARCHIVE_BASE_1_MD5=cbcd8e966a6ffd5881d9ad5f21896171 ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_PART1_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-1.bin' ARCHIVE_BASE_1_PART1_MD5=9a34a22b24fb0f0e44c17afccec79fdf ARCHIVE_BASE_1_PART2_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-2.bin' ARCHIVE_BASE_1_PART2_MD5=0e961289ae2e6a84440d354d98a74325 ARCHIVE_BASE_1_PART3_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-3.bin' ARCHIVE_BASE_1_PART3_MD5=f7c23754103e3bcf02eec7216b9e94e3 ARCHIVE_BASE_1_PART4_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-4.bin' ARCHIVE_BASE_1_PART4_MD5=4ed606b3ac83c644dab85bbc1938057a ARCHIVE_BASE_1_PART5_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-5.bin' ARCHIVE_BASE_1_PART5_MD5=0a08cc1604d50b5c971bfaa80008c9d9 ARCHIVE_BASE_1_PART6_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-6.bin' ARCHIVE_BASE_1_PART6_MD5=8d7b79803c494726889d1a21ae55ae63 ARCHIVE_BASE_1_PART7_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-7.bin' ARCHIVE_BASE_1_PART7_MD5=81bdcd0eb672b0e600af02724745a942 ARCHIVE_BASE_1_PART8_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-8.bin' ARCHIVE_BASE_1_PART8_MD5=1643dff8d1c8e52506e48549554a14da ARCHIVE_BASE_1_PART9_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-9.bin' ARCHIVE_BASE_1_PART9_MD5=7a7133c16ac38ce9b4e9abfddea62f89 ARCHIVE_BASE_1_PART10_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-10.bin' ARCHIVE_BASE_1_PART10_MD5=f9df3bdac52376d3054f379e2792307c ARCHIVE_BASE_1_PART11_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-11.bin' ARCHIVE_BASE_1_PART11_MD5=f4b7607bec174dad7f8452d6c5b0009a ARCHIVE_BASE_1_PART12_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-12.bin' ARCHIVE_BASE_1_PART12_MD5=7681476938581baf216a54aa45d98fc4 ARCHIVE_BASE_1_PART13_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-13.bin' ARCHIVE_BASE_1_PART13_MD5=ea24163717d52a3b1df0673711088143 ARCHIVE_BASE_1_PART14_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-14.bin' ARCHIVE_BASE_1_PART14_MD5=550d3b76dfa565f632b0eddea24bbcf3 ARCHIVE_BASE_1_PART15_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-15.bin' ARCHIVE_BASE_1_PART15_MD5=581a66858d19636df0e073929c778f0a ARCHIVE_BASE_1_PART16_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-16.bin' ARCHIVE_BASE_1_PART16_MD5=057b513a63935e79e20b6fad76d1e05d ARCHIVE_BASE_1_PART17_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-17.bin' ARCHIVE_BASE_1_PART17_MD5=67b713b3f6482b43a493f724c3d99e71 ARCHIVE_BASE_1_PART18_NAME='setup_horizon_zero_dawntm_complete_edition_7517962_(64bit)_(53037)-18.bin' ARCHIVE_BASE_1_PART18_MD5=91eedb3db10cdaaa63f930891a3780f2 ARCHIVE_BASE_1_SIZE=75771568 ARCHIVE_BASE_1_VERSION=1.11.7517962-1 ARCHIVE_BASE_0_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600).exe' ARCHIVE_BASE_0_MD5=f14a4c244306f169896e168f99d7a719 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_PART1_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-1.bin' ARCHIVE_BASE_0_PART1_MD5=26260f87628d433912c4155481e7aa48 ARCHIVE_BASE_0_PART2_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-2.bin' ARCHIVE_BASE_0_PART2_MD5=4dedb5420d45ff65ce0ddd857d2a6cad ARCHIVE_BASE_0_PART3_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-3.bin' ARCHIVE_BASE_0_PART3_MD5=79aee3ddc0ce308683a6715521b0daa2 ARCHIVE_BASE_0_PART4_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-4.bin' ARCHIVE_BASE_0_PART4_MD5=e2386e5e027c44e9f923fb027ad0f391 ARCHIVE_BASE_0_PART5_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-5.bin' ARCHIVE_BASE_0_PART5_MD5=032be65a01c84f934edfbfa326258e90 ARCHIVE_BASE_0_PART6_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-6.bin' ARCHIVE_BASE_0_PART6_MD5=3b42edf5efe308cf3c1db72bc1ef9021 ARCHIVE_BASE_0_PART7_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-7.bin' ARCHIVE_BASE_0_PART7_MD5=f6216943ef02d605752a1156b0559df3 ARCHIVE_BASE_0_PART8_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-8.bin' ARCHIVE_BASE_0_PART8_MD5=703d33ab31b1ce23587cae3f8eef1453 ARCHIVE_BASE_0_PART9_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-9.bin' ARCHIVE_BASE_0_PART9_MD5=27f01f0545e732d61a9ceb05495ab9ef ARCHIVE_BASE_0_PART10_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-10.bin' ARCHIVE_BASE_0_PART10_MD5=25c10d76ad8399802cdec42230a129bf ARCHIVE_BASE_0_PART11_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-11.bin' ARCHIVE_BASE_0_PART11_MD5=7daf2cf2f17e5bd5aa22707dc690fc4f ARCHIVE_BASE_0_PART12_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-12.bin' ARCHIVE_BASE_0_PART12_MD5=5a23643c5a474808503cb30d057010f8 ARCHIVE_BASE_0_PART13_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-13.bin' ARCHIVE_BASE_0_PART13_MD5=98bab66a848465dab195fe2c292a5283 ARCHIVE_BASE_0_PART14_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-14.bin' ARCHIVE_BASE_0_PART14_MD5=e9817e15706c72ad447881898abe0379 ARCHIVE_BASE_0_PART15_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-15.bin' ARCHIVE_BASE_0_PART15_MD5=f456a7bfed43b135fb8682481e284cb1 ARCHIVE_BASE_0_PART16_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-16.bin' ARCHIVE_BASE_0_PART16_MD5=398b6c64e1087a6f3deab3104c10a153 ARCHIVE_BASE_0_PART17_NAME='setup_horizon_zero_dawntm_complete_edition_6278995_(64bit)_(44600)-17.bin' ARCHIVE_BASE_0_PART17_MD5=9d0616c36329c3346bad3bdf55ead984 ARCHIVE_BASE_0_SIZE=71000000 ARCHIVE_BASE_0_VERSION=1.10.6278995-1 CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' HorizonZeroDawn.exe' # HorizonZeroDawn.exe requirements CONTENT_LIBS_MAIN_FILES=' Galaxy64.dll' # Crash on launch if missing CONTENT_LIBS0_MAIN_FILES=' oo2core_3_win64.dll' # Crash on video playback if missing CONTENT_LIBS1_MAIN_FILES=' Tools/bin/bink2w64.dll' # Crash on gameplay loading if missing CONTENT_LIBS2_MAIN_FILES=' LocalCacheDX12/fullgame.dll' CONTENT_GAME0_MAIN_FILES=' Movies/Mono LocalCacheDX12/HashDB.bin LocalCacheDX12/ShaderLocationDB.bin Packed_DX12/FGRWin32.bin Packed_DX12/Patch.bin Packed_DX12/Initial.bin Packed_DX12/Remainder.bin' CONTENT_GAME_L10N_FR_FILES=' Packed_DX12/Initial_French.bin Packed_DX12/Remainder_French.bin' CONTENT_GAME_L10N_EN_FILES=' Packed_DX12/Initial_English.bin Packed_DX12/Remainder_English.bin' # The Frozen Wilds expansion is required with this game build, # dropping it leads to a freeze of initial gameplay loading. CONTENT_GAME1_MAIN_FILES=' Movies/DLC1 Packed_DX12/DLC1.bin' CONTENT_GAME0_L10N_FR_FILES=' Packed_DX12/DLC1_French.bin' CONTENT_GAME0_L10N_EN_FILES=' Packed_DX12/DLC1_English.bin' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Horizon Zero Dawn' # HorizonZeroDawn.exe requirement # cf. https://bugs.winehq.org/show_bug.cgi?id=44856 WINE_WINETRICKS_VERBS='mfc140' # Prevent a crash on launch. # This should no longer be needed with WINE 11.0. # cf. https://bugs.winehq.org/show_bug.cgi?id=52115 # (vkd3d-proton is used as the Direct3D renderer, # dxvk is installed for some libraries it provides) WINE_DIRECT3D_RENDERER='dxvk' WINE_WINETRICKS_VERBS="${WINE_WINETRICKS_VERBS} vkd3d" APP_MAIN_EXE='HorizonZeroDawn.exe' PACKAGES_LIST=' PKG_MAIN PKG_L10N_FR PKG_L10N_EN' PKG_MAIN_ARCH=64 PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N' # Easier upgrades from pre-20260709.1 packages PKG_MAIN_PROVIDES=' horizon-zero-dawn-data horizon-zero-dawn-data-dlc1 horizon-zero-dawn-movies' PKG_L10N_ID=${GAME_ID}-l10n PKG_L10N_FR_ID=${PKG_L10N_ID}-fr PKG_L10N_EN_ID=${PKG_L10N_ID}-en PKG_L10N_PROVIDES=$PKG_L10N_ID PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_EN_DESCRIPTION='English localisation' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -type f | while read -r dll_source; do dll_destination=${PATH_PREFIX}${dll_source#${PATH_LIBRARIES_SYSTEM}} mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation case "$(messages_language)" in (fr) message='version %s :' lang_fr='française' lang_en='anglaise' ;; (en|*) message='%s version:' lang_fr='French' lang_en='English' ;; esac printf '\n' printf "$message" "$lang_fr" print_instructions PKG_MAIN PKG_L10N_FR # English localisation printf "$message" "$lang_en" print_instructions PKG_MAIN PKG_L10N_EN # Clean up. working_directory_cleanup exit 0 games/play-ikenfell.sh0000755000000000000000000000746514471751340013765 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Ikenfell # send your bug reports to bugs@dotslashplay.it ### script_version=20260508.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='ikenfell' GAME_NAME='Ikenfell' ARCHIVE_BASE_0_NAME='setup_ikenfell_1.0.3_(64bit)_(52030).exe' ARCHIVE_BASE_0_MD5='edf00ffea67cb1c5007cf0dbaba618c4' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='439559' ARCHIVE_BASE_0_VERSION='1.0.3-gog52030' CONTENT_PATH_DEFAULT='.' # The shipped Windows binary must be used through WINE, as calling it with native Mono triggers the following crash: # # System.DllNotFoundException: SDL2.dll assembly: type: member:(null) # at (wrapper managed-to-native) SDL2.SDL.Quit() # at GameEngine.Engine.Dispose (System.Boolean disposing) [0x00007] in <57ba3b07a71049a79fc9069a6c41013f>:0 # at GameEngine.Engine.Finalize () [0x00002] in <57ba3b07a71049a79fc9069a6c41013f>:0 # # The shipped MacOS binary (Contents/Resources/Ikenfell.exe) does not help, as it triggers a similar error: # # System.DllNotFoundException: SDL2.dll assembly: type: member:(null) # at (wrapper managed-to-native) SDL2.SDL.Init(SDL2.SubSystem) # at GameEngine.Engine..ctor (System.String title, System.Int32 width, System.Int32 height, System.Int32 windowScale, System.Single frameRate) [0x000e1] in <6ba33594429645fdacac96f34b3bb342>:0 # at LittleWitch.Game..ctor () [0x00019] in <4c786faff1da4a04a5c2a4665d1d19d0>:0 # at IkenfellMac.Program.Main (System.String[] args) [0x00007] in <79ffe5bf77cf4578a7600534a6d3593d>:0 # # (Mono 6.14.1) CONTENT_GAME_BIN_FILES=' IkenfellWin.exe' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' fmod.dll fmodstudio.dll SDL2.dll' CONTENT_GAME_DATA_FILES=' Atlas Audio Data Scripts' # The following .dll files are Mono libraries. # TODO: Most of the following libraries could be replaced by system-provided ones. CONTENT_GAME0_DATA_RELATIVE_PATH='Contents/Resources' CONTENT_GAME0_DATA_FILES=' GameEngine.dll LittleWitch.dll Mono.Posix.dll Mono.Security.dll MoonSharp.Interpreter.dll mscorlib.dll System.Configuration.dll System.Core.dll System.Data.dll System.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll System.Xml.Linq.dll' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/ikenfell' WINE_WINEPREFIX_TWEAKS='mono' APP_MAIN_EXE='IkenfellWin.exe' APP_MAIN_TYPE='wine' # Prevent errors with SDL backends unsupported on Windows. APP_MAIN_PRERUN=' # Prevent errors with SDL backends unsupported on Windows. case "${SDL_AUDIODRIVER:-}" in ("alsa") unset SDL_AUDIODRIVER ;; esac case "${SDL_VIDEODRIVER:-}" in ("wayland"|"x11") unset SDL_VIDEODRIVER ;; esac ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-jade-empire.sh0000755000000000000000000001177114471751340014351 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Jade Empire # send your bug reports to bugs@dotslashplay.it ### script_version=20250804.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='jade-empire' GAME_NAME='Jade Empire' ARCHIVE_BASE_EN_1_NAME='setup_jade_empire_1.00_(15538).exe' ARCHIVE_BASE_EN_1_MD5='e68f17f59bde2254ab1e9b70c078e9f1' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_jade_empire_1.00_(15538)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='6470aa8dac5486d7c66336686e2e442d' ARCHIVE_BASE_EN_1_PART2_NAME='setup_jade_empire_1.00_(15538)-2.bin' ARCHIVE_BASE_EN_1_PART2_MD5='57f4931e55373a9c994b67d14f43dc1c' ARCHIVE_BASE_EN_1_SIZE='7454315' ARCHIVE_BASE_EN_1_VERSION='1.00-gog15538' ARCHIVE_BASE_FR_1_NAME='setup_jade_empire_french_1.00_(15538).exe' ARCHIVE_BASE_FR_1_MD5='872f400a6af8bae9af9bf0b2025d29f4' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_jade_empire_french_1.00_(15538)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='39182b7e8651b92b1703e6c2b89c783c' ARCHIVE_BASE_FR_1_PART2_NAME='setup_jade_empire_french_1.00_(15538)-2.bin' ARCHIVE_BASE_FR_1_PART2_MD5='428bf4eba51fde69fa6fe6fb05aadb96' ARCHIVE_BASE_FR_1_SIZE='7608886' ARCHIVE_BASE_FR_1_VERSION='1.00-gog15538' ARCHIVE_BASE_EN_0_NAME='setup_jade_empire_2.0.0.4.exe' ARCHIVE_BASE_EN_0_MD5='8f9db8c43a9cab6cd00de3d6e69fbda5' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_jade_empire_2.0.0.4-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='9fbfbc9b047288ebcbac9551a5f27ae8' ARCHIVE_BASE_EN_0_PART2_NAME='setup_jade_empire_2.0.0.4-2.bin' ARCHIVE_BASE_EN_0_PART2_MD5='94af70b645c525b7263258c91d95cd92' ARCHIVE_BASE_EN_0_PART3_NAME='setup_jade_empire_2.0.0.4-3.bin' ARCHIVE_BASE_EN_0_PART3_MD5='3efd05ca48fc9d2dfe79b2fab2456df0' ARCHIVE_BASE_EN_0_PART4_NAME='setup_jade_empire_2.0.0.4-4.bin' ARCHIVE_BASE_EN_0_PART4_MD5='a480e87364cc8ab2a519c1f09a2da2c9' ARCHIVE_BASE_EN_0_PART5_NAME='setup_jade_empire_2.0.0.4-5.bin' ARCHIVE_BASE_EN_0_PART5_MD5='081042ad8561b599add7b2f366cf3da8' ARCHIVE_BASE_EN_0_SIZE='7800000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog2.0.0.4' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll ogg.dll vorbis.dll vorbisfile.dll jadeempire.exe jadeempireconfig.exe jadeempirelauncher.exe' CONTENT_GAME_L10N_FILES=' sound data/bips movies/attract.bik movies/c01_cutzu.bik movies/c04_princisfox.bik movies/c06_partycall.bik movies/cut_c3escape*.bik movies/j00_cut_open_c1.bik movies/j00_cut_open_c6.bik movies/j01_jiahand_01.bik movies/j04_cut_lotfin*.bik movies/j04_pop_*.bik movies/j06_recover_01.bik movies/j07_cut_drop01.bik movies/j07_cut_final06b.bik movies/j07_cut_final06.bik movies/j07_cut_final06c.bik movies/j07_cut_final06d.bik movies/j07_cut_final06e.bik movies/j07_cut_final06f.bik movies/j07_cut_final06g.bik movies/j08_cut_ending3.bik movies/j08_cut_final_01.bik movies/j08_cut_stone_01.bik movies/j08_ending3_*.bik movies/j08_final_01_*.bik movies/j08_stone_01_*.bik *.tlk' CONTENT_GAME_DATA_FILES=' data fonts movies override shaderpc *.key' CONTENT_DOC_L10N_RELATIVE_PATH='docs' CONTENT_DOC_L10N_FILES=' manual.pdf readme.txt' CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt' USER_PERSISTENT_DIRECTORIES=' logs persistent save scratch' USER_PERSISTENT_FILES=' *.ini data/*.xml' APP_MAIN_EXE='jadeempire.exe' APP_CONFIG_EXE='jadeempireconfig.exe' APP_CONFIG_CAT='Settings' APP_CONFIG_ID="${GAME_ID}-config" APP_CONFIG_GAME="$GAME_NAME - Configuration" PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Automatically spawn game settings ## Using desktop_field_exec here ensures that we get a path already escaped if required. wineprefix_init_custom() { cat <<- EOF # Automatically spawn game settings $(desktop_field_exec 'APP_CONFIG') EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-kingdom-come-deliverance-expansions.sh0000755000000000000000000001375314471751340021206 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Fabien Givors # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Kingdom Come: Deliverance expansions: # - Treasures of the Past # - From the Ashes # - The Amorous Adventures of Bold Sir Hans Capon # - Band of Bastards # - HD Sound Pack # - HD Texture Pack # - HD Voice Pack - French # - A Woman's Lot # send your bug reports to bugs@dotslashplay.it ### script_version=20260526.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='kingdom-come-deliverance' GAME_NAME='Kingdom Come: Deliverance' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' data goggame-*' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Treasures of the Past EXPANSION_ID_TREASURES_OF_THE_PAST='treasures-of-the-past' EXPANSION_NAME_TREASURES_OF_THE_PAST='Treasures of the Past' ARCHIVE_BASE_TREASURES_OF_THE_PAST_0_NAME='setup_kingdom_come_deliverance_treasures_of_the_past_dlc_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_TREASURES_OF_THE_PAST_0_MD5='4e3bd284e3dc4573690bed957ba78cbe' ARCHIVE_BASE_TREASURES_OF_THE_PAST_0_TYPE='innosetup' ARCHIVE_BASE_TREASURES_OF_THE_PAST_0_SIZE='100' ARCHIVE_BASE_TREASURES_OF_THE_PAST_0_VERSION='1.9.6-404-504czj3' # From the ashes EXPANSION_ID_FROM_THE_ASHES='from-the-ashes' EXPANSION_NAME_FROM_THE_ASHES='From the Ashes' ARCHIVE_BASE_FROM_THE_ASHES_0_NAME='setup_kingdom_come_deliverance__from_the_ashes_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_FROM_THE_ASHES_0_MD5='141360d56c9ba17c72fcac2f50685a7f' ARCHIVE_BASE_FROM_THE_ASHES_0_TYPE='innosetup' ARCHIVE_BASE_FROM_THE_ASHES_0_SIZE='100' ARCHIVE_BASE_FROM_THE_ASHES_0_VERSION='1.9.6-404-504czj3' # The Amorous Adventures of Bold Sir Hans Capon EXPANSION_ID_HANS_CAPON='amorous-adventures-sir-capon' EXPANSION_NAME_HANS_CAPON='The Amorous Adventures of Bold Sir Hans Capon' ARCHIVE_BASE_HANS_CAPON_0_NAME='setup_kingdom_come_deliverance__the_amorous_adventures_of_bold_sir_hans_capon_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_HANS_CAPON_0_MD5='2b41e8147c8046b7b01cfdd3e8079b10' ARCHIVE_BASE_HANS_CAPON_0_TYPE='innosetup' ARCHIVE_BASE_HANS_CAPON_0_SIZE='2000000' ARCHIVE_BASE_HANS_CAPON_0_VERSION='1.9.6-404-504czj3' # Band of Bastards EXPANSION_ID_BAND_OF_BASTARDS='band-of-bastards' EXPANSION_NAME_BAND_OF_BASTARDS='Band of Bastards' ARCHIVE_BASE_BAND_OF_BASTARDS_0_NAME='setup_kingdom_come_deliverance__band_of_bastards_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_BAND_OF_BASTARDS_0_MD5='cce9e163f07e2e9fa8be5b6b113fe866' ARCHIVE_BASE_BAND_OF_BASTARDS_0_TYPE='innosetup' ARCHIVE_BASE_BAND_OF_BASTARDS_0_SIZE='500000' ARCHIVE_BASE_BAND_OF_BASTARDS_0_VERSION='1.9.6-404-504czj3' # A Woman's Lot EXPANSION_ID_A_WOMANS_LOT='a-woman-s-lot' EXPANSION_NAME_A_WOMANS_LOT='A Woman’s Lot' ARCHIVE_BASE_A_WOMANS_LOT_0_NAME='setup_kingdom_come_deliverance_-_a_womans_lot_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_A_WOMANS_LOT_0_MD5='08ec99ec6bf0a08bc04004579641da81' ARCHIVE_BASE_A_WOMANS_LOT_0_TYPE='innosetup' ARCHIVE_BASE_A_WOMANS_LOT_0_PART1_NAME='setup_kingdom_come_deliverance_-_a_womans_lot_1.9.6-404-504czj3_(62297)-1.bin' ARCHIVE_BASE_A_WOMANS_LOT_0_PART1_MD5='7cf9ac8abb8e304b756c98a36d6fbc2a' ARCHIVE_BASE_A_WOMANS_LOT_0_PART2_NAME='setup_kingdom_come_deliverance_-_a_womans_lot_1.9.6-404-504czj3_(62297)-2.bin' ARCHIVE_BASE_A_WOMANS_LOT_0_PART2_MD5='e671d0cfaceb8f5cac910d0e93f2b19f' ARCHIVE_BASE_A_WOMANS_LOT_0_SIZE='8000000' ARCHIVE_BASE_A_WOMANS_LOT_0_VERSION='1.9.6-404-504czj3' # HD Sound Pack EXPANSION_ID_HD_SOUND='hd-sound' EXPANSION_NAME_HD_SOUND='HD Sound Pack' ARCHIVE_BASE_HD_SOUND_0_NAME='setup_kingdom_come_deliverance_-_hd_sound_pack_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_HD_SOUND_0_MD5='2148cf5d68e477f5c4fb32fde94a2cb8' ARCHIVE_BASE_HD_SOUND_0_TYPE='innosetup' ARCHIVE_BASE_HD_SOUND_0_SIZE='974736' ARCHIVE_BASE_HD_SOUND_0_VERSION='1.9.6-404-504czj3' # HD Texture Pack EXPANSION_ID_HD_TEXTURE='hd-texture' EXPANSION_NAME_HD_TEXTURE='HD Texture Pack' ARCHIVE_BASE_HD_TEXTURE_0_NAME='setup_kingdom_come_deliverance_-_hd_texture_pack_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_HD_TEXTURE_0_MD5='599a26fd112d65bd0c6bcaeccd47e3c2' ARCHIVE_BASE_HD_TEXTURE_0_TYPE='innosetup' ARCHIVE_BASE_HD_TEXTURE_0_PART1_NAME='setup_kingdom_come_deliverance_-_hd_texture_pack_1.9.6-404-504czj3_(62297)-1.bin' ARCHIVE_BASE_HD_TEXTURE_0_PART1_MD5='257a19297a6e1ffc202ca9af584dbc17' ARCHIVE_BASE_HD_TEXTURE_0_PART2_NAME='setup_kingdom_come_deliverance_-_hd_texture_pack_1.9.6-404-504czj3_(62297)-2.bin' ARCHIVE_BASE_HD_TEXTURE_0_PART2_MD5='c3271df85b819e5ed5016e318544fcc5' ARCHIVE_BASE_HD_TEXTURE_0_SIZE='7089775' ARCHIVE_BASE_HD_TEXTURE_0_VERSION='1.9.6-404-504czj3' # HD Voice Pack - French EXPANSION_ID_HD_VOICE_FR='hd-voice-fr' EXPANSION_NAME_HD_VOICE_FR='HD Voice Pack - French' ARCHIVE_BASE_HD_VOICE_FR_0_NAME='setup_kingdom_come_deliverance_-_hd_voice_pack_-_french_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_HD_VOICE_FR_0_MD5='16178699acfc1ca2b94c385f7e6dc206' ARCHIVE_BASE_HD_VOICE_FR_0_TYPE='innosetup' ARCHIVE_BASE_HD_VOICE_FR_0_PART1_NAME='setup_kingdom_come_deliverance_-_hd_voice_pack_-_french_1.9.6-404-504czj3_(62297)-1.bin' ARCHIVE_BASE_HD_VOICE_FR_0_PART1_MD5='85279184e0e52c810cea55efa9440efc' ARCHIVE_BASE_HD_VOICE_FR_0_SIZE='3832027' ARCHIVE_BASE_HD_VOICE_FR_0_VERSION='1.9.6-404-504czj3' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-kingdom-come-deliverance.sh0000755000000000000000000002547714471751340017027 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Fabien Givors # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Kingdom Come: Deliverance # send your bug reports to bugs@dotslashplay.it ### script_version=20260528.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='kingdom-come-deliverance' GAME_NAME='Kingdom Come: Deliverance' ARCHIVE_BASE_0_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297).exe' ARCHIVE_BASE_0_MD5='de458c20cbcaadf8dfc92afe7c2e8284' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-1.bin' ARCHIVE_BASE_0_PART1_MD5='c18fa417f8486275d78e01c1a62c8204' ARCHIVE_BASE_0_PART2_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-2.bin' ARCHIVE_BASE_0_PART2_MD5='d288e846badd8228ba0f78c6186731f2' ARCHIVE_BASE_0_PART3_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-3.bin' ARCHIVE_BASE_0_PART3_MD5='b6702c24ded1f8851cb297553cc9b71b' ARCHIVE_BASE_0_PART4_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-4.bin' ARCHIVE_BASE_0_PART4_MD5='b33e86210161017d399071fcf6c54f9f' ARCHIVE_BASE_0_PART5_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-5.bin' ARCHIVE_BASE_0_PART5_MD5='379faac2d6128f1a94275b9d9248c0de' ARCHIVE_BASE_0_PART6_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-6.bin' ARCHIVE_BASE_0_PART6_MD5='c5ffb38b7425cb0219fe70497bb09d9a' ARCHIVE_BASE_0_PART7_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-7.bin' ARCHIVE_BASE_0_PART7_MD5='594f01d2cbd5b2c5cc9442d644a8b335' ARCHIVE_BASE_0_PART8_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-8.bin' ARCHIVE_BASE_0_PART8_MD5='93896ac78ea2dddeb433ffa685a561c2' ARCHIVE_BASE_0_PART9_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-9.bin' ARCHIVE_BASE_0_PART9_MD5='b8cd2810be97f2f697f67e92c71c16b8' ARCHIVE_BASE_0_PART10_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-10.bin' ARCHIVE_BASE_0_PART10_MD5='a38ed45d417c2d2cef03b270a21da255' ARCHIVE_BASE_0_PART11_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-11.bin' ARCHIVE_BASE_0_PART11_MD5='671cc5add7a31e5efd46e2a03478cf5d' ARCHIVE_BASE_0_PART12_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-12.bin' ARCHIVE_BASE_0_PART12_MD5='9aec35e9d193044603095eb1961d8647' ARCHIVE_BASE_0_PART13_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-13.bin' ARCHIVE_BASE_0_PART13_MD5='cb65a86dd5cc63a66a18767c3a4c5378' ARCHIVE_BASE_0_PART14_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-14.bin' ARCHIVE_BASE_0_PART14_MD5='701d947164a1f4d541c985a7273b9552' ARCHIVE_BASE_0_PART15_NAME='setup_kingdom_come_deliverance_1.9.6-404-504czj3_(62297)-15.bin' ARCHIVE_BASE_0_PART15_MD5='e3bb56e79d9ff4f9be2ee2b321f10f68' ARCHIVE_BASE_0_SIZE='62899673' ARCHIVE_BASE_0_VERSION='1.9.6-404-504czj3-gog62297' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' PatchVersion.txt whdlversions.txt Engine system.cfg' CONTENT_GAME0_BIN_FILES=' bin/Win64/KingdomCome.exe bin/Win64/version bin/Win64Shared/sharedversion.txt' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME1_BIN_FILES=' bin/Win64/WHGame.dll bin/Win64Shared/amd_ags_x64.dll bin/Win64Shared/AnselSDK64.dll bin/Win64Shared/d3dcompiler_46.dll bin/Win64Shared/d3dcompiler_47.dll bin/Win64Shared/fmod64.dll bin/Win64Shared/fmodstudio64.dll bin/Win64Shared/Galaxy64.dll bin/Win64Shared/GfeSDK.dll bin/Win64Shared/LightFX.dll bin/Win64Shared/LightFX64.dll bin/Win64Shared/LightFXConfigurator64.dll bin/Win64Shared/sgup_api64.dll bin/Win64Shared/solstice.dll bin/Win64Shared/StovePCSDK.dll bin/Win64Shared/Tobii.GameIntegration.dll' CONTENT_GAME_L10N_VOICES_CZ_FILES=' Localization/Czech-part?.pak Localization/IPL_Czech.pak' CONTENT_GAME_L10N_VOICES_JA_FILES=' Localization/Japanese-part?.pak Localization/IPL_Japanese.pak' CONTENT_GAME_L10N_VOICES_DE_FILES=' Localization/German.pak Localization/IPL_German.pak Localization/patch/german_patch_*.pak Localization/patch/ipl_german_patch_*.pak' CONTENT_GAME_L10N_VOICES_EN_FILES=' Localization/English.pak Localization/IPL_English.pak Localization/patch/english_patch_*.pak Localization/patch/ipl_english_patch_*.pak' CONTENT_GAME_L10N_VOICES_FR_FILES=' Localization/French.pak Localization/IPL_French.pak Localization/patch/french_patch_*.pak Localization/patch/ipl_french_patch_*.pak' CONTENT_GAME_DATA_FILES=' Data/gamedata.pak Data/pak.cfg Data/music.pak Data/sounds.pak Data/cinematics.pak Data/ipl_cinematics.pak Data/_fastload/startup_animations.pak Data/animations-part0.pak Data/animations-part1.pak Localization/*_xml.pak Localization/common.pak' CONTENT_GAME_DATA_PATCHES_1_FILES=' Data/patch/ipl_patch_010[3-6]??.pak Data/patch/patch_010[3-6]??.pak' CONTENT_GAME_DATA_PATCHES_2_FILES=' Data/patch/ipl_patch_010[7-9]??.pak Data/patch/patch_010[7-9]??.pak' CONTENT_GAME_DATA_WORLD_FILES=' Data/_fastload/startup_graphics.pak Data/buildings.pak Data/engineassets Data/engineassets/sky Data/engineassets/sky/optical.lut Data/geomcaches.pak Data/levels Data/objects.pak Data/scripts.pak Data/tables.pak Data/textures.pak' CONTENT_GAME_DATA_VIDEOS_FILES=' Data/ipl_videos.pak Data/videos-part0.pak Data/videos-part1.pak Data/videos-part2.pak Data/videos-part3.pak Data/videos-part4.pak' CONTENT_GAME_DATA_VIDEOSB_FILES=' Data/ipl_videosb.pak Data/videosb-part0.pak Data/videosb-part1.pak' CONTENT_GAME_DATA_CHARACTERS_FILES=' Data/_fastload/startup_characters.pak Data/characters.pak Data/heads.pak Data/ipl_heads.pak Data/cloth-part?.pak' # TODO: Check if DXVK is actually required. WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Saved Games/kingdomcome/profiles users/${USER}/Saved Games/kingdomcome/saves' USER_PERSISTENT_DIRECTORIES=' mods' USER_PERSISTENT_FILES=' system.cfg user.cfg.keeptextures user.cfg.perf user.cfg.reticle user.cfg' APP_MAIN_EXE='bin/Win64/KingdomCome.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N_VOICES_EN PKG_L10N_VOICES_FR PKG_L10N_VOICES_CZ PKG_L10N_VOICES_JA PKG_L10N_VOICES_DE PKG_DATA PKG_DATA_PATCHES_1 PKG_DATA_PATCHES_2 PKG_DATA_WORLD PKG_DATA_VIDEOS PKG_DATA_VIDEOSB PKG_DATA_CHARACTERS' # Binaries packages PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_VOICES PKG_DATA' # Localisation packages PKG_L10N_VOICES_ID="${GAME_ID}-l10n-voices" PKG_L10N_VOICES_CZ_ID="${PKG_L10N_VOICES_ID}-cz" PKG_L10N_VOICES_DE_ID="${PKG_L10N_VOICES_ID}-de" PKG_L10N_VOICES_EN_ID="${PKG_L10N_VOICES_ID}-en" PKG_L10N_VOICES_FR_ID="${PKG_L10N_VOICES_ID}-fr" PKG_L10N_VOICES_JA_ID="${PKG_L10N_VOICES_ID}-ja" PKG_L10N_VOICES_PROVIDES=" $PKG_L10N_VOICES_ID" PKG_L10N_VOICES_CZ_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_DE_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_EN_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_FR_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_JA_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_DESCRIPTION="localisations - voices" PKG_L10N_VOICES_CZ_DESCRIPTION="$PKG_L10N_VOICES_DESCRIPTION - Czech" PKG_L10N_VOICES_DE_DESCRIPTION="$PKG_L10N_VOICES_DESCRIPTION - Deutch" PKG_L10N_VOICES_EN_DESCRIPTION="$PKG_L10N_VOICES_DESCRIPTION - English" PKG_L10N_VOICES_FR_DESCRIPTION="$PKG_L10N_VOICES_DESCRIPTION - French" PKG_L10N_VOICES_JA_DESCRIPTION="$PKG_L10N_VOICES_DESCRIPTION - Japanese" # Data packages PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_PATCHES_1 PKG_DATA_PATCHES_2 PKG_DATA_WORLD PKG_DATA_VIDEOS PKG_DATA_VIDEOSB PKG_DATA_CHARACTERS' # Easier upgrades from pre-20260527.1 packages PKG_DATA_PROVIDES=' kingdom-come-deliverance-data-base kingdom-come-deliverance-data-audio kingdom-come-deliverance-data-cinematics kingdom-come-deliverance-data-animations' # Easier upgrades from pre-20260528.1 packages PKG_DATA_PROVIDES="$PKG_DATA_PROVIDES kingdom-come-deliverance-l10n-common" PKG_DATA_WORLD_ID="${PKG_DATA_ID}-world" PKG_DATA_WORLD_DESCRIPTION='data world' PKG_DATA_VIDEOS_ID="${PKG_DATA_ID}-videos" PKG_DATA_VIDEOS_DESCRIPTION='data videos' PKG_DATA_VIDEOSB_ID="${PKG_DATA_ID}-videosb" PKG_DATA_VIDEOSB_DESCRIPTION='data videosb' PKG_DATA_CHARACTERS_ID="${PKG_DATA_ID}-characters" PKG_DATA_CHARACTERS_DESCRIPTION='data characters and clothes' # Easier upgrades from pre-20260527.1 packages PKG_DATA_CHARACTERS_PROVIDES=' kingdom-come-deliverance-data-clothes' PKG_DATA_PATCHES_ID="${PKG_DATA_ID}-patches" PKG_DATA_PATCHES_1_ID="${PKG_DATA_PATCHES_ID}-1" PKG_DATA_PATCHES_2_ID="${PKG_DATA_PATCHES_ID}-2" PKG_DATA_PATCHES_1_DESCRIPTION='data patches 1.3 up to 1.6' PKG_DATA_PATCHES_2_DESCRIPTION='data patches 1.7 up to 1.9' # Easier upgrades from pre-20260527.1 packages PKG_DATA_PATCHES_1_PROVIDES=' kingdom-come-deliverance-data-patch-103 kingdom-come-deliverance-data-patch-104 kingdom-come-deliverance-data-patch-105 kingdom-come-deliverance-data-patch-106' PKG_DATA_PATCHES_2_PROVIDES=' kingdom-come-deliverance-data-patch-107 kingdom-come-deliverance-data-patch-108 kingdom-come-deliverance-data-patch-109' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. # Run the game binary from its parent directory. game_exec_line() { cat <<- 'EOF' cd bin/Win64 $(wine_command) KingdomCome.exe "$@" EOF } launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') message='voix %s :' lang_fr='françaises' lang_cz='tchèques' lang_de='allemandes' lang_ja='japonaises' lang_en='anglaises' ;; ('en'|*) message='%s voices:' lang_fr='French' lang_cz='Czech' lang_de='German' lang_ja='Japanese' lang_en='English' ;; esac printf '\n' printf "$message" "$lang_fr" print_instructions $(packages_list | grep --invert-match --fixed-strings --regexp='PKG_L10N') 'PKG_L10N_FR' printf "$message" "$lang_cz" print_instructions $(packages_list | grep --invert-match --fixed-strings --regexp='PKG_L10N') 'PKG_L10N_CZ' printf "$message" "$lang_de" print_instructions $(packages_list | grep --invert-match --fixed-strings --regexp='PKG_L10N') 'PKG_L10N_DE' printf "$message" "$lang_ja" print_instructions $(packages_list | grep --invert-match --fixed-strings --regexp='PKG_L10N') 'PKG_L10N_JA' printf "$message" "$lang_en" print_instructions $(packages_list | grep --invert-match --fixed-strings --regexp='PKG_L10N') 'PKG_L10N_EN' # Clean up. working_directory_cleanup exit 0 games/play-kingsway.sh0000755000000000000000000000337214471751340014021 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Kingsway # send your bug reports to bugs@dotslashplay.it ### script_version=20260517.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='kingsway' GAME_NAME='Kingsway' ARCHIVE_BASE_0_NAME='setup_kingsway_1.1.3_(13864).exe' ARCHIVE_BASE_0_MD5='f1f02c073faa80cd2f2b6c8571032ad2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.1.3-gog13864' ARCHIVE_BASE_0_SIZE='64000' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' Kingsway.exe' CONTENT_GAME_DATA_FILES=' Music data.win' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Kingsway' APP_MAIN_EXE='Kingsway.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-knights-of-pen-and-paper-expansions.sh0000755000000000000000000000321114471751340021040 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Knights of Pen and Paper expansions: # - Deluxier Edition # send your bug reports to bugs@dotslashplay.it ### script_version=20260707.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=knights-of-pen-and-paper GAME_NAME='Knights of Pen and Paper' EXPANSION_ID_DELUXIER=deluxier EXPANSION_NAME_DELUXIER='Deluxier Edition' ARCHIVE_BASE_DELUXIER_0_NAME='gog_knights_of_pen_and_paper_1_deluxier_edition_upgrade_2.0.0.1.sh' ARCHIVE_BASE_DELUXIER_0_MD5=b3033693afd93cc885883aede7ede4b0 ARCHIVE_BASE_DELUXIER_0_SIZE=1457 ARCHIVE_BASE_DELUXIER_0_VERSION=2.34c-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' knightspp_Data/Managed/Assembly-CSharp.dll' PKG_PARENT_ID=$GAME_ID PKG_COMMON_ID=${GAME_ID}-common PKG_MAIN_PROVIDES=" $PKG_COMMON_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-knights-of-pen-and-paper.sh0000755000000000000000000000623614471751340016665 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Knights of Pen and Paper # send your bug reports to bugs@dotslashplay.it ### script_version=20260714.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=knights-of-pen-and-paper GAME_NAME='Knights of Pen and Paper' ARCHIVE_BASE_0_NAME='gog_knights_of_pen_and_paper_1_edition_2.0.0.1.sh' ARCHIVE_BASE_0_MD5=1f387b78bfe426b9396715fbfe3499b9 ARCHIVE_BASE_0_VERSION=2.34c-1 ARCHIVE_BASE_0_SIZE=114575 UNITY3D_NAME='knightspp' UNITY3D_PLUGINS=' ScreenSelector.so' # Without libCSteamworks.so, characters can not be added. # DllNotFoundException: CSteamworks # at (wrapper managed-to-native) Steamworks.NativeMethods:SteamAPI_InitSafe () # at Steamworks.SteamAPI.Init () [0x00000] in :0 # at SteamworksManager.Initialize () [0x00000] in :0 # at SteamworksManager.SetStat (System.String stat, Int32 currValue) [0x00000] in :0 # at KoPPAchievement.setAchievementValue (System.String id, Int32 aValue) [0x00000] in :0 # at KoPPAchievement.report (System.String id, Int32 aValue) [0x00000] in :0 # at GameManager.SpendGold (Int32 amount) [0x00000] in :0 # at NewPlayerScreen.ConfirmAddPlayer () [0x00000] in :0 UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_COMMON_FILES=' knightspp_Data/Managed/Assembly-CSharp.dll' PACKAGES_LIST=' PKG_BIN PKG_COMMON PKG_DATA' PKG_BIN_ARCH=32 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_COMMON PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' # ScreenSelector.so PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libstdc++.so.6" # Steam libraries PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6" PKG_COMMON_ID=${GAME_ID}-common PKG_COMMON_DESCRIPTION='Game data overridden by the Deluxier Edition' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-kyn.sh0000755000000000000000000000456514471751340012773 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Kyn # send your bug reports to bugs@dotslashplay.it ### script_version=20250909.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='kyn-game' GAME_NAME='Kyn' ## This DRM-free installer is no longer available for sale from gog.com. ARCHIVE_BASE_0_NAME='setup_kyn_update_4_(17655).exe' ARCHIVE_BASE_0_MD5='ca2a665c27ef02f0bfa4e72dc368952c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_kyn_update_4_(17655)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8c6c13b15a4d39ac9389c7c4f9ce6760' ARCHIVE_BASE_0_SIZE='7900000' ARCHIVE_BASE_0_VERSION='1.0.4-gog17655' ARCHIVE_BASE_RAR_0_NAME='setup_kyn_2.1.0.4.exe' ARCHIVE_BASE_RAR_0_MD5='a40cb85cdd40b7464eec92b2b9166f84' ARCHIVE_BASE_RAR_0_EXTRACTOR='innoextract' ARCHIVE_BASE_RAR_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_RAR_0_PART1_NAME='setup_kyn_2.1.0.4-1.bin' ARCHIVE_BASE_RAR_0_PART1_MD5='4cfdca351969f2570a3657c772fd492e' ARCHIVE_BASE_RAR_0_PART1_EXTRACTOR='unar' ARCHIVE_BASE_RAR_0_SIZE='7900000' ARCHIVE_BASE_RAR_0_VERSION='1.0-gog2.1.0.4' UNITY3D_NAME='kyn' CONTENT_PATH_DEFAULT='app' CONTENT_PATH_DEFAULT_RAR='game' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Tangrin Entertainment/Kyn' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-legend-of-grimrock.sh0000755000000000000000000000473714471751340015646 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Legend of Grimrock # send your bug reports to bugs@dotslashplay.it ### script_version=20250503.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='legend-of-grimrock' GAME_NAME='Legend of Grimrock' ARCHIVE_BASE_0_NAME='gog_legend_of_grimrock_2.1.0.5.sh' ARCHIVE_BASE_0_MD5='b63089766247484f5d2b214d924425f6' ARCHIVE_BASE_0_SIZE='690000' ARCHIVE_BASE_0_VERSION='1.3.7-gog2.1.0.5' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' Grimrock.bin.x86_64' CONTENT_GAME_BIN32_FILES=' Grimrock.bin.x86' CONTENT_GAME_DATA_FILES=' grimrock.dat grimrock.png' CONTENT_DOC_DATA_FILES=' README.linux' APP_MAIN_EXE_BIN32='Grimrock.bin.x86' APP_MAIN_EXE_BIN64='Grimrock.bin.x86_64' APP_MAIN_ICON='grimrock.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreeimage.so.3 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libminizip.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libX11.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-lennas-inception.sh0000755000000000000000000001162514471751340015433 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Lenna's Inception # send your bug reports to bugs@dotslashplay.it ### script_version=20250326.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='lennas-inception' GAME_NAME='Lenna’s Inception' ARCHIVE_BASE_2_NAME='lennas-inception-linux-amd64-stable.zip' ARCHIVE_BASE_2_MD5='2eea96efe93f463688da6540a3904ce9' ARCHIVE_BASE_2_VERSION='1.1.8-itch' ARCHIVE_BASE_2_SIZE='301938' ARCHIVE_BASE_2_URL='https://tccoxon.itch.io/lennas-inception' ARCHIVE_BASE_1_NAME='lennas-inception-linux-amd64-stable.zip' ARCHIVE_BASE_1_MD5='5f7ff7b389777b00519144df1cc98cc9' ARCHIVE_BASE_1_VERSION='1.1.5-itch.2020.11.22' ARCHIVE_BASE_1_SIZE='310000' ARCHIVE_BASE_0_NAME='lennas-inception-linux-amd64-stable.zip' ARCHIVE_BASE_0_MD5='e701126a913c2c63c89e79875dd89e86' ARCHIVE_BASE_0_VERSION='1.0.10-itch1' ARCHIVE_BASE_0_SIZE='310000' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' assets launch-config.json lib' CONTENT_DOC_MAIN_FILES=' COPYRIGHT.txt README.txt' APP_MAIN_TYPE='java' APP_MAIN_EXE='lib/libloader.jar' APP_MAIN_JAVA_OPTIONS='-Dsun.java2d.opengl=True -Djava.library.path=./lib -Xms1024m -Xmx3072m' APP_MAIN_ICON='icon.png' ## Work around the shipped binaries overuse of file descriptors APP_MAIN_PRERUN_BIN_SHIPPED=' # Work around the engine overuse of file descriptors ## 4096 is an arbitrary value, 4 times the default (1024), that seems to work for all setups. if ! ulimit -n 4096; then { printf "\\n\\033[1;33mWarning:\\033[0m\\n" printf "Your current shell interpreter has no support for ulimit -n.\\n" printf "This might lead to unending loading screens if the game engine hits the file descriptors use limit.\\n" printf "\\n" } > /dev/stderr fi ' # Since this game seems to be broken on OpenJDK ≥ 11, we build an extra package allowing to use the shipped OpenJDK 1.8 CONTENT_GAME_BIN_SHIPPED_FILES=' launch-config.json jre' PACKAGES_LIST=' PKG_MAIN PKG_BIN_SYSTEM PKG_BIN_SHIPPED' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_SYSTEM_ID="${PKG_BIN_ID}-system" PKG_BIN_SYSTEM_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_SYSTEM_DESCRIPTION='Using system-provided Java' PKG_BIN_SHIPPED_ID="${PKG_BIN_ID}-shipped" PKG_BIN_SHIPPED_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_SHIPPED_DESCRIPTION='Using shipped Java binaries' PKG_BIN_SHIPPED_ARCH='64' PKG_BIN_SHIPPED_DEPENDENCIES_LIBRARIES=' libasound.so.2 libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libjpeg.so.62 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libthread_db.so.1 libX11.so.6 libXext.so.6 libXi.so.6 libxml2.so.2 libXrender.so.1 libxslt.so.1 libXtst.so.6 libXxf86vm.so.1 libz.so.1' # Extract game icon from the .jar archive REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} unzip" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Ensure the shipped java binary can be executed chmod 755 'jre/bin/java' # Extract game icon from the .jar archive unzip -q -d . 'assets/lennasinception.jar' "$(icon_path 'APP_MAIN_ICON')" ) # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN_SYSTEM' ## Use shipped Java binary instead of system-provided one game_exec_line() { cat <<- EOF ./jre/bin/java $APP_MAIN_JAVA_OPTIONS -jar lib/libloader.jar "\$@" EOF } launchers_generation 'PKG_BIN_SHIPPED' # Build packages packages_generation case "$(messages_language)" in ('fr') message='Utilisation des binaires fournis par %s :' bin_shipped='les développeurs' bin_system='le système' ;; ('en'|*) message='Using binaries provided by %s:' bin_shipped='the developers' bin_system='the system' ;; esac printf '\n' printf "$message" "$bin_system" print_instructions 'PKG_MAIN' 'PKG_BIN_SYSTEM' printf "$message" "$bin_shipped" print_instructions 'PKG_MAIN' 'PKG_BIN_SHIPPED' # Clean up working_directory_cleanup exit 0 games/play-lords-of-xulima.sh0000755000000000000000000000677114471751340015215 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Lords of Xulima # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=lords-of-xulima GAME_NAME='Lords of Xulima' ARCHIVE_BASE_0_NAME='gog_lords_of_xulima_2.3.0.9.sh' ARCHIVE_BASE_0_MD5=480abf8d929da622eacd69595a4ebc80 ARCHIVE_BASE_0_SIZE=1605532 ARCHIVE_BASE_0_VERSION=2.1.1-1 ARCHIVE_REQUIRED_LIB64_NAME='lords-of-xulima_64bit-libraries.tar.xz' ARCHIVE_REQUIRED_LIB64_MD5=e13bdc9c7a378c13ca1c0d64575013db ARCHIVE_REQUIRED_LIB64_SIZE=236 ARCHIVE_REQUIRED_LIB64_URL='http://downloads.dotslashplay.it/games/lords-of-xulima/' CONTENT_LIBS_LIBS_PATH='.' CONTENT_LIBS_LIBS_FILES=' libbass.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_FONTS_MAIN_FILES=' FoL_BB_RU.ttf FoL_CB_RU.ttf FoL_MB_RU.ttf LOXBold.ttf LOXCondensed.ttf LOXMedium.ttf WenQuanYiZenHei.ttf' CONTENT_GAME_MAIN_FILES=' DXApp_Anim DXApp_Sounds DXApp.dx??? SOL_Anim SOL_DATA SOL_Sounds SOLCredits.jxcredits SOL.jxdat SOL.jxdatgal SOL.jxrul SOL.jxworldmap SOL.dx??? SOL_??.jx??? SOL Cinematic Resources fonts.conf local.conf LOXEditor.exe LoX.exe motionblur.fx shaders.fx PixelShader.glsl VertexShader.glsl LordsOfXulima.hqx Info.jxmod LOX.sqlite LOXEditor.suo CustomPortraits.txt Temp_InteractiveObjects_Count.txt' CONTENT_GAME0_MAIN_FILES=' Bass.Net.dll Bass.Net.dll.config Bass.Net.iOS.dll Bass.Net.Linux.dll ChnCharInfo.dll DXPlatform_Desktop.dll DXVision.dll DXVision.dll.config ExcelWrapper.dll ICSharpCode.SharpZipLib.dll Ionic.Zip.dll Ionic.Zlib.dll JXEngine.dll JXMapRenderer.dll ManagedSquish.dll OpenTK.Compatibility.dll OpenTK.Compatibility.dll.config OpenTK.dll OpenTK.dll.config OpenTK.GLControl.dll OpenTK.GLControl.dll.config SlimDX.dll SOL.dll' # Required to prevent a crash on launch: # Could not load type of field 'JX.SteamModInfo:_IDApp' (2) due to: # Could not load file or assembly 'Steamworks.NET, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. CONTENT_GAME1_MAIN_FILES=' Steamworks.NET.dll Steamworks.NET.dll.config' CONTENT_DOC_MAIN_FILES=' Manual' FAKE_HOME_PERSISTENT_DIRECTORIES=' My Games/Lords of Xulima' APP_MAIN_EXE='LoX.exe' PACKAGES_LIST=' PKG_MAIN PKG_LIBS' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' # Easier upgrades from pre-20251022.2 packages PKG_MAIN_PROVIDES=' lords-of-xulima-data' PKG_LIBS_ID=${GAME_ID}-libs PKG_LIBS_DESCRIPTION='Shipped libraries' PKG_LIBS_ARCH=64 PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 librt.so.1' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Check for presence of required 64-bit library. archive_initialize_required \ ARCHIVE_LIB64 \ ARCHIVE_REQUIRED_LIB64 # Extract game data. archive_extraction_default archive_extraction ARCHIVE_LIB64 # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-minit.sh0000755000000000000000000000421514471751340013302 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Minit # send your bug reports to bugs@dotslashplay.it ### script_version=20250421.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='minit' GAME_NAME='Minit' ARCHIVE_BASE_0_NAME='minit_linux.zip' ARCHIVE_BASE_0_MD5='9d27bfb55e24e0749637d6d97a8b3c71' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.0.0-itch1' ARCHIVE_BASE_0_URL='https://devolverdigital.itch.io/minit' CONTENT_PATH_DEFAULT='minit' CONTENT_GAME_BIN_FILES=' runner' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='runner' APP_MAIN_ICON='assets/icon.png' ## Work around Mesa-related startup crash APP_MAIN_PRERUN=' # Work around Mesa-related startup crash # cf. https://gitlab.freedesktop.org/mesa/mesa/issues/1310 export radeonsi_sync_compile=true ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-monster-sanctuary.sh0000755000000000000000000000434414471751340015663 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Monster Sanctuary # send your bug reports to bugs@dotslashplay.it ### script_version=20260512.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='monster-sanctuary' GAME_NAME='Monster Sanctuary' ARCHIVE_BASE_GAMEJOLT_0_NAME='monster-sanctuary-v0-2-8-linux.zip' ARCHIVE_BASE_GAMEJOLT_0_MD5='5f0712a8799d24c357769afa0faa06ae' ARCHIVE_BASE_GAMEJOLT_0_SIZE='142987' ARCHIVE_BASE_GAMEJOLT_0_VERSION='0.2.8-gamejolt1' ARCHIVE_BASE_GAMEJOLT_0_URL='https://gamejolt.com/games/monstersanctuary/358386' ARCHIVE_BASE_ITCH_0_NAME='Monster Sanctuary v0_2_8 Linux.zip' ARCHIVE_BASE_ITCH_0_MD5='5f0712a8799d24c357769afa0faa06ae' ARCHIVE_BASE_ITCH_0_SIZE='142987' ARCHIVE_BASE_ITCH_0_VERSION='0.2.8-itch1' ARCHIVE_BASE_ITCH_0_URL='https://sersch.itch.io/monster-sanctuary' UNITY3D_NAME='Monster Sanctuary' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='Monster Sanctuary v0_2_8 Linux' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-moon-hunters.sh0000755000000000000000000000411314471751340014615 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Moon Hunters # send your bug reports to bugs@dotslashplay.it ### script_version=20250909.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='moon-hunters' GAME_NAME='Moon Hunters' ARCHIVE_BASE_0_NAME='MoonHunters.DRMFree.Linux.2.0.3483.zip' ARCHIVE_BASE_0_MD5='ce446f42f52e8ecc3bc0d7f174d514e6' ARCHIVE_BASE_0_SIZE='1900000' ARCHIVE_BASE_0_VERSION='2.0.3483-humble171230' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/moon-hunters' UNITY3D_NAME='MoonHunters' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_LIBRARIES=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-mordheim-city-of-the-damned.sh0000755000000000000000000000547314471751340017351 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Mordheim: City of the Damned # send your bug reports to bugs@dotslashplay.it ### script_version=20260629.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='mordheim-city-of-the-damned' GAME_NAME='Mordheim: City of the Damned' ARCHIVE_BASE_0_NAME='setup_mordheim_city_of_the_damned_1.4.4.4_(64bit)_(36463).exe' ARCHIVE_BASE_0_MD5='940d8348b78e00c931757ab87616fe70' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_mordheim_city_of_the_damned_1.4.4.4_(64bit)_(36463)-1.bin' ARCHIVE_BASE_0_PART1_MD5='d4946258c60ad850b36721d038d016c8' ARCHIVE_BASE_0_PART2_NAME='setup_mordheim_city_of_the_damned_1.4.4.4_(64bit)_(36463)-2.bin' ARCHIVE_BASE_0_PART2_MD5='fafb1db20fcd987078811b2a6800bd45' ARCHIVE_BASE_0_SIZE=5436429 ARCHIVE_BASE_0_VERSION='1.4.4.4-1' UNITY3D_NAME='mordheim' # TODO: Drop unused libraries. UNITY3D_PLUGINS=' sqlite3.dll' # TODO: Are the Steam libraries required? UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll CSteamworks.dll" # TODO: Is the GOG Galaxy library required? UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll" CONTENT_PATH_DEFAULT='.' CONTENT_DOC_DATA_FILES=' release-note.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Mordheim' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -type f | while read -r dll_source; do dll_destination="${PATH_PREFIX}${dll_source#"${PATH_LIBRARIES_SYSTEM}"}" mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-my-time-at-portia.sh0000755000000000000000000000624414471751340015445 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # My Time at Portia # send your bug reports to bugs@dotslashplay.it ### script_version=20260712.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=my-time-at-portia GAME_NAME='My Time at Portia' ARCHIVE_BASE_2_NAME='setup_my_time_at_portia_build-20250620-1430-141719-win-gog_(64bit)_(83118).exe' ARCHIVE_BASE_2_MD5=d4023a582cd0b6289c556d5c5fd5ae4c ARCHIVE_BASE_2_TYPE=innosetup ARCHIVE_BASE_2_PART1_NAME='setup_my_time_at_portia_build-20250620-1430-141719-win-gog_(64bit)_(83118)-1.bin' ARCHIVE_BASE_2_PART1_MD5=bac8d05f2b63feb5f2e08ae26fd13505 ARCHIVE_BASE_2_PART2_NAME='setup_my_time_at_portia_build-20250620-1430-141719-win-gog_(64bit)_(83118)-2.bin' ARCHIVE_BASE_2_PART2_MD5=52cf469986aeb712cd82bb8e8d43cb8d ARCHIVE_BASE_2_SIZE=10104598 ARCHIVE_BASE_2_VERSION=2.0.141719-1 ARCHIVE_BASE_1_NAME='setup_my_time_at_portia_20210813-1123-141541_(64bit)_(49522).exe' ARCHIVE_BASE_1_MD5=73890f1c7a86bdcab47a00b72366928a ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_PART1_NAME='setup_my_time_at_portia_20210813-1123-141541_(64bit)_(49522)-1.bin' ARCHIVE_BASE_1_PART1_MD5=87fb19e0f0f04a499e81e7a81b49818d ARCHIVE_BASE_1_PART2_NAME='setup_my_time_at_portia_20210813-1123-141541_(64bit)_(49522)-2.bin' ARCHIVE_BASE_1_PART2_MD5=2ef18dcfdc16f1d7f52c2a49cfd63010 ARCHIVE_BASE_1_SIZE=10038490 ARCHIVE_BASE_1_VERSION=2.0.141541-1 ARCHIVE_BASE_0_NAME='setup_my_time_at_portia_2.0.141235_(64bit)_(41960).exe' ARCHIVE_BASE_0_MD5=9f21752466f3ce96719cfea66bce05d5 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_PART1_NAME='setup_my_time_at_portia_2.0.141235_(64bit)_(41960)-1.bin' ARCHIVE_BASE_0_PART1_MD5=881179a255b81a165411ca88fc99dcc7 ARCHIVE_BASE_0_PART2_NAME='setup_my_time_at_portia_2.0.141235_(64bit)_(41960)-2.bin' ARCHIVE_BASE_0_PART2_MD5=b84720aea74b713c8738197872f4add0 ARCHIVE_BASE_0_SIZE=9800000 ARCHIVE_BASE_0_VERSION=2.0.141235-1 UNITY3D_NAME='Portia' # TODO: Unity3D plugins CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Pathea Games/My Time at Portia' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Easier upgrades from pre-20260711.1 packages PKG_DATA_PROVIDES=my-time-at-portia-data-asssetbundles # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-neurodeck-psychological-deckbuilder.sh0000755000000000000000000000425314471751340021254 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Neurodeck: Psychological Deckbuilder # send your bug reports to bugs@dotslashplay.it ### script_version=20251014.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='neurodeck-psychological-deckbuilder' GAME_NAME='Neurodeck: Psychological Deckbuilder' ARCHIVE_BASE_1_NAME='neurodeck_psychological_deckbuilder_1_5_3_49984.sh' ARCHIVE_BASE_1_MD5='609908c4cfa583e4fc6d6b3c1764f91b' ARCHIVE_BASE_1_SIZE='690000' ARCHIVE_BASE_1_VERSION='1.5.3-gog49984' UNITY3D_NAME='Neurodeck' UNITY3D_PLUGINS=' libfmodstudio.so libfmodstudioL.so libresonanceaudio.so libStandaloneFileBrowser.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-3.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Some shipped Unity3D plugins require an executable stack. game_exec_line() { cat <<- EOF GLIBC_TUNABLES=glibc.rtld.execstack=2 ./Neurodeck.x86_64 -logFile "./logs/\$(date +%F-%R).log" "\$@" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-neverwinter-nights-1-enhanced-edition-localisations.sh0000755000000000000000000001145014471751340024217 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Neverwinter Nights: Enhanced Edition localisations: # - French # - Polish # - German # send your bug reports to bugs@dotslashplay.it ### script_version=20260710.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='neverwinter-nights-1-enhanced-edition' GAME_NAME='Neverwinter Nights: Enhanced Edition' EXPANSION_ID_FR=l10n-fr EXPANSION_ID_PL=l10n-pl EXPANSION_ID_DE=l10n-de EXPANSION_NAME_FR='French localisation' EXPANSION_NAME_PL='Polish localisation' EXPANSION_NAME_DE='German localisation' ARCHIVE_BASE_FR_7_NAME='neverwinter_nights_enhanced_edition_french_extras_89_8193_37_17_85648.sh' ARCHIVE_BASE_FR_7_MD5=c1681fef83e9f97fcea232393b476ab4 ARCHIVE_BASE_FR_7_SIZE=833009 ARCHIVE_BASE_FR_7_VERSION=89.8193.37.17-1 ARCHIVE_BASE_PL_7_NAME='neverwinter_nights_enhanced_edition_polish_extras_89_8193_37_17_85648.sh' ARCHIVE_BASE_PL_7_MD5=e5750ccc89ae65570f662e9eeed1b4dc ARCHIVE_BASE_PL_7_SIZE=820818 ARCHIVE_BASE_PL_7_VERSION=89.8193.37.17-1 ARCHIVE_BASE_DE_7_NAME='neverwinter_nights_enhanced_edition_german_extras_89_8193_37_17_85648.sh' ARCHIVE_BASE_DE_7_MD5=75c86bf3eec708d0c20ea261b2cef01c ARCHIVE_BASE_DE_7_SIZE=892427 ARCHIVE_BASE_DE_7_VERSION=89.8193.37.17-1 ARCHIVE_BASE_FR_6_NAME='neverwinter_nights_enhanced_edition_french_extras_88_8193_36_13_72824.sh' ARCHIVE_BASE_FR_6_MD5=088b8c890ecbf09b86a7c75e07ef43f1 ARCHIVE_BASE_FR_6_SIZE=833009 ARCHIVE_BASE_FR_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_PL_6_NAME='neverwinter_nights_enhanced_edition_polish_extras_88_8193_36_13_72824.sh' ARCHIVE_BASE_PL_6_MD5=89e2dced24b885c04e1c45bc71e9960f ARCHIVE_BASE_PL_6_SIZE=820818 ARCHIVE_BASE_PL_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_DE_6_NAME='neverwinter_nights_enhanced_edition_german_extras_88_8193_36_13_72824.sh' ARCHIVE_BASE_DE_6_MD5=082281faf84fc9be25e1aaf21a99a1ce ARCHIVE_BASE_DE_6_SIZE=892427 ARCHIVE_BASE_DE_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_FR_5_NAME='neverwinter_nights_enhanced_edition_french_extras_87_8193_35_40_65678.sh' ARCHIVE_BASE_FR_5_MD5=88b889d8eefadfde33d0fad8bac1b9be ARCHIVE_BASE_FR_5_SIZE=833404 ARCHIVE_BASE_FR_5_VERSION=87.8193.35.40-1 ARCHIVE_BASE_PL_5_NAME='neverwinter_nights_enhanced_edition_polish_extras_87_8193_35_40_65678.sh' ARCHIVE_BASE_PL_5_MD5=c78a405c135ffad7e126bd44113ecc86 ARCHIVE_BASE_PL_5_SIZE=833404 ARCHIVE_BASE_PL_5_VERSION=87.8193.35.40-1 ARCHIVE_BASE_DE_5_NAME='neverwinter_nights_enhanced_edition_german_extras_87_8193_35_40_65678.sh' ARCHIVE_BASE_DE_5_MD5=596b075b63b8f9f76bbf1eeaa8150cfb ARCHIVE_BASE_DE_5_SIZE=892816 ARCHIVE_BASE_DE_5_VERSION=87.8193.35.40-1 ARCHIVE_BASE_FR_4_NAME='neverwinter_nights_enhanced_edition_french_extras_85_8193_33_50393.sh' ARCHIVE_BASE_FR_4_MD5=f39ecc55b15740322d8ae860ccfecbc5 ARCHIVE_BASE_FR_4_SIZE=840000 ARCHIVE_BASE_FR_4_VERSION=85.8193.33-1 ARCHIVE_BASE_DE_4_NAME='neverwinter_nights_enhanced_edition_german_extras_85_8193_33_50393.sh' ARCHIVE_BASE_DE_4_MD5=d20a22fc2dfdeca4bb71bb7fd7e13a82 ARCHIVE_BASE_DE_4_SIZE=900000 ARCHIVE_BASE_DE_4_VERSION=85.8193.33-1 ARCHIVE_BASE_FR_1_NAME='neverwinter_nights_enhanced_edition_french_extras_81_8193_16_41300.sh' ARCHIVE_BASE_FR_1_MD5=1fe0cc196c146834ff186935ae2d3d66 ARCHIVE_BASE_FR_1_SIZE=832881 ARCHIVE_BASE_FR_1_VERSION=81.8193.16-1 ARCHIVE_BASE_PL_1_NAME='neverwinter_nights_enhanced_edition_polish_extras_81_8193_16_41300.sh' ARCHIVE_BASE_PL_1_MD5=8ff3b7d282b9a3822425823e9efd545f ARCHIVE_BASE_PL_1_SIZE=820690 ARCHIVE_BASE_PL_1_VERSION=81.8193.16-1 ARCHIVE_BASE_DE_1_NAME='neverwinter_nights_enhanced_edition_german_extras_81_8193_16_41300.sh' ARCHIVE_BASE_DE_1_MD5=1e81fcf9d40bcf23dec0a77069222a52 ARCHIVE_BASE_DE_1_SIZE=892298 ARCHIVE_BASE_DE_1_VERSION=81.8193.16-1 ARCHIVE_BASE_FR_0_NAME='neverwinter_nights_enhanced_edition_french_extras_80_8193_9_37029.sh' ARCHIVE_BASE_FR_0_MD5=5e0564a161259b003c7dc0f8d8aa743f ARCHIVE_BASE_FR_0_SIZE=840000 ARCHIVE_BASE_FR_0_VERSION=80.8193.9-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' lang/??/data' PKG_MAIN_PROVIDES=${GAME_ID}-l10n PKG_PARENT_ID=$GAME_ID PKG_MAIN_DEPENDENCIES_SIBLINGS=PKG_PARENT # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-neverwinter-nights-1-enhanced-edition.sh0000755000000000000000000001421114471751340021353 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Christian Stalp # SPDX-FileCopyrightText: © 2023 Jacek Szafarkiewicz set -o errexit ### # Neverwinter Nights: Enhanced Edition # send your bug reports to bugs@dotslashplay.it ### script_version=20260710.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=neverwinter-nights-1-enhanced-edition GAME_NAME='Neverwinter Nights: Enhanced Edition' ARCHIVE_BASE_FR_7_NAME='neverwinter_nights_enhanced_edition_french_89_8193_37_17_85648.sh' ARCHIVE_BASE_FR_7_MD5=24dd5f8f35b59393d018a67ed9d57652 ARCHIVE_BASE_FR_7_SIZE=6383779 ARCHIVE_BASE_FR_7_VERSION=89.8193.37.17-1 ARCHIVE_BASE_EN_7_NAME='neverwinter_nights_enhanced_edition_89_8193_37_17_85648.sh' ARCHIVE_BASE_EN_7_MD5=3255edc809ddfefcc92366dcc64290dc ARCHIVE_BASE_EN_7_SIZE=6383779 ARCHIVE_BASE_EN_7_VERSION=89.8193.37.17-1 ARCHIVE_BASE_FR_6_NAME='neverwinter_nights_enhanced_edition_french_88_8193_36_13_72824.sh' ARCHIVE_BASE_FR_6_MD5=ed1a605cc15b5416d0eda7840dd4f8d9 ARCHIVE_BASE_FR_6_SIZE=6250881 ARCHIVE_BASE_FR_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_PL_6_NAME='neverwinter_nights_enhanced_edition_polish_88_8193_36_13_72824.sh' ARCHIVE_BASE_PL_6_MD5=351e857d4e6a75d18721a3964a937bfe ARCHIVE_BASE_PL_6_SIZE=6250881 ARCHIVE_BASE_PL_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_DE_6_NAME='neverwinter_nights_enhanced_edition_german_88_8193_36_13_72824.sh' ARCHIVE_BASE_DE_6_MD5=2218e12a8d09e1b799f11402c93d1eec ARCHIVE_BASE_DE_6_SIZE=6250881 ARCHIVE_BASE_DE_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_EN_6_NAME='neverwinter_nights_enhanced_edition_88_8193_36_13_72824.sh' ARCHIVE_BASE_EN_6_MD5=922f474f2e1573abc66f803c752f2159 ARCHIVE_BASE_EN_6_SIZE=6250881 ARCHIVE_BASE_EN_6_VERSION=88.8193.36.13-1 ARCHIVE_BASE_FR_5_NAME='neverwinter_nights_enhanced_edition_french_87_8193_35_40_65678.sh' ARCHIVE_BASE_FR_5_MD5=319194e7a229b24b19f7454d8ed860d6 ARCHIVE_BASE_FR_5_SIZE=6253452 ARCHIVE_BASE_FR_5_VERSION=87.8193.35.40-1 ARCHIVE_BASE_PL_5_NAME='neverwinter_nights_enhanced_edition_polish_87_8193_35_40_65678.sh' ARCHIVE_BASE_PL_5_MD5=d4c3d4c4af501424a60bf9e09e5a2f01 ARCHIVE_BASE_PL_5_SIZE=6253452 ARCHIVE_BASE_PL_5_VERSION=87.8193.35.40-1 ARCHIVE_BASE_EN_5_NAME='neverwinter_nights_enhanced_edition_87_8193_35_40_65678.sh' ARCHIVE_BASE_EN_5_MD5=c1191f9e19f1da52f1424025017cf56f ARCHIVE_BASE_EN_5_SIZE=6253452 ARCHIVE_BASE_EN_5_VERSION=87.8193.35.40-1 ARCHIVE_BASE_FR_4_NAME='neverwinter_nights_enhanced_edition_french_85_8193_33_50393.sh' ARCHIVE_BASE_FR_4_MD5=19b036e3c07fd4aa9a835de05b4aea1f ARCHIVE_BASE_FR_4_SIZE=6200000 ARCHIVE_BASE_FR_4_VERSION=85.8193.33-1 ARCHIVE_BASE_EN_4_NAME='neverwinter_nights_enhanced_edition_85_8193_33_50393.sh' ARCHIVE_BASE_EN_4_MD5=4e6c4f7bd75791a9c726b7b573cfafe5 ARCHIVE_BASE_EN_4_SIZE=6300000 ARCHIVE_BASE_EN_4_VERSION=85.8193.33-1 ARCHIVE_BASE_EN_3_NAME='neverwinter_nights_enhanced_edition_83_8193_23_47201.sh' ARCHIVE_BASE_EN_3_MD5=b85d2ea70aa6dba1096e97e944d98141 ARCHIVE_BASE_EN_3_SIZE=6300000 ARCHIVE_BASE_EN_3_VERSION=83.8193.23-1 ARCHIVE_BASE_EN_2_NAME='neverwinter_nights_enhanced_edition_82_8193_20_1_43497.sh' ARCHIVE_BASE_EN_2_MD5=c80e73f0305ad99355cc089c632b8b0c ARCHIVE_BASE_EN_2_SIZE=6200000 ARCHIVE_BASE_EN_2_VERSION=82.8193.20.1-1 ARCHIVE_BASE_FR_1_NAME='neverwinter_nights_enhanced_edition_french_81_8193_16_41300.sh' ARCHIVE_BASE_FR_1_MD5=67f42c1a1604a26fdbcd0cbc800856f5 ARCHIVE_BASE_FR_1_SIZE=6200000 ARCHIVE_BASE_FR_1_VERSION=81.8193.16-1 ARCHIVE_BASE_EN_1_NAME='neverwinter_nights_enhanced_edition_81_8193_16_41300.sh' ARCHIVE_BASE_EN_1_MD5=a52646002ab14c452731b0636fdc8278 ARCHIVE_BASE_EN_1_SIZE=6200000 ARCHIVE_BASE_EN_1_VERSION=81.8193.16-1 ARCHIVE_BASE_EN_0_NAME='neverwinter_nights_enhanced_edition_80_8193_9_37029.sh' ARCHIVE_BASE_EN_0_MD5=fb98f859b5f5516fc7df8b00c7264c07 ARCHIVE_BASE_EN_0_VERSION=80.8193.9-1 ARCHIVE_BASE_EN_0_SIZE=5000000 CONTENT_PATH_DEFAULT='data/noarch/game' # TODO: Is the sh script required? CONTENT_GAME_MAIN_FILES=' bin/linux-x86/build.txt bin/linux-x86/launch.sh bin/linux-x86/nwmain-linux' # TODO: Dedicated package for the server CONTENT_GAME0_MAIN_FILES=' bin/linux-x86/nwserver-linux' CONTENT_GAME1_MAIN_FILES=' data ovr lang/??/data' CONTENT_DOC_MAIN_RELATIVE_PATH='lang' CONTENT_DOC_MAIN_FILES=' ??/docs' APP_MAIN_EXE='bin/linux-x86/nwmain-linux' APP_MAIN_ICON='bin/win32/nwmain.exe' # TODO: Dedicated package for the server APP_SERVER_ID=${GAME_ID}-server APP_SERVER_NAME="${GAME_NAME} - server" APP_SERVER_EXE='bin/linux-x86/nwserver-linux' APP_SERVER_ICON='bin/win32/nwserver.exe' PKG_MAIN_ARCH=64 PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6' # Easier upgrades from pre-20260710.1 packages PKG_MAIN_PROVIDES=neverwinter-nights-1-enhanced-edition-data # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Force the use of system-provided SDL. APP_MAIN_PRERUN="$(application_prerun APP_MAIN) $(launcher_tweak_sdl_override)" PKG_MAIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_MAIN) libSDL2-2.0.so.0" # Run the game binary from its parent directory. game_exec_line() { local application=$1 local application_path application_directory application_file application_path=$(application_exe $application) application_directory=$(dirname "$application_path") application_file=$(basename "$application_path") cat <<- EOF cd "$application_directory" "./${application_file}" "\$@" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-neverwinter-nights-1.sh0000755000000000000000000002733414471751340016171 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Neverwinter Nights # send your bug reports to bugs@dotslashplay.it ### script_version=20260528.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='neverwinter-nights-1' GAME_NAME='Neverwinter Nights' ARCHIVE_BASE_DE_0_NAME='setup_nwn_diamond_german_2.1.0.21.exe' ARCHIVE_BASE_DE_0_MD5='63a32f4fdb2939e73ac40d80f5798e28' ARCHIVE_BASE_DE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_DE_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_DE_0_PART1_NAME='setup_nwn_diamond_german_2.1.0.21-1.bin' ARCHIVE_BASE_DE_0_PART1_MD5='e6c50d030b046c05ccf87601844ccc23' ARCHIVE_BASE_DE_0_PART1_TYPE='rar' ARCHIVE_BASE_DE_0_SIZE='4400000' ARCHIVE_BASE_DE_0_VERSION='1.68-gog2.1.0.21' ARCHIVE_BASE_EN_0_NAME='setup_nwn_diamond_2.1.0.21.exe' ARCHIVE_BASE_EN_0_MD5='cd809b9d22022adb01b0d1d70c5afa8e' ARCHIVE_BASE_EN_0_EXTRACTOR='innoextract' ARCHIVE_BASE_EN_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_EN_0_PART1_NAME='setup_nwn_diamond_2.1.0.21-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='ce60bf104cc6082fe79d6f0bd7b48f51' ARCHIVE_BASE_EN_0_PART1_TYPE='rar' ARCHIVE_BASE_EN_0_SIZE='5100000' ARCHIVE_BASE_EN_0_VERSION='1.69-gog2.1.0.21' ARCHIVE_BASE_ES_0_NAME='setup_nwn_diamond_spanish_2.1.0.21.exe' ARCHIVE_BASE_ES_0_MD5='70448f984b66a814bda712ecfef5977e' ARCHIVE_BASE_ES_0_EXTRACTOR='innoextract' ARCHIVE_BASE_ES_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_ES_0_PART1_NAME='setup_nwn_diamond_spanish_2.1.0.21-1.bin' ARCHIVE_BASE_ES_0_PART1_MD5='3b6dee19655a1280273c5d0652f74ab5' ARCHIVE_BASE_ES_0_PART1_TYPE='rar' ARCHIVE_BASE_ES_0_SIZE='4400000' ARCHIVE_BASE_ES_0_VERSION='1.68-gog2.1.0.21' ARCHIVE_BASE_FR_0_NAME='setup_nwn_diamond_french_2.1.0.21.exe' ARCHIVE_BASE_FR_0_MD5='caadc0f809e10ddf781cacbebd1b25d9' ARCHIVE_BASE_FR_0_EXTRACTOR='innoextract' ARCHIVE_BASE_FR_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_FR_0_PART1_NAME='setup_nwn_diamond_french_2.1.0.21-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='aeb4b99635bdc046560477b2b11307e3' ARCHIVE_BASE_FR_0_PART1_TYPE='rar' ARCHIVE_BASE_FR_0_SIZE='4300000' ARCHIVE_BASE_FR_0_VERSION='1.68-gog2.1.0.21' ARCHIVE_BASE_PL_0_NAME='setup_nwn_diamond_polish_2.1.0.21.exe' ARCHIVE_BASE_PL_0_MD5='5779b5c690984a79c617efc7649e66a3' ARCHIVE_BASE_PL_0_EXTRACTOR='innoextract' ARCHIVE_BASE_PL_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_PL_0_PART1_NAME='setup_nwn_diamond_polish_2.1.0.21-1.bin' ARCHIVE_BASE_PL_0_PART1_MD5='540c20cd68079c7a214af65296b4a8b1' ARCHIVE_BASE_PL_0_PART1_TYPE='rar' ARCHIVE_BASE_PL_0_SIZE='4400000' ARCHIVE_BASE_PL_0_VERSION='1.68-gog2.1.0.21' CONTENT_PATH_DEFAULT='game' # TODO: Check if the following fake library is still required. CONTENT_LIBS_BIN_PATH='lib' CONTENT_LIBS_BIN_FILES=' libtxc_dxtn.so' CONTENT_LIBS0_BIN_PATH='miles' CONTENT_LIBS0_BIN_FILES=' libmss.so libmss.so.6 libmss.so.6.5.2' CONTENT_GAME_BIN_FILES=' dmclient fixinstall nwmain nwserver nwn.ini' CONTENT_GAME_BIN_PATH='.' CONTENT_GAME_BIN_FILES=' dmclient fixinstall nwmain nwserver nwn.ini miles/mssdsp.flt miles/mssmp3.asi miles/msssoft.m3d' CONTENT_GAME0_BIN_PATH='support/app' CONTENT_GAME0_BIN_FILES=' nwncdkey.ini' CONTENT_GAME1_BIN_PATH='.' CONTENT_GAME1_BIN_FILES=' nwmovies nwmovies_install.pl' CONTENT_GAME_L10N_FILES=' *.key *.tlk movies/Chap?_Chap?.bik movies/credits.bik movies/ending.bik movies/prelude.bik movies/prelude_chap1.bik movies/XP?_*.bik data/*convo.bif data/models_??.bif data/music*.bif data/templates.bif data/*voicesets.bif data/xp1_sounds*.bif data/xp2_german.bif data/xp2_french.bif data/xp2_polish.bif' CONTENT_DOC_L10N_RELATIVE_PATH='docs' CONTENT_DOC_L10N_FILES=' *.pdf *.rtf *.txt' CONTENT_GAME_DATA_FILES=' ambient dmvault hak localvault modules music nwm override texturepacks movies/*.bik data/*.bif' CONTENT_GAME0_DATA_PATH='.' CONTENT_GAME0_DATA_FILES=' override' CONTENT_DOC_DATA_PATH='.' CONTENT_DOC_DATA_FILES=' *.txt' USER_PERSISTENT_DIRECTORIES=' portraits saves servervault' USER_PERSISTENT_FILES=' *.ini' # NWMovies expects the game binary to be writable, # and it should not be reset to its default state between runs. USER_PERSISTENT_FILES="$USER_PERSISTENT_FILES nwmain" APP_MAIN_EXE='nwmain' APP_MAIN_ICON='nwn.exe' # Apply required SDL tweaks. # TODO: Check if these are still required. APP_MAIN_PRERUN=' export SDL_MOUSE_RELATIVE=0 export SDL_VIDEO_X11_DGAMOUSE=0 ' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PACKAGES_LIST_NWMOVIES="$PACKAGES_LIST PKG_NWMOVIES" PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 libSDL-1.2.so.0' PKG_NWMOVIES_ID="${GAME_ID}-nwmovies" PKG_NWMOVIES_DESCRIPTION='NWMovies' PKG_NWMOVIES_ARCH='32' PKG_NWMOVIES_DEPENDENCIES_SIBLINGS=' PKG_BIN' # TODO: Check if we can replace mpv with something that is not welcoming AI pollution. PKG_NWMOVIES_DEPENDENCIES_COMMANDS=' mpv' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_DE="${PKG_L10N_BASE_ID}-de" PKG_L10N_ID_ES="${PKG_L10N_BASE_ID}-es" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_ID_PL="${PKG_L10N_BASE_ID}-pl" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_DE='German localization' PKG_L10N_DESCRIPTION_ES='Spanish localization' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_PL='Polish localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Check for the presence of the game engine archive. ARCHIVE_REQUIRED_LINUX_COMMON_NAME='nwn-linux-common.tar.gz' ARCHIVE_REQUIRED_LINUX_COMMON_URL='https://downloads.dotslashplay.it/games/neverwinter-nights-1/' ARCHIVE_REQUIRED_LINUX_COMMON_MD5='9aa7dae2ba9111c96b10679fa085c66e' case "$(package_version)" in ('1.69-'*) ARCHIVE_REQUIRED_LINUX_NAME='nwn-linux-1.69.2023-10-07.tar.xz' ARCHIVE_REQUIRED_LINUX_URL='https://downloads.dotslashplay.it/games/neverwinter-nights-1/' ARCHIVE_REQUIRED_LINUX_MD5='8ea69b40842f9721051d4ddd6510d3b2' ;; ('1.68-'*) ARCHIVE_REQUIRED_LINUX_NAME='nwn-linux-1.68.2023-10-07.tar.xz' ARCHIVE_REQUIRED_LINUX_URL='https://downloads.dotslashplay.it/games/neverwinter-nights-1/' ARCHIVE_REQUIRED_LINUX_MD5='12ff7f8604d04194b87cf70832bb86fa' ;; esac archive_initialize_required \ 'ARCHIVE_LINUX_COMMON' \ 'ARCHIVE_REQUIRED_LINUX_COMMON' archive_initialize_required \ 'ARCHIVE_LINUX' \ 'ARCHIVE_REQUIRED_LINUX' # Check for the presence of the NWMovies archive. ARCHIVE_OPTIONAL_NWMOVIES_NAME='nwmovies-mpv.tar.gz' ARCHIVE_OPTIONAL_NWMOVIES_URL='https://sites.google.com/site/gogdownloader/nwmovies-mpv.tar.gz' ARCHIVE_OPTIONAL_NWMOVIES_MD5='71f3d88db1cd75665b62b77f7604dce1' archive_initialize_optional \ 'ARCHIVE_NWMOVIES' \ 'ARCHIVE_OPTIONAL_NWMOVIES' # Check for the presence of NWMovies build dependencies if archive_is_available 'ARCHIVE_NWMOVIES'; then case "$(messages_language)" in ('fr') message='Contrôle de la présence des dépendances requises pour la compilation de NWMovies…' ;; ('en'|*) message='Check for the presence of NWMovies build dependencies…' ;; esac printf '%s\n' "$message" tests_directory="${PLAYIT_WORKDIR}/tests" mkdir --parents "$tests_directory" test_source="${tests_directory}/build-deps.c" test_binary="${tests_directory}/build-deps.so" cat > "$test_source" <<-EOF #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main () { return 0; } EOF gcc -shared -Wall -fPIC -ldl -m32 "$test_source" -o "$test_binary" rm --recursive "$tests_directory" fi # Extract game data. archive_extraction_default archive_extraction 'ARCHIVE_LINUX_COMMON' archive_extraction 'ARCHIVE_LINUX' if archive_is_available 'ARCHIVE_NWMOVIES'; then archive_extraction 'ARCHIVE_NWMOVIES' fi # Fix case inconsistencies. path_archive_contents=$(path_archive_contents) if [ -e "${path_archive_contents}/dialog.TLK" ]; then mv \ "${path_archive_contents}/dialog.TLK" \ "${path_archive_contents}/dialog.tlk" fi if [ -e "${path_archive_contents}/dialogF.TLK" ]; then mv \ "${path_archive_contents}/dialogF.TLK" \ "${path_archive_contents}/dialogf.tlk" fi for tiles in 'a' 'b' 'c'; do if [ -e "${path_archive_contents}/texturepacks/Tiles_TP${tiles}.ERF" ]; then mv \ "${path_archive_contents}/texturepacks/Tiles_TP${tiles}.ERF" \ "${path_archive_contents}/texturepacks/Tiles_Tp${tiles}.erf" fi done # Build the NWMovies video player if archive_is_available 'ARCHIVE_NWMOVIES'; then ( cd "${PLAYIT_WORKDIR}/gamedata/nwmovies" case "$(messages_language)" in ('fr') message='Construction du lecteur vidéo NWMovies…' ;; ('en'|*) message='Building NWMovies video player…' ;; esac printf '%s\n' "$message" sed --in-place 's/mpv /mpv --fs --no-osc --no-pause /' 'nwplaymovie' chmod 755 'nwmovies_install.pl' export CFLAGS='-w' # TODO: Check if we can byoass this perl script. ./nwmovies_install.pl build >/dev/null 2>&1 ) fi # Include game data. content_inclusion_icons 'PKG_DATA' if archive_is_available 'ARCHIVE_NWMOVIES'; then PACKAGES_LIST="$PACKAGES_LIST_NWMOVIES" # TODO: An identifier more explicit than "GAME1_BIN" should be used. path_archive_contents_nwmovies=$(path_archive_contents 'GAME1_BIN') # TODO: CONTENT_LIBS_xxx could be used here. install -D --mode=644 \ --target-directory="$(package_path 'PKG_NWMOVIES')$(path_libraries)" \ "${path_archive_contents_nwmovies}/nwmovies/nwmovies.so" \ "${path_archive_contents_nwmovies}/nwmovies/libdis/libdisasm.so" # TODO: CONTENT_GAME_xxx could be used here. install -D --mode=755 \ "${path_archive_contents_nwmovies}/nwmovies/nwplaymovie" \ "$(package_path 'PKG_NWMOVIES')$(path_game_data)/nwplaymovie" # TODO: CONTENT_DOC_xxx could be used here. install -D --mode=644 \ "${path_archive_contents_nwmovies}/nwmovies/nwmovies.README.txt" \ "$(package_path 'PKG_NWMOVIES')$(path_documentation)/nwmovies.README.txt" rm --recursive \ "${path_archive_contents_nwmovies}/nwmovies/libdis" \ "${path_archive_contents_nwmovies}/nwmovies/nwmovies.so" \ "${path_archive_contents_nwmovies}/nwmovies/nwmovies.README.txt" \ "${path_archive_contents_nwmovies}/nwmovies/nwplaymovie" # NWMovies expects some libraries in hardcoded paths. mkdir --parents "$(package_path 'PKG_NWMOVIES')$(path_game_data)/nwmovies/libdis" ln --symbolic \ "$(path_libraries)/libdisasm.so" \ "$(package_path 'PKG_NWMOVIES')$(path_game_data)/nwmovies/libdis/libdisasm.so" fi content_inclusion_default # Write launchers. # Play videos using NWMovies, if it is available. nwmovies_library="$(path_libraries)/nwmovies.so" APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Play videos using NWMovies, if it is available. nwmovies_library="'"${nwmovies_library}"'" if [ -e "$nwmovies_library" ]; then export LD_PRELOAD="$nwmovies_library" fi ' # Do not copy the game binary into the game prefix, # as changing it timestamp would cause the initial NWMovies setup to reset. native_launcher_binary_copy() { return 0; } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-oceans-heart.sh0000755000000000000000000000572314471751340014540 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Ocean's Heart # send your bug reports to bugs@dotslashplay.it ### script_version=20260518.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='oceans-heart' GAME_NAME='Ocean’s Heart' ARCHIVE_BASE_1_NAME='setup_oceans_heart_1.0.3(5)_(71004).exe' ARCHIVE_BASE_1_MD5='ef6b2c679720c45cc8670df57637b281' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='245250' ARCHIVE_BASE_1_VERSION='1.0.3.5-gog71004' ARCHIVE_BASE_0_NAME='setup_oceans_heart_1.0.2(6)_(64bit)_(46977).exe' ARCHIVE_BASE_0_MD5='38550d8340ea0a7ad61b41aeabd13c3d' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='250000' ARCHIVE_BASE_0_VERSION='1.0.2.6-gog46977' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' oceans-heart.exe' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' libbrotlicommon.dll libbrotlidec.dll libbz2-1.dll libfreetype-6.dll libgcc_s_seh-1.dll libglib-2.0-0.dll libgraphite2.dll libharfbuzz-0.dll libiconv-2.dll libintl-8.dll libjpeg-8.dll libmodplug-1.dll libogg.dll libpcre2-8-0.dll libphysfs.dll libpng16-16.dll libsolarus.dll libssp-0.dll libstdc++-6.dll libvorbis-0.dll libvorbisfile-3.dll libwebp-7.dll libwinpthread-1.dll lua51.dll OpenAL32.dll SDL2.dll SDL2_image.dll SDL2_ttf.dll zlib1.dll' # TODO: Check if the Steam libraries are required. # TODO: Install libraries in a standard path. CONTENT_GAME1_BIN_FILES=' luasteam.dll steam_api64.dll' CONTENT_GAME_DATA_FILES=' data.solarus' CONTENT_DOC_DATA_FILES=' license.solarus.txt license.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/OceansHeart' APP_MAIN_EXE='oceans-heart.exe' # Prevent errors with SDL backends unsupported on Windows. APP_MAIN_PRERUN=' # Prevent errors with SDL backends unsupported on Windows. case "${SDL_VIDEODRIVER:-}" in ("wayland"|"x11") unset SDL_VIDEODRIVER ;; esac ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-paper-sorcerer.sh0000755000000000000000000000456214471751340015120 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Paper Sorcerer # send your bug reports to bugs@dotslashplay.it ### script_version=20250802.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='paper-sorcerer' GAME_NAME='Paper Sorcerer' ARCHIVE_BASE_0_NAME='PaperSorcerer2.5Linux.tar.bz2' ARCHIVE_BASE_0_MD5='243a14601379175b840e6878b211fe1a' ARCHIVE_BASE_0_SIZE='450000' ARCHIVE_BASE_0_VERSION='2.5-humble150512' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/paper-sorcerer' UNITY3D_NAME='PaperSorcererLinux' CONTENT_PATH_DEFAULT='PaperSorcerer2.5Linux' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not disable the MAP_32BIT flag, ## as it would lead to a crash on launch. unity3d_disable_map32bit() { return 0; } launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pathfinder-kingmaker-expansions.sh0000755000000000000000000001002214471751340020432 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2025 Christian Stalp # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Pathfinder: Kingmaker expansions: # - Bloody Mess # - The Wildcards # - Varnhold's Lot # - Arcane Unleashed # - Beneath The Stolen Lands # - Pet Red Panda # - Players Portraits # send your bug reports to bugs@dotslashplay.it ### script_version=20260510.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='pathfinder-kingmaker' GAME_NAME='Pathfinder: Kingmaker' EXPANSION_ID_BLOODY_MESS='bloody-mess' EXPANSION_NAME_BLOODY_MESS='Bloody Mess' EXPANSION_ID_THE_WILDCARDS='the-wildcards' EXPANSION_NAME_THE_WILDCARDS='The Wildcards' EXPANSION_ID_VARNHOLDS_LOT='varnholds-lot' EXPANSION_NAME_VARNHOLDS_LOT='Varnhold’s Lot' EXPANSION_ID_ARCANE_UNLEASHED='arcane-unleashed' EXPANSION_NAME_ARCANE_UNLEASHED='Arcane Unleashed' EXPANSION_ID_BENEATH_THE_STOLEN_LANDS='beneath-the-stolen-lands' EXPANSION_NAME_BENEATH_THE_STOLEN_LANDS='Beneath The Stolen Lands' EXPANSION_ID_PET_RED_PANDA='pet-red-panda' EXPANSION_NAME_PET_RED_PANDA='Pet Red Panda' EXPANSION_ID_PLAYERS_PORTRAITS='players-portraits' EXPANSION_NAME_PLAYERS_PORTRAITS='Players Portraits' ARCHIVE_BASE_BLOODY_MESS_0_NAME='pathfinder_kingmaker_bloody_mess_2_1_5d_41987.sh' ARCHIVE_BASE_BLOODY_MESS_0_MD5='fadac08c9ede4f5167901330c8d08764' ARCHIVE_BASE_BLOODY_MESS_0_SIZE='2000' ARCHIVE_BASE_BLOODY_MESS_0_VERSION='2.1.5d-gog41097' ARCHIVE_BASE_THE_WILDCARDS_0_NAME='pathfinder_kingmaker_the_wildcards_2_1_5d_41987.sh' ARCHIVE_BASE_THE_WILDCARDS_0_MD5='934c97675f6156fb96dfe4f38038691c' ARCHIVE_BASE_THE_WILDCARDS_0_SIZE='2000' ARCHIVE_BASE_THE_WILDCARDS_0_VERSION='2.1.5d-gog41097' ARCHIVE_BASE_VARNHOLDS_LOT_0_NAME='pathfinder_kingmaker_varnhold_s_lot_2_1_5d_41987.sh' ARCHIVE_BASE_VARNHOLDS_LOT_0_MD5='05fc3268fdcc29214ad380e7d5e6b267' ARCHIVE_BASE_VARNHOLDS_LOT_0_SIZE='2000' ARCHIVE_BASE_VARNHOLDS_LOT_0_VERSION='2.1.5d-gog41097' ARCHIVE_BASE_ARCANE_UNLEASHED_0_NAME='pathfinder_kingmaker_arcane_unleashed_2_1_5d_41987.sh' ARCHIVE_BASE_ARCANE_UNLEASHED_0_MD5='c2c6e7862b9d33e92db51380e06b3a90' ARCHIVE_BASE_ARCANE_UNLEASHED_0_SIZE='2000' ARCHIVE_BASE_ARCANE_UNLEASHED_0_VERSION='2.1.5d-gog41097' ARCHIVE_BASE_BENEATH_THE_STOLEN_LANDS_0_NAME='pathfinder_kingmaker_beneath_the_stolen_lands_2_1_5d_41987.sh' ARCHIVE_BASE_BENEATH_THE_STOLEN_LANDS_0_MD5='72d4b40ff5fbd4162ff0fde494c25323' ARCHIVE_BASE_BENEATH_THE_STOLEN_LANDS_0_SIZE='350000' ARCHIVE_BASE_BENEATH_THE_STOLEN_LANDS_0_VERSION='2.1.5d-gog41097' ARCHIVE_BASE_PET_RED_PANDA_0_NAME='pathfinder_kingmaker_in_game_pet_red_panda_2_1_5d_41987.sh' ARCHIVE_BASE_PET_RED_PANDA_0_MD5='d30e0b240c9ebaaba172be9c5fb97b30' ARCHIVE_BASE_PET_RED_PANDA_0_SIZE='2000' ARCHIVE_BASE_PET_RED_PANDA_0_VERSION='2.1.5d-gog41097' # "ascention" with a T is an error in the store URL, not a typo in this game script. ARCHIVE_BASE_PLAYERS_PORTRAITS_0_NAME='pathfinder_kingmaker_in_game_player_s_portraits_2_1_5d_41987.sh' ARCHIVE_BASE_PLAYERS_PORTRAITS_0_MD5='5a63db6cfdb05fa17af4460ca4ace4c7' ARCHIVE_BASE_PLAYERS_PORTRAITS_0_SIZE='2000' ARCHIVE_BASE_PLAYERS_PORTRAITS_0_VERSION='2.1.5d-gog41097' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Kingmaker_Data' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pathfinder-kingmaker.sh0000755000000000000000000000733014471751340016255 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Christian Stalp # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Pathfinder: Kingmaker # send your bug reports to bugs@dotslashplay.it ### script_version=20260511.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='pathfinder-kingmaker' GAME_NAME='Pathfinder: Kingmaker' ARCHIVE_BASE_0_NAME='pathfinder_kingmaker_2_1_5d_41987.sh' ARCHIVE_BASE_0_MD5='e17d6ff3c5f06c326ddd047c181eab27' ARCHIVE_BASE_0_SIZE='35073163' ARCHIVE_BASE_0_VERSION='2.1.5d-gog41987' UNITY3D_NAME='Kingmaker' UNITY3D_PLUGINS=' libAkConvolutionReverb.so libAkFlanger.so libAkSoundEngine.so libAkStereoDelay.so libAkTremolo.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_ASSETS_1_FILES=" ${UNITY3D_NAME}_Data/sharedassets[1-3]*" CONTENT_GAME_DATA_ASSETS_2_FILES=" ${UNITY3D_NAME}_Data/sharedassets[4-9]*" CONTENT_GAME_DATA_BUNDLES_1_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/Bundles/[a-n]*" CONTENT_GAME_DATA_BUNDLES_2_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/Bundles/[m-z]*" # TODO: Build dedicated per-language localisation packages. PACKAGES_LIST=' PKG_BIN PKG_DATA_ASSETS_1 PKG_DATA_ASSETS_2 PKG_DATA_BUNDLES_1 PKG_DATA_BUNDLES_2 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_ASSETS_1 PKG_DATA_ASSETS_2 PKG_DATA_BUNDLES_1 PKG_DATA_BUNDLES_2' # Easier upgrades from pre-20260510.5 packages PKG_DATA_PROVIDES=' pathfinder-kingmaker-data-shared-assets pathfinder-kingmaker-data-streaming-assets-audio pathfinder-kingmaker-data-streaming-assets-bundles-resource pathfinder-kingmaker-data-streaming-assets-bundles-companion pathfinder-kingmaker-data-streaming-assets-bundles-shaders pathfinder-kingmaker-data-streaming-assets-localization' PKG_DATA_ASSETS_ID="${PKG_DATA_ID}-assets" PKG_DATA_ASSETS_1_ID="${PKG_DATA_ASSETS_ID}-1" PKG_DATA_ASSETS_2_ID="${PKG_DATA_ASSETS_ID}-2" PKG_DATA_ASSETS_DESCRIPTION="${PKG_DATA_DESCRIPTION} - assets" PKG_DATA_ASSETS_1_DESCRIPTION="${PKG_DATA_ASSETS_DESCRIPTION} 1/2" PKG_DATA_ASSETS_2_DESCRIPTION="${PKG_DATA_ASSETS_DESCRIPTION} 2/2" PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES_1_ID="${PKG_DATA_BUNDLES_ID}-1" PKG_DATA_BUNDLES_2_ID="${PKG_DATA_BUNDLES_ID}-2" PKG_DATA_BUNDLES_DESCRIPTION="${PKG_DATA_DESCRIPTION} - bundles" PKG_DATA_BUNDLES_1_DESCRIPTION="${PKG_DATA_BUNDLES_DESCRIPTION} 1/2" PKG_DATA_BUNDLES_2_DESCRIPTION="${PKG_DATA_BUNDLES_DESCRIPTION} 2/2" # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Use a standard name for the game binary. mv \ "$(path_archive_contents)/Kingmaker.exe" \ "$(path_archive_contents)/$(unity3d_name)" \ # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pier-solar.sh0000755000000000000000000000456014471751340014242 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2015 mortalius # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 HS-157 set -o errexit ### # Pier Solar and the Great Architects # send your bug reports to bugs@dotslashplay.it ### script_version=20260714.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=pier-solar GAME_NAME='Pier Solar and the Great Architects' ARCHIVE_BASE_HUMBLE_0_NAME='PierSolar_linux.zip' ARCHIVE_BASE_HUMBLE_0_MD5=e5ceda3a75cab3fe9b1ad1cbaf2d4a1d ARCHIVE_BASE_HUMBLE_0_SIZE=2389378 ARCHIVE_BASE_HUMBLE_0_VERSION=1.3.2-2 ARCHIVE_BASE_HUMBLE_0_URL=https://www.humblebundle.com/store/pier-solar-and-the-great-architects-special-edition ARCHIVE_BASE_GOG_0_NAME='gog_pier_solar_and_the_great_architects_2.1.0.4.sh' ARCHIVE_BASE_GOG_0_MD5=2de03fb6d69944e3f204d5ae45147a3e ARCHIVE_BASE_GOG_0_SIZE=2400000 ARCHIVE_BASE_GOG_0_VERSION=1.3.2-1 CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='PierSolar_linux' CONTENT_GAME_MAIN_FILES=' pshd.linux64 data icon.png' CONTENT_DOC_MAIN_FILES=' README.txt' APP_MAIN_EXE='pshd.linux64' APP_MAIN_ICON='icon.png' PKG_MAIN_ARCH=64 PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0' # Easier upgrades from pre-20260707.1 packages PKG_MAIN_PROVIDES=' pier-solar-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Crash on launch with SDL wayland backend. APP_MAIN_PRERUN="$(application_prerun APP_MAIN) $(launcher_tweak_sdl_override) $(launcher_tweak_sdl_force_x11)" PKG_MAIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_MAIN) libSDL2-2.0.so.0" launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pillars-of-eternity-2-expansions.sh0000755000000000000000000000761114471751340020422 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Christian Stalp # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Pillars of Eternity 2 expansions: # - Critical Role Pack # - Rum Runner’s Pack # - Beard and Hair Pack # - Scalawags Pack # - Deck of Many Things # - Beast of Winter # - Seeker, Slayer, Survivor # - The Forgotten Sanctum ### script_version=20260710.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=pillars-of-eternity-2 GAME_NAME='Pillars of Eternity II' EXPANSION_ID_CRITICAL=critical-role EXPANSION_NAME_CRITCAL='Critical Role Pack' EXPANSION_ID_RUM=rum-runner EXPANSION_NAME_RUM='Rum Runner’s Pack' EXPANSION_ID_BEARD=beard-and-hair EXPANSION_NAME_BEARD='Beard and Hair Pack' EXPANSION_ID_SCALAWAGS=scalawags EXPANSION_NAME_SCALAWAGS='Scalawags Pack' EXPANSION_ID_DECK=deck-of-many-things EXPANSION_NAME_DECK='Deck of Many Things' EXPANSION_ID_BEAST=beast-of-winter EXPANSION_NAME_BEAST='Beast of Winter' EXPANSION_ID_SEEKER=seeker-slayer-survivor EXPANSION_NAME_SEEKER='Seeker, Slayer, Survivor' EXPANSION_ID_SANCTUM=forgotten-sanctum EXPANSION_NAME_SANCTUM='The Forgotten Sanctum' ARCHIVE_BASE_CRITICAL_0_NAME='pillars_of_eternity_ii_deadfire_critical_role_pack_v5_0_0_0040_29222.sh' ARCHIVE_BASE_CRITICAL_0_MD5=60eccceeb79069065ef4ea9f8661e121 ARCHIVE_BASE_CRITICAL_0_SIZE=3100 ARCHIVE_BASE_CRITICAL_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_RUM_0_NAME='pillars_of_eternity_ii_deadfire_rum_runner_s_pack_v5_0_0_0040_29222.sh' ARCHIVE_BASE_RUM_0_MD5=d146cb0f2cdc955f498d1be420b83083 ARCHIVE_BASE_RUM_0_SIZE=3100 ARCHIVE_BASE_RUM_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_BEARD_0_NAME='pillars_of_eternity_ii_deadfire_beard_and_hair_pack_v5_0_0_0040_29222.sh' ARCHIVE_BASE_BEARD_0_MD5=bbebde9f100d134e73f8534de38bee28 ARCHIVE_BASE_BEARD_0_SIZE=3100 ARCHIVE_BASE_BEARD_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_SCALAWAGS_0_NAME='pillars_of_eternity_ii_deadfire_scalawag_pack_v5_0_0_0040_29222.sh' ARCHIVE_BASE_SCALAWAGS_0_MD5=23b12e22bc0b2bb7073507f0e934fcad ARCHIVE_BASE_SCALAWAGS_0_SIZE=3100 ARCHIVE_BASE_SCALAWAGS_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_DECK_0_NAME='pillars_of_eternity_ii_deadfire_deck_of_many_things_v5_0_0_0040_29222.sh' ARCHIVE_BASE_DECK_0_MD5=0ba169b68f0a7a1ad43a7c33b3bea97b ARCHIVE_BASE_DECK_0_SIZE=3100 ARCHIVE_BASE_DECK_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_BEAST_0_NAME='pillars_of_eternity_ii_deadfire_beast_of_winter_v5_0_0_0040_29222.sh' ARCHIVE_BASE_BEAST_0_MD5=c40ae5e71de2340551883ae15eac82a7 ARCHIVE_BASE_BEAST_0_SIZE=4000000 ARCHIVE_BASE_BEAST_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_SEEKER_0_NAME='pillars_of_eternity_ii_deadfire_seeker_slayer_survivor_v5_0_0_0040_29222.sh' ARCHIVE_BASE_SEEKER_0_MD5=48a514d554cdd2435d1db55b3546705b ARCHIVE_BASE_SEEKER_0_SIZE=2000000 ARCHIVE_BASE_SEEKER_0_VERSION=5.0.0.0040-1 ARCHIVE_BASE_SANCTUM_0_NAME='pillars_of_eternity_ii_deadfire_the_forgotten_sanctum_v5_0_0_0040_29222.sh' ARCHIVE_BASE_SANCTUM_0_MD5=4c83e476fe74c157c72b9b4f85df917d ARCHIVE_BASE_SANCTUM_0_SIZE=2623204 ARCHIVE_BASE_SANCTUM_0_VERSION=5.0.0.0040-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' PillarsOfEternityII_Data' PKG_PARENT_ID=$GAME_ID PKG_MAIN_DEPENDENCIES_SIBLINGS=PKG_PARENT # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pillars-of-eternity-2.sh0000755000000000000000000000603414471751340016233 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Christian Stalp # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Pillars of Eternity 2 ### script_version=20260710.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=pillars-of-eternity-2 GAME_NAME='Pillars of Eternity II: Deadfire' ARCHIVE_BASE_0_NAME='pillars_of_eternity_ii_deadfire_v5_0_0_0040_29222.sh' ARCHIVE_BASE_0_MD5=61987ed80717b2a96b296dc8af6a9f50 ARCHIVE_BASE_0_SIZE=43213628 ARCHIVE_BASE_0_VERSION=5.0.0.0040-1 UNITY3D_NAME='PillarsOfEternityII' UNITY3D_PLUGINS=' libAkFlanger.so libAkHarmonizer.so libAkPitchShifter.so libAkSoundEngine.so libAkStereoDelay.so libAkTremolo.so libMcDSP.so ScreenSelector.so' # The game menu fails to load if the Discord library is missing: # DllNotFoundException: discord-rpc # at (wrapper managed-to-native) DiscordRpc:UpdatePresence (DiscordRpc/RichPresence&) # at Game.RichPresenceManager.RefreshPresence () [0x00000] in :0 # at Game.RichPresenceManager.StaticRefreshPresence () [0x00000] in :0 # at Game.UI.UIMainMenuManager.OnyxAwake () [0x00000] in :0 # at Onyx.OnyxBehavior.Awake () [0x00000] in :0 UNITY3D_PLUGINS="$UNITY3D_PLUGINS libdiscord-rpc.so" CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' # libAk*.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libgcc_s.so.1 libm.so.6 libSDL2-2.0.so.0 libstdc++.so.6" # libMcDSP.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libm.so.6 libstdc++.so.6" # ScreenSelector.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libdl.so.2 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libstdc++.so.6" # libdiscord-rpc.so dependencies PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libc.so.6 libgcc_s.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6" PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pokemon-insurgence.sh0000755000000000000000000000425514471751340015776 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Pokemon Insurgence # send your bug reports to bugs@dotslashplay.it ### script_version=20260510.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='pokemon-insurgence' GAME_NAME='Pokemon Insurgence' ARCHIVE_BASE_0_NAME='Pokemon Insurgence 1.2.5 Core.zip' ARCHIVE_BASE_0_MD5='d992c31fe67ffc0a72c4274caaa4a977' ARCHIVE_BASE_0_SIZE='840000' ARCHIVE_BASE_0_VERSION='1.2.5-insurgence1' ARCHIVE_BASE_0_URL='https://p-insurgence.com/' CONTENT_PATH_DEFAULT='Pokemon Insurgence 1.2.5 Core' CONTENT_GAME_BIN_FILES=' Game.exe Game.ini' # TODO: Include an explicit list of libraries. # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' *.dll' CONTENT_GAME_DATA_FILES=' Audio Data Egglocke Eggs Fonts Graphics Game.rgssad' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Saved Games/Pokemon Insurgence' # Ensure availability of fonts expected by the game engine. WINE_WINETRICKS_VERBS='arial' APP_MAIN_EXE='Game.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' audio/mpeg, mpegversion=(int)1, layer=(int)3' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-rebel-galaxy.sh0000755000000000000000000000715214471751340014541 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Rebel Galaxy # send your bug reports to bugs@dotslashplay.it ### script_version=20260707.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=rebel-galaxy GAME_NAME='Rebel Galaxy' ARCHIVE_BASE_0_NAME='setup_rebel_galaxy_1.08(hotifx2)_(23097).exe' ARCHIVE_BASE_0_MD5=9746494be23b83bc2a44d8da6cb6e311 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_PART1_NAME='setup_rebel_galaxy_1.08(hotifx2)_(23097)-1.bin' ARCHIVE_BASE_0_PART1_MD5=e8e5d4450b5ad8f9cc757cc4153ba13c ARCHIVE_BASE_0_SIZE=2465913 ARCHIVE_BASE_0_VERSION=1.08-1 CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' MEDIA music PAKS video OGRE.CFG plugins.cfg plugins_dx11.cfg plugins_gl.cfg GoGLauncher.exe RebelGalaxyGOG.exe' # RebelGalaxyGoG.exe requirements CONTENT_LIBS_MAIN_FILES=' Galaxy.dll OgreOverlay.dll fmodex.dll OgreMain.dll' # These 3 renderers are available through the settings application. CONTENT_LIBS0_MAIN_FILES=' RenderSystem_Direct3D9.dll RenderSystem_Direct3D11.dll RenderSystem_GL.dll' # The following Ogre plugins are required by all 3 renderers. CONTENT_LIBS1_MAIN_FILES=' Plugin_OctreeSceneManager.dll Plugin_OgreBink.dll' # Plugin_OgreBink.dll requirements CONTENT_LIBS2_MAIN_FILES=' binkw32.dll' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Double Damage Games/RebelGalaxy' # Microsoft Visual C++ 2012 Runtime is required by the settings window. # TODO: Check if it still required with current WINE. WINE_WINETRICKS_VERBS='vcrun2012' APP_MAIN_EXE='RebelGalaxyGOG.exe' # Set the OpenGL renderer by default. APP_MAIN_PRERUN=' # Set the OpenGL renderer by default. settings_file="${WINEPREFIX}/drive_c/users/${USER}/Documents/My Games/Double Damage Games/RebelGalaxy/local_settings.txt" if [ ! -e "$settings_file" ]; then install -D --mode=644 "${PATH_GAME_DATA}/local_settings.txt" "$settings_file" fi ' APP_SETTINGS_ID=${GAME_ID}-settings APP_SETTINGS_NAME="${GAME_NAME} - Settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='GoGLauncher.exe' # Set the OpenGL renderer by default. APP_SETTINGS_PRERUN=$APP_MAIN_PRERUN PKG_MAIN_ARCH=32 # Easier upgrades from pre-20250530.2 packages PKG_MAIN_PROVIDES=' rebel-galaxy-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Set the OpenGL renderer by default. cat > "$(package_path PKG_MAIN)$(path_game_data)/local_settings.txt" << EOF [SETTINGS] OPENGL:1 DX9:0 DX11:0 [/SETTINGS] EOF # Write launchers. # Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -type f | while read -r dll_source; do dll_destination=${PATH_PREFIX}${dll_source#${PATH_LIBRARIES_SYSTEM}} mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-rue-valley.sh0000755000000000000000000000674014471751340014254 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Rue Valley # send your bug reports to bugs@dotslashplay.it ### script_version=20260508.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='rue-valley' GAME_NAME='Rue Valley' ARCHIVE_BASE_0_NAME='setup_rue_valley_build_1.1.1v1_(64bit)_(88315).exe' ARCHIVE_BASE_0_MD5='9d1e04f55d6d618df3e58d24b8d3bc22' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_rue_valley_build_1.1.1v1_(64bit)_(88315)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8f0cc9244d57eadfc9db1f831c708520' ARCHIVE_BASE_0_SIZE='17266987' ARCHIVE_BASE_0_VERSION='1.1.1v1-gog88315' UNITY3D_NAME='Rue Valley' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' fmodstudio.dll resonanceaudio.dll' # TODO: Check if the Galaxy libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll GalaxyCSharpGlue.dll" # TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_SHAREDASSETS_1_FILES=" ${UNITY3D_NAME}_Data/sharedassets[0-3].*" CONTENT_GAME_DATA_SHAREDASSETS_2_FILES=" ${UNITY3D_NAME}_Data/sharedassets[4-9].*" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Emotion Spark Studio/Rue Valley' PACKAGES_LIST=' PKG_BIN PKG_DATA_SHAREDASSETS_1 PKG_DATA_SHAREDASSETS_2 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SHAREDASSETS_1 PKG_DATA_SHAREDASSETS_2' PKG_DATA_SHAREDASSETS_ID="${PKG_DATA_ID}-sharedassets" PKG_DATA_SHAREDASSETS_1_ID="${PKG_DATA_SHAREDASSETS_ID}-1" PKG_DATA_SHAREDASSETS_2_ID="${PKG_DATA_SHAREDASSETS_ID}-2" PKG_DATA_SHAREDASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - shared assets" PKG_DATA_SHAREDASSETS_1_DESCRIPTION="$PKG_DATA_SHAREDASSETS_DESCRIPTION - part 1/2" PKG_DATA_SHAREDASSETS_2_DESCRIPTION="$PKG_DATA_SHAREDASSETS_DESCRIPTION - part 2/2" # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins/x86_64" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -iname '*.dll' | while read -r dll_source; do dll_destination="${PATH_PREFIX}${dll_source#"${PATH_LIBRARIES_SYSTEM}"}" mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-slay-the-spire.sh0000755000000000000000000000556414471751340015040 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Slay the Spire # send your bug reports to bugs@dotslashplay.it ### script_version=20250508.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='slay-the-spire' GAME_NAME='Slay the Spire' ARCHIVE_BASE_0_NAME='slay_the_spire_2020_12_15_8735c9fe3cc2280b76aa3ec47c953352a7df1f65_43444.sh' ARCHIVE_BASE_0_MD5='1989ebecb2434f0480b42c4e576dfc78' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='2.2-gog43444' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' desktop-1.0.jar mod-uploader.jar mts-launcher.jar' CONTENT_DOC_MAIN_FILES=' README.md' USER_PERSISTENT_DIRECTORIES=' betaPreferences runs saves' USER_PERSISTENT_FILES=' info.displayconfig' APP_MAIN_TYPE='java' APP_MAIN_EXE='desktop-1.0.jar' APP_MAIN_ICON='../support/icon.png' ## Ensure smooth upgrades from packages generated with pre-20231107.1 game scripts. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} slay-the-spire-bin slay-the-spire-data" PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1' ## Prevent a crash on launch due to a failure to get the display dimensions. ## ## Exception in thread "LWJGL Application" java.lang.ExceptionInInitializerError ## at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:558) ## at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124) ## Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 ## at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:954) ## at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738) ## at org.lwjgl.opengl.Display.(Display.java:138) ## ... 2 more PKG_MAIN_DEPENDENCIES_COMMANDS="${PKG_MAIN_DEPENDENCIES_COMMANDS:-}"' xrandr' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sovereign-syndicate.sh0000755000000000000000000000542014471751340016143 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sovereign Syndicate # send your bug reports to bugs@dotslashplay.it ### script_version=20260321.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='sovereign-syndicate' GAME_NAME='Sovereign Syndicate' ARCHIVE_BASE_1_NAME='setup_sovereign_syndicate_1.1.24_(64bit)_(89500).exe' ARCHIVE_BASE_1_MD5='a3a8a4c887fbba8bf1a436d919c1d5c6' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_sovereign_syndicate_1.1.24_(64bit)_(89500)-1.bin' ARCHIVE_BASE_1_PART1_MD5='b0dcf20efa011d4c2da46804e8a335ee' ARCHIVE_BASE_1_PART2_NAME='setup_sovereign_syndicate_1.1.24_(64bit)_(89500)-2.bin' ARCHIVE_BASE_1_PART2_MD5='3ae3d98acef09c6f2f0b36fa4a4a886d' ARCHIVE_BASE_1_SIZE='11414099' ARCHIVE_BASE_1_VERSION='1.1.24-gog89500' ARCHIVE_BASE_0_NAME='setup_sovereign_syndicate_1.0.36_(64bit)_(72092).exe' ARCHIVE_BASE_0_MD5='266029b31e13dc11b808cd87b4b31eb9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_sovereign_syndicate_1.0.36_(64bit)_(72092)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8872971818c95eee27f80f7684209c1c' ARCHIVE_BASE_0_PART2_NAME='setup_sovereign_syndicate_1.0.36_(64bit)_(72092)-2.bin' ARCHIVE_BASE_0_PART2_MD5='3de81fad53bfddf5c3eaa6c6598af2b7' ARCHIVE_BASE_0_SIZE='11071403' ARCHIVE_BASE_0_VERSION='1.0.36-gog72092' UNITY3D_NAME='Sovereign Syndicate' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_SHAREDASSETS_FILES=" ${UNITY3D_NAME}_Data/sharedassets*" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Crimson Herring Studios/Sovereign Syndicate' PACKAGES_LIST=' PKG_BIN PKG_DATA_SHAREDASSETS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SHAREDASSETS' PKG_DATA_SHAREDASSETS_ID="${PKG_DATA_ID}-sharedassets" PKG_DATA_SHAREDASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - shared assets" # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-starship-traveller.sh0000755000000000000000000000455414471751340016023 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Starship Traveller # send your bug reports to bugs@dotslashplay.it ### script_version=20250802.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='starship-traveller' GAME_NAME='Starship Traveller' ARCHIVE_BASE_0_NAME='starship_linux_115274.zip' ARCHIVE_BASE_0_MD5='92d8dc4ac95568ac524daaf7ec4152e6' ARCHIVE_BASE_0_SIZE='200000' ARCHIVE_BASE_0_VERSION='1.0-humble160523' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/starship-traveller' UNITY3D_NAME='Starship Traveller' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='STARSHIP_LINUX_115274' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-steamworld-quest.sh0000755000000000000000000000474614471751340015513 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # SteamWorld Quest # send your bug reports to bugs@dotslashplay.it ### script_version=20251202.3 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='steamworld-quest' GAME_NAME='SteamWorld Quest: Hand of Gilgamech' ARCHIVE_BASE_0_NAME='steamworld_quest_hand_of_gilgamech_2_1_31741.sh' ARCHIVE_BASE_0_MD5='cffa9b745ef4ca37123b5928c37effe0' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='2.1-gog31741' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Quest' CONTENT_GAME_DATA_FILES=' Bundle' CONTENT_DOC_DATA_FILES=' Licenses readme.txt' APP_MAIN_EXE='Quest' APP_MAIN_ICONS_LIST='APP_MAIN_ICON_SMALL APP_MAIN_ICON_BIG' APP_MAIN_ICON_SMALL='icon.bmp' APP_MAIN_ICON_BIG='icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Force the use of system-provided SDL. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-} $(launcher_tweak_sdl_override)" PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libSDL2-2.0.so.0" ## Prevent a game crash when using the Wayland video backend of SDL. APP_MAIN_PRERUN="$APP_MAIN_PRERUN"' # Prevent a game crash when using the Wayland video backend of SDL. if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-stories-the-path-of-destinies.sh0000755000000000000000000000510514471751340017750 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stories: The Path of Destinies # send your bug reports to bugs@dotslashplay.it ### script_version=20251024.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='stories-the-path-of-destinies' GAME_NAME='Stories: The Path of Destinies' ARCHIVE_BASE_1_NAME='setup_stories_the_path_of_destinies_update_4_(25956).exe' ARCHIVE_BASE_1_MD5='61f632db33297ca2b178d4383545732c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_VERSION='1.0-gog25956' ARCHIVE_BASE_1_SIZE='2000000' ARCHIVE_BASE_0_NAME='setup_stories_-_the_path_of_destinies_0.0.13825_(16929).exe' ARCHIVE_BASE_0_MD5='6f81dbadddbb4b30b4edda9ced9ddef8' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='0.0.13825-gog16929' ARCHIVE_BASE_0_SIZE='1700000' UNREALENGINE4_NAME='stories' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' ## Language selection can be done using the -culture option, for example: ## stories-the-path-of-destinies -culture=fr ## stories-the-path-of-destinies -culture=en ## If this option is not passed explicitly, the current locale is used. APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}.exe" ## The --name=101 wrestool option, default for UE4 games, should not be used here APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Do not install Visual C++ Runtime, as it prevents the game from starting. unrealengine4_wine_winetricks_verbs_default() { return 0; } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-sunless-skies-expansions.sh0000755000000000000000000000407414471751340017162 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Sunless Skies expansions: # - Cyclopean Owl # send your bug reports to bugs@dotslashplay.it ### script_version=20260710.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='sunless-skies' GAME_NAME='Sunless Skies' EXPANSION_ID_OWL='cyclopean-owl' EXPANSION_NAME_OWL='Cyclopean Owl' ARCHIVE_BASE_OWL_3_NAME='sunless_skies_cyclopean_owl_2_0_5_6e8c8ff_74416.sh' ARCHIVE_BASE_OWL_3_MD5=163712d560736a51eb51fda83cee7336 ARCHIVE_BASE_OWL_3_SIZE=899 ARCHIVE_BASE_OWL_3_VERSION=2.0.5-1 ARCHIVE_BASE_OWL_2_NAME='sunless_skies_cyclopean_owl_2_0_4_fcf0af7a_52215.sh' ARCHIVE_BASE_OWL_2_MD5=c3749871147607f488f58881b30b9600 ARCHIVE_BASE_OWL_2_SIZE=1300 ARCHIVE_BASE_OWL_2_VERSION=2.0.4-1 ARCHIVE_BASE_OWL_0_NAME='sunless_skies_cyclopean_owl_2_0_2_9bcd3d8c_48199.sh' ARCHIVE_BASE_OWL_0_MD5=9d0dee370093bce46c35dc114c0d6241 ARCHIVE_BASE_OWL_0_SIZE=1300 ARCHIVE_BASE_OWL_0_VERSION=2.0.2-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID=$GAME_ID PKG_MAIN_DEPENDENCIES_SIBLINGS=PKG_PARENT # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Work around directory name case mismatch. path_archive_contents=$(path_archive_contents) if [ -e "${path_archive_contents}/DLC" ]; then mv \ "${path_archive_contents}/DLC" \ "${path_archive_contents}/dlc" fi # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-sunless-skies.sh0000755000000000000000000000436114471751340014774 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Sunless Skies # send your bug reports to bugs@dotslashplay.it ### script_version=20260710.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=sunless-skies GAME_NAME='Sunless Skies' ARCHIVE_BASE_2_NAME='sunless_skies_sovereign_edition_2_0_5_6e8c8ff_74416.sh' ARCHIVE_BASE_2_MD5=3405edfa656734537b13b253748fc556 ARCHIVE_BASE_2_SIZE=3276986 ARCHIVE_BASE_2_VERSION=2.0.5-1 ARCHIVE_BASE_1_NAME='sunless_skies_sovereign_edition_2_0_4_fcf0af7a_52215.sh' ARCHIVE_BASE_1_MD5=0d92a8c235d610e6ec560c25179c529a ARCHIVE_BASE_1_SIZE=3300000 ARCHIVE_BASE_1_VERSION=2.0.4-1 ARCHIVE_BASE_0_NAME='sunless_skies_sovereign_edition_2_0_2_9bcd3d8c_48199.sh' ARCHIVE_BASE_0_MD5=f99de4c6a893be6f7fcb8170c94478f4 ARCHIVE_BASE_0_SIZE=3300000 ARCHIVE_BASE_0_VERSION=2.0.2-1 UNITY3D_NAME='Sunless Skies' # No Unity3D plugin to include. CONTENT_PATH_DEFAULT='data/noarch/game' # Without write access to the "dlc" directory, the game fails to load properly. USER_PERSISTENT_DIRECTORIES=' dlc' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive content. archive_extraction_default # Drop empty Unity3D plugins directory. rmdir "$(path_archive_contents)/$(unity3d_name)_Data/Plugins" # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-system-shock-2.sh0000755000000000000000000001142114471751340014747 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # System Shock 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20260707.4 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='system-shock-2' GAME_NAME='System Shock 2' ARCHIVE_BASE_6_NAME='setup_system_shocktm_2_2.48_(31076).exe' ARCHIVE_BASE_6_MD5=15d8702a3a6de94e5c04a0006299b9e0 ARCHIVE_BASE_6_TYPE=innosetup ARCHIVE_BASE_6_SIZE=650274 ARCHIVE_BASE_6_VERSION=2.48-2 ARCHIVE_BASE_5_NAME='setup_system_shocktm_2_2.48_(31077).exe' ARCHIVE_BASE_5_MD5=b8bbec00aef894db6641e46a0446cbb2 ARCHIVE_BASE_5_TYPE=innosetup ARCHIVE_BASE_5_SIZE=660000 ARCHIVE_BASE_5_VERSION=2.48-1 ARCHIVE_BASE_4_NAME='setup_system_shock_2_2.47_nd_(22087).exe' ARCHIVE_BASE_4_MD5=cc2ff390b566364447dc5bd05757fe57 ARCHIVE_BASE_4_TYPE=innosetup ARCHIVE_BASE_4_SIZE=670000 ARCHIVE_BASE_4_VERSION=2.47-1 ARCHIVE_BASE_3_NAME='setup_system_shock_2_2.46_update_3_(19935).exe' ARCHIVE_BASE_3_MD5=cdafcdea01556eccab899f94503843df ARCHIVE_BASE_3_TYPE=innosetup ARCHIVE_BASE_3_SIZE=670000 ARCHIVE_BASE_3_VERSION=2.46-4 ARCHIVE_BASE_2_NAME='setup_system_shock_2_2.46_update_2_(18733).exe' ARCHIVE_BASE_2_MD5=39fab64451ace95966988bb90c7bb17e ARCHIVE_BASE_2_TYPE=innosetup ARCHIVE_BASE_2_SIZE=680000 ARCHIVE_BASE_2_VERSION=2.46-3 ARCHIVE_BASE_1_NAME='setup_system_shock_2_2.46_update_(18248).exe' ARCHIVE_BASE_1_MD5=b76803e4a632b58527eada8993999143 ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_SIZE=690000 ARCHIVE_BASE_1_VERSION=2.46-2 ARCHIVE_BASE_0_NAME='setup_system_shock_2_2.46_nd_(11004).exe' ARCHIVE_BASE_0_MD5=98c3d01d53bb2b0dc25d7ed7093a67d3 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_SIZE=680000 ARCHIVE_BASE_0_VERSION=2.46-1 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_2='app' CONTENT_PATH_DEFAULT_1='app' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' Binds misdml OSM patch sq_scripts LGVID.AX user.bnd SHOCK.BND CAM.CFG cam_ext.cfg install.cfg SHOCK.CFG patch_ext.crf SS2.exe cam_mod.ini lg.ini' CONTENT_GAME0_MAIN_FILES=' Data/res Data/allobjs.osm Data/motiondb.bin Data/*.DIF Data/*.GAM Data/*.MIS Data/*.RES' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME1_MAIN_FILES=' Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest Microsoft.VC90.CRT/msvcm90.dll Microsoft.VC90.CRT/msvcp90.dll Microsoft.VC90.CRT/msvcr90.dll 7z.dll D3DX9_43.dll ffmpeg.dll fmsel.dll ir41_32.dll ir50_32.dll MSVCRT40.DLL' CONTENT_GAME2_MAIN_RELATIVE_PATH='__support/app' CONTENT_GAME2_MAIN_FILES=' *.cfg *.ini' # Older builds used a different binary name. CONTENT_GAME3_MAIN_FILES_OLD=' shock2.exe' CONTENT_GAME3_MAIN_FILES_3=$CONTENT_GAME3_MAIN_FILES_OLD CONTENT_GAME3_MAIN_FILES_2=$CONTENT_GAME3_MAIN_FILES_OLD CONTENT_GAME3_MAIN_FILES_1=$CONTENT_GAME3_MAIN_FILES_OLD CONTENT_GAME3_MAIN_FILES_0=$CONTENT_GAME3_MAIN_FILES_OLD # Cutscenes are installed through a dedicated package, to make them easier to disable. # This should help with a crash on launch seemingly related to a failure to play a video. CONTENT_GAME_VIDEO_FILES=' Data/cutscenes' # TODO: Install libraries in a standard path. CONTENT_GAME0_VIDEO_FILES=' lgvid.dll' CONTENT_DOC_MAIN_FILES=' doc release_notes.txt SS2 community fixes.txt troubleshooting.txt Manual.pdf Readme.wri readmep.wri' USER_PERSISTENT_DIRECTORIES=' current save_0 save_1 save_2 save_3 save_4 save_5 save_6 save_7 save_8 save_9 save_10 save_11 save_12 save_13 save_14' USER_PERSISTENT_FILES=' *.bnd *.BND *.cfg *.CFG *.ini' # TODO: Do we need to keep log files? USER_PERSISTENT_FILES="$USER_PERSISTENT_FILES *.log" APP_MAIN_EXE='SS2.exe' APP_MAIN_EXE_3='shock2.exe' APP_MAIN_EXE_2='shock2.exe' APP_MAIN_EXE_1='shock2.exe' APP_MAIN_EXE_0='shock2.exe' PACKAGES_LIST=' PKG_MAIN PKG_VIDEO' PKG_MAIN_ARCH=32 # Easier upgrades from pre-20260707.1 packages PKG_MAIN_PROVIDES=' system-shock-2-data' PKG_VIDEO_ID=${GAME_ID}-cutscenes PKG_VIDEO_DESCRIPTION='Cutscenes' PKG_VIDEO_ARCH=32 PKG_VIDEO_DEPENDENCIES_SIBLINGS=' PKG_MAIN' PKG_VIDEO_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-tangledeep.sh0000755000000000000000000000571014471751340014273 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Tangledeep # send your bug reports to bugs@dotslashplay.it ### script_version=20260711.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=tangledeep GAME_NAME='Tangledeep' ARCHIVE_BASE_0_NAME='Tangledeep_153a_LinuxUniversal.zip' ARCHIVE_BASE_0_MD5=b278678eeb55e55a73df389213afdeeb ARCHIVE_BASE_0_SIZE=1194135 ARCHIVE_BASE_0_VERSION=1.53a-1 ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/tangledeep' ARCHIVE_BASE_MULTIARCH_1_NAME='Tangledeep_124k_LinuxUniversal.zip' ARCHIVE_BASE_MULTIARCH_1_MD5=b708a12e20816dba8e863290dc5580d0 ARCHIVE_BASE_MULTIARCH_1_SIZE=730000 ARCHIVE_BASE_MULTIARCH_1_VERSION=1.24k-1 ARCHIVE_BASE_MULTIARCH_0_NAME='tangledeep_linux.zip' ARCHIVE_BASE_MULTIARCH_0_MD5=ce38aaab0bf4838697fd1f76e30722f1 ARCHIVE_BASE_MULTIARCH_0_SIZE=690000 ARCHIVE_BASE_MULTIARCH_0_VERSION=1.23e-1 UNITY3D_NAME='Tangledeep' UNITY3D_PLUGINS_MULTIARCH=' ScreenSelector.so' CONTENT_PATH_DEFAULT='linuxuniversal' CONTENT_PATH_DEFAULT_MULTIARCH_0='tangledeep_123e_linux' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_MULTIARCH=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Prevent inclusion of 32-bit libraries. case $(current_archive) in ('ARCHIVE_BASE_MULTIARCH_'*) rm --recursive \ "$(path_archive_contents)/$(unity3d_name)_Data/Mono/x86" \ "$(path_archive_contents)/$(unity3d_name)_Data/Plugins/x86" ;; esac # Prevent inclusion of shipped Steam libraries. case $(current_archive) in ('ARCHIVE_BASE_MULTIARCH_'*) # These archives already have an explicit list of plugins to include. ;; (*) rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Plugins" ;; esac # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-bards-tale-4.sh0000755000000000000000000001350714471751340015123 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Bard's Tale 4 # send your bug reports to bugs@dotslashplay.it ### script_version=20250505.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-bards-tale-4' GAME_NAME='The Bardʼs Tale Ⅳ' ARCHIVE_BASE_0_NAME='the_bard_s_tale_iv_director_s_cut_update_3_34066.sh' ARCHIVE_BASE_0_MD5='695a04c36fe4a5ff2a53b93062151047' ARCHIVE_BASE_0_SIZE='39000000' ARCHIVE_BASE_0_VERSION='4.20.1-gog34066' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='the-bards-tale-4_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/the-bards-tale-4/' ARCHIVE_OPTIONAL_ICONS_MD5='aede8ef2c559ecf8e69e1f5ffef7432d' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 64x64 128x128 256x256' UNREALENGINE4_NAME='BardsTale4' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_MOVIES_1_FILES=' BardsTale4/Content/Movies/*.mp3 BardsTale4/Content/Movies/*.mp4 BardsTale4/Content/Movies/*.wav BardsTale4/Content/Movies/Epilogue_Credits BardsTale4/Content/Movies/PoMMovies' CONTENT_GAME_DATA_MOVIES_2_FILES=' BardsTale4/Content/Movies/Anamatics BardsTale4/Content/Movies/BardIV_FireLogo_Img_Sequence BardsTale4/Content/Movies/BardIV_InxileLogo_Img_Sequence BardsTale4/Content/Movies/BardIV_LegalScreen_Img_Sequence BardsTale4/Content/Movies/Opening_Img_Sequence BardsTale4/Content/Movies/SpecialFeatures' CONTENT_GAME_DATA_PAKS_1_FILES=' BardsTale4/Content/Paks/pakchunk0-LinuxNoEditor.pak.split00 BardsTale4/Content/Paks/pakchunk0-LinuxNoEditor.pak.split01 BardsTale4/Content/Paks/pakchunk1-LinuxNoEditor.pak' CONTENT_GAME_DATA_PAKS_2_FILES=' BardsTale4/Content/Paks/pakchunk2-LinuxNoEditor.pak.split00 BardsTale4/Content/Paks/pakchunk2-LinuxNoEditor.pak.split01 BardsTale4/Content/Paks/pakchunk50-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk60-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk70-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk80-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk90-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk100-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk110-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk120-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk130-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk140-LinuxNoEditor.pak BardsTale4/Content/Paks/pakchunk150-LinuxNoEditor.pak' APP_MAIN_EXE="${UNREALENGINE4_NAME}/Binaries/Linux/${UNREALENGINE4_NAME}-Linux-Shipping" APP_MAIN_ICON='../support/icon.png' ## The following hacks can not be avoided by forcing the use of system-provided SDL, ## because the game crashes on launch when it is used instead of the shipped SDL build. ### The game crashes on launch when the Wayland backend of SDL is used. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # The game crashes on launch when the Wayland backend of SDL is used if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' ### It seems that the shipped SDL build does not support the alsa backend. ### When it is used, no error is triggered but no sound is played either. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # The game does not output any sound when the ALSA backend of SDL is used if [ "${SDL_AUDIODRIVER:-}" = "alsa" ]; then unset SDL_AUDIODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA_MOVIES_1 PKG_DATA_MOVIES_2 PKG_DATA_PAKS_1 PKG_DATA_PAKS_2 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_MOVIES_1 PKG_DATA_MOVIES_2 PKG_DATA_PAKS_1 PKG_DATA_PAKS_2' PKG_DATA_MOVIES_ID="${PKG_DATA_ID}-movies" PKG_DATA_MOVIES_1_ID="${PKG_DATA_MOVIES_ID}-1" PKG_DATA_MOVIES_2_ID="${PKG_DATA_MOVIES_ID}-2" PKG_DATA_MOVIES_DESCRIPTION="$PKG_DATA_DESCRIPTION - movies" PKG_DATA_MOVIES_1_DESCRIPTION="$PKG_DATA_MOVIES_DESCRIPTION - 1" PKG_DATA_MOVIES_2_DESCRIPTION="$PKG_DATA_MOVIES_DESCRIPTION - 2" PKG_DATA_PAKS_ID="${PKG_DATA_ID}-paks" PKG_DATA_PAKS_1_ID="${PKG_DATA_PAKS_ID}-1" PKG_DATA_PAKS_2_ID="${PKG_DATA_PAKS_ID}-2" PKG_DATA_PAKS_DESCRIPTION="$PKG_DATA_DESCRIPTION - paks" PKG_DATA_PAKS_1_DESCRIPTION="$PKG_DATA_PAKS_DESCRIPTION - 1" PKG_DATA_PAKS_2_DESCRIPTION="$PKG_DATA_PAKS_DESCRIPTION - 2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Drop debug symbols. rm \ 'BardsTale4/Binaries/Linux/BardsTale4-Linux-Shipping.debug' \ 'BardsTale4/Binaries/Linux/BardsTale4-Linux-Shipping.sym' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages ## Set the package scripts rebuilding the full files from their chunks for huge_file in \ "$(unrealengine4_name)/Content/Paks/pakchunk0-LinuxNoEditor.pak" \ "$(unrealengine4_name)/Content/Paks/pakchunk2-LinuxNoEditor.pak" do PKG_DATA_POSTINST_RUN="$(package_postinst_actions 'PKG_DATA') $(huge_file_concatenate "$huge_file")" PKG_DATA_PRERM_RUN="$(package_prerm_actions 'PKG_DATA') $(huge_file_delete "$huge_file")" done packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-count-lucanor.sh0000755000000000000000000000654714471751340015543 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Hoël Bézier set -o errexit ### # The Count Lucanor # send your bug reports to bugs@dotslashplay.it ### script_version=20251013.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='the-count-lucanor' GAME_NAME='The Count Lucanor' ARCHIVE_BASE_1_NAME='the_count_lucanor_1_4_23_36418.sh' ARCHIVE_BASE_1_MD5='59bdd0ee4d7525be7b5ba346ffefa5b9' ARCHIVE_BASE_1_SIZE='760000' ARCHIVE_BASE_1_VERSION='1.4.23-gog36418' ARCHIVE_BASE_0_NAME='the_count_lucanor_1_1_4_7_23841.sh' ARCHIVE_BASE_0_MD5='5a224a28d6e1a3b894e712db056fab07' ARCHIVE_BASE_0_SIZE='720000' ARCHIVE_BASE_0_VERSION='1.1.4.7-gog23841' CONTENT_GAME_MAIN_DEPENDENCIES_LIBRARIES=' libopenal.so.1 libSDL-1.2.so.0' CONTENT_GAME_MAIN_ARCH='64' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_MAIN_RELATIVE_PATH='lib' CONTENT_LIBS_MAIN_FILES=' libgluegen-rt.so libjinput-linux64.so libjoal.so libjogl_desktop.so libjogl_mobile.so libnativewindow_awt.so libnativewindow_x11.so libnewt.so' CONTENT_GAME_MAIN_FILES=' res lucanor.ico lib/*.jar' USER_PERSISTENT_DIRECTORIES=' logs res/db res/level res/settings' APP_MAIN_TYPE='java' APP_MAIN_JAVA_OPTIONS='-Dfile.encoding=UTF-8 -Xmx1024m -Xms512m' APP_MAIN_EXE='lib/build-desktop.jar' APP_MAIN_ICON='lucanor.ico' ## Prevent an OpenGL-related crash on launch: ## ## com.jogamp.opengl.GLException: Profile GL2 is not available on null, but: [GLProfile[GLES1/GLES1.hw], GLProfile[GLES2/GLES3.hw], GLProfile[GL2ES1/GLES1.hw], GLProfile[GL4ES3/GL4.hw], GLProfile[GL2ES2/GL4.hw], GLProfile[GL4/GL4.hw], GLProfile[GLES3/GLES3.hw], GLProfile[GL4/GL4.hw], GLProfile[GL3/GL4.hw], GLProfile[GL2GL3/GL4.hw]] ## at com.jogamp.opengl.GLProfile.get(GLProfile.java:991) ## at com.jogamp.opengl.GLProfile.get(GLProfile.java:1004) ## at eu.curvedcat.game.Main.launch(Main.java:669) ## at eu.curvedcat.game.Main.main(Main.java:611) APP_MAIN_PRERUN=' # Prevent an OpenGL-related crash on launch export MESA_GL_VERSION_OVERRIDE=2.1' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for path in \ "$PWD" \ "${XDG_DATA_HOME:="$HOME/.local/share"}/play.it" \ '/usr/local/share/games/play.it' \ '/usr/local/share/play.it' \ '/usr/share/games/play.it' \ '/usr/share/play.it' do if [ -e "${path}/libplayit2.sh" ]; then PLAYIT_LIB2="${path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" pkg_setup() { PKG_MAIN_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_MAIN_DEPENDENCIES_LIBRARIES" PKG_MAIN_ARCH="$CONTENT_GAME_MAIN_ARCH" } src_extract() { archive_extraction_default } src_prepare() { : } pkg_prepare() { content_inclusion_default } src_clean() { : } pkg_icons() { content_inclusion_icons } pkg_launchers() { launchers_generation } pkg_build() { packages_generation } pkg_clean() { working_directory_cleanup } pkg_instructions() { print_instructions } # Run default initialisation actions. initialization_default "$@" pkg_setup src_extract src_prepare pkg_icons ## pkg_icons must be called before pkg_prepare pkg_prepare src_clean pkg_launchers pkg_build pkg_instructions pkg_clean ## pkg_clean must be called after pkg_instructions exit 0 games/play-the-elder-scrolls-1-arena.sh0000755000000000000000000000670214471751340016737 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # The Elder Scrolls: Arena # send your bug reports to bugs@dotslashplay.it ### script_version=20260509.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='the-elder-scrolls-1-arena' GAME_NAME='The Elder Scrolls: Arena' ARCHIVE_BASE_1_NAME='setup_the_elder_scrolls_arena_1.07_(28043).exe' ARCHIVE_BASE_1_MD5='53a12a1cc3955776f06fba5906cdc6fe' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='120000' ARCHIVE_BASE_1_VERSION='1.07-gog28043' ARCHIVE_BASE_0_NAME='setup_tes_arena_2.0.0.5.exe' ARCHIVE_BASE_0_MD5='ca5a894aa852f9dbb3ede787e51ec828' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.07-gog2.0.0.5' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' *.ADV *.FLC *.MIF 2651.GLD ACD.EXE ARROWS.CIF BOOTEXEC.CPY BS5.MIF CHARSHT.COL CHARSPEL.IMG CITYDATA.65 CONFIG.CPY CRYSTAL3.INF DAYTIME.COL DISKS.BAK DREARY.COL DUNGEON.TXT FANFARE?.VOC FOG.LGT FOG.TXT GLOBAL.BSA GM?.BNK HELP.TXT IMPPAL?.INF INSTALL.CFG INSTALL.EXE IVB.NTZ LAVAANI.RCI MAGE.CEL MAPBTNS.MNU MT?.BNK NAMES.CLR NORMAL.LGT PAL.COL QUESTION.TXT ROGUE.CEL SAMPLE.AD SAMPLE.OPL SCROLL03.IMG SOUND.CFG SPELLMKR.TXT SPELLS.65 SPELLSG.65 SPELLS.LST SPPARTS.RCI STARTGAM.MNU STATES.65 TAMRIEL.MNU TITLE.IMG ULTRAMID.EXE ULTRAMID.INI VILPAL3.MIF WARRIOR.CEL WATERANI.RCI WINGAME.XFM SPEECH' # The following must be listed explicitly, as *.DAT would grab __support/save/NAMES.DAT CONTENT_GAME0_MAIN_FILES=' ARENAFNT.DAT ARTFACT?.DAT CHARFNT.DAT CHARSPEL.DAT CLASSES.DAT EQUIP.DAT FONT4.DAT FONT_?.DAT GUARD.DAT JAGTEMP.DAT MUGUILD.DAT NAMECHNK.DAT POINTER1.DAT RAND.DAT SELLING.DAT TAVERN.DAT TEENYFNT.DAT TEMPLATE.DAT' CONTENT_GAME1_MAIN_RELATIVE_PATH='__support/save' CONTENT_GAME1_MAIN_FILES=' NAMES.DAT' # TODO: Check if this is a game file or some documenation. CONTENT_GAME2_MAIN_FILES=' Passwords.txt' CONTENT_DOC_MAIN_FILES=' Arena Codex Scientia.pdf Manual.pdf Player Guide.pdf Quick Reference Card.pdf READ.ME README.TXT' DOSBOX_DISK_IMAGE_PATH='.' DOSBOX_DISK_IMAGE_TYPE='cdrom' USER_PERSISTENT_DIRECTORIES=' arena_cd' USER_PERSISTENT_FILES=' NAMES.DAT' APP_MAIN_EXE='ACD.EXE' APP_MAIN_OPTIONS='-SSBPDIG.ADV -IOS220 -IRQS7 -DMAS1 -MGENMIDI.ADV -IOM330 -IRQM2 -DMAM1' APP_MAIN_ICON='ARENA.ICO' APP_MAIN_DOSBOX_PRERUN='config -set cpu cycles=fixed 20000 d:' # The type can not be omitted, because the binary is actually on the CD-ROM image. APP_MAIN_TYPE='dosbox' # Easier upgrade from pre-20190302.3 packages PKG_MAIN_PROVIDES=' the-elder-scrolls-1-arena-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-elder-scrolls-2-daggerfall.sh0000755000000000000000000000456714471751340017751 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # The Elder Scrolls 2: Daggerfall # send your bug reports to bugs@dotslashplay.it ### script_version=20251210.1 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='the-elder-scrolls-2-daggerfall' GAME_NAME='The Elder Scrolls II: Daggerfall' ARCHIVE_BASE_1_NAME='setup_the_elder_scrolls_ii_daggerfall_1.07_(28043).exe' ARCHIVE_BASE_1_MD5='94acfb7acfe2242241d4355ada481d98' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='560000' ARCHIVE_BASE_1_VERSION='1.07.213-gog28043' ARCHIVE_BASE_0_NAME='setup_tes_daggerfall_2.0.0.4.exe' ARCHIVE_BASE_0_MD5='68f1eb4f257d8da4c4eab2104770c49b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='580000' ARCHIVE_BASE_0_VERSION='1.07.213-gog2.0.0.4' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' arena2 data dagger.ico dagger.exe fall.exe fixsave.exe setup.exe fixsave.txt patched.txt test.* *.386 *.bnk *.cfg *.ini *.scr' CONTENT_DOC_MAIN_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' pics save0 save1 save2 save3 save4 save5' USER_PERSISTENT_FILES=' *.cfg arena2/bio.dat arena2/copyfile.dat arena2/rumor.dat arena2/mapsave.sav arena2/*.DAT arena2/*.AMF' APP_MAIN_EXE='fall.exe' APP_MAIN_OPTIONS='z.cfg' APP_MAIN_ICON='dagger.ico' ## Easier upgrade from pre-20190302.3 packages PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} the-elder-scrolls-2-daggerfall-data" # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-elder-scrolls-5-expansions.sh0000755000000000000000000000504614471751340020044 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2024 Fabien Givors # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # The Elder Scrolls 5 expansions: # - Anniversary Upgrade # send your bug reports to bugs@dotslashplay.it ### script_version=20251210.2 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='the-elder-scrolls-5-skyrim' GAME_NAME='The Elder Scrolls V: Skyrim' EXPANSION_ID_UPGRADE='anniversary-upgrade' EXPANSION_NAME_UPGRADE='Anniversary Upgrade' ARCHIVE_BASE_UPGRADE_1_NAME='setup_the_elder_scrolls_v_skyrim_anniversary_upgrade_0.1.3905696_(64bit)_(70738).exe' ARCHIVE_BASE_UPGRADE_1_MD5='411afce1d728f456ef0989dc866feca2' ARCHIVE_BASE_UPGRADE_1_TYPE='innosetup' ARCHIVE_BASE_UPGRADE_1_PART1_NAME='setup_the_elder_scrolls_v_skyrim_anniversary_upgrade_0.1.3905696_(64bit)_(70738)-1.bin' ARCHIVE_BASE_UPGRADE_1_PART1_MD5='97d7706343def94098e725f876cb1a64' ARCHIVE_BASE_UPGRADE_1_SIZE='4700000' ARCHIVE_BASE_UPGRADE_1_VERSION='1.6.1179.0.8-gog70738' ARCHIVE_BASE_UPGRADE_0_NAME='setup_the_elder_scrolls_v_skyrim_anniversary_upgrade_1.6.659.0.8_(64bit)_(59094).exe' ARCHIVE_BASE_UPGRADE_0_MD5='6ca1eaf78efe871db75aa2e870bf6154' ARCHIVE_BASE_UPGRADE_0_TYPE='innosetup' ARCHIVE_BASE_UPGRADE_0_PART1_NAME='setup_the_elder_scrolls_v_skyrim_anniversary_upgrade_1.6.659.0.8_(64bit)_(59094)-1.bin' ARCHIVE_BASE_UPGRADE_0_PART1_MD5='44910bb282008aebb5c92cd97af12413' ARCHIVE_BASE_UPGRADE_0_SIZE='4700000' ARCHIVE_BASE_UPGRADE_0_VERSION='1.6.659.0.8-gog59094' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' data goggame-1162721350.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-elder-scrolls-5.sh0000755000000000000000000002064314471751340015657 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2024 Fabien Givors # SPDX-FileCopyrightText: © 2025 Christian Stalp set -o errexit ### # The Elder Scrolls 5: Skyrim # send your bug reports to bugs@dotslashplay.it ### script_version=20251227.2 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='the-elder-scrolls-5-skyrim' GAME_NAME='The Elder Scrolls V: Skyrim' ARCHIVE_BASE_1_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738).exe' ARCHIVE_BASE_1_MD5='5a73debc2115209be1abd257aa0be329' ## "--collisions rename-all" is used to extract all localised files, not only the English ones. ARCHIVE_BASE_1_EXTRACTOR='innoextract' ARCHIVE_BASE_1_EXTRACTOR_OPTIONS='--collisions rename-all --lowercase' ARCHIVE_BASE_1_PART1_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-1.bin' ARCHIVE_BASE_1_PART1_MD5='c8d28d38dc2a58102b4553ba61026591' ARCHIVE_BASE_1_PART2_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-2.bin' ARCHIVE_BASE_1_PART2_MD5='b262b033d7e30b1d7289e36e0901193c' ARCHIVE_BASE_1_PART3_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-3.bin' ARCHIVE_BASE_1_PART3_MD5='e249eaf58788328b47b4ba452cee0339' ARCHIVE_BASE_1_PART4_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-4.bin' ARCHIVE_BASE_1_PART4_MD5='3f82c21b9db4bc45adf65389125dd643' ARCHIVE_BASE_1_PART5_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-5.bin' ARCHIVE_BASE_1_PART5_MD5='20a789f518bfc5f5654315c6770ebeea' ARCHIVE_BASE_1_PART6_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-6.bin' ARCHIVE_BASE_1_PART6_MD5='1fc7001e970abf73f0e2cecfbddd6b9c' ARCHIVE_BASE_1_PART7_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_0.1.3905696_(64bit)_(70738)-7.bin' ARCHIVE_BASE_1_PART7_MD5='11c895a76cb12719e6252757b301089b' ARCHIVE_BASE_1_SIZE='29202245' ARCHIVE_BASE_1_VERSION='1.6.1179.0.8-gog70738' ARCHIVE_BASE_0_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094).exe' ARCHIVE_BASE_0_MD5='0b6d1c931788f66d4a3b02138733f05a' ## "--collisions rename-all" is used to extract all localised files, not only the English ones. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--collisions rename-all --lowercase' ARCHIVE_BASE_0_PART1_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094)-1.bin' ARCHIVE_BASE_0_PART1_MD5='163b8af958071f85e78613834375209c' ARCHIVE_BASE_0_PART2_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094)-2.bin' ARCHIVE_BASE_0_PART2_MD5='c3852b6ae2bcc46fa0e4f085095bd12f' ARCHIVE_BASE_0_PART3_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094)-3.bin' ARCHIVE_BASE_0_PART3_MD5='a44293c54ebf39efd8f32cc4cc154220' ARCHIVE_BASE_0_PART4_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094)-4.bin' ARCHIVE_BASE_0_PART4_MD5='0dc37a5bd97295b5f163435c75868d03' ARCHIVE_BASE_0_PART5_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094)-5.bin' ARCHIVE_BASE_0_PART5_MD5='162f6baf1d24594f67a1710edef30c42' ARCHIVE_BASE_0_PART6_NAME='setup_the_elder_scrolls_v_skyrim_special_edition_1.6.659.0.8_(64bit)_(59094)-6.bin' ARCHIVE_BASE_0_PART6_MD5='5274ded2391553e9595b170af66ae0c3' ARCHIVE_BASE_0_SIZE='29000000' ARCHIVE_BASE_0_VERSION='1.6.659.0.8-gog59094' CONTENT_PATH_DEFAULT='.' ## skyrimse.exe requirements. CONTENT_LIBS_BIN_FILES=' bink2w64.dll Galaxy64.dll' CONTENT_GAME_BIN_FILES=' skyrimselauncher.exe skyrimse.exe high.ini low.ini medium.ini ultra.ini skyrimconsoledefault.ini' CONTENT_GAME_L10N_FR_FILES=' skyrim_default_fr.ini data/skyrim - voices_fr0.bsa goggame-1711230643.info@fr-FR' CONTENT_GAME_L10N_EN_FILES=' skyrim_default_en.ini data/skyrim - voices_en0.bsa goggame-1711230643.info@en-US' CONTENT_GAME_L10N_DE_FILES=' skyrim_default_de.ini data/skyrim - voices_de0.bsa goggame-1711230643.info@de-DE' CONTENT_GAME_DATA_TEXTURES_FILES=' data/skyrim - textures?.bsa' CONTENT_GAME_DATA_FILES=' data/ccbgssse001-fish.bsa data/ccbgssse001-fish.esm data/ccbgssse025-advdsgs.bsa data/ccbgssse025-advdsgs.esm data/ccbgssse037-curios.bsa data/ccbgssse037-curios.esl data/ccqdrsse001-survivalmode.bsa data/ccqdrsse001-survivalmode.esl data/dawnguard.esm data/dragonborn.esm data/hearthfires.esm data/marketplacetextures.bsa data/_resourcepack.bsa data/_resourcepack.esl data/skyrim.esm data/skyrim - animations.bsa data/skyrim - interface.bsa data/skyrim - meshes0.bsa data/skyrim - meshes1.bsa data/skyrim - misc.bsa data/skyrim - shaders.bsa data/skyrim - sounds.bsa data/update.esm data/video skyrim.ccc' ## DXVK prevents massive fickering of shadows. ## (WINE 10.0) WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Skyrim Special Edition GOG' ## This registry entry is required for the settings window to work correctly. # shellcheck disable=SC1003 WINE_REGISTRY_INIT=' [HKEY_LOCAL_MACHINE\Software\Wow6432Node\GOG.com\Games\1711230643] "exe"="C:\\'"${GAME_ID}"'\\skyrimselauncher.exe" ' APP_MAIN_EXE='skyrimse.exe' APP_MAIN_ICON='skyrimselauncher.exe' APP_LAUNCHER_ID="${GAME_ID}-config" APP_LAUNCHER_NAME="${GAME_NAME} - Config" APP_LAUNCHER_EXE='skyrimselauncher.exe' APP_LAUNCHER_CAT='Settings' PACKAGES_LIST=' PKG_BIN PKG_L10N_FR PKG_L10N_EN PKG_L10N_DE PKG_DATA_TEXTURES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' audio/x-wma, wmaversion=(int)1' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_DE_ID="${PKG_L10N_ID}-de" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_EN_DESCRIPTION='English localisation' PKG_L10N_DE_DESCRIPTION='German localisation' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_TEXTURES' PKG_DATA_TEXTURES_ID="${PKG_DATA_ID}-textures" PKG_DATA_TEXTURES_DESCRIPTION="$PKG_DATA_DESCRIPTION - textures" # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Fix name of localisation-specific configuration files required by the settings launcher. config_file='goggame-1711230643.info' mv \ "$(package_path 'PKG_L10N_FR')$(path_game_data)/${config_file}@fr-FR" \ "$(package_path 'PKG_L10N_FR')$(path_game_data)/${config_file}" mv \ "$(package_path 'PKG_L10N_EN')$(path_game_data)/${config_file}@en-US" \ "$(package_path 'PKG_L10N_EN')$(path_game_data)/${config_file}" mv \ "$(package_path 'PKG_L10N_DE')$(path_game_data)/${config_file}@de-DE" \ "$(package_path 'PKG_L10N_DE')$(path_game_data)/${config_file}" # Write launchers. ## Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. ln --force --symbolic $(path_libraries)/* "\${PATH_PREFIX}" EOF } launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_fr='française' lang_en='anglaise' lang_de='allemande' ;; ('de') lang_string='%s version:' lang_fr='French' lang_en='English' lang_de='Deutsch' ;; ('en'|*) lang_string='%s version:' lang_fr='French' lang_en='English' lang_de='German' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_L10N_FR' 'PKG_DATA' 'PKG_DATA_TEXTURES' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_L10N_EN' 'PKG_DATA' 'PKG_DATA_TEXTURES' printf "$lang_string" "$lang_de" print_instructions 'PKG_BIN' 'PKG_L10N_DE' 'PKG_DATA' 'PKG_DATA_TEXTURES' # Clean up. working_directory_cleanup exit 0 games/play-the-lamplighters-league.sh0000755000000000000000000000523214471751340016673 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Lamplighters League # send your bug reports to bugs@dotslashplay.it ### script_version=20260711.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=the-lamplighters-league GAME_NAME='The Lamplighters League' ARCHIVE_BASE_0_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947).exe' ARCHIVE_BASE_0_MD5=bc06890044afe8cd3395249a4553c1f7 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_PART1_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947)-1.bin' ARCHIVE_BASE_0_PART1_MD5=6a217c893d0cc2b93ec561ad0880eb73 ARCHIVE_BASE_0_PART2_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947)-2.bin' ARCHIVE_BASE_0_PART2_MD5=2a56f3cdc2bd2898fb7bc3eacedefec7 ARCHIVE_BASE_0_PART3_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947)-3.bin' ARCHIVE_BASE_0_PART3_MD5=e398fc1ae766a81f1374f971be55929e ARCHIVE_BASE_0_SIZE=15634809 ARCHIVE_BASE_0_VERSION=1.3.1-1 UNITY3D_NAME='LamplightersLeague' # TODO: Unity3D plugins. CONTENT_PATH_DEFAULT='.' # The game fails to start if this GOG Galaxy setting file is not included, # as it then expects to be running from Steam. CONTENT_GAME0_BIN_FILES=' galaxyconfig.json' # Prevent rendering problems, including flashing bright colours. # (WINE 8.0) # Due to the flashes being potentially harmful, this should not be removed # at least until a WINE build not triggering them reaches Debian oldstable. WINE_DIRECT3D_RENDERER=dxvk WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/HarebrainedSchemes/LamplightersLeague' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH=64 PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID=${GAME_ID}-data PKG_DATA_DESCRIPTION='data' # Easier upgrades from pre-20260711.1 packages PKG_DATA_PROVIDES=' the-lamplighters-league-data-bundles-1 the-lamplighters-league-data-bundles-2' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_icons PKG_DATA content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-swords-of-ditto.sh0000755000000000000000000000401314471751340016000 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # The Swords of Ditto # send your bug reports to bugs@dotslashplay.it ### script_version=20251013.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='the-swords-of-ditto' GAME_NAME='The Swords of Ditto: Mormoʼs Curse' ARCHIVE_BASE_0_NAME='the_swords_of_ditto_1_17_02_204_30316.sh' ARCHIVE_BASE_0_MD5='9191f474d17f2744c1d6f9153be74780' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='1.17.02.204' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' The_Swords_of_Ditto' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='The_Swords_of_Ditto' APP_MAIN_ICON='assets/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl.so.4 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-temple-of-elemental-evil.sh0000755000000000000000000000500114471751340017523 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # The Temple of Elemental Evil # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='the-temple-of-elemental-evil' GAME_NAME='The Temple of Elemental Evil' ARCHIVE_BASE_1_NAME='setup_temple_of_elemental_evil_1.0_(15416).exe' ARCHIVE_BASE_1_MD5=1c7b493f71c2c92050a63535b3abec67 ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_SIZE=1320488 ARCHIVE_BASE_1_VERSION=1.3-2 ARCHIVE_BASE_0_NAME='setup_temple_of_elemental_evil_2.0.0.13.exe' ARCHIVE_BASE_0_MD5=44ea1e38ed1da26aefb32a39a899f770 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_SIZE=1400000 ARCHIVE_BASE_0_VERSION=1.3-1 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' miles ToEE.exe ToEEa.exe _sre.pyd _sre_d.pyd' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path CONTENT_GAME0_MAIN_FILES=' binkw32.dll dbghelp.dll Mss32.dll msvcr70.dll msvcr71.dll python22.dll pyToEE22.dll temple.dll tio.dll zlib-1.2.1.dll' CONTENT_GAME1_MAIN_RELATIVE_PATH='__support/app' CONTENT_GAME1_MAIN_RELATIVE_PATH_0='.' CONTENT_GAME1_MAIN_FILES=' toee.cfg' CONTENT_GAME2_MAIN_FILES=' data modules tig.dat ToEE1.dat ToEE2.dat ToEE3.dat ToEE4.dat RT_ToEE4.dat' # TODO: Is this icon required? CONTENT_GAME3_MAIN_FILES=' ToEE.ico' CONTENT_DOC_MAIN_FILES=' Manual.pdf Readme.txt mt19937ar.txt' USER_PERSISTENT_DIRECTORIES=' data/maps data/save data/scr modules/ToEE' USER_PERSISTENT_FILES=' toee.cfg' APP_MAIN_EXE='ToEE.exe' APP_MAIN_ICON='ToEE.ico' PKG_MAIN_ARCH=32 # Easier upgrades from pre-20260709.1 packages PKG_MAIN_PROVIDES=' the-temple-of-elemental-evil-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-warlock-of-firetop-mountain.sh0000755000000000000000000000662314471751340020307 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # The Warlock of Firetop Mountain # send your bug reports to bugs@dotslashplay.it ### script_version=20250505.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-warlock-of-firetop-mountain' GAME_NAME='The Warlock of Firetop Mountain' ARCHIVE_BASE_1_NAME='WARLOCK_LINUX_487115.zip' ARCHIVE_BASE_1_MD5='ae29e02f78225d69a3bdb661e13f2a3f' ARCHIVE_BASE_1_SIZE='1600000' ARCHIVE_BASE_1_VERSION='1.0-humble180508' ARCHIVE_BASE_1_URL='https://www.humblebundle.com/store/the-warlock-of-firetop-mountain' ARCHIVE_BASE_0_NAME='WARLOCK_LINUX_487088.zip' ARCHIVE_BASE_0_MD5='17d4e909dbed98cd420eee5bb6a828d3' ARCHIVE_BASE_0_SIZE='1600000' ARCHIVE_BASE_0_VERSION='1.0-humble171022' UNITY3D_NAME='The Warlock of Firetop Mountain' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game fails to start if libCSteamworks.so is not available, ## libsteam_api.so is a requirement of libCSteamworks.so. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='WARLOCK_LINUX_487115' CONTENT_PATH_DEFAULT_0='WARLOCK_LINUX_487088' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # The game engine fails to load some plugins unless they are found in a hardcoded path libraries_source=$(path_libraries) libraries_destination_64="$(package_path 'PKG_BIN64')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86_64" libraries_destination_32="$(package_path 'PKG_BIN32')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86" mkdir --parents "$libraries_destination_64" "$libraries_destination_32" ln --symbolic "${libraries_source}/ScreenSelector.so" "$libraries_destination_64" ln --symbolic "${libraries_source}/ScreenSelector.so" "$libraries_destination_32" # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-witcher-2.sh0000755000000000000000000001170214471751340014543 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2018 Phil Morrell set -o errexit ### # The Witcher 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20260712.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=the-witcher-2 GAME_NAME='The Witcher 2: Assassins of Kings' ARCHIVE_BASE_1_NAME='the_witcher_2_assassins_of_kings_enhanced_edition_en_release_3_20150306204412_20992.sh' ARCHIVE_BASE_1_MD5=fd7b85d44e3da7fdf860ab4267574b36 ARCHIVE_BASE_1_SIZE=23575753 ARCHIVE_BASE_1_VERSION=1.3-2 ARCHIVE_BASE_0_NAME='gog_the_witcher_2_assassins_of_kings_enhanced_edition_2.2.0.8.sh' ARCHIVE_BASE_0_MD5=3fff5123677a7be2023ecdb6af3b82b6 ARCHIVE_BASE_0_SIZE=24000000 ARCHIVE_BASE_0_VERSION=1.3-1 CONTENT_PATH_DEFAULT='data/noarch/game' # TODO: Can a regular OpenAL build be used instead? CONTENT_LIBS_MAIN_FILES=' libopenal-eon.so.1' CONTENT_GAME_MAIN_FILES=' witcher2' CONTENT_GAME0_MAIN_FILES=' bin configurator fontconfig linux sdlinput eONprecompiledShaders32.dat icudt52l.dat SDLGamepad.config witcher2.vpfs VPFS_registry.vpfsdb' CONTENT_GAME1_MAIN_FILES=' CookedPC/globals CookedPC/movies CookedPC/sounds CookedPC/*.cache CookedPC/*.dzip CookedPC/*.w2scripts' # TODO: Move the text localisations to dedicated packages. CONTENT_GAME2_MAIN_FILES=' CookedPC/*.w2strings' CONTENT_GAME_VOICES_FR_FILES=' CookedPC/fr0.w2speech' CONTENT_GAME_VOICES_PL_FILES=' CookedPC/pl0.w2speech' CONTENT_DOC_MAIN_FILES=' linux/licenses Linux Release Notes.txt readme_??.rtf' CONTENT_DOC0_MAIN_PATH='linux/licenses' CONTENT_DOC0_MAIN_FILES=' licenses.txt freetype.txt glew.txt ICU License - ICU 1.8.1 and later.html LGPL v2.txt libcurl.txt M+ Fonts License.txt zlib.txt' APP_MAIN_EXE='witcher2' APP_MAIN_ICON='linux/icons/witcher2-icon.png' # TODO: Set speech language on launch, based on the available CookedPC/*.w2speech file. # This should be set by updating the "Speech" field in # ~/.local/share/cdprojektred/witcher2/GameDocuments/Witcher 2/config/User.ini # TODO: Set text language on launch, based on the available CookedPC/*.w2strings file. # This should be set by updating the "Language" field in # ~/.local/share/cdprojektred/witcher2/GameDocuments/Witcher 2/config/User.ini # FIXME: Launch failure # terminate called after throwing an instance of 'std::logic_error' # what(): basic_string::_S_construct null not valid # Aborted # TODO: Move to a dedicated package, until it can be fixed. APP_CONFIG_ID=${GAME_ID}-config APP_CONFIG_NAME="${GAME_NAME} - configuration" APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='configurator' APP_CONFIG_ICON='linux/icons/witcher2-configurator.png' PACKAGES_LIST=' PKG_MAIN PKG_VOICES_FR PKG_VOICES_PL' PKG_MAIN_ARCH=32 PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_VOICES' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libstdc++.so.6 libX11.so.6' # Easier upgrades from pre-20260710.1 packages PKG_MAIN_PROVIDES=' the-witcher-2-data the-witcher-2-data-pack1 the-witcher-2-data-pack2' PKG_VOICES_ID="${GAME_ID}-voices" PKG_VOICES_FR_ID="${PKG_VOICES_ID}-fr" PKG_VOICES_PL_ID="${PKG_VOICES_ID}-pl" PKG_VOICES_PROVIDES=$PKG_VOICES_ID PKG_VOICES_FR_PROVIDES=$PKG_VOICES_PROVIDES PKG_VOICES_PL_PROVIDES=$PKG_VOICES_PROVIDES PKG_VOICES_FR_DESCRIPTION='French voices' PKG_VOICES_PL_DESCRIPTION='Polish voices' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Build pack0.dzip from its chunks. pack0_path=$(path_archive_contents)/CookedPC/pack0.dzip mv "${pack0_path}.split00" "$pack0_path" cat "${pack0_path}.split01" >> "$pack0_path" rm "${pack0_path}.split01" cat "${pack0_path}.split02" >> "$pack0_path" rm "${pack0_path}.split02" # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Silent load failure with SDL wayland backend APP_MAIN_PRERUN="$(application_prerun APP_MAIN) $(launcher_tweak_sdl_force_x11)" launchers_generation # Build packages. packages_generation case "$(messages_language)" in (fr) lang_string='voix %s :' lang_fr='françaises' lang_pl='polonaises' ;; (en|*) lang_string='%s voices:' lang_fr='French' lang_pl='Polish' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions PKG_MAIN PKG_VOICES_FR printf "$lang_string" "$lang_pl" print_instructions PKG_MAIN PKG_VOICES_PL # Clean up. working_directory_cleanup exit 0 games/play-the-witcher-3.sh0000755000000000000000000001146314471751340014550 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # The Witcher 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20250326.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-witcher-3' GAME_NAME='The Witcher 3: Wild Hunt' ARCHIVE_BASE_0_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709).exe' ARCHIVE_BASE_0_MD5='321ed8cc0faedb903190a708686a1b50' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8aab6124c22f1360585ee2285ea6d8f7' ARCHIVE_BASE_0_PART2_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-2.bin' ARCHIVE_BASE_0_PART2_MD5='3966e84f941b9fba384eb4a2b0b23c65' ARCHIVE_BASE_0_PART3_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-3.bin' ARCHIVE_BASE_0_PART3_MD5='bc80aa6b1538ecf757e7db6f3723e056' ARCHIVE_BASE_0_PART4_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-4.bin' ARCHIVE_BASE_0_PART4_MD5='71660541a0c358ef40802ba62a2c3c09' ARCHIVE_BASE_0_PART5_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-5.bin' ARCHIVE_BASE_0_PART5_MD5='9ad56c2efc7b09f480f7f8c7922c8b3f' ARCHIVE_BASE_0_PART6_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-6.bin' ARCHIVE_BASE_0_PART6_MD5='bd3699654b2e34668445219f2bbbc793' ARCHIVE_BASE_0_PART7_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-7.bin' ARCHIVE_BASE_0_PART7_MD5='1beb5a622e6695d0dd65cac5fab08793' ARCHIVE_BASE_0_PART8_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-8.bin' ARCHIVE_BASE_0_PART8_MD5='121adc43111562e354d9841800d0c613' ARCHIVE_BASE_0_PART9_NAME='setup_the_witcher_3_wild_hunt_goty_1.31_(a)_(9709)-9.bin' ARCHIVE_BASE_0_PART9_MD5='0f5329306515d6f41a1b4a7b2d38ad74' ARCHIVE_BASE_0_SIZE='38000000' ARCHIVE_BASE_0_VERSION='1.31a-gog9709' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' bin' CONTENT_GAME_MOVIES_FILES=' content/*/bundles/movies.bundle' CONTENT_GAME_BUNDLES_FILES=' content/*/bundles' CONTENT_GAME_VOICES_FILES=' content/*/soundspc.cache' CONTENT_GAME_DATA_FILES=' content' CONTENT_GAME_DLC_HEARTS_OF_STONE_FILES=' dlc/ep1' CONTENT_GAME_DLC_BLOOD_AND_WINE_FILES=' dlc/bob' CONTENT_GAME_DLC_FREE_PACK_FILES=' dlc/dlc*' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/The Witcher 3' APP_MAIN_EXE='bin/x64/witcher3.exe' PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_BUNDLES PKG_VOICES PKG_DLC_HEARTS_OF_STONE PKG_DLC_BLOOD_AND_WINE PKG_DLC_FREE_PACK PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_BUNDLES PKG_VOICES' PKG_BUNDLES_ID="${GAME_ID}-bundles" PKG_BUNDLES_DESCRIPTION='bundles' PKG_BUNDLES_DEPENDENCIES_SIBLINGS=' PKG_MOVIES' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' PKG_VOICES_ID="${GAME_ID}-voices" PKG_VOICES_DESCRIPTION='voices' PKG_DLC_HEARTS_OF_STONE_ID="${GAME_ID}-hearts-of-stone" PKG_DLC_HEARTS_OF_STONE_DESCRIPTION='Hearts of Stone' PKG_DLC_HEARTS_OF_STONE_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_DLC_BLOOD_AND_WINE_ID="${GAME_ID}-blood-and-wine" PKG_DLC_BLOOD_AND_WINE_DESCRIPTION='Blood and Wine' PKG_DLC_BLOOD_AND_WINE_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_DLC_FREE_PACK_ID="${GAME_ID}-free-dlc-pack" PKG_DLC_FREE_PACK_DESCRIPTION='Free DLC pack' PKG_DLC_FREE_PACK_DEPENDENCIES_SIBLINGS=' PKG_BIN' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd bin/x64 $(wine_command) witcher3.exe "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions 'PKG_MOVIES' 'PKG_BUNDLES' 'PKG_VOICES' 'PKG_DATA' 'PKG_BIN' GAME_NAME=$(package_description 'PKG_DLC_HEARTS_OF_STONE') print_instructions 'PKG_DLC_HEARTS_OF_STONE' GAME_NAME=$(package_description 'PKG_DLC_BLOOD_AND_WINE') print_instructions 'PKG_DLC_BLOOD_AND_WINE' GAME_NAME=$(package_description 'PKG_DLC_FREE_PACK') print_instructions 'PKG_DLC_FREE_PACK' # Clean up working_directory_cleanup exit 0 games/play-ultima-4.sh0000755000000000000000000000405114471751340013614 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Ultima 4 # send your bug reports to bugs@dotslashplay.it ### script_version=20250115.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ultima-4' GAME_NAME='Ultima IV: Quest of the Avatar' ARCHIVE_BASE_1_NAME='setup_ultima_iv_-_quest_of_the_avatar_1.0_cs_(28045).exe' ARCHIVE_BASE_1_MD5='f4c943b03e576557a962bcd88470509f' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='16714' ARCHIVE_BASE_1_VERSION='1.0-gog28045' ARCHIVE_BASE_0_NAME='setup_ultima_iv_-_quest_of_the_avatar_1.0_cs_(28045).exe' ARCHIVE_BASE_0_MD5='2c8adeb4cacfba84b611e9c28ddf12e0' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='17589' ARCHIVE_BASE_0_VERSION='1.0-gog28045' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' ultima.com avatar.exe title.exe ultima4.txt *.cga *.con *.dng *.drv *.ega *.egz *.map *.new *.pic *.tlk *.ult' CONTENT_GAME0_MAIN_PATH='__support/save' CONTENT_GAME0_MAIN_FILES=' *.sav' CONTENT_DOC_MAIN_FILES=' manual.pdf readme.rtf' USER_PERSISTENT_FILES=' *.sav' APP_MAIN_EXE='ultima.com' APP_MAIN_ICON='app/goggame-1207658962.ico' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-undertale.sh0000755000000000000000000000524114471751340014145 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Undertale # send your bug reports to bugs@dotslashplay.it ### script_version=20250421.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='undertale' GAME_NAME='Undertale' ARCHIVE_BASE_2_NAME='undertale_en_1_08_18328.sh' ARCHIVE_BASE_2_MD5='b134d85dd8bf723a74498336894ca723' ARCHIVE_BASE_2_SIZE='160000' ARCHIVE_BASE_2_VERSION='1.08-gog18328' ARCHIVE_BASE_1_NAME='undertale_en_1_06_15928.sh' ARCHIVE_BASE_1_MD5='54f9275d3def027e9f3f65a61094a662' ARCHIVE_BASE_1_SIZE='160000' ARCHIVE_BASE_1_VERSION='1.06-gog15928' ARCHIVE_BASE_0_NAME='gog_undertale_2.0.0.1.sh' ARCHIVE_BASE_0_MD5='e740df4e15974ad8c21f45ebe8426fb0' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.001-gog2.0.0.1' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' runner' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='runner' APP_MAIN_ICON='assets/icon.png' ## Work around Mesa-related startup crash APP_MAIN_PRERUN=' # Work around Mesa-related startup crash # cf. https://gitlab.freedesktop.org/mesa/mesa/issues/1310 export radeonsi_sync_compile=true ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Enforce the binary name if [ -e 'UNDERTALE' ]; then mv 'UNDERTALE' "$(application_exe 'APP_MAIN')" fi ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-unepic.sh0000755000000000000000000000612314471751340013445 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 mortalius # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # unEpic # send your bug reports to bugs@dotslashplay.it ### script_version=20250505.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='unepic' GAME_NAME='unEpic' ARCHIVE_BASE_HUMBLE_0_NAME='unepic-15005.run' ARCHIVE_BASE_HUMBLE_0_MD5='940824c4de6e48522845f63423e87783' ## This MojoSetup installer does not seem to be based on Makeself, ## so our regular type detection and extraction code do not work. ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_VERSION='1.50.05-humble141208' ARCHIVE_BASE_HUMBLE_0_SIZE='360000' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/unepic' ARCHIVE_BASE_GOG_1_NAME='unepic_en_1_51_01_20608.sh' ARCHIVE_BASE_GOG_1_MD5='88d98eb09d235fe3ca00f35ec0a014a3' ARCHIVE_BASE_GOG_1_VERSION='1.51.01-gog20608' ARCHIVE_BASE_GOG_1_SIZE='380000' ARCHIVE_BASE_GOG_0_NAME='gog_unepic_2.1.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='341556e144d5d17ae23d2b0805c646a1' ARCHIVE_BASE_GOG_0_SIZE='380000' ARCHIVE_BASE_GOG_0_VERSION='1.50.05-gog2.1.0.4' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_GAME_BIN64_FILES=' unepic64' CONTENT_GAME_BIN32_FILES=' unepic32' CONTENT_GAME_DATA_FILES=' data image sound voices omaps dictios_pc unepic.png' APP_MAIN_EXE_BIN64='unepic64' APP_MAIN_EXE_BIN32='unepic32' APP_MAIN_ICON_HUMBLE='unepic.png' APP_MAIN_ICON_GOG='../support/icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libGL.so.1 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-urtuk-the-desolation.sh0000755000000000000000000001703214471751340016252 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Urtuk: The Desolation # send your bug reports to bugs@dotslashplay.it ### script_version=20260517.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='urtuk-the-desolation' GAME_NAME='Urtuk: The Desolation' ARCHIVE_BASE_0_NAME='urtuk_the_desolation_1_0_0_91b_53003.sh' ARCHIVE_BASE_0_MD5='4fddaaa42c70b75258a78d4a5b103473' ARCHIVE_BASE_0_SIZE='740000' ARCHIVE_BASE_0_VERSION='1.0.0.91b-gog53003' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' desktop-1.0.jar' # Unless the shipped Java binaries are used, trying to change any game setting triggers a crash: # Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ExceptionInInitializerError # at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:133) # Caused by: java.lang.ExceptionInInitializerError # at kaleta.hex3.GlobalSettings.saveToDisk(GlobalSettings.java:152) # at kaleta.hex3.gameScreens.GlobalSettingsScreen.lambda$null$5897aa15$1(GlobalSettingsScreen.java:71) # at kaleta.hex3.utils.UIBuilder$1.onClick(UIBuilder.java:158) # at kaleta.hex3.gameScreens.uilayout.UIElementBase.onClickInternal(UIElementBase.java:145) # at kaleta.hex3.gameScreens.uilayout.ImageButton.onClickInternal(ImageButton.java:112) # at kaleta.hex3.gameScreens.uilayout.UIElementBase.tick(UIElementBase.java:284) # at kaleta.hex3.gameScreens.uilayout.UIElementBase.tick(UIElementBase.java:222) # at kaleta.hex3.gameScreens.uilayout.UIContainer.tick(UIContainer.java:227) # at kaleta.hex3.gameScreens.uilayout.UIContainer.tick(UIContainer.java:227) # at kaleta.hex3.gameScreens.uilayout.UIContainer.tick(UIContainer.java:227) # at kaleta.hex3.gameScreens.uilayout.UIRoot$PopupRoot.tick(UIRoot.java:86) # at kaleta.hex3.gameScreens.uilayout.UIRoot.tick(UIRoot.java:195) # at kaleta.hex3.gameScreens.GlobalSettingsScreen.tick(GlobalSettingsScreen.java:759) # at kaleta.hex3.HexGame3.render(HexGame3.java:1159) # at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225) # at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126) # Caused by: java.lang.IllegalArgumentException: Unable to create serializer "com.esotericsoftware.kryo.serializers.FieldSerializer" for class: java.lang.invoke.SerializedLambda # at com.esotericsoftware.kryo.factories.ReflectionSerializerFactory.makeSerializer(ReflectionSerializerFactory.java:67) # at com.esotericsoftware.kryo.factories.ReflectionSerializerFactory.makeSerializer(ReflectionSerializerFactory.java:45) # at com.esotericsoftware.kryo.Kryo.newDefaultSerializer(Kryo.java:396) # at com.esotericsoftware.kryo.Kryo.getDefaultSerializer(Kryo.java:380) # at com.esotericsoftware.kryo.Kryo.register(Kryo.java:410) # at kaleta.hex3.utils.KryoSerializer.initKryo(KryoSerializer.java:35) # at kaleta.hex3.utils.KryoSerializer.(KryoSerializer.java:26) # ... 16 more # Caused by: java.lang.reflect.InvocationTargetException # at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74) # at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) # at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) # at com.esotericsoftware.kryo.factories.ReflectionSerializerFactory.makeSerializer(ReflectionSerializerFactory.java:54) # ... 22 more # Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.Class java.lang.invoke.SerializedLambda.capturingClass accessible: module java.base does not "opens java.lang.invoke" to unnamed module @2133c8f8 # at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:353) # at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:329) # at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:277) # at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:179) # at java.base/java.lang.reflect.Field.setAccessible(Field.java:173) # at com.esotericsoftware.kryo.serializers.FieldSerializer.buildValidFields(FieldSerializer.java:282) # at com.esotericsoftware.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:215) # at com.esotericsoftware.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:156) # at com.esotericsoftware.kryo.serializers.FieldSerializer.(FieldSerializer.java:149) # at com.esotericsoftware.kryo.serializers.FieldSerializer.(FieldSerializer.java:133) # at com.esotericsoftware.kryo.serializers.FieldSerializer.(FieldSerializer.java:129) # at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) # ... 25 more # (OpenJDK 25.0.3) CONTENT_GAME_BIN_SHIPPED_FILES=' jre config.json urtuk' USER_PERSISTENT_FILES=' *.bin *.bin.backup' APP_MAIN_TYPE_BIN_SYSTEM='java' APP_MAIN_EXE_BIN_SYSTEM='desktop-1.0.jar' APP_MAIN_EXE_BIN_SHIPPED='urtuk' # TODO: Look for the original game icon in the Windows build. APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_MAIN PKG_BIN_SYSTEM PKG_BIN_SHIPPED' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_BIN' # Easier upgrades from pre-20260517.1 packages PKG_MAIN_PROVIDES=' urtuk-the-desolation-data' PKG_BIN_SHIPPED_ARCH='64' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_SYSTEM_ID="${PKG_BIN_ID}-system" PKG_BIN_SHIPPED_ID="${PKG_BIN_ID}-shipped" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_SYSTEM_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_SHIPPED_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_SHIPPED_DEPENDENCIES_LIBRARIES=' libasound.so.2 libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6 libthread_db.so.1 libX11.so.6 libXext.so.6 libXi.so.6 libXrender.so.1 libXtst.so.6' PKG_BIN_SYSTEM_DESCRIPTION='Using system-provided Java' PKG_BIN_SHIPPED_DESCRIPTION='Using shipped binaries' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation 'PKG_BIN_SYSTEM' launchers_generation 'PKG_BIN_SHIPPED' # Build packages. packages_generation case "$(messages_language)" in ('fr') message='Utilisation des binaires fournis par %s :' bin_system='le système' bin_shipped='les développeurs' ;; ('en'|*) message='Using binaries provided by %s:' bin_system='the system' bin_shipped='the developers' ;; esac printf '\n' printf "$message" "$bin_system" print_instructions 'PKG_MAIN' 'PKG_BIN_SYSTEM' printf "$message" "$bin_shipped" print_instructions 'PKG_MAIN' 'PKG_BIN_SHIPPED' # Clean up. working_directory_cleanup exit 0 games/play-vagrus-the-riven-realms.sh0000755000000000000000000000526714471751340016661 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Vagrus: The Riven Realms # send your bug reports to bugs@dotslashplay.it ### script_version=20251014.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='vagrus-the-riven-realms' GAME_NAME='Vagrus: The Riven Realms' GAME_ID_PROLOGUE="${GAME_ID}-prologue" GAME_NAME_PROLOGUE="${GAME_NAME} - Prologue" ARCHIVE_BASE_PROLOGUE_GOG_1_NAME='vagrus_the_riven_realms_prologue_1_1340522l_64815.sh' ARCHIVE_BASE_PROLOGUE_GOG_1_MD5='b4c4735a13144974da57e73038c29e88' ARCHIVE_BASE_PROLOGUE_GOG_1_SIZE='2659242' ARCHIVE_BASE_PROLOGUE_GOG_1_VERSION='1.1.34-gog64815' ARCHIVE_BASE_PROLOGUE_GOG_0_NAME='vagrus_the_riven_realms_prologue_1_1150613h_56533.sh' ARCHIVE_BASE_PROLOGUE_GOG_0_MD5='b1c3ec004b8d49d9d40a7f54b12fea21' ARCHIVE_BASE_PROLOGUE_GOG_0_SIZE='5500000' ARCHIVE_BASE_PROLOGUE_GOG_0_VERSION='1.1.15-gog56533' ARCHIVE_BASE_PROLOGUE_ITCH_0_NAME='vagrus-demolinux.zip' ARCHIVE_BASE_PROLOGUE_ITCH_0_MD5='4bddf380ed1355b455802cfd615d9ec7' ARCHIVE_BASE_PROLOGUE_ITCH_0_SIZE='3800000' ARCHIVE_BASE_PROLOGUE_ITCH_0_VERSION='0.5.31-itch.2021.05.12' ARCHIVE_BASE_PROLOGUE_ITCH_0_URL='https://lostpilgrims.itch.io/vagrus' UNITY3D_NAME='Vagrus' CONTENT_PATH_DEFAULT_PROLOGUE_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_PROLOGUE_ITCH='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_PROLOGUE="${GAME_ID_PROLOGUE}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Prevent inclusion of Steam libraries. rm --recursive "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/$(unity3d_name)_Data/Plugins" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-vambrace-cold-soul.sh0000755000000000000000000000360114471751340015637 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Vambrace: Cold Soul # send your bug reports to bugs@dotslashplay.it ### script_version=20251023.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='vambrace-cold-soul' GAME_NAME='Vambrace: Cold Soul' ARCHIVE_BASE_0_NAME='vambrace_cold_soul_1_10_b_37074.sh' ARCHIVE_BASE_0_MD5='91f0947bb96d6d5a0479d32ccc2d2770' ARCHIVE_BASE_0_SIZE='4998992' ARCHIVE_BASE_0_VERSION='1.10.b-gog37074' UNITY3D_NAME='VambraceColdSoul' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-vampire-the-masquerade-redemption.sh0000755000000000000000000001003414471751340020670 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Vampire: The Masquerade - Redemption # send your bug reports to bugs@dotslashplay.it ### script_version=20260708.4 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='vampire-the-masquerade-redemption' GAME_NAME='Vampire: The Masquerade - Redemption' ARCHIVE_BASE_1_NAME='setup_vampire_the_masquerade_-_redemption_1.1_gog_v4_(80265).exe' ARCHIVE_BASE_1_MD5=b34e87d4d5fd0fe31d03853fe15f6644 ARCHIVE_BASE_1_TYPE=innosetup ARCHIVE_BASE_1_SIZE=1262578 ARCHIVE_BASE_1_VERSION=1.1-2 ARCHIVE_BASE_0_NAME='setup_vampire_the_masquerade_redemption_2.0.0.3.exe' ARCHIVE_BASE_0_MD5=96c19b0ce487e53dd8fe24ef963d31fc ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_SIZE=1263478 ARCHIVE_BASE_0_VERSION=1.1-1 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' Vampire.exe Vampire.isu anet.inf Chronicles Sounds Video texture.dat kver.pub classes.zip *.nob' # TODO: Is this binary required? CONTENT_GAME0_MAIN_FILES=' Ws2setup.Exe' # TODO: Is the icon required? CONTENT_GAME1_MAIN_FILES=' vampireAnkh.ico' # TODO: Is any of this stuff required? CONTENT_GAME2_MAIN_FILES=' Extras/cs/anet.inf Extras/cs/sysinfo.exe Extras/Atvi.ico Extras/_nihilistic.ico Extras/nihilistic.url Extras/vampireAnkh.ico Extras/whitewolf.ico Extras/white-wolf.url' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME3_MAIN_FILES=' binkw32.dll GETINFO.DLL javai.dll mss32.dll rlDirect.dll WONDLL.dll Miles/MP3DEC.ASI Miles/Mssa3d2.m3d Miles/Mssa3d.m3d Miles/MSSDS3DH.M3D Miles/MSSEAX2.M3D Miles/MSSEAX.M3D Miles/MSSFAST.M3D' # TODO: Is any of this stuff required? CONTENT_GAME4_MAIN_FILES=' Extras/cs/GETINFO.DLL Extras/cs/Sysinv.dll' CONTENT_DOC_MAIN_FILES=' manual.pdf Readme.rtf ReadmePatch.rtf' USER_PERSISTENT_DIRECTORIES=' savegames' USER_PERSISTENT_FILES=' *.ini' # Set required registry keys. installdir=C:\\\\${GAME_ID} installdirexe=${installdir}\\\\vampire.exe WINE_REGISTRY_INIT=' [HKEY_LOCAL_MACHINE\Software\Activision\Vampire: The Masquerade - Redemption\v1.0] "CDDRIVE"="c:" "INSTALLDIR"="'${installdir}'" "INSTALLDIREXE"="'${installdirexe}'" "INSTALLTYPE"=dword:00000002 "Version"="0.1" ' APP_MAIN_EXE='Vampire.exe' APP_MAIN_ICON='vampireAnkh.ico' PKG_MAIN_ARCH=32 # Easier upgrades from pre-20260708.2 packages PKG_MAIN_PROVIDES=vampire-the-masquerade-redemption-data # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Extract and store the game CD-key. cdkey_destination=$(package_path PKG_MAIN)$(path_game_data) mkdir --parents "$cdkey_destination" case $(current_archive) in (ARCHIVE_BASE_1) # The source is a base64-encoded string, that must be converted to an hexadecimal representation. sed --silent --expression='99s/.*"valueData": "\(.*\)",/\1/p' \ "$(path_archive_contents)/goggame-1207658831.script" | base64 --decode | od --format=x1 --address-radix=n | tr --delete ' ' \ > "${cdkey_destination}/cdkey" ;; (ARCHIVE_BASE_0) cat > "${cdkey_destination}/cdkey" <<- EOF 4e074abf8e4dc1719cde2bb9912ea3e9 EOF ;; esac # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Register the game CD-key. wineprefix_init_custom() { cat <<- 'EOF' # Register the game CD-key. cdkey=$(cat "${PATH_GAME_DATA}/cdkey") $(wine_command) reg add 'HKLM\Software\WON\CDKeys' /v 'Vampire' /t REG_BINARY /d "$cdkey" /f EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-van-helsing.sh0000755000000000000000000001344014471751340014375 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Incredible Adventures of Van Helsing # send your bug reports to bugs@dotslashplay.it ### script_version=20260709.2 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='van-helsing-final-cut' GAME_NAME='The Incredible Adventures of Van Helsing: Final Cut' ARCHIVE_BASE_0_NAME='setup_the_incredible_adventures_of_van_helsing_-_final_cut_1.1.0b_(b)_(23988).exe' ARCHIVE_BASE_0_MD5=11823fff68df72308f3f8ba8f9dfa820 ARCHIVE_BASE_0_TYPE=innosetup ARCHIVE_BASE_0_PART1_NAME='setup_the_incredible_adventures_of_van_helsing_-_final_cut_1.1.0b_(b)_(23988)-1.bin' ARCHIVE_BASE_0_PART1_MD5=07fcaf654ce6cfb9026d1e6e40b06bf3 ARCHIVE_BASE_0_PART2_NAME='setup_the_incredible_adventures_of_van_helsing_-_final_cut_1.1.0b_(b)_(23988)-2.bin' ARCHIVE_BASE_0_PART2_MD5=de5281e71e9d68bb196da32c09048ec9 ARCHIVE_BASE_0_PART3_NAME='setup_the_incredible_adventures_of_van_helsing_-_final_cut_1.1.0b_(b)_(23988)-3.bin' ARCHIVE_BASE_0_PART3_MD5=721981718e036fb2fb4e848543241be7 ARCHIVE_BASE_0_PART4_NAME='setup_the_incredible_adventures_of_van_helsing_-_final_cut_1.1.0b_(b)_(23988)-4.bin' ARCHIVE_BASE_0_PART4_MD5=dc7981e674f6400d1919d56b735854fd ARCHIVE_BASE_0_PART5_NAME='setup_the_incredible_adventures_of_van_helsing_-_final_cut_1.1.0b_(b)_(23988)-5.bin' ARCHIVE_BASE_0_PART5_MD5=0d9cec82a419c8abb5a7a414817e1446 ARCHIVE_BASE_0_SIZE=35870060 ARCHIVE_BASE_0_VERSION=1.1.0b-1 CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' VanHelsing_x64.exe' # VanHelsing_x64.exe requirements CONTENT_LIBS_MAIN_FILES=' PhysX3_x64.dll PhysX3Common_x64.dll PhysX3Cooking_x64.dll Galaxy64.dll' CONTENT_GAME0_MAIN_FILES=' Cfg CgShaders CommonTextures Effects Models Terrains Textures UI' CONTENT_GAME1_MAIN_FILES=' Sounds/Ambient Sounds/effects Sounds/General Sounds/Misc Sounds/Music Sounds/Options Sounds/Shrines Sounds/Skills Sounds/Soldiers Sounds/Soldiers_low Sounds/Touchdown Sounds/TreasureChests Sounds/sample.ogg' # TODO: Can videos be moved to a dedicated package? CONTENT_GAME2_MAIN_FILES=' Sounds/Languages/ENG Videos/ENG/*.ogg Videos/ENG/*.webm' CONTENT_GAME_L10N_FR_FILES=' Strings/French UI/LoadingScreens/FR Videos/FR/*.srt' CONTENT_GAME_L10N_EN_FILES=' Strings/Eng UI/LoadingScreens/ENG Videos/ENG/*.srt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/NeocoreGames/Van Helsing Final Cut' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\NeoCore Games\Van Helsing Final Cut' WINE_REGISTRY_INIT_L10N_FR=' [HKEY_CURRENT_USER\Software\NeoCore Games\Van Helsing Final Cut] "Language"="FR" ' WINE_REGISTRY_INIT_L10N_EN=' [HKEY_CURRENT_USER\Software\NeoCore Games\Van Helsing Final Cut] "Language"="eng" ' APP_MAIN_EXE='VanHelsing_x64.exe' PACKAGES_LIST=' PKG_MAIN PKG_L10N_FR PKG_L10N_EN' PKG_MAIN_ARCH=64 PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N' PKG_MAIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf' # Easier upgrades from pre-20260709.1 packages PKG_MAIN_PROVIDES=' van-helsing-final-cut-data van-helsing-final-cut-terrains-1 van-helsing-final-cut-terrains-2 van-helsing-final-cut-terrains-3' # Easier upgrades from pre-20251115.1 packages PKG_MAIN_PROVIDES="$PKG_MAIN_PROVIDES van-helsing-final-cut-l10n-common" PKG_L10N_ID=${GAME_ID}-l10n PKG_L10N_FR_ID=${PKG_L10N_ID}-fr PKG_L10N_EN_ID=${PKG_L10N_ID}-en PKG_L10N_FR_PROVIDES=$PKG_L10N_ID PKG_L10N_EN_PROVIDES=$PKG_L10N_ID PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_EN_DESCRIPTION='English localisation' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Create some empty files. # TODO: Are they required? touch \ "$(path_archive_contents)/Cfg/Skills/Monster/__gargoyle_zuhanas_effect.cfg" \ "$(path_archive_contents)/Cfg/Soldier/02_Normal_ranged/ATD_inkmachine_generalis.cfg" # Include game data. content_inclusion_icons content_inclusion_default # Write the localisations configuration. languages_xml=$(path_game_data)/Strings/languages.xml # French cat > "$(package_path PKG_L10N_FR)${languages_xml}" << EOF French FR EOF # English cat > "$(package_path PKG_L10N_EN)${languages_xml}" << EOF English eng EOF # Write launchers. # Set localisation of first launch. for package in \ PKG_L10N_FR \ PKG_L10N_EN do ( set_current_package $package wine_registry_script_write $package ) done wine_registry_script_write() { return 0; } # A dummy value is set to trigger the integration of the registry script in the generated launcher. WINE_REGISTRY_INIT='whatever' # Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. ln --force --symbolic $(path_libraries)/* "\${PATH_PREFIX}" EOF } launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') message='version %s :' lang_fr='française' lang_en='anglaise' ;; ('en'|*) message='%s version:' lang_fr='French' lang_en='English' ;; esac printf '\n' printf "$message" "$lang_fr" print_instructions PKG_MAIN PKG_L10N_FR printf "$message" "$lang_en" print_instructions PKG_MAIN PKG_L10N_EN # Clean up. working_directory_cleanup exit 0 games/play-vaporum.sh0000755000000000000000000000415214471751340013653 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Vaporum # send your bug reports to bugs@dotslashplay.it ### script_version=20251014.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='vaporum' GAME_NAME='Vaporum' ARCHIVE_BASE_0_NAME='vaporum_patch_14_27515.sh' ARCHIVE_BASE_0_MD5='2c65dd89fbeec16740e1d57263606ffa' ARCHIVE_BASE_0_SIZE='3200000' ARCHIVE_BASE_0_VERSION='1.14-gog27515' UNITY3D_NAME='VaporumGame' UNITY3D_PLUGINS=' libMouseLib.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' ## Yes, .exe for a native Linux build. ## Some developers are funny like that. CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}.exe" CONTENT_GAME0_DATA_FILES=' Localization' CONTENT_DOC_DATA_FILES=' BuildInfo.txt PatchNotes.txt' USER_PERSISTENT_DIRECTORIES=' Saves Settings' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-victor-vran-expansions.sh0000755000000000000000000000360414471751340016622 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Victor Vran expansions: # - Motörhead - Through the Ages # - Fractured Worlds # send your bug reports to bugs@dotslashplay.it ### script_version=20260711.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID=victor-vran GAME_NAME='Victor Vran' EXPANSION_ID_MOTORHEAD=motorhead-through-the-ages EXPANSION_NAME_MOTORHEAD='Motörhead - Through the Ages' EXPANSION_ID_FRACTURED=fractured-worlds EXPANSION_NAME_FRACTURED='Fractured Worlds' ARCHIVE_BASE_MOTORHEAD_0_NAME='victor_vran_mot_rhead_through_the_ages_2_07_20181005_24296.sh' ARCHIVE_BASE_MOTORHEAD_0_MD5=e84685034d2d90782a3ab7c83901bc11 ARCHIVE_BASE_MOTORHEAD_0_SIZE=868392 ARCHIVE_BASE_MOTORHEAD_0_VERSION=2.07.20181005-1 ARCHIVE_BASE_FRACTURED_0_NAME='victor_vran_fractured_worlds_2_07_20181005_24296.sh' ARCHIVE_BASE_FRACTURED_0_MD5=94a8bd9f2ca09e3c4e2547a0d5a7bc8c ARCHIVE_BASE_FRACTURED_0_SIZE=213785 ARCHIVE_BASE_FRACTURED_0_VERSION=2.07.20181005-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' DLC' PKG_PARENT_ID=$GAME_ID PKG_MAIN_DEPENDENCIES_SIBLINGS=PKG_PARENT # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-victor-vran.sh0000755000000000000000000000634514471751340014442 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Victor Vran # send your bug reports to bugs@dotslashplay.it ### script_version=20260711.1 PLAYIT_COMPATIBILITY_LEVEL=2.35 GAME_ID='victor-vran' GAME_NAME='Victor Vran' ARCHIVE_BASE_0_NAME='victor_vran_2_07_20181005_24296.sh' ARCHIVE_BASE_0_MD5=506f55f5521131e7ab69b656a3e55582 ARCHIVE_BASE_0_SIZE=4721209 ARCHIVE_BASE_0_VERSION=2.07.20181005-1 CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' VictorVranGOG DLC Local Movies Packs' # Work around the engine expectation that files are owned by the current user. LD_PRELOAD_SOURCE=' #define _GNU_SOURCE #include #include #include #include #include #include typedef int (*orig_open_f_type)(const char *pathname, int flags, mode_t mode); int open(const char *pathname, int flags, ...) { va_list valist; mode_t mode; static orig_open_f_type orig_open = NULL; if (orig_open == NULL) orig_open = (orig_open_f_type)dlsym(RTLD_NEXT, "open"); flags &= ~O_NOATIME; if (flags & (O_CREAT | O_TMPFILE)) { va_start(valist, flags); mode = va_arg(valist, mode_t); va_end(valist); } return orig_open(pathname, flags, mode); } ' APP_MAIN_EXE='VictorVranGOG' APP_MAIN_ICON='../support/icon.png' # Work around a failure to launch due to not parsing the correct SSL configuration. APP_MAIN_PRERUN=' # Work around a failure to launch due to not parsing the correct SSL configuration. export OPENSSL_CONF=/etc/ssl ' PKG_MAIN_ARCH=32 PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl-gnutls.so.4 libdl.so.2 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXrender.so.1 libXt.so.6' # Easier upgrades from pre-20260711.1 packages PKG_MAIN_PROVIDES=' victor-vran-data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path=${playit_lib_dir}/libplayit.sh.2 if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2=$playit_lib_path break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract archive contents. archive_extraction_default # Include shipped libgcrypt.so.11 on Debian. # Use the system-provided libraries on Arch Linux and Gentoo. case "$(option_value 'package')" in ('deb') CONTENT_LIBS_MAIN_RELATIVE_PATH='i386/lib/i386-linux-gnu' CONTENT_LIBS_MAIN_FILES=' libgcrypt.so.11 libgcrypt.so.11.7.0' PKG_MAIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_MAIN) libc.so.6 libgpg-error.so.0" ;; (*) PKG_MAIN_DEPENDENCIES_LIBRARIES="$(dependencies_libraries_list PKG_MAIN) libgcrypt.so.11" ;; esac # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-warhammer-40k-rogue-trader.sh0000755000000000000000000003262714471751340017147 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Rogue Trader # send your bug reports to bugs@dotslashplay.it ### script_version=20250306.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='warhammer-40k-rogue-trader' GAME_NAME='Warhammer 40,000: Rogue Trader' ARCHIVE_BASE_6_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103).exe' ARCHIVE_BASE_6_MD5='45d3f481b2fb210a843334a712554958' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-1.bin' ARCHIVE_BASE_6_PART1_MD5='eda89a11f948f200f4c56237285fb9b9' ARCHIVE_BASE_6_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-2.bin' ARCHIVE_BASE_6_PART2_MD5='8949a2fc4b96b54c2307e4764843b772' ARCHIVE_BASE_6_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-3.bin' ARCHIVE_BASE_6_PART3_MD5='a91cfd8b31c9b6d70e925dd0a9be15ef' ARCHIVE_BASE_6_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-4.bin' ARCHIVE_BASE_6_PART4_MD5='2bc3bd62513a295c5b7273458cff6f6d' ARCHIVE_BASE_6_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-5.bin' ARCHIVE_BASE_6_PART5_MD5='4f7a9191151f5c901ebca190e181faa9' ARCHIVE_BASE_6_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-6.bin' ARCHIVE_BASE_6_PART6_MD5='a26289180a5296bb2f0f3eea4cb3f615' ARCHIVE_BASE_6_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-7.bin' ARCHIVE_BASE_6_PART7_MD5='1a48f99811600d78a2dfe86956bdf5e8' ARCHIVE_BASE_6_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.2.13_release_(80103)-8.bin' ARCHIVE_BASE_6_PART8_MD5='246389293503a141c111471c3a4ba35f' ARCHIVE_BASE_6_SIZE='37045414' ARCHIVE_BASE_6_VERSION='1.3.2.13-gog80103' ARCHIVE_BASE_5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404).exe' ARCHIVE_BASE_5_MD5='71407e5f100c9afb88d8a876acbe51b7' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-1.bin' ARCHIVE_BASE_5_PART1_MD5='451f0a5aac0a3da0c9e8fa3979eff824' ARCHIVE_BASE_5_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-2.bin' ARCHIVE_BASE_5_PART2_MD5='14fb662df8cd6819ddfce0450c8ec36a' ARCHIVE_BASE_5_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-3.bin' ARCHIVE_BASE_5_PART3_MD5='f80074c63d24b5520ec88654285c5468' ARCHIVE_BASE_5_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-4.bin' ARCHIVE_BASE_5_PART4_MD5='48c37e52d4c3427aed8b6bd91620bcf9' ARCHIVE_BASE_5_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-5.bin' ARCHIVE_BASE_5_PART5_MD5='bc344f584140b3f6d667d9e879cc8fcc' ARCHIVE_BASE_5_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-6.bin' ARCHIVE_BASE_5_PART6_MD5='621b0d6aa656fb9a9d4e996b11f36d3e' ARCHIVE_BASE_5_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-7.bin' ARCHIVE_BASE_5_PART7_MD5='f4824d1c931dab3d9e03d18fda2154c1' ARCHIVE_BASE_5_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-8.bin' ARCHIVE_BASE_5_PART8_MD5='f7bb783d1b27594b3628838afe9db6d2' ARCHIVE_BASE_5_SIZE='37048733' ARCHIVE_BASE_5_VERSION='1.3.1.11-gog79404' ARCHIVE_BASE_4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738).exe' ARCHIVE_BASE_4_MD5='13a67e2d41eaa13be8b5b029f5689960' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-1.bin' ARCHIVE_BASE_4_PART1_MD5='dd82d3952855dccbacea503ecb474d29' ARCHIVE_BASE_4_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-2.bin' ARCHIVE_BASE_4_PART2_MD5='7e9d9ec0ed8b3464b3bc69b1b4da9cac' ARCHIVE_BASE_4_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-3.bin' ARCHIVE_BASE_4_PART3_MD5='cea9076d2ca033c8c19d0ae430e1e360' ARCHIVE_BASE_4_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-4.bin' ARCHIVE_BASE_4_PART4_MD5='511ea6681bc8bdc30b2fbcecebc0eb93' ARCHIVE_BASE_4_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-5.bin' ARCHIVE_BASE_4_PART5_MD5='a14376472e60896a5df65ee827f6b44e' ARCHIVE_BASE_4_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-6.bin' ARCHIVE_BASE_4_PART6_MD5='dde090355aa02688b2221654d28d578d' ARCHIVE_BASE_4_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-7.bin' ARCHIVE_BASE_4_PART7_MD5='ce048a3df557b10ec1b9aed3829d4a01' ARCHIVE_BASE_4_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-8.bin' ARCHIVE_BASE_4_PART8_MD5='2c92fb4be98fd9b1dd1df64d1054aa92' ARCHIVE_BASE_4_SIZE='37053756' ARCHIVE_BASE_4_VERSION='1.3.1.6-gog78738' ARCHIVE_BASE_3_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703).exe' ARCHIVE_BASE_3_MD5='02a4073b04dbbf73724860397b66af7f' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-1.bin' ARCHIVE_BASE_3_PART1_MD5='dc8e9b260bbc886a11f6994d61bdbb46' ARCHIVE_BASE_3_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-2.bin' ARCHIVE_BASE_3_PART2_MD5='65edfab770311c2d7b840f374628b3da' ARCHIVE_BASE_3_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-3.bin' ARCHIVE_BASE_3_PART3_MD5='6627554f24158c5b0650c58f9a95395e' ARCHIVE_BASE_3_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-4.bin' ARCHIVE_BASE_3_PART4_MD5='4a30eeb23fc592041127e6615ce65bcf' ARCHIVE_BASE_3_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-5.bin' ARCHIVE_BASE_3_PART5_MD5='d249a8e0769661359b5d0467a7fb065b' ARCHIVE_BASE_3_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-6.bin' ARCHIVE_BASE_3_PART6_MD5='067db90eec212272951f04324b5883f4' ARCHIVE_BASE_3_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-7.bin' ARCHIVE_BASE_3_PART7_MD5='ded5b6136305429254afcbc8f82db455' ARCHIVE_BASE_3_SIZE='36237881' ARCHIVE_BASE_3_VERSION='1.2.1.26-gog77703' ARCHIVE_BASE_2_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506).exe' ARCHIVE_BASE_2_MD5='28277602abf5481ed6ef4f58c5769d17' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-1.bin' ARCHIVE_BASE_2_PART1_MD5='2ac1b1e04feacc93d734a4f8d409d549' ARCHIVE_BASE_2_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-2.bin' ARCHIVE_BASE_2_PART2_MD5='93d73c1420af6a771773c2be6ca52d16' ARCHIVE_BASE_2_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-3.bin' ARCHIVE_BASE_2_PART3_MD5='66435951336c29903538ac094f9b1e3d' ARCHIVE_BASE_2_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-4.bin' ARCHIVE_BASE_2_PART4_MD5='0256c674ed680b53b0afd83c58ad803d' ARCHIVE_BASE_2_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-5.bin' ARCHIVE_BASE_2_PART5_MD5='e9b1a1a80da7efa72dd98ed0c526c3c9' ARCHIVE_BASE_2_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-6.bin' ARCHIVE_BASE_2_PART6_MD5='f0ff7ff188125429a042d8a867c1811a' ARCHIVE_BASE_2_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-7.bin' ARCHIVE_BASE_2_PART7_MD5='4ec080aace5f303e6232464617807820' ARCHIVE_BASE_2_SIZE='36502107' ARCHIVE_BASE_2_VERSION='1.2.0.30-gog74506' ARCHIVE_BASE_1_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681).exe' ARCHIVE_BASE_1_MD5='4dacb9055aefe3aba3c0b9d69f1e7bbe' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-1.bin' ARCHIVE_BASE_1_PART1_MD5='0992b9315611a76db8eb3ec16af01437' ARCHIVE_BASE_1_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-2.bin' ARCHIVE_BASE_1_PART2_MD5='8390e0d884653541edf3d489cf069aab' ARCHIVE_BASE_1_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-3.bin' ARCHIVE_BASE_1_PART3_MD5='0c8dcda2d01a9db6d48750213454ae46' ARCHIVE_BASE_1_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-4.bin' ARCHIVE_BASE_1_PART4_MD5='3857bdce47b4d311c1712eb8bf96e76d' ARCHIVE_BASE_1_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-5.bin' ARCHIVE_BASE_1_PART5_MD5='498fd37ca55b4082a5620e0892ef7e85' ARCHIVE_BASE_1_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-6.bin' ARCHIVE_BASE_1_PART6_MD5='c471fa41f77b39003e4cbcc5177636e2' ARCHIVE_BASE_1_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-7.bin' ARCHIVE_BASE_1_PART7_MD5='1d9ee45fd389fac0a34c9154f52068cf' ARCHIVE_BASE_1_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-8.bin' ARCHIVE_BASE_1_PART8_MD5='d36f057b4f24c2c4f0a6fe8341d258f4' ARCHIVE_BASE_1_SIZE='37037198' ARCHIVE_BASE_1_VERSION='1.1.58.505-gog72681' ARCHIVE_BASE_0_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073).exe' ARCHIVE_BASE_0_MD5='adecb272b3abcafcdadcc661fd0fa16a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-1.bin' ARCHIVE_BASE_0_PART1_MD5='750087be34c3e067e8f117cb75abf01b' ARCHIVE_BASE_0_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-2.bin' ARCHIVE_BASE_0_PART2_MD5='3ac14fc89b7770aaa91ace86b5d77fa0' ARCHIVE_BASE_0_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-3.bin' ARCHIVE_BASE_0_PART3_MD5='9d75b578aff00669425099c77d39c946' ARCHIVE_BASE_0_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-4.bin' ARCHIVE_BASE_0_PART4_MD5='4873f86957ee03b4c6d5a9b467300d43' ARCHIVE_BASE_0_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-5.bin' ARCHIVE_BASE_0_PART5_MD5='e63da686a49e98310fdc26a426d94fd2' ARCHIVE_BASE_0_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-6.bin' ARCHIVE_BASE_0_PART6_MD5='71395b57d293fabd7e2e930523cbf909' ARCHIVE_BASE_0_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-7.bin' ARCHIVE_BASE_0_PART7_MD5='e172106a1819cf3ff50229d01986ebbd' ARCHIVE_BASE_0_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-8.bin' ARCHIVE_BASE_0_PART8_MD5='cd37f515a987c38b8bbef29c073f29f9' ARCHIVE_BASE_0_SIZE='37034784' ARCHIVE_BASE_0_VERSION='1.0.89.426-gog70073' UNITY3D_NAME='wh40krt' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_BUNDLES_SCENES_1_FILES=' bundles/[a-p]*.scenes' CONTENT_GAME_DATA_BUNDLES_SCENES_2_FILES=' bundles/*.scenes' CONTENT_GAME_DATA_BUNDLES_UNIT_FILES=' bundles/*.unit' CONTENT_GAME_DATA_BUNDLES_FILES=' bundles' CONTENT_GAME0_DATA_FILES=' whrtmodificationtemplate-release.rar' ## While the game works with the default wined3d renderer, ## performances are much better when using dxvk instead. WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Owlcat Games/Warhammer 40000 Rogue Trader' PACKAGES_LIST=' PKG_BIN PKG_DATA_BUNDLES_SCENES_1 PKG_DATA_BUNDLES_SCENES_2 PKG_DATA_BUNDLES_UNIT PKG_DATA_BUNDLES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES' PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_BUNDLES_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES_SCENES_1 PKG_DATA_BUNDLES_SCENES_2 PKG_DATA_BUNDLES_UNIT' PKG_DATA_BUNDLES_SCENES_ID="${PKG_DATA_BUNDLES_ID}-scenes" PKG_DATA_BUNDLES_SCENES_1_ID="${PKG_DATA_BUNDLES_SCENES_ID}-1" PKG_DATA_BUNDLES_SCENES_2_ID="${PKG_DATA_BUNDLES_SCENES_ID}-2" PKG_DATA_BUNDLES_SCENES_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - scenes" PKG_DATA_BUNDLES_SCENES_1_DESCRIPTION="$PKG_DATA_BUNDLES_SCENES_DESCRIPTION - 1" PKG_DATA_BUNDLES_SCENES_2_DESCRIPTION="$PKG_DATA_BUNDLES_SCENES_DESCRIPTION - 2" PKG_DATA_BUNDLES_UNIT_ID="${PKG_DATA_BUNDLES_ID}-unit" PKG_DATA_BUNDLES_UNIT_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - unit" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop Steam-specific stuff. ## --force is used because it is not included in all releases. rm --force --recursive 'steam workshop tool' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ys-chronicles-1.sh0000755000000000000000000000504214471751340015101 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Ys Chronicles: Ancient Ys Vanished: Omen # send your bug reports to bugs@dotslashplay.it ### script_version=20250803.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ys-chronicles-1' GAME_NAME='Ys Chronicles: Ancient Ys Vanished: Omen' ARCHIVE_BASE_1_NAME='setup_ys_i_2022-01-03_(52678).exe' ARCHIVE_BASE_1_MD5='2d49aaad12f0e088070517cfdfe4b77f' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='816457' ARCHIVE_BASE_1_VERSION='1.1.0-gog52678' ARCHIVE_BASE_0_NAME='setup_ys_1_2.0.0.1.exe' ARCHIVE_BASE_0_MD5='ff6c2e8ab34ea15226521fb8b6c8c23b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='700000' ARCHIVE_BASE_0_VERSION='1.1.0-gog2.0.0.1' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' config.exe ys1plus.exe' CONTENT_GAME_DATA_FILES=' release' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Saved Games/FALCOM/ys12c' APP_MAIN_EXE='ys1plus.exe' APP_CONFIG_ID="${GAME_ID}-config" APP_CONFIG_NAME="$GAME_NAME - configuration" APP_CONFIG_EXE='config.exe' APP_CONFIG_CAT='Settings' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/mpeg, systemstream=(boolean)true, mpegversion=(int)1' ## Ensure easy upgrade from pre-20250508.2 packages. PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} ys-1" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Ensure easy upgrade from pre-20250508.2 packages. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} ys-1-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 tests/check-license.sh0000755000000000000000000000065114471751340013762 0ustar rootroot#!/bin/sh set -o errexit CONTRIBUTORS_LIST=$( grep 'SPDX-FileCopyrightText' games/* | cut --delimiter=' ' --fields=5- | sort --unique ) CONTRIBUTOR_MISSING=0 while read contributor; do grep --quiet "$contributor" licenses/* || { printf 'Missing contributor in licenses/*: %s\n' "$contributor" && CONTRIBUTOR_MISSING=1 } done << EOL $(printf '%s\n' "$CONTRIBUTORS_LIST") EOL test $CONTRIBUTOR_MISSING -eq 0 COPYING0000644000000000000000000000121414471751340010613 0ustar rootrootACSL is short for Anti-Capitalist Software License BSD-2-Clause is short for Simplified BSD License Full license texts can be found in the "licenses" directory. ACSL applies to all files outside of the "games" directory, and is the default one for files in "games" directory. If a script specifies another license in its headers, the license set in the script takes precedence over the default one. In addition to the license applying to any given file, it is explicitly forbidden to input any of these in an LLM or any other tool powered by or powering a generative AI. This includes, but is not limited to, LLM "training" and AI-assisted coding. licenses/0000755000000000000000000000000014471751340011367 5ustar rootrootlicenses/ACSL0000644000000000000000000000353614471751340012043 0ustar rootrootAnti-Capitalist Software License (v 1.4) Copyright © 2015 Antoine Le Gonidec Copyright © 2016 Mopi Copyright © 2018 VA Copyright © 2020 HS-157 Copyright © 2020 Hoël Bézier Copyright © 2020 berru Copyright © 2021 Christian Stalp Copyright © 2023 Fabien Givors This is anti-capitalist software, released for free use by individuals and organizations that do not operate by capitalist principles. Permission is hereby granted, free of charge, to any person or organization (the "User") obtaining a copy of this software and associated documentation files (the "Software"), to use, copy, modify, merge, distribute, and/or sell copies of the Software, subject to the following conditions: 1. The above copyright notice and this permission notice shall be included in all copies or modified versions of the Software. 2. The User is one of the following: a. An individual person, laboring for themselves b. A non-profit organization c. An educational institution d. An organization that seeks shared profit for all of its members, and allows non-members to set the cost of their labor 3. If the User is an organization with owners, then all owners are workers and all workers are owners with equal equity and/or equal vote. 4. If the User is an organization, then the User is not law enforcement or military, or working for or under either. The Software is provided "as is", without express or implied warranty of any kind, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.licenses/BSD-2-Clause0000644000000000000000000000336714471751340013304 0ustar rootrootSimplified BSD License Copyright © 2015 Antoine Le Gonidec Copyright © 2015 mortalius Copyright © 2016 Mopi Copyright © 2018 BetaRays Copyright © 2018 Phil Morrell Copyright © 2018 VA Copyright © 2020 Jacek Szafarkiewicz Copyright © 2020 HS-157 Copyright © 2020 Hoël Bézier Copyright © 2020 berru Copyright © 2021 dany_wilde Copyright © 2021 Christian Stalp Copyright © 2023 Fabien Givors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holder or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. Makefile0000644000000000000000000000324514471751340011226 0ustar rootrootcollection_name = 45_rpg # Set default prefix if called by the root account, for system-wide install. UID := $(shell id --user) ifeq ($(UID),0) prefix = /usr/local endif # Set install path based on $(prefix), if provided. ifneq ($(prefix),) datadir = $(prefix)/share endif # Fall back on $XDG_DATA_HOME, defaulting to ~/.local/share ifeq ($(prefix),) ifeq ($(XDG_DATA_HOME),) XDG_DATA_HOME := $(HOME)/.local/share endif datadir = $(XDG_DATA_HOME) endif collections_path = $(DESTDIR)$(datadir)/play.it/collections # Install the game scripts .PHONY: install uninstall install: install -D --mode=755 --target-directory=$(collections_path)/$(collection_name) games/* uninstall: rm $(collections_path)/$(collection_name)/play-*.sh rmdir -p --ignore-fail-on-non-empty $(collections_path)/$(collection_name) # Generate tarballs, for easier packaging .PHONY: dist ## The generated tarball is signed with gpg by default, ## NO_SIGN should be set to a non-0 value to skip the signature. NO_SIGN := 0 dist: DATE := $(shell date +%F) dist: TARBALL := $(collection_name)_$(DATE).tar.gz dist: TAR_OPTIONS := --sort=name --mtime=2023-08-25 --owner=root:0 --group=root:0 --use-compress-program='gzip --no-name' dist: games/*.sh tests/check-license.sh COPYING licenses Makefile README.md mkdir --parents dist LC_ALL=C tar cf dist/$(TARBALL) $(TAR_OPTIONS) games/*.sh tests/check-license.sh COPYING licenses Makefile README.md ifeq ($(NO_SIGN),0) rm --force dist/$(TARBALL).asc gpg --armor --detach-sign dist/$(TARBALL) endif # Run license check, to ensure no contributor is missing .PHONY: check check-license check: check-license check-license: ./tests/check-license.sh README.md0000644000000000000000000002402414471751340011043 0ustar rootroot# ./play.it role-playing games collection The codebase is maintained at [https://git.dotslashplay.it/games-rpg/] Bug reports should be sent to [bugs@dotslashplay.it], and support requests to [requests@dotslashplay.it] [https://git.dotslashplay.it/games-rpg/]: https://git.dotslashplay.it/games-rpg/ [bugs@dotslashplay.it]: mailto:bugs@dotslashplay.it [requests@dotslashplay.it]: mailto:requests@dotslashplay.it ## Description ./play.it is a free software building native packages from installers for Windows or Linux, mainly those sold by stores focusing on DRM-free games distribution. The goal is that a game installed via ./play.it is indistinguishable from a game installed via the official repositories of your favourite distribution. This specific collection includes only role-playing games. These games revolve around character development. Common features include world exploration, tactical or action-based battles, and a deep story. Both turn-based and real-time games are included. ## Installation ### Distributions providing ./play.it The following distributions provide installation instructions in their official documentation: - [Debian] - [Gentoo] - [Ubuntu] (French article) [Debian]: https://wiki.debian.org/Games/PlayIt#Installation [Gentoo]: https://wiki.gentoo.org/wiki/Play.it#Installation [Ubuntu]: https://doc.ubuntu-fr.org/play.it#installation In most cases, these instructions should work in the same way for derivatives of these distributions. ### Installation from git If your distribution does not already have a package for this ./play.it collection, you can install it from this git repository. ``` git clone --branch main --depth 1 https://git.dotslashplay.it/games-rpg play.it-rpg.git cd play.it-rpg.git make install ``` ## Usage Usage instructions are provided on the main ./play.it repository: [./play.it: Installer for DRM-free commercial games — Usage] [./play.it: Installer for DRM-free commercial games — Usage]: https://git.dotslashplay.it/scripts/about/#usage ## Contributing ### First contribution There is no real rule for your first contribution. You can host your updated code anywhere you like and contact us via any way described in the [Contact information] section below. It is OK to expose your updated code through GitHub or GitLab.com if you have nothing better at hand, but we would be thankful if you would instead use some hosting outside of these big silos. [Contact information]: #contact-information We do not enforce any workflow like merge/pull requests or any such thing. We are interested in the result of your work, not in how you got to it. So shatter your shackles, and for once take pleasure in working *however you like*! You are not even required to use git if you do not know or do not like this tool. Please try to follow these simple guidelines, and your contribution is probably going to be accepted quickly: - Run `make check` before submitting your code, to ensure you did not break anything by accident; - Use tabs for indentation. No real developer would ever indent anything with spaces. ### Regular contributions If you keep contributing on a more regular basis (sending 3 patches in the same year would already make you a regular) we can grant you direct write access to the repositories hosted at git.dotslashplay.it. This is not mandatory, if for some reason you can not or do not want to work with git you can simply keep following the "First contribution" guidelines, and forget about this whole "Regular contributions" section. To grant you such an access we need nothing but a public SSH key, that you can send us through any way described in the [Contact information] section below. [Contact information]: #contact-information Once you have been granted access, you should add the following to your local SSH configuration: ``` Host git.dotslashplay.it Port 1962 User gitolite3 ``` You should then update the remote of your local repository, with the following command (assuming a remote named "upstream"): ``` git remote set-url --push upstream ssh://git.dotslashplay.it/games-rpg ``` Since these repositories are worked on by several people, there are a couple extra guidelines that you should follow: - Your work should always be pushed to a dedicated branch, never on the main branch; - Game script updates, including bug fixes, should be pushed to branches named with a "update/" prefix; - Addition of new game scripts should be pushed to branches named with a "new/" prefix; - You are allowed to push code to branches opened by other contributors, but please communicate with them if you plan to do so; - Force push and branches deletion are not allowed, if you want a branch to be deleted please ask us to do it for you. ### Collection maintenance If you really like this collection, you might wish to start co-maintaining it. That kind of help would be most welcome! This implies more trust than a contributor access, but there are safeguards in place so there is no risk for you to break anything in a way impossible to revert. So you do not need to be some kind of "git guru" to be granted access, the only skill really required is some real interest for the games supported in this collection. The main difference with a contributor access is that you are no longer limited to the `update/*` and `new/*` branches, you can update the `main` branch too, the one that is installed by ./play.it users and that is used to build packages for Linux distributions including ./play.it in their repositories. To reduce risks of breakages, please always run the full collection of tests prior to sending an update to the main branch: ``` make check ``` A good way to never forget about it is to set a git hook, an executable .git/hooks/pre-push file with the following content: ``` #!/bin/sh set -o errexit # Check the syntax of all game scripts, using ShellCheck. make --jobs=$(nproc) check exit 0 ``` ## Supported games - A House of Many Doors - Akalabeth: World of Doom - Anima: Gate of Memories - Arcanum: Of Steamworks and Magick Obscura - Asura - Baldur's Gate series: - Baldur's Gate, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - Baldur's Gate 2, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - Baldur's Gate 3 - Book of Demons - Cat Quest series: - Cat Quest - Cat Quest 2 - Chained Echoes - Children of Morta - Citizen Sleeper - Convoy - Cornerstone: The Song of Tyrim - Costume Quest - CrossCode - Darksiders 2 - Deep Sky Derelicts - Deltarune - Dex - Dicey Dungeons - Din's Curse - Divinity series: - Divine Divinity - Divinity: Original Sin - Divinity: Original Sin 2 - Dragon Age: Origins - Dust: An Elysian Tail - Earthlock - Eschalon: Book 1 - Everspace - Evoland series: - Evoland - Evoland 2 - Fallen London setting: - Sunless Sea, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - Sunless Skies - Fallout series: - Fallout - Fallout 2 - Fallout: New Vegas - Forced - Gamedec - Ghost of a Tale - Hand of Fate - Haven - Heroine's Quest: The Herald of Ragnarok - Horizon Zero Dawn - Ikenfell - Jade Empire - Kingdom Come: Deliverance - Kingsway - Knights of Pen and Paper - Kyn - Legend of Grimrock - Lenna's Inception - Lords of Xulima - Minit - Monster Sanctuary - Moon Hunters - Mordheim: City of the Damned - My Time at Portia - Neurodeck: Psychological Deckbuilder - Neverwinter Nights - Ocean's Heart - Paper Sorcerer - Pathfinder: Kingmaker - Pier Solar and the Great Architects - Pillars of Eternity series: - Pillars of Eternity, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - Pillars of Eternity 2 - Pokemon Insurgence - Rebel Galaxy - Rue Valley - Slay the Spire - Sovereign Syndicate - Starship Traveller - SteamWorld Quest - Stories: The Path of Destinies - System Shock 2 - Tangledeep - The Bard's Tale 4 - The Count Lucanor - The Elder Scrolls series: - The Elder Scrolls: Arena - The Elder Scrolls 2: Daggerfall - The Elder Scrolls 3: Morrowind, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - The Elder Scrolls 5: Skyrim - The Incredible Adventures of Van Helsing - The Lamplighters League - The Swords of Ditto - The Temple of Elemental Evil - The Warlock of Firetop Mountain - The Witcher series: - The Witcher, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - The Witcher 2 - The Witcher 3 - Ultima 4 - Undertale - unEpic - Urtuk: The Desolation - Vagrus: The Riven Realms - Vambrace: Cold Soul - Vampire: The Masquerade - Redemption - Vaporum - Victor Vran - Warhammer 40k: Rogue Trader - Ys Chronicles: Ancient Ys Vanished: Omen [https://git.vv221.fr/play.it/games-vv221/about/]: https://git.vv221.fr/play.it/games-vv221/about/ ## Contact information ### IRC channel Some ./play.it developers and users can be reached on IRC, channel is `#play.it` on network `irc.oftc.net`. The main language on this IRC channel is English, but most of us can speak French too. ### E-mail A contact e-mail for feedback can usually be found in each ./play.it game script, as well as in the library. Open one of these files with any text editor to see the contact e-mail. ## blackhole.vv222.fr Instead of getting access to this git repository, or any other ./play.it-related Web stuff, you might get redirected to blackhole.vv222.fr where you get a slow trickle of nonsensical French text with a couple hyperlinks. This is a trap for generative AI scraping bots that have been attacking ./play.it server relentlessly for a long time. If you get hit by this forced redirection this means you are trying to reach a Web page from an IP provided by a known bad ISP, one who already took part in mass attacks against our server. Then the most effective way to avoid the redirection is to use another ISP, one that is not providing resources to DDoS attacks in favour of generative AI companies. If you can not access Internet using another ISP then please get in touch through one of the contact methods listed above, and we can unblock either your IP or your whole ISP.