games/play-abandon-ship.sh0000755000000000000000000000543214471751340014527 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Abandon Ship # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='abandon-ship' GAME_NAME='Abandon Ship' ARCHIVE_BASE_0_NAME='abandon_ship_1_3_14934_41922.sh' ARCHIVE_BASE_0_MD5='484e670989853f9c7460d0dd08b3ffba' ARCHIVE_BASE_0_SIZE='11000000' ARCHIVE_BASE_0_VERSION='1.3.14934-gog41922' ARCHIVE_BASE_0_URL='https://www.gog.com/game/abandon_ship' UNITY3D_NAME='AbandonShip' UNITY3D_PLUGINS=' libAkHarmonizer.so libAkSoundEngine.so libSynthOne.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_ASSETS_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/AssetBundles" CONTENT_DOC_DATA_FILES=' Licenses' PACKAGES_LIST=' PKG_BIN PKG_DATA_ASSETS 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' PKG_DATA_ASSETS_ID="${PKG_DATA_ID}-assets" PKG_DATA_ASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - assets" # 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 ## Link some Unity3D plugins in the game data path as the game engine fails to find them otherwise. libraries_source=$(path_libraries) libraries_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86_64" mkdir --parents "$libraries_destination" ln --symbolic --target-directory="$libraries_destination" \ "${libraries_source}/libAkSoundEngine.so" \ "${libraries_source}/libAkHarmonizer.so" \ "${libraries_source}/libSynthOne.so" \ "${libraries_source}/ScreenSelector.so" # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-afterlife.sh0000755000000000000000000000644414471751340014131 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2021 Anna Lea set -o errexit ### # Afterlife # send your bug reports to bugs@dotslashplay.it ### script_version=20241023.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='afterlife' GAME_NAME='Afterlife' ARCHIVE_BASE_EN_0_NAME='gog_afterlife_2.2.0.8.sh' ARCHIVE_BASE_EN_0_MD5='3aca0fac1b93adec5aff39d395d995ab' ARCHIVE_BASE_EN_0_SIZE='260000' ARCHIVE_BASE_EN_0_VERSION='1.1-gog2.2.0.8' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/afterlife' ARCHIVE_BASE_FR_0_NAME='gog_afterlife_french_2.2.0.8.sh' ARCHIVE_BASE_FR_0_MD5='56b3efee60bc490c68f8040587fc1878' ARCHIVE_BASE_FR_0_SIZE='250000' ARCHIVE_BASE_FR_0_VERSION='1.1-gog2.2.0.8' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/afterlife' ARCHIVE_BASE_DE_0_NAME='gog_afterlife_german_2.2.0.8.sh' ARCHIVE_BASE_DE_0_MD5='441b57901235584ff851da8fe316f0b3' ARCHIVE_BASE_DE_0_SIZE='310000' ARCHIVE_BASE_DE_0_VERSION='1.1-gog2.2.0.8' ARCHIVE_BASE_DE_0_URL='https://www.gog.com/game/afterlife' ARCHIVE_BASE_ES_0_NAME='gog_afterlife_spanish_2.2.0.8.sh' ARCHIVE_BASE_ES_0_MD5='43deb4aeeaa3b9ede542f1a0718b15ee' ARCHIVE_BASE_ES_0_SIZE='250000' ARCHIVE_BASE_ES_0_VERSION='1.1-gog2.2.0.8' ARCHIVE_BASE_ES_0_URL='https://www.gog.com/game/afterlife' ARCHIVE_BASE_IT_0_NAME='gog_afterlife_italian_2.2.0.8.sh' ARCHIVE_BASE_IT_0_MD5='cb60193a32d29babfc203412df00b21e' ARCHIVE_BASE_IT_0_SIZE='250000' ARCHIVE_BASE_IT_0_VERSION='1.1-gog2.2.0.8' ARCHIVE_BASE_IT_0_URL='https://www.gog.com/game/afterlife' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' alife.* alife *.asc *.exe *.ini' CONTENT_DOC_MAIN_FILES=' readme.txt' CONTENT_DOC0_MAIN_PATH="${CONTENT_PATH_DEFAULT}/../docs" CONTENT_DOC0_MAIN_FILES=' afterlife - reference guide.pdf' USER_PERSISTENT_FILES=' *.ini' USER_PERSISTENT_DIRECTORIES=' save' APP_MAIN_TYPE='dosbox' APP_MAIN_EXE='alife/afterdos.bat' APP_MAIN_ICON='../support/icon.png' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_EN="${PKG_MAIN_ID}-en" PKG_MAIN_ID_FR="${PKG_MAIN_ID}-fr" PKG_MAIN_ID_DE="${PKG_MAIN_ID}-de" PKG_MAIN_ID_ES="${PKG_MAIN_ID}-es" PKG_MAIN_ID_IT="${PKG_MAIN_ID}-it" PKG_MAIN_PROVIDES=" $PKG_MAIN_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" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to lowercase. tolower . ) # Include game data content_inclusion_icons content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd alife afterdos.bat $@ EOF } launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-age-of-wonders-1.sh0000755000000000000000000000500614471751340015134 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Age of Wonders 1 # send your bug reports to bugs@dotslashplay.it ### script_version=20250122.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='age-of-wonders-1' GAME_NAME='Age of Wonders' ARCHIVE_BASE_1_NAME='setup_age_of_wonders_1.36.0053_(22161).exe' ARCHIVE_BASE_1_MD5='e9c045b1a915d0af6f838ec0ad27d910' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='320000' ARCHIVE_BASE_1_VERSION='1.36.0053-gog22161' ARCHIVE_BASE_1_URL='https://www.gog.com/game/age_of_wonders' ARCHIVE_BASE_0_NAME='setup_age_of_wonders_2.0.0.13.exe' ARCHIVE_BASE_0_MD5='9ee2ccc5223c41306cf6695fc09a5634' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='330000' ARCHIVE_BASE_0_VERSION='1.36.0053-gog2.0.0.13' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' aow.exe aowed.exe' CONTENT_GAME_DATA_FILES=' int dict edimages images release scenario sfx songs tcmaps *.dpl *.wav' CONTENT_DOC_DATA_FILES=' quickstart.pdf readme.txt' USER_PERSISTENT_DIRECTORIES=' emailin emailout save user' ## "icodecs" winetricks verb is required for correct intro movie playback. ## TODO: Check if it is still required with current WINE WINE_WINETRICKS_VERBS='icodecs' APP_MAIN_EXE='aow.exe' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_EXE='aowed.exe' APP_EDITOR_NAME="$GAME_NAME - Editor" 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-age-of-wonders-planetfall.sh0000755000000000000000000000731314471751340017121 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Age of Wonders: Planetfall # send your bug reports to bugs@dotslashplay.it ### script_version=20250123.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='age-of-wonders-planetfall' GAME_NAME='Age of Wonders: Planetfall' ARCHIVE_BASE_0_NAME='setup_age_of_wonders_planetfall_1.4.0.4c_(64bit)_(47648).exe' ARCHIVE_BASE_0_MD5='a92c35dc7da9d98ec81124fe8d9e4d7d' ## Do not use innoextract --lowercase option, ## as it leads to voice overs not playing ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_age_of_wonders_planetfall_1.4.0.4c_(64bit)_(47648)-1.bin' ARCHIVE_BASE_0_PART1_MD5='cca141657c572c23851bf614988106c8' ARCHIVE_BASE_0_PART2_NAME='setup_age_of_wonders_planetfall_1.4.0.4c_(64bit)_(47648)-2.bin' ARCHIVE_BASE_0_PART2_MD5='acf2bd9ce2f2e776f60b163e95628795' ARCHIVE_BASE_0_SIZE='17000000' ARCHIVE_BASE_0_VERSION='1.404.43827-gog47648' ARCHIVE_BASE_0_URL='https://www.gog.com/game/age_of_wonders_planetfall' CONTENT_PATH_DEFAULT='.' ## TODO: Some of these libraries and binaries might be related to the launcher, ## and should be dropped if the game can work without them. CONTENT_GAME_BIN_FILES=' Bin ColladaDLL.dll D3DCompiler_43.dll dbghelp.dll fmod64.dll fmodstudio64.dll iggy_w64.dll libeay32.dll pops_api.dll Qt5Concurrent.dll Qt5Core.dll Qt5Gui.dll Qt5OpenGL.dll Qt5Widgets.dll REDXC.dll ssleay32.dll xinput1_3.dll zip.dll AowPF.exe AowPF_Debug.exe ContentEd.exe CrashReporterTool.exe CrashReporterUI.exe dowser.exe LevelEd.exe PackageManager.exe ResourceEd.exe' ## TODO: Check if the Galaxy library is required CONTENT_GAME0_BIN_FILES=' Galaxy64.dll' CONTENT_GAME_DATA_LIBRARIES_1_FILES=' Content/*/Libraries/Strategic Content/*/Libraries/Tactical' CONTENT_GAME_DATA_LIBRARIES_2_FILES=' Content/*/Libraries' CONTENT_GAME_DATA_FILES=' Content Development Language Debug.ttf' CONTENT_DOC_DATA_FILES=' OpenSource Readme.txt ThirdPartyLicenses.txt' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Paradox Interactive/Age of Wonders Planetfall' APP_MAIN_EXE='AowPF.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA_LIBRARIES_1 PKG_DATA_LIBRARIES_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_LIBRARIES_1 PKG_DATA_LIBRARIES_2' PKG_DATA_LIBRARIES_ID="${PKG_DATA_ID}-libraries" PKG_DATA_LIBRARIES_1_ID="${PKG_DATA_LIBRARIES_ID}-1" PKG_DATA_LIBRARIES_2_ID="${PKG_DATA_LIBRARIES_ID}-2" PKG_DATA_LIBRARIES_DESCRIPTION="$PKG_DATA_DESCRIPTION - libraries" PKG_DATA_LIBRARIES_1_DESCRIPTION="$PKG_LIBRARIES_DESCRIPTION - 1" PKG_DATA_LIBRARIES_2_DESCRIPTION="$PKG_LIBRARIES_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 # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ai-war-2.sh0000755000000000000000000000564714471751340013513 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # AI War 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250123.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ai-war-2' GAME_NAME='AI War 2' ARCHIVE_BASE_2_NAME='ai_war_2_5_615_78653.sh' ARCHIVE_BASE_2_MD5='191ed22d5487288ec8adcb9e5e682307' ARCHIVE_BASE_2_SIZE='3462750' ARCHIVE_BASE_2_VERSION='5.615-gog78653' ARCHIVE_BASE_2_URL='https://www.gog.com/game/ai_war_2' ARCHIVE_BASE_1_NAME='ai_war_2_5_607_75309.sh' ARCHIVE_BASE_1_MD5='cace7c4dc863f420da52b6d6a1818c2f' ARCHIVE_BASE_1_SIZE='3461745' ARCHIVE_BASE_1_VERSION='5.607-gog75309' ARCHIVE_BASE_0_NAME='ai_war_2_4_006_54416.sh' ARCHIVE_BASE_0_MD5='3bbcfa00ea5014d5d6f1258d780c97b0' ARCHIVE_BASE_0_SIZE='3400000' ARCHIVE_BASE_0_VERSION='4.006-gog54416' UNITY3D_NAME='AIWar2Linux' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_BIN_FILES=' ArcenNetworkLib CodeExternal PlayerData ReliableDLLStorage' ## This game seems to use a strange plugins system, so we include its directory as-is. CONTENT_GAME1_BIN_FILES=" ${UNITY3D_NAME}_Data/Plugins" CONTENT_GAME0_DATA_FILES=' AIW2ModdingAndGUI AssetBundles_Linux GameData GlobalBundles TotalConversions XMLMods' USER_PERSISTENT_DIRECTORIES=' PlayerData' ## Force the use of the OpenGL renderer, ## as the Vulkan one fails to display anything APP_MAIN_OPTIONS='-force-glcore' 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 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 data files specific to Windows and Mac OS rm --force --recursive \ 'TotalConversions/ExampleTC/AssetBundles_OSX' \ 'TotalConversions/ExampleTC/AssetBundles_Win' \ 'XMLMods/Bonus_Assets/AssetBundles_OSX' \ 'XMLMods/Bonus_Assets/AssetBundles_Win' ) # 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-airline-tycoon-deluxe.sh0000755000000000000000000000461714471751340016410 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Airline Tycoon Deluxe # send your bug reports to bugs@dotslashplay.it ### script_version=20250123.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='airline-tycoon-deluxe' GAME_NAME='Airline Tycoon Deluxe' ARCHIVE_BASE_0_NAME='gog_airline_tycoon_deluxe_2.0.0.9.sh' ARCHIVE_BASE_0_MD5='dc8b78da150bd3b2089120cc2d24353c' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='1.08-gog2.0.0.9' ARCHIVE_BASE_0_URL='https://www.gog.com/game/airline_tycoon_deluxe' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='lib32' ## TODO: Replace this glob by an explicit list of libraries CONTENT_LIBS_BIN_FILES=' *' CONTENT_GAME_BIN_FILES=' ATDeluxe' CONTENT_GAME_L10N_FILES=' de en fr' CONTENT_GAME_DATA_FILES=' gli intro misc room sound video *.bmp' CONTENT_DOC_DATA_FILES=' LICENSE README CHANGELOG' FAKE_HOME_PERSISTENT_DIRECTORIES=' .AirlineTycoonDeluxe' APP_MAIN_EXE='ATDeluxe' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' ## TODO: Update the list of required native libraries. PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libstdc++.so.6 libSDL2-2.0.so.0 libGL.so.1' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_DESCRIPTION='localizations' 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-anno-1404.sh0000755000000000000000000002370514471751340013510 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Phil Morrell # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Mopi set -o errexit ### # Anno 1404 # send your bug reports to bugs@dotslashplay.it ### script_version=20250209.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='anno-1404' GAME_NAME='Anno 1404' GAME_ID_VENICE="${GAME_ID}-venice" GAME_NAME_VENICE="$GAME_NAME - Venice" # Archives ## Single language archives ARCHIVE_BASE_DE_1_NAME='setup_anno_1404_2.01_v2_gog_0.1_(german)_(76234).exe' ARCHIVE_BASE_DE_1_MD5='2fb420a6ff653cfa5c99e69f4b18c917' ARCHIVE_BASE_DE_1_TYPE='innosetup' ARCHIVE_BASE_DE_1_PART1_NAME='setup_anno_1404_2.01_v2_gog_0.1_(german)_(76234)-1.bin' ARCHIVE_BASE_DE_1_PART1_MD5='edaced2fd4e8e61891afe297585c8c79' ARCHIVE_BASE_DE_1_SIZE='4065552' ARCHIVE_BASE_DE_1_VERSION='2.01.5010-gog76234' ARCHIVE_BASE_DE_1_URL='https://www.gog.com/game/anno_1404_gold_edition' ARCHIVE_BASE_EN_1_NAME='setup_anno_1404_2.01_v2_gog_0.1_(76234).exe' ARCHIVE_BASE_EN_1_MD5='d307aae42bcc14f3358732e374f37b85' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_anno_1404_2.01_v2_gog_0.1_(76234)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='7867cd6e09aec40e5f36637884249b0b' ARCHIVE_BASE_EN_1_SIZE='4015390' ARCHIVE_BASE_EN_1_VERSION='2.01.5010-gog76234' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/anno_1404_gold_edition' ARCHIVE_BASE_FR_1_NAME='setup_anno_1404_2.01_v2_gog_0.1_(french)_(76234).exe' ARCHIVE_BASE_FR_1_MD5='45fa9dd36cfb3fc4fc90de9758c16022' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_anno_1404_2.01_v2_gog_0.1_(french)_(76234)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='d632639d4847f91a37f5d37627c23d3e' ARCHIVE_BASE_FR_1_SIZE='3987056' ARCHIVE_BASE_FR_1_VERSION='2.01.5010-gog76234' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/anno_1404_gold_edition' ARCHIVE_BASE_EN_0_NAME='setup_anno_1404_2.01_v2_(30326).exe' ARCHIVE_BASE_EN_0_MD5='5b92b95ddd3a60bff25afaca6531dab3' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_anno_1404_2.01_v2_(30326)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='3bf8dd4469d43392617df7737cebad04' ARCHIVE_BASE_EN_0_SIZE='4100000' ARCHIVE_BASE_EN_0_VERSION='2.01.5010-gog30326' ARCHIVE_BASE_FR_0_NAME='setup_anno_1404_2.01_v2_(french)_(30326).exe' ARCHIVE_BASE_FR_0_MD5='24be40c2f1ce714dcc9c505ed62fcdb2' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_anno_1404_2.01_v2_(french)_(30326)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='d2bbff77601562218b62b53901edd5e7' ARCHIVE_BASE_FR_0_SIZE='4000000' ARCHIVE_BASE_FR_0_VERSION='2.01.5010-gog30326' ## Multi-languages archives ARCHIVE_BASE_MULTILANG_0_NAME='setup_anno_1404_gold_edition_2.01.5010_(13111).exe' ARCHIVE_BASE_MULTILANG_0_MD5='b19333f57c1c15b788e29ff6751dac20' ARCHIVE_BASE_MULTILANG_0_TYPE='innosetup' ARCHIVE_BASE_MULTILANG_0_PART1_NAME='setup_anno_1404_gold_edition_2.01.5010_(13111)-1.bin' ARCHIVE_BASE_MULTILANG_0_PART1_MD5='17933b44bdb2a26d8d82ffbfdc494210' ARCHIVE_BASE_MULTILANG_0_PART2_NAME='setup_anno_1404_gold_edition_2.01.5010_(13111)-2.bin' ARCHIVE_BASE_MULTILANG_0_PART2_MD5='2f71f5378b5f27a84a41cc481a482bd6' ARCHIVE_BASE_MULTILANG_0_SIZE='6200000' ARCHIVE_BASE_MULTILANG_0_VERSION='2.01.5010-gog13111' # Archive contents CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_MULTILANG='app' ## Anno 1404 (base game) CONTENT_GAME_BIN_FILES=' bin tools anno4.exe' ## This file is not fetched from the archive, ## but created later in this script. CONTENT_GAME0_BIN_FILES=' engine.ini' CONTENT_GAME_L10N_DE_FILES=' maindata/ger0.rda' CONTENT_GAME_L10N_EN_FILES=' maindata/eng0.rda' CONTENT_GAME_L10N_FR_FILES=' maindata/fra0.rda' CONTENT_GAME_DATA_FILES=' data maindata resources' CONTENT_DOC_DATA_FILES=' manual.pdf' ## Venice expansion CONTENT_GAME_BIN_VENICE_FILES=' addon.exe' CONTENT_GAME_L10N_DE_VENICE_FILES=' addon/ger0.rda' CONTENT_GAME_L10N_EN_VENICE_FILES=' addon/eng0.rda' CONTENT_GAME_L10N_FR_VENICE_FILES=' addon/fra0.rda' CONTENT_GAME_DATA_VENICE_FILES=' addon' CONTENT_DOC_DATA_FILES=' manual addon.pdf' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Ubisoft/Anno1404 users/${USER}/AppData/Roaming/Ubisoft/Anno1404Addon users/${USER}/Documents/Anno 1404' ## Install native Direct3D 9 libraries, ## to prevent the engine from rendering only a black screen ## (WINE 10.0-rc2) WINE_WINETRICKS_VERBS='d3dx9' APP_MAIN_EXE='anno4.exe' APP_VENICE_ID="$GAME_ID_VENICE" APP_VENICE_NAME="$GAME_NAME_VENICE" APP_VENICE_EXE='addon.exe' # Packages ## Anno 1404 (base game) PACKAGES_LIST_DE=' PKG_BIN PKG_L10N_DE PKG_DATA' PACKAGES_LIST_EN=' PKG_BIN PKG_L10N_EN PKG_DATA' PACKAGES_LIST_FR=' PKG_BIN PKG_L10N_FR PKG_DATA' PACKAGES_LIST_MULTILANG=' PKG_BIN PKG_L10N_DE PKG_L10N_EN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_DE_ID="${PKG_L10N_BASE_ID}-de" PKG_L10N_EN_ID="${PKG_L10N_BASE_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DE_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_DESCRIPTION='localization' PKG_L10N_DE_DESCRIPTION="${PKG_L10N_DESCRIPTION} - German" 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' ## Venice expansion PACKAGES_LIST_DE="$PACKAGES_LIST_DE PKG_BIN_VENICE PKG_L10N_DE_VENICE PKG_DATA_VENICE" PACKAGES_LIST_EN="$PACKAGES_LIST_EN PKG_BIN_VENICE PKG_L10N_EN_VENICE PKG_DATA_VENICE" PACKAGES_LIST_FR="$PACKAGES_LIST_FR PKG_BIN_VENICE PKG_L10N_FR_VENICE PKG_DATA_VENICE" PACKAGES_LIST_MULTILANG="$PACKAGES_LIST_MULTILANG PKG_BIN_VENICE PKG_L10N_DE_VENICE PKG_L10N_EN_VENICE PKG_L10N_FR_VENICE PKG_DATA_VENICE" PKG_BIN_VENICE_ID="$GAME_ID_VENICE" PKG_BIN_VENICE_ARCH='32' PKG_BIN_VENICE_DESCRIPTION="$GAME_NAME_VENICE" PKG_BIN_VENICE_DEPENDENCIES_SIBLINGS=' PKG_BIN PKG_L10N_VENICE_BASE PKG_DATA_VENICE' PKG_L10N_VENICE_BASE_ID="${GAME_ID_VENICE}-l10n" PKG_L10N_DE_VENICE_ID="${PKG_L10N_VENICE_BASE_ID}-de" PKG_L10N_EN_VENICE_ID="${PKG_L10N_VENICE_BASE_ID}-en" PKG_L10N_FR_VENICE_ID="${PKG_L10N_VENICE_BASE_ID}-fr" PKG_L10N_VENICE_PROVIDES=" $PKG_L10N_VENICE_BASE_ID" PKG_L10N_DE_VENICE_PROVIDES="$PKG_L10N_VENICE_PROVIDES" PKG_L10N_EN_VENICE_PROVIDES="$PKG_L10N_VENICE_PROVIDES" PKG_L10N_FR_VENICE_PROVIDES="$PKG_L10N_VENICE_PROVIDES" PKG_L10N_VENICE_DESCRIPTION="$GAME_NAME_VENICE - localization" PKG_L10N_DE_VENICE_DESCRIPTION="$PKG_L10N_VENICE_DESCRIPTION - German" PKG_L10N_EN_VENICE_DESCRIPTION="$PKG_L10N_VENICE_DESCRIPTION - English" PKG_L10N_FR_VENICE_DESCRIPTION="$PKG_L10N_VENICE_DESCRIPTION - French" PKG_DATA_VENICE_ID="${GAME_ID_VENICE}-data" PKG_DATA_VENICE_DESCRIPTION="$GAME_NAME_VENICE - 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)" # Set the rendering engine to Direct3D 9 # cf. https://bugs.winehq.org/show_bug.cgi?id=45624 cat > 'engine.ini' <<- EOF 9 EOF ) # Include game data content_inclusion_icons 'PKG_DATA' 'APP_MAIN' content_inclusion_icons 'PKG_DATA_VENICE' 'APP_VENICE' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' 'APP_MAIN' launchers_generation 'PKG_BIN_VENICE' 'APP_VENICE' # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_DE_'*) print_instructions 'PKG_BIN' 'PKG_L10N_DE' 'PKG_DATA' ;; ('ARCHIVE_BASE_EN_'*) print_instructions 'PKG_BIN' 'PKG_L10N_EN' 'PKG_DATA' ;; ('ARCHIVE_BASE_FR_'*) print_instructions 'PKG_BIN' 'PKG_L10N_FR' 'PKG_DATA' ;; ('ARCHIVE_BASE_MULTILANG_'*) case "$(messages_language)" in ('fr') lang_string='version %s :' lang_de='allemande' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_de='German' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_de" print_instructions 'PKG_BIN' 'PKG_L10N_DE' 'PKG_DATA' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_L10N_EN' 'PKG_DATA' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_L10N_FR' 'PKG_DATA' ;; esac ( GAME_NAME="$GAME_NAME_VENICE" case "$(current_archive)" in ('ARCHIVE_BASE_DE_'*) print_instructions 'PKG_BIN_VENICE' 'PKG_L10N_DE_VENICE' 'PKG_DATA_VENICE' ;; ('ARCHIVE_BASE_EN_'*) print_instructions 'PKG_BIN_VENICE' 'PKG_L10N_EN_VENICE' 'PKG_DATA_VENICE' ;; ('ARCHIVE_BASE_FR_'*) print_instructions 'PKG_BIN_VENICE' 'PKG_L10N_FR_VENICE' 'PKG_DATA_VENICE' ;; ('ARCHIVE_BASE_MULTILANG_'*) case "$(messages_language)" in ('fr') lang_string='version %s :' lang_de='allemande' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_de='German' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_de" print_instructions 'PKG_BIN_VENICE' 'PKG_L10N_DE_VENICE' 'PKG_DATA_VENICE' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN_VENICE' 'PKG_L10N_EN_VENICE' 'PKG_DATA_VENICE' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN_VENICE' 'PKG_L10N_FR_VENICE' 'PKG_DATA_VENICE' ;; esac ) # Clean up working_directory_cleanup exit 0 games/play-anno-1503.sh0000755000000000000000000000632514471751340013507 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Anno 1503 # send your bug reports to bugs@dotslashplay.it ### script_version=20250120.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='anno-1503' GAME_NAME='Anno 1503' ARCHIVE_BASE_EN_0_NAME='setup_anno_1503_2.0.0.5.exe' ARCHIVE_BASE_EN_0_MD5='a7b6aeb2c5f96e2fab12d1ef12f3b4af' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1600000' ARCHIVE_BASE_EN_0_VERSION='3.0.43-gog2.0.0.5' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/anno_1503_ad' ARCHIVE_BASE_FR_0_NAME='setup_anno_1503_french_2.0.0.5.exe' ARCHIVE_BASE_FR_0_MD5='b2ebc98d0dc97350ede75098633bfbd8' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='1500000' ARCHIVE_BASE_FR_0_VERSION='3.0.43-gog2.0.0.5' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/anno_1503_ad' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.exe *.dll' CONTENT_GAME_L10N_FILES=' texte.dat toolgfx/bodenschtze.inc toolgfx/bodenschtze.tex toolgfx/mainmedium8.zei toolgfx/mainmedium.zei.old toolgfx/mainsmall8.zei toolgfx/pk_*.tex toolgfx/startup.tex videos/1001.bik videos/1002.bik videos/1004.bik videos/1005.bik videos/1006.bik videos/1007.bik videos/1009.bik help samples scenes speech' CONTENT_GAME_DATA_FILES=' anlagen.dat figuren*.dat instanthelplinks.txt videos/1000.bik videos/1003.bik videos/1008.bik data music profiles textures toolgfx' CONTENT_DOC_L10N_FILES=' manual.pdf' USER_PERSISTENT_DIRECTORIES=' SaveGame' ## Prevent a failure to render the intro videos, ## and display problems on some resolutions WINE_VIRTUAL_DESKTOP='auto' ## Work around missing background music ## cf. https://bugs.winehq.org/show_bug.cgi?id=16096 ## TODO: Check if it is still required with current WINE WINE_WINETRICKS_VERBS='directmusic' APP_MAIN_EXE='1503startup.exe' 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 launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-anomaly-2.sh0000755000000000000000000001146014471751340013761 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Anomaly 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20241202.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='anomaly-2' GAME_NAME='Anomaly 2' ARCHIVE_BASE_LINUX_0_NAME='Anomaly2_Linux_1387299615.zip' ARCHIVE_BASE_LINUX_0_MD5='46f0ecd5363106e9eae8642836c29dfc' ARCHIVE_BASE_LINUX_0_SIZE='2500000' ARCHIVE_BASE_LINUX_0_VERSION='1.0-humble1' ARCHIVE_BASE_LINUX_0_URL='https://www.humblebundle.com/store/anomaly-2' ARCHIVE_BASE_WINDOWS_0_NAME='Anomaly2_Windows_1387299615.zip' ARCHIVE_BASE_WINDOWS_0_MD5='2b5ccffcbaee8cfebfd4bb74cacb9fbc' ARCHIVE_BASE_WINDOWS_0_SIZE='2500000' ARCHIVE_BASE_WINDOWS_0_VERSION='1.0-humble1' ARCHIVE_BASE_WINDOWS_0_URL='https://www.humblebundle.com/store/anomaly-2' ARCHIVE_OPTIONAL_ICONS_NAME='anomaly-2_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='73ddbd1651e08d6c8bb4735e5e0a4a81' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/anomaly-2/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 32x32 48x48 64x64 256x256' CONTENT_PATH_DEFAULT_LINUX='Anomaly 2 Linux DRM-free' CONTENT_PATH_DEFAULT_WINDOWS='Anomaly 2 Windows DRM-free/2013-12-17 03-20' CONTENT_LIBS_BIN_FILES_LINUX=' libopenal.so.1' CONTENT_GAME_BIN_FILES_LINUX=' *.txt Anomaly2' CONTENT_GAME_BIN_FILES_WINDOWS=' *.exe *.dll *.txt' CONTENT_GAME_DATA_FILES=' *.dat *.idx *.str' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Application Data/11bitstudios/Anomaly 2' APP_MAIN_EXE_LINUX='Anomaly2' APP_MAIN_EXE_WINDOWS='Anomaly 2.exe' ## Share saved games and config between Linux and Windows engines APP_MAIN_PRERUN_LINUX=' # Share saved games and config between Linux and Windows engines NEW_LAUNCH_REQUIRED=0 WINE_PERSISTENT_PATH="${PATH_PERSISTENT}/wineprefix/users/${USER}/Application Data/11bitstudios/Anomaly 2" if [ -e "${HOME}/.Anomaly 2" ] && [ ! -h "${HOME}/.Anomaly 2" ]; then for file in \ config.bin \ DefaultUser \ iPhoneProfiles do if [ -e "${HOME}/.Anomaly 2/${file}" ]; then mkdir --parents "$WINE_PERSISTENT_PATH" cp --recursive "${HOME}/.Anomaly 2/${file}" "$WINE_PERSISTENT_PATH" fi done mv "${HOME}/.Anomaly 2" "${HOME}/.Anomaly 2.old" NEW_LAUNCH_REQUIRED=1 fi if [ ! -e "${HOME}/.Anomaly 2" ]; then rm --force "${HOME}/.Anomaly 2" mkdir --parents "$WINE_PERSISTENT_PATH" ln --symbolic "$WINE_PERSISTENT_PATH" "${HOME}/.Anomaly 2" fi if [ "$NEW_LAUNCH_REQUIRED" -eq 1 ]; then "$0" exit 0 fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ID="$GAME_ID" PKG_BIN_ID_LINUX="${PKG_BIN_ID}-linux" PKG_BIN_ID_WINDOWS="${PKG_BIN_ID}-windows" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_LINUX="${PKG_DATA_ID}-linux" PKG_DATA_ID_WINDOWS="${PKG_DATA_ID}-windows" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' # LD_PRELOAD shim working around infinite loading times PRELOAD_HACKS_LIST_LINUX=' HACK_TIMERFIX' HACK_TIMERFIX_NAME='timerfix' HACK_TIMERFIX_DESCRIPTION='LD_PRELOAD shim working around infinite loading times' HACK_TIMERFIX_PACKAGE='PKG_BIN' HACK_TIMERFIX_SOURCE=' #define _GNU_SOURCE #include #include #include #include #include static int (*_realSemTimedWait)(sem_t *, const struct timespec *) = NULL; int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout) { if (abs_timeout->tv_nsec >= 1000000000) { ((struct timespec *)abs_timeout)->tv_nsec -= 1000000000; ((struct timespec *)abs_timeout)->tv_sec++; } return _realSemTimedWait(sem, abs_timeout); } __attribute__((constructor)) void init(void) { _realSemTimedWait = dlsym(RTLD_NEXT, "sem_timedwait"); } ' # 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 "$@" # Build and include the LD_PRELOAD shims hacks_inclusion_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-anomaly-defenders.sh0000755000000000000000000001047314471751340015562 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Anomaly Defenders # send your bug reports to bugs@dotslashplay.it ### script_version=20250123.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='anomaly-defenders' GAME_NAME='Anomaly Defenders' ARCHIVE_BASE_LINUX_ZIP_0_NAME='AnomalyDefenders_Linux_1402514865.zip' ARCHIVE_BASE_LINUX_ZIP_0_MD5='430367c8228077e4c8af2f5e7f164f4e' ARCHIVE_BASE_LINUX_ZIP_0_SIZE='640000' ARCHIVE_BASE_LINUX_ZIP_0_VERSION='1.0-humble' ARCHIVE_BASE_LINUX_ZIP_0_URL='https://www.humblebundle.com/store/anomaly-defenders' ARCHIVE_BASE_LINUX_TARGZ_0_NAME='AnomalyDefenders_Linux_1402512837.tar.gz' ARCHIVE_BASE_LINUX_TARGZ_0_MD5='35ccd57e8650dd53a09b1f1e088307cc' ARCHIVE_BASE_LINUX_TARGZ_0_SIZE='640000' ARCHIVE_BASE_LINUX_TARGZ_0_VERSION='1.0-humble' ARCHIVE_BASE_LINUX_TARGZ_0_URL='https://www.humblebundle.com/store/anomaly-defenders' ARCHIVE_BASE_WINDOWS_0_NAME='AnomalyDefenders_Windows_Setup_1402514865.exe' ARCHIVE_BASE_WINDOWS_0_MD5='23ebfeaf0c8b9fda0d5ce73f3a33bdae' ARCHIVE_BASE_WINDOWS_0_TYPE='innosetup' ARCHIVE_BASE_WINDOWS_0_SIZE='645916' ARCHIVE_BASE_WINDOWS_0_VERSION='1.0-humble' ARCHIVE_BASE_WINDOWS_0_URL='https://www.humblebundle.com/store/anomaly-defenders' CONTENT_PATH_DEFAULT_LINUX='AnomalyDefenders' CONTENT_PATH_DEFAULT_WINDOWS='app' CONTENT_LIBS_BIN_FILES_LINUX=' libOpenAL.so' CONTENT_GAME_BIN_FILES_LINUX=' AnomalyDefenders' CONTENT_GAME_BIN_FILES_WINDOWS=' libcurl.dll pctouchhelper.dll anomalydefenders.exe' ## icon.png is only provided by the Linux build. CONTENT_GAME_DATA_FILES=' icon.png *.dat *.idx' ## These documentation files are only provided by the Linux build. CONTENT_DOC_DATA_FILES=' README Copyright license*' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/11bitstudios/Anomaly Defenders' APP_MAIN_EXE_LINUX='AnomalyDefenders' APP_MAIN_EXE_WINDOWS='anomalydefenders.exe' APP_MAIN_ICON_LINUX='icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_ID_LINUX="${PKG_BIN_ID}-linux" PKG_BIN_ID_WINDOWS="${PKG_BIN_ID}-windows" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6' ## Ensure easy upgrades from packages generated with pre-20250123.1 game scripts PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} anomaly-defenders" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Linux build - LD_PRELOAD shim working around infinite loading times PRELOAD_HACKS_LIST_LINUX=' HACK_TIMERFIX' HACK_TIMERFIX_NAME='timerfix' HACK_TIMERFIX_DESCRIPTION='LD_PRELOAD shim working around infinite loading times' HACK_TIMERFIX_PACKAGE='PKG_BIN' HACK_TIMERFIX_SOURCE=' #define _GNU_SOURCE #include #include #include #include #include static int (*_realSemTimedWait)(sem_t *, const struct timespec *) = NULL; int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout) { if (abs_timeout->tv_nsec >= 1000000000) { ((struct timespec *)abs_timeout)->tv_nsec -= 1000000000; ((struct timespec *)abs_timeout)->tv_sec++; } return _realSemTimedWait(sem, abs_timeout); } __attribute__((constructor)) void init(void) { _realSemTimedWait = dlsym(RTLD_NEXT, "sem_timedwait"); } ' # 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 "$@" # Build and include the LD_PRELOAD shims hacks_inclusion_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-anomaly-warzone-earth.sh0000755000000000000000000000736614471751340016420 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Anomaly: Warzone Earth # send your bug reports to bugs@dotslashplay.it ### script_version=20240503.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='anomaly-warzone-earth' GAME_NAME='Anomaly: Warzone Earth' ARCHIVE_BASE_GOG_0_NAME='gog_anomaly_warzone_earth_2.0.0.3.sh' ARCHIVE_BASE_GOG_0_MD5='37b96b44b2dafde64ab364a11dcf9ad8' ARCHIVE_BASE_GOG_0_SIZE='440000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.0.0.3' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/anomaly_warzone_earth' ARCHIVE_BASE_HUMBLE_1_NAME='AnomalyWarzoneEarth-Installer_Humble_Linux_1364850491.zip' ARCHIVE_BASE_HUMBLE_1_MD5='acf5147293b42c7625aea6ad0e56afc4' ARCHIVE_BASE_HUMBLE_1_SIZE='870000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.0-humble2' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/anomaly-warzone-earth' ARCHIVE_BASE_HUMBLE_0_NAME='AnomalyWarzoneEarth-Installer' ARCHIVE_BASE_HUMBLE_0_MD5='36d3fb101ab7c674d475b8f0b59d5e68' ARCHIVE_BASE_HUMBLE_0_SIZE='440000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble1' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_BIN_FILES=' AnomalyWarzoneEarth' CONTENT_GAME_DATA_FILES=' icon.png *.idx *.dat' CONTENT_DOC_DATA_FILES=' README Copyright*' APP_MAIN_EXE='AnomalyWarzoneEarth' APP_MAIN_ICON='icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6' PRELOAD_HACKS_LIST=' HACK_LOADING_TIME' # LD_PRELOAD shim working around the infinite loading times HACK_LOADING_TIME_NAME='finite-loading-time' HACK_LOADING_TIME_DESCRIPTION='LD_PRELOAD shim working around the infinite loading times' HACK_LOADING_TIME_PACKAGE='PKG_BIN' HACK_LOADING_TIME_SOURCE=' #define _GNU_SOURCE #include #include #include #include #include static int (*_realSemTimedWait)(sem_t *, const struct timespec *) = NULL; int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout) { if (abs_timeout->tv_nsec >= 1000000000) { ((struct timespec *)abs_timeout)->tv_nsec -= 1000000000; ((struct timespec *)abs_timeout)->tv_sec++; } return _realSemTimedWait(sem, abs_timeout); } __attribute__((constructor)) void init(void) { _realSemTimedWait = dlsym(RTLD_NEXT, "sem_timedwait"); } ' # 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" # Build and include the LD_PRELOAD shims hacks_inclusion_default # Extract game data archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_1') ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/AnomalyWarzoneEarth-Installer" ## This MojoSetup installer is not using a Makeself wrapper. ARCHIVE_INNER_EXTRACTOR='bsdtar' archive_extraction 'ARCHIVE_INNER' rm "$(archive_path 'ARCHIVE_INNER')" ;; esac # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-aquamarine.sh0000755000000000000000000000621214471751340014304 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Aquamarine # send your bug reports to bugs@dotslashplay.it ### script_version=20241111.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='aquamarine' GAME_NAME='Aquamarine' ARCHIVE_BASE_7_NAME='aquamarine_2_1_1_71763.sh' ARCHIVE_BASE_7_MD5='c875b669a6fafab88361e34cf9e28ec9' ARCHIVE_BASE_7_SIZE='1152842' ARCHIVE_BASE_7_VERSION='2.1.1-gog71763' ARCHIVE_BASE_7_URL='https://www.gog.com/game/aquamarine' ARCHIVE_BASE_6_NAME='aquamarine_1_0_8_5_54515.sh' ARCHIVE_BASE_6_MD5='7978066a0495d061245c4ae23c968874' ARCHIVE_BASE_6_SIZE='726340' ARCHIVE_BASE_6_VERSION='1.0.8.5-gog54515' ARCHIVE_BASE_5_NAME='aquamarine_1_0_8_4_54429.sh' ARCHIVE_BASE_5_MD5='bdec12ffb5efb87a4cf6187ae204c9a2' ARCHIVE_BASE_5_SIZE='730000' ARCHIVE_BASE_5_VERSION='1.0.8.4-gog54429' ARCHIVE_BASE_4_NAME='aquamarine_1_0_8_3_54388.sh' ARCHIVE_BASE_4_MD5='58a324f7ee185f7ee2d73724d1aa8806' ARCHIVE_BASE_4_SIZE='730000' ARCHIVE_BASE_4_VERSION='1.0.8.3-gog54388' ARCHIVE_BASE_3_NAME='aquamarine_1_0_7_4_54070.sh' ARCHIVE_BASE_3_MD5='00a23ecfa6d19d1c7d27b4baf06ebfe1' ARCHIVE_BASE_3_SIZE='650000' ARCHIVE_BASE_3_VERSION='1.0.7.4-gog54070' ARCHIVE_BASE_2_NAME='aquamarine_1_0_6_53400.sh' ARCHIVE_BASE_2_MD5='2182230847d3d09a813ae7bdbc7b3b25' ARCHIVE_BASE_2_SIZE='810000' ARCHIVE_BASE_2_VERSION='1.0.6-gog53400' ARCHIVE_BASE_1_NAME='aquamarine_1_0_2_53166.sh' ARCHIVE_BASE_1_MD5='f9698d39f38b31ed45fbacb807522c1e' ARCHIVE_BASE_1_SIZE='810000' ARCHIVE_BASE_1_VERSION='1.0.2-gog53166' ARCHIVE_BASE_0_NAME='aquamarine_1_0_0_53074.sh' ARCHIVE_BASE_0_MD5='c4ca19389d9fe833a009f457684671d1' ARCHIVE_BASE_0_SIZE='810000' ARCHIVE_BASE_0_VERSION='1.0.0-gog53074' UNITY3D_NAME='Aquamarine' UNITY3D_PLUGINS=' libfmodstudio.so libresonanceaudio.so' ## TODO: Check if the Steam library is required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.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' 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-as-far-as-the-eye.sh0000755000000000000000000000365214471751340015276 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # As Far As The Eye # send your bug reports to bugs@dotslashplay.it ### script_version=20250123.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='as-far-as-the-eye' GAME_NAME='As Far As The Eye' ARCHIVE_BASE_0_NAME='as_far_as_the_eye_1_1_1_44514.sh' ARCHIVE_BASE_0_MD5='577c7175488d34cbcf374bbbce720921' ARCHIVE_BASE_0_SIZE='890000' ARCHIVE_BASE_0_VERSION='1.1.1-gog44514' ARCHIVE_BASE_0_URL='https://www.gog.com/game/as_far_as_the_eye' UNITY3D_NAME='AFATE' ## No shipped plugin should be included. UNITY3D_PLUGINS=' ' CONTENT_PATH_DEFAULT='data/noarch/game' FAKE_HOME_PERSISTENT_DIRECTORIES=' My Games/A FATE' 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 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-ash-of-gods.sh0000755000000000000000000000473714471751340014302 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Ash of Gods: Redemption # send your bug reports to bugs@dotslashplay.it ### script_version=20241130.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='ash-of-gods' GAME_NAME='Ash of Gods: Redemption' ARCHIVE_BASE_0_NAME='ash_of_gods_1_4_39_25313.sh' ARCHIVE_BASE_0_MD5='a2e609b21ac81df1ecb9c74df5806087' ARCHIVE_BASE_0_SIZE='3513836' ARCHIVE_BASE_0_VERSION='1.4.39-gog25313' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ash_of_gods' UNITY3D_NAME='terminus' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudioL.so libfmodstudio.so libgvraudio.so libresonanceaudio.so ScreenSelector.so' ## TODO: Check if the Steam libraries are required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.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-aven-colony.sh0000755000000000000000000000603114471751340014412 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Aven Colony # send your bug reports to bugs@dotslashplay.it ### script_version=20250123.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='aven-colony' GAME_NAME='Aven Colony' ARCHIVE_BASE_0_NAME='setup_aven_colony_1.0.1_(64bit)_(25959).exe' ARCHIVE_BASE_0_MD5='959a44c1bb18e8c3342b10d396ae8a53' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_aven_colony_1.0.1_(64bit)_(25959)-1.bin' ARCHIVE_BASE_0_PART1_MD5='4f24fb8c38d99916a623c46aafc4eeeb' ARCHIVE_BASE_0_PART2_NAME='setup_aven_colony_1.0.1_(64bit)_(25959)-2.bin' ARCHIVE_BASE_0_PART2_MD5='db96cef3e5ce8e2f160b703d6d81777b' ARCHIVE_BASE_0_PART3_NAME='setup_aven_colony_1.0.1_(64bit)_(25959)-3.bin' ARCHIVE_BASE_0_PART3_MD5='0ab31c5b95332e6ab160f55c5fbe0db3' ARCHIVE_BASE_0_PART4_NAME='setup_aven_colony_1.0.1_(64bit)_(25959)-4.bin' ARCHIVE_BASE_0_PART4_MD5='2537b2db5c65a3b1ded96e938a864c52' ARCHIVE_BASE_0_SIZE='15000000' ARCHIVE_BASE_0_VERSION='1.0.25697-gog25959' ARCHIVE_BASE_0_URL='https://www.gog.com/game/aven_colony' UNREALENGINE4_NAME='avencolony' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_TILESETS_1_FILES=" ${UNREALENGINE4_NAME}/content/granitesdk/importedtilesets/city-*" CONTENT_GAME_DATA_TILESETS_2_FILES=" ${UNREALENGINE4_NAME}/content/granitesdk/importedtilesets" APP_MAIN_EXE="${UNREALENGINE4_NAME}.exe" PACKAGES_LIST=' PKG_BIN PKG_DATA_TILESETS_1 PKG_DATA_TILESETS_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_TILESETS_1 PKG_DATA_TILESETS_2' PKG_DATA_TILESETS_ID="${PKG_DATA_ID}-tilesets" PKG_DATA_TILESETS_1_ID="${PKG_DATA_TILESETS_ID}-1" PKG_DATA_TILESETS_2_ID="${PKG_DATA_TILESETS_ID}-2" PKG_DATA_TILESETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - tilesets" PKG_DATA_TILESETS_1_DESCRIPTION="$PKG_TILESETS_DESCRIPTION - 1" PKG_DATA_TILESETS_2_DESCRIPTION="$PKG_TILESETS_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 # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Installing Visual C++ 2019 libraries can cause problems with this game wine_winetricks_verbs() { true ; } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-banished.sh0000755000000000000000000000433714471751340013744 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Banished # send your bug reports to bugs@dotslashplay.it ### script_version=20250429.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='banished' GAME_NAME='Banished' ARCHIVE_BASE_32BIT_0_NAME='setup_banished_32_1.0.7_(14938).exe' ARCHIVE_BASE_32BIT_0_MD5='43042701a692f186d467b97e966fb846' ARCHIVE_BASE_32BIT_0_TYPE='innosetup' ARCHIVE_BASE_32BIT_0_SIZE='190000' ARCHIVE_BASE_32BIT_0_VERSION='1.0.7-gog14938' ARCHIVE_BASE_32BIT_0_URL='https://www.gog.com/game/banished' ARCHIVE_BASE_64BIT_0_NAME='setup_banished_64_1.0.7_(14938).exe' ARCHIVE_BASE_64BIT_0_MD5='463b2720c5c88c28f24de9176b8b1ec4' ARCHIVE_BASE_64BIT_0_TYPE='innosetup' ARCHIVE_BASE_64BIT_0_SIZE='190000' ARCHIVE_BASE_64BIT_0_VERSION='1.0.7-gog14938' ARCHIVE_BASE_64BIT_0_URL='https://www.gog.com/game/banished' CONTENT_PATH_DEFAULT='app' ## TODO: Use a more targeted list of libraries. CONTENT_GAME_BIN_FILES=' *.dll *.exe' CONTENT_GAME_DATA_FILES=' windata' APP_MAIN_EXE_64BIT='application-x64.exe' APP_MAIN_EXE_32BIT='application-x32.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_64BIT='64' PKG_BIN_ARCH_32BIT='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-battle-worlds-kronos.sh0000755000000000000000000000465514471751340016266 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Battle Worlds: Kronos # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='battle-worlds-kronos' GAME_NAME='Battle Worlds: Kronos' ARCHIVE_BASE_0_NAME='gog_battle_worlds_kronos_2.1.0.6.sh' ARCHIVE_BASE_0_MD5='4d7f9e05524ff6b85139df903dbcb74b' ARCHIVE_BASE_0_SIZE='1300000' ARCHIVE_BASE_0_VERSION='1.4.3-gog2.1.0.6' ARCHIVE_BASE_0_URL='https://www.gog.com/game/battle_worlds_kronos' UNITY3D_NAME='BattleWorldsKronos' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' version' 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 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" # 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-battlefleet-gothic-armada-1.sh0000755000000000000000000000432114471751340017307 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Battlefleet Gothic: Armada # send your bug reports to bugs@dotslashplay.it ### script_version=20240611.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='battlefleet-gothic-armada-1' GAME_NAME='Battlefleet Gothic: Armada' ARCHIVE_BASE_0_NAME='setup_battlefleet_gothic_armada_1.0.12_(64bit)_(41732).exe' ARCHIVE_BASE_0_MD5='74271753f6cba4385e50c3f8c05b32da' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_battlefleet_gothic_armada_1.0.12_(64bit)_(41732)-1.bin' ARCHIVE_BASE_0_PART1_MD5='bea83722e900a3253ca68600723e5853' ARCHIVE_BASE_0_PART2_NAME='setup_battlefleet_gothic_armada_1.0.12_(64bit)_(41732)-2.bin' ARCHIVE_BASE_0_PART2_MD5='246e012f15d4bcbbac9a024f1b6816a6' ARCHIVE_BASE_0_SIZE='14000000' ARCHIVE_BASE_0_VERSION='1.0.12-gog41732' ARCHIVE_BASE_0_URL='https://www.gog.com/game/battlefleet_gothic_armada_1' UNREALENGINE4_NAME='battlefleetgothic' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_BIN_FILES=" ${UNREALENGINE4_NAME}/version.bfgver" HUGE_FILES_DATA=" ${UNREALENGINE4_NAME}/content/paks/${UNREALENGINE4_NAME}-windowsnoeditor.pak" APP_MAIN_EXE="${UNREALENGINE4_NAME}.exe" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-beholder-series.sh0000755000000000000000000001035114471751340015234 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Anna Lea set -o errexit ### # Beholder series: # - Beholder # - Beholder 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID_BEHOLDER1='beholder-1' GAME_NAME_BEHOLDER1='Beholder' GAME_ID_BEHOLDER2='beholder-2' GAME_NAME_BEHOLDER2='Beholder 2' ## This DRM-free archive is no longer available for sale from Humble Bundle ARCHIVE_BASE_BEHOLDER1_0_NAME='BeholderLinux_v1.3.0.9120.zip' ARCHIVE_BASE_BEHOLDER1_0_MD5='580a52329b99c701acf3b3665068c6c6' ARCHIVE_BASE_BEHOLDER1_0_SIZE='1781531' ARCHIVE_BASE_BEHOLDER1_0_VERSION='1.3.0.9120-humble1' ARCHIVE_BASE_BEHOLDER2_0_NAME='beholder_2_1_1_13306_25983.sh' ARCHIVE_BASE_BEHOLDER2_0_MD5='af3cb735132ee4fbc17079b932d72dd6' ARCHIVE_BASE_BEHOLDER2_0_SIZE='3700000' ARCHIVE_BASE_BEHOLDER2_0_VERSION='1.1.13306-gog25983' ARCHIVE_BASE_BEHOLDER2_0_URL='https://www.gog.com/game/beholder_2' UNITY3D_NAME_BEHOLDER1='Beholder' UNITY3D_NAME_BEHOLDER2='Beholder2' UNITY3D_PLUGINS_BEHOLDER1=' ScreenSelector.so' ## TODO: Check if the Steam libraries are required UNITY3D_PLUGINS_BEHOLDER1="$UNITY3D_PLUGINS_BEHOLDER1 libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT_BEHOLDER1='BeholderLinux_v1.3.0.9120' ## FIXME: The list of Unity3D plugins to include should be set with UNITY3D_PLUGINS CONTENT_GAME0_BIN64_FILES_BEHOLDER2=" ${UNITY3D_NAME_BEHOLDER2}_Data/Plugins/x86_64" CONTENT_GAME0_BIN32_FILES_BEHOLDER2=" ${UNITY3D_NAME_BEHOLDER2}_Data/Plugins/x86" CONTENT_GAME0_DATA_FILES_BEHOLDER2=' hashes.txt' 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_BEHOLDER1=' 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' ## TODO: This list of dependencies should be completed PKG_BIN_DEPENDENCIES_LIBRARIES_BEHOLDER2=' libc.so.6 libstdc++.so.6 libgdk-x11-2.0.so.0 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES_BEHOLDER1="$PKG_BIN_DEPENDENCIES_LIBRARIES_BEHOLDER1" PKG_BIN64_DEPENDENCIES_LIBRARIES_BEHOLDER2="$PKG_BIN_DEPENDENCIES_LIBRARIES_BEHOLDER2" PKG_BIN32_DEPENDENCIES_LIBRARIES_BEHOLDER1="$PKG_BIN_DEPENDENCIES_LIBRARIES_BEHOLDER1" PKG_BIN32_DEPENDENCIES_LIBRARIES_BEHOLDER2="$PKG_BIN_DEPENDENCIES_LIBRARIES_BEHOLDER2" ## Ensure easy upgrades from packages generated with pre-20241111.1 game scripts PKG_BIN_PROVIDES_BEHOLDER1="${PKG_BIN_PROVIDES_BEHOLDER1:-} beholder" PKG_BIN64_PROVIDES_BEHOLDER1="$PKG_BIN_PROVIDES_BEHOLDER1" PKG_BIN32_PROVIDES_BEHOLDER1="$PKG_BIN_PROVIDES_BEHOLDER1" PKG_DATA_ID_BEHOLDER1="${GAME_ID_BEHOLDER1}-data" PKG_DATA_ID_BEHOLDER2="${GAME_ID_BEHOLDER2}-data" PKG_DATA_DESCRIPTION='data' ## Ensure easy upgrades from packages generated with pre-20241111.1 game scripts PKG_DATA_PROVIDES_BEHOLDER1="${PKG_DATA_PROVIDES_BEHOLDER1:-} beholder-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-book-of-hours-expansions.sh0000755000000000000000000001215514471751340017043 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Book of Hours expansions: # - Perpetual Edition # - House of Light # send your bug reports to bugs@dotslashplay.it ### script_version=20241209.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='book-of-hours' GAME_NAME='Book of Hours' EXPANSION_ID_PERPETUAL='perpetual-edition' EXPANSION_NAME_PERPETUAL='Perpetual Edition' EXPANSION_ID_LIGHT='house-of-light' EXPANSION_NAME_LIGHT='House of Light' # Archives ## Perpetual Edition ARCHIVE_BASE_PERPETUAL_14_NAME='book_of_hours_perpetual_edition_dlc_2024_12_m_5_78248.sh' ARCHIVE_BASE_PERPETUAL_14_MD5='9e6f91b10fed81668deea7c04c0739e7' ARCHIVE_BASE_PERPETUAL_14_SIZE='923' ARCHIVE_BASE_PERPETUAL_14_VERSION='2024.12.m.5-gog78248' ARCHIVE_BASE_PERPETUAL_13_NAME='book_of_hours_perpetual_edition_dlc_2024_11_k_1_77536.sh' ARCHIVE_BASE_PERPETUAL_13_MD5='73102bfa896fcb1f73db07aa202feed3' ARCHIVE_BASE_PERPETUAL_13_SIZE='923' ARCHIVE_BASE_PERPETUAL_13_VERSION='2024.11.k.1-gog77536' ARCHIVE_BASE_PERPETUAL_12_NAME='book_of_hours_perpetual_edition_dlc_2024_10_j_14_77218.sh' ARCHIVE_BASE_PERPETUAL_12_MD5='00a3bc29ebc84b5a77aadd53e1c549f5' ARCHIVE_BASE_PERPETUAL_12_SIZE='923' ARCHIVE_BASE_PERPETUAL_12_VERSION='2024.10.j.14-gog77218' ARCHIVE_BASE_PERPETUAL_10_NAME='book_of_hours_perpetual_edition_dlc_2024_9_i_8_76549.sh' ARCHIVE_BASE_PERPETUAL_10_MD5='169aa03df406345a720776756cd9e931' ARCHIVE_BASE_PERPETUAL_10_SIZE='923' ARCHIVE_BASE_PERPETUAL_10_VERSION='2024.09.i.8-gog76549' ARCHIVE_BASE_PERPETUAL_8_NAME='book_of_hours_perpetual_edition_content_2024_3_e_15_72083.sh' ARCHIVE_BASE_PERPETUAL_8_MD5='2b21b55d6889a4c18ae57cbb1b22cb04' ARCHIVE_BASE_PERPETUAL_8_SIZE='75087' ARCHIVE_BASE_PERPETUAL_8_VERSION='2024.03.e.15-gog72083' ARCHIVE_BASE_PERPETUAL_7_NAME='book_of_hours_perpetual_edition_content_2024_2_e_11_71531.sh' ARCHIVE_BASE_PERPETUAL_7_MD5='a120f5371c1297a8ae13095b7ee3ccdb' ARCHIVE_BASE_PERPETUAL_7_SIZE='75087' ARCHIVE_BASE_PERPETUAL_7_VERSION='2024.02.e.11-gog71531' ARCHIVE_BASE_PERPETUAL_6_NAME='book_of_hours_perpetual_edition_content_2023_12_d_12_69519.sh' ARCHIVE_BASE_PERPETUAL_6_MD5='77796819b6f4a466fed0638fcb685412' ARCHIVE_BASE_PERPETUAL_6_SIZE='75408' ARCHIVE_BASE_PERPETUAL_6_VERSION='2023.12.d.12-gog69519' ARCHIVE_BASE_PERPETUAL_3_NAME='book_of_hours_perpetual_edition_content_2023_11_d_4_69228.sh' ARCHIVE_BASE_PERPETUAL_3_MD5='d5bb3e49df9b8c142ac25aed53c78d01' ARCHIVE_BASE_PERPETUAL_3_SIZE='75404' ARCHIVE_BASE_PERPETUAL_3_VERSION='2023.11.d.4-gog69228' ARCHIVE_BASE_PERPETUAL_2_NAME='book_of_hours_perpetual_edition_content_2023_10_c_11_68174.sh' ARCHIVE_BASE_PERPETUAL_2_MD5='0be5366899fdd4f209153a2671ca87ba' ARCHIVE_BASE_PERPETUAL_2_SIZE='75404' ARCHIVE_BASE_PERPETUAL_2_VERSION='2023.10.c.11-gog68174' ARCHIVE_BASE_PERPETUAL_1_NAME='book_of_hours_perpetual_edition_content_2023_9_b_12_67790.sh' ARCHIVE_BASE_PERPETUAL_1_MD5='a0eafa7c516ad47b0c58e9af037b99b1' ARCHIVE_BASE_PERPETUAL_1_SIZE='75408' ARCHIVE_BASE_PERPETUAL_1_VERSION='2023.09.b.12-gog67790' ARCHIVE_BASE_PERPETUAL_0_NAME='book_of_hours_perpetual_edition_content_2023_8_g_2_67165.sh' ARCHIVE_BASE_PERPETUAL_0_MD5='c426a4968539633c0d0959744ea3d671' ARCHIVE_BASE_PERPETUAL_0_SIZE='75408' ARCHIVE_BASE_PERPETUAL_0_VERSION='2023.08.g.2-gog67165' ## House of Light ARCHIVE_BASE_LIGHT_14_NAME='book_of_hours_house_of_light_2024_12_m_5_78248.sh' ARCHIVE_BASE_LIGHT_14_MD5='53d1d93cf7b27ae023ecb18038c182bf' ARCHIVE_BASE_LIGHT_14_SIZE='5200' ARCHIVE_BASE_LIGHT_14_VERSION='2024.12.m.5-gog78248' ARCHIVE_BASE_LIGHT_14_URL='https://www.gog.com/game/book_of_hours_house_of_light' ARCHIVE_BASE_LIGHT_13_NAME='book_of_hours_house_of_light_2024_11_k_1_77536.sh' ARCHIVE_BASE_LIGHT_13_MD5='ce5306c17782fe048218bdafd4543d6e' ARCHIVE_BASE_LIGHT_13_SIZE='3330' ARCHIVE_BASE_LIGHT_13_VERSION='2024.11.k.1-gog77536' ARCHIVE_BASE_LIGHT_12_NAME='book_of_hours_house_of_light_2024_10_j_14_77218.sh' ARCHIVE_BASE_LIGHT_12_MD5='d87df808a25ca1bb01e1f2e7f2c30622' ARCHIVE_BASE_LIGHT_12_SIZE='3320' ARCHIVE_BASE_LIGHT_12_VERSION='2024.10.j.14-gog77218' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES_PERPETUAL=' bh_Data/StreamingAssets/edition/semper.txt' CONTENT_GAME_MAIN_FILES_LIGHT=' bh_Data/*/DLC_HOL_*' 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 the default initialization 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-book-of-hours.sh0000755000000000000000000001000514471751340014646 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Book of Hours # send your bug reports to bugs@dotslashplay.it ### script_version=20241209.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='book-of-hours' GAME_NAME='Book of Hours' ARCHIVE_BASE_17_NAME='book_of_hours_2024_12_m_5_78248.sh' ARCHIVE_BASE_17_MD5='e11bf31073b691d65e64f68b8dc30ee2' ARCHIVE_BASE_17_SIZE='2495307' ARCHIVE_BASE_17_VERSION='2024.12.m.5-gog78248' ARCHIVE_BASE_17_URL='https://www.gog.com/game/book_of_hours' ARCHIVE_BASE_16_NAME='book_of_hours_2024_11_k_1_77536.sh' ARCHIVE_BASE_16_MD5='2eb3f24916e026060340266ffdab10a8' ARCHIVE_BASE_16_SIZE='2495679' ARCHIVE_BASE_16_VERSION='2024.11.k.1-gog77536' ARCHIVE_BASE_15_NAME='book_of_hours_2024_10_j_14_77218.sh' ARCHIVE_BASE_15_MD5='ede5fbd4a0fab2ed561170ef60019664' ARCHIVE_BASE_15_SIZE='2495637' ARCHIVE_BASE_15_VERSION='2024.10.j.14-gog77218' ARCHIVE_BASE_13_NAME='book_of_hours_2024_9_i_8_76549.sh' ARCHIVE_BASE_13_MD5='868e191034df3652eef1cbe096a2a9ba' ARCHIVE_BASE_13_SIZE='2465383' ARCHIVE_BASE_13_VERSION='2024.09.i.8-gog76549' ARCHIVE_BASE_11_NAME='book_of_hours_2024_7_f_15_74868.sh' ARCHIVE_BASE_11_MD5='48d1d37e95221d38f45bb5fdfe05a296' ARCHIVE_BASE_11_SIZE='2486574' ARCHIVE_BASE_11_VERSION='2024.07.f.15-gog74868' ARCHIVE_BASE_10_NAME='book_of_hours_2024_3_e_17_72226.sh' ARCHIVE_BASE_10_MD5='c4185397829ad4d98a7fa25eddd24235' ARCHIVE_BASE_10_SIZE='2028310' ARCHIVE_BASE_10_VERSION='2024.03.e.17-gog72226' ARCHIVE_BASE_8_NAME='book_of_hours_2024_2_e_11_71531.sh' ARCHIVE_BASE_8_MD5='253b536e020ae39d617cc0746be3d5ee' ARCHIVE_BASE_8_SIZE='1998185' ARCHIVE_BASE_8_VERSION='2024.02.e.11-gog71531' ARCHIVE_BASE_7_NAME='book_of_hours_2023_12_d_12_69519.sh' ARCHIVE_BASE_7_MD5='f99ac227e448683eb9cb9586e0d43cc8' ARCHIVE_BASE_7_SIZE='1938644' ARCHIVE_BASE_7_VERSION='2023.12.d.12-gog69519' ARCHIVE_BASE_4_NAME='book_of_hours_2023_11_d_4_69228.sh' ARCHIVE_BASE_4_MD5='f0dfed821caeb83d795a176dd9571281' ARCHIVE_BASE_4_SIZE='1934820' ARCHIVE_BASE_4_VERSION='2023.11.d.4-gog69228' ARCHIVE_BASE_3_NAME='book_of_hours_2023_10_c_11_68174.sh' ARCHIVE_BASE_3_MD5='958bd653dd8a2453c9920ab60fc96e29' ARCHIVE_BASE_3_SIZE='1932668' ARCHIVE_BASE_3_VERSION='2023.10.c.11-gog68174' ARCHIVE_BASE_2_NAME='book_of_hours_2023_9_b_12_67790.sh' ARCHIVE_BASE_2_MD5='2875c037ee2ff44b41191471449248a1' ARCHIVE_BASE_2_SIZE='1930344' ARCHIVE_BASE_2_VERSION='2023.09.b.12-gog67790' ARCHIVE_BASE_1_NAME='book_of_hours_2023_8_g_2_67165.sh' ARCHIVE_BASE_1_MD5='4d6c689f68c4debb4ad68a3dc1c018b5' ARCHIVE_BASE_1_SIZE='1927812' ARCHIVE_BASE_1_VERSION='2023.08.g.2-gog67165' UNITY3D_NAME='bh' 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' 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)" ## Prevent the inclusion of Steam libraries rm --force --recursive "$(unity3d_name)_Data/Plugins" ) # 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-braveland-series.sh0000755000000000000000000001075414471751340015415 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Braveland games: # - Braveland # - Braveland Wizard # - Braveland Pirate # send your bug reports to bugs@dotslashplay.it ### script_version=20250125.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_BRAVELAND='braveland' GAME_NAME_BRAVELAND='Braveland' GAME_ID_WIZARD='braveland-wizard' GAME_NAME_WIZARD='Braveland Wizard' GAME_ID_PIRATE='braveland-pirate' GAME_NAME_PIRATE='Braveland Pirate' # Archives ## Braveland (original game) ARCHIVE_BASE_BRAVELAND_1_NAME='braveland_en_1_4_0_19_18418.sh' ARCHIVE_BASE_BRAVELAND_1_MD5='7ceac41f0486310c04ec60fcdf7e2b46' ARCHIVE_BASE_BRAVELAND_1_SIZE='320000' ARCHIVE_BASE_BRAVELAND_1_VERSION='1.4.0.19-gog18418' ARCHIVE_BASE_BRAVELAND_1_URL='https://www.gog.com/game/braveland' ARCHIVE_BASE_BRAVELAND_0_NAME='gog_braveland_2.1.0.8.sh' ARCHIVE_BASE_BRAVELAND_0_MD5='c60ac5170e53a7ed22fda6a3e6ce690e' ARCHIVE_BASE_BRAVELAND_0_SIZE='320000' ARCHIVE_BASE_BRAVELAND_0_VERSION='1.3.2.18-gog2.1.0.8' ## Braveland Wizard ARCHIVE_BASE_WIZARD_2_NAME='braveland_wizard_en_1_1_4_14_19675.sh' ARCHIVE_BASE_WIZARD_2_MD5='79fa2c8280b8b3370d85fc32907e2b51' ARCHIVE_BASE_WIZARD_2_SIZE='450000' ARCHIVE_BASE_WIZARD_2_VERSION='1.1.4.14-gog19675' ARCHIVE_BASE_WIZARD_2_URL='https://www.gog.com/game/braveland_wizard' ARCHIVE_BASE_WIZARD_1_NAME='braveland_wizard_en_1_1_3_13_18418.sh' ARCHIVE_BASE_WIZARD_1_MD5='7153da6ceb0deda556ebdb7cfa4b9203' ARCHIVE_BASE_WIZARD_1_SIZE='450000' ARCHIVE_BASE_WIZARD_1_VERSION='1.1.3.13-gog18418' ARCHIVE_BASE_WIZARD_0_NAME='gog_braveland_wizard_2.1.0.4.sh' ARCHIVE_BASE_WIZARD_0_MD5='14346dc8d6e7ad410dd1b179763aa94e' ARCHIVE_BASE_WIZARD_0_SIZE='450000' ARCHIVE_BASE_WIZARD_0_VERSION='1.1.1.11-gog2.1.0.4' ## Braveland Pirate ARCHIVE_BASE_PIRATE_2_NAME='braveland_pirate_en_1_1_1_10_19675.sh' ARCHIVE_BASE_PIRATE_2_MD5='660ad8cd6eef0f7bd1eadcacf1c611c0' ARCHIVE_BASE_PIRATE_2_SIZE='610000' ARCHIVE_BASE_PIRATE_2_VERSION='1.1.1.10-gog19675' ARCHIVE_BASE_PIRATE_2_URL='https://www.gog.com/game/braveland_pirate' ARCHIVE_BASE_PIRATE_1_NAME='braveland_pirate_en_1_1_0_9_18418.sh' ARCHIVE_BASE_PIRATE_1_MD5='445b705cc11b58fd289064aa78ef9210' ARCHIVE_BASE_PIRATE_1_SIZE='610000' ARCHIVE_BASE_PIRATE_1_VERSION='1.1.0.9-gog18418' ARCHIVE_BASE_PIRATE_0_NAME='gog_braveland_pirate_2.1.0.3.sh' ARCHIVE_BASE_PIRATE_0_MD5='982331936f2767daf1974c1686ec0bd3' ARCHIVE_BASE_PIRATE_0_SIZE='610000' ARCHIVE_BASE_PIRATE_0_VERSION='1.0.2.7-gog2.1.0.4' # Archives content CONTENT_PATH_DEFAULT='data/noarch/game' UNITY3D_NAME_BRAVELAND='Braveland' UNITY3D_NAME_WIZARD='Braveland Wizard' UNITY3D_NAME_PIRATE='Braveland Pirate' UNITY3D_PLUGINS=' ScreenSelector.so' # Packages 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID_BRAVELAND="${GAME_ID_BRAVELAND}-data" PKG_DATA_ID_WIZARD="${GAME_ID_WIZARD}-data" PKG_DATA_ID_PIRATE="${GAME_ID_PIRATE}-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-breach-and-clear-series.sh0000755000000000000000000000675214471751340016532 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 HS-157 set -o errexit ### # Breach & Clear series: # - Breach & Clear # - Breach & Clear: Deadline # send your bug reports to bugs@dotslashplay.it ### script_version=20250125.3 PLAYIT_COMPATIILITY_LEVEL='2.32' GAME_ID='breach-and-clear' GAME_NAME='Breach & Clear' GAME_ID_DEADLINE="${GAME_ID}-deadline" GAME_NAME_DEADLINE="$GAME_NAME - DEADline" # Archives ## Breach & Clear (base game) ARCHIVE_BASE_HUMBLE_0_NAME='BncNix_12_4_15_NODRM.rar' ARCHIVE_BASE_HUMBLE_0_MD5='a2eff200bdce1b96852d2b709614d17a' ARCHIVE_BASE_HUMBLE_0_SIZE='2500000' ARCHIVE_BASE_HUMBLE_0_VERSION='2.1.1-humble1' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/breach-clear' ## This archive is no longer available for sale from gog.com, starting on 2024-09-13 ## cf. https://www.gog.com/forum/general/delisting_breach_clear_will_be_removed_from_the_store_on_september_13th/post1 ARCHIVE_BASE_GOG_0_NAME='gog_breach_clear_2.0.0.3.sh' ARCHIVE_BASE_GOG_0_MD5='e7f6b59d8ce97c9ab850b47608941b7d' ARCHIVE_BASE_GOG_0_TYPE='mojosetup' ARCHIVE_BASE_GOG_0_SIZE='2500000' ARCHIVE_BASE_GOG_0_VERSION='2.1.1-gog2.0.0.3' ## Breach & Clear: DEADline ARCHIVE_BASE_DEADLINE_0_NAME='gog_breach_and_clear_deadline_2.3.0.8.sh' ARCHIVE_BASE_DEADLINE_0_MD5='fcf5e77ea47ec4446bd67168372f6e34' ARCHIVE_BASE_DEADLINE_0_TYPE='mojosetup' ARCHIVE_BASE_DEADLINE_0_SIZE='3300000' ARCHIVE_BASE_DEADLINE_0_VERSION='1.05-gog2.3.0.8' ARCHIVE_BASE_DEADLINE_0_URL='https://www.gog.com/game/breach_clear_deadline' UNITY3D_NAME_HUMBLE='Bnc' UNITY3D_NAME_GOG='Bnc_Nix' UNITY3D_NAME_DEADLINE='DEADline' CONTENT_PATH_DEFAULT_HUMBLE='BncHumboNix' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_DEADLINE='data/noarch/game' ## TODO: An explicit list of plugins to include should be set, ## using UNITY3D_PLUGINS. CONTENT_GAME0_BIN_FILES_HUMBLE=" ${UNITY3D_NAME_HUMBLE}_Data/Plugins" CONTENT_GAME0_BIN_FILES_GOG=" ${UNITY3D_NAME_GOG}_Data/Plugins" CONTENT_GAME0_BIN_FILES_DEADLINE=" ${UNITY3D_NAME_DEADLINE}_Data/Plugins" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' ld-linux.so.2 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_ID_DEADLINE="${GAME_ID_DEADLINE}-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-caravan.sh0000755000000000000000000000562714471751340013605 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 BetaRays set -o errexit ### # Caravan # send your bug reports to bugs@dotslashplay.it ### script_version=20240622.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='caravan' GAME_NAME='Caravan' ARCHIVE_BASE_HUMBLE_0_NAME='caravan_linux_v1.1.17513.zip' ARCHIVE_BASE_HUMBLE_0_MD5='286f762190d74e27c353b5616b9e6dee' ARCHIVE_BASE_HUMBLE_0_SIZE='600000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.1.17513-humble1' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/caravan' ARCHIVE_BASE_GOG_0_NAME='caravan_en_v1_1_19786_19905.sh' ARCHIVE_BASE_GOG_0_MD5='e6806e10c86267b38a2a2a85bb278dae' ARCHIVE_BASE_GOG_0_SIZE='430000' ARCHIVE_BASE_GOG_0_VERSION='1.1.19786-gog19905' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/caravan' UNITY3D_NAME='Caravan' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_HUMBLE='Caravan' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' 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_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" 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" # 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" # Extract game data case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) ## Errors during the game data extraction are expected, they should be ignored. archive_extraction_default 2>/dev/null || true ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Caravan_1.1.17513_Full_DEB_Multi_Daedalic_ESD.tar.gz" archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" ;; (*) archive_extraction_default ;; esac # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-cat-cafe-manager.sh0000755000000000000000000000526514471751340015243 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Cat Cafe Manager # send your bug reports to bugs@dotslashplay.it ### script_version=20250406.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='cat-cafe-manager' GAME_NAME='Cat Cafe Manager' ARCHIVE_BASE_0_NAME='setup_cat_cafe_manager_1.2.490-windows_(64bit)_(64857).exe' ARCHIVE_BASE_0_MD5='02c9bb4a7d0bb9e0827a72693655fa8b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.2.490-gog64857' ARCHIVE_BASE_0_SIZE='609119' ARCHIVE_BASE_0_URL='https://www.gog.com/game/cat_cafe_manager' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' catcafe.exe' CONTENT_GAME_DATA_FILES=' catcafe.pck' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Cat Cafe Manager' APP_MAIN_EXE='catcafe.exe' 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' # Convert the shipped icon to standard sizes REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} convert" # 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 ## Convert the shipped icon to standard sizes icons_temporary_directory="${PLAYIT_WORKDIR}/icons" mkdir --parents "$icons_temporary_directory" icon_extract_png_from_file 'APP_MAIN_ICON' "$icons_temporary_directory" icon_source="${PLAYIT_WORKDIR}/icons/catcafe.exe_14_GODOT_ICON-0.png" icon_destination_128="${PLAYIT_WORKDIR}/icons/icon_128.png" icon_destination_256="${PLAYIT_WORKDIR}/icons/icon_256.png" convert "$icon_source" -resize 128x128 "$icon_destination_128" convert "$icon_source" -resize 256x256 "$icon_destination_256" rm "${PLAYIT_WORKDIR}/icons"/catcafe.exe_14_GODOT_ICON-?.png icons_include_from_directory 'PKG_DATA' 'APP_MAIN' "$icons_temporary_directory" rmdir "$icons_temporary_directory" 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-chaos-reborn.sh0000755000000000000000000000664014471751340014550 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Chaos Reborn # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='chaos-reborn' GAME_NAME='Chaos Reborn' ARCHIVE_BASE_4_NAME='chaos_reborn_en_1_13_3_23004.sh' ARCHIVE_BASE_4_MD5='283d60b5adf91640679d2fe1c7962300' ARCHIVE_BASE_4_SIZE='1700000' ARCHIVE_BASE_4_VERSION='1.13.3-gog23004' ARCHIVE_BASE_4_URL='https://www.gog.com/game/chaos_reborn' ARCHIVE_BASE_3_NAME='chaos_reborn_en_1_13_2_17223.sh' ARCHIVE_BASE_3_MD5='edb60d98710c87c0adea06f55be99567' ARCHIVE_BASE_3_SIZE='1700000' ARCHIVE_BASE_3_VERSION='1.13.2-gog17223' ARCHIVE_BASE_2_NAME='chaos_reborn_en_1_131_14290.sh' ARCHIVE_BASE_2_MD5='fcfea11ad6a6cbdda2290c4f29bbeb2b' ARCHIVE_BASE_2_SIZE='1700000' ARCHIVE_BASE_2_VERSION='1.13.1-gog14290' ARCHIVE_BASE_1_NAME='gog_chaos_reborn_2.14.0.16.sh' ARCHIVE_BASE_1_MD5='97dbfc0a679a7fd104c744b6aa46db36' ARCHIVE_BASE_1_SIZE='1700000' ARCHIVE_BASE_1_VERSION='1.13-gog2.14.0.16' ARCHIVE_BASE_0_NAME='gog_chaos_reborn_2.13.0.15.sh' ARCHIVE_BASE_0_MD5='a2abf12572eea8b43059a9bb8d5d3171' ARCHIVE_BASE_0_SIZE='1700000' ARCHIVE_BASE_0_VERSION='1.12.2-gog2.13.0.15' UNITY3D_NAME='ChaosRebornLinux' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' ## Force windowed mode on first launch APP_MAIN_PRERUN=' # Force windowed mode on first launch config_file="$HOME/.config/unity3d/Snapshot Games Inc_/Chaos Reborn/prefs" if [ ! -e "$config_file" ]; then mkdir --parents "$(dirname "$config_file")" cat > "$config_file" <<- EOF 0 EOF fi ' 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-charterstone.sh0000755000000000000000000000402514471751340014662 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Charterstone # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='charterstone' GAME_NAME='Charterstone' ARCHIVE_BASE_0_NAME='charterstone_digital_edition_1_2_9_60090.sh' ARCHIVE_BASE_0_MD5='2ae5e0a2a81433b3ae54e8ff80af9274' ARCHIVE_BASE_0_SIZE='616080' ARCHIVE_BASE_0_VERSION='1.2.9-gog60090' ARCHIVE_BASE_0_URL='https://www.gog.com/game/charterstone_digital_edition' UNITY3D_NAME='Charterstone' ## TODO: Check if the Firebase tracking libraries can be dropped. UNITY3D_PLUGINS=' FirebaseCppAnalytics.so FirebaseCppApp-10_0_1.so FirebaseCppMessaging.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 libm.so.6 libpthread.so.0 librt.so.1 libsecret-1.so.0 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 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-chroma-squad.sh0000755000000000000000000000456014471751340014551 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Chroma Squad # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='chroma-squad' GAME_NAME='Chroma Squad' ARCHIVE_BASE_0_NAME='chroma_squad_en_1_12b_15401.sh' ARCHIVE_BASE_0_MD5='5f76d2b8942261ff837398c3a674db91' ARCHIVE_BASE_0_SIZE='720000' ARCHIVE_BASE_0_VERSION='1.12b-gog15401' ARCHIVE_BASE_0_URL='https://www.gog.com/game/chroma_squad' UNITY3D_NAME='Chroma Squad' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_Data/savedGames" 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 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-civilization-4.sh0000755000000000000000000001322614471751340015031 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Civilization 4 # send your bug reports to bugs@dotslashplay.it ### script_version=20250125.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='civilization-4' GAME_NAME='Civilization Ⅳ' ARCHIVE_BASE_0_NAME='setup_civilization4_complete_2.0.0.4.exe' ARCHIVE_BASE_0_MD5='8ddc5e0129d216cb397e8da5f95a8c92' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_0_PART1_NAME='setup_civilization4_complete_2.0.0.4-1.bin' ARCHIVE_BASE_0_PART1_MD5='dbf971c1acbad3648697c7c343f14aad' ARCHIVE_BASE_0_PART1_EXTRACTOR='unar' ARCHIVE_BASE_0_SIZE='4800000' ARCHIVE_BASE_0_VERSION='1.7.4.0-gog2.0.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sid_meiers_civilization_iv_the_complete_edition' CONTENT_PATH_DEFAULT='game/Civ4' CONTENT_GAME_BIN_WARLORDS_FILES=' Warlords/Assets/Python/System Warlords/CvGameCoreDLL Warlords/*.dll Warlords/*.exe' CONTENT_GAME_BIN_SWORD_FILES=' Beyond the Sword/CvGameCoreDLL Beyond the Sword/*.dll Beyond the Sword/*.exe' CONTENT_GAME_BIN_FILES=' Assets/Python/System CvGameCoreDLL Miles *.dll *.exe' CONTENT_GAME_DATA_WARLORDS_FILES=' Warlords/Assets Warlords/Mods Warlords/PublicMaps Warlords/Resource Warlords/Shaders' CONTENT_GAME_DATA_SWORD_FILES=' Beyond the Sword/Assets Beyond the Sword/Mods Beyond the Sword/PublicMaps Beyond the Sword/Resource Beyond the Sword/Shaders' CONTENT_GAME_DATA_FILES=' Assets Mods PublicMaps Resource Shaders' CONTENT_DOC_DATA_WARLORDS_PATH='game' CONTENT_DOC_DATA_WARLORDS_FILES=" Sid Meier's Civilization 4 - Warlords.pdf Sid Meier's Civilization 4 - Warlords (FR).pdf" CONTENT_DOC_DATA_SWORD_PATH='game' CONTENT_DOC_DATA_SWORD_FILES=" Sid Meier's Civilization 4 - Beyond the Sword.pdf Sid Meier's Civilization 4 - Beyond the Sword (FR).pdf" CONTENT_DOC_DATA_PATH='game' CONTENT_DOC_DATA_FILES=" Sid Meier's Civilization 4.pdf Sid Meier's Civilization 4 (FR).pdf" CONTENT_DOC0_DATA_PATH='game/Readme' CONTENT_DOC0_DATA_FILES=' */Readme.htm' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/My Games/civilization-4 users/${USER}/Documents/My Games/civilization-4 users/${USER}/AppData/Local/My Games/Warlords users/${USER}/Documents/My Games/Warlords users/${USER}/AppData/Local/My Games/Beyond the Sword users/${USER}/Documents/My Games/Beyond the Sword' APP_MAIN_EXE='Civilization4.exe' APP_MAIN_ICON='Assets/res/Civ4Game.ico' APP_WARLORDS_ID="${GAME_ID}-warlords" APP_WARLORDS_NAME="$GAME_NAME - Warlords" APP_WARLORDS_EXE='Warlords/Civ4Warlords.exe' APP_WARLORDS_ICONS_LIST='APP_WARLORDS_ICON16 APP_WARLORDS_ICON32 APP_WARLORDS_ICON64' APP_WARLORDS_ICON16='Warlords/Assets/res/CIV_Warlords_16.ico' APP_WARLORDS_ICON32='Warlords/Assets/res/CIV_Warlords_32.ico' APP_WARLORDS_ICON64='Warlords/Assets/res/CIV_Warlords_64.ico' APP_SWORD_ID="${GAME_ID}-beyond-the-sword" APP_SWORD_NAME="$GAME_NAME - Beyond the Sword" APP_SWORD_EXE='Beyond the Sword/Civ4BeyondSword.exe' APP_SWORD_ICON='Beyond the Sword/Assets/res/Civ4BtS.ico' PACKAGES_LIST=' PKG_BIN_WARLORDS PKG_BIN_SWORD PKG_BIN PKG_DATA_WARLORDS PKG_DATA_SWORD PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_WARLORDS_ID="${GAME_ID}-warlords" PKG_BIN_WARLORDS_DESCRIPTION='Warlords' PKG_BIN_WARLORDS_ARCH='32' PKG_BIN_WARLORDS_DEPENDENCIES_SIBLINGS=' PKG_DATA_WARLORDS' PKG_BIN_SWORD_ID="${GAME_ID}-beyond-the-sword" PKG_BIN_SWORD_DESCRIPTION='Beyond the Sword' PKG_BIN_SWORD_ARCH='32' PKG_BIN_SWORD_DEPENDENCIES_SIBLINGS=' PKG_DATA_SWORD' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_WARLORDS_ID="${GAME_ID}-warlords-data" PKG_DATA_WARLORDS_DESCRIPTION='Warlords - data' PKG_DATA_WARLORDS_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_SWORD_ID="${GAME_ID}-beyond-the-sword-data" PKG_DATA_SWORD_DESCRIPTION='Beyond the Sword - data' PKG_DATA_SWORD_DEPENDENCIES_SIBLINGS=' PKG_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' 'APP_MAIN' content_inclusion_icons 'PKG_DATA_WARLORDS' 'APP_WARLORDS' content_inclusion_icons 'PKG_DATA_SWORD' 'APP_SWORD' content_inclusion_default ## Ensure fonts expected by the game are available fonts_path_system="$(package_path 'PKG_DATA')$(path_fonts_ttf)" fonts_path_game="$(package_path 'PKG_DATA')$(path_game_data)" mkdir --parents "$fonts_path_system" for font_path in \ 'Assets/res/Fonts/sylfaen.ttf' \ 'Resource/Civ4/sylfaenbi.ttf' \ 'Resource/Civ4/sylfaenb.ttf' \ 'Resource/Civ4/sylfaeni.ttf' \ 'Resource/Civ4/sylfaen.ttf' \ 'Resource/Fonts/arial.ttf' \ 'Resource/Fonts/sylfaen.ttf' do font_file=$(basename "$font_path") mv --force "${fonts_path_game}/${font_path}" "${fonts_path_system}/${font_file}" ln --symbolic "$(path_fonts_ttf)/${font_file}" "${fonts_path_game}/${font_path}" done # Write launchers launchers_generation 'PKG_BIN' 'APP_MAIN' launchers_generation 'PKG_BIN_WARLORDS' 'APP_WARLORDS' launchers_generation 'PKG_BIN_SWORD' 'APP_SWORD' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-coffee-noir-business-detective-game.sh0000755000000000000000000000461414471751340021073 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Coffee Noir - Business Detective Game # send your bug reports to bugs@dotslashplay.it ### script_version=20250126.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='coffee-noir-business-detective-game' GAME_NAME='Coffee Noir - Business Detective Game' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='coffee_noir_business_detective_game_1_0_1_50385.sh' ARCHIVE_BASE_0_MD5='dc158baf4bf3d80524603582ee3be780' ARCHIVE_BASE_0_SIZE='1459648' ARCHIVE_BASE_0_VERSION='1.0.1-gog50385' ARCHIVE_BASE_0_URL='https://www.gog.com/game/coffee_noir_business_detective_game' ARCHIVE_BASE_DEMO_0_NAME='coffee_noir_business_detective_game_demo_2_0_0_50174.sh' ARCHIVE_BASE_DEMO_0_MD5='7e3ffe0fbc1b0992a5e241432c85da29' ARCHIVE_BASE_DEMO_0_SIZE='591420' ARCHIVE_BASE_DEMO_0_VERSION='2.0.0-gog50174' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/coffee_noir_business_detective_game_demo' UNITY3D_NAME='CoffeeNoir' UNITY3D_NAME_DEMO='CoffeeNoirDemo' UNITY3D_PLUGINS=' libSQLite-Interop.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' 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 launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-commandos-3.sh0000755000000000000000000000413114471751340014277 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Commandos 3: Destination Berlin # send your bug reports to bugs@dotslashplay.it ### script_version=20250126.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='commandos-3' GAME_NAME='Commandos 3: Destination Berlin' ARCHIVE_BASE_0_NAME='setup_commandos_3_-_destination_berlin_1.42_hotfix2_(25143).exe' ARCHIVE_BASE_0_MD5='2fa1ad6e7c7e918bdaa1adee5bb3a0ec' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2100000' ARCHIVE_BASE_0_VERSION='1.42-gog25143' ARCHIVE_BASE_0_URL='https://www.gog.com/game/commandos_2_3' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' binkw32.dll d3d8.dll ogg.dll vorbis.dll commandos3.exe' CONTENT_GAME_DATA_FILES=' data output directplay.cmd *.pck' CONTENT_DOC_DATA_FILES=' readme.rtf eula.txt support.txt *.pdf' USER_PERSISTENT_DIRECTORIES=' output' WINE_VIRTUAL_DESKTOP='800x600' APP_MAIN_EXE='commandos3.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-cultist-simulator-expansions.sh0000755000000000000000000003267314471751340020064 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Cultist Simulator expansions: # - Perpetual Edition # - The Dancer # - The Ghoul # - The Priest # - The Exile # send your bug reports to bugs@dotslashplay.it ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' EXPANSION_ID_PERPETUAL='perpetual-edition' EXPANSION_NAME_PERPETUAL='Perpetual Edition' EXPANSION_ID_DANCER='the-dancer' EXPANSION_NAME_DANCER='The Dancer' EXPANSION_ID_GHOUL='the-ghoul' EXPANSION_NAME_GHOUL='The Ghoul' EXPANSION_ID_PRIEST='the-priest' EXPANSION_NAME_PRIEST='The Priest' EXPANSION_ID_EXILE='the-exile' EXPANSION_NAME_EXILE='The Exile' # Archives ## Perpetual Edition ARCHIVE_BASE_PERPETUAL_9_NAME='cultist_simulator_perpetual_edition_content_2024_7_b_3_77913.sh' ARCHIVE_BASE_PERPETUAL_9_MD5='653f6b60b6587db9b24e850daf25e045' ARCHIVE_BASE_PERPETUAL_9_SIZE='897' ARCHIVE_BASE_PERPETUAL_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_PERPETUAL_8_NAME='cultist_simulator_perpetual_edition_content_2024_5_a_3_74582.sh' ARCHIVE_BASE_PERPETUAL_8_MD5='0150fa2617c138697f8b05b9c659e76e' ARCHIVE_BASE_PERPETUAL_8_SIZE='897' ARCHIVE_BASE_PERPETUAL_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_PERPETUAL_7_NAME='cultist_simulator_perpetual_edition_content_2023_12_s_5_71509.sh' ARCHIVE_BASE_PERPETUAL_7_MD5='ba64a839ed79df208e346e45705028c7' ARCHIVE_BASE_PERPETUAL_7_SIZE='897' ARCHIVE_BASE_PERPETUAL_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_PERPETUAL_6_NAME='cultist_simulator_perpetual_edition_content_2023_12_s_4_71175.sh' ARCHIVE_BASE_PERPETUAL_6_MD5='b06fb18d1183088111c459e4369823b0' ARCHIVE_BASE_PERPETUAL_6_SIZE='897' ARCHIVE_BASE_PERPETUAL_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_PERPETUAL_5_NAME='cultist_simulator_perpetual_edition_content_2023_10_r_10_68985.sh' ARCHIVE_BASE_PERPETUAL_5_MD5='d4b6b6332df5a68e0e819ecfde900ca8' ARCHIVE_BASE_PERPETUAL_5_SIZE='1212' ARCHIVE_BASE_PERPETUAL_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_PERPETUAL_4_NAME='cultist_simulator_perpetual_edition_content_2023_5_p_12_67501.sh' ARCHIVE_BASE_PERPETUAL_4_MD5='2a725b7b09eb2990bf5452b904575e0f' ARCHIVE_BASE_PERPETUAL_4_SIZE='1212' ARCHIVE_BASE_PERPETUAL_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_PERPETUAL_3_NAME='cultist_simulator_perpetual_edition_content_2023_4_o_4_64959.sh' ARCHIVE_BASE_PERPETUAL_3_MD5='4e753614162be0092276c2f79c6fa536' ARCHIVE_BASE_PERPETUAL_3_SIZE='1300' ARCHIVE_BASE_PERPETUAL_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_PERPETUAL_2_NAME='cultist_simulator_perpetual_edition_content_2022_12_n_2_61763.sh' ARCHIVE_BASE_PERPETUAL_2_MD5='d075fca6120b358a13349e0df210c80c' ARCHIVE_BASE_PERPETUAL_2_SIZE='1300' ARCHIVE_BASE_PERPETUAL_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_PERPETUAL_1_NAME='cultist_simulator_perpetual_edition_content_2022_3_p_1_54545.sh' ARCHIVE_BASE_PERPETUAL_1_MD5='b6523031eb075dab51ab73aaeefd8b8a' ARCHIVE_BASE_PERPETUAL_1_SIZE='1300' ARCHIVE_BASE_PERPETUAL_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_PERPETUAL_0_NAME='cultist_simulator_perpetual_edition_content_2022_3_n_1_54418.sh' ARCHIVE_BASE_PERPETUAL_0_MD5='76dd2895edb86c9e5086ff073b86bd41' ARCHIVE_BASE_PERPETUAL_0_SIZE='1300' ARCHIVE_BASE_PERPETUAL_0_VERSION='2022.03.n.1-gog54418' ## The Dancer ARCHIVE_BASE_DANCER_9_NAME='cultist_simulator_the_dancer_2024_7_b_3_77913.sh' ARCHIVE_BASE_DANCER_9_MD5='f9304991269fb79b8fa80a0d8ca55baa' ARCHIVE_BASE_DANCER_9_SIZE='1178' ARCHIVE_BASE_DANCER_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_DANCER_9_URL='https://www.gog.com/game/cultist_simulator_the_dancer' ARCHIVE_BASE_DANCER_8_NAME='cultist_simulator_the_dancer_2024_5_a_3_74582.sh' ARCHIVE_BASE_DANCER_8_MD5='033bb0945379a41d711ab7d8b23c9230' ARCHIVE_BASE_DANCER_8_SIZE='1178' ARCHIVE_BASE_DANCER_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_DANCER_7_NAME='cultist_simulator_the_dancer_2023_12_s_5_71509.sh' ARCHIVE_BASE_DANCER_7_MD5='7411914a034e8f059f2f78b1476101d2' ARCHIVE_BASE_DANCER_7_SIZE='1178' ARCHIVE_BASE_DANCER_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_DANCER_6_NAME='cultist_simulator_the_dancer_2023_12_s_4_71175.sh' ARCHIVE_BASE_DANCER_6_MD5='5a33ee82ccc822bc5a249288093e315a' ARCHIVE_BASE_DANCER_6_SIZE='1178' ARCHIVE_BASE_DANCER_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_DANCER_5_NAME='cultist_simulator_the_dancer_2023_10_r_10_68985.sh' ARCHIVE_BASE_DANCER_5_MD5='3202862234290566863abf42afe2e0eb' ARCHIVE_BASE_DANCER_5_SIZE='1580' ARCHIVE_BASE_DANCER_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_DANCER_4_NAME='cultist_simulator_the_dancer_2023_5_p_12_67501.sh' ARCHIVE_BASE_DANCER_4_MD5='1735b3ba59f8d72f04fac14fc0c7c58b' ARCHIVE_BASE_DANCER_4_SIZE='1580' ARCHIVE_BASE_DANCER_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_DANCER_3_NAME='cultist_simulator_the_dancer_2023_4_o_4_64959.sh' ARCHIVE_BASE_DANCER_3_MD5='3174e4feddd8c11acc39aa0cac8696de' ARCHIVE_BASE_DANCER_3_SIZE='1600' ARCHIVE_BASE_DANCER_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_DANCER_2_NAME='cultist_simulator_the_dancer_2022_12_n_2_61763.sh' ARCHIVE_BASE_DANCER_2_MD5='36fbfe3d25d28f0a465a72dc394eb6b7' ARCHIVE_BASE_DANCER_2_SIZE='1600' ARCHIVE_BASE_DANCER_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_DANCER_1_NAME='cultist_simulator_the_dancer_2022_3_p_1_54545.sh' ARCHIVE_BASE_DANCER_1_MD5='e8b5d104fd30e6e7566bc24fbca5d718' ARCHIVE_BASE_DANCER_1_SIZE='1600' ARCHIVE_BASE_DANCER_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_DANCER_0_NAME='cultist_simulator_the_dancer_2022_3_n_1_54418.sh' ARCHIVE_BASE_DANCER_0_MD5='8dbbb7e6121b9d62661837191f053405' ARCHIVE_BASE_DANCER_0_SIZE='1600' ARCHIVE_BASE_DANCER_0_VERSION='2022.03.n.1-gog54418' ## The Ghoul ARCHIVE_BASE_GHOUL_9_NAME='cultist_simulator_the_ghoul_2024_7_b_3_77913.sh' ARCHIVE_BASE_GHOUL_9_MD5='51397b535a1a70d49eb63019d7a385ff' ARCHIVE_BASE_GHOUL_9_SIZE='1163' ARCHIVE_BASE_GHOUL_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_GHOUL_9_URL='https://www.gog.com/game/cultist_simulator_the_ghoul' ARCHIVE_BASE_GHOUL_8_NAME='cultist_simulator_the_ghoul_2024_5_a_3_74582.sh' ARCHIVE_BASE_GHOUL_8_MD5='c142d2c03bba7cfb84dd54742a1c02ee' ARCHIVE_BASE_GHOUL_8_SIZE='1163' ARCHIVE_BASE_GHOUL_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_GHOUL_7_NAME='cultist_simulator_the_ghoul_2023_12_s_5_71509.sh' ARCHIVE_BASE_GHOUL_7_MD5='8185ddbb6681d90a233078d959188c2e' ARCHIVE_BASE_GHOUL_7_SIZE='1163' ARCHIVE_BASE_GHOUL_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_GHOUL_6_NAME='cultist_simulator_the_ghoul_2023_12_s_4_71175.sh' ARCHIVE_BASE_GHOUL_6_MD5='ff6fdc10d98aea9e260522521112d176' ARCHIVE_BASE_GHOUL_6_SIZE='1163' ARCHIVE_BASE_GHOUL_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_GHOUL_5_NAME='cultist_simulator_the_ghoul_2023_10_r_10_68985.sh' ARCHIVE_BASE_GHOUL_5_MD5='7ee4993ad1e507cd48c705a6cbc0fe90' ARCHIVE_BASE_GHOUL_5_SIZE='1592' ARCHIVE_BASE_GHOUL_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_GHOUL_4_NAME='cultist_simulator_the_ghoul_2023_5_p_12_67501.sh' ARCHIVE_BASE_GHOUL_4_MD5='06c81c342ee8bcc81e298d5dd519d2e7' ARCHIVE_BASE_GHOUL_4_SIZE='1592' ARCHIVE_BASE_GHOUL_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_GHOUL_3_NAME='cultist_simulator_the_ghoul_2023_4_o_4_64959.sh' ARCHIVE_BASE_GHOUL_3_MD5='246f3518914281bca5d0647170e1c12f' ARCHIVE_BASE_GHOUL_3_SIZE='1600' ARCHIVE_BASE_GHOUL_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_GHOUL_2_NAME='cultist_simulator_the_ghoul_2022_12_n_2_61763.sh' ARCHIVE_BASE_GHOUL_2_MD5='53674742e8cb5a7570a6f5318a998261' ARCHIVE_BASE_GHOUL_2_SIZE='1600' ARCHIVE_BASE_GHOUL_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_GHOUL_1_NAME='cultist_simulator_the_ghoul_2022_3_p_1_54545.sh' ARCHIVE_BASE_GHOUL_1_MD5='c04cd53c229a5cb2d243a6c00e4e6847' ARCHIVE_BASE_GHOUL_1_SIZE='1600' ARCHIVE_BASE_GHOUL_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_GHOUL_0_NAME='cultist_simulator_the_ghoul_2022_3_n_1_54418.sh' ARCHIVE_BASE_GHOUL_0_MD5='d1b72e87563e87df340570dd91ec44a2' ARCHIVE_BASE_GHOUL_0_SIZE='1600' ARCHIVE_BASE_GHOUL_0_VERSION='2022.03.n.1-gog54418' ## The Priest ARCHIVE_BASE_PRIEST_9_NAME='cultist_simulator_the_priest_2024_7_b_3_77913.sh' ARCHIVE_BASE_PRIEST_9_MD5='4e5b1868e6f14fbb31ccfda6c3e14667' ARCHIVE_BASE_PRIEST_9_SIZE='1238' ARCHIVE_BASE_PRIEST_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_PRIEST_9_URL='https://www.gog.com/game/cultist_simulator_the_priest' ARCHIVE_BASE_PRIEST_8_NAME='cultist_simulator_the_priest_2024_5_a_3_74582.sh' ARCHIVE_BASE_PRIEST_8_MD5='efa3f7d478e0083e51f83db79c787efa' ARCHIVE_BASE_PRIEST_8_SIZE='1238' ARCHIVE_BASE_PRIEST_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_PRIEST_7_NAME='cultist_simulator_the_priest_2023_12_s_5_71509.sh' ARCHIVE_BASE_PRIEST_7_MD5='0b5d5436b8853cfc3a100404070779c8' ARCHIVE_BASE_PRIEST_7_SIZE='1238' ARCHIVE_BASE_PRIEST_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_PRIEST_6_NAME='cultist_simulator_the_priest_2023_12_s_4_71175.sh' ARCHIVE_BASE_PRIEST_6_MD5='84f26baca8a0219e3b11f6f91fca3bb9' ARCHIVE_BASE_PRIEST_6_SIZE='1238' ARCHIVE_BASE_PRIEST_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_PRIEST_5_NAME='cultist_simulator_the_priest_2023_10_r_10_68985.sh' ARCHIVE_BASE_PRIEST_5_MD5='98051cfd374e9165e59377fbac3a3c35' ARCHIVE_BASE_PRIEST_5_SIZE='1668' ARCHIVE_BASE_PRIEST_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_PRIEST_4_NAME='cultist_simulator_the_priest_2023_5_p_12_67501.sh' ARCHIVE_BASE_PRIEST_4_MD5='c6e17f6d95cf866bcd91fff881216ca8' ARCHIVE_BASE_PRIEST_4_SIZE='1668' ARCHIVE_BASE_PRIEST_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_PRIEST_3_NAME='cultist_simulator_the_priest_2023_4_o_4_64959.sh' ARCHIVE_BASE_PRIEST_3_MD5='fd1b784c35b7d1acadeebb5f6da8ea68' ARCHIVE_BASE_PRIEST_3_SIZE='1700' ARCHIVE_BASE_PRIEST_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_PRIEST_2_NAME='cultist_simulator_the_priest_2022_12_n_2_61763.sh' ARCHIVE_BASE_PRIEST_2_MD5='1f12513a9b61863ced08ebe7ff3f2001' ARCHIVE_BASE_PRIEST_2_SIZE='1700' ARCHIVE_BASE_PRIEST_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_PRIEST_1_NAME='cultist_simulator_the_priest_2022_3_p_1_54545.sh' ARCHIVE_BASE_PRIEST_1_MD5='e56271d1fd1e2eca197d4bef956965c9' ARCHIVE_BASE_PRIEST_1_SIZE='1700' ARCHIVE_BASE_PRIEST_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_PRIEST_0_NAME='cultist_simulator_the_priest_2022_3_n_1_54418.sh' ARCHIVE_BASE_PRIEST_0_MD5='26516af73ab47d8aa161a6e2ad99eb5f' ARCHIVE_BASE_PRIEST_0_SIZE='1700' ARCHIVE_BASE_PRIEST_0_VERSION='2022.03.n.1-gog54418' ## The Exile ARCHIVE_BASE_EXILE_9_NAME='cultist_simulator_the_exile_2024_7_b_3_77913.sh' ARCHIVE_BASE_EXILE_9_MD5='dda93215acba7d7aeeedb9f356830ffb' ARCHIVE_BASE_EXILE_9_SIZE='5482' ARCHIVE_BASE_EXILE_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_EXILE_9_URL='https://www.gog.com/game/cultist_simulator_the_exile' ARCHIVE_BASE_EXILE_8_NAME='cultist_simulator_the_exile_2024_5_a_3_74582.sh' ARCHIVE_BASE_EXILE_8_MD5='0617fc6bb9dc85982e33ef203bce039a' ARCHIVE_BASE_EXILE_8_SIZE='5482' ARCHIVE_BASE_EXILE_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_EXILE_7_NAME='cultist_simulator_the_exile_2023_12_s_5_71509.sh' ARCHIVE_BASE_EXILE_7_MD5='b8ec4b2021be5b82b4d1bea8f85e2275' ARCHIVE_BASE_EXILE_7_SIZE='5482' ARCHIVE_BASE_EXILE_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_EXILE_6_NAME='cultist_simulator_the_exile_2023_12_s_4_71175.sh' ARCHIVE_BASE_EXILE_6_MD5='4848d25ba494b3ce05199c14b3fb7cdb' ARCHIVE_BASE_EXILE_6_SIZE='5482' ARCHIVE_BASE_EXILE_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_EXILE_5_NAME='cultist_simulator_the_exile_2023_10_r_10_68985.sh' ARCHIVE_BASE_EXILE_5_MD5='127f09acc54cce367ce7e167468ed229' ARCHIVE_BASE_EXILE_5_SIZE='6088' ARCHIVE_BASE_EXILE_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_EXILE_4_NAME='cultist_simulator_the_exile_2023_5_p_12_67501.sh' ARCHIVE_BASE_EXILE_4_MD5='0ed4869ccb55e3e7b5afa9ade6a654a9' ARCHIVE_BASE_EXILE_4_SIZE='6088' ARCHIVE_BASE_EXILE_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_EXILE_3_NAME='cultist_simulator_the_exile_2023_4_o_4_64959.sh' ARCHIVE_BASE_EXILE_3_MD5='c25a0b322398181606826e8e91946ed8' ARCHIVE_BASE_EXILE_3_SIZE='6100' ARCHIVE_BASE_EXILE_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_EXILE_2_NAME='cultist_simulator_the_exile_2022_12_n_2_61763.sh' ARCHIVE_BASE_EXILE_2_MD5='97f7192f414ebc9c456f14485bcfdc9c' ARCHIVE_BASE_EXILE_2_SIZE='6100' ARCHIVE_BASE_EXILE_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_EXILE_1_NAME='cultist_simulator_the_exile_2022_3_p_1_54545.sh' ARCHIVE_BASE_EXILE_1_MD5='ad7232336e7aefd959a57fd2c3c7243b' ARCHIVE_BASE_EXILE_1_SIZE='6100' ARCHIVE_BASE_EXILE_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_EXILE_0_NAME='cultist_simulator_the_exile_2022_3_n_1_54418.sh' ARCHIVE_BASE_EXILE_0_MD5='3bf084c13791a61820aaf49650dd2a32' ARCHIVE_BASE_EXILE_0_SIZE='6100' ARCHIVE_BASE_EXILE_0_VERSION='2022.03.n.1-gog54418' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' CS_Data' 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 the default initialization 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-cultist-simulator.sh0000755000000000000000000001314714471751340015672 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Cultist Simulator # send your bug reports to bugs@dotslashplay.it ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' ARCHIVE_BASE_19_NAME='cultist_simulator_2024_7_b_3_77913.sh' ARCHIVE_BASE_19_MD5='7dec8c03b9f2ec9136ead667cfd4fb73' ARCHIVE_BASE_19_SIZE='707969' ARCHIVE_BASE_19_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_19_URL='https://www.gog.com/game/cultist_simulator' ARCHIVE_BASE_18_NAME='cultist_simulator_2024_5_a_3_74582.sh' ARCHIVE_BASE_18_MD5='4a6d4118f5545f95119a0f6fedcf1e16' ARCHIVE_BASE_18_SIZE='707816' ARCHIVE_BASE_18_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_17_NAME='cultist_simulator_2023_12_s_5_71509.sh' ARCHIVE_BASE_17_MD5='7e5fd05666c22c1b44401525e2fd24f1' ARCHIVE_BASE_17_SIZE='707815' ARCHIVE_BASE_17_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_16_NAME='cultist_simulator_2023_12_s_4_71175.sh' ARCHIVE_BASE_16_MD5='b34cef2cea237aff1b4ff33fe6acdece' ARCHIVE_BASE_16_SIZE='707816' ARCHIVE_BASE_16_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_15_NAME='cultist_simulator_2023_10_r_10_68985.sh' ARCHIVE_BASE_15_MD5='4c9a58da5701edb9af42b44dedff55d6' ARCHIVE_BASE_15_SIZE='711252' ARCHIVE_BASE_15_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_14_NAME='cultist_simulator_2023_5_p_12_67501.sh' ARCHIVE_BASE_14_MD5='9b849e52ae2c13a0911f2ff78b474264' ARCHIVE_BASE_14_SIZE='709880' ARCHIVE_BASE_14_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_13_NAME='cultist_simulator_2023_4_o_4_64959.sh' ARCHIVE_BASE_13_MD5='4f3a1b1fa787e3b72fd22538051bc064' ARCHIVE_BASE_13_SIZE='710000' ARCHIVE_BASE_13_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_12_NAME='cultist_simulator_2022_12_n_2_61763.sh' ARCHIVE_BASE_12_MD5='852b96c2da6b07d15fa533b3dbb0f316' ARCHIVE_BASE_12_SIZE='780000' ARCHIVE_BASE_12_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_11_NAME='cultist_simulator_2022_3_p_1_54545.sh' ARCHIVE_BASE_11_MD5='6009cfa53c5be9da1e02380d5bcaf712' ARCHIVE_BASE_11_SIZE='750000' ARCHIVE_BASE_11_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_10_NAME='cultist_simulator_2022_3_n_1_54418.sh' ARCHIVE_BASE_10_MD5='0c8e9dedb7b2e5112f7172c9a9095c18' ARCHIVE_BASE_10_SIZE='750000' ARCHIVE_BASE_10_VERSION='2022.03.n.1-gog54418' ARCHIVE_BASE_9_NAME='cultist_simulator_2021_1_b_2_44604.sh' ARCHIVE_BASE_9_MD5='cbe92b1dee271416ffa4ad29ef4b9123' ARCHIVE_BASE_9_SIZE='540000' ARCHIVE_BASE_9_VERSION='2021.01.b.2-gog44604' ARCHIVE_BASE_8_NAME='cultist_simulator_2020_11_a_1_42424.sh' ARCHIVE_BASE_8_MD5='76781c87835954da4a97ec7e0efccfe2' ARCHIVE_BASE_8_SIZE='540000' ARCHIVE_BASE_8_VERSION='2020.11.a.1-gog42424' ARCHIVE_BASE_7_NAME='cultist_simulator_2020_10_e_2_42258.sh' ARCHIVE_BASE_7_MD5='a2a2de8222b9993fc0ae5ef0eaed2b66' ARCHIVE_BASE_7_SIZE='540000' ARCHIVE_BASE_7_VERSION='2020.10.e.2-gog42258' ARCHIVE_BASE_6_NAME='cultist_simulator_2020_10_e_1_42177.sh' ARCHIVE_BASE_6_MD5='1a16264b6ce868c0f741b6614d84d684' ARCHIVE_BASE_6_SIZE='540000' ARCHIVE_BASE_6_VERSION='2020.10.e.1-gog42177' ARCHIVE_BASE_5_NAME='cultist_simulator_2020_10_b_1_42011.sh' ARCHIVE_BASE_5_MD5='672409328bd154b4430826c09b58dd74' ARCHIVE_BASE_5_SIZE='530000' ARCHIVE_BASE_5_VERSION='2020.10.b.1-gog42011' ARCHIVE_BASE_4_NAME='cultist_simulator_2020_9_p_1_bis_41797.sh' ARCHIVE_BASE_4_MD5='9683f0726cba2b116db4134aec863382' ARCHIVE_BASE_4_SIZE='520000' ARCHIVE_BASE_4_VERSION='2020.09.p.1-gog41797' ARCHIVE_BASE_3_NAME='cultist_simulator_2020_9_n_5_41650.sh' ARCHIVE_BASE_3_MD5='251b5e2d58faaea7132b57ad97495057' ARCHIVE_BASE_3_SIZE='510000' ARCHIVE_BASE_3_VERSION='2020.09.n.5-gog41650' ARCHIVE_BASE_2_NAME='cultist_simulator_2020_6_b_1_38747.sh' ARCHIVE_BASE_2_MD5='22980acaa3f825d0712621624277d4ed' ARCHIVE_BASE_2_SIZE='500000' ARCHIVE_BASE_2_VERSION='2020.06.b.1-gog38747' ARCHIVE_BASE_1_NAME='cultist_simulator_2020_6_a_1_38655.sh' ARCHIVE_BASE_1_MD5='099e8a6ed1ae7a9bd654ba63ab89c4a7' ARCHIVE_BASE_1_SIZE='500000' ARCHIVE_BASE_1_VERSION='2020.06.a.1-gog38655' ARCHIVE_BASE_0_NAME='cultist_simulator_2020_3_b_1_37119.sh' ARCHIVE_BASE_0_MD5='4390c258dcce415d61f96eac66a728ca' ARCHIVE_BASE_0_SIZE='470000' ARCHIVE_BASE_0_VERSION='2020.03.b.1-gog37119' UNITY3D_NAME='CS' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' version.txt' CONTENT_DOC_DATA_FILES=' README' ## Write access to some game files is required. USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_Data/StreamingAssets/content/core/cultures" 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 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-darwinia.sh0000755000000000000000000001212414471751340013756 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Darwinia # send your bug reports to bugs@dotslashplay.it ### script_version=20250227.6 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='darwinia' GAME_NAME='Darwinia' ARCHIVE_BASE_0_NAME='darwinia_2_3_3_45_ged1ca4106_gnu_linux_full_72588.sh' ARCHIVE_BASE_0_MD5='20d80521ad8ef6a3c160ee9417daa678' ARCHIVE_BASE_0_SIZE='66408' ARCHIVE_BASE_0_VERSION='2.3.3.45-gog72588' ARCHIVE_BASE_0_URL='https://www.gog.com/game/darwinia' ARCHIVE_BASE_MULTIARCH_0_NAME='gog_darwinia_2.0.0.5.sh' ARCHIVE_BASE_MULTIARCH_0_MD5='ef55064ab82a64324e295f2ea96239d6' ARCHIVE_BASE_MULTIARCH_0_SIZE='45000' ARCHIVE_BASE_MULTIARCH_0_VERSION='1.4.2-gog2.0.0.5' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libsentry.so' ## Include the shipped EGL and GLESv2 libraries, ## to prevent rendering failures and performance problems. CONTENT_LIBS0_BIN_FILES=' libEGL.so.1 libEGL.so libGLESv2.so.2 libGLESv2.so' CONTENT_GAME_BIN_FILES=' crashpad_handler darwinia' CONTENT_GAME_BIN64_FILES=' darwinia.bin.x86_64' CONTENT_GAME_BIN32_FILES=' darwinia.bin.x86' CONTENT_GAME_DATA_FILES=' darwinian.png *.dat' CONTENT_DOC_DATA_FILES=' *.txt' FAKE_HOME_PERSISTENT_DIRECTORIES=' .darwinia' APP_MAIN_EXE_BIN='darwinia' APP_MAIN_EXE_BIN64='darwinia.bin.x86_64' APP_MAIN_EXE_BIN32='darwinia.bin.x86' ## TODO: An optional icons archive should be provided ## for game builds not including one already. APP_MAIN_ICON_MULTIARCH='darwinian.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_MULTIARCH=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN_ARCH='64' 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=' libcrypto.so.3 libc.so.6 libcurl.so.4 libdl.so.2 libdrm.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libssl.so.3 libstdc++.so.6 libvulkan.so.1 libX11.so.6 libxcb.so.1 libXext.so.6 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_MULTIARCH=' libc.so.6 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libogg.so.0 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.0' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES_MULTIARCH" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES_MULTIARCH" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Convert the shipped icon to a standard size ## Warning: REQUIREMENTS_LIST has no support for contextual values as of ./play.it 2.32 REQUIREMENTS_LIST_MULTIARCH="${REQUIREMENTS_LIST:-} convert" # 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 "$@" # Check for the availability of extra tools required for icon conversion REQUIREMENTS_LIST=$(context_value 'REQUIREMENTS_LIST') requirements_check # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Convert the shipped icon to a standard size case "$(current_archive)" in ('ARCHIVE_BASE_MULTIARCH_'*) convert \ -background none -gravity center "$APP_MAIN_ICON_MULTIARCH" \ -resize 128x128 -extent 128x128 "${APP_MAIN_ICON_MULTIARCH}_resized.png" mv "${APP_MAIN_ICON_MULTIARCH}_resized.png" "$APP_MAIN_ICON_MULTIARCH" ;; esac ) # Include game data case "$(current_archive)" in ('ARCHIVE_BASE_MULTIARCH_'*) content_inclusion_icons 'PKG_DATA' ;; esac content_inclusion_default ## libsentry.so is linked against an unversioned libcurl.so. case "$(current_archive)" in ('ARCHIVE_BASE_MULTIARCH_'*) ## The old multiarch builds did not include libsentry.so. ;; (*) ln --symbolic \ "$(path_libraries_system)/libcurl.so.4" \ "$(package_path 'PKG_BIN')$(path_libraries)/libcurl.so" ;; esac # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_MULTIARCH_'*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; (*) # Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" # The game crashes on launch when using the wayland backend of SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # The game crashes on launch when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' launchers_generation ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-dawnmaker.sh0000755000000000000000000000661414471751340014140 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Dawnmaker # send your bug reports to bugs@dotslashplay.it ### script_version=20250126.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='dawnmaker' GAME_NAME='Dawnmaker' ARCHIVE_BASE_3_NAME='Dawnmaker-linux-x64-1.2.0.zip' ARCHIVE_BASE_3_MD5='23b01fda61bae2c0606e89350eb3f5c1' ARCHIVE_BASE_3_SIZE='514262' ARCHIVE_BASE_3_VERSION='1.2.0-itch.2024.10.10' ARCHIVE_BASE_3_URL='https://arpentor.itch.io/dawnmaker' ARCHIVE_BASE_2_NAME='Dawnmaker-linux-x64-1.2.0.zip' ARCHIVE_BASE_2_MD5='9cdf881907da6b58e77a5e41e7e557f1' ARCHIVE_BASE_2_SIZE='514261' ARCHIVE_BASE_2_VERSION='1.2.0-itch.2024.10.07' ARCHIVE_BASE_1_NAME='Dawnmaker-linux-x64-1.1.0.zip' ARCHIVE_BASE_1_MD5='2c0aa2792cd83b61ae1316cb00fc9304' ARCHIVE_BASE_1_SIZE='506494' ARCHIVE_BASE_1_VERSION='1.1.0-itch.2024.08.12' ARCHIVE_BASE_0_NAME='Dawnmaker-linux-x64-1.0.0.zip' ARCHIVE_BASE_0_MD5='8b2e787dafb8e92fb5714e907108f509' ARCHIVE_BASE_0_SIZE='505449' ARCHIVE_BASE_0_VERSION='1.0.0-itch.2024.07.31' CONTENT_PATH_DEFAULT='Dawnmaker-linux-x64' CONTENT_LIBS_BIN_FILES=' libEGL.so libffmpeg.so libGLESv2.so libvk_swiftshader.so' CONTENT_GAME_BIN_FILES=' chrome_crashpad_handler chrome-sandbox Dawnmaker' CONTENT_GAME_DATA_FILES=' locales resources snapshot_blob.bin v8_context_snapshot.bin icudtl.dat vk_swiftshader_icd.json chrome_100_percent.pak chrome_200_percent.pak resources.pak version' CONTENT_DOC_DATA_FILES=' LICENSE LICENSES.chromium.html' APP_MAIN_EXE='Dawnmaker' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libatk-1.0.so.0 libatk-bridge-2.0.so.0 libatspi.so.0 libcairo.so.2 libc.so.6 libcups.so.2 libdbus-1.so.3 libdl.so.2 libdrm.so.2 libexpat.so.1 libgbm.so.1 libgcc_s.so.1 libgio-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-3.so.0 libm.so.6 libnspr4.so libnss3.so libnssutil3.so libpango-1.0.so.0 libpthread.so.0 libsmime3.so libvulkan.so.1 libX11.so.6 libxcb.so.1 libXcomposite.so.1 libXdamage.so.1 libXext.so.6 libXfixes.so.3 libxkbcommon.so.0 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_default ## Link some libraries in the game data path, ## as the engine fails to find them even when they are in LD_LIBRARY_PATH path_libraries=$(path_libraries) path_data="$(package_path 'PKG_BIN')$(path_game_data)" for library in \ 'libGLESv2.so' \ 'libEGL.so' do ln --symbolic "${path_libraries}/${library}" "$path_data" done # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-defenders-quest.sh0000755000000000000000000000453014471751340015260 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Defender's Quest: Valley of the Forgotten # send your bug reports to bugs@dotslashplay.it ### script_version=20250227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='defenders-quest' GAME_NAME='Defenderʼs Quest: Valley of the Forgotten' ARCHIVE_BASE_0_NAME='defender_s_quest_en_dx_2_2_6_21273.sh' ARCHIVE_BASE_0_MD5='32b2dbbdcd8cfd697e15002ad9f62710' ARCHIVE_BASE_0_SIZE='500000' ARCHIVE_BASE_0_VERSION='2.2.6-gog21273' ARCHIVE_BASE_0_URL='https://www.gog.com/game/defenders_quest' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' zlib.dso regexp.dso std.dso lime.ndll' ## TODO: Check if the Steam libraries are required CONTENT_LIBS0_BIN_FILES=' steamwrap.ndll libsteam_api.so' CONTENT_GAME_BIN_FILES=' crashdumper flixel manifest DefendersQuest LevelEditor steam_appid.txt' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='DefendersQuest' 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 libpthread.so.0 librt.so.1 libSDL2-2.0.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 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 ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-democratic-socialism-simulator.sh0000755000000000000000000000361014471751340020270 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Democratic Socialism Simulator # send your bug reports to bugs@dotslashplay.it ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='democratic-socialism-simulator' GAME_NAME='Democratic Socialism Simulator' ARCHIVE_BASE_0_NAME='DemSocSim - Linux.zip' ARCHIVE_BASE_0_MD5='0650cf369b46ac0315b5fc6331b606d1' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='1.0-itch.2020.02.21' ARCHIVE_BASE_0_URL='https://molleindustria.itch.io/democratic-socialism-simulator' UNITY3D_NAME='DemSocSim' CONTENT_PATH_DEFAULT='.' 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 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-door-kickers.sh0000755000000000000000000000524114471751340014556 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 mortalius set -o errexit ### # Door Kickers # send your bug reports to bugs@dotslashplay.it ### script_version=20250126.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='door-kickers' GAME_NAME='Door Kickers' ARCHIVE_BASE_GOG_0_NAME='gog_door_kickers_2.7.0.11.sh' ARCHIVE_BASE_GOG_0_MD5='29efa58e4a61060b0b1211dddd2476a1' ARCHIVE_BASE_GOG_0_SIZE='1400000' ARCHIVE_BASE_GOG_0_VERSION='1.0.9-gog2.7.0.11' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/door_kickers' ARCHIVE_BASE_HUMBLE_0_NAME='DoorKickers1448920440.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='0126db31867ae0e7a7eceee54de4a177' ARCHIVE_BASE_HUMBLE_0_SIZE='1400000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.9-humble151130' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/door-kickers' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='DoorKickers' CONTENT_LIBS_BIN_RELATIVE_PATH='linux_libs' ## Shipped libavdevice.so.55 is not actually used CONTENT_LIBS_BIN_FILES=' libavcodec.so.55 libavformat.so.55 libavutil.so.52 libswscale.so.2' CONTENT_GAME_BIN_FILES=' DoorKickers' CONTENT_GAME_DATA_FILES=' data mods' CONTENT_DOC_DATA_FILES=' *.txt' APP_MAIN_EXE='DoorKickers' APP_MAIN_ICON_GOG='../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 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libtheoradec.so.1 libtheoraenc.so.1 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 case "$(current_archive)" in ('ARCHIVE_BASE_GOG_'*) content_inclusion_icons 'PKG_DATA' ;; esac content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-dorfromantik.sh0000755000000000000000000000440314471751340014660 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Dorfromantik # send your bug reports to bugs@dotslashplay.it ### script_version=20240603.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='dorfromantik' GAME_NAME='Dorfromantik' ARCHIVE_BASE_1_NAME='setup_dorfromantik_1.1.5.1_(64bit)_(63493).exe' ARCHIVE_BASE_1_MD5='bb9e95a19d859e32c1d65164601522ce' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_dorfromantik_1.1.5.1_(64bit)_(63493)-1.bin' ARCHIVE_BASE_1_PART1_MD5='97fe88ae0f76a094a8db809364a204f0' ARCHIVE_BASE_1_SIZE='592862' ARCHIVE_BASE_1_VERSION='1.1.5.1-gog63493' ARCHIVE_BASE_1_URL='https://www.gog.com/en/game/dorfromantik' ARCHIVE_BASE_0_NAME='setup_dorfromantik_1.0.5_(64bit)_(55407).exe' ARCHIVE_BASE_0_MD5='2d22a2a6d6d0e7b0527f48ae055ba138' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_dorfromantik_1.0.5_(64bit)_(55407)-1.bin' ARCHIVE_BASE_0_PART1_MD5='debd7fbad4a3a1aaed0f143ec7c2327c' ARCHIVE_BASE_0_SIZE='630000' ARCHIVE_BASE_0_VERSION='1.0.5-gog55407' UNITY3D_NAME='dorfromantik' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Toukana Interactive/Dorfromantik' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dungeons-2-expansions.sh0000755000000000000000000000411514471751340016327 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Dungeons 2 expansions: # - A Chance of Dragons # - A Song of Sand and Fire # send your bug reports to bugs@dotslashplay.it ### script_version=20240615.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='dungeons-2' GAME_NAME='Dungeons 2' EXPANSION_ID_DRAGONS='a-chance-of-dragons' EXPANSION_NAME_DRAGONS='A Chance of Dragons' EXPANSION_ID_SONG='a-song-of-sand-of-fire' EXPANSION_NAME_SONG='A Song of Sand and Fire' ARCHIVE_BASE_DRAGONS_0_NAME='gog_dungeons_2_a_chance_of_dragons_2.0.0.1.sh' ARCHIVE_BASE_DRAGONS_0_MD5='d6fcaa7bc9051c8c67301a4af58a7632' ARCHIVE_BASE_DRAGONS_0_SIZE='10000' ARCHIVE_BASE_DRAGONS_0_VERSION='1.6.1.29-gog2.0.0.1' ARCHIVE_BASE_DRAGONS_0_URL='https://www.gog.com/game/dungeons_2_a_chance_of_dragons' ARCHIVE_BASE_SONG_0_NAME='gog_dungeons_2_a_song_of_sand_and_fire_2.0.0.1.sh' ARCHIVE_BASE_SONG_0_MD5='70e6beffef5e2197280fe7c9d8052ea5' ARCHIVE_BASE_SONG_0_SIZE='10000' ARCHIVE_BASE_SONG_0_VERSION='1.6.1.29-gog2.0.0.1' ARCHIVE_BASE_SONG_0_URL='https://www.gog.com/game/dungeons_2_a_song_of_sand_and_fire' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Dungeons2_Data' PKG_MAIN_DEPS="$GAME_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" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dungeons-2.sh0000755000000000000000000000445014471751340014144 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Dungeons 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20240615.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='dungeons-2' GAME_NAME='Dungeons 2' ARCHIVE_BASE_0_NAME='gog_dungeons_2_2.0.0.1.sh' ARCHIVE_BASE_0_MD5='990a4ded53d43f28e4e16c0885f515cd' ARCHIVE_BASE_0_SIZE='5100000' ARCHIVE_BASE_0_VERSION='1.6.1.29-gog2.0.0.1' ARCHIVE_BASE_0_URL='https://www.gog.com/game/dungeons_2' UNITY3D_NAME='Dungeons2' UNITY3D_PLUGINS=' libRakNet.so ScreenSelector.so' ## TODO: Check if the Steam are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_BIN_FILES=' mono server' CONTENT_GAME0_DATA_FILES=' AssetBundles mapexports *.block *.txt' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" 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' # 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" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set required execution permission on the shipped Mono binary. chmod 755 'mono/bin/mono' ) # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-empire-earth-1.sh0000755000000000000000000001454514471751340014711 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Empire Earth # send your bug reports to bugs@dotslashplay.it ### script_version=20250130.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='empire-earth-1' GAME_NAME='Empire Earth' GAME_ID_CONQUEST='the-art-of-conquest' GAME_NAME_CONQUEST='The Art of Conquest' ARCHIVE_BASE_1_NAME='setup_empire_earth_gold_2.0.0.2974_gog_v3_(78415).exe' ARCHIVE_BASE_1_MD5='fcad43c5606236f5fe5023a40f6b539e' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='703925' ARCHIVE_BASE_1_VERSION='2.0.0.2974-gog78415' ARCHIVE_BASE_1_URL='https://www.gog.com/game/empire_earth_gold_edition' ARCHIVE_BASE_0_NAME='setup_empire_earth_gold_2.0.0.2974_(25522).exe' ARCHIVE_BASE_0_MD5='e8b22cdc9520aefab49e21349b20b731' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='710000' ARCHIVE_BASE_0_VERSION='2.0.0.2974-gog25522' # Archive content CONTENT_PATH_DEFAULT='.' ## Empire Earth - base game CONTENT_GAME_BIN_RELATIVE_PATH='empire earth' CONTENT_GAME_BIN_FILES=' redist *.cfg *.dll *.exe *.inf' CONTENT_GAME_DATA_RELATIVE_PATH='empire earth' CONTENT_GAME_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' manual.pdf scenario_editor_manual.pdf technology_tree.pdf' ## The Art of Conquest expansion CONTENT_GAME_BIN_CONQUEST_RELATIVE_PATH='empire earth - the art of conquest' CONTENT_GAME_BIN_CONQUEST_FILES=' redist *.cfg *.dll *.exe *.inf' CONTENT_GAME_DATA_CONQUEST_RELATIVE_PATH='empire earth - the art of conquest' CONTENT_GAME_DATA_CONQUEST_FILES=' data' CONTENT_DOC_DATA_CONQUEST_FILES=' technology_tree_aoc.pdf manual_aoc.pdf' # Applications ## Ensure that background music is played during gameplay (WINE 9.0) ## Without these verbs, music is only played in the game menus. ## TODO: Check if all of these verbs are required WINE_WINETRICKS_VERBS='dmusic dmloader dmsynth dmime dmband dmcompos dmstyle' ## Empire Earth - base game APP_MAIN_EXE='empire earth.exe' APP_MAIN_ICON='empire earth/empire earth.exe' USER_PERSISTENT_DIRECTORIES=" ${GAME_ID}/data/Scenarios ${GAME_ID}/data/Saved Games ${GAME_ID}/Users" ## The Art of Conquest expansion APP_CONQUEST_ID="${GAME_ID}-${GAME_ID_CONQUEST}" APP_CONQUEST_NAME="$GAME_NAME - $GAME_NAME_CONQUEST" APP_CONQUEST_EXE='ee-aoc.exe' APP_CONQUEST_ICON='empire earth - the art of conquest/ee-aoc.exe' USER_PERSISTENT_DIRECTORIES="$USER_PERSISTENT_DIRECTORIES ${GAME_ID_CONQUEST}/data/Scenarios ${GAME_ID_CONQUEST}/data/Saved Games ${GAME_ID_CONQUEST}/Users" # Packages PACKAGES_LIST=' PKG_BIN PKG_DATA PKG_BIN_CONQUEST PKG_DATA_CONQUEST' ## Empire Earth - base game PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## The Art of Conquest expansion PKG_BIN_CONQUEST_ID="${GAME_ID}-${GAME_ID_CONQUEST}" PKG_BIN_CONQUEST_ARCH='32' PKG_BIN_CONQUEST_DESCRIPTION="$GAME_NAME_CONQUEST" PKG_BIN_CONQUEST_DEPENDENCIES_SIBLINGS=' PKG_BIN PKG_DATA_CONQUEST' PKG_DATA_CONQUEST_ID="${GAME_ID}-${GAME_ID_CONQUEST}-data" PKG_DATA_CONQUEST_DESCRIPTION="$GAME_NAME_CONQUEST - data" PKG_DATA_CONQUEST_DEPENDENCIES_SIBLINGS=' PKG_DATA' # Allow running the expansion without having to start the base game first installed_from_directory="\\\\${GAME_ID}\\\\${GAME_ID}\\\\" registry_dump_install_path_file='registry-dumps/install-path.reg' registry_dump_install_path_content='Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\SSSI\Empire Earth] "Installed From Directory"="'"$installed_from_directory"'" "Installed From Volume"="C:"' CONTENT_GAME0_BIN_FILES=" $registry_dump_install_path_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_install_path_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # 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)" # Allow running the expansion without having to start the base game first mkdir --parents "$(dirname "$registry_dump_install_path_file")" printf '%s' "$registry_dump_install_path_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_install_path_file" ) # Include game data content_inclusion_icons 'PKG_DATA' 'APP_MAIN' content_inclusion_icons 'PKG_DATA_CONQUEST' 'APP_CONQUEST' content_inclusion 'GAME_BIN' 'PKG_BIN' "$(path_game_data)/$(game_id)" content_inclusion 'GAME_DATA' 'PKG_DATA' "$(path_game_data)/$(game_id)" content_inclusion 'DOC_DATA' 'PKG_DATA' "$(path_documentation)/$(game_id)" content_inclusion 'GAME_BIN_CONQUEST' 'PKG_BIN_CONQUEST' "$(path_game_data)/${GAME_ID_CONQUEST}" content_inclusion 'GAME_DATA_CONQUEST' 'PKG_DATA_CONQUEST' "$(path_game_data)/${GAME_ID_CONQUEST}" content_inclusion 'DOC_DATA_CONQUEST' 'PKG_DATA_CONQUEST' "$(path_documentation)/${GAME_ID_CONQUEST}" ## Allow running the expansion without having to start the base game first content_inclusion 'GAME0_BIN' 'PKG_BIN' "$(path_game_data)" rm --recursive "${PLAYIT_WORKDIR}/gamedata" # Write launchers APP_MAIN_EXE="$(game_id)/$(application_exe 'APP_MAIN')" ## Run the game binary from its parent directory game_exec_line() { cat <<- EOF cd "$(dirname "$APP_MAIN_EXE")" \$(wine_command) "$(basename "$APP_MAIN_EXE")" "\$@" EOF } launchers_generation 'PKG_BIN' 'APP_MAIN' APP_CONQUEST_EXE="${GAME_ID_CONQUEST}/$(application_exe 'APP_CONQUEST')" ## Run the game binary from its parent directory game_exec_line() { cat <<- EOF cd "$(dirname "$APP_CONQUEST_EXE")" \$(wine_command) "$(basename "$APP_CONQUEST_EXE")" "\$@" EOF } launchers_generation 'PKG_BIN_CONQUEST' 'APP_CONQUEST' # Build package packages_generation print_instructions 'PKG_BIN' 'PKG_DATA' ( GAME_NAME="$GAME_NAME - $GAME_NAME_CONQUEST" print_instructions 'PKG_BIN_CONQUEST' 'PKG_DATA_CONQUEST' ) # Clean up working_directory_cleanup exit 0 games/play-endless-space-1.sh0000755000000000000000000000503414471751340015046 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Endless Space # send your bug reports to bugs@dotslashplay.it ### script_version=20250127.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='endless-space-1' GAME_NAME='Endless Space' ARCHIVE_BASE_0_NAME='setup_endlesstm_space_-_definitive_edition_1.0.0._(64185).exe' ARCHIVE_BASE_0_MD5='84ccf58a734694a63db59e599344a254' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_endlesstm_space_-_definitive_edition_1.0.0._(64185)-1.bin' ARCHIVE_BASE_0_PART1_MD5='65a88affbdbff4aa78808b941184051b' ARCHIVE_BASE_0_SIZE='3600000' ARCHIVE_BASE_0_VERSION='1.1.59-gog64185' ARCHIVE_BASE_0_URL='https://www.gog.com/game/endless_space_definitive_edition' UNITY3D_NAME='endless space' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_BIN_FILES=' avprowindowsmedia.dll fmod_event.dll fmod_event_net.dll fmodex.dll stlport_vc10.5.2.dll' ## The game fails to start if the Galaxy libraries are not available. CONTENT_GAME1_BIN_FILES=' galaxy.dll galaxycsharp.dll galaxycsharpglue.dll' CONTENT_GAME0_DATA_FILES=' public public_xp1' ## The game engine expects write access to XML files. USER_PERSISTENT_FILES=' *.xml' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Endless Space' ## Skip playing the logo movie on launch, ## as it prevents reaching the game menu APP_MAIN_OPTIONS='-nologo' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf' 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-endzone-1-expansions.sh0000755000000000000000000000427014471751340016150 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Endzone: A World Apart expansions: # - Halloween # send your bug reports to bugs@dotslashplay.it ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='endzone-1' GAME_NAME='Endzone: A World Apart' EXPANSION_ID_HALLOWEEN='halloween' EXPANSION_NAME_HALLOWEEN='Halloween' # Archives ## Halloween ARCHIVE_BASE_HALLOWEEN_EN_0_NAME='setup_endzone_-_a_world_apart_happy_halloween_1.2.8630.30586_(64bit)_(66949).exe' ARCHIVE_BASE_HALLOWEEN_EN_0_MD5='377587121fed6ba7f8a2d914cdbfdbf7' ARCHIVE_BASE_HALLOWEEN_EN_0_TYPE='innosetup' ARCHIVE_BASE_HALLOWEEN_EN_0_SIZE='26268' ARCHIVE_BASE_HALLOWEEN_EN_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_HALLOWEEN_EN_0_URL='https://www.gog.com/game/endzone_a_world_apart_halloween' ARCHIVE_BASE_HALLOWEEN_FR_0_NAME='setup_endzone_-_a_world_apart_happy_halloween_1.2.8630.30586_(french_64bit)_(66949).exe' ARCHIVE_BASE_HALLOWEEN_FR_0_MD5='f50c8540bc740a57d4b430c92d608160' ARCHIVE_BASE_HALLOWEEN_FR_0_TYPE='innosetup' ARCHIVE_BASE_HALLOWEEN_FR_0_SIZE='26268' ARCHIVE_BASE_HALLOWEEN_FR_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_HALLOWEEN_FR_0_URL='https://www.gog.com/game/endzone_a_world_apart_halloween' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' mods' 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" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-endzone-1.sh0000755000000000000000000000545314471751340013767 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Endzone: A World Apart # send your bug reports to bugs@dotslashplay.it ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='endzone-1' GAME_NAME='Endzone: A World Apart' ARCHIVE_BASE_EN_0_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(64bit)_(66949).exe' ARCHIVE_BASE_EN_0_MD5='01a625f5c0e07d324fb07d8ac43fdd14' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(64bit)_(66949)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='de1aba989b4798154fce6e4fa2ffbf46' ARCHIVE_BASE_EN_0_SIZE='4242544' ARCHIVE_BASE_EN_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/endzone_a_world_apart' ARCHIVE_BASE_FR_0_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(french_64bit)_(66949).exe' ARCHIVE_BASE_FR_0_MD5='003ad80a6a2ce4123ffe2d98c5fe0de5' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(french_64bit)_(66949)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='5f68efd024f84f71edad63e2122f7bf3' ARCHIVE_BASE_FR_0_SIZE='4244580' ARCHIVE_BASE_FR_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/endzone_a_world_apart' UNITY3D_NAME='endzone' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_L10N_FILES=' localizations' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Gentlymad Studios/Endzone' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='64' 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-etherlords-1.sh0000755000000000000000000000425514471751340014477 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Etherlords # send your bug reports to bugs@dotslashplay.it ### script_version=20241203.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='etherlords-1' GAME_NAME='Etherlords' ARCHIVE_BASE_0_NAME='setup_etherlords_2.0.0.10.exe' ARCHIVE_BASE_0_MD5='13f406358ed79d49754ef3a48de6c2db' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1458432' ARCHIVE_BASE_0_VERSION='1.07-gog2.0.0.10' ARCHIVE_BASE_0_URL='https://www.gog.com/game/etherlords' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' mp3dec.asi 2dintmmx.dll 3dfpfpu.dll binkw32.dll dsetup.dll mss32.dll etherlords.exe combatcamera.ini settings.ini' CONTENT_GAME_DATA_FILES=' campaigns duel maps resources halloffame.hl ar_text.res' CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt readme 1.07.txt' USER_PERSISTENT_DIRECTORIES=' campaign duel save' USER_PERSISTENT_FILES=' halloffame.hl *.ini' ## The game does not seem to support resolutions higher than 1024×768 WINE_VIRTUAL_DESKTOP='1024x768' APP_MAIN_EXE='etherlords.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-europa-universalis-2.sh0000755000000000000000000000564014471751340016161 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Europa Universalis 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250127.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='europa-universalis-2' GAME_NAME='Europa Universalis Ⅱ' ARCHIVE_BASE_0_NAME='setup_europa_universalis2_2.0.0.1.exe' ARCHIVE_BASE_0_MD5='eb19eab80b45105d571bf684e18118a4' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.09-gog2.0.0.1' ARCHIVE_BASE_0_SIZE='430000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/europa_universalis_ii' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' config *.cfg *.dll *.exe *.ini *.tlb' CONTENT_GAME_DATA_FILES=' ai avi db gfx map music scenarios sfx tutorial' CONTENT_DOC_DATA_FILES=' *.doc *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' config scenarios/save games' USER_PERSISTENT_FILES=' config.eu history.txt *.cfg *.ini' ## Run the game in a WINE virtual desktop ## to prevent problems with mouse cursor behaviour (WINE 8.0) WINE_VIRTUAL_DESKTOP='1280x1024' APP_MAIN_EXE='eu2.exe' APP_SETTINGS_ID="${GAME_ID}-settings" APP_SETTINGS_NAME="$GAME_NAME - Settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='eu2_settings.exe' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_NAME="$GAME_NAME - Scenario editor" APP_EDITOR_EXE='scenario editor.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' application/x-id3' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Fix music playback REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} dos2unix unix2dos" # 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)" # Fix music playback config_file='music.ini' config_field='music' config_value="C:\\\\$(game_id)\\\\music" sed_pattern="s/^${config_field}=.*$/${config_field}=${config_value}/" dos2unix --quiet "$config_file" sed --in-place "$sed_pattern" "$config_file" unix2dos --quiet "$config_file" ) # 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-everything-is-garbage.sh0000755000000000000000000000351514471751340016347 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Everything is Garbage # send your bug reports to bugs@dotslashplay.it ### script_version=20240616.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='everything-is-garbage' GAME_NAME='Everything is Garbage' ARCHIVE_BASE_0_NAME='Everything is Garbage Linux Post Jam.zip' ARCHIVE_BASE_0_MD5='0f59c7be925145ab2cf88fa7fb5d30af' ARCHIVE_BASE_0_SIZE='99170' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://vfqd.itch.io/everything-is-garbage' UNITY3D_NAME='Everything Is Garbage' UNITY3D_PLUGINS=' libVText.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" 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' # 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-factory-town.sh0000755000000000000000000000415214471751340014616 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Factory Town # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='factory-town' GAME_NAME='Factory Town' ARCHIVE_BASE_1_NAME='setup_factory_town_2.2.7_(64bit)_(77941).exe' ARCHIVE_BASE_1_MD5='79cfa439d7468916310f9293dbfc6c6c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='598856' ARCHIVE_BASE_1_VERSION='2.2.7-gog77941' ARCHIVE_BASE_1_URL='https://www.gog.com/game/factory_town' ARCHIVE_BASE_0_NAME='setup_factory_town_1.13.3_(64bit)_(53563).exe' ARCHIVE_BASE_0_MD5='4b9199687bd79a1d8f7641bf4577a2dd' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='630000' ARCHIVE_BASE_0_VERSION='1.13.3-gog53563' UNITY3D_NAME='factory town' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/82 Apps/Factory Town' ## Work around missing text WINE_WINETRICKS_VERBS='arial' 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 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-fallout-tactics.sh0000755000000000000000000001201614471751340015256 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Fallout Tactics # send your bug reports to bugs@dotslashplay.it ### script_version=20250113.5 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='fallout-tactics' GAME_NAME='Fallout Tactics' ARCHIVE_BASE_EN_1_NAME='setup_fallout_tactics_2.1.0.12.exe' ARCHIVE_BASE_EN_1_MD5='9fc5a3b9e0c6a01187383886776c2889' ARCHIVE_BASE_EN_1_TYPE='innosetup' ## TODO: Check the actual size, it might differ from the other build ARCHIVE_BASE_EN_1_SIZE='1827190' ARCHIVE_BASE_EN_1_VERSION='1.27-gog2.1.0.12' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/fallout_tactics' ARCHIVE_BASE_EN_0_NAME='setup_fallout_tactics_2.1.0.12.exe' ARCHIVE_BASE_EN_0_MD5='9cc1d9987d8a2fa6c1cc6cf9837758ad' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1827190' ARCHIVE_BASE_EN_0_VERSION='1.27-gog2.1.0.12' ARCHIVE_BASE_FR_0_NAME='setup_fallout_tactics_french_2.1.0.12.exe' ARCHIVE_BASE_FR_0_MD5='520c29934290910cdeecbc7fcca68f2b' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='1813158' ARCHIVE_BASE_FR_0_VERSION='1.27-gog2.1.0.12' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/fallout_tactics' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' bos.exe bos_hr.exe fot_hires_patch.exe ft tools.exe fttools_hires_patch.exe tacticslauncher.exe *.dll core/*.cfg' CONTENT_GAME_L10N_FILES=' tactics.cfg core/campaigns core/editor core/entities core/gui core/locale core/movie core/sound core/music/custom/readme.txt core/entities_0.bos core/gui_0.bos core/locale_0.bos core/loc-mis_*.bos core/mis-core_?.bos' CONTENT_GAME_DATA_FILES=' bitmaps miles fallouttactics.ico core/missions core/tables core/user core/game.pck core/*.bos' CONTENT_DOC_L10N_FILES=' editor_readme.txt fallout editor end user license agreement.txt patch readme.txt readme.txt *.pdf *.rtf' USER_PERSISTENT_DIRECTORIES=' core/user' USER_PERSISTENT_FILES=' *.cfg' ## The game binaries can be patched by the provided resolution tool. USER_PERSISTENT_FILES="${USER_PERSISTENT_FILES:-} bos.exe ft tools.exe" ## When using a fullscreen resolution higher than the ones supported by the game, ## the mouse cursor is stuck in an invisible box on the top left side of the screen. ## Running the game in a virtual desktop prevents that (WINE 10.0-rc2). WINE_VIRTUAL_DESKTOP='1024x768' ## FIXME: ./play.it 2.32.0 only builds a list from applications ## using an identifier matching "APP_xxx", ## where "xxx" does not include any underscore. APPLICATIONS_LIST=' APP_MAIN APP_MAIN_RESOLUTION APP_TOOLS APP_TOOLS_RESOLUTION' APP_MAIN_EXE='bos.exe' APP_MAIN_ICON='fallouttactics.ico' APP_MAIN_RESOLUTION_ID="${GAME_ID}-hires" APP_MAIN_RESOLUTION_NAME="$GAME_NAME - HD patch" APP_MAIN_RESOLUTION_CAT='Settings' APP_MAIN_RESOLUTION_EXE='fot_hires_patch.exe' APP_MAIN_RESOLUTION_ICON='fallouttactics.ico' APP_TOOLS_ID="${GAME_ID}-tools" APP_TOOLS_NAME="$GAME_NAME - Toolbox" APP_TOOLS_EXE='ft tools.exe' APP_TOOLS_ICON='fallouttactics.ico' APP_TOOLS_RESOLUTION_ID="${APP_TOOLS_ID}-hires" APP_TOOLS_RESOLUTION_NAME="$APP_TOOLS_NAME - HD patch" APP_TOOLS_RESOLUTION_CAT='Settings' APP_TOOLS_RESOLUTION_EXE='fttools_hires_patch.exe' APP_TOOLS_RESOLUTION_ICON='fallouttactics.ico' 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Prevent graphical artifacts on map scrolling (WINE 10.0-rc2) sed --in-place --expression='s/{display.bpp} = {.*}/{display.bpp} = {16}/' 'core/bos.cfg' # Set the highest supported game resolution by default sed_expression='s/{display.height} = {.*}/{display.height} = {768}/' sed_expression="${sed_expression};s/{display.width} = {.*}/{display.width} = {1024}/" sed --in-place --expression="$sed_expression" 'core/bos.cfg' ) # 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-fantasy-general.sh0000755000000000000000000000615414471751340015246 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Fantasy General # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='fantasy-general' GAME_NAME='Fantasy General' ARCHIVE_BASE_EN_1_NAME='fantasy_general_1_0_20211006_50653.sh' ARCHIVE_BASE_EN_1_MD5='386197b3a09d9d004b46698c30282e5d' ARCHIVE_BASE_EN_1_SIZE='256857' ARCHIVE_BASE_EN_1_VERSION='1.0-gog50653' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/fantasy_general' ARCHIVE_BASE_FR_1_NAME='fantasy_general_french_1_0_20211006_50653.sh' ARCHIVE_BASE_FR_1_MD5='8cfe4a811a85aab1e73011b8e0435852' ARCHIVE_BASE_FR_1_SIZE='237356' ARCHIVE_BASE_FR_1_VERSION='1.0-gog50653' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/fantasy_general' ARCHIVE_BASE_EN_0_NAME='gog_fantasy_general_2.0.0.8.sh' ARCHIVE_BASE_EN_0_MD5='59b86b9115ae013d2e23a8b4b7b771fd' ARCHIVE_BASE_EN_0_SIZE='260000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog2.0.0.8' ARCHIVE_BASE_FR_0_NAME='gog_fantasy_general_french_2.0.0.8.sh' ARCHIVE_BASE_FR_0_MD5='1b188304b4cca838e6918ca6e2d9fe2b' ARCHIVE_BASE_FR_0_SIZE='240000' ARCHIVE_BASE_FR_0_VERSION='1.0-gog2.0.0.8' CONTENT_PATH_DEFAULT='data/noarch/game/data' CONTENT_PATH_DEFAULT_EN_0='data/noarch/data' CONTENT_PATH_DEFAULT_FR_0='data/noarch/data' CONTENT_GAME_MAIN_FILES=' dat exe music saves shp sound game.gog game.ins *.bat' CONTENT_DOC_MAIN_FILES=' manual.pdf *.txt' CONTENT_DOC0_MAIN_PATH='data/noarch/docs' CONTENT_DOC0_MAIN_FILES=' Fantasy General - Manual.pdf' USER_PERSISTENT_DIRECTORIES=' saves' USER_PERSISTENT_FILES=' dat/prefs.dat' GAME_IMAGE='game.ins' APP_MAIN_TYPE='dosbox' APP_MAIN_EXE='exe/barena.exe' APP_MAIN_ICON='../../support/icon.png' APP_MAIN_ICON_EN_0='../support/icon.png' APP_MAIN_ICON_FR_0='../support/icon.png' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_EN="${PKG_MAIN_ID}-en" PKG_MAIN_ID_FR="${PKG_MAIN_ID}-fr" PKG_MAIN_PROVIDES=" $PKG_MAIN_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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Convert all file paths to lowercase tolower . ) # Include game data content_inclusion_icons content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd exe barena.exe $@ EOF } launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-farabel.sh0000755000000000000000000000473014471751340013560 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Farabel # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='farabel' GAME_NAME='Farabel' ARCHIVE_BASE_1_NAME='Farabel_Linux_1.2.1.zip' ARCHIVE_BASE_1_MD5='383d59983be2cedd151006d8f932e5ff' ARCHIVE_BASE_1_SIZE='430000' ARCHIVE_BASE_1_VERSION='1.2.1-humble181130' ARCHIVE_BASE_1_URL='https://www.humblebundle.com/store/farabel' ARCHIVE_BASE_0_NAME='Farabel1.2Linux.zip' ARCHIVE_BASE_0_MD5='f2bd82b7a9578e8d7f084286cdb5943f' ARCHIVE_BASE_0_SIZE='430000' ARCHIVE_BASE_0_VERSION='1.2-humble181031' UNITY3D_NAME='Farabel' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='Farabel' CONTENT_PATH_DEFAULT_0='.' FAKE_HOME_PERSISTENT_DIRECTORIES=' Frogames/Farabel' 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-fox-and-flock.sh0000755000000000000000000000745014471751340014616 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Fox & Flock # send your bug reports to bugs@dotslashplay.it ### script_version=20250129.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='fox-and-flock' GAME_NAME='Fox & Flock' ARCHIVE_BASE_32BIT_0_NAME='ff-linux-32.zip' ARCHIVE_BASE_32BIT_0_MD5='6e0dee8044a05ee5bfef8a9885f3f456' ARCHIVE_BASE_32BIT_0_SIZE='320000' ARCHIVE_BASE_32BIT_0_VERSION='1.0.0-humble1' ARCHIVE_BASE_32BIT_0_URL='https://www.humblebundle.com/store/fox-flock' ARCHIVE_BASE_64BIT_0_NAME='ff-linux-64.zip' ARCHIVE_BASE_64BIT_0_MD5='d0c5d87d2415f4eb49c591612e877f42' ARCHIVE_BASE_64BIT_0_SIZE='310000' ARCHIVE_BASE_64BIT_0_VERSION='1.0.0-humble1' ARCHIVE_BASE_64BIT_0_URL='https://www.humblebundle.com/store/fox-flock' CONTENT_PATH_DEFAULT='Fox and Flock' CONTENT_LIBS_BIN_FILES=' libffmpegsumo.so' CONTENT_GAME_BIN_FILES=' foxandflock nw.pak' CONTENT_GAME_DATA_FILES=' dist locales icudtl.dat package.json' APP_MAIN_EXE='foxandflock' APP_MAIN_ICONS_LIST='APP_MAIN_ICON_128 APP_MAIN_ICON_256' APP_MAIN_ICON_SOURCE='dist/img/icon.png' APP_MAIN_ICON_128='dist/img/icon_128.png' APP_MAIN_ICON_256='dist/img/icon_256.png' ## Convert the shipped icon to standard resolutions REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} convert" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_32BIT='32' PKG_BIN_ARCH_64BIT='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libcairo.so.2 libc.so.6 libdbus-1.so.3 libdl.so.2 libexpat.so.1 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgconf-2.so.4 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 libnotify.so.4 libnspr4.so libnss3.so libnssutil3.so libpango-1.0.so.0 libpangocairo-1.0.so.0 libplc4.so libpthread.so.0 librt.so.1 libsmime3.so libstdc++.so.6 libX11.so.6 libXcomposite.so.1 libXcursor.so.1 libXdamage.so.1 libXext.so.6 libXfixes.so.3 libXi.so.6 libXrandr.so.2 libXrender.so.1 libXtst.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 the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files find . -name '*.rsrc' -delete # Convert the shipped icon to standard resolutions icon_source=$(icon_path 'APP_MAIN_ICON_SOURCE') for icon_resolution in '128x128' '256x256'; do icon_destination=$(printf '%s' "$icon_source" | sed "s/\.png$/_${icon_resolution%x*}&/") convert "$icon_source" -resize "$icon_resolution" "$icon_destination" done rm "$icon_source" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Link the shipped library into the game directory to avoid a crash on launch library_path_source="$(path_libraries)/libffmpegsumo.so" library_path_destination="$(package_path 'PKG_BIN')$(path_game_data)" mkdir --parents "$library_path_destination" ln --symbolic "$library_path_source" "$library_path_destination" # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-gangsters-organized-crime.sh0000755000000000000000000000402414471751340017232 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Gangsters: Organized Crime # send your bug reports to bugs@dotslashplay.it ### script_version=20240610.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='gangsters-organized-crime' GAME_NAME='Gangsters: Organized Crime' ARCHIVE_BASE_0_NAME='setup_gangsters_2.0.0.15.exe' ARCHIVE_BASE_0_MD5='794561f7b449e3bfce82611f11f8bc9b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='330000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.15' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gangsters_organized_crime' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' gangsters.exe *.dll *.ini' CONTENT_GAME_DATA_FILES=' data graphics help multiplayer scenarios music samples scenarios sound tutorials video security.key' CONTENT_DOC_DATA_FILES=' eula *.pdf *.txt *.wri' USER_PERSISTENT_DIRECTORIES=' multiplayer saved games saved games' APP_MAIN_EXE='gangsters.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' application/x-id3' # 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-gemcraft.sh0000755000000000000000000000431314471751340013751 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # GemCraft - Frostborn Wrath # send your bug reports to bugs@dotslashplay.it ### script_version=20240618.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='gemcraft' GAME_NAME='GemCraft - Frostborn Wrath' ARCHIVE_BASE_1_NAME='setup_gemcraft_-_frostborn_wrath_v.1.2.1a_(45694).exe' ARCHIVE_BASE_1_MD5='8b04168cdb93ed44440fe0ed4181085d' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='220000' ARCHIVE_BASE_1_VERSION='1.2.1a-gog45694' ARCHIVE_BASE_1_URL='https://www.gog.com/game/gemcraft_frostborn_wrath' ARCHIVE_BASE_0_NAME='setup_gemcraft_-_frostborn_wrath_v.1.1.2b_(38400).exe' ARCHIVE_BASE_0_MD5='3810dc7a58febb3120047a0a041f1b60' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='220000' ARCHIVE_BASE_0_VERSION='1.1.2b-gog38400' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' gemcraft frostborn wrath.exe adobe air' CONTENT_GAME_DATA_FILES=' icons meta-inf mimetype *.swf' WINE_PERSISTENT_DIRCTORIES=' users/${USER}/AppData/Roaming/com.giab.games.gcfw users/${USER}/Documents/GCFW-backup1' APP_MAIN_EXE='gemcraft frostborn wrath.exe' APP_MAIN_ICON='icons/gcfw-icon-128x128tr.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-giants-citizen-kabuto.sh0000755000000000000000000000643414471751340016402 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Giants: Citizen Kabuto # send your bug reports to bugs@dotslashplay.it ### script_version=20250130.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='giants-citizen-kabuto' GAME_NAME='Giants: Citizen Kabuto' ARCHIVE_BASE_0_NAME='setup_giants_2.1.0.4.exe' ARCHIVE_BASE_0_MD5='33015108ece9e52b1f525880f0867e11' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.4-gog2.1.0.4' ARCHIVE_BASE_0_SIZE='1600000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/giants_citizen_kabuto' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' eaxman.dll gs_ds.dll *.ini *.exe' CONTENT_GAME0_BIN_RELATIVE_PATH='__support/dx7' CONTENT_GAME0_BIN_FILES=' gg_dx7r.dll' CONTENT_GAME_DATA_FILES=' bin music stream streamenglish streamfrench streamgerman streamitalian streamspanish giants.ico language_setup.png' CONTENT_DOC_DATA_FILES=' manual.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' savegame' USER_PERSISTENT_FILES=' *.ini' APP_MAIN_EXE='giants.exe' APP_MAIN_ICON='giants.ico' APP_L10N_ID="${GAME_ID}-language" APP_L10N_NAME="$GAME_NAME - Language setup" APP_L10N_EXE='language_setup.exe' APP_L10N_ICON='giants.ico' APP_L10N_CAT='Settings' 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' # Set required registry keys destdir="C:\\\\${GAME_ID}" registry_dump_init_file='registry-dumps/init.reg' registry_dump_init_content='Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\PlanetMoon\Giants] "1.00.000"="" "DefPlayer"="Player" "DestDir"="'"${destdir}"'" "Language"="9" "SrcDir"="C:\\" [HKEY_CURRENT_USER\Software\PlanetMoon\Giants\IDs\Player] "GameOptions"=dword:00000bf3 "VideoDepth"=dword:00000020 "VideoDevGuid"=hex:e0,3d,e6,84,aa,46,cf,11,81,6f,00,00,c0,20,15,6e "VideoDrvGuid"=hex:3e,1e,b7,d7,d5,41,cf,11,f3,73,25,a2,0e,c2,cd,35' CONTENT_GAME1_BIN_FILES=" $registry_dump_init_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_init_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # 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)" # Set required registry keys mkdir --parents "$(dirname "$registry_dump_init_file")" printf '%s' "$registry_dump_init_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file" ) # 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-glittermitten-grove.sh0000755000000000000000000000434514471751340016201 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Glittermitten Grove # send your bug reports to bugs@dotslashplay.it ### script_version=20250203.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='glittermitten-grove' GAME_NAME='Glittermitten Grove' ARCHIVE_BASE_0_NAME='GlittermittenGrove_linux_v131.zip' ARCHIVE_BASE_0_MD5='ac9b4c6ce2b7ca921e080cee308bf952' ARCHIVE_BASE_0_SIZE='857226' ARCHIVE_BASE_0_VERSION='1.3.1-itch' ARCHIVE_BASE_0_URL='https://twinbeard.itch.io/glittermitten-grove' UNITY3D_NAME='gmg' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='GlittermittenGrove_linux_v131' 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_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-gnomoria.sh0000755000000000000000000000641614471751340014002 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Gnomoria # send your bug reports to bugs@dotslashplay.it ### script_version=20240831.2 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='gnomoria' GAME_NAME='Gnomoria' ARCHIVE_BASE_0_NAME='gog_gnomoria_2.0.0.1.sh' ARCHIVE_BASE_0_MD5='3d0a9ed4fb45ff133b5a7410a2114455' ARCHIVE_BASE_0_SIZE='230000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.1' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gnomoria' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_FILES=' libmojoshader.so libtheoraplay.so' CONTENT_LIBS_LIBS64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content Mod Files mono Gnomoria.exe Gnomoria.png FNA.dll FNA.dll.config gnomorialib.dll' ## TODO: Check if the Steam library is required CONTENT_GAME0_MAIN_FILES=' Steamworks.NET.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' APP_MAIN_EXE='Gnomoria.exe' APP_MAIN_ICON='Gnomoria.png' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_image-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Security.dll System.Xml.dll' ## 7za is used by the save system PKG_MAIN_DEPENDENCIES_COMMANDS=' 7za' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS_DESCRIPTION='shipped libraries' PKG_LIBS64_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS32_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libm.so.6 libogg.so.0 libpthread.so.0 libtheoradec.so.1 libvorbis.so.0' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_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" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default ## Include a link to 7za, used by the save system link_source='/usr/bin/7za' link_destination="$(package_path 'PKG_MAIN')$(path_game_data)" mkdir --parents "${link_destination}/lib64" mkdir --parents "${link_destination}/lib" ln --symbolic "$link_source" "${link_destination}/lib64" ln --symbolic "$link_source" "${link_destination}/lib" # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-godhood.sh0000755000000000000000000000522214471751340013604 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Godhood # send your bug reports to bugs@dotslashplay.it ### script_version=20240408.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='godhood' GAME_NAME='Godhood' ARCHIVE_BASE_1_NAME='godhood_1_2_4_46551.sh' ARCHIVE_BASE_1_MD5='441bcc84f29501da6ea40216113750d1' ARCHIVE_BASE_1_SIZE='900000' ARCHIVE_BASE_1_VERSION='1.2.4-gog46551' ARCHIVE_BASE_1_URL='https://www.gog.com/game/godhood' ARCHIVE_BASE_0_NAME='godhood_1_0_5_40453.sh' ARCHIVE_BASE_0_MD5='6e0b1ddd1b9575b2c7d1f61ca2d57681' ARCHIVE_BASE_0_SIZE='900000' ARCHIVE_BASE_0_VERSION='1.0.5-gog40453' CONTENT_PATH_DEFAULT='data/noarch/game' ## TODO: Check if system-provided libraries could be used instead. CONTENT_LIBS_BIN_FILES=' libc++abi.so.1 libc++.so.1' CONTENT_GAME_BIN_FILES=' godhood' CONTENT_GAME_DATA_FILES=' *.bni data i18n' USER_PERSISTENT_DIRECTORIES=' userdata savedata' APP_MAIN_EXE='godhood' APP_MAIN_ICON='../support/icon.png' ## Create required directory for saved games. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Create required directory for saved games mkdir --parents savedata/Player' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl.so.4+CURL_OPENSSL_3 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' # 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" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launcher launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-graveyard-keeper.sh0000755000000000000000000000422014471751340015413 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Graveyard Keeper # send your bug reports to bugs@dotslashplay.it ### script_version=20250428.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='graveyard-keeper' GAME_NAME='Graveyard Keeper' ARCHIVE_BASE_1_NAME='graveyard_keeper_1_405_55214.sh' ARCHIVE_BASE_1_MD5='6d5461b5f7571dd5bed0561d26f189b3' ARCHIVE_BASE_1_SIZE='1800000' ARCHIVE_BASE_1_VERSION='1.405-gog55214' ARCHIVE_BASE_1_URL='https://www.gog.com/game/graveyard_keeper' ARCHIVE_BASE_0_NAME='graveyard_keeper_1_402_51180.sh' ARCHIVE_BASE_0_MD5='4095c374cade58a5ce4f6a80377cbcb7' ARCHIVE_BASE_0_SIZE='1800000' ARCHIVE_BASE_0_VERSION='1.402-gog51180' UNITY3D_NAME='Graveyard Keeper' UNITY3D_PLUGINS=' sqlite3.so' ## The game crashes on launch if the steam_api library is not available. UNITY3D_PLUGINS="${UNITY3D_PLUGINS:-} libsteam_api.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' 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-greedcorp.sh0000755000000000000000000000563014471751340014136 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # GreedCorp # send your bug reports to bugs@dotslashplay.it ### script_version=20241203.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='greedcorp' GAME_NAME='GreedCorp' # This DRM-free archive is no longer available for sale from Humble Bundle. ARCHIVE_BASE_0_NAME='greedcorp_linux.tar.gz' ARCHIVE_BASE_0_MD5='c1cffb847bf65caf8abd4c589813884a' ARCHIVE_BASE_0_SIZE='205594' ARCHIVE_BASE_0_VERSION='1.0-humble' UNITY3D_NAME='GreedCorp' UNITY3D_PLUGINS=' liblibAI.so' CONTENT_PATH_DEFAULT='GreedCorp' 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 ## Work around the engine looking for a library in an hardcoded path library_source="$(path_libraries)/liblibAI.so" library_destination="$(package_path 'PKG_BIN64')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86_64/liblibAI.so" mkdir --parents "$(dirname "$library_destination")" ln --symbolic "$library_source" "$library_destination" library_destination="$(package_path 'PKG_BIN32')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86/liblibAI.so" mkdir --parents "$(dirname "$library_destination")" ln --symbolic "$library_source" "$library_destination" # 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-habitat.sh0000755000000000000000000000465314471751340013604 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Habitat # send your bug reports to bugs@dotslashplay.it ### script_version=20240611.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='habitat' GAME_NAME='Habitat' ARCHIVE_BASE_0_NAME='Habitat_LinuxUniversal.zip' ARCHIVE_BASE_0_MD5='f845ef815eb821fdc6124f9cd1b5ca8f' ARCHIVE_BASE_0_SIZE='1499636' ARCHIVE_BASE_0_VERSION='1.0-humble160219' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/habitat' UNITY3D_NAME='Habitat' UNITY3D_PLUGINS=' libFbxImport.so ScreenSelector.so' ## TODO: Check if the Steam libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='Habitat_LinuxUniversal' 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_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" 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" # 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" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete MacOS junk. find . -name '*.rsrc' -delete ) # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-halcyon-6.sh0000755000000000000000000000454114471751340013764 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Halcyon 6 # send your bug reports to bugs@dotslashplay.it ### script_version=20250204.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='halcyon-6' GAME_NAME='Halcyon 6' ## This DRM-free build is no longer available for sale from Humble Bundle. ARCHIVE_BASE_0_NAME='H6LINUX.zip' ARCHIVE_BASE_0_MD5='60ac71e3532c201024cf9a430e2746a1' ARCHIVE_BASE_0_VERSION='1.4.3.4-humble1' ARCHIVE_BASE_0_SIZE='1700000' UNITY3D_NAME='H6' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='H6LINUXGoG' 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 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" # 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 ## Ignore extraction warnings due to extra "../" inner path component archive_extraction_default 2>/dev/null || true # 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-hard-west.sh0000755000000000000000000000571614471751340014067 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Hard West # send your bug reports to bugs@dotslashplay.it ### script_version=20241112.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='hard-west' GAME_NAME='Hard West' # Archives ## Hard West (base game) ARCHIVE_BASE_0_NAME='gog_hard_west_2.7.0.8.sh' ARCHIVE_BASE_0_MD5='de81eb547f089d8bdb96b7a2fe38e8c0' ARCHIVE_BASE_0_SIZE='5688858' ARCHIVE_BASE_0_VERSION='1.5-gog2.7.0.8' ARCHIVE_BASE_0_URL='https://www.gog.com/game/hard_west' ## Scars of Freedom ## TODO: Support for the expansion should be moved to a dedicated script ARCHIVE_OPTIONAL_SCARSOFFREEDOM_0_NAME='gog_hard_west_scars_of_freedom_dlc_2.3.0.4.sh' ARCHIVE_OPTIONAL_SCARSOFFREEDOM_0_MD5='bb4368afaf670f0d8ebc09f7bb1f3713' ARCHIVE_OPTIONAL_SCARSOFFREEDOM_0_SIZE='200000' ARCHIVE_OPTIONAL_SCARSOFFREEDOM_0_URL='https://www.gog.com/game/hard_west_scars_of_freedom' UNITY3D_NAME='HardWest' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' Data Data_dlc1' 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 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 "$@" # Load Scars of Freedom archive if it is available archive_initialize_optional \ 'ARCHIVE_SCARSOFFREEDOM' \ 'ARCHIVE_OPTIONAL_SCARSOFFREEDOM_0' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_SCARSOFFREEDOM'; then archive_extraction 'ARCHIVE_SCARSOFFREEDOM' fi # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-heroes-chronicles.sh0000755000000000000000000004207314471751340015602 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Heroes Chronicles series: # - Chapter 1 # - Chapter 2 # - Chapter 3 # - Chapter 4 # - Chapter 5 # - Chapter 6 # - Chapter 7 # - Chapter 8 # send your bug reports to bugs@dotslashplay.it ### script_version=20250227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='heroes-chronicles' GAME_NAME='Heroes Chronicles' GAME_ID_CHAPTER1="${GAME_ID}-1" GAME_NAME_CHAPTER1="${GAME_NAME}: Chapter 1 - Warlords of the Wasteland" GAME_ID_CHAPTER2="${GAME_ID}-2" GAME_NAME_CHAPTER2="${GAME_NAME}: Chapter 2 - Conquest of the Underworld" GAME_ID_CHAPTER3="${GAME_ID}-3" GAME_NAME_CHAPTER3="${GAME_NAME}: Chapter 3 - Masters of the Elements" GAME_ID_CHAPTER4="${GAME_ID}-4" GAME_NAME_CHAPTER4="${GAME_NAME}: Chapter 4 - Clash of the Dragons" GAME_ID_CHAPTER5="${GAME_ID}-5" GAME_NAME_CHAPTER5="${GAME_NAME}: Chapter 5 - The World Tree" GAME_ID_CHAPTER6="${GAME_ID}-6" GAME_NAME_CHAPTER6="${GAME_NAME}: Chapter 6 - The Fiery Moon" GAME_ID_CHAPTER7="${GAME_ID}-7" GAME_NAME_CHAPTER7="${GAME_NAME}: Chapter 7 - Revolt of the Beastmasters" GAME_ID_CHAPTER8="${GAME_ID}-8" GAME_NAME_CHAPTER8="${GAME_NAME}: Chapter 8 - The Sword of Frost" # Archives ## Chapter 1 ARCHIVE_BASE_CHAPTER1_0_NAME='setup_heroes_chronicles_chapter1_2.1.0.42.exe' ARCHIVE_BASE_CHAPTER1_0_MD5='f584d6e11ed47d1d40e973a691adca5d' ARCHIVE_BASE_CHAPTER1_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER1_0_SIZE='500000' ARCHIVE_BASE_CHAPTER1_0_VERSION='1.0-gog2.1.0.42' ARCHIVE_BASE_CHAPTER1_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 2 ARCHIVE_BASE_CHAPTER2_0_NAME='setup_heroes_chronicles_chapter2_2.1.0.43.exe' ARCHIVE_BASE_CHAPTER2_0_MD5='0d240bc0309814ba251c2d9b557cf69f' ARCHIVE_BASE_CHAPTER2_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER2_0_SIZE='510000' ARCHIVE_BASE_CHAPTER2_0_VERSION='1.0-gog2.1.0.43' ARCHIVE_BASE_CHAPTER2_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 3 ARCHIVE_BASE_CHAPTER3_0_NAME='setup_heroes_chronicles_chapter3_2.1.0.41.exe' ARCHIVE_BASE_CHAPTER3_0_MD5='cb21751572960d47a259efc17b92c88c' ARCHIVE_BASE_CHAPTER3_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER3_0_SIZE='490000' ARCHIVE_BASE_CHAPTER3_0_VERSION='1.0-gog2.1.0.41' ARCHIVE_BASE_CHAPTER3_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 4 ARCHIVE_BASE_CHAPTER4_0_NAME='setup_heroes_chronicles_chapter4_2.1.0.42.exe' ARCHIVE_BASE_CHAPTER4_0_MD5='922291e16176cb4bd37ca88eb5f3a19e' ARCHIVE_BASE_CHAPTER4_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER4_0_SIZE='490000' ARCHIVE_BASE_CHAPTER4_0_VERSION='1.0-gog2.1.0.42' ARCHIVE_BASE_CHAPTER4_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 5 ARCHIVE_BASE_CHAPTER5_0_NAME='setup_heroes_chronicles_chapter5_2.1.0.42.exe' ARCHIVE_BASE_CHAPTER5_0_MD5='57b3ec588e627a2da30d3bc80ede5b1d' ARCHIVE_BASE_CHAPTER5_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER5_0_SIZE='470000' ARCHIVE_BASE_CHAPTER5_0_VERSION='1.0-gog2.1.0.42' ARCHIVE_BASE_CHAPTER5_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 6 ARCHIVE_BASE_CHAPTER6_0_NAME='setup_heroes_chronicles_chapter6_2.1.0.42.exe' ARCHIVE_BASE_CHAPTER6_0_MD5='64becfde1882eecd93fb02bf215eff11' ARCHIVE_BASE_CHAPTER6_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER6_0_SIZE='470000' ARCHIVE_BASE_CHAPTER6_0_VERSION='1.0-gog2.1.0.42' ARCHIVE_BASE_CHAPTER6_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 7 ARCHIVE_BASE_CHAPTER7_0_NAME='setup_heroes_chronicles_chapter7_2.1.0.42.exe' ARCHIVE_BASE_CHAPTER7_0_MD5='07c189a731886b2d3891ac1c65581d40' ARCHIVE_BASE_CHAPTER7_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER7_0_SIZE='500000' ARCHIVE_BASE_CHAPTER7_0_VERSION='1.0-gog2.1.0.42' ARCHIVE_BASE_CHAPTER7_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' ## Chapter 8 ARCHIVE_BASE_CHAPTER8_0_NAME='setup_heroes_chronicles_chapter8_2.1.0.42.exe' ARCHIVE_BASE_CHAPTER8_0_MD5='2b3e4c366db0f7e3e8b15b0935aad528' ARCHIVE_BASE_CHAPTER8_0_TYPE='innosetup' ARCHIVE_BASE_CHAPTER8_0_SIZE='480000' ARCHIVE_BASE_CHAPTER8_0_VERSION='1.0-gog2.1.0.42' ARCHIVE_BASE_CHAPTER8_0_URL='https://www.gog.com/game/heroes_chronicles_all_chapters' CONTENT_INNER_PATH_CHAPTER1='warlords of the wasteland' CONTENT_INNER_PATH_CHAPTER2='conquest of the underworld' CONTENT_INNER_PATH_CHAPTER3='masters of the elements' CONTENT_INNER_PATH_CHAPTER4='clash of the dragons' CONTENT_INNER_PATH_CHAPTER5='the world tree' CONTENT_INNER_PATH_CHAPTER6='the fiery moon' CONTENT_INNER_PATH_CHAPTER7='revolt of the beastmasters' CONTENT_INNER_PATH_CHAPTER8='the sword of frost' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES_CHAPTER1=" ${CONTENT_INNER_PATH_CHAPTER1}/*.asi ${CONTENT_INNER_PATH_CHAPTER1}/*.dll ${CONTENT_INNER_PATH_CHAPTER1}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER2=" ${CONTENT_INNER_PATH_CHAPTER2}/*.asi ${CONTENT_INNER_PATH_CHAPTER2}/*.dll ${CONTENT_INNER_PATH_CHAPTER2}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER3=" ${CONTENT_INNER_PATH_CHAPTER3}/*.asi ${CONTENT_INNER_PATH_CHAPTER3}/*.dll ${CONTENT_INNER_PATH_CHAPTER3}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER4=" ${CONTENT_INNER_PATH_CHAPTER4}/*.asi ${CONTENT_INNER_PATH_CHAPTER4}/*.dll ${CONTENT_INNER_PATH_CHAPTER4}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER5=" ${CONTENT_INNER_PATH_CHAPTER5}/*.asi ${CONTENT_INNER_PATH_CHAPTER5}/*.dll ${CONTENT_INNER_PATH_CHAPTER5}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER6=" ${CONTENT_INNER_PATH_CHAPTER6}/*.asi ${CONTENT_INNER_PATH_CHAPTER6}/*.dll ${CONTENT_INNER_PATH_CHAPTER6}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER7=" ${CONTENT_INNER_PATH_CHAPTER7}/*.asi ${CONTENT_INNER_PATH_CHAPTER7}/*.dll ${CONTENT_INNER_PATH_CHAPTER7}/*.exe" CONTENT_GAME_BIN_FILES_CHAPTER8=" ${CONTENT_INNER_PATH_CHAPTER8}/*.asi ${CONTENT_INNER_PATH_CHAPTER8}/*.dll ${CONTENT_INNER_PATH_CHAPTER8}/*.exe" CONTENT_GAME_DATA_FILES_CHAPTER1=" ${CONTENT_INNER_PATH_CHAPTER1}/data ${CONTENT_INNER_PATH_CHAPTER1}/games ${CONTENT_INNER_PATH_CHAPTER1}/maps" CONTENT_GAME_DATA_FILES_CHAPTER2=" ${CONTENT_INNER_PATH_CHAPTER2}/data ${CONTENT_INNER_PATH_CHAPTER2}/games ${CONTENT_INNER_PATH_CHAPTER2}/maps" CONTENT_GAME_DATA_FILES_CHAPTER3=" ${CONTENT_INNER_PATH_CHAPTER3}/data ${CONTENT_INNER_PATH_CHAPTER3}/games ${CONTENT_INNER_PATH_CHAPTER3}/maps" CONTENT_GAME_DATA_FILES_CHAPTER4=" ${CONTENT_INNER_PATH_CHAPTER4}/data ${CONTENT_INNER_PATH_CHAPTER4}/games ${CONTENT_INNER_PATH_CHAPTER4}/maps" CONTENT_GAME_DATA_FILES_CHAPTER5=" ${CONTENT_INNER_PATH_CHAPTER5}/data ${CONTENT_INNER_PATH_CHAPTER5}/games ${CONTENT_INNER_PATH_CHAPTER5}/maps" CONTENT_GAME_DATA_FILES_CHAPTER6=" ${CONTENT_INNER_PATH_CHAPTER6}/data ${CONTENT_INNER_PATH_CHAPTER6}/games ${CONTENT_INNER_PATH_CHAPTER6}/maps" CONTENT_GAME_DATA_FILES_CHAPTER7=" ${CONTENT_INNER_PATH_CHAPTER7}/data ${CONTENT_INNER_PATH_CHAPTER7}/games ${CONTENT_INNER_PATH_CHAPTER7}/maps" CONTENT_GAME_DATA_FILES_CHAPTER8=" ${CONTENT_INNER_PATH_CHAPTER8}/data ${CONTENT_INNER_PATH_CHAPTER8}/games ${CONTENT_INNER_PATH_CHAPTER8}/maps" CONTENT_GAME_COMMON_FILES=' data mp3' CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER1="$CONTENT_INNER_PATH_CHAPTER1" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER2="$CONTENT_INNER_PATH_CHAPTER2" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER3="$CONTENT_INNER_PATH_CHAPTER3" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER4="$CONTENT_INNER_PATH_CHAPTER4" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER5="$CONTENT_INNER_PATH_CHAPTER5" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER6="$CONTENT_INNER_PATH_CHAPTER6" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER7="$CONTENT_INNER_PATH_CHAPTER7" CONTENT_DOC_DATA_RELATIVE_PATH_CHAPTER8="$CONTENT_INNER_PATH_CHAPTER8" CONTENT_DOC_DATA_FILES=' *.pdf *.txt' USER_PERSISTENT_DIRECTORIES_CHAPTER1=" ${CONTENT_INNER_PATH_CHAPTER1}/games ${CONTENT_INNER_PATH_CHAPTER1}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER2=" ${CONTENT_INNER_PATH_CHAPTER2}/games ${CONTENT_INNER_PATH_CHAPTER2}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER3=" ${CONTENT_INNER_PATH_CHAPTER3}/games ${CONTENT_INNER_PATH_CHAPTER3}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER4=" ${CONTENT_INNER_PATH_CHAPTER4}/games ${CONTENT_INNER_PATH_CHAPTER4}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER5=" ${CONTENT_INNER_PATH_CHAPTER5}/games ${CONTENT_INNER_PATH_CHAPTER5}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER6=" ${CONTENT_INNER_PATH_CHAPTER6}/games ${CONTENT_INNER_PATH_CHAPTER6}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER7=" ${CONTENT_INNER_PATH_CHAPTER7}/games ${CONTENT_INNER_PATH_CHAPTER7}/maps" USER_PERSISTENT_DIRECTORIES_CHAPTER8=" ${CONTENT_INNER_PATH_CHAPTER8}/games ${CONTENT_INNER_PATH_CHAPTER8}/maps" USER_PERSISTENT_FILES_CHAPTER1=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER1}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER2=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER2}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER3=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER3}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER4=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER4}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER5=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER5}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER6=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER6}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER7=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER7}/data/*.lod" USER_PERSISTENT_FILES_CHAPTER8=" data/*.lod ${CONTENT_INNER_PATH_CHAPTER8}/data/*.lod" WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE_CHAPTER1="${CONTENT_INNER_PATH_CHAPTER1}/warlords.exe" APP_MAIN_EXE_CHAPTER2="${CONTENT_INNER_PATH_CHAPTER2}/underworld.exe" APP_MAIN_EXE_CHAPTER3="${CONTENT_INNER_PATH_CHAPTER3}/elements.exe" APP_MAIN_EXE_CHAPTER4="${CONTENT_INNER_PATH_CHAPTER4}/dragons.exe" APP_MAIN_EXE_CHAPTER5="${CONTENT_INNER_PATH_CHAPTER5}/worldtree.exe" APP_MAIN_EXE_CHAPTER6="${CONTENT_INNER_PATH_CHAPTER6}/fierymoon.exe" APP_MAIN_EXE_CHAPTER7="${CONTENT_INNER_PATH_CHAPTER7}/beastmaster.exe" APP_MAIN_EXE_CHAPTER8="${CONTENT_INNER_PATH_CHAPTER8}/sword.exe" PACKAGES_LIST=' PKG_BIN PKG_COMMON PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_COMMON_ID="${GAME_ID}-common" PKG_COMMON_DESCRIPTION="data shared between all $GAME_NAME games" PKG_DATA_ID_CHAPTER1="${GAME_ID_CHAPTER1}-data" PKG_DATA_ID_CHAPTER2="${GAME_ID_CHAPTER2}-data" PKG_DATA_ID_CHAPTER3="${GAME_ID_CHAPTER3}-data" PKG_DATA_ID_CHAPTER4="${GAME_ID_CHAPTER4}-data" PKG_DATA_ID_CHAPTER5="${GAME_ID_CHAPTER5}-data" PKG_DATA_ID_CHAPTER6="${GAME_ID_CHAPTER6}-data" PKG_DATA_ID_CHAPTER7="${GAME_ID_CHAPTER7}-data" PKG_DATA_ID_CHAPTER8="${GAME_ID_CHAPTER8}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_COMMON' # Allow to skip intro video on first launch + set default settings registry_dump_settings_file='registry-dumps/default-settings.reg' registry_dump_settings_content_common='"Animate SpellBook"=dword:00000001 "Autosave"=dword:00000001 "Bink Video"=dword:00000000 "Blackout Computer"=dword:00000000 "Combat Army Info Level"=dword:00000000 "Combat Auto Creatures"=dword:00000001 "Combat Auto Spells"=dword:00000001 "Combat Ballista"=dword:00000001 "Combat Catapult"=dword:00000001 "Combat First Aid Tent"=dword:00000001 "Combat Shade Level"=dword:00000000 "Combat Speed"=dword:00000000 "Computer Walk Speed"=dword:00000003 "First Time"=dword:00000000 "Last Music Volume"=dword:00000005 "Last Sound Volume"=dword:00000005 "Main Game Full Screen"=dword:00000001 "Main Game Show Menu"=dword:00000001 "Main Game X"=dword:0000000a "Main Game Y"=dword:0000000a "Move Reminder"=dword:00000001 "Music Volume"=dword:00000005 "Quick Combat"=dword:00000000 "Show Combat Grid"=dword:00000000 "Show Combat Mouse Hex"=dword:00000000 "Show Intro"=dword:00000001 "Show Route"=dword:00000001 "Sound Volume"=dword:00000005 "Test Blit"=dword:00000000 "Test Decomp"=dword:00000000 "Test Read"=dword:00000000 "Town Outlines"=dword:00000001 "Video Subtitles"=dword:00000001 "Walk Speed"=dword:00000002 "Window Scroll Speed"=dword:00000001' ## Multiple levels of escaping are required: ## - app_path_xxx declaration: "\\\\\\\\" → "\\\\" ## - registry_dump_settings_content_xxx declaration: "\\\\" → "\\" ## We want to get "\\" in the final .reg file. app_path_CHAPTER1="C:\\\\\\\\${GAME_ID_CHAPTER1}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER1}\\\\\\\\" app_path_CHAPTER2="C:\\\\\\\\${GAME_ID_CHAPTER2}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER2}\\\\\\\\" app_path_CHAPTER3="C:\\\\\\\\${GAME_ID_CHAPTER3}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER3}\\\\\\\\" app_path_CHAPTER4="C:\\\\\\\\${GAME_ID_CHAPTER4}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER4}\\\\\\\\" app_path_CHAPTER5="C:\\\\\\\\${GAME_ID_CHAPTER5}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER5}\\\\\\\\" app_path_CHAPTER6="C:\\\\\\\\${GAME_ID_CHAPTER6}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER6}\\\\\\\\" app_path_CHAPTER7="C:\\\\\\\\${GAME_ID_CHAPTER7}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER7}\\\\\\\\" app_path_CHAPTER8="C:\\\\\\\\${GAME_ID_CHAPTER8}\\\\\\\\${CONTENT_INNER_PATH_CHAPTER8}\\\\\\\\" registry_dump_settings_content_CHAPTER1="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\Warlords] \"AppPath\"=\"${app_path_CHAPTER1}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER2="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\Underworld] \"AppPath\"=\"${app_path_CHAPTER2}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER3="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\Elements] \"AppPath\"=\"${app_path_CHAPTER3}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER4="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\Dragons] \"AppPath\"=\"${app_path_CHAPTER4}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER5="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\WorldTree] \"AppPath\"=\"${app_path_CHAPTER5}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER6="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\FieryMoon] \"AppPath\"=\"${app_path_CHAPTER6}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER7="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\Beastmaster] \"AppPath\"=\"${app_path_CHAPTER7}\" $registry_dump_settings_content_common" registry_dump_settings_content_CHAPTER8="Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\Software\\New World Computing\\Heroes Chronicles\\Sword] \"AppPath\"=\"${app_path_CHAPTER8}\" $registry_dump_settings_content_common" CONTENT_GAME0_BIN_FILES=" $registry_dump_settings_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_settings_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # 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)" # Allow to skip intro video on first launch + set default settings registry_dump_settings_content=$(context_value 'registry_dump_settings_content') mkdir --parents "$(dirname "$registry_dump_settings_file")" printf '%s' "$registry_dump_settings_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_settings_file" ) # Include game data content_inclusion_icons 'PKG_DATA' ## Use a common directory and symbolic links to handle data shared between all Heroes Chronicles games PATH_GAME_COMMON=$(path_game_data | sed "s/$(game_id)$/${GAME_ID}/") content_inclusion 'GAME_COMMON' 'PKG_COMMON' "$PATH_GAME_COMMON" content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { local application application="$1" local application_exe application_exe=$(application_exe "$application") cat <<- EOF cd "$(dirname "$application_exe")" \$(wine_command) "$(basename "$application_exe")" "\$@" EOF } launchers_generation 'PKG_BIN' # Build packages ## Use a common directory and symbolic links to handle data shared between all Heroes Chronicles games PKG_DATA_POSTINST_RUN="$(package_postinst_actions 'PKG_DATA') # Link common files shared by the games series ln --symbolic '${PATH_GAME_COMMON}/data' '$(path_game_data)' ln --symbolic '${PATH_GAME_COMMON}/mp3' '$(path_game_data)'" PKG_DATA_PRERM_RUN="$(package_prerm_actions 'PKG_DATA') # Delete links to common files shared by the games series rm '$(path_game_data)/data' rm '$(path_game_data)/mp3'" ( ## Use the generic values of GAME_ID and GAME_NAME for the shared data package. unset "$(context_name_archive 'GAME_ID')" unset "$(context_name_archive 'GAME_NAME')" packages_generation 'PKG_COMMON' ) packages_generation 'PKG_BIN' 'PKG_DATA' print_instructions # Clean up working_directory_cleanup exit 0 games/play-heroes-of-might-and-magic-1.sh0000755000000000000000000000773614471751340017146 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Heroes of Might and Magic # send your bug reports to bugs@dotslashplay.it ### script_version=20250205.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='heroes-of-might-and-magic-1' GAME_NAME='Heroes of Might and Magic: A Strategic Quest' ARCHIVE_BASE_EN_2_NAME='setup_heroes_of_might_and_magic_1.5_editor_fix_(77097).exe' ARCHIVE_BASE_EN_2_MD5='77e51f82f815601154ed29649609c31e' ARCHIVE_BASE_EN_2_TYPE='innosetup' ARCHIVE_BASE_EN_2_SIZE='623025' ARCHIVE_BASE_EN_2_VERSION='1.5-gog77097' ARCHIVE_BASE_EN_2_URL='https://www.gog.com/game/heroes_of_might_and_magic' ARCHIVE_BASE_FR_2_NAME='setup_heroes_of_might_and_magic_1.5_editor_fix_(french)_(77097).exe' ARCHIVE_BASE_FR_2_MD5='4df415227a134721a41c92a8e4ceed4b' ARCHIVE_BASE_FR_2_TYPE='innosetup' ARCHIVE_BASE_FR_2_SIZE='622364' ARCHIVE_BASE_FR_2_VERSION='1.5-gog77097' ARCHIVE_BASE_FR_2_URL='https://www.gog.com/game/heroes_of_might_and_magic' ARCHIVE_BASE_EN_1_NAME='setup_heroes_of_might_and_magic_1.2_(1.1)_(33754).exe' ARCHIVE_BASE_EN_1_MD5='f3100c6547ef1bb82af6dd6fec66bcbf' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='630000' ARCHIVE_BASE_EN_1_VERSION='1.2-gog33754' ARCHIVE_BASE_FR_1_NAME='setup_heroes_of_might_and_magic_1.2_(1.1)_(french)_(33754).exe' ARCHIVE_BASE_FR_1_MD5='ed647dbfc98cd59dba885dc4fd005a62' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_SIZE='630000' ARCHIVE_BASE_FR_1_VERSION='1.2-gog33754' ARCHIVE_BASE_EN_0_NAME='setup_heroes_of_might_and_magic_2.3.0.45.exe' ARCHIVE_BASE_EN_0_MD5='2cae1821085090e30e128cd0a76b0d21' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='530000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog2.3.0.45' ARCHIVE_BASE_FR_0_NAME='setup_heroes_of_might_and_magic_french_2.3.0.45.exe' ARCHIVE_BASE_FR_0_MD5='9ec736a2a1b97dc36257f583f42864ac' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='530000' ARCHIVE_BASE_FR_0_VERSION='1.0-gog2.3.0.45' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_MAIN_FILES=' games wing.32 heroes.cfg wail32.dll editor.exe heroes.exe netbios.exe setup.exe data/campaign.hs data/heroes.agg data/standard.hs maps/*.map' CONTENT_GAME0_MAIN_PATH='sys' CONTENT_GAME0_MAIN_FILES=' wing32.dll' CONTENT_GAME_COMMON_FILES=' data homm1.gog maps/*.cmp' CONTENT_DOC_COMMON_FILES=' help manual.pdf reference_card.pdf readme.txt' GAME_IMAGE='homm1.gog' GAME_IMAGE_TYPE='iso' USER_PERSISTENT_DIRECTORIES=' games maps' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE='heroes.exe' APP_MAIN_ICON='app/goggame-1207658748.ico' APP_MAIN_ICON_EN_0='goggame-1207658748.ico' APP_MAIN_ICON_FR_0='goggame-1207658748.ico' PACKAGES_LIST=' PKG_MAIN PKG_COMMON' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_EN="${PKG_MAIN_ID}-en" PKG_MAIN_ID_FR="${PKG_MAIN_ID}-fr" PKG_MAIN_PROVIDES=" $PKG_MAIN_ID" PKG_MAIN_DESCRIPTION_EN='English version' PKG_MAIN_DESCRIPTION_FR='French version' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_COMMON' PKG_COMMON_ID="${GAME_ID}-common" PKG_COMMON_DESCRIPTION='common 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_COMMON' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-heroes-of-might-and-magic-2.sh0000755000000000000000000001270114471751340017133 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Heroes of Might and Magic 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250205.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='heroes-of-might-and-magic-2' GAME_NAME='Heroes of Might and Magic Ⅱ: The Price of Loyalty' ARCHIVE_BASE_EN_2_NAME='setup_heroes_of_might_and_magic_2_gold_1.01_(2.1)_(33438).exe' ARCHIVE_BASE_EN_2_MD5='ff7738a587f10a16116743fe26267f65' ARCHIVE_BASE_EN_2_TYPE='innosetup' ARCHIVE_BASE_EN_2_SIZE='590000' ARCHIVE_BASE_EN_2_VERSION='2.1-gog33438' ARCHIVE_BASE_EN_2_URL='https://www.gog.com/game/heroes_of_might_and_magic_2_gold_edition' ARCHIVE_BASE_FR_2_NAME='setup_heroes_of_might_and_magic_2_gold_1.01_(2.1)_(french)_(33438).exe' ARCHIVE_BASE_FR_2_MD5='b4613fc6b238c83d37247851d5e5a27e' ARCHIVE_BASE_FR_2_TYPE='innosetup' ARCHIVE_BASE_FR_2_SIZE='510000' ARCHIVE_BASE_FR_2_VERSION='2.1-gog33438' ARCHIVE_BASE_FR_2_URL='https://www.gog.com/game/heroes_of_might_and_magic_2_gold_edition' ARCHIVE_BASE_EN_1_NAME='setup_heroes_of_might_and_magic_2_gold_1.0_hotfix_(29821).exe' ARCHIVE_BASE_EN_1_MD5='2dc1cb74c1e8de734fa97fc3d2484212' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='480000' ARCHIVE_BASE_EN_1_VERSION='2.1-gog29821' ARCHIVE_BASE_FR_1_NAME='setup_heroes_of_might_and_magic_2_gold_1.0_hotfix_(french)_(29821).exe' ARCHIVE_BASE_FR_1_MD5='1b43a2ce13128d77e8f2e40e72635af1' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_SIZE='410000' ARCHIVE_BASE_FR_1_VERSION='2.1-gog29821' ARCHIVE_BASE_EN_0_NAME='setup_homm2_gold_2.1.0.29.exe' ARCHIVE_BASE_EN_0_MD5='b6785579d75e47936517a79374b17ebc' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='480000' ARCHIVE_BASE_EN_0_VERSION='2.1-gog2.1.0.29' ARCHIVE_BASE_FR_0_NAME='setup_homm2_gold_french_2.1.0.29.exe' ARCHIVE_BASE_FR_0_MD5='c49d8f5d0f6d56e54cf6f9c7a526750f' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='410000' ARCHIVE_BASE_FR_0_VERSION='2.1-gog2.1.0.29' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_MAIN_FILES=' data games journals maps sound wing.32 heroes2.cfg editor2.exe heroes2.exe install.exe netbios.exe homm2.gog homm2.ins homm2.inst' CONTENT_GAME0_MAIN_PATH='sys' CONTENT_GAME0_MAIN_FILES=' wing32.dll' CONTENT_DOC_MAIN_FILES=' eula help readme.txt h2camp.txt polcamp.txt *.pdf' CONTENT_GAME_MUSIC_SW_RELATIVE_PATH='music/sw' CONTENT_GAME_MUSIC_SW_FILES=' *.ogg' CONTENT_GAME_MUSIC_POL_RELATIVE_PATH='music/pol' CONTENT_GAME_MUSIC_POL_FILES=' *.ogg' GAME_IMAGE='homm2.ins' GAME_IMAGE_TYPE='cdrom' USER_PERSISTENT_DIRECTORIES=' games maps' USER_PERSISTENT_FILES=' data/standard.hs *.cfg' APP_MAIN_EXE='heroes2.exe' APP_MAIN_ICON='app/goggame-1207658785.ico' APP_MAIN_ICON_EN_0='goggame-1207658785.ico' APP_MAIN_ICON_FR_0='goggame-1207658785.ico' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_NAME="$GAME_NAME - editor" APP_EDITOR_EXE='editor2.exe' APP_EDITOR_ICON='app/goggame-1207658785.ico' APP_EDITOR_ICON_EN_0='goggame-1207658785.ico' APP_EDITOR_ICON_FR_0='goggame-1207658785.ico' PACKAGES_LIST=' PKG_MAIN PKG_MUSIC_SW PKG_MUSIC_POL' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_EN="${PKG_MAIN_ID}-en" PKG_MAIN_ID_FR="${PKG_MAIN_ID}-fr" PKG_MAIN_PROVIDES=" $PKG_MAIN_ID" PKG_MAIN_DESCRIPTION_EN='English version' PKG_MAIN_DESCRIPTION_FR='French version' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_MUSIC' PKG_MUSIC_ID="${GAME_ID}-music" PKG_MUSIC_SW_ID="${PKG_MUSIC_ID}-sw" PKG_MUSIC_POL_ID="${PKG_MUSIC_ID}-pol" PKG_MUSIC_SW_PROVIDES=" $PKG_MUSIC_ID" PKG_MUSIC_POL_PROVIDES=" $PKG_MUSIC_ID" PKG_MUSIC_SW_DESCRIPTION='The Succession Wars music' PKG_MUSIC_POL_DESCRIPTION='The Price of Loyalty music' # 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 consistent name for disk image disk_image_alternative_name='homm2.inst' if [ -e "$disk_image_alternative_name" ]; then mv "$disk_image_alternative_name" "$GAME_IMAGE" fi # Copy common music files shared between both soundtracks rm \ 'music/homm2_04.ogg' \ 'music/homm2_05.ogg' \ 'music/homm2_06.ogg' \ 'music/homm2_07.ogg' \ 'music/homm2_08.ogg' \ 'music/homm2_09.ogg' cp --link 'music'/*.ogg 'music/sw' cp --link 'music'/*.ogg 'music/pol' rm 'music'/*.ogg ) # Include game data content_inclusion_icons content_inclusion 'GAME_MUSIC_SW' 'PKG_MUSIC_SW' "$(path_game_data)/music" content_inclusion 'GAME_MUSIC_POL' 'PKG_MUSIC_POL' "$(path_game_data)/music" content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation printf '\n' printf '%s:' "$(package_description 'PKG_MUSIC_SW')" print_instructions 'PKG_MAIN' 'PKG_MUSIC_SW' printf '%s:' "$(package_description 'PKG_MUSIC_POL')" print_instructions 'PKG_MAIN' 'PKG_MUSIC_POL' # Clean up working_directory_cleanup exit 0 games/play-heroes-of-might-and-magic-3.sh0000755000000000000000000002445414471751340017144 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Heroes of Might and Magic 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20250204.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='heroes-of-might-and-magic-3' GAME_NAME='Heroes of Might and Magic Ⅲ' ARCHIVE_BASE_EN_1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(3.2)_gog_0.1_(77075).exe' ARCHIVE_BASE_EN_1_MD5='b1c0f5b5d83c17bede6bdd97762b648a' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(3.2)_gog_0.1_(77075)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='0f0aa941fdd99f78a1b58ff5e5d9eb74' ARCHIVE_BASE_EN_1_SIZE='1028132' ARCHIVE_BASE_EN_1_VERSION='4.0-gog77075' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_3_complete_edition' ARCHIVE_BASE_FR_1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(3.2)_gog_0.1_(french)_(77075).exe' ARCHIVE_BASE_FR_1_MD5='940d3b2dfc0c31427ec66d68058d73c5' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(3.2)_gog_0.1_(french)_(77075)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='c1933c4f7009b3b9729160b9021d7863' ARCHIVE_BASE_FR_1_SIZE='1024066' ARCHIVE_BASE_FR_1_VERSION='4.0-gog77075' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_3_complete_edition' ARCHIVE_BASE_RU_1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(3.2)_gog_0.1_(russian)_(77075).exe' ARCHIVE_BASE_RU_1_MD5='77817c7c60d5980f5fcebd55e7dcb08c' ARCHIVE_BASE_RU_1_TYPE='innosetup' ARCHIVE_BASE_RU_1_PART1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(3.2)_gog_0.1_(russian)_(77075)-1.bin' ARCHIVE_BASE_RU_1_PART1_MD5='32af9457f179c3f4bf3b10f76cfde71f' ARCHIVE_BASE_RU_1_SIZE='1000278' ARCHIVE_BASE_RU_1_VERSION='4.0-gog77075' ARCHIVE_BASE_RU_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_3_complete_edition' ARCHIVE_BASE_EN_0_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(28740).exe' ARCHIVE_BASE_EN_0_MD5='8dcd6c4a8c72c65a6920665e28245c57' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(28740)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='4285d54f27c40e815905c7069b6f9f84' ARCHIVE_BASE_EN_0_SIZE='1100000' ARCHIVE_BASE_EN_0_VERSION='4.0-gog28740' ARCHIVE_BASE_FR_0_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(french)_(28740).exe' ARCHIVE_BASE_FR_0_MD5='be4b59590146299dbe77bda7a4ea4178' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(french)_(28740)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='88b71e0fd44e5be1ad6791e74120c61c' ARCHIVE_BASE_FR_0_SIZE='1100000' ARCHIVE_BASE_FR_0_VERSION='4.0-gog28740' ARCHIVE_BASE_RU_0_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(russian)_(28740).exe' ARCHIVE_BASE_RU_0_MD5='33018e8355f59b9e532d7429e1aaeeae' ARCHIVE_BASE_RU_0_TYPE='innosetup' ARCHIVE_BASE_RU_0_PART1_NAME='setup_heroes_of_might_and_magic_3_complete_4.0_(russian)_(28740)-1.bin' ARCHIVE_BASE_RU_0_PART1_MD5='5d409ee2e2b3ec32fa9838ca1d601e02' ARCHIVE_BASE_RU_0_SIZE='1100000' ARCHIVE_BASE_RU_0_VERSION='4.0-gog28740' ARCHIVE_BASE_OLDTEMPLATE_EN_1_NAME='setup_homm_3_complete_4.0_(10665).exe' ARCHIVE_BASE_OLDTEMPLATE_EN_1_MD5='0c97452fc4da4e8811173f21df873fab' ARCHIVE_BASE_OLDTEMPLATE_EN_1_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_EN_1_SIZE='1100000' ARCHIVE_BASE_OLDTEMPLATE_EN_1_VERSION='4.0-gog10665' ARCHIVE_BASE_OLDTEMPLATE_FR_1_NAME='setup_homm_3_complete_french_4.0_(10665).exe' ARCHIVE_BASE_OLDTEMPLATE_FR_1_MD5='6c3ee33a531bd0604679581ab267d8a3' ARCHIVE_BASE_OLDTEMPLATE_FR_1_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_FR_1_SIZE='1100000' ARCHIVE_BASE_OLDTEMPLATE_FR_1_VERSION='4.0-gog10665' ARCHIVE_BASE_OLDTEMPLATE_EN_0_NAME='setup_homm3_complete_2.0.0.16.exe' ARCHIVE_BASE_OLDTEMPLATE_EN_0_MD5='263d58f8cc026dd861e9bbcadecba318' ARCHIVE_BASE_OLDTEMPLATE_EN_0_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_EN_0_PART1_NAME='patch_heroes_of_might_and_magic_3_complete_2.0.1.17.exe' ARCHIVE_BASE_OLDTEMPLATE_EN_0_PART1_MD5='815b9c097cd57d0e269beb4cc718dad3' ARCHIVE_BASE_OLDTEMPLATE_EN_0_SIZE='1100000' ARCHIVE_BASE_OLDTEMPLATE_EN_0_VERSION='3.0-gog2.0.1.17' ARCHIVE_BASE_OLDTEMPLATE_FR_0_NAME='setup_homm3_complete_french_2.1.0.20.exe' ARCHIVE_BASE_OLDTEMPLATE_FR_0_MD5='ca8e4726acd7b5bc13c782d59c5a459b' ARCHIVE_BASE_OLDTEMPLATE_FR_0_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_FR_0_SIZE='1100000' ARCHIVE_BASE_OLDTEMPLATE_FR_0_VERSION='3.0-gog2.1.0.20' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_OLDTEMPLATE='app' CONTENT_GAME_BIN_WINE_FILES=' mp3dec.asi binkw32.dll ifc20.dll ifc21.dll mcp.dll mss32.dll smackw32.dll h3blade.exe h3bmaped.exe h3camped.exe h3ccmped.exe h3maped.exe heroes3.exe' CONTENT_GAME0_BIN_WINE_PATH_OLDTEMPLATE_EN_0='tmp' CONTENT_GAME0_BIN_WINE_FILES_OLDTEMPLATE_EN_0=' heroes3.exe' CONTENT_GAME_DATA_FILES=' data maps mp3' CONTENT_DOC_DATA_FILES=' eula *.cnt *.hlp *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' config games maps random_maps' USER_PERSISTENT_FILES=' data/*.lod' APP_MAIN_TYPE_BIN_VCMI='custom' APP_MAIN_EXE_BIN_WINE='heroes3.exe' APP_MAIN_ICON='heroes3.exe' APP_EDITOR_MAP_ID="${GAME_ID}-map-editor" APP_EDITOR_MAP_EXE='h3maped.exe' APP_EDITOR_MAP_NAME="$GAME_NAME - Map editor" APP_EDITOR_CAMPAIGN_ID="${GAME_ID}-campaign-editor" APP_EDITOR_CAMPAIGN_EXE='h3ccmped.exe' APP_EDITOR_CAMPAIGN_NAME="$GAME_NAME - Campaign editor" PACKAGES_LIST=' PKG_BIN_VCMI PKG_BIN_WINE PKG_DATA' PKG_BIN_ID="$GAME_ID" PKG_BIN_VCMI_ID="${PKG_BIN_ID}-vcmi" PKG_BIN_VCMI_PROVIDES=" $PKG_BIN_ID" PKG_BIN_VCMI_DEPENDENCIES_SIBLINGS=' PKG_DATA_BASE' PKG_BIN_VCMI_DEPENDENCIES_COMMANDS=' vcmilauncher' PKG_BIN_WINE_ID="${PKG_BIN_ID}-wine" PKG_BIN_WINE_ID_EN="${PKG_BIN_WINE_ID}-en" PKG_BIN_WINE_ID_FR="${PKG_BIN_WINE_ID}-fr" PKG_BIN_WINE_ID_RU="${PKG_BIN_WINE_ID}-ru" PKG_BIN_WINE_ID_OLDTEMPLATE_EN="$PKG_BIN_WINE_ID_EN" PKG_BIN_WINE_ID_OLDTEMPLATE_FR="$PKG_BIN_WINE_ID_FR" PKG_BIN_WINE_PROVIDES=" $PKG_BIN_ID" PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_BASE_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_BASE_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_BASE_ID}-fr" PKG_DATA_ID_RU="${PKG_DATA_BASE_ID}-ru" PKG_DATA_ID_OLDTEMPLATE_EN="$PKG_DATA_ID_EN" PKG_DATA_ID_OLDTEMPLATE_FR="$PKG_DATA_ID_FR" PKG_DATA_PROVIDES=" $PKG_DATA_BASE_ID" PKG_DATA_DESCRIPTION='data' # Allow to skip intro video on first launch + set default settings registry_dump_settings_file='registry-dumps/default-settings.reg' registry_dump_settings_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\New World Computing\Heroes of Might and Magic® III\1.0] "Animate SpellBook"=dword:00000001 "Autosave"=dword:00000001 "Bink Video"=dword:00000001 "Blackout Computer"=dword:00000000 "Combat Army Info Level"=dword:00000000 "Combat Auto Creatures"=dword:00000001 "Combat Auto Spells"=dword:00000001 "Combat Ballista"=dword:00000001 "Combat Catapult"=dword:00000001 "Combat First Aid Tent"=dword:00000001 "Combat Shade Level"=dword:00000000 "Combat Speed"=dword:00000000 "Computer Walk Speed"=dword:00000003 "First Time"=dword:00000000 "Last Music Volume"=dword:00000005 "Last Sound Volume"=dword:00000005 "Main Game Full Screen"=dword:00000001 "Main Game Show Menu"=dword:00000001 "Main Game X"=dword:0000000a "Main Game Y"=dword:0000000a "Move Reminder"=dword:00000001 "Music Volume"=dword:00000005 "Network Default Name"="Player" "Quick Combat"=dword:00000000 "Show Combat Grid"=dword:00000000 "Show Combat Mouse Hex"=dword:00000000 "Show Intro"=dword:00000001 "Show Route"=dword:00000001 "Sound Volume"=dword:00000005 "Test Blit"=dword:00000000 "Test Decomp"=dword:00000000 "Test Read"=dword:00000000 "Town Outlines"=dword:00000001 "Video Subtitles"=dword:00000001 "Walk Speed"=dword:00000002 "Window Scroll Speed"=dword:00000001' CONTENT_GAME1_BIN_WINE_FILES=" $registry_dump_settings_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_settings_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # 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 ## For old gog.com English archive, get the patched .exe case "$(current_archive)" in ('ARCHIVE_OLDTEMPLATE_EN_0') archive_extraction 'SOURCE_ARCHIVE_PART1' ;; esac ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Allow to skip intro video on first launch + set default settings mkdir --parents "$(dirname "$registry_dump_settings_file")" printf '%s' "$registry_dump_settings_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_settings_file" # Fix the ability to run the game through WINE, by reverting a GOG patch # This replaces a call to "xdd.dll" with the original call to "ddraw.dll". # cf. https://www.gog.com/forum/heroes_of_might_and_magic_series/if_you_cant_get_homm3_to_work_after_the_latest_update_on_linux_with_wine_read_this/post1 case "$(current_archive)" in ('ARCHIVE_BASE_'??'_1') sed --in-place 's/xdd\.dll../ddraw.dll/' 'heroes3.exe' ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN_WINE' custom_launcher() { launcher_headers cat <<- EOF GAME_PATH="$(path_game_data)" EOF cat <<- 'EOF' VCMI_DATA="${XDG_DATA_HOME:="${HOME}/.local/share"}/vcmi" for directory in data maps mp3; do if [ ! -e "${VCMI_DATA}/${directory}" ]; then mkdir --parents "$VCMI_DATA" cp --recursive --remove-destination --symbolic-link "${GAME_PATH}/${directory}" "$VCMI_DATA" fi done vcmilauncher exit 0 EOF } launchers_generation 'PKG_BIN_VCMI' # Build packages packages_generation printf '\n' printf 'VCMI:' print_instructions 'PKG_DATA' 'PKG_BIN_VCMI' printf 'WINE:' print_instructions 'PKG_DATA' 'PKG_BIN_WINE' # Clean up working_directory_cleanup exit 0 games/play-hive-time.sh0000755000000000000000000000541114471751340014050 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Hive Time # send your bug reports to bugs@dotslashplay.it ### script_version=20241215.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='hive-time' GAME_NAME='Hive Time' ARCHIVE_BASE_1_NAME='hive-time-linux-v1.2.zip' ARCHIVE_BASE_1_MD5='e6766ce08338257a4207ef0ee306f63b' ARCHIVE_BASE_1_SIZE='202987' ARCHIVE_BASE_1_VERSION='1.2-itch' ARCHIVE_BASE_1_URL='https://cheeseness.itch.io/hive-time' ARCHIVE_BASE_0_NAME='hive-time-linux-v1.1.zip' ARCHIVE_BASE_0_MD5='5d63b490982d96620b0bbb7b6522be56' ARCHIVE_BASE_0_SIZE='180000' ARCHIVE_BASE_0_VERSION='1.1-itch' CONTENT_PATH_DEFAULT='hive-time_linux_v1.2' CONTENT_PATH_DEFAULT_0='.' CONTENT_GAME_BIN_FILES=' hive-time_linux_v1.2.x86_64' CONTENT_GAME_BIN_FILES_0=' hive-time_linux_v1.1.x86_64' ## TODO: Move the shipped fonts to system paths ## This would require support for OpenType fonts in addition to TrueType ones. CONTENT_GAME_DATA_FILES=' fonts json' CONTENT_GAME0_DATA_FILES=' hive-time_linux_v1.2.pck' CONTENT_GAME0_DATA_FILES_0=' hive-time_linux_v1.1.pck' ## TODO: Check if we can replace the shipped binary with system-provided Godot APP_MAIN_EXE='hive-time_linux_v1.2.x86_64' APP_MAIN_EXE_0='hive-time_linux_v1.1.x86_64' 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 libGL.so.1 libm.so.6 libpthread.so.0 libX11.so.6 libXcursor.so.1 libXext.so.6 libXinerama.so.1 libXi.so.6 libXrandr.so.2 libXrender.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_0=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 libpulse.so.0 libX11.so.6 libXcursor.so.1 libXinerama.so.1 libXi.so.6 libXrandr.so.2 libXrender.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_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-homeseek.sh0000755000000000000000000000411214471751340013756 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Homeseek # send your bug reports to bugs@dotslashplay.it ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='homeseek' GAME_NAME='Homeseek' ARCHIVE_BASE_0_NAME='setup_homeseek_1.0.9_(71375).exe' ARCHIVE_BASE_0_MD5='253a29f9d133ce2980797c3b4ec5af65' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_homeseek_1.0.9_(71375)-1.bin' ARCHIVE_BASE_0_PART1_MD5='d9fd40bcd7623d8ae512ed898bd190ab' ARCHIVE_BASE_0_PART2_NAME='setup_homeseek_1.0.9_(71375)-2.bin' ARCHIVE_BASE_0_PART2_MD5='b8bc0abf22d569a5262b7d45e9645f47' ARCHIVE_BASE_0_SIZE='8641921' ARCHIVE_BASE_0_VERSION='1.0.9-gog71375' ARCHIVE_BASE_0_URL='https://www.gog.com/game/homeseek' UNITY3D_NAME='homeseek' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Traptics/Homeseek' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Traptics\Homeseek' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' # 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-impossible-creatures.sh0000755000000000000000000000776414471751340016337 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Impossible Creatures # send your bug reports to bugs@dotslashplay.it ### script_version=20250520.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='impossible-creatures' GAME_NAME='Impossible Creatures' ARCHIVE_BASE_EN_0_NAME='setup_impossible_creatures_2.2.0.5.exe' ARCHIVE_BASE_EN_0_MD5='1b7223749a9f1fef2aac8213db2023da' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1400000' ARCHIVE_BASE_EN_0_VERSION='1.1.3-gog2.2.0.5' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/impossible_creatures' ARCHIVE_BASE_FR_0_NAME='setup_impossible_creatures_french_2.2.0.5.exe' ARCHIVE_BASE_FR_0_MD5='ff7366c991de12339c0063817b2194da' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='1500000' ARCHIVE_BASE_FR_0_VERSION='1.1.3-gog2.2.0.5' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/impossible_creatures' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' drivers rdnplugins rdntools pipeline.ini *.asi *.dll *.exe *.flt *.m3d' CONTENT_GAME_L10N_FILES=' locale movies ic.ini' CONTENT_GAME_DATA_FILES=' data datasrc ic insect rankedgaming rdnmod sdk ebusetup.sem ic_stats.ico *.module *.sga' CONTENT_DOC_DATA_FILES=' news.txt' CONTENT_DOC0_DATA_RELATIVE_PATH='docs' CONTENT_DOC0_DATA_FILES=' license ic_mission_editor_documentation.doc ic animal guide.pdf ic bonus animal guide.pdf ic control.rtf insect invasion patch readme.rtf readme.txt' CONTENT_DOC1_DATA_RELATIVE_PATH='documents' CONTENT_DOC1_DATA_FILES=' *.doc' ## Work around annoyingly long loading times. (WINE 10.0) ## cf. https://www.protondb.com/app/324680#oFK_xKHmyM WINE_DLLOVERRIDES_DEFAULT='winemenubuilder.exe,mscoree,mshtml=' WINE_DLLOVERRIDES_DEFAULT="${WINE_DLLOVERRIDES_DEFAULT};msvcp70,msvcr70=n" APP_MAIN_EXE='ic.exe' APP_EDIT_ID="${GAME_ID}-mission-editor" APP_EDIT_NAME="$GAME_NAME - Mission editor" APP_EDIT_EXE='missioneditor.exe' APP_CONFIG_ID="${GAME_ID}-configuration" APP_CONFIG_NAME="$GAME_NAME - Configuration" APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='icconfig.exe' USER_PERSISTENT_DIRECTORIES=' playback profiles screenshots stats' USER_PERSISTENT_FILES=' *.ini' 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Prevent the inclusion of some libraries ## Due to the amount of libraries to include, ## it would not be practical to set a full list ## excluding only the following ones. rm \ 'gameuxinstallhelper.dll' \ 'goggame-1448280463.dll' \ 'steam_api.dll' ) # Include game data content_inclusion_icons 'PKG_DATA' ## Localized files are included first, as they include some DLL libraries ## that would be gobbled up by the binaries package. content_inclusion 'GAME_L10N' 'PKG_L10N' "$(path_game_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-infinium-strike.sh0000755000000000000000000000462014471751340015277 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Infinium Strike # send your bug reports to bugs@dotslashplay.it ### script_version=20250205.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='infinium-strike' GAME_NAME='Infinium Strike' ARCHIVE_BASE_1_NAME='gog_infinium_strike_2.1.0.3.sh' ARCHIVE_BASE_1_MD5='c19f2032aae3011dc38cc85e7153fb44' ARCHIVE_BASE_1_SIZE='2500000' ARCHIVE_BASE_1_VERSION='1.0.5-gog2.1.0.3' ARCHIVE_BASE_1_URL='https://www.gog.com/game/infinium_strike' ARCHIVE_BASE_0_NAME='gog_infinium_strike_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='57725aad8ba419d80788412f8f33f030' ARCHIVE_BASE_0_SIZE='2500000' ARCHIVE_BASE_0_VERSION='1.0.5-gog2.1.0.2' UNITY3D_NAME='InfiniumStrike' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' InfiniumStrikeReadMe.txt' 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Drop unused 64-bit libraries rm --recursive \ "$(unity3d_name)_Data/Mono/x86_64" \ "$(unity3d_name)_Data/Plugins/x86_64" ) # 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-into-the-breach.sh0000755000000000000000000001035614471751340015136 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # Into the Breach # send your bug reports to bugs@dotslashplay.it ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='into-the-breach' GAME_NAME='Into the Breach' ARCHIVE_BASE_HUMBLE_4_NAME='IntoTheBreach_1_2_76_Linux.zip' ARCHIVE_BASE_HUMBLE_4_MD5='79f506d656c088c67dbf9286936e0e97' ARCHIVE_BASE_HUMBLE_4_SIZE='540000' ARCHIVE_BASE_HUMBLE_4_VERSION='1.2.76-humble.2022.08.02' ARCHIVE_BASE_HUMBLE_4_URL='https://subsetgames.com/itb.html#HumbleWidgetBox5' ARCHIVE_BASE_HUMBLE_3_NAME='IntoTheBreach_1_2_75_Linux.zip' ARCHIVE_BASE_HUMBLE_3_MD5='b9912dc0b9bdd2013704b918ce438592' ARCHIVE_BASE_HUMBLE_3_SIZE='540000' ARCHIVE_BASE_HUMBLE_3_VERSION='1.2.75-humble.2022.07.28' ARCHIVE_BASE_HUMBLE_2_NAME='IntoTheBreach_1_2_71_Linux.zip' ARCHIVE_BASE_HUMBLE_2_MD5='afa9f960d757ec72c537f306a2065d4f' ARCHIVE_BASE_HUMBLE_2_SIZE='540000' ARCHIVE_BASE_HUMBLE_2_VERSION='1.2.71-humble.2022.07.19' ARCHIVE_BASE_HUMBLE_1_NAME='Into_the_Breach_Linux.1.2.23.zip' ARCHIVE_BASE_HUMBLE_1_MD5='35cbc7ad39661ac97f41760f77f71fab' ARCHIVE_BASE_HUMBLE_1_SIZE='320000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.2.23-humble.2020.05.15' ARCHIVE_BASE_HUMBLE_0_NAME='Into_the_Breach_Linux.1.2.20.zip' ARCHIVE_BASE_HUMBLE_0_MD5='5a8b33e1ccbc2953c99aacf0ad38ca37' ARCHIVE_BASE_HUMBLE_0_SIZE='320000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.20-humble.2020.04.20' ARCHIVE_BASE_GOG_1_NAME='into_the_breach_1_2_75_57446.sh' ARCHIVE_BASE_GOG_1_MD5='4cfb207c03f337e6f04faa1fa5bd5aea' ARCHIVE_BASE_GOG_1_SIZE='540000' ARCHIVE_BASE_GOG_1_VERSION='1.2.75-gog57446' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/into_the_breach' ARCHIVE_BASE_GOG_0_NAME='into_the_breach_1_2_24_38624.sh' ARCHIVE_BASE_GOG_0_MD5='dbc8142ec1da82284b7959a48b50d512' ARCHIVE_BASE_GOG_0_SIZE='320000' ARCHIVE_BASE_GOG_0_VERSION='1.2.24-gog38624' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='into-the-breach_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='ce72ae946c4708feabb324493dc197b1' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/into-the-breach/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_HUMBLE_1='Into the Breach' CONTENT_PATH_DEFAULT_HUMBLE_0='Into the Breach Linux' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='linux_x64' ## Using the system-provided libSDL2-2.0.so.0 instead of the shipped one triggers a segfault on a Debian Trixie/Sid. CONTENT_LIBS_BIN_FILES=' libfmod.so.10 libfmodstudio.so.10 libSDL2-2.0.so.0' CONTENT_GAME_BIN_FILES=' Breach' CONTENT_GAME_DATA_FILES=' maps resources scripts shadersOGL' CONTENT_DOC_DATA_FILES=' licenses' APP_MAIN_EXE='Breach' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' 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 libpthread.so.0 librt.so.1 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 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-invisible-inc-expansions.sh0000755000000000000000000000352714471751340017107 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 berru # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Invisible Inc expansions: # - Contingency Plan # send your bug reports to bugs@dotslashplay.it ### script_version=20230414.1 GAME_ID='invisible-inc' GAME_NAME='Invisible Inc.' EXPANSION_ID_CONTINGENCY='contingency-plan' EXPANSION_NAME_CONTINGENCY='Contigency Plan' ARCHIVE_BASE_0='invisible_inc_contingency_plan_dlc_en_n_a_15873.sh' ARCHIVE_BASE_0_MD5='adfe52f0e0c3400c3026fca66acf5acb' ARCHIVE_BASE_0_SIZE='2700' ARCHIVE_BASE_0_VERSION='1.0-gog15873' ARCHIVE_BASE_0_URL='https://www.gog.com/game/invisible_inc_contingency_plan' CONTENT_GAME_MAIN_PATH='data/noarch/game' CONTENT_GAME_MAIN_FILES=' *' PKG_MAIN_ID_CONTINGENCY="${GAME_ID}-${EXPANSION_ID_CONTINGENCY}" PKG_MAIN_DESCRIPTION_CONTINGENCY="$EXPANSION_NAME_CONTINGENCY" PKG_MAIN_DEPS="$GAME_ID" # Load common functions target_version='2.23' 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" # Extract game data archive_extraction 'SOURCE_ARCHIVE' # Include game data content_inclusion_default # Delete temporary files rm --recursive "${PLAYIT_WORKDIR}/gamedata" # Build packages write_metadata build_pkg # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-invisible-inc.sh0000755000000000000000000000637414471751340014725 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Invisible Inc. # send your bug reports to bugs@dotslashplay.it ### script_version=20240504.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='invisible-inc' GAME_NAME='Invisible Inc.' ARCHIVE_BASE_2_NAME='invisible_inc_en_281021_22858.sh' ARCHIVE_BASE_2_MD5='bfb1493931172a9f71c95a6861af97ee' ARCHIVE_BASE_2_SIZE='1200000' ARCHIVE_BASE_2_VERSION='2021.10.28-gog22858' ARCHIVE_BASE_2_URL='https://www.gog.com/game/invisible_inc' ARCHIVE_BASE_1_NAME='invisible_inc_en_8_07_2017_15873.sh' ARCHIVE_BASE_1_MD5='b3acb8f72cf01f71b0ddcb4355543a16' ARCHIVE_BASE_1_SIZE='1200000' ARCHIVE_BASE_1_VERSION='2017.07.08-gog15873' ARCHIVE_BASE_0_NAME='gog_invisible_inc_2.6.0.11.sh' ARCHIVE_BASE_0_MD5='97e6efdc9237ec17deb02b5cf5185cf5' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='2016.04.13-gog2.6.0.11' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='invisible-inc_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/resources/invisible-inc/' ARCHIVE_OPTIONAL_ICONS_MD5='37a62fed1dc4185e95db3e82e6695c1d' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 64x64 128x128 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN64_PATH='data/noarch/game/lib64' CONTENT_LIBS_BIN64_FILES=' libfmodevent64-4.44.47.so libfmodevent64.so libfmodex64-4.44.47.so libfmodex64.so' CONTENT_LIBS_BIN32_PATH='data/noarch/game/lib32' CONTENT_LIBS_BIN32_FILES=' libfmodevent-4.44.47.so libfmodevent.so libfmodex-4.44.47.so libfmodex.so' CONTENT_GAME_BIN64_FILES=' InvisibleInc64' CONTENT_GAME_BIN32_FILES=' InvisibleInc32' CONTENT_GAME_DATA_FILES=' *.kwad *.lua hashes.dat scripts.zip' CONTENT_DOC_DATA_FILES=' LICENSE' APP_MAIN_EXE_BIN64='InvisibleInc64' APP_MAIN_EXE_BIN32='InvisibleInc32' APP_MAIN_ICON='../support/icon.png' 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_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-iratus.sh0000755000000000000000000000462214471751340013473 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Iratus: Lord of the Dead # send your bug reports to bugs@dotslashplay.it ### script_version=20250210.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='iratus' GAME_NAME='Iratus: Lord of the Dead' ## The "language-specific" installers actually include all languages. ## There is no need to build distinct packages for each one. ARCHIVE_BASE_EN_0_NAME='iratus_lord_of_the_dead_linux_181_13_00_48040.sh' ARCHIVE_BASE_EN_0_MD5='e238fdf4277942c22805409a4d347635' ARCHIVE_BASE_EN_0_SIZE='3351586' ARCHIVE_BASE_EN_0_VERSION='181.03.00-gog48040' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/iratus_lord_of_the_dead' ARCHIVE_BASE_FR_0_NAME='iratus_lord_of_the_dead_french_linux_181_03_00_45013.sh' ARCHIVE_BASE_FR_0_MD5='9dd7899c4f5254bb555219530a32dc95' ARCHIVE_BASE_FR_0_SIZE='3331947' ARCHIVE_BASE_FR_0_VERSION='181.03.00-gog48040' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/iratus_lord_of_the_dead' UNITY3D_NAME='Iratus' 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 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-iris-and-the-giant.sh0000755000000000000000000000426414471751340015552 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Iris and the Giant # send your bug reports to bugs@dotslashplay.it ### script_version=20250206.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='iris-and-the-giant' GAME_NAME='Iris and the Giant' ARCHIVE_BASE_0_NAME='iris_and_the_giant_1_1_1_2_37953.sh' ARCHIVE_BASE_0_MD5='da4767fb2bdcc4d4146958b449de06b4' ARCHIVE_BASE_0_SIZE='530000' ARCHIVE_BASE_0_VERSION='1.1.1.2-gog37953' ARCHIVE_BASE_0_URL='https://www.gog.com/game/iris_and_the_giant_deckbuilding_roguelike' UNITY3D_NAME='Iris and the Giant' 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=' 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 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 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-iron-harvest.sh0000755000000000000000000001246614471751340014612 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Iron Harvest # send your bug reports to bugs@dotslashplay.it ### script_version=20241104.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='iron-harvest' GAME_NAME='Iron Harvest' ARCHIVE_BASE_1_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453).exe' ARCHIVE_BASE_1_MD5='1f13da4dc9ce6916075c4f3287feba5a' ARCHIVE_BASE_1_EXTRACTOR='innoextract' ## Do not convert file paths to lower case. ARCHIVE_BASE_1_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_1_PART1_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-1.bin' ARCHIVE_BASE_1_PART1_MD5='39064f2c73fc1289d6963d60ad3ed20f' ARCHIVE_BASE_1_PART2_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-2.bin' ARCHIVE_BASE_1_PART2_MD5='6c7307a3c9fd9762e277efde3f38c408' ARCHIVE_BASE_1_PART3_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-3.bin' ARCHIVE_BASE_1_PART3_MD5='c8a1219731b4d51bf294937691883bbd' ARCHIVE_BASE_1_PART4_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-4.bin' ARCHIVE_BASE_1_PART4_MD5='6501face360636344b93183c072b9a10' ARCHIVE_BASE_1_PART5_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-5.bin' ARCHIVE_BASE_1_PART5_MD5='ead1c35efe7a6883a4204550650f2b0f' ARCHIVE_BASE_1_SIZE='30858160' ARCHIVE_BASE_1_VERSION='1.4.8.2986-gog58453' ARCHIVE_BASE_1_URL='https://www.gog.com/game/iron_harvest' ARCHIVE_BASE_0_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091).exe' ARCHIVE_BASE_0_MD5='d89a5f6b4a8c89769af3eaadc75953f2' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert file paths to lower case. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-1.bin' ARCHIVE_BASE_0_PART1_MD5='5d90f09c6b65889db5754d97cbdfebf3' ARCHIVE_BASE_0_PART2_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-2.bin' ARCHIVE_BASE_0_PART2_MD5='80be1a755688797cc7a7a5b099add78a' ARCHIVE_BASE_0_PART3_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-3.bin' ARCHIVE_BASE_0_PART3_MD5='81e7c85bc9017e8ae157bdea2140d852' ARCHIVE_BASE_0_PART4_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-4.bin' ARCHIVE_BASE_0_PART4_MD5='3279373222b0dfdc37bd4d882d3bcc63' ARCHIVE_BASE_0_PART5_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-5.bin' ARCHIVE_BASE_0_PART5_MD5='96b6db50d7167699257c1ab6428c8711' ARCHIVE_BASE_0_SIZE='31000000' ARCHIVE_BASE_0_VERSION='1.4.8.2983-gog58091' UNITY3D_NAME='IronHarvest' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=" config release/MonoBleedingEdge release/UnityPlayer.dll release/${UNITY3D_NAME}.exe release/${UNITY3D_NAME}_Data/Plugins" CONTENT_GAME_DATA_SCENES_1_FILES=' gamedata/scenes/scene_sp_*' CONTENT_GAME_DATA_SCENES_2_FILES=' gamedata/scenes' CONTENT_GAME_DATA_CINEMATICS_FILES=" release/${UNITY3D_NAME}_Data/StreamingAssets/Cinematics" CONTENT_GAME_DATA_SETTING_FILES=' gamedata/setting' CONTENT_GAME_DATA_UI_FILES=' gamedata/ui' CONTENT_GAME_DATA_FILES=" battleplan content gamedata lang logic version release/${UNITY3D_NAME}_Data" CONTENT_DOC_DATA_FILES=' licenses' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/GOG.com/Galaxy/Applications/49637353028337449' APP_MAIN_EXE="release/${UNITY3D_NAME}.exe" APP_MAIN_ICON="$APP_MAIN_EXE" PACKAGES_LIST=' PKG_BIN PKG_DATA_SCENES_1 PKG_DATA_SCENES_2 PKG_DATA_CINEMATICS PKG_DATA_SETTING PKG_DATA_UI PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SCENES_1 PKG_DATA_SCENES_2 PKG_DATA_CINEMATICS PKG_DATA_SETTING PKG_DATA_UI' PKG_DATA_SCENES_ID="${PKG_DATA_ID}-scenes" PKG_DATA_SCENES_1_ID="${PKG_DATA_SCENES_ID}-1" PKG_DATA_SCENES_2_ID="${PKG_DATA_SCENES_ID}-2" PKG_DATA_SCENES_DESCRIPTION="$PKG_DATA_DESCRIPTION - scenes" PKG_DATA_SCENES_1_DESCRIPTION="$PKG_DATA_SCENES_DESCRIPTION - 1" PKG_DATA_SCENES_2_DESCRIPTION="$PKG_DATA_SCENES_DESCRIPTION - 2" PKG_DATA_CINEMATICS_ID="${PKG_DATA_ID}-cinematics" PKG_DATA_CINEMATICS_DESCRIPTION="$PKG_DATA_DESCRIPTION - cinematics" PKG_DATA_SETTING_ID="${PKG_DATA_ID}-setting" PKG_DATA_SETTING_DESCRIPTION="$PKG_DATA_DESCRIPTION - setting" PKG_DATA_UI_ID="${PKG_DATA_ID}-ui" PKG_DATA_UI_DESCRIPTION="$PKG_DATA_DESCRIPTION - ui" # 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 package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ironclad-tactics.sh0000755000000000000000000000500314471751340015401 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Ironclad Tactics # send your bug reports to bugs@dotslashplay.it ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='ironclad-tactics' GAME_NAME='Ironclad Tactics' ARCHIVE_BASE_0_NAME='gog_ironclad_tactics_deluxe_edition_2.0.0.4.sh' ARCHIVE_BASE_0_MD5='a0a0e2195364e57bc39e180d442e1f6b' ARCHIVE_BASE_0_SIZE='953272' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ironclad_tactics_deluxe_edition' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libRotor.so' ## libRotor.so is linked against libsteam_api.so, ## so we have to include it too. CONTENT_LIBS0_BIN_FILES=' libsteam_api.so' CONTENT_GAME_BIN_FILES=' mono' CONTENT_GAME_DATA_FILES=' Comic Fonts Music Sounds Sprites *.dll *.dll.config *.exe *.exe.config *.glsl' CONTENT_DOC_DATA_FILES=' LICENSE.txt' ## The shipped mono build is used instead of the system-provided one ## to avoid a crash when trying to display the game introduction. APP_MAIN_EXE='mono' APP_MAIN_OPTIONS='Game.exe' APP_MAIN_ICON='Game.exe' APP_MAIN_PRERUN=' # Set environment for shipped mono binary export MONO_PATH=.' 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 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_mixer-2.0.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" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Apply common Mono tweaks APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-ixion.sh0000755000000000000000000000553014471751340013311 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Ixion # send your bug reports to bugs@dotslashplay.it ### script_version=20250208.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ixion' GAME_NAME='Ixion' ARCHIVE_BASE_0_NAME='setup_ixion_1.0.6.5_(64bit)_(69670).exe' ARCHIVE_BASE_0_MD5='753b96e6b35d4adea73ca842f2e8f0e7' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_ixion_1.0.6.5_(64bit)_(69670)-1.bin' ARCHIVE_BASE_0_PART1_MD5='54d9f45d4ed211a14aea70797d1400c1' ARCHIVE_BASE_0_PART2_NAME='setup_ixion_1.0.6.5_(64bit)_(69670)-2.bin' ARCHIVE_BASE_0_PART2_MD5='c4b119088ea2190b1d99e5efd38bd7ac' ARCHIVE_BASE_0_SIZE='12480607' ARCHIVE_BASE_0_VERSION='1.0.6.5-gog69670' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ixion' UNITY3D_NAME='ixion' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_SHAREDASSETS1_FILES=" ${UNITY3D_NAME}_data/sharedassets?.*" CONTENT_GAME_DATA_SHAREDASSETS2_FILES=" ${UNITY3D_NAME}_data/sharedassets??.*" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/BulwarkStudios/Ixion' ## The game menu background fails to render with wined3d. WINE_DIRECT3D_RENDERER='dxvk' PACKAGES_LIST=' PKG_BIN PKG_DATA_SHAREDASSETS1 PKG_DATA_SHAREDASSETS2 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SHAREDASSETS1 PKG_DATA_SHAREDASSETS2' PKG_DATA_SHAREDASSETS_ID="${PKG_DATA_ID}-sharedassets" PKG_DATA_SHAREDASSETS1_ID="${PKG_DATA_SHAREDASSETS_ID}-1" PKG_DATA_SHAREDASSETS2_ID="${PKG_DATA_SHAREDASSETS_ID}-2" PKG_DATA_SHAREDASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - shared assets" PKG_DATA_SHAREDASSETS1_DESCRIPTION="$PKG_DATA_SHAREDASSETS_DESCRIPTION - 1" PKG_DATA_SHAREDASSETS2_DESCRIPTION="$PKG_DATA_SHAREDASSETS_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 # 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-jars.sh0000755000000000000000000000355414471751340013126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Jars # send your bug reports to bugs@dotslashplay.it ### script_version=20250225.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='jars' GAME_NAME='Jars' ARCHIVE_BASE_0_NAME='jars_1_0_1018_50865.sh' ARCHIVE_BASE_0_MD5='436d039e8cecdbddc1942f642813a652' ARCHIVE_BASE_0_SIZE='620000' ARCHIVE_BASE_0_VERSION='1.0.1018-gog50865' ARCHIVE_BASE_0_URL='https://www.gog.com/game/jars' UNITY3D_NAME='Jars' 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' 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)" # Drop Steam libraries rm --recursive "$(unity3d_name)_Data/Plugins" ) # 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-kapital-sparks-of-revolution.sh0000755000000000000000000000402614471751340017716 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Kapital: Sparks of Revolution # send your bug reports to bugs@dotslashplay.it ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='kapital-sparks-of-revolution' GAME_NAME='Kapital: Sparks of Revolution' ARCHIVE_BASE_0_NAME='kapital_sparks_of_revolution_1_06_56968.sh' ARCHIVE_BASE_0_MD5='2ee255c7cbba173270dbead455c07099' ARCHIVE_BASE_0_SIZE='636808' ARCHIVE_BASE_0_VERSION='1.06-gog56968' ARCHIVE_BASE_0_URL='https://www.gog.com/game/kapital_sparks_of_revolution' UNITY3D_NAME='Kapital' 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' 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)" ## Prevent the inclusion of the shipped Steam library. rm --recursive "$(unity3d_name)_Data/Plugins" ) # 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-kings-bounty-the-legend.sh0000755000000000000000000001514114471751340016625 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # King's Bounty: The Legend # send your bug reports to bugs@dotslashplay.it ### script_version=20250205.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='kings-bounty-the-legend' GAME_NAME='King’s Bounty: The Legend' ARCHIVE_BASE_0_NAME='setup_kings_bounty_the_legend_1.7.35.398_(39945).exe' ARCHIVE_BASE_0_MD5='1357aae6054406ce9d3d77b0601b045a' ## "--collisions rename-all" is used to extract all localized 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_kings_bounty_the_legend_1.7.35.398_(39945)-1.bin' ARCHIVE_BASE_0_PART1_MD5='4647d2dd1486833c135393e2ca1c0d2e' ARCHIVE_BASE_0_SIZE='6500991' ARCHIVE_BASE_0_VERSION='1.7.35.398-gog39945' ARCHIVE_BASE_0_URL='https://www.gog.com/game/kings_bounty_the_legend' ARCHIVE_BASE_EN_0_NAME='setup_kings_bounty_the_legend_1.7_(15542).exe' ARCHIVE_BASE_EN_0_MD5='f7a9defe0fd96a7f8d6dff6ed7828242' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_kings_bounty_the_legend_1.7_(15542)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='04fb818107e4bfe7aeae449778e88dd9' ARCHIVE_BASE_EN_0_SIZE='6000000' ARCHIVE_BASE_EN_0_VERSION='1.7-gog15542' ARCHIVE_BASE_FR_0_NAME='setup_kings_bounty_the_legend_french_1.7_(15542).exe' ARCHIVE_BASE_FR_0_MD5='646fdfacadc498826be127fe6703f259' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_kings_bounty_the_legend_french_1.7_(15542)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='907882679fb7050e172994d36730454a' ARCHIVE_BASE_FR_0_SIZE='6000000' ARCHIVE_BASE_FR_0_VERSION='1.7-gog15542' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN='app' CONTENT_PATH_DEFAULT_FR='app' CONTENT_GAME_BIN_FILES=' binkw32.dll kbvistashellsupport.dll luaide.dll scilexer.dll kb.exe data/fonts.cfg data/default.ini data/game.ini' CONTENT_GAME_L10N_FILES=' data/app.ini data/loc_data.kfs sessions/base/loc_ses.kfs' CONTENT_GAME_L10N_EN_FILES=' data/app.ini@en-US data/loc_data.kfs@en-US sessions/base/loc_ses.kfs@en-US' CONTENT_GAME_L10N_FR_FILES=' data/app.ini@fr-FR data/loc_data.kfs@fr-FR sessions/base/loc_ses.kfs@fr-FR' CONTENT_GAME_DATA_FILES=' data sessions curver.txt' CONTENT_DOC_L10N_FILES=' readme.rtf manual.pdf' CONTENT_DOC_L10N_EN_FILES=' manual.pdf@en-US readme.rtf@en-US' CONTENT_DOC_L10N_FR_FILES=' manual.pdf@fr-FR' USER_PERSISTENT_FILES=' data/*.ini data/fonts.cfg' WINE_DIRECT3D_RENDERER='dxvk' APP_MAIN_EXE='kb.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PACKAGES_LIST_EN=' PKG_BIN PKG_L10N PKG_DATA' PACKAGES_LIST_FR=' 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_EN_ID="${PKG_L10N_BASE_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_BASE_ID}-fr" PKG_L10N_ID_EN="$PKG_L10N_EN_ID" PKG_L10N_ID_FR="$PKG_L10N_FR_ID" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_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_DESCRIPTION_EN="$PKG_L10N_EN_DESCRIPTION" PKG_L10N_DESCRIPTION_FR="$PKG_L10N_FR_DESCRIPTION" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # The "find" and "rename" commands are used to handle some localized files REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} find rename" # 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)" ## Delete unsupported localizations. case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*|'ARCHIVE_BASE_FR_'*) ## Old language-specific archives do not use localization suffixes. ;; (*) find . -name '*@??-*' ! -name '*@en-US' ! -name '*@fr-FR' -delete ;; esac ## Rename some localized files that do not differ between the supported localizations. case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*|'ARCHIVE_BASE_FR_'*) ## Old language-specific archives do not use localization suffixes. ;; (*) rename 's/\@en-US$//' \ 'data/fonts.cfg@en-US' \ 'data/video/1c_logo_eng.ogm@en-US' \ 'data/video/kbtl-intro-800x600-eng.ogm@en-US' \ 'kb.exe@en-US' ;; esac ## Delete some redundant files duplicated between the supported localizations. case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*|'ARCHIVE_BASE_FR_'*) ## Old language-specific archives do not use localization suffixes. ;; (*) rm \ 'data/fonts.cfg@fr-FR' \ 'data/video/1c_logo_eng.ogm@fr-FR' \ 'data/video/kbtl-intro-800x600-eng.ogm@fr-FR' \ 'kb.exe@fr-FR' ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Drop the localization suffix from some files. case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*|'ARCHIVE_BASE_FR_'*) ## Old language-specific archives do not use localization suffixes. ;; (*) find "$(package_path 'PKG_L10N_EN')$(path_game_data)" -name '*@en-US' -exec rename 's/\@en-US$//' {} + find "$(package_path 'PKG_L10N_FR')$(path_game_data)" -name '*@fr-FR' -exec rename 's/\@fr-FR$//' {} + find "$(package_path 'PKG_L10N_EN')$(path_documentation)" -name '*@en-US' -exec rename 's/\@en-US$//' {} + find "$(package_path 'PKG_L10N_FR')$(path_documentation)" -name '*@fr-FR' -exec rename 's/\@fr-FR$//' {} + ;; esac # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*|'ARCHIVE_BASE_FR_'*) print_instructions ;; (*) 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' 'PKG_L10N_EN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_FR' ;; esac # Clean up working_directory_cleanup exit 0 games/play-legend-of-keepers.sh0000755000000000000000000001237214471751340015461 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Legend of Keepers # send your bug reports to bugs@dotslashplay.it ### script_version=20250520.5 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='legend-of-keepers' GAME_NAME='Legend of Keepers: Career of a Dungeon Manager' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO='Legend of Keepers: Prologue' ## This Linux native build of the game fails to run correctly. ## It spams errors related to fmodstudio (for some reason it can’t find the library), ## and fails to progress further than the profile selection screen. ## Support for the Windows build is included as a workaround. ARCHIVE_BASE_LINUX_0_NAME='legend_of_keepers_career_of_a_dungeon_manager_1_1_0_2_57134.sh' ARCHIVE_BASE_LINUX_0_MD5='a1d7f09037caaa7212cfd8a61a992289' ARCHIVE_BASE_LINUX_0_SIZE='1113810' ARCHIVE_BASE_LINUX_0_VERSION='1.1.0.2-gog57134' ARCHIVE_BASE_LINUX_0_URL='https://www.gog.com/game/legend_of_keepers_career_of_a_dungeon_master' ARCHIVE_BASE_WINDOWS_0_NAME='setup_legend_of_keepers_career_of_a_dungeon_manager_1.1.0.3_(69681).exe' ARCHIVE_BASE_WINDOWS_0_MD5='f4f741dccc54018e4a5bc1118e54336b' ARCHIVE_BASE_WINDOWS_0_SIZE='1137440' ARCHIVE_BASE_WINDOWS_0_VERSION='1.1.0.3-gog69681' ARCHIVE_BASE_WINDOWS_0_URL='https://www.gog.com/game/legend_of_keepers_career_of_a_dungeon_master' ARCHIVE_BASE_DEMO_LINUX_0_NAME='legend_of_keepers_prologue_0_9_2_1_44469.sh' ARCHIVE_BASE_DEMO_LINUX_0_MD5='af73802b552219f834b53734b955906b' ARCHIVE_BASE_DEMO_LINUX_0_SIZE='1012855' ARCHIVE_BASE_DEMO_LINUX_0_VERSION='0.9.2.1-gog44469' ARCHIVE_BASE_DEMO_LINUX_0_URL='https://www.gog.com/game/legend_of_keepers_prologue' ARCHIVE_BASE_DEMO_WINDOWS_0_NAME='setup_legend_of_keepers_prologue_0.9.2.1_(44468).exe' ARCHIVE_BASE_DEMO_WINDOWS_0_MD5='5d861b01134173210cfec816274539f7' ARCHIVE_BASE_DEMO_WINDOWS_0_SIZE='1026797' ARCHIVE_BASE_DEMO_WINDOWS_0_VERSION='0.9.2.1-gog44468' ARCHIVE_BASE_DEMO_WINDOWS_0_URL='https://www.gog.com/game/legend_of_keepers_prologue' UNITY3D_NAME_LINUX='LegendOfKeepers' UNITY3D_NAME_WINDOWS='legendofkeepers' UNITY3D_NAME_DEMO_LINUX='LegendOfKeepersPrologue' UNITY3D_NAME_DEMO_WINDOWS='legendofkeepersprologue' UNITY3D_PLUGINS=' libEOSSDK-Linux-Shipping.so libfmodstudioL.so libfmodstudio.so libresonanceaudio.so' ## TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT_LINUX='data/noarch/game' CONTENT_PATH_DEFAULT_WINDOWS='.' CONTENT_PATH_DEFAULT_DEMO_LINUX='data/noarch/game' CONTENT_PATH_DEFAULT_DEMO_WINDOWS='.' ## The Windows demo fails to run if the Galaxy library are not available. CONTENT_GAME0_BIN_FILES_DEMO_WINDOWS=' galaxy.dll galaxycsharpglue.dll' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/GoblinzStudio/LegendOfKeepers' WINE_PERSISTENT_DIRECTORIES_DEMO=' users/${USER}/AppData/LocalLow/GoblinzStudio/LegendOfKeepersPrologue' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_ID_LINUX="${PKG_BIN_ID}-linux" PKG_BIN_ID_WINDOWS="${PKG_BIN_ID}-windows" PKG_BIN_ID_DEMO="${GAME_ID_DEMO}-bin" PKG_BIN_ID_DEMO_LINUX="${PKG_BIN_ID_DEMO}-linux" PKG_BIN_ID_DEMO_WINDOWS="${PKG_BIN_ID_DEMO}-windows" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_PROVIDES_DEMO=" $PKG_BIN_ID_DEMO" PKG_BIN_ARCH_LINUX='64' PKG_BIN_ARCH_WINDOWS='32' PKG_BIN_ARCH_DEMO_LINUX='64' PKG_BIN_ARCH_DEMO_WINDOWS='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX=' 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' PKG_BIN_DEPENDENCIES_LIBRARIES_DEMO_LINUX="$PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS_WINDOWS=' video/quicktime, variant=(string)iso' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS_DEMO_WINDOWS="$PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS_WINDOWS" ## Handle upgrades from pre-20250520.5 packages. PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} legend-of-keepers" PKG_BIN_PROVIDES_DEMO="${PKG_BIN_PROVIDES_DEMO:-} legend-of-keepers-demo" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_LINUX="${PKG_DATA_ID}-linux" PKG_DATA_ID_WINDOWS="${PKG_DATA_ID}-windows" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_ID_DEMO_LINUX="${PKG_DATA_ID_DEMO}-linux" PKG_DATA_ID_DEMO_WINDOWS="${PKG_DATA_ID_DEMO}-windows" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_PROVIDES_DEMO=" $PKG_DATA_ID_DEMO" 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-loria.sh0000755000000000000000000000567614471751340013304 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Loria # send your bug reports to bugs@dotslashplay.it ### script_version=20241107.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='loria' GAME_NAME='Loria' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='loria_1_2_0_31834.sh' ARCHIVE_BASE_0_MD5='3e23b2eeb0df168e73e47c70813e1a75' ARCHIVE_BASE_0_SIZE='1189146' ARCHIVE_BASE_0_VERSION='1.2.0-gog31834' ARCHIVE_BASE_0_URL='https://www.gog.com/game/loria' ARCHIVE_BASE_DEMO_0_NAME='loria_demo_1_2_0_31834.sh' ARCHIVE_BASE_DEMO_0_MD5='aeb232dd39397e509b0fab8033108cf4' ARCHIVE_BASE_DEMO_0_SIZE='948854' ARCHIVE_BASE_DEMO_0_VERSION='1.2.0-gog31834' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/loria_demo' UNITY3D_NAME='Loria' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam library is required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' ## Work around a failure to detect the screen resolution on first launch APP_MAIN_PRERUN=' # Work around a failure to detect the screen resolution on first launch unity3d_prefs="${HOME}/.config/unity3d/Loria/Loria/prefs" if [ ! -e "$unity3d_prefs" ]; then mkdir --parents "$(dirname "$unity3d_prefs")" cat > "$unity3d_prefs" <<- EOF 0 1024 768 EOF fi ' 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_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 launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-master-of-magic.sh0000755000000000000000000000530214471751340015133 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Master of Magic # send your bug reports to bugs@dotslashplay.it ### script_version=20250208.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='master-of-magic' GAME_NAME='Master of Magic' ARCHIVE_BASE_EN_0_NAME='gog_master_of_magic_2.0.0.3.sh' ARCHIVE_BASE_EN_0_MD5='149cfca1851126d15b098c0d77f6a6cc' ARCHIVE_BASE_EN_0_SIZE='36715' ARCHIVE_BASE_EN_0_VERSION='1.31-gog2.0.0.3' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/master_of_magic_classic' ARCHIVE_BASE_FR_0_NAME='gog_master_of_magic_french_2.0.0.3.sh' ARCHIVE_BASE_FR_0_MD5='f42da1e4e55951cd7cd859328419fced' ARCHIVE_BASE_FR_0_SIZE='207248' ARCHIVE_BASE_FR_0_VERSION='1.31-gog2.0.0.3' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/master_of_magic_classic' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_L10N_FILES=' ITEMMAKE.EXE MAGIC.EXE WIZARDS.EXE BUILDDAT.LBX BUILDESC.LBX CITYNAME.LBX DESC.LBX DIPLOMSG.LBX EVENTMSG.LBX HELP.LBX INTRO.LBX ITEMDATA.LBX ITEMPOW.LBX LISTDAT.LBX LOSE.LBX MESSAGE.LBX README.TXT SOUNDFX.LBX SPELLDAT.LBX SPELLSCR.LBX MAGIC.SET' CONTENT_GAME_MAIN_FILES=' *.AD *.BNK *.CAT *.COM *.DAT *.EXE *.GIF *.LBX *.MOM *.MT *.OPL' CONTENT_DOC_L10N_FILES=' spellbook.pdf' CONTENT_DOC0_L10N_PATH='data/noarch/docs' CONTENT_DOC0_L10N_FILES=' *.pdf' USER_PERSISTENT_FILES=' MAGIC.SET *.GAM' APP_MAIN_EXE='MAGIC.EXE' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_L10N PKG_MAIN' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE' 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' # 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_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-master-of-orion-2.sh0000755000000000000000000000653114471751340015345 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Master of Orion 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20240624.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='master-of-orion-2' GAME_NAME='Master of Orion Ⅱ: Battle at Antares' ARCHIVE_BASE_EN_0_NAME='gog_master_of_orion_2_2.0.0.6.sh' ARCHIVE_BASE_EN_0_MD5='51529fd6734bc12f1ac36fea5fc547f8' ARCHIVE_BASE_EN_0_SIZE='350000' ARCHIVE_BASE_EN_0_VERSION='1.31-gog2.0.0.6' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/master_of_orion_1_2' ARCHIVE_BASE_FR_0_NAME='gog_master_of_orion_2_french_2.0.0.6.sh' ARCHIVE_BASE_FR_0_MD5='06d643ee04387914738707d435e8f7a6' ARCHIVE_BASE_FR_0_SIZE='370000' ARCHIVE_BASE_FR_0_VERSION='1.31-gog2.0.0.6' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/master_of_orion_1_2' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_L10N_FILES=' *.BAT *.COM *.DLL *.SET ANWINFIN.LBX CMBTSHP.LBX COUNCIL.LBX DIPLOMAT.LBX DIPLOMSF.LBX DIPLOMSG.LBX DIPLOMSI.LBX DIPLOMSS.LBX ESTRFREN.LBX ESTRGERM.LBX ESTRITAL.LBX ESTRPOLI.LBX ESTRSPAN.LBX EVENTMSF.LBX EVENTMSG.LBX EVENTMSI.LBX EVENTMSS.LBX FILEDATA.LBX FONTSF.LBX FONTSG.LBX FONTSI.LBX FONTSS.LBX FRECRDTS.LBX FRE_HELP.LBX FRESKLLS.LBX FRETECD.LBX GERCRDTS.LBX GER_HELP.LBX GERSKLLS.LBX GERTECD.LBX HELP.LBX HERODATF.LBX HERODATG.LBX HERODATI.LBX HERODATS.LBX HESTRNGS.LBX HFSTRNGS.LBX HGSTRNGS.LBX HISTRNGS.LBX HSSTRNGS.LBX IFONTS.LBX INSTALL.LBX ITACRDTS.LBX ITA_HELP.LBX ITASKLLS.LBX ITATECD.LBX LANGUAGE.INI LOSERFIN.LBX MAINFREN.LBX MAINGERM.LBX MAINITAL.LBX MAINSPAN.LBX ORION2.EXE ORION95.EXE RSTRING1.LBX RSTRING2.LBX RSTRING3.LBX RSTRING4.LBX RSTRINGS.LBX SIMTEX.LBX SPACRDTS.LBX SPA_HELP.LBX SPASKLLS.LBX SPATECD.LBX STREAMHD.LBX TANM_114.LBX WARNING.LBX' CONTENT_GAME_MAIN_FILES=' *.AD *.BNK *.CAT *.DIG *.EXE *.INI *.LBX *.LST *.MDI *.MT *.OPL' CONTENT_DOC_L10N_FILES=' *.TXT' CONTENT_DOC_MAIN_PATH='data/noarch/docs' CONTENT_DOC_MAIN_FILES=' *.pdf' APP_MAIN_EXE='ORION2.EXE' APP_MAIN_ICON='../support/icon.png' USER_PERSISTENT_FILES=' MOX.SET SOUND.LBX *.INI *.GAM' PACKAGES_LIST=' PKG_L10N PKG_MAIN' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_MAIN_DEPS="$PKG_L10N_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" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to uppercase. toupper . ) # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-mobius-front-83.sh0000755000000000000000000000516614471751340015044 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2021 Mopi set -o errexit ### # Möbius Front '83 # send your bug reports to bugs@dotslashplay.it ### script_version=20250119.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='mobius-front-83' GAME_NAME="Möbius Front '83" ARCHIVE_BASE_1_NAME='m_bius_front_83_march_2023_update_63923.sh' ARCHIVE_BASE_1_MD5='2be4eb51833c3d72b5dd7f0857e3fbf4' ARCHIVE_BASE_1_SIZE='1700000' ARCHIVE_BASE_1_VERSION='2023.03-gog63923' ARCHIVE_BASE_1_URL='https://www.gog.com/game/mobius_front_83' ARCHIVE_BASE_0_NAME='m_bius_front_83_03_01_2021_45297.sh' ARCHIVE_BASE_0_MD5='e66950193c5308abd7b4fe2bec610d37' ARCHIVE_BASE_0_SIZE='1700000' ARCHIVE_BASE_0_VERSION='2021.03.01-gog45297' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Ionic.Zip.Reduced.dll MoonSharp.Interpreter.dll System.Speech.dll Content PackedContent monoconfig monomachineconfig MobiusFront83.exe MobiusFront83.exe.config' CONTENT_DOC_MAIN_FILES=' LICENSE.txt' APP_MAIN_EXE='MobiusFront83.exe' APP_MAIN_ICON='Content/icon.png' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libSDL2_mixer-2.0.so.0 libvorbisfile.so.3' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll I18N.dll I18N.West.dll Mono.Posix.dll Mono.Security.dll System.dll System.ComponentModel.DataAnnotations.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Web.dll System.Web.Extensions.dll System.Web.Http.dll System.Web.Services.dll System.Xml.dll System.Xml.Linq.dll' # 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-multiwinia.sh0000755000000000000000000000544014471751340014345 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Multiwinia # send your bug reports to bugs@dotslashplay.it ### script_version=20250208.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='multiwinia' GAME_NAME='Multiwinia' ARCHIVE_BASE_0_NAME='gog_multiwinia_2.0.0.5.sh' ARCHIVE_BASE_0_MD5='ec7f0cc245b4fb4bf85cba5fc4a536ba' ARCHIVE_BASE_0_SIZE='66000' ARCHIVE_BASE_0_VERSION='1.3.1-gog2.0.0.5' ARCHIVE_BASE_0_URL='https://www.gog.com/game/multiwinia' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libpng12.so.0 libpng12.so.0.50.0' CONTENT_LIBS_BIN64_RELATIVE_PATH='lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_FILES=' multiwinia.bin.x86_64' CONTENT_GAME_BIN32_FILES=' multiwinia.bin.x86' CONTENT_GAME_DATA_FILES=' multiwinia.png *.dat' CONTENT_DOC_DATA_RELATIVE_PATH='docs' CONTENT_DOC_DATA_FILES=' readme.txt manual.pdf' APP_MAIN_EXE_BIN64='multiwinia.bin.x86_64' APP_MAIN_EXE_BIN32='multiwinia.bin.x86' APP_MAIN_ICON='multiwinia.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 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libogg.so.0 libopenal.so.1 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.0 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-nebuchadnezzar.sh0000755000000000000000000000436114471751340015167 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Nebuchadnezzar # send your bug reports to bugs@dotslashplay.it ### script_version=20250209.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='nebuchadnezzar' GAME_NAME='Nebuchadnezzar' ARCHIVE_BASE_0_NAME='nebuchadnezzar_1_4_11_63946.sh' ARCHIVE_BASE_0_MD5='7f4bb453c7fb510fd10c125ec17dcd53' ARCHIVE_BASE_0_SIZE='1600000' ARCHIVE_BASE_0_VERSION='1.4.11-gog63946' ARCHIVE_BASE_0_URL='https://www.gog.com/game/nebuchadnezzar' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' binary/linux/nebuchadnezzar' CONTENT_GAME_DATA_FILES=' data' APP_MAIN_EXE='binary/linux/nebuchadnezzar' 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=' liballegro.so.5.2 liballegro_acodec.so.5.2 liballegro_audio.so.5.2 liballegro_font.so.5.2 liballegro_image.so.5.2 liballegro_primitives.so.5.2 liballegro_ttf.so.5.2 libc.so.6 libgcc_s.so.1 liblua5.3.so.0 libm.so.6 libpng16.so.16 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 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 binary/linux ./nebuchadnezzar "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-niche.sh0000755000000000000000000000522514471751340013252 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Niche - a genetics survival game # send your bug reports to bugs@dotslashplay.it ### script_version=20250228.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='niche' GAME_NAME='Niche - a genetics survival game' ARCHIVE_BASE_1_NAME='niche_1_2_3_33448.sh' ARCHIVE_BASE_1_MD5='8ed3cd1d2f8e1cb48aec5bde8ab321e8' ARCHIVE_BASE_1_SIZE='1100000' ARCHIVE_BASE_1_VERSION='1.2.3-gog33448' ARCHIVE_BASE_1_URL='https://www.gog.com/game/niche' ARCHIVE_BASE_0_NAME='niche_en_1_1_4_21609.sh' ARCHIVE_BASE_0_MD5='01ab13fbb61095366732686216d99978' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.1.4-gog21609' UNITY3D_NAME='Niche' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game crashes on launch if libCSteamworks.so is not available. ## libsteam_api.so is required by libCSteamworks.so. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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-no-pineapple-left-behind.sh0000755000000000000000000000501414471751340016726 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # No Pineapple Left Behind # send your bug reports to bugs@dotslashplay.it ### script_version=20250428.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='no-pineapple-left-behind' GAME_NAME='No Pineapple Left Behind' ARCHIVE_BASE_0_NAME='gog_no_pineapple_left_behind_2.4.0.7.sh' ARCHIVE_BASE_0_MD5='8134abbdbc068f3305a54a41f32820bc' ARCHIVE_BASE_0_SIZE='705565' ARCHIVE_BASE_0_VERSION='1.1.0-gog2.4.0.7' ARCHIVE_BASE_0_URL='https://www.gog.com/game/no_pineapple_left_behind' UNITY3D_NAME='nplb' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game does not start if the CSteamworks library is not provided. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.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-nomads-of-driftland.sh0000755000000000000000000000443114471751340016012 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Nomads of Driftland # send your bug reports to bugs@dotslashplay.it ### script_version=20250513.6 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='nomads-of-driftland' GAME_NAME='Nomads of Driftland' ARCHIVE_BASE_0_NAME='setup_nomads_of_driftland_nomads_1.0.48a_(64bit)_(44177).exe' ARCHIVE_BASE_0_MD5='9745838e34b9412aaf0cc538264cd289' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_nomads_of_driftland_nomads_1.0.48a_(64bit)_(44177)-1.bin' ARCHIVE_BASE_0_PART1_MD5='74032f57b81ae76040e9d9ec18d829d4' ARCHIVE_BASE_0_SIZE='2711794' ARCHIVE_BASE_0_VERSION='1.0.48a-gog44177' ARCHIVE_BASE_0_URL='https://www.gog.com/game/nomads_of_driftland' UNREALENGINE4_NAME='nomads' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE="${UNREALENGINE4_NAME}.exe" 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 the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Drop the shipped installer for Unreal Engine 4 runtime requirements. rm --recursive 'engine/extras' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not install the Visual C++ Runtime, as it triggers an unending loop of UE4 Prerequisites install/uninstall. 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-old-world.sh0000755000000000000000000001057714471751340014075 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Old World # send your bug reports to bugs@dotslashplay.it ### script_version=20250210.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='old-world' GAME_NAME='Old World' ARCHIVE_BASE_5_NAME='setup_old_world_75717_(64bit)_(79269).exe' ARCHIVE_BASE_5_MD5='5a714c53191c614b0f116b5ff7724276' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_old_world_75717_(64bit)_(79269)-1.bin' ARCHIVE_BASE_5_PART1_MD5='ca0c7357294b1127f13e82f4aad9c6dd' ARCHIVE_BASE_5_PART2_NAME='setup_old_world_75717_(64bit)_(79269)-2.bin' ARCHIVE_BASE_5_PART2_MD5='1f55824e657014585f972f8168fbdd48' ARCHIVE_BASE_5_SIZE='7307636' ARCHIVE_BASE_5_VERSION='1.0.75717-gog79269' ARCHIVE_BASE_5_URL='https://www.gog.com/game/old_world' ARCHIVE_BASE_4_NAME='setup_old_world_73323_(64bit)_(75059).exe' ARCHIVE_BASE_4_MD5='85c6f18dab6b3a4afa10f8692ddc37f4' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_old_world_73323_(64bit)_(75059)-1.bin' ARCHIVE_BASE_4_PART1_MD5='76088aa2846f040a9f847a4c1d37fefa' ARCHIVE_BASE_4_SIZE='6770335' ARCHIVE_BASE_4_VERSION='1.0.73323-gog75059' ARCHIVE_BASE_4_URL='https://www.gog.com/game/old_world' ARCHIVE_BASE_3_NAME='setup_old_world_63874_(64bit)_(60139).exe' ARCHIVE_BASE_3_MD5='b437df7671daf99926d7bcff6843348e' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_old_world_63874_(64bit)_(60139)-1.bin' ARCHIVE_BASE_3_PART1_MD5='9dc2fcaec2c5e31c5c7256ec978ff5de' ARCHIVE_BASE_3_PART2_NAME='setup_old_world_63874_(64bit)_(60139)-2.bin' ARCHIVE_BASE_3_PART2_MD5='8aec1dbb9dea13dc7a9dcf818c51b22c' ARCHIVE_BASE_3_SIZE='7900000' ARCHIVE_BASE_3_VERSION='1.0.63874-gog60139' ARCHIVE_BASE_2_NAME='setup_old_world_62874_(64bit)_(58888).exe' ARCHIVE_BASE_2_MD5='3a99a52001d9a8c610b761a0dbd0eaa8' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_old_world_62874_(64bit)_(58888)-1.bin' ARCHIVE_BASE_2_PART1_MD5='6d31bb8588a9a470f8b0fc8560b01d5e' ARCHIVE_BASE_2_PART2_NAME='setup_old_world_62874_(64bit)_(58888)-2.bin' ARCHIVE_BASE_2_PART2_MD5='2ced4111b8b6fd2e33e4b76301055bb1' ARCHIVE_BASE_2_SIZE='7900000' ARCHIVE_BASE_2_VERSION='1.0.62874-gog58888' ARCHIVE_BASE_1_NAME='setup_old_world_62798_(64bit)_(58769).exe' ARCHIVE_BASE_1_MD5='4d733db625917e8a837be046ec899749' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_old_world_62798_(64bit)_(58769)-1.bin' ARCHIVE_BASE_1_PART1_MD5='91d87895e8ffbc1b8d84096df5dc3efb' ARCHIVE_BASE_1_PART2_NAME='setup_old_world_62798_(64bit)_(58769)-2.bin' ARCHIVE_BASE_1_PART2_MD5='8e2d4632a8bd92ecf58d8f167740c255' ARCHIVE_BASE_1_SIZE='7900000' ARCHIVE_BASE_1_VERSION='1.0.62798-gog58769' ARCHIVE_BASE_0_NAME='setup_old_world_62443_(64bit)_(58285).exe' ARCHIVE_BASE_0_MD5='9d4c86d9c1de385ed3dcf61faf0fd3c9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_old_world_62443_(64bit)_(58285)-1.bin' ARCHIVE_BASE_0_PART1_MD5='f1e9ae7126b81bd023e48003642ae310' ARCHIVE_BASE_0_PART2_NAME='setup_old_world_62443_(64bit)_(58285)-2.bin' ARCHIVE_BASE_0_PART2_MD5='1b676c5d29f196efbab51fdac0cade5a' ARCHIVE_BASE_0_SIZE='7900000' ARCHIVE_BASE_0_VERSION='1.0.62443-gog58285' UNITY3D_NAME='oldworld' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_DATA_FILES=' reference' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/OldWorld' 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 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-perimeter.sh0000755000000000000000000000416314471751340014160 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Perimeter # send your bug reports to bugs@dotslashplay.it ### script_version=20240605.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='perimeter' GAME_NAME='Perimeter' ARCHIVE_BASE_0_NAME='setup_perimeter_1.03_(19064).exe' ARCHIVE_BASE_0_MD5='a65c86a8de9b938bc070bcbe5900aef2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_perimeter_1.03_(19064)-1.bin' ARCHIVE_BASE_0_PART1_MD5='ba08f50e95ce6424d214f57383d338c8' ARCHIVE_BASE_0_SIZE='3800000' ARCHIVE_BASE_0_VERSION='1.03-gog19064' ARCHIVE_BASE_0_URL='https://www.gog.com/game/perimeter' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll *.exe' CONTENT_GAME0_BIN_PATH='app/__support/app' CONTENT_GAME0_BIN_FILES=' *' CONTENT_GAME_DATA_FILES=' cache_font resource scripts perimeter.ico' CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt' USER_PERSISTENT_DIRECTORIES=' resource/saves' USER_PERSISTENT_FILES=' *.ini' APP_MAIN_EXE='perimeter.exe' APP_MAIN_ICON='perimeter.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libXcursor.so.1' # 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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-political-animals.sh0000755000000000000000000000470714471751340015572 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Political Animals # send your bug reports to bugs@dotslashplay.it ### script_version=20241126.1 GAME_ID='political-animals' GAME_NAME='Political Animals' ARCHIVE_BASE_0_NAME='gog_political_animals_2.1.0.4.sh' ARCHIVE_BASE_0_MD5='efaab47c43abc738d1dfd358c0894d4d' ARCHIVE_BASE_0_SIZE='827213' ARCHIVE_BASE_0_VERSION='0080-gog2.1.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/political_animals' UNITY3D_NAME='PoliticalAnimals' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam libraries are required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so 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 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-populous-3.sh0000755000000000000000000000700214471751340014205 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Emmanuel Gil Peyrot # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Populous: The Beginning # send your bug reports to bugs@dotslashplay.it ### script_version=20250212.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='populous-3' GAME_NAME='Populous: The Beginning' ARCHIVE_BASE_2_NAME='setup_populous_the_beginning_1.02_d3dfix_(76526).exe' ARCHIVE_BASE_2_MD5='fbe841301914a95b46ba2e9ef4da2150' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='501872' ARCHIVE_BASE_2_VERSION='1.02-gog76526' ARCHIVE_BASE_2_URL='https://www.gog.com/game/populous_the_beginning' ARCHIVE_BASE_1_NAME='setup_populous_the_beginning_1.02_depfix2_(48318).exe' ARCHIVE_BASE_1_MD5='12cb9973783ad50789b7531e60bfcb24' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='510000' ARCHIVE_BASE_1_VERSION='1.02-gog48318' ARCHIVE_BASE_1_URL='https://www.gog.com/game/populous_the_beginning' ARCHIVE_BASE_0_NAME='setup_populous_the_beginning_2.0.0.5.exe' ARCHIVE_BASE_0_MD5='7e4545d04a3d00193507aa82dea14e50' ARCHIVE_BASE_0_VERSION='1.02-gog2.0.0.2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='430000' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' ddraw.dll msapi.dll qmixer.dll sfman32.dll weanetr.dll d3dpoptb.exe d3dpoptbuw.exe dxcfg.exe poptb.exe poptbuw.exe' CONTENT_GAME_DATA_FILES=' data fmv language levels levluw objects rddata sound' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' SAVE' WINE_VIRTUAL_DESKTOP='800x600' APP_MAIN_EXE='poptb.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' # Set required registry keys registry_dump_init_file='registry-dumps/init.reg' # shellcheck disable=SC1003 registry_dump_init_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Bullfrog Productions Ltd\Populous: The Beginning] "BuildTypeCode"=dword:00000001 "InstallDirectory"="\\'"$GAME_ID"'" "InstallDrive"="C:" "InstallPath"="C:\\'"$GAME_ID"'" "Language"=dword:00000009 "Version"="1.01"' CONTENT_GAME0_BIN_FILES=" $registry_dump_init_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_init_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # 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)" # Set required registry keys mkdir --parents "$(dirname "$registry_dump_init_file")" printf '%s' "$registry_dump_init_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file" ) # 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-populous-series.sh0000755000000000000000000000654114471751340015344 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Populous series: # - Populous: Promised Lands # - Populous 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250212.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_EPISODE1='populous-1' GAME_NAME_EPISODE1='Populous: Promised Lands' GAME_ID_EPISODE2='populous-2' GAME_NAME_EPISODE2='Populous 2' ## Populous: Promised Lands ARCHIVE_BASE_EPISODE1_1_NAME='setup_populous_with_promised_lands_1.0_(28044).exe' ARCHIVE_BASE_EPISODE1_1_MD5='c9d5e903afd9cf1974489579945288d1' ARCHIVE_BASE_EPISODE1_1_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_1_VERSION='1.0-gog28044' ARCHIVE_BASE_EPISODE1_1_SIZE='21067' ARCHIVE_BASE_EPISODE1_1_URL='https://www.gog.com/game/populous' ARCHIVE_BASE_EPISODE1_0_NAME='setup_populous_promised_lands_2.0.0.3.exe' ARCHIVE_BASE_EPISODE1_0_MD5='4c1844f4077b46925a57abca8111f26a' ARCHIVE_BASE_EPISODE1_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_0_VERSION='1.0-gog2.0.0.3' ARCHIVE_BASE_EPISODE1_0_SIZE='28000' ## Populous 2 ARCHIVE_BASE_EPISODE2_1_NAME='setup_populous_2_1.0_(28044).exe' ARCHIVE_BASE_EPISODE2_1_MD5='a047f275774435f2c20b40c44b1707e0' ARCHIVE_BASE_EPISODE2_1_TYPE='innosetup' ARCHIVE_BASE_EPISODE2_1_SIZE='28608' ARCHIVE_BASE_EPISODE2_1_VERSION='1.0-gog28044' ARCHIVE_BASE_EPISODE2_1_URL='https://www.gog.com/game/populous_2' ARCHIVE_BASE_EPISODE2_0_NAME='setup_populous2_2.0.0.2.exe' ARCHIVE_BASE_EPISODE2_0_MD5='4f3b46cbadcd44821c212d96ef02cec5' ARCHIVE_BASE_EPISODE2_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE2_0_SIZE='31000' ARCHIVE_BASE_EPISODE2_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_EPISODE2_0_URL='https://www.gog.com/game/populous_2' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EPISODE1_0='app' CONTENT_PATH_DEFAULT_EPISODE2_0='app' CONTENT_GAME_MAIN_FILES_EPISODE1=' data populous.exe' CONTENT_GAME_MAIN_FILES_EPISODE2=' data sound pop2.exe intro.exe' CONTENT_DOC_MAIN_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' data sound popsave' APP_MAIN_EXE_EPISODE1='populous.exe' APP_MAIN_EXE_EPISODE2='pop2.exe' APP_MAIN_ICON_EPISODE1='app/goggame-1207658963.ico' APP_MAIN_ICON_EPISODE1_0='gfw_high.ico' APP_MAIN_ICON_EPISODE2='app/goggame-1207658981.ico' APP_MAIN_ICON_EPISODE2_0='gfw_high.ico' APP_MAIN_DOSBOX_PRERUN_EPISODE2=' intro.exe' # 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 ## TODO: APP_xxx_DOSBOX_PRERUN should be context-sensitive. APP_MAIN_DOSBOX_PRERUN=$(context_value 'APP_MAIN_DOSBOX_PRERUN') launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-prison-architect.sh0000755000000000000000000001030014471751340015430 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Prison Architect # send your bug reports to bugs@dotslashplay.it ### script_version=20250217.4 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='prison-architect' GAME_NAME='Prison Architect' ARCHIVE_BASE_GOG_0_NAME='prison_architect_the_jailhouse102_11056_64622.sh' ARCHIVE_BASE_GOG_0_MD5='3eba98e972e30c9aa27090c4590f40dd' ARCHIVE_BASE_GOG_0_SIZE='537900' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog64622' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/prison_architect' ## This DRM-free archive is no longer available for sale from humblebundle.com. ARCHIVE_BASE_HUMBLE_0_NAME='prisonarchitect-the_slammer_1.03-linux.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='33234710874924d50ccb3719ae951583' ARCHIVE_BASE_HUMBLE_0_SIZE='456965' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble2' ARCHIVE_BASE_MULTIARCH_GOG_0_NAME='prison_architect_clink_1_02_30664.sh' ARCHIVE_BASE_MULTIARCH_GOG_0_MD5='f261f6121e3fe9ae5023624098d3946d' ARCHIVE_BASE_MULTIARCH_GOG_0_SIZE='390000' ARCHIVE_BASE_MULTIARCH_GOG_0_VERSION='1.0-gog30664' ARCHIVE_BASE_MULTIARCH_HUMBLE_0_NAME='prisonarchitect-clink_1.02-linux.tar.gz' ARCHIVE_BASE_MULTIARCH_HUMBLE_0_MD5='ecf4cf68e10069c3c2cb99bcc52ef417' ARCHIVE_BASE_MULTIARCH_HUMBLE_0_SIZE='390000' ARCHIVE_BASE_MULTIARCH_HUMBLE_0_VERSION='1.0-humble1' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='prison-architect_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='b87d9f5b95458547f54daf19a1592cea' ARCHIVE_OPTIONAL_ICONS_URL='http://downloads.dotslashplay.it/resources/prison-architect/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='prisonarchitect-the_slammer_1.0-linux' CONTENT_PATH_DEFAULT_MULTIARCH_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_MULTIARCH_HUMBLE='prisonarchitect-clink_1.0-linux' CONTENT_LIBS_BIN_FILES=' libpops_api.so' CONTENT_LIBS_BIN64_RELATIVE_PATH='lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_FILES=' PrisonArchitect.x86_64' CONTENT_GAME_BIN32_FILES=' PrisonArchitect.i686' CONTENT_GAME_DATA_FILES=' *.dat' APP_MAIN_EXE_BIN32='PrisonArchitect.i686' APP_MAIN_EXE_BIN64='PrisonArchitect.x86_64' APP_MAIN_ICON_GOG='../support/icon.png' APP_MAIN_ICON_MULTIARCH_GOG='../support/icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_DATA' PACKAGES_LIST_MULTIARCH=' 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 libresolv.so.2 libSDL2-2.0.so.0 libstdc++.so.6 libuuid.so.1 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 case "$(current_archive)" in ('ARCHIVE_BASE_MULTIARCH_'*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; (*) launchers_generation 'PKG_BIN64' ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-prophour23.sh0000755000000000000000000000344514471751340014211 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Prophour23 # send your bug reports to bugs@dotslashplay.it ### script_version=20250130.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='prophour23' GAME_NAME='Prophour23' ARCHIVE_BASE_0_NAME='Prophour23_Linux32_1.1.2.zip' ARCHIVE_BASE_0_MD5='57c6a33a788647526f25d88aeb355ad6' ARCHIVE_BASE_0_VERSION='1.1.2-humble1' ARCHIVE_BASE_0_SIZE='101779' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/prophour23' CONTENT_PATH_DEFAULT='Prophour23_Linux32_1.1.2' CONTENT_GAME_MAIN_FILES=' prophour23.jar' APP_MAIN_TYPE='java' APP_MAIN_EXE='prophour23.jar' APP_MAIN_ICONS_LIST='APP_MAIN_ICON_16 APP_MAIN_ICON_32 APP_MAIN_ICON_128 APP_MAIN_ICON_256' APP_MAIN_ICON_16='icon-16.png' APP_MAIN_ICON_32='icon-32.png' APP_MAIN_ICON_128='icon-128.png' APP_MAIN_ICON_256='icon.png' # 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-ravenous-devils.sh0000755000000000000000000000371514471751340015314 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Ravenous Devils # send your bug reports to bugs@dotslashplay.it ### script_version=20240522.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='ravenous-devils' GAME_NAME='Ravenous Devils' ARCHIVE_BASE_1_NAME='setup_ravenous_devils_1.0.2_(64bit)_(59454).exe' ARCHIVE_BASE_1_MD5='efe01e3e15054928ea1b91777d0481bf' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1800000' ARCHIVE_BASE_1_VERSION='1.0.2-gog59454' ARCHIVE_BASE_1_URL='https://www.gog.com/game/ravenous_devils' ARCHIVE_BASE_0_NAME='setup_ravenous_devils_1.0.1_(64bit)_(55400).exe' ARCHIVE_BASE_0_MD5='e18ae8a3932ebcfeaa742cd9f849af4c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1800000' ARCHIVE_BASE_0_VERSION='1.0.1-gog55400' UNREALENGINE4_NAME='ravenous_devils' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE='ravenous_devils.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_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" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-rimworld.sh0000755000000000000000000000406314471751340014022 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 HS-157 # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Rimworld # send your bug reports to bugs@dotslashplay.it ### script_version=20250218.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='rimworld' GAME_NAME='Rimworld' ARCHIVE_BASE_0_NAME='RimWorld1-1-2654Linux.zip' ARCHIVE_BASE_0_MD5='4391d550e8da14b7826a63dbd75cbc44' ARCHIVE_BASE_0_SIZE='350000' ARCHIVE_BASE_0_VERSION='1.1.2654-1' ARCHIVE_BASE_0_URL='https://rimworldgame.com/getmygame/' UNITY3D_NAME='RimWorldLinux' ## TODO: Add an explicit list of Unity3D plugins to include CONTENT_PATH_DEFAULT='RimWorld1-1-2654Linux' CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}_Data/Plugins" CONTENT_GAME0_DATA_FILES=' Data/Core' USER_PERSISTENT_DIRECTORIES=' Mods' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## TODO: Add a list of required native 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 ## Errors during the game data extraction from the archive are expected, they should be ignored. archive_extraction_default 2>/dev/null || true # 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-rymdkapsel.sh0000755000000000000000000000504714471751340014341 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Rymdkapsel # send your bug reports to bugs@dotslashplay.it ### script_version=20250227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='rymdkapsel' GAME_NAME='Rymdkapsel' ARCHIVE_BASE_0_NAME='rymdkapsel-3.0.1-2014-01-31.deb' ARCHIVE_BASE_0_MD5='f19110f945625a39d154401e1083662e' ARCHIVE_BASE_0_SIZE='74942' ARCHIVE_BASE_0_VERSION='3.0.1-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/rymdkapsel' CONTENT_PATH_DEFAULT='usr/games/rymdkapsel' CONTENT_LIBS_BIN_FILES=' regexp.dso std.dso zlib.dso lime.ndll' CONTENT_GAME_BIN_FILES=' rymdkapsel' CONTENT_GAME_DATA_FILES=' assets manifest' CONTENT_DOC_DATA_PATH='usr/share/doc/rymdkapsel' CONTENT_DOC_DATA_FILES=' copyright' APP_MAIN_EXE='rymdkapsel' APP_MAIN_ICONS_LIST='APP_MAIN_ICON_32 APP_MAIN_ICON_48 APP_MAIN_ICON_64 APP_MAIN_ICON_128' APP_MAIN_ICON_32='../../share/icons/hicolor/32x32/apps/rymdkapsel.png' APP_MAIN_ICON_48='../../share/icons/hicolor/48x48/apps/rymdkapsel.png' APP_MAIN_ICON_64='../../share/icons/hicolor/64x64/apps/rymdkapsel.png' APP_MAIN_ICON_128='../../share/icons/hicolor/128x128/apps/rymdkapsel.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 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.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 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 ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-satellite-reign.sh0000755000000000000000000000560414471751340015255 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Satellite Reign # send your bug reports to bugs@dotslashplay.it ### script_version=20250218.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='satellite-reign' GAME_NAME='Satellite Reign' ARCHIVE_BASE_1_NAME='gog_satellite_reign_2.8.0.10.sh' ARCHIVE_BASE_1_MD5='5a22cdb3e721bbed7bc5836e769caa0a' ARCHIVE_BASE_1_SIZE='1400000' ARCHIVE_BASE_1_VERSION='1.13.06-gog2.8.0.10' ARCHIVE_BASE_1_URL='https://www.gog.com/game/satellite_reign' ARCHIVE_BASE_0_NAME='gog_satellite_reign_2.6.0.8.sh' ARCHIVE_BASE_0_MD5='0e050bac1c75632b094097132fa6be72' ARCHIVE_BASE_0_SIZE='1400000' ARCHIVE_BASE_0_VERSION='1.07.08-gog2.6.0.8' UNITY3D_NAME='SatelliteReignLinux' UNITY3D_PLUGINS=' RakNet.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' Linux_GPU_DriverInfo.txt' 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## cf. https://forge.dotslashplay.it/play.it/play.it/-/issues/566 ## Unity3D - Failure to handle unexpected directories under xxx_Data/Plugins rm --recursive \ "$(unity3d_name)_Data/Plugins/CSteamworks.bundle" \ "$(unity3d_name)_Data/Plugins/ShroudUnityPlugin.bundle" ) # 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-sigma-theory.sh0000755000000000000000000000463614471751340014601 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Sigma Theory # send your bug reports to bugs@dotslashplay.it ### script_version=20241109.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='sigma-theory' GAME_NAME='Sigma Theory: Global Cold War' ARCHIVE_BASE_0_NAME='sigma_theory_global_cold_war_1_2_1_2_39591.sh' ARCHIVE_BASE_0_MD5='d65fe37e8e74922d463ca6756bfdb7c7' ARCHIVE_BASE_0_SIZE='1529089' ARCHIVE_BASE_0_VERSION='1.2.1.2-gog39591' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sigma_theory_global_cold_war' UNITY3D_NAME='sigma' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam libraries are required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.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-slime-rancher.sh0000755000000000000000000000371514471751340014717 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Slime Rancher # send your bug reports to bugs@dotslashplay.it ### script_version=20250429.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='slime-rancher' GAME_NAME='Slime Rancher' ARCHIVE_BASE_0_NAME='slime_rancher_1_4_4_51897.sh' ARCHIVE_BASE_0_MD5='1933e39e9f21f09b60312ced60640aa6' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='1.4.4-gog51897' ARCHIVE_BASE_0_URL='https://www.gog.com/game/slime_rancher' UNITY3D_NAME='SlimeRancher' 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' 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)" # Prevent inclusion of Discord integration library rm --recursive "$(unity3d_name)_Data/Plugins" ) # 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-songs-of-silence.sh0000755000000000000000000000677414471751340015351 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Songs of Silence # send your bug reports to bugs@dotslashplay.it ### script_version=20241220.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='songs-of-silence' GAME_NAME='Songs of Silence' ARCHIVE_BASE_2_NAME='setup_songs_of_silence_1.1.0-d.7846_(64bit)_(78613).exe' ARCHIVE_BASE_2_MD5='1da2bbeff582b8e21507c96e8f6d979a' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_songs_of_silence_1.1.0-d.7846_(64bit)_(78613)-1.bin' ARCHIVE_BASE_2_PART1_MD5='7478d544e00335d80dfd2320955b8dd6' ARCHIVE_BASE_2_PART2_NAME='setup_songs_of_silence_1.1.0-d.7846_(64bit)_(78613)-2.bin' ARCHIVE_BASE_2_PART2_MD5='79ac2108a4a5afd81b77c550a7c8a25c' ARCHIVE_BASE_2_SIZE='6083070' ARCHIVE_BASE_2_VERSION='1.1.0-gog78613' ARCHIVE_BASE_2_URL='https://www.gog.com/game/songs_of_silence' ARCHIVE_BASE_1_NAME='setup_songs_of_silence_1.0.3-d.7778_(64bit)_(78393).exe' ARCHIVE_BASE_1_MD5='6fc46c01c88a258da47c6c767aaf667e' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_songs_of_silence_1.0.3-d.7778_(64bit)_(78393)-1.bin' ARCHIVE_BASE_1_PART1_MD5='0cce99726df83cc685744ad2de501282' ARCHIVE_BASE_1_PART2_NAME='setup_songs_of_silence_1.0.3-d.7778_(64bit)_(78393)-2.bin' ARCHIVE_BASE_1_PART2_MD5='d221248b7e86a42b570eec2045c48f53' ARCHIVE_BASE_1_SIZE='6092548' ARCHIVE_BASE_1_VERSION='1.0.3-gog78393' ARCHIVE_BASE_0_NAME='setup_songs_of_silence_1.0.2-d.7719_(64bit)_(78109).exe' ARCHIVE_BASE_0_MD5='44adde224499bc5f07b83d58637e1b68' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_songs_of_silence_1.0.2-d.7719_(64bit)_(78109)-1.bin' ARCHIVE_BASE_0_PART1_MD5='b14dd73296a314c2a02e72c957001472' ARCHIVE_BASE_0_PART2_NAME='setup_songs_of_silence_1.0.2-d.7719_(64bit)_(78109)-2.bin' ARCHIVE_BASE_0_PART2_MD5='26a256d9d57b6df627db84ed9cf95df3' ARCHIVE_BASE_0_SIZE='6660310' ARCHIVE_BASE_0_VERSION='1.0.2-gog78109' UNITY3D_NAME='songsofsilence' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Chimera Entertainment GmbH/SongsOfSilence' 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 the default initialization actions initialization_default "$@" # Extract game data ## A warning is triggered during the extraction, but despite the hash mismatch ## the file size is the expected one and it does not seem to cause problems: ## Warning: Output checksum mismatch for songsofsilence_data/resources.assets: ## ├─ actual: MD5 34a78c4bd457d0af0f6be739c84f1de7 ## └─ expected: MD5 cf5d0fdd0140118e253c735df3d3059c 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-space-pirates-and-zombies.sh0000755000000000000000000000472514471751340017136 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Space Pirates and Zombies # send your bug reports to bugs@dotslashplay.it ### script_version=20250218.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='space-pirates-and-zombies' GAME_NAME='Space Pirates and Zombies' ARCHIVE_BASE_HUMBLE_0_NAME='spaz-linux-1385503815.bin' ARCHIVE_BASE_HUMBLE_0_MD5='0964827fe06d3447ea91457fd789a207' ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='164117' ARCHIVE_BASE_HUMBLE_0_VERSION='1.605-humble1' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/space-pirates-and-zombies-spaz' ARCHIVE_BASE_GOG_0_NAME='gog_space_pirates_and_zombies_2.0.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='46da2a84e78f8016e35f7c0e63e28581' ARCHIVE_BASE_GOG_0_SIZE='180000' ARCHIVE_BASE_GOG_0_VERSION='1.605-gog2.0.0.4' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/space_pirates_and_zombies' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' ## Despite its name, "audio.so" is not an ELF library. CONTENT_GAME_BIN_FILES=' audio.so SPAZ' CONTENT_GAME_DATA_FILES=' common game mods icon.bmp SPAZ.png' CONTENT_DOC_DATA_FILES=' README-linux.txt' APP_MAIN_EXE='SPAZ' APP_MAIN_ICON='SPAZ.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 libgcc_s.so.1 libm.so.6 libpthread.so.0 libSDL-1.2.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 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-space-run.sh0000755000000000000000000000543414471751340014063 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Space Run: Fast and safe delivery # send your bug reports to bugs@dotslashplay.it ### script_version=20241120.4 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='space-run' GAME_NAME='Space Run: Fast and safe delivery' ARCHIVE_BASE_0_NAME='setup_space_run_2.1.0.2.exe' ARCHIVE_BASE_0_MD5='e370f25708f12ef1916400a25c2c4e9c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1263910' ARCHIVE_BASE_0_VERSION='1.11e-gog2.1.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/space_run' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' bass.dll cg.dll cggl.dll chartdir50.dll crashrpt.dll dbghelp.dll devil.dll fbxsdk-2013.3.dll fmod_event.dll fmod_event_net.dll fmodex.dll glut32.dll ilu.dll ilut.dll libfbxsdk.dll libmysql.dll tbb.dll tier0_s.dll vstdlib_s.dll crashsender.exe ospacegame.exe crashrpt_lang.ini reshacker.ini spaceresources/enginesettings.ini' ## TODO: Check if the Steam libraries are required CONTENT_GAME0_BIN_FILES=' steam.dll steam_api.dll steamclient.dll' CONTENT_GAME_DATA_FILES=' spaceresources' USER_PERSISTENT_DIRECTORIES=' Save' USER_PERSISTENT_FILES=' reshacker.ini spaceresources/enginesettings.ini' ## Work around the broken in-game language selection USER_PERSISTENT_FILES="${USER_PERSISTENT_FILES:-} localization.cfg" APP_MAIN_EXE='ospacegame.exe' ## Work around the broken in-game language selection APP_MAIN_PRERUN=' # Work around the broken in-game language selection LANG=$(cat localization.cfg) export LANG ' 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 # Work around the broken in-game language selection config_path="$(package_path 'PKG_BIN')$(path_game_data)/localization.cfg" cat > "$config_path" << EOF en EOF # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-spacecom.sh0000755000000000000000000000513214471751340013753 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Spacecom # send your bug reports to bugs@dotslashplay.it ### script_version=20250219.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='spacecom' GAME_NAME='Spacecom' ARCHIVE_BASE_HUMBLE_0_NAME='spacecomLinux0.9.1035.zip' ARCHIVE_BASE_HUMBLE_0_MD5='a89515caa9e79a36b1769fbecc71e3d8' ARCHIVE_BASE_HUMBLE_0_SIZE='230000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.9.1035-humble.2014.11.03' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/spacecom' ARCHIVE_BASE_GOG_0_NAME='gog_spacecom_2.4.0.9.sh' ARCHIVE_BASE_GOG_0_MD5='ee70b48ffa207bc1c668d50753ec24b5' ARCHIVE_BASE_GOG_0_TYPE='mojosetup' ARCHIVE_BASE_GOG_0_SIZE='230000' ARCHIVE_BASE_GOG_0_VERSION='1.0.9.1035-gog.2.4.0.9' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/spacecom' UNITY3D_NAME='SPACECOM' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_HUMBLE='Linux' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_DOC_DATA_FILES=' SPACECOM Game Manual.pdf' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_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 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-spellforce.sh0000755000000000000000000000554514471751340014327 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Spellforce # send your bug reports to bugs@dotslashplay.it ### script_version=20250221.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='spellforce' GAME_NAME='Spellforce' ARCHIVE_BASE_0_NAME='setup_spellforce_-_platinum_edition_1.54.75000_(17748).exe' ARCHIVE_BASE_0_MD5='ed34fb43d8042ff61a889865148b8dd2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_spellforce_-_platinum_edition_1.54.75000_(17748)-1.bin' ARCHIVE_BASE_0_PART1_MD5='60fca014e7ccd4630a7ec3cedb23942a' ARCHIVE_BASE_0_SIZE='3900000' ARCHIVE_BASE_0_VERSION='1.54.7500-gog17748' ARCHIVE_BASE_0_URL='https://www.gog.com/game/spellforce_platinum' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll dbghelp.dll mss32.dll ar.exe spellforce.exe' ## This file, generated below, includes the required CD-key. CONTENT_GAME0_BIN_FILES=' cdkey' CONTENT_GAME_DATA_FILES=' data map miles pak videos spellforce_addon.ico spellforce_addon2.ico' CONTENT_DOC_DATA_FILES=' manual.pdf readme.rtf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/SpellForce' USER_PERSISTENT_FILES=' config.lua' APP_MAIN_EXE='spellforce.exe' ## On first launch, register the game CD-key APP_MAIN_PRERUN='# On first launch, register the game CD-key if [ ! -e .cdkey-registered ]; then cdkey=$(cat cdkey) $(wine_command) reg add "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\SpellForce" /v "CDKEY" /t REG_SZ /d "$cdkey" /f touch .cdkey-registered fi ' 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Fetch the required CD-key from the installer script sed --silent '125s/.*"valueData": "\(.*\)",/\1/p' goggame-1207658719.script > 'cdkey' ) # 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-spore.sh0000755000000000000000000001356414471751340013321 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Spore # send your bug reports to bugs@dotslashplay.it ### script_version=20250227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='spore' GAME_NAME='Spore' ARCHIVE_BASE_1_NAME='setup_sporetm_collection_3.1.0.29_(77221).exe' ARCHIVE_BASE_1_MD5='a84931fcbdda5dda58dcc5cd9d5b906f' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_sporetm_collection_3.1.0.29_(77221)-1.bin' ARCHIVE_BASE_1_PART1_MD5='da8282841877bdfeb9ba3dbbaff03e1e' ARCHIVE_BASE_1_PART2_NAME='setup_sporetm_collection_3.1.0.29_(77221)-2.bin' ARCHIVE_BASE_1_PART2_MD5='e5290fb4975109b9229d3494c4c5ccd9' ARCHIVE_BASE_1_SIZE='6223301' ARCHIVE_BASE_1_VERSION='3.1.0.29-gog77221' ARCHIVE_BASE_1_URL='https://www.gog.com/game/spore_collection' ARCHIVE_BASE_0_NAME='setup_spore_3.1.0.22_(10834).exe' ARCHIVE_BASE_0_MD5='195652ca3eb62fe725f7b334cb27874e' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_spore_3.1.0.22_(10834)-1.bin' ARCHIVE_BASE_0_PART1_MD5='384354f468d981965d45f437e54a13ab' ARCHIVE_BASE_0_PART2_NAME='setup_spore_3.1.0.22_(10834)-2.bin' ARCHIVE_BASE_0_PART2_MD5='885466a612c4243ef10758c7c6cfcfbb' ARCHIVE_BASE_0_SIZE='6300000' ARCHIVE_BASE_0_VERSION='3.1.0.22-gog10834' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' sporebin' CONTENT_GAME_EP1_BIN_FILES=' sporebinep1' CONTENT_GAME_DATA_FILES=' data' CONTENT_GAME0_DATA_RELATIVE_PATH='__support/add' CONTENT_GAME0_DATA_FILES=' login.prop' CONTENT_GAME_EP1_DATA_FILES=' dataep1' CONTENT_GAME_BP1_FILES=' bp1content' CONTENT_DOC_DATA_FILES=' support' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Spore users/${USER}/Documents/My Spore Creations' APP_MAIN_EXE='sporebin/sporeapp.exe' APP_EP1_ID="${GAME_ID}-galactic-adventures" APP_EP1_NAME="$GAME_NAME - Galactic Adventures" APP_EP1_EXE='sporebinep1/sporeapp.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA PKG_EP1_BIN PKG_EP1_DATA PKG_BP1' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_EP1_BIN_ID="${GAME_ID}-galactic-adventures" PKG_EP1_BIN_DESCRIPTION='Galactic Adventures' PKG_EP1_BIN_ARCH='32' PKG_EP1_BIN_DEPENDENCIES_SIBLINGS=' PKG_BIN PKG_EP1_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_EP1_DATA_ID="${PKG_EP1_BIN_ID}-data" PKG_EP1_DATA_DESCRIPTION="$PKG_EP1_BIN_DESCRIPTION - data" PKG_BP1_ID="${GAME_ID}-creepy-and-cute-parts-pack" PKG_BP1_DESCRIPTION='Creepy & Cute Parts Pack' PKG_BP1_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 "$@" # Set required registry keys game_id=$(game_id) # shellcheck disable=SC1003 installloc='C:\\'"${game_id}" # shellcheck disable=SC1003 datadir='C:\\'"${game_id}"'\\data' # shellcheck disable=SC1003 datadir_ep1='C:\\'"${game_id}"'\\dataep1\\' registry_dump_init_file='registry-dumps/init.reg' registry_dump_init_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\electronic arts\spore] "appdir"="Spore" "installcompleted"=dword:00000001 "locale"="en-us" "playerdir"="My Spore Creations" "reindexyesorno"=dword:00000000 "installloc"="'"${installloc}"'" "datadir"="'"${datadir}"'" [HKEY_LOCAL_MACHINE\Software\electronic arts\spore_EP1] "AddOnID"=dword:00000002 "PackID"=dword:07a7f786 "DataDir"="'"${datadir_ep1}"'"' CONTENT_GAME0_BIN_FILES=" $registry_dump_init_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_init_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" requirements_check # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set required registry keys mkdir --parents "$(dirname "$registry_dump_init_file")" printf '%s' "$registry_dump_init_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file" ) # Include game data content_inclusion_icons 'PKG_DATA' 'APP_MAIN' content_inclusion_icons 'PKG_EP1_DATA' 'APP_EP1' content_inclusion_default # Write launchers ## Include the login workaround ## TODO: This override could be mught lighter if a function ## wineprefix_init_actions_custom was provided by the library. ## cf. https://forge.dotslashplay.it/play.it/play.it/-/issues/548 wine_wineprefix_init_actions() { cat <<- EOF ## Link the game prefix into the WINE prefix ln --symbolic \\ "\$PATH_PREFIX" \\ "\${WINEPREFIX}/drive_c/$(game_id)" EOF cat <<- 'EOF' ## Remove most links pointing outside of the WINE prefix rm "$WINEPREFIX/dosdevices/z:" find "$WINEPREFIX/drive_c/users/$(whoami)" -type l | while read -r directory; do rm "$directory" mkdir "$directory" done unset directory ## Set symbolic links to the legacy paths wineprefix_legacy_link 'AppData/Roaming' 'Application Data' wineprefix_legacy_link 'AppData/Local' 'Local Settings/Application Data' wineprefix_legacy_link 'Documents' 'My Documents' EOF cat <<- EOF ## Include the login workaround install -D --mode=644 \\ "$(path_game_data)/login.prop" \\ "\${WINEPREFIX}/drive_c/users/\${USER}/AppData/Roaming/Spore/Preferences/login.prop" EOF } launchers_generation 'PKG_BIN' 'APP_MAIN' launchers_generation 'PKG_EP1_BIN' 'APP_EP1' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stardew-valley.sh0000755000000000000000000002751014471751340015130 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Stardew Valley # send your bug reports to bugs@dotslashplay.it ### script_version=20240516.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='stardew-valley' GAME_NAME='Stardew Valley' # Archives ## MonoGame builds ARCHIVE_BASE_MONOGAME_4_NAME='stardew_valley_1_6_8_24119_6732702600_72964.sh' ARCHIVE_BASE_MONOGAME_4_MD5='8a67d105c8e7b801ce950afa121aa139' ARCHIVE_BASE_MONOGAME_4_SIZE='677398' ARCHIVE_BASE_MONOGAME_4_VERSION='1.6.8-gog72964' ARCHIVE_BASE_MONOGAME_4_URL='https://www.gog.com/game/stardew_valley' ARCHIVE_BASE_MONOGAME_3_NAME='stardew_valley_1_6_3_24087_6495347694_72214.sh' ARCHIVE_BASE_MONOGAME_3_MD5='3b37af7f3ccc2975699439ff09163fc5' ARCHIVE_BASE_MONOGAME_3_SIZE='666325' ARCHIVE_BASE_MONOGAME_3_VERSION='1.6.3-gog72214' ARCHIVE_BASE_MONOGAME_2_NAME='stardew_valley_1_6_2_24081_6443062877_72053.sh' ARCHIVE_BASE_MONOGAME_2_MD5='6718fd050430e14de9bf8e7dca7c86b8' ARCHIVE_BASE_MONOGAME_2_SIZE='666402' ARCHIVE_BASE_MONOGAME_2_VERSION='1.6.2-gog72053' ARCHIVE_BASE_MONOGAME_1_NAME='stardew_valley_1_6_0_24079_6430277568_72019.sh' ARCHIVE_BASE_MONOGAME_1_MD5='482db1736a6462600245fdd4f6bbd60a' ARCHIVE_BASE_MONOGAME_1_SIZE='666456' ARCHIVE_BASE_MONOGAME_1_VERSION='1.6.0-gog72019' ARCHIVE_BASE_MONOGAME_0_NAME='stardew_valley_1_5_6_1988831614_53040.sh' ARCHIVE_BASE_MONOGAME_0_MD5='c45810aeb8d52d30cab4d1cc7ff8ce64' ARCHIVE_BASE_MONOGAME_0_SIZE='670000' ARCHIVE_BASE_MONOGAME_0_VERSION='1.5.6-gog53040' ## XNA builds ARCHIVE_BASE_XNA_11_NAME='stardew_valley_1_5_4_981587505_44377.sh' ARCHIVE_BASE_XNA_11_MD5='ffeb52df688e169950d2b9d883c5e390' ARCHIVE_BASE_XNA_11_SIZE='650000' ARCHIVE_BASE_XNA_11_VERSION='1.5.4-gog44377' ARCHIVE_BASE_XNA_10_NAME='stardew_valley_1_5_3_967165180_44219.sh' ARCHIVE_BASE_XNA_10_MD5='c87b0beffe3236dd8545274037754c18' ARCHIVE_BASE_XNA_10_SIZE='650000' ARCHIVE_BASE_XNA_10_VERSION='1.5.3-gog44219' ARCHIVE_BASE_XNA_9_NAME='stardew_valley_1_5_2_952803924_44046.sh' ARCHIVE_BASE_XNA_9_MD5='56eb232720c737cb025f404ee74801ce' ARCHIVE_BASE_XNA_9_SIZE='650000' ARCHIVE_BASE_XNA_9_VERSION='1.5.2-gog44046' ARCHIVE_BASE_XNA_8_NAME='stardew_valley_1_5_1_931692592_43684.sh' ARCHIVE_BASE_XNA_8_MD5='8d9e0b2df18acbc1b83cd10b05ca9196' ARCHIVE_BASE_XNA_8_SIZE='650000' ARCHIVE_BASE_XNA_8_VERSION='1.5.1-gog43684' ARCHIVE_BASE_XNA_7_NAME='stardew_valley_1_5_928320980_43631.sh' ARCHIVE_BASE_XNA_7_MD5='50e1bbad197664a5b3511cba978c2fde' ARCHIVE_BASE_XNA_7_SIZE='650000' ARCHIVE_BASE_XNA_7_VERSION='1.5-gog43631' ARCHIVE_BASE_XNA_6_NAME='stardew_valley_1_5_926914271_43619.sh' ARCHIVE_BASE_XNA_6_MD5='cb92377270ecb859117e41dce26eeb69' ARCHIVE_BASE_XNA_6_SIZE='650000' ARCHIVE_BASE_XNA_6_VERSION='1.5-gog43619' ARCHIVE_BASE_XNA_5_NAME='stardew_valley_1_4_5_433754439_36068.sh' ARCHIVE_BASE_XNA_5_MD5='8d4f4fcef669a08a39e105f0eda790f4' ARCHIVE_BASE_XNA_5_SIZE='1100000' ARCHIVE_BASE_XNA_5_VERSION='1.4.5-gog36068' ARCHIVE_BASE_XNA_4_NAME='stardew_valley_1_4_3_379_34693.sh' ARCHIVE_BASE_XNA_4_MD5='07875ca8c7823f48a7eb533ac157a9da' ARCHIVE_BASE_XNA_4_SIZE='1700000' ARCHIVE_BASE_XNA_4_VERSION='1.4.3-gog34693' ARCHIVE_BASE_XNA_3_NAME='stardew_valley_1_4_1_367430508_34378.sh' ARCHIVE_BASE_XNA_3_MD5='2fc31edf997230c90c90c33e096d5762' ARCHIVE_BASE_XNA_3_SIZE='1700000' ARCHIVE_BASE_XNA_3_VERSION='1.4.1-gog34378' ARCHIVE_BASE_XNA_2_NAME='stardew_valley_1_3_36_27827.sh' ARCHIVE_BASE_XNA_2_MD5='8dd18eb151471a5901592188dfecb8a3' ARCHIVE_BASE_XNA_2_SIZE='990000' ARCHIVE_BASE_XNA_2_VERSION='1.3.36-gog27827' ARCHIVE_BASE_XNA_1_NAME='stardew_valley_en_1_3_28_22957.sh' ARCHIVE_BASE_XNA_1_MD5='e1e98cc3e891f5aafc23fb6617d6bc05' ARCHIVE_BASE_XNA_1_SIZE='970000' ARCHIVE_BASE_XNA_1_VERSION='1.3.28-gog22957' ARCHIVE_BASE_XNA_0_NAME='gog_stardew_valley_2.8.0.10.sh' ARCHIVE_BASE_XNA_0_MD5='27c84537bee1baae4e3c2f034cb0ff2d' ARCHIVE_BASE_XNA_0_SIZE='490000' ARCHIVE_BASE_XNA_0_VERSION='1.2.33-gog2.8.0.10' # Archives contents CONTENT_PATH_DEFAULT='data/noarch/game' ## MonoGame builds CONTENT_LIBS_BIN_FILES_MONOGAME=' libclrjit.so libcoreclr.so libcoreclrtraceptprovider.so libdbgshim.so libGalaxy64.so libGalaxyCSharpGlue.so libhostfxr.so libhostpolicy.so liblwjgl_lz4.so libmscordaccore.so libmscordbi.so libSkiaSharp.so libSystem.Globalization.Native.so libSystem.IO.Compression.Native.so libSystem.Native.so libSystem.Net.Security.Native.so libSystem.Security.Cryptography.Native.OpenSsl.so libSystem.*.a' ## The shipped SDL library must be included, to avoid the following crash on launch: ## Unhandled exception. System.Exception: SDL 2.0.4 does not support changing resizable parameter of the window after it's already been created, please use a newer version of it. ## at Microsoft.Xna.Framework.SdlGameWindow.set_AllowUserResizing(Boolean value) ## at StardewValley.GameRunner..ctor() ## at StardewValley.Program.Main(String[] args) CONTENT_LIBS0_BIN_FILES_MONOGAME=' libSDL2-2.0.so.0' ## The shipped FAudio library must be included, to prevent missing audio: ## FAudio: Failed to initialize. ## Game.Initialize() caught exception initializing XACT: ## Microsoft.Xna.Framework.Audio.NoAudioHardwareException (0x80004005) ## at Microsoft.Xna.Framework.Audio.SoundEffect.Device() ## at Microsoft.Xna.Framework.Audio.SoundEffect.Initialize() ## at Microsoft.Xna.Framework.Audio.SoundEffect..ctor(MiniFormatTag codec, Byte[] buffer, Int32 channels, Int32 sampleRate, Int32 blockAlignment, Int32 loopStart, Int32 loopLength) ## at Microsoft.Xna.Framework.Audio.WaveBank..ctor(AudioEngine audioEngine, String waveBankFilename, Boolean streaming, Int32 offset, Int32 packetsize) ## at StardewValley.Game1.Initialize() CONTENT_LIBS1_BIN_FILES_MONOGAME=' libFAudio.so.0' CONTENT_GAME_BIN_FILES_MONOGAME=' createdump Stardew Valley *.dll *.json *.xml' CONTENT_GAME_DATA_FILES_MONOGAME=' Content' CONTENT_DOC_DATA_FILES_MONOGAME=' lwjgl_license.txt lz4_license.txt' ## XNA builds CONTENT_GAME_MAIN_FILES_XNA=' Content mono monoconfig StardewValley.exe BmFont.dll GalaxyCSharp.dll GalaxyCSharp.dll.config libSkiaSharp.dll Lidgren.Network.dll MonoGame.Framework.dll MonoGame.Framework.dll.config SkiaSharp.dll StardewValley.GameData.dll xTile.dll xTilePipeline.dll' # Launchers APP_MAIN_ICON='../support/icon.png' ## MonoGame builds APP_MAIN_EXE_MONOGAME='Stardew Valley' ## If run from a symlinks prefix, the game process escapes it and actually runs from the system path. APP_MAIN_PREFIX_TYPE_MONOGAME='none' ## XNA builds APP_MAIN_EXE_XNA='StardewValley.exe' # Packages ## MonoGame builds PACKAGES_LIST_MONOGAME=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_MONOGAME='64' PKG_BIN_DEPENDENCIES_LIBRARIES_MONOGAME=' libc.so.6 libdl.so.2 libfontconfig.so.1 libgcc_s.so.1 liblttng-ust.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' ## Old MonoGame builds have some extra dependencies. PKG_BIN_DEPENDENCIES_LIBRARIES_MONOGAME_0="${PKG_BIN_DEPENDENCIES_LIBRARIES_MONOGAME:-} libgssapi_krb5.so.2 libssl.so.1.1" PKG_DATA_ID_MONOGAME="${GAME_ID}-data" PKG_DATA_DESCRIPTION_MONOGAME='data' PKG_BIN_DEPS_MONOGAME="${PKG_BIN_DEPS_MONOGAME:-} $PKG_DATA_ID_MONOGAME" ## XNA builds PKG_MAIN_DEPENDENCIES_LIBRARIES_XNA=' libGL.so.1 libopenal.so.1 libSDL2-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES_XNA=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll System.Xml.Linq.dll WindowsBase.dll' # XNA builds - The game manager is provided as an ELF binary CONTENT_GAME_BIN64_FILES_XNA=' mcs.bin.x86_64' CONTENT_GAME_BIN32_FILES_XNA=' mcs.bin.x86' PACKAGES_LIST_XNA=' PKG_MAIN PKG_BIN64 PKG_BIN32' PKG_BIN_ID_XNA="${GAME_ID}-bin" PKG_BIN64_ID_XNA="$PKG_BIN_ID_XNA" PKG_BIN32_ID_XNA="$PKG_BIN_ID_XNA" PKG_BIN64_ARCH_XNA='64' PKG_BIN32_ARCH_XNA='32' PKG_BIN_DESCRIPTION_XNA='game manager binary' PKG_BIN64_DESCRIPTION_XNA="$PKG_BIN_DESCRIPTION_XNA" PKG_BIN32_DESCRIPTION_XNA="$PKG_BIN_DESCRIPTION_XNA" PKG_BIN_DEPENDENCIES_LIBRARIES_XNA=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES_XNA="$PKG_BIN_DEPENDENCIES_LIBRARIES_XNA" PKG_BIN32_DEPENDENCIES_LIBRARIES_XNA="$PKG_BIN_DEPENDENCIES_LIBRARIES_XNA" PKG_MAIN_DEPS_XNA="${PKG_MAIN_DEPS_XNA:-} $PKG_BIN_ID_XNA" # 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" # MonoGame builds - The game fails to load some libraries if they are not found in the game path. case "$(current_archive)" in ('ARCHIVE_BASE_MONOGAME_'*) mkdir --parents "$(package_path 'PKG_BIN')$(path_game_data)" for library_file in \ 'libclrjit.so' \ 'libcoreclr.so' \ 'libcoreclrtraceptprovider.so' \ 'libdbgshim.so' \ 'libhostfxr.so' \ 'libhostpolicy.so' \ 'libmscordaccore.so' \ 'libmscordbi.so' \ 'libSkiaSharp.so' \ 'libSystem.IO.Compression.Native.a' \ 'libSystem.IO.Compression.Native.so' \ 'libSystem.Native.a' \ 'libSystem.Native.so' \ 'libSystem.Net.Security.Native.a' \ 'libSystem.Net.Security.Native.so' \ 'libSystem.Security.Cryptography.Native.OpenSsl.a' \ 'libSystem.Security.Cryptography.Native.OpenSsl.so' \ 'libGalaxy64.so' \ 'libGalaxyCSharpGlue.so' \ 'libSDL2-2.0.so.0' \ 'libFAudio.so.0' do ln --symbolic \ "$(path_libraries)/${library_file}" \ "$(package_path 'PKG_BIN')$(path_game_data)/${library_file}" done ;; esac # XNA builds - The game fails to load OpenAL and SDL2 libraries if they are not inside some hardcoded path. case "$(current_archive)" in ('ARCHIVE_BASE_XNA_'*) case "$(option_value 'package')" in ('arch') library_source_directory_32bit='/usr/lib32' library_source_directory_64bit='/usr/lib' ;; ('deb') library_source_directory_32bit='/usr/lib/i386-linux-gnu' library_source_directory_64bit='/usr/lib/x86_64-linux-gnu' ;; ('gentoo'|'egentoo') library_source_directory_32bit='/usr/lib' library_source_directory_64bit='/usr/lib64' ;; esac for library_file in \ 'libopenal.so.1' \ 'libSDL2-2.0.so.0' do library_source_32bit="${library_source_directory_32bit}/${library_file}" library_source_64bit="${library_source_directory_64bit}/${library_file}" library_destination_32bit="$(package_path 'PKG_BIN32')$(path_game_data)/lib/${library_file}" library_destination_64bit="$(package_path 'PKG_BIN64')$(path_game_data)/lib64/${library_file}" mkdir --parents \ "$(dirname "$library_destination_32bit")" \ "$(dirname "$library_destination_64bit")" ln --symbolic "$library_source_32bit" "$library_destination_32bit" ln --symbolic "$library_source_64bit" "$library_destination_64bit" done ;; esac # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## XNA builds - Ensure game manager binaries are executable. case "$(current_archive)" in ('ARCHIVE_BASE_XNA_'*) chmod 755 'mcs.bin.x86' 'mcs.bin.x86_64' ;; esac ) # Include game icons case "$(current_archive)" in ('ARCHIVE_BASE_XNA_'*) content_inclusion_icons ;; ('ARCHIVE_BASE_MONOGAME_'*) content_inclusion_icons 'PKG_DATA' ;; esac # Include game data content_inclusion_default # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_XNA_'*) launchers_generation ;; ('ARCHIVE_BASE_MONOGAME_'*) launchers_generation 'PKG_BIN' ;; esac # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sudden-strike-4-expansions.sh0000755000000000000000000000645114471751340017275 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Sudden Strike 4 expansions: # - Battle of Kursk # - Road to Dunkirk # - The Pacific War # - Finland: Winter Storm # - Africa: Desert War # send your bug reports to bugs@dotslashplay.it ### script_version=20240331.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='sudden-strike-4' GAME_NAME='Sudden Strike 4' EXPANSION_ID_KURSK='battle-of-kursk' EXPANSION_NAME_KURSK='Battle of Kursk' EXPANSION_ID_DUNKIRK='road-to-dunkirk' EXPANSION_NAME_DUNKIRK='Road to Dunkirk' EXPANSION_ID_PACIFIC='the-pacific-war' EXPANSION_NAME_PACIFIC='The Pacific War' EXPANSION_ID_FINLAND='finland-winter-storm' EXPANSION_NAME_FINLAND='Finland: Winter Storm' EXPANSION_ID_AFRICA='africa-desert-war' EXPANSION_NAME_AFRICA='Africa: Desert War' # Archives ## Battle of Kursk ARCHIVE_BASE_KURSK_0_NAME='sudden_strike_4_battle_of_kursk_1_15_hotfix_28522.sh' ARCHIVE_BASE_KURSK_0_MD5='adaf1b27f954cc90c32c951334c45916' ARCHIVE_BASE_KURSK_0_SIZE='56000' ARCHIVE_BASE_KURSK_0_VERSION='1.15-gog28522' ## Road to Dunkirk ARCHIVE_BASE_DUNKIRK_0_NAME='sudden_strike_4_road_to_dunkirk_1_15_hotfix_28522.sh' ARCHIVE_BASE_DUNKIRK_0_MD5='cd07c173ad84e83db50dd3fce310d5a5' ARCHIVE_BASE_DUNKIRK_0_SIZE='160000' ARCHIVE_BASE_DUNKIRK_0_VERSION='1.15-gog28522' ARCHIVE_BASE_DUNKIRK_0_URL='https://www.gog.com/game/sudden_strike_4_road_to_dunkirk' ## The Pacific War ARCHIVE_BASE_PACIFIC_0_NAME='sudden_strike_4_the_pacific_war_1_15_hotfix_28522.sh' ARCHIVE_BASE_PACIFIC_0_MD5='9a5a4c8ca66814bfee11203dd877193c' ARCHIVE_BASE_PACIFIC_0_SIZE='560000' ARCHIVE_BASE_PACIFIC_0_VERSION='1.15-gog28522' ARCHIVE_BASE_PACIFIC_0_URL='https://www.gog.com/game/sudden_strike_4_the_pacific_war' ## Finland: Winter Storm ARCHIVE_BASE_FINLAND_0_NAME='sudden_strike_4_finland_winter_storm_1_15_hotfix_28522.sh' ARCHIVE_BASE_FINLAND_0_MD5='d51ded65499136f36e613ca35cb583d8' ARCHIVE_BASE_FINLAND_0_SIZE='330000' ARCHIVE_BASE_FINLAND_0_VERSION='1.15-gog28522' ARCHIVE_BASE_FINLAND_0_URL='https://www.gog.com/game/sudden_strike_4_the_pacific_war' ## Africa: Desert War ARCHIVE_BASE_AFRICA_0_NAME='sudden_strike_4_africa_desert_war_1_15_hotfix_28522.sh' ARCHIVE_BASE_AFRICA_0_MD5='9fd0469913dda4a63c6dd7d87736c936' ARCHIVE_BASE_AFRICA_0_SIZE='370000' ARCHIVE_BASE_AFRICA_0_VERSION='1.15-gog28522' ARCHIVE_BASE_AFRICA_0_URL='https://www.gog.com/game/sudden_strike_4_africa_desert_war' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' AssetBundles' PKG_MAIN_DEPS="$GAME_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" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sudden-strike-4.sh0000755000000000000000000000421114471751340015100 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Sudden Strike 4 # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='sudden-strike-4' GAME_NAME='Sudden Strike 4' ARCHIVE_BASE_0_NAME='sudden_strike_4_1_15_hotfix_28522.sh' ARCHIVE_BASE_0_MD5='4f639590f5e9af1f8076adf6f7dd5b53' ARCHIVE_BASE_0_SIZE='7100000' ARCHIVE_BASE_0_VERSION='1.15-gog28522' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sudden_strike_4' UNITY3D_NAME='SuddenStrike4' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam libraries can be dropped. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' AssetBundles' CONTENT_DOC_DATA_FILES=' 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 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 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-surviving-mars-expansions.sh0000755000000000000000000001300314471751340017336 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Janeene Beeforth # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Surviving Mars expansions: # - Digital Deluxe Edition Upgrade Pack # - Stellaris Dome Set # - Mysteries Resupply Pack # send your bug reports to bugs@dotslashplay.it ### script_version=20250223.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='surviving-mars' GAME_NAME='Surviving Mars' EXPANSION_ID_DELUXE='digital-deluxe' EXPANSION_NAME_DELUXE='Digital Deluxe' EXPANSION_ID_STELLARIS='stellaris-dome-set' EXPANSION_NAME_STELLARIS='Stellaris Dome Set' EXPANSION_ID_MYSTERIES='mysteries-resupply-pack' EXPANSION_NAME_MYSTERIES='Mysteries Resupply Pack' # Archives ## Digital Deluxe Edition Upgrade Pack ARCHIVE_BASE_DELUXE_5_NAME='surviving_mars_digital_deluxe_edition_upgrade_pack_cernan_update_29871.sh' ARCHIVE_BASE_DELUXE_5_MD5='d4446a7a747ab2e087b48b241aedc9eb' ARCHIVE_BASE_DELUXE_5_SIZE='70000' ARCHIVE_BASE_DELUXE_5_VERSION='1.0-gog29871' ARCHIVE_BASE_DELUXE_5_URL='https://www.gog.com/game/surviving_mars_digital_deluxe_edition_upgrade_pack' ARCHIVE_BASE_DELUXE_4_NAME='surviving_mars_digital_deluxe_edition_upgrade_pack_sagan_rc3_update_24111.sh' ARCHIVE_BASE_DELUXE_4_MD5='60cddca455eb1882e0ca7ebf4e26838a' ARCHIVE_BASE_DELUXE_4_SIZE='66000' ARCHIVE_BASE_DELUXE_4_VERSION='1.0-gog24111' ARCHIVE_BASE_DELUXE_3_NAME='surviving_mars_digital_deluxe_edition_upgrade_pack_sagan_rc1_update_23676.sh' ARCHIVE_BASE_DELUXE_3_MD5='7ba5d3ab5626f1a18015b9516adf29af' ARCHIVE_BASE_DELUXE_3_SIZE='66000' ARCHIVE_BASE_DELUXE_3_VERSION='1.0-gog23676' ARCHIVE_BASE_DELUXE_2_NAME='surviving_mars_digital_deluxe_edition_upgrade_pack_en_davinci_rc1_22763.sh' ARCHIVE_BASE_DELUXE_2_MD5='195f0d1a28047112ced2d9cc31df5e52' ARCHIVE_BASE_DELUXE_2_SIZE='67000' ARCHIVE_BASE_DELUXE_2_VERSION='1.0-gog22763' ARCHIVE_BASE_DELUXE_1_NAME='surviving_mars_digital_deluxe_edition_upgrade_pack_en_180619_curiosity_hotfix_3_21661.sh' ARCHIVE_BASE_DELUXE_1_MD5='cef24bda9587c1923139ea0c86df317a' ARCHIVE_BASE_DELUXE_1_SIZE='66000' ARCHIVE_BASE_DELUXE_1_VERSION='1.0-gog21661' ARCHIVE_BASE_DELUXE_0_NAME='surviving_mars_digital_deluxe_edition_upgrade_pack_en_180423_opportunity_rc1_20289.sh' ARCHIVE_BASE_DELUXE_0_MD5='a574de12f4b7f3aa1f285167109bb6a3' ARCHIVE_BASE_DELUXE_0_SIZE='66000' ARCHIVE_BASE_DELUXE_0_VERSION='1.0-gog20289' ## Stellaris Dome Set ARCHIVE_BASE_STELLARIS_2_NAME='surviving_mars_stellaris_dome_set_sagan_rc3_update_24111.sh' ARCHIVE_BASE_STELLARIS_2_MD5='7759d7fa7f9d99a693a828a6c5db601f' ARCHIVE_BASE_STELLARIS_2_SIZE='4000' ARCHIVE_BASE_STELLARIS_2_VERSION='1.0-gog24111' ARCHIVE_BASE_STELLARIS_2_URL='https://www.gog.com/game/surviving_mars_stellaris_dome_set' ARCHIVE_BASE_STELLARIS_1_NAME='surviving_mars_stellaris_dome_set_sagan_rc1_update_23676.sh' ARCHIVE_BASE_STELLARIS_1_MD5='2b0f7100813779cdd847be15b6599fea' ARCHIVE_BASE_STELLARIS_1_SIZE='4000' ARCHIVE_BASE_STELLARIS_1_VERSION='1.0-gog23676' ARCHIVE_BASE_STELLARIS_0_NAME='surviving_mars_stellaris_dome_set_pre_order_dlc_en_180619_curiosity_hotfix_3_21661.sh' ARCHIVE_BASE_STELLARIS_0_MD5='01ffc529b9a0cc72e5d94830385bf7b9' ARCHIVE_BASE_STELLARIS_0_SIZE='4000' ARCHIVE_BASE_STELLARIS_0_VERSION='1.0-gog21661' ## Mysteries Resupply Pack ARCHIVE_BASE_MYSTERIES_4_NAME='surviving_mars_mysteries_resupply_pack_sagan_rc3_update_24111.sh' ARCHIVE_BASE_MYSTERIES_4_MD5='042fc7152f3ad72e0c121dfb96f617d8' ARCHIVE_BASE_MYSTERIES_4_SIZE='3100' ARCHIVE_BASE_MYSTERIES_4_VERSION='1.0-gog24111' ARCHIVE_BASE_MYSTERIES_4_URL='https://www.gog.com/game/surviving_mars_mysteries_resupply_pack' ARCHIVE_BASE_MYSTERIES_3_NAME='surviving_mars_mysteries_resupply_pack_sagan_rc1_update_23676.sh' ARCHIVE_BASE_MYSTERIES_3_MD5='e7e96c1384fd795f4a9b69db579524e6' ARCHIVE_BASE_MYSTERIES_3_SIZE='3100' ARCHIVE_BASE_MYSTERIES_3_VERSION='1.0-gog23676' ARCHIVE_BASE_MYSTERIES_2_NAME='surviving_mars_mysteries_resupply_pack_en_davinci_rc1_22763.sh' ARCHIVE_BASE_MYSTERIES_2_MD5='6e83b67c5d368c25092ecb4fd700b5ae' ARCHIVE_BASE_MYSTERIES_2_SIZE='3100' ARCHIVE_BASE_MYSTERIES_2_VERSION='1.0-gog22763' ARCHIVE_BASE_MYSTERIES_1_NAME='surviving_mars_mysteries_resupply_pack_en_180619_curiosity_hotfix_3_21661.sh' ARCHIVE_BASE_MYSTERIES_1_MD5='fd7ef79614de264ac4eb2a1e431d64bf' ARCHIVE_BASE_MYSTERIES_1_SIZE='2900' ARCHIVE_BASE_MYSTERIES_1_VERSION='1.0-gog21661' ARCHIVE_BASE_MYSTERIES_0_NAME='surviving_mars_mysteries_resupply_pack_en_curiosity_2_21442.sh' ARCHIVE_BASE_MYSTERIES_0_MD5='9ca47c2cdb5a41cf8b221dca99783916' ARCHIVE_BASE_MYSTERIES_0_SIZE='2900' ARCHIVE_BASE_MYSTERIES_0_VERSION='1.0-gog21442' 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 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_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-surviving-mars.sh0000755000000000000000000000620514471751340015157 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Janeene Beeforth # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Surviving Mars # send your bug reports to bugs@dotslashplay.it ### script_version=20250223.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='surviving-mars' GAME_NAME='Surviving Mars' ARCHIVE_BASE_5_NAME='surviving_mars_cernan_update_29871.sh' ARCHIVE_BASE_5_MD5='0c204fb895101f8b3f844a1fa06e2feb' ARCHIVE_BASE_5_SIZE='6200000' ARCHIVE_BASE_5_VERSION='1.0-gog29871' ARCHIVE_BASE_5_URL='https://www.gog.com/game/surviving_mars' ARCHIVE_BASE_4_NAME='surviving_mars_sagan_rc3_update_24111.sh' ARCHIVE_BASE_4_MD5='22e5cbc7188ff1cb8fd5dabf7cdca0bf' ARCHIVE_BASE_4_SIZE='4700000' ARCHIVE_BASE_4_VERSION='1.0-gog24111' ARCHIVE_BASE_3_NAME='surviving_mars_sagan_rc1_update_23676.sh' ARCHIVE_BASE_3_MD5='2e5058a9f1076f894c0b074fd24e3597' ARCHIVE_BASE_3_SIZE='4700000' ARCHIVE_BASE_3_VERSION='1.0-gog23676' ARCHIVE_BASE_2_NAME='surviving_mars_en_davinci_rc1_22763.sh' ARCHIVE_BASE_2_MD5='aa513fee4b4c10318831712d4663bfc0' ARCHIVE_BASE_2_SIZE='4400000' ARCHIVE_BASE_2_VERSION='1.0-gog22763' ARCHIVE_BASE_1_NAME='surviving_mars_en_180619_curiosity_hotfix_3_21661.sh' ARCHIVE_BASE_1_MD5='241f1cb8305becab5d55c8d104bd2c18' ARCHIVE_BASE_1_SIZE='4100000' ARCHIVE_BASE_1_VERSION='1.0-gog21661' ARCHIVE_BASE_0_NAME='surviving_mars_en_curiosity_update_21183.sh' ARCHIVE_BASE_0_MD5='ab9a61d04a128f19bc9e003214fe39a9' ARCHIVE_BASE_0_SIZE='4000000' ARCHIVE_BASE_0_VERSION='1.0-gog21183' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libpops_api.so' CONTENT_GAME_BIN_FILES=' MarsGOG' CONTENT_GAME_DATA_FILES=' DLC Licenses Local ModTools Movies Packs ShaderPreprocessorTemp' APP_MAIN_EXE='MarsGOG' APP_MAIN_ICON='../support/icon.png' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_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 libresolv.so.2 libSDL2-2.0.so.0 libssl.so.1.0.0 libstdc++.so.6 libuuid.so.1 libX11.so.6 libXext.so.6 libXrandr.so.2 libXrender.so.1 libXt.so.6 libz.so.1' PACKAGES_LIST=' PKG_BIN PKG_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-symmetry.sh0000755000000000000000000000541514471751340014056 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 bbob # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Symmetry # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='symmetry' GAME_NAME='Symmetry' ARCHIVE_BASE_0_NAME='setup_symmetry_1.0.2.win_(21945).exe' ARCHIVE_BASE_0_MD5='2a0d1919d41b48b8dc5af3071ad7babc' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='210000' ARCHIVE_BASE_0_VERSION='1.0.2-gog21945' ARCHIVE_BASE_0_URL='https://www.gog.com/game/symmetry' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' cchromaeditorlibrary.dll d3dx9_43.dll symmetry.exe options.ini' CONTENT_GAME_DATA_FILES=' fonts texts *.chroma *.ogg *.png' USER_PERSISTENT_FILES=' *.ini' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Symmetry' ## TODO: Check if this winetricks verb is still required with current WINE builds. WINE_WINETRICKS_VERBS='d3dcompiler_43' APP_MAIN_EXE='symmetry.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' # An inner archive uses the cabinet archive format REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} cabextract" # 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 ARCHIVE_INNER_CAB_PATH="${PLAYIT_WORKDIR}/gamedata/symmetry.cab" ARCHIVE_INNER_CAB_TYPE='cabinet' mv "${PLAYIT_WORKDIR}/gamedata/symmetry.exe" "$ARCHIVE_INNER_CAB_PATH" archive_extraction 'ARCHIVE_INNER_CAB' rm "$ARCHIVE_INNER_CAB_PATH" ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Fix file paths find . -type f | while read -r file_source; do file_destination=$(printf '%s' "$file_source" | sed 's#@#/#g') if [ "$file_destination" != "$file_source" ]; then mkdir --parents "$(dirname "$file_destination")" mv "$file_source" "$file_destination" fi done ) # 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-terra-nil.sh0000755000000000000000000000565314471751340014066 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Terra Nil # send your bug reports to bugs@dotslashplay.it ### script_version=20241224.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='terra-nil' GAME_NAME='Terra Nil' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME Prototype" ARCHIVE_BASE_2_NAME='terra_nil_v1_1_10_76773.sh' ARCHIVE_BASE_2_MD5='4a6b16920e761984407092f10dce0885' ARCHIVE_BASE_2_SIZE='1642434' ARCHIVE_BASE_2_VERSION='1.1.10-gog76773' ARCHIVE_BASE_2_URL='https://www.gog.com/game/terra_nil' ARCHIVE_BASE_1_NAME='terra_nil_1_1_9_linux_76072.sh' ARCHIVE_BASE_1_MD5='3b077213a089c1d631899d684cd57eb7' ARCHIVE_BASE_1_SIZE='2213191' ARCHIVE_BASE_1_VERSION='1.1.9-gog76072' ARCHIVE_BASE_0_NAME='terra_nil_1_04_linux_68121.sh' ARCHIVE_BASE_0_MD5='d71c5f1da5d78d3a61c048240c2ecdb5' ARCHIVE_BASE_0_SIZE='2092001' ARCHIVE_BASE_0_VERSION='1.04-gog68121' ARCHIVE_BASE_DEMO_0_NAME='Terra Nil 0.41 Linux.zip' ARCHIVE_BASE_DEMO_0_MD5='0179d82ebf76eed15c519d419ecdcab1' ARCHIVE_BASE_DEMO_0_SIZE='167423' ARCHIVE_BASE_DEMO_0_VERSION='0.41-itch.2020.09.03' ARCHIVE_BASE_DEMO_0_URL='https://vfqd.itch.io/terra-nil' UNITY3D_NAME='Terra Nil' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_PATH_DEFAULT_DEMO='.' 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_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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Full game only - Drop duplicated files case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ;; (*) find . -name 'PaxHeader' -exec rm --recursive {} + ;; esac # Full game only - Do not include the shipped Steam libraries case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ;; (*) rm --recursive "$(unity3d_name)_Data/Plugins" ;; esac ) # 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-the-fertile-crescent.sh0000755000000000000000000000511514471751340016176 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Fertile Crescent # send your bug reports to bugs@dotslashplay.it ### script_version=20241120.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-fertile-crescent' GAME_NAME='The Fertile Crescent' ARCHIVE_BASE_3_NAME='tfc_the_fertile_crescent_1_1001_77568.sh' ARCHIVE_BASE_3_MD5='f6a3809b43dd63f226fe47c756e915f5' ARCHIVE_BASE_3_SIZE='524869' ARCHIVE_BASE_3_VERSION='1.1001-gog77568' ARCHIVE_BASE_3_URL='https://www.gog.com/game/tfc_the_fertile_crescent' ARCHIVE_BASE_2_NAME='tfc_the_fertile_crescent_1_1000_75581.sh' ARCHIVE_BASE_2_MD5='2410c776006d758dfcdfb0d961bb906f' ARCHIVE_BASE_2_SIZE='524869' ARCHIVE_BASE_2_VERSION='1.1000-gog75581' ARCHIVE_BASE_1_NAME='tfc_the_fertile_crescent_1_0014_74208.sh' ARCHIVE_BASE_1_MD5='9255deccb43f9eda5062614d0d6cf9d7' ARCHIVE_BASE_1_SIZE='524857' ARCHIVE_BASE_1_VERSION='1.0014-gog74208' ARCHIVE_BASE_0_NAME='tfc_the_fertile_crescent_1_0010b_74071.sh' ARCHIVE_BASE_0_MD5='619d9bbccea8d3b05037dacde8684533' ARCHIVE_BASE_0_SIZE='525376' ARCHIVE_BASE_0_VERSION='1.0010b-gog74071' UNITY3D_NAME='game' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudio.so libresonanceaudio.so' ## The game crashes on launch if the Steam library is missing. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.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' 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-the-guild-2-renaissance.sh0000755000000000000000000000531214471751340016473 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Guild 2 Renaissance # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-guild-2-renaissance' GAME_NAME='The Guild 2 Renaissance' ARCHIVE_BASE_0_NAME='setup_the_guild2_renaissance_2.2.0.5.exe' ARCHIVE_BASE_0_MD5='86389c3154c2ea6ef3b072278f1e9c6c' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_0_PART1_NAME='setup_the_guild2_renaissance_2.2.0.5-1.bin' ARCHIVE_BASE_0_PART1_MD5='ae4c17c8e3793befeec8b9a16e4f2b0c' ARCHIVE_BASE_0_PART1_EXTRACTOR='unar' ARCHIVE_BASE_0_SIZE='3800000' ARCHIVE_BASE_0_VERSION='4.21-gog2.2.0.5' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_guild_2_renaissance' CONTENT_PATH_DEFAULT='game' CONTENT_GAME_BIN_FILES=' dbghelp.dll fmod.dll guildii.exe mfc71.dll modlauncher.exe msvcp71.dll msvcr71.dll stlport.5.0.dll stlportd.5.0.dll wmencoderen.exe' CONTENT_GAME_DATA_FILES=' camerapaths db gui mods movie msx objects particles resource savegames scenes scripts sfx shader shots textures worlds sim_commands.dat *.raw *.url' CONTENT_GAME0_DATA_PATH='support/app' CONTENT_GAME0_DATA_FILES=' config.ini input.ini' CONTENT_DOC_DATA_FILES=' manual.pdf *.txt' USER_PERSISTENT_FILES=' *.ini' ## TODO: Setting up a WINE virtual desktop on first launch might prevent display problems on some setups. APP_MAIN_EXE='guildii.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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Convert all file paths to lowercase. tolower . ) # 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-the-guild-2.sh0000755000000000000000000000462514471751340014210 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Guild 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-guild-2' GAME_NAME='The Guild 2' ARCHIVE_BASE_0_NAME='setup_the_guild2_2.0.0.4.exe' ARCHIVE_BASE_0_MD5='2b14191f4831b3486e95d52245d6cc64' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.4-gog2.0.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_guild_2' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.dll *.exe *.ini' CONTENT_GAME_DATA_FILES=' *.dat camerapaths db editor gui movie msx objects particles resource savegames scenes scripts sfx shader shots textures worlds' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' USER_PERSISTENT_FILES=' *.ini' ## TODO: Setting up a WINE virtual desktop on first launch might prevent display problems on some setups. APP_MAIN_EXE='guildii.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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Disable intro movie. ## TODO: Check why it is required. ini_file='config.ini' ini_field='SplashScreen' ini_value='0' sed_expression="s/^${ini_field}=.*$/${ini_field}=${ini_value}/" sed --in-place --expression="$sed_expression" "$ini_file" ) # 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-the-settlers-3.sh0000755000000000000000000001613014471751340014744 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Settlers 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20250311.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-settlers-3' GAME_NAME='The Settlers Ⅲ' ARCHIVE_BASE_EN_0_NAME='setup_the_settlers_3_-_ultimate_collection_1.60_v2_(30349).exe' ARCHIVE_BASE_EN_0_MD5='169a48088443cf5ccf92dcca1b747316' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1400000' ARCHIVE_BASE_EN_0_VERSION='1.60-gog30349' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/the_settlers_3_ultimate_collection' ARCHIVE_BASE_DE_0_NAME='setup_the_settlers_3_-_ultimate_collection_1.60_v2_(german)_(30349).exe' ARCHIVE_BASE_DE_0_MD5='b667efd448e4ef471dd53a38342abc67' ARCHIVE_BASE_DE_0_TYPE='innosetup' ARCHIVE_BASE_DE_0_SIZE='1400000' ARCHIVE_BASE_DE_0_VERSION='1.60-gog30349' ARCHIVE_BASE_DE_0_URL='https://www.gog.com/game/the_settlers_3_ultimate_collection' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' _inmm.dll bglwinr.dll ir50_32.dll ir50_qc.dll ir50_qcx.dll libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll msvcirt.dll msvcrt.dll newtoolr.dll patchw32.dll fileconvert.exe s3.exe s3_multi.exe setups3.exe' CONTENT_GAME_L10N_FILES=' manual s3editor solution tips s3/add s3/mis_v s3qota/add s3qota/mis_v snd/siedler3_01.dat data.dat s3cd1.dat' CONTENT_GAME_DATA_FILES=' gfx map music s3mcd s3/mis_m s3qota/mis_m snd/siedler3_00.dat gsdd_lnk.gif s3cd2.dat' CONTENT_GAME0_DATA_PATH='app' CONTENT_GAME0_DATA_FILES=' s3.dat s3gold1.dat s3gold2.dat s3mcd1.dat s3qota1.dat solution/_vti_pvt/service.lck solution/_vti_pvt/structure.cnf' CONTENT_DOC_DATA_FILES=' the settlers iii - manual.pdf readme.txt' USER_PERSISTENT_DIRECTORIES=' save' ## "icodecs" winetricks verb is required for correct intro movie playback. WINE_WINETRICKS_VERBS="${WINE_WINETRICKS_VERBS:-} icodecs" ## Disable csmt, as it would cause performance issues with single CPU affinity. WINE_WINETRICKS_VERBS="${WINE_WINETRICKS_VERBS:-} csmt=off" APP_MAIN_EXE='s3.exe' APP_MAIN_ICON='s3gold.ico' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_DE="${PKG_L10N_ID}-de" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_DE='German localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Set required registry keys registry_dump_init_file='registry-dumps/init.reg' # shellcheck disable=SC1003 registry_dump_init_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\BlueByte\S3Editor] "Browser"="" "Editor"=dword:00000001 "EditorPath"="C:\\'"$GAME_ID"'\\S3Editor" "GameExe"="\\S3.exe" "Help"="C:\\'"$GAME_ID"'\\S3Editor\\Help\\English\\Index.htm" "Language"=dword:00000009 "SourceMapDir"="C:\\'"$GAME_ID"'\\S3Editor\\Source\\" "UserMapDir"="\\Map\\User\\" [HKEY_LOCAL_MACHINE\Software\BlueByte\S3PLUSCD] "EditorPathPlus"="\\S3Editor" "EditorPlus"=dword:00000001 "GameExePlus"="\\S3.EXE" "HelpPlus"="\\S3Editor\\Help\\English\\Index.htm" "LanguagePlus"=dword:00000009 "SourceMapDirPlus"="\\S3Editor\\Source\\" "UserMapDirPlus"="\\Map\\User\\" [HKEY_LOCAL_MACHINE\Software\BlueByte\Siedler3\1.0\General] "BannerId"=dword:00000000 "BannerSubId"=dword:00000000 "BuildHelp"=dword:00000001 "Campaigns"=hex:20,72,d5,87,23,9c,bf,aa,b1,14,78,5c,d2,f9,5b,63,13,57,37,5b,7a,\ 65,7b,3d,7b,3b,48,62,fa,a0,77,6c,56,7a,43,1a,81,91,32,a4,df,fb,53,70,e2,48,\ 2b,ed,1b,87,31,b1,d1,00 "CampaignsPlus"=hex:c2,43,d4,d6,2c,17,a2,80,e4,d1,56,8b,a1,94,17,72,d9,5b,9d,\ 40,04,23,cd,69,74,1a,0b,cc,f4,c5,c6,c6,b8,e1,60,d8,b5,ee,16,73,0c,63,59,75,\ b3,b7,e5,2c,d2,db,bd,b7,20,00 "CDAudio"=dword:00000002 "ClanFlag"=dword:00000000 "FirstLogon"=dword:00000001 "FogSpeed"=dword:00000001 "Font"="MS Sans Serif" "FontSize"=dword:0000000f "GameZoneSelection"=dword:000001ff "GDIMouse"=dword:00000001 "Gold"=dword:00000001 "Intro"=dword:00000001 "Language"=dword:00000009 "MessageLevel"=dword:00000009 "Mission"=dword:00000001 "Newbie"=dword:00000000 "NoAlpha"=dword:00000000 "Playername"="Player" "Plus"=dword:00000001 "Resolution"=dword:00000000 "ScrollMode"=dword:00000000 "ScrollSpeed"=dword:00000005 "SoundFormat"=dword:00000001 "Tips&Tricks"=dword:00000001 "VideoFormat"=dword:00000001 "WaitVBlank"=dword:00000001 [HKEY_LOCAL_MACHINE\Software\BlueByte\Siedler3\1.0\Patches] "convert"="0"' CONTENT_GAME0_BIN_FILES=" $registry_dump_init_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_init_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # Set serial number registry_dump_serial_file='registry-dumps/serial.reg' registry_dump_serial_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\BlueByte\Siedler3\1.0\General] "SingleNumber"="%SingleNumber%"' CONTENT_GAME1_BIN_FILES=" $registry_dump_serial_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_serial_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" APP_MAIN_PRERUN="$APP_MAIN_PRERUN # Set serial number ## For some reason the game erases it on first launch, ## so we reset it prior to each launch. \$(regedit_command) '$registry_dump_serial_file'" # 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)" # Include required extra DLL library mv '__support/add/winmmxp.dll' '_inmm.dll' # Set required registry keys mkdir --parents "$(dirname "$registry_dump_init_file")" printf '%s' "$registry_dump_init_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file" # Set serial number game_serial=$(grep 'SingleNumber' 'regs.cmd' | cut --delimiter='"' --fields=4) mkdir --parents "$(dirname "$registry_dump_serial_file")" printf '%s' "$registry_dump_serial_content" | sed "s/%SingleNumber%/${game_serial}/" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_serial_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Set the CPU affinity to a single core, to avoid performance issues. ## cf. https://bugs.winehq.org/show_bug.cgi?id=32478 game_exec_line() { cat <<- 'EOF' # Set the CPU affinity to a single core, to avoid performance issues. # cf. https://bugs.winehq.org/show_bug.cgi?id=32478 taskset --cpu-list 0 "$(wine_command)" s3.exe "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-thea-2.sh0000755000000000000000000000461414471751340013245 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Thea 2: The Shattering # send your bug reports to bugs@dotslashplay.it ### script_version=20250223.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='thea-2' GAME_NAME='Thea 2: The Shattering' ARCHIVE_BASE_1_NAME='setup_thea_2_the_shattering_2.0601.0679_(64bit)_(64998).exe' ARCHIVE_BASE_1_MD5='c97170923a801aa0fc3579d5802c755f' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_thea_2_the_shattering_2.0601.0679_(64bit)_(64998)-1.bin' ARCHIVE_BASE_1_PART1_MD5='d9d75f3cc2809688bdad4b50bfc07941' ARCHIVE_BASE_1_SIZE='6366481' ARCHIVE_BASE_1_VERSION='2.0601.0679-gog64998' ARCHIVE_BASE_1_URL='https://www.gog.com/game/thea_2_the_shattering' ARCHIVE_BASE_0_NAME='setup_thea_2_the_shattering_2.0603.0666c_(64bit)_(38776).exe' ARCHIVE_BASE_0_MD5='bbcbc5777263f2511d53374bb5799986' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_thea_2_the_shattering_2.0603.0666c_(64bit)_(38776)-1.bin' ARCHIVE_BASE_0_PART1_MD5='028c57b5a383336387c1de382416d24d' ARCHIVE_BASE_0_SIZE='6200000' ARCHIVE_BASE_0_VERSION='2.0603.0666-gog38776' UNITY3D_NAME='thea2' CONTENT_PATH_DEFAULT='.' USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_data/Profiles ${UNITY3D_NAME}_data/streamingassets/DataHistory" 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 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-theme-hospital.sh0000755000000000000000000000700214471751340015102 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Theme Hospital # send your bug reports to bugs@dotslashplay.it ### script_version=20250223.5 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='theme-hospital' GAME_NAME='Theme Hospital' ARCHIVE_BASE_2_NAME='setup_theme_hospital_v3_(28027).exe' ARCHIVE_BASE_2_MD5='cb1a467f48532d3607fa5b9dd571a342' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='198293' ARCHIVE_BASE_2_VERSION='1.0-gog28027' ARCHIVE_BASE_2_URL='https://www.gog.com/game/theme_hospital' ARCHIVE_BASE_1_NAME='setup_theme_hospital_v3_(28027).exe' ARCHIVE_BASE_1_MD5='e4cba7cfddd5dd2d4baf4761bc86a8c8' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='200000' ARCHIVE_BASE_1_VERSION='1.0-gog28027' ARCHIVE_BASE_0_NAME='setup_theme_hospital_2.1.0.8.exe' ARCHIVE_BASE_0_MD5='c1dc6cd19a3e22f7f7b31a72957babf7' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='210000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.7' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_DOSBOX_FILES=' connect.bat dos4gw.exe hospital.exe hospital.cfg modem.ini' CONTENT_GAME_DATA_FILES=' anims cfg data datam intro levels qdata qdatam save sound' CONTENT_DOC_DATA_FILES=' manual.pdf netplay.txt readme.txt' USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.cfg *.ini' APP_MAIN_EXE='hospital.exe' APP_MAIN_TYPE_CORSIXTH='custom' APP_MAIN_ICON='app/goggame-1207659026.ico' APP_MAIN_ICON_0='goggame-1207659026.ico' PACKAGES_LIST=' PKG_DOSBOX PKG_CORSIXTH PKG_DATA' PKG_ENGINE_ID="$GAME_ID" PKG_DOSBOX_ID="${PKG_ENGINE_ID}-dosbox" PKG_DOSBOX_PROVIDES=" $PKG_ENGINE_ID" PKG_DOSBOX_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_CORSIXTH_ID="${PKG_ENGINE_ID}-corsixth" PKG_CORSIXTH_PROVIDES=" $PKG_ENGINE_ID" PKG_CORSIXTH_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_CORSIXTH_DEPENDENCIES_COMMANDS=' corsix-th' 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 ## DOSBox launchers_generation 'PKG_DOSBOX' ## CorsixTH custom_launcher() { launcher_headers cat <<- 'OUTEREOF' # Set the path to game data on first launch config_path="${XDG_CONFIG_HOME:-"${HOME}/.config"}/CorsixTH/config.txt" if [ ! -e "$config_path" ]; then mkdir --parents "$(dirname "$config_path")" cat > "$config_path" <<- EOF OUTEREOF cat <<- OUTEREOF theme_hospital_install = [[$(path_game_data)]] OUTEREOF cat <<- 'OUTEREOF' EOF fi corsix-th "$@" OUTEREOF launcher_exit } launchers_generation 'PKG_CORSIXTH' # Build packages packages_generation printf '\n' printf 'CorsixTH:' print_instructions 'PKG_DATA' 'PKG_CORSIXTH' printf 'DOSBox:' print_instructions 'PKG_DATA' 'PKG_DOSBOX' # Clean up working_directory_cleanup exit 0 games/play-tooth-and-tail.sh0000755000000000000000000000621214471751340015005 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Tooth and Tail # send your bug reports to bugs@dotslashplay.it ### script_version=20250224.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tooth-and-tail' GAME_NAME='Tooth and Tail' ## This DRM-free archive is no longer available for sale from Humble Bundle. ARCHIVE_BASE_0_NAME='toothandtail_linux.zip' ARCHIVE_BASE_0_MD5='5a01a61889e795b538d3db288a6f519d' ARCHIVE_BASE_0_VERSION='1.6.1.1-humble1' ARCHIVE_BASE_0_SIZE='586332' CONTENT_PATH_DEFAULT='Release' ## Include shipped libraries that can not be replaced by system ones CONTENT_LIBS_LIBS_FILES=' libfmod.so.10 libfmodstudio.so.10 libmojoshader.so libtheorafile.so' CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_LIBS_FILES" CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' content ToothAndTail.exe ToothAndTail.exe.config fr/ToothAndTail.resources.dll FNA.dll FNA.dll.config Glide.dll Newtonsoft.Json.dll' APP_MAIN_EXE='ToothAndTail.exe' APP_MAIN_ICON='ToothAndTail.exe' 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 libSDL2_image-2.0.so.0' ## TODO: Check if libvorbisfile.so.3 is actually required PKG_MAIN_DEPENDENCIES_LIBRARIES="$PKG_MAIN_DEPENDENCIES_LIBRARIES libvorbisfile.so.3" PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Net.dll System.Net.Http.dll System.Runtime.Serialization.dll System.Security.dll System.Windows.Forms.dll System.Xml.dll System.Xml.Linq.dll' 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' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libogg.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libtheoradec.so.1 libvorbis.so.0' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_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 content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tzar.sh0000755000000000000000000000616014471751340013143 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Tzar: The Burden of the Crown # send your bug reports to bugs@dotslashplay.it ### script_version=20241106.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='tzar' GAME_NAME='Tzar: The Burden of the Crown' ARCHIVE_BASE_0_NAME='setup_tzar_1.01_(10554).exe' ARCHIVE_BASE_0_MD5='2c0be6258d5987fadb2d6e21e5bfae2a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='320000' ARCHIVE_BASE_0_VERSION='1.10-gog10554' ARCHIVE_BASE_0_URL='https://www.gog.com/game/tzar_the_burden_of_the_crown' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' setup.exe tzarcampaign.exe tzaredit.exe tzar.exe *.dll' CONTENT_GAME_DATA_FILES=' campaign data help hero icons images local maps movies music sound' CONTENT_GAME0_BIN_RELATIVE_PATH='__support/app' CONTENT_GAME0_BIN_FILES=' tzar.ini' CONTENT_GAME0_DATA_RELATIVE_PATH='__support/app' CONTENT_GAME0_DATA_FILES=' demos' CONTENT_DOC_DATA_FILES=' tzar110.txt *.pdf' USER_PERSISTENT_FILES=' tzar.ini' USER_PERSISTENT_DIRECTORIES=' demos save' # Microsoft Visual C++ library is required by the game settings application WINE_WINETRICKS_VERBS='mfc42' APP_MAIN_EXE='tzar.exe' APP_SETTINGS_ID="${GAME_ID}-settings" APP_SETTINGS_NAME="$GAME_NAME - Settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='setup.exe' APP_EDIT_ID="${GAME_ID}-edit" APP_EDIT_NAME="$GAME_NAME - Map Editor" APP_EDIT_EXE='tzaredit.exe' APP_CAMPAIGN_ID="${GAME_ID}-campaign" APP_CAMPAIGN_NAME="$GAME_NAME - Campaign Editor" APP_CAMPAIGN_EXE='tzarcampaign.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' # Play the introduction video on launch REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} dos2unix unix2dos" # 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 'GAME0_BIN')" # Play the introduction video on launch config_file='tzar.ini' config_section='\[DEFAULTS\]' config_entry='SCREENCHOICE=3' sed_expression="s/${config_section}/&\\n${config_entry}/" dos2unix --quiet "$config_file" sed --in-place --expression="$sed_expression" "$config_file" unix2dos --quiet "$config_file" ) # 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-valhalla-hills.sh0000755000000000000000000000457214471751340015065 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Valhalla Hills # send your bug reports to bugs@dotslashplay.it ### script_version=20250224.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='valhalla-hills' GAME_NAME='Valhalla Hills' ARCHIVE_BASE_0_NAME='gog_valhalla_hills_2.3.0.5.sh' ARCHIVE_BASE_0_MD5='59286a003e654ae9f571abccc0375053' ARCHIVE_BASE_0_SIZE='1251393' ARCHIVE_BASE_0_VERSION='1.05.17-gog2.3.0.5' ARCHIVE_BASE_0_URL='https://www.gog.com/game/valhalla_hills' UNREALENGINE4_NAME='ValhallaHills' CONTENT_PATH_DEFAULT='data/noarch/game' USER_PERSISTENT_DIRECTORIES=' Saved' APP_MAIN_EXE='ValhallaHills/Binaries/Linux/ValhallaHills-Linux-Shipping' APP_MAIN_ICON='../support/icon.png' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland" if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' 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 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpthread.so.0 libQt5Core.so.5 libQt5Gui.so.5 libQt5Widgets.so.5 libQtCore.so.4 libQtGui.so.4 librt.so.1 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 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-warcraft-1.sh0000755000000000000000000000410014471751340014122 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warcraft # send your bug reports to bugs@dotslashplay.it ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warcraft-1' GAME_NAME='Warcraft: Orcs & Humans' ARCHIVE_BASE_1_NAME='setup_warcraft_orcs__humans_1.2_(28330).exe' ARCHIVE_BASE_1_MD5='3ec0ea59f7a1c4413792da43cf9affe7' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='642566' ARCHIVE_BASE_1_VERSION='1.2-gog28330' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warcraft_orcs_and_humans' ARCHIVE_BASE_0_NAME='setup_warcraft_orcs__humans_1.2_(28330).exe' ARCHIVE_BASE_0_MD5='79d30dbb24395d32f77156a2e2b4639c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='642266' ARCHIVE_BASE_0_VERSION='1.2-gog28330' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' data drivers *.bin *.cue *.exe *.war' CONTENT_DOC_MAIN_PATH=' *.txt' GAME_IMAGE='war1.cue' USER_PERSISTENT_FILES=' *.SAV *.war' APP_MAIN_EXE='war.exe' APP_MAIN_ICON='app/goggame-1706049527.ico' ## Use fixed cpu cycles, to avoid scrolling issues. APP_MAIN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 30000' # 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 package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-mechanicus.sh0000755000000000000000000000506514471751340016662 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Warhammer 40,000: Mechanicus # send your bug reports to bugs@dotslashplay.it ### script_version=20250512.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='warhammer-40k-mechanicus' GAME_NAME='Warhammer 40,000: Mechanicus' ARCHIVE_BASE_1_NAME='warhammer_40_000_mechanicus_1_4_10_0_63084.sh' ARCHIVE_BASE_1_MD5='92e8a72016854efe19ebab5cc7906c1b' ARCHIVE_BASE_1_SIZE='11000000' ARCHIVE_BASE_1_VERSION='1.4.10.0-gog63084' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warhammer_40000_mechanicus' ARCHIVE_BASE_0_NAME='warhammer_40_000_mechanicus_1_4_6_1_47625.sh' ARCHIVE_BASE_0_MD5='672029ff6ad1ff34946201ca4d423737' ARCHIVE_BASE_0_SIZE='11000000' ARCHIVE_BASE_0_VERSION='1.4.6.1-gog47625' UNITY3D_NAME='Mechanicus' UNITY3D_PLUGINS=' libfmod.so libfmodL.so libfmodstudioL.so libfmodstudio.so libgvraudio.so libresonanceaudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_SHAREDASSETS_FILES=" ${UNITY3D_NAME}_Data/sharedassets*" PACKAGES_LIST=' PKG_BIN PKG_DATA_SHAREDASSETS 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' 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 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-windward.sh0000755000000000000000000000577014471751340014010 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Windward # send your bug reports to bugs@dotslashplay.it ### script_version=20250228.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='windward' GAME_NAME='Windward' ## This game is no longer available for sale from gog.com. ARCHIVE_BASE_GOG_2_NAME='gog_windward_2.36.0.40.sh' ARCHIVE_BASE_GOG_2_MD5='6afbdcfda32a6315139080822c30396a' ARCHIVE_BASE_GOG_2_SIZE='130000' ARCHIVE_BASE_GOG_2_VERSION='20170617.0-gog2.36.0.40' ARCHIVE_BASE_GOG_1_NAME='gog_windward_2.35.0.39.sh' ARCHIVE_BASE_GOG_1_MD5='12fffaf6f405f36d2f3a61b4aaab89ba' ARCHIVE_BASE_GOG_1_SIZE='130000' ARCHIVE_BASE_GOG_1_VERSION='20160707.0-gog2.35.0.39' ARCHIVE_BASE_GOG_0_NAME='gog_windward_2.35.0.38.sh' ARCHIVE_BASE_GOG_0_MD5='f5ce09719bf355e48d2eac59b84592d1' ARCHIVE_BASE_GOG_0_SIZE='120000' ARCHIVE_BASE_GOG_0_VERSION='20160707-gog2.35.0.38' ## The DRM-free build of Windard is no longer available for sale from humblebundle.com. ARCHIVE_BASE_HUMBLE_1_NAME='WindwardLinux_HB_1505248588.zip' ARCHIVE_BASE_HUMBLE_1_MD5='9ea99157d13ae53905757f2fb3ab5b54' ARCHIVE_BASE_HUMBLE_1_SIZE='130000' ARCHIVE_BASE_HUMBLE_1_VERSION='20170617.0-humble170912' ARCHIVE_BASE_HUMBLE_0_NAME='WindwardLinux_HB.zip' ARCHIVE_BASE_HUMBLE_0_MD5='f2d1a9a91055ecb6c5ce1bd7e3ddd803' ARCHIVE_BASE_HUMBLE_0_SIZE='130000' ARCHIVE_BASE_HUMBLE_0_VERSION='20160707-humble1' UNITY3D_NAME='Windward' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='Windward' CONTENT_PATH_DEFAULT_HUMBLE_0='.' FAKE_HOME_PERSISTENT_DIRECTORIES=' Documents/Windward' 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 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 # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-wingspan.sh0000755000000000000000000000555214471751340014015 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Wingspan # send your bug reports to bugs@dotslashplay.it ### script_version=20250226.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='wingspan' GAME_NAME='Wingspan' ARCHIVE_BASE_3_NAME='setup_wingspan_245_(79908).exe' ARCHIVE_BASE_3_MD5='7d25219f5ea206a5b07075da912f4eeb' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_wingspan_245_(79908)-1.bin' ARCHIVE_BASE_3_PART1_MD5='77a3548ce92b64f2528cb04707ce0002' ARCHIVE_BASE_3_SIZE='1819577' ARCHIVE_BASE_3_VERSION='245-gog79908' ARCHIVE_BASE_3_URL='https://www.gog.com/game/wingspan' ARCHIVE_BASE_2_NAME='setup_wingspan_205_(73380).exe' ARCHIVE_BASE_2_MD5='11f9487bfac4640f9c6b60ba571b9d3f' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_wingspan_205_(73380)-1.bin' ARCHIVE_BASE_2_PART1_MD5='d45eed5ada273495ec6686283cf2cb33' ARCHIVE_BASE_2_SIZE='1713414' ARCHIVE_BASE_2_VERSION='205-gog73380' ARCHIVE_BASE_1_NAME='setup_wingspan_102_(53871).exe' ARCHIVE_BASE_1_MD5='1628a30ffccd86d875895e2d166c1cde' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_wingspan_102_(53871)-1.bin' ARCHIVE_BASE_1_PART1_MD5='7a2baede2444e183941698a73e7a3044' ARCHIVE_BASE_1_SIZE='1100000' ARCHIVE_BASE_1_VERSION='102-gog53871' ARCHIVE_BASE_0_NAME='setup_wingspan_83_(50869).exe' ARCHIVE_BASE_0_MD5='5d68e6a8027e34504e86075a96e8bc15' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_wingspan_83_(50869)-1.bin' ARCHIVE_BASE_0_PART1_MD5='110175d9b0bca8b33b13e826da0a7b99' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='83-gog50869' UNITY3D_NAME='wingspan' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Monster Couch/Wingspan' 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 content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-worms-1.sh0000755000000000000000000000564214471751340013474 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Worms United # send your bug reports to bugs@dotslashplay.it ### script_version=20250225.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='worms-1' GAME_NAME='Worms United' ARCHIVE_BASE_2_NAME='setup_worms_united_1.0_(28045).exe' ARCHIVE_BASE_2_MD5='28565f5ce89233e032e6fb6d98143c70' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='206931' ARCHIVE_BASE_2_VERSION='1.0-gog28045' ARCHIVE_BASE_2_URL='https://www.gog.com/game/worms_united' ARCHIVE_BASE_1_NAME='setup_worms_united_1.0_(28045).exe' ARCHIVE_BASE_1_MD5='fd76a7ea0a94f0e3e9cdd2b3b3f9fdd4' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='206589' ARCHIVE_BASE_1_VERSION='1.0-gog28045' ARCHIVE_BASE_0_NAME='setup_worms_united_2.0.0.20.exe' ARCHIVE_BASE_0_MD5='619421cafa20f478d19222e3f49d77b6' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='220000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.20' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' bin batch data extras dos4gw.exe worms.cfg worms.dat worms.gog worms*.ogg' CONTENT_DOC_MAIN_FILES=' docs manual.pdf' GAME_IMAGE='worms.dat' USER_PERSISTENT_FILES=' worms.cfg' USER_PERSISTENT_DIRECTORIES=' data' APP_MAIN_TYPE='dosbox' APP_MAIN_EXE='bin\wrms.exe' APP_MAIN_ICON='goggame-1207658991.ico' APP_MAIN_ICON_0='gfw_high.ico' ## Set required environment variables APP_MAIN_DOSBOX_PRERUN=' SET wormscfg=C:\\worms.cfg SET wormscd=D:' ## Play introduction videos APP_MAIN_DOSBOX_PRERUN="${APP_MAIN_DOSBOX_PRERUN:-}"' D:\\fmv\\play /modex D:\\fmv\\logo2.avi D:\\fmv\\play /modex D:\\fmv\\logo1.avi D:\\fmv\\play /modex D:\\fmv\\cinadd.avi D:\\fmv\\play /modex D:\\fmv\\armup.avi bin\\black.exe' # 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 ## Work around the binary presence check ## The regular check would fail due to "\" being used as a path separator. launcher_target_presence_check() { local application_exe_path application_exe_path=$(application_exe_path 'bin/wrms.exe') test -f "$application_exe_path" } launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-x-morph-defense.sh0000755000000000000000000000463314471751340015167 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # X-Morph: Defense # send your bug reports to bugs@dotslashplay.it ### script_version=20250311.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='x-morph-defense' GAME_NAME='X-Morph: Defense' ARCHIVE_BASE_0_NAME='setup_x-morph_defense_complete_edition_1.0.0_(64bit)_(27014).exe' ARCHIVE_BASE_0_MD5='9d9eecd4c40390e6944f745720421931' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_x-morph_defense_complete_edition_1.0.0_(64bit)_(27014)-1.bin' ARCHIVE_BASE_0_PART1_MD5='2ca0e0fbd9305b419e1c1ce2f706753c' ARCHIVE_BASE_0_PART2_NAME='setup_x-morph_defense_complete_edition_1.0.0_(64bit)_(27014)-2.bin' ARCHIVE_BASE_0_PART2_MD5='939bd7b04555bbedcf9a50876c461d76' ARCHIVE_BASE_0_VERSION='1.0.0-gog27014' ARCHIVE_BASE_0_SIZE='4600000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/xmorph_defense_complete_edition' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin/*.dll bin/*.exe conf' CONTENT_GAME_DATA_FILES=' packs' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/X-Morph Defense' APP_MAIN_EXE='bin/shooter_win64_release.exe' 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 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 \$(wine_command) shooter_win64_release.exe "\$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-xenonauts.sh0000755000000000000000000000744614471751340014217 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Jacek Szafarkiewicz set -o errexit ### # Xenonauts # send your bug reports to bugs@dotslashplay.it ### script_version=20250225.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='xenonauts' GAME_NAME='Xenonauts' ARCHIVE_BASE_GOG_1_NAME='xenonauts_en_1_65_21328.sh' ARCHIVE_BASE_GOG_1_MD5='bff1d949f13f2123551a964475ea655e' ARCHIVE_BASE_GOG_1_SIZE='2900000' ARCHIVE_BASE_GOG_1_VERSION='1.65-gog21328' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/xenonauts' ARCHIVE_BASE_GOG_0_NAME='gog_xenonauts_2.1.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='7830dee208e779f97858ee81a97c9327' ARCHIVE_BASE_GOG_0_SIZE='2900000' ARCHIVE_BASE_GOG_0_VERSION='1.63-gog2.1.0.4' ARCHIVE_BASE_HUMBLE_1_NAME='Xenonauts-DRMFree-Linux-2016-03-03.sh.zip' ARCHIVE_BASE_HUMBLE_1_MD5='9de3cb3353c64c9386207e1cc547391a' ARCHIVE_BASE_HUMBLE_1_SIZE='5065357' ARCHIVE_BASE_HUMBLE_1_VERSION='1.65-humble160303' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/xenonauts' ARCHIVE_BASE_HUMBLE_0_NAME='Xenonauts-DRMFree-Linux-2016-03-03.sh' ARCHIVE_BASE_HUMBLE_0_MD5='f4369e987381b84fde64be569fbab913' ARCHIVE_BASE_HUMBLE_0_SIZE='2700000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.65-humble160303' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_BIN_RELATIVE_PATH_HUMBLE='x86' CONTENT_GAME_BIN_FILES=' Xenonauts.bin.x86' ## Xenonauts.bin.x86 is linked against libsteam_api.so, so this library can not be dropped. CONTENT_LIBS_BIN_RELATIVE_PATH_GOG='lib' CONTENT_LIBS_BIN_RELATIVE_PATH_HUMBLE='x86/lib' CONTENT_LIBS_BIN_FILES=' libsteam_api.so' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES=' assets extras Icon.*' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_DOC_DATA_FILES=' README.linux *.pdf' APP_MAIN_EXE='Xenonauts.bin.x86' APP_MAIN_ICON_GOG='Icon.png' APP_MAIN_ICON_HUMBLE='noarch/Icon.png' ## Skip the launcher, as it can cause a crash related to fonts rendering on some setups APP_MAIN_OPTIONS='-nolauncher' ## The game crashes on launch when using the wayland backend of SDL, ## even when using the system-provided build of SDL. APP_MAIN_PRERUN=' # The game crashes on launch when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' 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 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1 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 case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_1') ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Xenonauts-DRMFree-Linux-2016-03-03.sh" archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" ;; 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 LICENSE0000644000000000000000000000346514471751340010577 0ustar rootrootThis license applies to all files outside of the "games" subdirectory, 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 this one. # BSD-2-Clause Copyright © 2015 Antoine Le Gonidec Copyright © 2016 Mopi Copyright © 2017 Jacek Szafarkiewicz Copyright © 2017 Phil Morrell Copyright © 2018 Janeene Beeforth Copyright © 2018 mortalius Copyright © 2019 BetaRays Copyright © 2020 HS-157 Copyright © 2021 Hoël Bézier Copyright © 2021 Anna Lea 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. Makefile0000644000000000000000000000452614471751340011231 0ustar rootrootcollection_name = 45_strategy UID := $(shell id --user) ifeq ($(UID),0) prefix = /usr/local datadir = $(prefix)/share/games else ifeq ($(XDG_DATA_HOME),) XDG_DATA_HOME := $(HOME)/.local/share endif prefix = $(XDG_DATA_HOME) datadir = $(prefix) 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 LICENSE Makefile README.md mkdir --parents dist LC_ALL=C tar cf dist/$(TARBALL) $(TAR_OPTIONS) games/*.sh LICENSE Makefile README.md ifeq ($(NO_SIGN),0) rm --force dist/$(TARBALL).asc gpg --armor --detach-sign dist/$(TARBALL) endif # Run syntax checks, relying on ShellCheck GAME_SCRIPTS := $(wildcard games/play-*.sh) GAME_SCRIPTS_TESTS := $(addprefix shellcheck_, $(GAME_SCRIPTS)) .PHONY: check $(GAME_SCRIPTS_TESTS) check: $(GAME_SCRIPTS_TESTS) $(GAME_SCRIPTS_TESTS): SHELLCHECK_SOURCES := /usr/share/games/play.it:/usr/share/play.it ## This is a unicode quote. Delete and retype it (or ignore/doublequote for literal). $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC1112 ## Expressions don't expand in single quotes, use double quotes for that. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2016 ## foo appears unused. Verify it or export it. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2034 ## Don't use variables in the printf format string. Use printf '..%s..' "$foo". $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2059 ## In POSIX sh, 'local' is undefined. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC3043 $(GAME_SCRIPTS_TESTS): shellcheck_%: % shellcheck --extended-analysis=false --external-sources --source-path=$(SHELLCHECK_SOURCES) $(SHELLCHECK_EXCLUDE) $< README.md0000644000000000000000000002006514471751340011044 0ustar rootroot# ./play.it strategy games collection The codebase is maintained at [https://git.dotslashplay.it/games-strategy/] Bug reports should be sent to [bugs@dotslashplay.it], and support requests to [requests@dotslashplay.it] [https://git.dotslashplay.it/games-strategy/]: https://git.dotslashplay.it/games-strategy/ [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 strategy games. These games rely on long-term planning. They often include military troops management, but can be more peaceful with a focus on resource gathering and logistics. 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 ./play.it, you can install it from this git repository. ``` git clone --branch main --depth 1 https://git.dotslashplay.it/games-strategy play.it-strategy.git cd play.it-strategy.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-strategy ``` 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. ## Supported games - Abandon Ship - Afterlife - Age of Wonders series: - Age of Wonders - Age of Wonders: Planetfall - AI War 2 - Airline Tycoon Deluxe - Anno series: - Anno 1503 - Anno 1404 - Anomaly series: - Anomaly: Warzone Earth - Anomaly 2 - Anomaly Defenders - Aquamarine - As Far As The Eye - Ash of Gods: Redemption - Aven Colony - Banished - Battle Worlds: Kronos - Battlefleet Gothic: Armada - Beholder series: - Beholder - Beholder 2 - Book of Hours - Braveland series: - Braveland - Braveland Wizard - Braveland Pirate - Breach & Clear series: - Breach & Clear - Breach & Clear: Deadline - Caravan - Cat Cafe Manager - Chaos Reborn - Charterstone - Chroma Squad - Civilization 4 - Coffee Noir - Business Detective Game - Commandos 3: Destination Berlin - Cultist Simulator - Darwinia - Dawnmaker - Defender's Quest: Valley of the Forgotten - Democratic Socialism Simulator - Door Kickers - Dorfromantik - Dungeons 2 - Empire Earth - Endless Space - Endzone: A World Apart - Etherlords - Europa Universalis 2 - Everything is Garbage - Factory Town - Fallout Tactics - Fantasy General - Farabel - Fox & Flock - Gangsters: Organized Crime - GemCraft - Frostborn Wrath - Giants: Citizen Kabuto - Glittermitten Grove - Gnomoria - Godhood - Graveyard Keeper - GreedCorp - Habitat - Halcyon 6 - Hard West - Heroes of Might and Magic series: - Heroes of Might and Magic - Heroes of Might and Magic 2 - Heroes of Might and Magic 3 - Heroes of Chronicles - Hive Time - Homeseek - Impossible Creatures - Infinium Strike - Into the Breach - Invisible Inc. - Iratus: Lord of the Dead - Iris and the Giant - Iron Harvest - Ironclad Tactics - Ixion - Jars - Kapital: Sparks of Revolution - King's Bounty: The Legend - Legend of Keepers - Loria - Master of Magic - Master of Orion 2 - Möbius Front '83 - Multiwinia - Nebuchadnezzar - Niche - a genetics survival game - No Pineapple Left Behind - Nomads of Driftland - Old World - Perimeter - Political Animals - Populous series: - Populous: Promised Lands - Populous 2 - Populous: The Beginning - Prison Architect - Prophour23 - Ravenous Devils - Rimworld - Rymdkapsel - Satellite Reign - Sigma Theory - Slime Rancher - Songs of Silence - Space Pirates and Zombies - Space Run: Fast and safe delivery - Spacecom - Spellforce - Spore - Stardew Valley - Sudden Strike 4 - Surviving Mars - Symmetry - The Fertile Crescent - The Guild series: - The Guild 2 - The Guild 2 Renaissance - The Settlers 3 - Thea 2: The Shattering - Theme Hospital - Tooth and Tail - Tzar: The Burden of the Crown - Valhalla Hills - Warcraft: Orcs & Humans - Warhammer 40,000: Mechanicus - Windward - Wingspan - Worms United - X-Morph: Defense - Xenonauts ## 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. ### Fediverse ./play.it has an account on the Fediverse, you can follow it for news about the development or use it to contact us: [@playit@fediverse.dotslashplay.it] [@playit@fediverse.dotslashplay.it]: https://fediverse.dotslashplay.it/snac/playit