games/play-a-dance-of-fire-and-ice.sh0000700000000000000000000000433314471751340016264 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Dance of Fire and Ice # send your bug reports to bugs@dotslashplay.it ### script_version=20241021.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='a-dance-of-fire-and-ice' GAME_NAME='A Dance of Fire and Ice' ARCHIVE_BASE_1_NAME='a-dance-of-fire-and-ice-linux.zip' ARCHIVE_BASE_1_MD5='adcffda56ec76b5ae8c3ba89e9b9bb93' ARCHIVE_BASE_1_SIZE='2069741' ARCHIVE_BASE_1_VERSION='2.6.3-itch.2023.12.16' ARCHIVE_BASE_1_URL='https://fizzd.itch.io/a-dance-of-fire-and-ice' ARCHIVE_BASE_0_NAME='a-dance-of-fire-and-ice-linux.zip' ARCHIVE_BASE_0_MD5='caf90b5416730395963e26aeb76c1155' ARCHIVE_BASE_0_SIZE='965475' ARCHIVE_BASE_0_VERSION='2.5.0-itch.2023.06.20' UNITY3D_NAME='ADanceOfFireAndIce' ## The game will crash on launch if libsteam_api.so is not available. UNITY3D_PLUGINS=' libadofaipulse.so libStandaloneFileBrowser.so libsteam_api.so' 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 libpulse.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-a-musical-story.sh0000700000000000000000000000500314471751340015175 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Musical Story # send your bug reports to bugs@dotslashplay.it ### script_version=20250707.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='a-musical-story' GAME_NAME='A Musical Story' ARCHIVE_BASE_0_NAME='a_musical_story_1_0_5_53408.sh' ARCHIVE_BASE_0_MD5='028d274ff2f597d5fb5ed0116bee990a' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.0.5-gog53408' ARCHIVE_BASE_0_URL='https://www.gog.com/game/' UNITY3D_NAME='MusicalStory' UNITY3D_PLUGINS=' libAkSoundEngine.so libEOSSDK-Linux-Shipping.so' ## Without the Steam library, the game menu ## is never displayed after the introduction logos. 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 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 ## Work around the game engine PulseAudio requirement. game_exec_line() { local application application="$1" local application_options application_options=$(application_options "$application") cat <<- EOF # Work around the game engine PulseAudio requirement. if ! command -v pulseaudio >/dev/null 2>&1 && command -v apulse >/dev/null 2>&1 then apulse ./MusicalStory.x86_64 $application_options "\$@" else ./MusicalStory.x86_64 $application_options "\$@" fi EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-accelerate.sh0000700000000000000000000000373414471751340014245 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Accelerate # send your bug reports to bugs@dotslashplay.it ### script_version=20250704.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='accelerate' GAME_NAME='Accelerate' ARCHIVE_BASE_0_NAME='acceleratelinux.zip' ARCHIVE_BASE_0_MD5='42d13702bbec46f8cd2c357886fde0c0' ARCHIVE_BASE_0_SIZE='230000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://whitehatcat.itch.io/accelerate' CONTENT_PATH_DEFAULT='acceleratelinux' CONTENT_GAME_BIN_FILES=' acceleratelinux.x86_64' CONTENT_GAME_DATA_FILES=' acceleratelinux.pck' APP_MAIN_EXE='acceleratelinux.x86_64' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' 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-action-henk.sh0000700000000000000000000000471714471751340014357 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Action Henk # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='action-henk' GAME_NAME='Action Henk' ## This DRM-free archive is no longer available for sale from Humble Bundle. ARCHIVE_BASE_0_NAME='actionhenk_bundle_linux.zip' ARCHIVE_BASE_0_MD5='eb0d74c8fd2832a4d39de9d52af514f3' ARCHIVE_BASE_0_SIZE='2325670' ARCHIVE_BASE_0_VERSION='1.0-humble1' UNITY3D_NAME='ActionHenk' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game crashes on launch if CSteamworks library is not available. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-alan-wakes-american-nightmare.sh0000700000000000000000000000555414471751340017733 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Alan Wake's American Nightmare # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.5 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='alan-wakes-american-nightmare' GAME_NAME='Alan Wake’s American Nightmare' ARCHIVE_BASE_0_NAME='setup_alan_wake_american_nightmare_2.1.0.24.exe' ARCHIVE_BASE_0_MD5='dc500730b639a48897c00f5791e5b2f3' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2500000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.24' ARCHIVE_BASE_0_URL='https://www.gog.com/game/alan_wakes_american_nightmare' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll fmodex.dll *_w32_f.dll alan_wakes_american_nightmare.exe' ## TODO: Build dedicated localisation packages. CONTENT_GAME0_BIN_FILES=' language setup.exe' CONTENT_GAME_DATA_FILES=' data shaders' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Remedy/AmericanNightmare_GOG_Version' ## Without native d3dcompiler_47, shaders compilation fails with: ## ## 0024:err:d3dcompiler:D3DCompile2 Failed to compile shader, vkd3d result -5. ## 0024:err:d3dcompiler:D3DCompile2 Shader log: ## 0024:err:d3dcompiler:D3DCompile2 :1:221: E5017: Aborting due to not yet implemented feature: Instruction type HLSL_IR_LOOP. ## 0024:err:d3dcompiler:D3DCompile2 :1:221: E5017: Aborting due to not yet implemented feature: Instruction type HLSL_IR_LOOP. ## 0024:err:d3dcompiler:D3DCompile2 :1:221: E5017: Aborting due to not yet implemented feature: Instruction type HLSL_IR_LOOP. ## 0024:err:d3dcompiler:D3DCompile2 ## ## (WINE 10.0) WINE_WINETRICKS_VERBS='d3dcompiler_47' APP_MAIN_EXE='alan_wakes_american_nightmare.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-anarcute.sh0000755000000000000000000000375414471751340013773 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Anarcute # send your bug reports to bugs@dotslashplay.it ### script_version=20240508.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='anarcute' GAME_NAME='Anarcute' ARCHIVE_BASE_32BIT_0_NAME='anarcute-windows-32.zip' ARCHIVE_BASE_32BIT_0_MD5='837ee19a38698bc71b1b78e5c05f9644' ARCHIVE_BASE_32BIT_0_SIZE='1400000' ARCHIVE_BASE_32BIT_0_VERSION='1.0-itch1' ARCHIVE_BASE_32BIT_0_URL='https://plug-in-digital.itch.io/anarcute' ARCHIVE_BASE_64BIT_0_NAME='anarcute-windows-64.zip' ARCHIVE_BASE_64BIT_0_MD5='f6af6f32f587cd195581358c1ed5f0c7' ARCHIVE_BASE_64BIT_0_SIZE='1400000' ARCHIVE_BASE_64BIT_0_VERSION='1.0-itch1' ARCHIVE_BASE_64BIT_0_URL='https://plug-in-digital.itch.io/anarcute' UNITY3D_NAME='anarcute' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Anarcute' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH_32BIT='32' PKG_BIN_ARCH_64BIT='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-ape-out.sh0000755000000000000000000000323614471751340013536 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Ape Out # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='ape-out' GAME_NAME='Ape Out' ARCHIVE_BASE_0_NAME='windows.zip' ARCHIVE_BASE_0_MD5='cccf8136c915b46691edd440e7c7f269' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://devolverdigital.itch.io/ape-out' UNITY3D_NAME='ApeOut' CONTENT_PATH_DEFAULT='windows' ## FIXME: Use persistent storage for game progress and settings. 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-assault-android-cactus.sh0000755000000000000000000000520314471751340016532 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Assault Android Cactus # send your bug reports to bugs@dotslashplay.it ### script_version=20250702.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='assault-android-cactus' GAME_NAME='Assault Android Cactus' # The following archive no longer available from Playism, # as they turned their store into yet another Steam keys reseller. ARCHIVE_BASE_1_NAMR='AssaultAndroidCactus_linux_20200121.zip' ARCHIVE_BASE_1_MD5='015e7a107514339abfbd05d831bc9e91' ARCHIVE_BASE_1_SIZE='1600000' ARCHIVE_BASE_1_VERSION='2020.01.21-playism' ARCHIVE_BASE_0_NAME='AssaultAndroidCactus_linux_Ver1.0_0401.zip' ARCHIVE_BASE_0_MD5='7a6e18fd525c46603cdd3f19f945d44b' ARCHIVE_BASE_0_SIZE='1400000' ARCHIVE_BASE_0_VERSION='1.0.0401-playism' UNITY3D_NAME='cactus' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_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-aztez.sh0000700000000000000000000000403114471751340013301 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Aztez # send your bug reports to bugs@dotslashplay.it ### script_version=20241107.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='aztez' GAME_NAME='Aztez' ARCHIVE_BASE_0_NAME='aztez_linux_8278.zip' ARCHIVE_BASE_0_MD5='a55092525d52960ad36932918dcadc5b' ARCHIVE_BASE_0_SIZE='705163' ARCHIVE_BASE_0_VERSION='1.02.8278-humble.2017.09.04' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/aztez' UNITY3D_NAME='Aztez' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Drop unused x86_64 libraries rm --recursive "$(unity3d_name)_Data/Mono/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-basingstoke.sh0000755000000000000000000000374714471751340014504 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Basingstoke # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='basingstoke' GAME_NAME='Basingstoke' ARCHIVE_BASE_0_NAME='basingstoke-linux.zip' ARCHIVE_BASE_0_MD5='46c7127a2bbf07f158b8a70eb44185f2' ARCHIVE_BASE_0_SIZE='720000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://puppygames001.itch.io/basingstoke' UNITY3D_NAME='Basingstoke' UNITY3D_PLUGINS=' libzipw.so ScreenSelector.so' CONTENT_PATH_DEFAULT='basingstoke' 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-battle-chef-brigade.sh0000755000000000000000000000377214471751340015742 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Battle Chef Brigade # send your bug reports to bugs@dotslashplay.it ### script_version=20250910.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='battle-chef-brigade' GAME_NAME='Battle Chef Brigade' ARCHIVE_BASE_0_NAME='battle_chef_brigade_14725_624_23675.sh' ARCHIVE_BASE_0_MD5='d35140bf757e387a2e47198f96356d00' ARCHIVE_BASE_0_SIZE='1300000' ARCHIVE_BASE_0_VERSION='14725.624-gog23675' ARCHIVE_BASE_0_URL='https://www.gog.com/game/battle_chef_brigade' UNITY3D_NAME='BattleChefBrigade' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-bff-or-die.sh0000700000000000000000000000440314471751340014061 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # BFF or Die # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bff-or-die' GAME_NAME='BFF or Die' ARCHIVE_BASE_0_NAME='BffOrDie_Linux.zip' ARCHIVE_BASE_0_MD5='52968da91f57da3619c3ae8a666d660a' ARCHIVE_BASE_0_SIZE='788644' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://asa-studio.itch.io/bff-or-die' UNITY3D_NAME='BffOrDie' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='BffOrDie_Linux' 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-bio-menace.sh0000700000000000000000000000445314471751340014153 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Bio Menace # send your bug reports to bugs@dotslashplay.it ### script_version=20250826.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='bio-menace' GAME_NAME='Bio Menace' ARCHIVE_BASE_0_NAME='gog_bio_menace_2.0.0.2.sh' ARCHIVE_BASE_0_MD5='75167ee3594dd44ec8535b29b90fe4eb' ARCHIVE_BASE_0_SIZE='14000' ARCHIVE_BASE_0_VERSION='1.1-gog2.0.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/bio_menace' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' biopatch.zip *.bm? *.conf *.exe' CONTENT_DOC_MAIN_FILES=' *.txt' CONTENT_DOC0_MAIN_PATH='data/noarch/docs' CONTENT_DOC0_MAIN_FILES=' *.pdf *.txt' USER_PERSISTENT_FILES=' *.conf config.bm? SAVEGAM*' APP_1_ID="${GAME_ID}-1" APP_1_NAME="$GAME_NAME - Episode 1: Dr. Mangle’s Lab" APP_1_EXE='bmenace1.exe' APP_1_ICON='../support/icon.png' APP_2_ID="${GAME_ID}-2" APP_2_NAME="$GAME_NAME - Episode 2: The Hidden Lab" APP_2_EXE='bmenace2.exe' APP_2_ICON='../support/icon.png' APP_3_ID="${GAME_ID}-3" APP_3_NAME="$GAME_NAME - Episode 3: Master Cain" APP_3_EXE='bmenace3.exe' APP_3_ICON='../support/icon.png' ## convmv is used to convert paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Convert all file paths to lowercase. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-bioshock.sh0000755000000000000000000000643514471751340013771 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2025 Aryan Karamtoth # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # BioShock # send your bug reports to bugs@dotslashplay.it ### script_version=20251004.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bioshock' GAME_NAME='BioShock' ARCHIVE_BASE_0_NAME='setup_bioshock_1.1_(25450).exe' ARCHIVE_BASE_0_MD5='47da4b5d7bdd75aa689f016c7a893979' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_bioshock_1.1_(25450)-1.bin' ARCHIVE_BASE_0_PART1_MD5='b52c0e3fa73d4d3d7bdf50dc3aa86282' ARCHIVE_BASE_0_SIZE='5922554' ARCHIVE_BASE_0_VERSION='1.0-gog25450' ARCHIVE_BASE_0_URL='https://www.gog.com/game/bioshock_remastered' CONTENT_PATH_DEFAULT='.' ## d3dx9_33.dll and d3dx10_33.dll should not be included, to avoid a crash before reaching the game menu. CONTENT_GAME_BIN_FILES=' Builds/Release/binkw32.dll Builds/Release/gdf.dll Builds/Release/xinput1_3.dll Builds/Release/bioshock.exe Builds/Release/setres.exe Builds/Release/bioshock.ico Builds/Release/shadercache.pcs Builds/Release/shadercache.pcs10 Builds/Release/bioshock-mce.png Builds/Release/bioshocksaveimage.png Builds/Release/shaders.spk Builds/Release/dfe Builds/Release/*.ini Builds/Release/*.u' CONTENT_GAME_DATA_FILES=' Content' CONTENT_DOC_DATA_FILES=' bioshock patch readme_november 2007_*.txt readme.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Bioshock' ## Work around a crash before reaching the game menu: ## ## 0170:err:d3dcompiler:D3DCompile2 Failed to compile shader, vkd3d result -4. ## 0170:err:d3dcompiler:D3DCompile2 Shader log: ## 0170:err:d3dcompiler:D3DCompile2 StandardInputs.hlsl:6:32: E4000: syntax error, unexpected T_TEXT, expecting T_NEWLINE ## 0170:err:d3dcompiler:D3DCompile2 StandardInputs.hlsl: W4305: Unterminated #if block. ## ## cf. https://bugs.winehq.org/show_bug.cgi?id=48730 ## (WINE 10.0) WINE_WINETRICKS_VERBS='d3dcompiler_47' APP_MAIN_EXE='builds/release/bioshock.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 default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Run the game binary from its parent directory, to avoid a game crash when trying to play the first logo video. game_exec_line() { cat <<- 'EOF' cd builds/release $(wine_command) bioshock.exe "$@" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-bit-trip-beat.sh0000700000000000000000000000550714471751340014620 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Bit.Trip Beat # send your bug reports to bugs@dotslashplay.it ### script_version=20250702.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bit-trip-beat' GAME_NAME='BIT.TRIP BEAT' ARCHIVE_BASE_0_NAME='gog_bit_trip_beat_2.0.0.1.sh' ARCHIVE_BASE_0_MD5='32b6fd23c32553aa7c50eaf4247ba664' ARCHIVE_BASE_0_SIZE='120000' ARCHIVE_BASE_0_VERSION='1.0.5-gog2.0.0.1' ARCHIVE_BASE_0_URL='https://www.gog.com/game/bittrip_beat' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' bit.trip.beat' CONTENT_GAME_BIN64_RELATIVE_PATH='bit.trip.beat-1.0-64/bit.trip.beat' CONTENT_GAME_BIN64_FILES="$CONTENT_GAME_BIN_FILES" CONTENT_GAME_BIN32_RELATIVE_PATH='bit.trip.beat-1.0-32/bit.trip.beat' CONTENT_GAME_BIN32_FILES="$CONTENT_GAME_BIN_FILES" CONTENT_GAME_DATA_RELATIVE_PATH='bit.trip.beat-1.0-64/bit.trip.beat' CONTENT_GAME_DATA_FILES=' Effects Fonts Sounds Models Shaders Textures BEAT.png' CONTENT_DOC_DATA_RELATIVE_PATH='bit.trip.beat-1.0-64' CONTENT_DOC_DATA_FILES=' README* *.txt' APP_MAIN_EXE='bit.trip.beat' APP_MAIN_ICON='bit.trip.beat-1.0-64/bit.trip.beat/BEAT.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 libm.so.6 libogg.so.0 libopenal.so.1 libpthread.so.0 librt.so.1 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-bit-trip-runner-1.sh0000700000000000000000000000546014471751340015352 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Bit.Trip Runner # send your bug reports to bugs@dotslashplay.it ### script_version=20250613.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bit-trip-runner-1' GAME_NAME='Bit.Trip Runner' ARCHIVE_BASE_0_NAME='gog_bit_trip_runner_2.0.0.1.sh' ARCHIVE_BASE_0_MD5='b6f0fe70e1a2d9408967b8fd6bd881e1' ARCHIVE_BASE_0_SIZE='120000' ARCHIVE_BASE_0_VERSION='1.0.5-gog.2.0.0.1' ARCHIVE_BASE_0_URL='https://www.gog.com/game/bittrip_runner' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_RELATIVE_PATH='bit.trip.runner-1.0-64/bit.trip.runner' CONTENT_GAME_BIN64_FILES=' bit.trip.runner' CONTENT_GAME_BIN32_RELATIVE_PATH='bit.trip.runner-1.0-32/bit.trip.runner' CONTENT_GAME_BIN32_FILES=' bit.trip.runner' CONTENT_GAME_DATA_RELATIVE_PATH='bit.trip.runner-1.0-32/bit.trip.runner' CONTENT_GAME_DATA_FILES=' Effects Fonts Layouts Sounds Models Shaders Textures2d RUNNER.png' CONTENT_DOC_DATA_RELATIVE_PATH='bit.trip.runner-1.0-32' CONTENT_DOC_DATA_FILES=' README* *.txt' APP_MAIN_EXE='bit.trip.runner' APP_MAIN_ICON='bit.trip.runner-1.0-32/bit.trip.runner/RUNNER.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 libm.so.6 libogg.so.0 libopenal.so.1 librt.so.1 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-bit-trip-runner-2.sh0000700000000000000000000001117214471751340015350 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Bit.Trip Runner 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20240623.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='bit-trip-runner-2' GAME_NAME='Bit.Trip Presents… Runner2: Future Legend of Rhythm Alien' ARCHIVE_BASE_GOG_0_NAME='gog_bit_trip_presents_runner2_future_legend_of_rhythm_alien_2.0.0.1.sh' ARCHIVE_BASE_GOG_0_MD5='28c003bae691aa46d841547da8e3def6' ARCHIVE_BASE_GOG_0_SIZE='1600000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.0.0.1' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/bittrip_presents_runner2_future_legend_of_rhythm_alien' ## These native Linux DRM-free builds are no longer available from the Humble Store. ## Only builds for Windows and MacOS are provided. ARCHIVE_BASE_HUMBLE_32BIT_0_NAME='runner2_i386_1388171186.tar.gz' ARCHIVE_BASE_HUMBLE_32BIT_0_MD5='ea105bdcd486879fb99889b87e90eed5' ARCHIVE_BASE_HUMBLE_32BIT_0_SIZE='770000' ARCHIVE_BASE_HUMBLE_32BIT_0_VERSION='1.0-humble1388171186' ## These native Linux DRM-free builds are no longer available from the Humble Store. ## Only builds for Windows and MacOS are provided. ARCHIVE_BASE_HUMBLE_64BIT_0_NAME='runner2_amd64_1388171186.tar.gz' ARCHIVE_BASE_HUMBLE_64BIT_0_MD5='2f7ccdb675a63a5fc152514682e97480' ARCHIVE_BASE_HUMBLE_64BIT_0_SIZE='770000' ARCHIVE_BASE_HUMBLE_64BIT_0_VERSION='1.0-humble1388171186' CONTENT_PATH_DEFAULT_GOG='data/noarch/game/runner2-1.0-32/runner2' CONTENT_PATH_DEFAULT_GOG_BIN32='data/noarch/game/runner2-1.0-32/runner2' CONTENT_PATH_DEFAULT_GOG_BIN64='data/noarch/game/runner2-1.0-64/runner2' CONTENT_PATH_DEFAULT_HUMBLE='runner2-1.0/runner2' CONTENT_LIBS_BIN64_PATH_GOG="$CONTENT_PATH_DEFAULT_GOG_BIN64" CONTENT_LIBS_BIN64_FILES=' libfmodevent64.so libfmodevent64-4.44.07.so libfmodex64.so libfmodex64-4.44.07.so' CONTENT_LIBS_BIN32_PATH_GOG="$CONTENT_PATH_DEFAULT_GOG_BIN32" CONTENT_LIBS_BIN32_FILES=' libfmodevent.so libfmodevent-4.44.08.so libfmodex.so libfmodex-4.44.08.so' CONTENT_GAME_BIN64_PATH_GOG="$CONTENT_PATH_DEFAULT_GOG_BIN64" CONTENT_GAME_BIN64_FILES=' runner2' CONTENT_GAME_BIN32_PATH_GOG="$CONTENT_PATH_DEFAULT_GOG_BIN32" CONTENT_GAME_BIN32_FILES=' runner2' CONTENT_GAME_DATA_FILES=' Effects Fonts Gameplay Graphics Menus Models Shaders Sounds Textures package.toc Runner2.png' CONTENT_DOC_DATA_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/.." CONTENT_DOC_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/.." CONTENT_DOC_DATA_FILES=' README README.html' APP_MAIN_EXE='runner2' APP_MAIN_ICON='Runner2.png' PACKAGES_LIST_GOG=' PKG_BIN64 PKG_BIN32 PKG_DATA' PACKAGES_LIST_HUMBLE_32BIT=' PKG_BIN32 PKG_DATA' PACKAGES_LIST_HUMBLE_64BIT=' PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Ensure easy upgrade from packages generated using pre-20211125.2 game scripts. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} runner-2-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 libSDL-1.2.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" ## Ensure easy upgrade from packages generated using pre-20211125.2 game script PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} runner-2" PKG_BIN32_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN64_PROVIDES="$PKG_BIN_PROVIDES" # 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 case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_32BIT_'*) launchers_generation 'PKG_BIN32' ;; ('ARCHIVE_BASE_HUMBLE_64BIT_'*) launchers_generation 'PKG_BIN64' ;; ('ARCHIVE_BASE_GOG_'*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; esac # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-bit-trip-runner-3.sh0000700000000000000000000000354014471751340015351 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Bit.Trip Runner 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20250613.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bit-trip-runner-3' GAME_NAME='Bit.Trip: Runner 3' ARCHIVE_BASE_0_NAME='Runner3WIN.zip' ARCHIVE_BASE_0_MD5='d13f6fa59e9b55a259a078328a87c9f9' ARCHIVE_BASE_0_SIZE='2700000' ARCHIVE_BASE_0_VERSION='2018.11.12-itch1' ARCHIVE_BASE_0_URL='https://choice-provisions.itch.io/runner3' UNITY3D_NAME='Runner3' CONTENT_PATH_DEFAULT='.' ## Despite the unusual path for a Unity3D game, ## saved games are .sav files at the root of the game directory. USER_PERSISTENT_FILES=' *.sav' 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-bleed-series.sh0000700000000000000000000001002614471751340014510 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Bleed series: # - Bleed # - Bleed 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID_BLEED1='bleed-1' GAME_NAME_BLEED1='Bleed' GAME_ID_BLEED2='bleed-2' GAME_NAME_BLEED2='Bleed 2' # Archives ## Bleed 1 ARCHIVE_BASE_BLEED1_0_NAME='bleed-linux-05052016-bin' ARCHIVE_BASE_BLEED1_0_MD5='a4522f679d7e7038e0085aaf1319f41f' ## This archive is a MojoSetup installer, but it is not based on Makeself. ARCHIVE_BASE_BLEED1_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_BLEED1_0_SIZE='110000' ARCHIVE_BASE_BLEED1_0_VERSION='1.7.0-itch.2016.05.05' ARCHIVE_BASE_BLEED1_0_URL='https://bootdiskrevolution.itch.io/bleed' ## Bleed 2 ARCHIVE_BASE_BLEED2_0_NAME='bleed2-02112018-bin' ARCHIVE_BASE_BLEED2_0_MD5='756324f1843c289719c6630a834e8f59' ## This archive is a MojoSetup installer, but it is not based on Makeself. ARCHIVE_BASE_BLEED2_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_BLEED2_0_SIZE='350000' ARCHIVE_BASE_BLEED2_0_VERSION='1.0-itch.2018.02.11' ARCHIVE_BASE_BLEED2_0_URL='https://bootdiskrevolution.itch.io/bleed-2' # Archives content CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_GAME_MAIN_FILES=' Content monoconfig FNA.dll FNA.dll.config' CONTENT_DOC_MAIN_FILES=' Linux.README' ## Bleed 1 ## Shipped OpenAL library must be included, or the game will crash on launch. CONTENT_LIBS_LIBS_FILES_BLEED1=' libmojoshader.so libopenal.so.1' CONTENT_LIBS_LIBS64_FILES_BLEED1="$CONTENT_LIBS_LIBS_FILES_BLEED1" CONTENT_LIBS_LIBS32_FILES_BLEED1="$CONTENT_LIBS_LIBS_FILES_BLEED1" CONTENT_GAME_MAIN_FILES_BLEED1="$CONTENT_GAME_MAIN_FILES Bleed.exe" ## Bleed 2 ## Shipped OpenAL library must be included, or the game will crash on launch. ## Shipped Steamworks library must be included, or the game will crash on launch. CONTENT_LIBS_LIBS_FILES_BLEED2=' libCSteamworks.so libmojoshader.so libopenal.so.1 libsteam_api.so' CONTENT_LIBS_LIBS64_FILES_BLEED2="$CONTENT_LIBS_LIBS_FILES_BLEED2" CONTENT_LIBS_LIBS32_FILES_BLEED2="$CONTENT_LIBS_LIBS_FILES_BLEED2" ## The game will crash on launch if the Steamworks library is omitted. CONTENT_GAME_MAIN_FILES_BLEED2="$CONTENT_GAME_MAIN_FILES Bleed2.exe Steamworks.NET.dll" APP_MAIN_EXE_BLEED1='Bleed.exe' APP_MAIN_EXE_BLEED2='Bleed2.exe' APP_MAIN_ICON_BLEED1='Bleed.bmp' APP_MAIN_ICON_BLEED2='Bleed 2.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libopenal.so.1 libSDL2-2.0.so.0' 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' PKG_LIBS_ID_BLEED1="${GAME_ID_BLEED1}-libs" PKG_LIBS_ID_BLEED2="${GAME_ID_BLEED2}-libs" PKG_LIBS64_ID_BLEED1="$PKG_LIBS_ID_BLEED1" PKG_LIBS64_ID_BLEED2="$PKG_LIBS_ID_BLEED2" PKG_LIBS32_ID_BLEED1="$PKG_LIBS_ID_BLEED1" PKG_LIBS32_ID_BLEED2="$PKG_LIBS_ID_BLEED2" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons '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-bombshell.sh0000700000000000000000000000535614471751340014126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Bombshell # send your bug reports to bugs@dotslashplay.it ### script_version=20240501.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='bombshell' GAME_NAME='Bombshell' ARCHIVE_BASE_0_NAME='setup_bombshell__1.2.10466(ion_furry)_(34762).exe' ARCHIVE_BASE_0_MD5='05b5188629b378360154420be32296aa' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_bombshell__1.2.10466(ion_furry)_(34762)-1.bin' ARCHIVE_BASE_0_PART1_MD5='9a779d8df62ca33c5215ac7f3403f999' ARCHIVE_BASE_0_PART2_NAME='setup_bombshell__1.2.10466(ion_furry)_(34762)-2.bin' ARCHIVE_BASE_0_PART2_MD5='186058e6d9058ed65ffaf4382ce8a1a0' ARCHIVE_BASE_0_SIZE='9100000' ARCHIVE_BASE_0_VERSION='1.2.10466-gog34762' ARCHIVE_BASE_0_URL='https://www.gog.com/game/bombshell' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN64_FILES=' binaries/win64' CONTENT_GAME_BIN32_FILES=' binaries/win32' CONTENT_GAME_DATA_FILES=' engine shellgame' CONTENT_DOC_DATA_PATH='help' CONTENT_DOC_DATA_FILES=' gdf_fieldmanual.pdf' WINE_PERSISTENT_DIRECTORIE=' users/${USER}/Documents/My Games/Bombshell/ShellGame' WINE_WINEPREFIX_TWEAKS='mono' ## Grab the mouse cursor, to prevent issues when aiming with a mouse. WINE_WINETRICKS_VERBS='grabfullscreen=y' APP_MAIN_EXE_BIN64='binaries/win64/bombshell.exe' APP_MAIN_EXE_BIN32='binaries/win32/bombshell.exe' APP_MAIN_ICON='binaries/win32/bombshell.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=117' ## The application type must be set explicitly, ## or it would be wrongly guessed as a Mono one. APP_MAIN_TYPE='wine' 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" # 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-broforce.sh0000700000000000000000000000572514471751340013760 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 VA # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Broforce # send your bug reports to bugs@dotslashplay.it ### script_version=20250704.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='broforce' GAME_NAME='Broforce' ARCHIVE_BASE_0_NAME='broforce_1034_20190611_30229.sh' ARCHIVE_BASE_0_MD5='8cbe5d69f77aaf36f99a74f39b9d200f' ARCHIVE_BASE_0_SIZE='460000' ARCHIVE_BASE_0_VERSION='1034.20190611-gog30229' ARCHIVE_BASE_0_URL='https://www.gog.com/game/broforce' ARCHIVE_BASE_MULTIARCH_0_NAME='gog_broforce_2.3.0.4.sh' ARCHIVE_BASE_MULTIARCH_0_MD5='1187889af4979b1718c5529ccfb4d741' ARCHIVE_BASE_MULTIARCH_0_SIZE='1400000' ARCHIVE_BASE_MULTIARCH_0_VERSION='5399v201606232041-gog15203' UNITY3D_NAME='Broforce' CONTENT_PATH_DEFAULT='data/noarch/game' ## FIXME: An explicit list of plugins to include should be set with UNITY3D_PLUGINS. CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}_Data/Plugins" CONTENT_GAME0_BIN64_FILES=" ${UNITY3D_NAME}_Data/Plugins/x86_64" CONTENT_GAME0_BIN32_FILES=" ${UNITY3D_NAME}_Data/Plugins/x86" PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_MULTIARCH=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' 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" ## TODO: Complete the dependencies list. PKG_BIN_DEPENDENCIES_LIBRARIES=' libstdc++.so.6 libfreetype.so.6 libXrandr.so.2 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" ## TODO: Check if the xrandr commmand is actually required. PKG_BIN_DEPENDENCIES_COMMANDS=' xrandr' PKG_BIN64_DEPENDENCIES_COMMANDS="$PKG_BIN_DEPENDENCIES_COMMANDS" PKG_BIN32_DEPENDENCIES_COMMANDS="$PKG_BIN_DEPENDENCIES_COMMANDS" # 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_BIN' ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-butcher.sh0000700000000000000000000000567614471751340013620 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Erwann Duclos # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 berru set -o errexit ### # Butcher # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='butcher' GAME_NAME='Butcher' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='butcher_w_i_m_p_gog_10_33399.sh' ARCHIVE_BASE_0_MD5='88f2e3d426f8dbcc0b78c53a43063329' ARCHIVE_BASE_0_SIZE='206121' ARCHIVE_BASE_0_VERSION='1.0-gog33399' ARCHIVE_BASE_0_URL='https://www.gog.com/game/butcher' ARCHIVE_BASE_DEMO_0_NAME='gog_butcher_demo_2.0.0.1.sh' ARCHIVE_BASE_DEMO_0_MD5='03ed5d89ef38ef10a3318b8da7e62525' ARCHIVE_BASE_DEMO_0_SIZE='106381' ARCHIVE_BASE_DEMO_0_VERSION='1.0-gog2.0.0.1' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/butcher_demo' UNITY3D_NAME='Butcher' UNITY3D_NAME_DEMO='butcher' UNITY3D_PLUGINS=' libfmod.so libfmodstudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PACKAGES_LIST_DEMO=' PKG_BIN64 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_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 case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) launchers_generation 'PKG_BIN64' ;; (*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-cook-serve-delicious-2.sh0000755000000000000000000000422414471751340016354 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Cook, Serve, Delicious 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250706.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='cook-serve-delicious-2' GAME_NAME='Cook, Serve, Delicious! 2!!' ARCHIVE_BASE_0_NAME='CSD2_Linux_v2_60m1_1.zip' ARCHIVE_BASE_0_MD5='1842d43dc715a61d1776a3432b7bf758' ARCHIVE_BASE_0_SIZE='1000000' ARCHIVE_BASE_0_VERSION='2.60-itch.2019.03.02' ARCHIVE_BASE_0_URL='https://chubigans.itch.io/cook-serve-delicious-2' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' NEW_CSD2_PS4Steam' CONTENT_GAME_DATA_FILES=' assets' USER_PERSISTENT_FILES=' assets/options.ini' APP_MAIN_EXE='NEW_CSD2_PS4Steam' APP_MAIN_ICON='assets/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl-gnutls.so.4 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-crypt-of-the-necrodancer-expansions.sh0000700000000000000000000000616314471751340021143 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Crypt of the NecroDancer expansions: # - Amplified # send your bug reports to bugs@dotslashplay.it ### script_version=20250722.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='crypt-of-the-necrodancer' GAME_NAME='Crypt of the NecroDancer' EXPANSION_ID_AMPLIFIED='amplified' EXPANSION_NAME_AMPLIFIED='Amplified' ARCHIVE_BASE_AMPLIFIED_5_NAME='crypt_of_the_necrodancer_amplified_4_1_1_b5421_75773.sh' ARCHIVE_BASE_AMPLIFIED_5_MD5='7781e21a31338b55478e85ac9e275d6f' ARCHIVE_BASE_AMPLIFIED_5_SIZE='786163' ARCHIVE_BASE_AMPLIFIED_5_VERSION='4.1.1-gog75773' ARCHIVE_BASE_AMPLIFIED_5_URL='https://www.gog.com/game/crypt_of_the_necrodancer_amplified' ARCHIVE_BASE_AMPLIFIED_4_NAME='crypt_of_the_necrodancer_amplified_4_0_0_b5095_71873.sh' ARCHIVE_BASE_AMPLIFIED_4_MD5='f102e0705e1333dd622cb23464c76555' ARCHIVE_BASE_AMPLIFIED_4_SIZE='786163' ARCHIVE_BASE_AMPLIFIED_4_VERSION='4.0.0-gog71873' ARCHIVE_BASE_AMPLIFIED_3_NAME='crypt_of_the_necrodancer_amplified_3_7_5_b4897_68999.sh' ARCHIVE_BASE_AMPLIFIED_3_MD5='afbe68f105b71e8d918a4768498d8c24' ARCHIVE_BASE_AMPLIFIED_3_SIZE='786163' ARCHIVE_BASE_AMPLIFIED_3_VERSION='3.7.5-gog68999' ARCHIVE_BASE_AMPLIFIED_2_NAME='crypt_of_the_necrodancer_amplified_3_7_4_b4860_68330.sh' ARCHIVE_BASE_AMPLIFIED_2_MD5='e56eb1c2e7595ced5b67075dc08d65c9' ARCHIVE_BASE_AMPLIFIED_2_SIZE='794448' ARCHIVE_BASE_AMPLIFIED_2_VERSION='3.7.4-gog68330' ARCHIVE_BASE_AMPLIFIED_1_NAME='crypt_of_the_necrodancer_amplified_3_4_0_b3655_61079.sh' ARCHIVE_BASE_AMPLIFIED_1_MD5='410df53bd1efe43dfc6fd41cb9cdf694' ARCHIVE_BASE_AMPLIFIED_1_SIZE='600000' ARCHIVE_BASE_AMPLIFIED_1_VERSION='3.4.0-gog61079' ARCHIVE_BASE_AMPLIFIED_0_NAME='crypt_of_the_necrodancer_amplified_3_1_5_b3223_59419.sh' ARCHIVE_BASE_AMPLIFIED_0_MD5='67c2111ad6116ea68c343f9d7694eb1c' ARCHIVE_BASE_AMPLIFIED_0_SIZE='600000' ARCHIVE_BASE_AMPLIFIED_0_VERSION='3.1.5-gog59419' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' data goggame-1981284042.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_PROVIDES=" ${GAME_ID}-data-shared" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' ## Easy upgrade from pre-20250708.2 packages. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} crypt-of-the-necrodancer-data-common" # 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-crypt-of-the-necrodancer.sh0000700000000000000000000015252314471751340016760 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Crypt of the NecroDancer # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='crypt-of-the-necrodancer' GAME_NAME='Crypt of the NecroDancer' ARCHIVE_BASE_5_NAME='crypt_of_the_necrodancer_4_1_1_b5421_75773.sh' ARCHIVE_BASE_5_MD5='3a5518a8f98c4ffe8a8000889cd2d916' ARCHIVE_BASE_5_SIZE='1582395' ARCHIVE_BASE_5_VERSION='4.1.1-gog75773' ARCHIVE_BASE_5_URL='https://www.gog.com/game/crypt_of_the_necrodancer' ARCHIVE_BASE_4_NAME='crypt_of_the_necrodancer_4_0_0_b5095_71873.sh' ARCHIVE_BASE_4_MD5='1834813b492806b13635a756d32716c6' ARCHIVE_BASE_4_SIZE='1571042' ARCHIVE_BASE_4_VERSION='4.0.0-gog71873' ARCHIVE_BASE_3_NAME='crypt_of_the_necrodancer_3_7_5_b4897_68999.sh' ARCHIVE_BASE_3_MD5='b9dec663522ad9632340dbfe8c859a2f' ARCHIVE_BASE_3_SIZE='1527261' ARCHIVE_BASE_3_VERSION='3.7.5-gog68999' ARCHIVE_BASE_2_NAME='crypt_of_the_necrodancer_3_7_4_b4860_68330.sh' ARCHIVE_BASE_2_MD5='3a513a9089ca9b9383bee224d44af64f' ARCHIVE_BASE_2_SIZE='1558404' ARCHIVE_BASE_2_VERSION='3.7.4-gog68330' ARCHIVE_BASE_1_NAME='crypt_of_the_necrodancer_3_4_0_b3655_61079.sh' ARCHIVE_BASE_1_MD5='f53c2736647e577036d1d014e8e81656' ARCHIVE_BASE_1_SIZE='1600000' ARCHIVE_BASE_1_VERSION='3.4.0-gog61079' ARCHIVE_BASE_0_NAME='crypt_of_the_necrodancer_3_1_5_b3223_59419.sh' ARCHIVE_BASE_0_MD5='006d720a727a05048ea8028b1d3b0332' ARCHIVE_BASE_0_SIZE='1600000' ARCHIVE_BASE_0_VERSION='3.1.5-gog59419' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='NecroDancer64/lib' CONTENT_LIBS_BIN_FILES=' libnecrolevel.so' ## Shipped libsfml-*.so.2.5 must be used to avoid a symbol lookup error. CONTENT_LIBS0_BIN_RELATIVE_PATH='NecroDancer64/lib' CONTENT_LIBS0_BIN_FILES=' libsfml-*.so.2.5' ## The shipped build of libluajit-5.1.so.2 must be included to prevent a crash: ## [LocalGame] [error] scripts/core/jit/p.lua:44: LuaJIT core/library version mismatch CONTENT_LIBS1_BIN_RELATIVE_PATH='NecroDancer64/lib' CONTENT_LIBS1_BIN_FILES=' libluajit-5.1.so.2' ## The game binary is linked against libdiscord_game_sdk.so and libGalaxy64.so. CONTENT_LIBS2_BIN_RELATIVE_PATH='NecroDancer64/lib' CONTENT_LIBS2_BIN_FILES=' libdiscord_game_sdk.so libGalaxy64.so' CONTENT_GAME_BIN_FILES=' NecroDancer64/dlc NecroDancer64/config.json NecroDancer64/Compat.wsp NecroDancer64/NecroDancer.wsp NecroDancer64/NecroDancer.x64' ## These files are overriden by the Amplified expansion CONTENT_GAME_DATA_SHARED_FILES=' data/entities/beastmaster.png data/entities/bossmaster.png data/entities/char1_armor_body.png data/entities/char1_heads.png data/entities/char2_armor_body.png data/entities/char2_heads.png data/entities/char3_armor_body.png data/entities/char3_heads.png data/entities/char4_armor_body.png data/entities/char4_heads.png data/entities/char5_armor_body.png data/entities/char5_heads.png data/entities/char6_armor_body.png data/entities/char6_heads.png data/entities/char7_armor_body.png data/entities/char7_heads.png data/entities/char8_armor_body.png data/entities/char8_heads.png data/entities/char9_armor_body.png data/entities/char9_heads.png data/entities/dragon_blue.png data/entities/dragon_green.png data/entities/dragon_red.png data/entities/golem_ooze.png data/entities/jp10_armor_body.png data/entities/jp10_heads.png data/entities/jp11_armor_body.png data/entities/jp11_heads.png data/entities/jp1_armor_body.png data/entities/jp1_heads.png data/entities/jp2_armor_body.png data/entities/jp2_heads.png data/entities/jp3_armor_body.png data/entities/jp3_heads.png data/entities/jp4_armor_body.png data/entities/jp4_heads.png data/entities/jp5_armor_body.png data/entities/jp5_heads.png data/entities/jp6_armor_body.png data/entities/jp6_heads.png data/entities/jp7_armor_body.png data/entities/jp7_heads.png data/entities/jp8_armor_body.png data/entities/jp8_heads.png data/entities/jp9_armor_body.png data/entities/jp9_heads.png data/entities/player1_armor_body.png data/entities/player1_heads.png data/entities/player2_armor_body.png data/entities/player2_heads.png data/entities/player3_armor_body.png data/entities/player3_heads.png data/entities/player4_armor_body.png data/entities/player4_heads.png data/entities/skeleton_black.png data/entities/skeleton.png data/entities/skeleton_yellow.png data/items/resource_hoard_gold_small.png data/languages/brazilianportuguese/localization/characterselect_aria1.png data/languages/brazilianportuguese/localization/characterselect_bard1.png data/languages/brazilianportuguese/localization/characterselect_bolt1.png data/languages/brazilianportuguese/localization/characterselect_deathless2.png data/languages/brazilianportuguese/localization/characterselect_eli1.png data/languages/brazilianportuguese/localization/characterselect_hint1.png data/languages/brazilianportuguese/localization/characterselect_monk1.png data/languages/brazilianportuguese/localization/characterselect_monk3.png data/languages/brazilianportuguese/localization/characterselect_story2.png data/languages/brazilianportuguese/localization/enemybig_shrineofpace.png data/languages/brazilianportuguese/localization/enemy_chestmimic.png data/languages/brazilianportuguese/localization/enemy_deadringer.png data/languages/brazilianportuguese/localization/enemy_firecauldronmimic.png data/languages/brazilianportuguese/localization/enemy_icecauldronmimic.png data/languages/brazilianportuguese/localization/enemy_lockedchestmimic.png data/languages/brazilianportuguese/localization/enemy_mommy.png data/languages/brazilianportuguese/localization/enemy_shopkeeperghost.png data/languages/brazilianportuguese/localization/enemy_shrineofpace.png data/languages/brazilianportuguese/localization/enemy_whitechestmimic.png data/languages/brazilianportuguese/localization/game_story2.png data/languages/brazilianportuguese/localization/game_story3.png data/languages/brazilianportuguese/localization/hint_1visiontrapsight.png data/languages/brazilianportuguese/localization/hint_alreadycomplete.png data/languages/brazilianportuguese/localization/hint_completemonk.png data/languages/brazilianportuguese/localization/hint_enchantweapon2.png data/languages/brazilianportuguese/localization/hint_exitunlocked.png data/languages/brazilianportuguese/localization/hint_giveswhatyouneed.png data/languages/brazilianportuguese/localization/hint_shrineofblood1.png data/languages/brazilianportuguese/localization/hint_shrineofglass1.png data/languages/brazilianportuguese/localization/hint_shrineofnoreturn2.png data/languages/brazilianportuguese/localization/hint_shrineofpace1.png data/languages/brazilianportuguese/localization/hint_shrineofphasing2.png data/languages/brazilianportuguese/localization/hint_shrineofrhythm2.png data/languages/brazilianportuguese/localization/hint_sloth.png data/languages/brazilianportuguese/localization/item_balletshoes.png data/languages/brazilianportuguese/localization/item_enchantweaponscroll.png data/languages/brazilianportuguese/localization/item_glassshardshovel.png data/languages/brazilianportuguese/localization/item_ringofmana.png data/languages/brazilianportuguese/localization/leveleditor_dirtwall.png data/languages/brazilianportuguese/localization/leveleditor_placecontainer.png data/languages/brazilianportuguese/localization/leveleditor_saveandpublish.png data/languages/brazilianportuguese/localization/leveleditor_shrineblood.png data/languages/brazilianportuguese/localization/leveleditor_shrineglass.png data/languages/brazilianportuguese/localization/leveleditor_shrinepace.png data/languages/brazilianportuguese/localization/leveleditor_travelrune.png data/languages/brazilianportuguese/localization/leveleditor_workshop.png data/languages/brazilianportuguese/localization/lobby_allzones.png data/languages/brazilianportuguese/localization/lobby_character.png data/languages/brazilianportuguese/localization/lobby_dailychallenge3.png data/languages/brazilianportuguese/localization/lobby_dancepad.png data/languages/brazilianportuguese/localization/lobby_diamonddealerexplain2.png data/languages/brazilianportuguese/localization/lobby_janitorexplain2.png data/languages/brazilianportuguese/localization/lobby_modeeasier.png data/languages/brazilianportuguese/localization/lobby_mode.png data/languages/brazilianportuguese/localization/lobby_select.png data/languages/brazilianportuguese/localization/options_buttonbig_joy1button.png data/languages/brazilianportuguese/localization/options_buttonbig_joy2button.png data/languages/brazilianportuguese/localization/options_buttonbig_joy3button.png data/languages/brazilianportuguese/localization/options_buttonbig_joy4button.png data/languages/brazilianportuguese/localization/options_button_joy1button.png data/languages/brazilianportuguese/localization/options_button_joy2button.png data/languages/brazilianportuguese/localization/options_button_joy3button.png data/languages/brazilianportuguese/localization/options_button_joy4button.png data/languages/brazilianportuguese/localization/options_random.png data/languages/brazilianportuguese/localization/options_steamworkshop.png data/languages/brazilianportuguese/localization/options_workshop.png data/languages/brazilianportuguese/localization/selection/leveleditor_dirtwall.png data/languages/brazilianportuguese/localization/selection/leveleditor_placecontainer.png data/languages/brazilianportuguese/localization/selection/leveleditor_shrineblood.png data/languages/brazilianportuguese/localization/selection/leveleditor_shrineglass.png data/languages/brazilianportuguese/localization/selection/leveleditor_shrinepace.png data/languages/brazilianportuguese/localization/selection/leveleditor_travelrune.png data/languages/brazilianportuguese/localization/selection/options_button_joy1button.png data/languages/brazilianportuguese/localization/selection/options_button_joy2button.png data/languages/brazilianportuguese/localization/selection/options_button_joy3button.png data/languages/brazilianportuguese/localization/selection/options_button_joy4button.png data/languages/brazilianportuguese/localization/selection/options_leaderboardsscore.png data/languages/brazilianportuguese/localization/selection/options_leaderboardsspeed.png data/languages/brazilianportuguese/localization/selection/options_leaderboardsspeedseeded.png data/languages/brazilianportuguese/localization/selection/options_random.png data/languages/brazilianportuguese/localization/selection/options_steamworkshop.png data/languages/brazilianportuguese/localization/training_cauldronmimic.png data/languages/brazilianportuguese/localization/training_chestmimic.png data/languages/brazilianportuguese/localization/training_hellhound.png data/languages/brazilianportuguese/localization/training_mommy.png data/languages/brazilianportuguese/localization.xml data/languages/brazilianportuguese/subtitles.xml data/languages/chinese/language_name.png data/languages/chinese/localization/boss_kingcongasplash.png data/languages/chinese/localization/characterselect_story2.png data/languages/chinese/localization/custommusic_kingconga.png data/languages/chinese/localization/enemybig_blooddrum.png data/languages/chinese/localization/enemybig_bloodnightmare.png data/languages/chinese/localization/enemybig_bloodshovel.png data/languages/chinese/localization/enemybig_kingconga.png data/languages/chinese/localization/enemybig_shrineofnoreturn.png data/languages/chinese/localization/enemybig_shrineofpace.png data/languages/chinese/localization/enemybig_shrineofrisk.png data/languages/chinese/localization/enemy_blooddrum.png data/languages/chinese/localization/enemy_bloodnightmare.png data/languages/chinese/localization/enemy_bloodshovel.png data/languages/chinese/localization/enemy_kingconga.png data/languages/chinese/localization/enemy_shrineofnoreturn.png data/languages/chinese/localization/enemy_shrineofpace.png data/languages/chinese/localization/enemy_shrineofrisk.png data/languages/chinese/localization/game_lowpercent.png data/languages/chinese/localization/game_story2.png data/languages/chinese/localization/game_story3.png data/languages/chinese/localization/hint_charm.png data/languages/chinese/localization/hint_charmshattered.png data/languages/chinese/localization/hint_conicalblastneedsreloadingpiercing.png data/languages/chinese/localization/hint_freezeenemieskillfrozenenemiespiercing.png data/languages/chinese/localization/hint_helpswithsometerrain.png data/languages/chinese/localization/hint_helpswithtrapsandice.png data/languages/chinese/localization/hint_phasingattack2dmg.png data/languages/chinese/localization/hint_rangedattackneedsloadingpiercing.png data/languages/chinese/localization/hint_rangedattackneedsreloadingpiercing.png data/languages/chinese/localization/hint_shrineofblood1.png data/languages/chinese/localization/hint_shrineofchance1.png data/languages/chinese/localization/hint_shrineofdarkness1.png data/languages/chinese/localization/hint_shrineofglass1.png data/languages/chinese/localization/hint_shrineofnoreturn1.png data/languages/chinese/localization/hint_shrineofpace1.png data/languages/chinese/localization/hint_shrineofpeace1.png data/languages/chinese/localization/hint_shrineofphasing1.png data/languages/chinese/localization/hint_shrineofrhythm1.png data/languages/chinese/localization/hint_shrineofrisk1.png data/languages/chinese/localization/hint_shrineofsacrifice1.png data/languages/chinese/localization/hint_shrineofsacrifice2.png data/languages/chinese/localization/hint_shrineofspace1.png data/languages/chinese/localization/hint_shrineofwar1.png data/languages/chinese/localization/hint_sloth.png data/languages/chinese/localization/hint_thorn.png data/languages/chinese/localization/item_bloodbow.png data/languages/chinese/localization/item_bloodbroadsword.png data/languages/chinese/localization/item_bloodcat.png data/languages/chinese/localization/item_bloodcrossbow.png data/languages/chinese/localization/item_blooddagger.png data/languages/chinese/localization/item_blooddrum.png data/languages/chinese/localization/item_bloodflail.png data/languages/chinese/localization/item_bloodlongsword.png data/languages/chinese/localization/item_bloodrapier.png data/languages/chinese/localization/item_bloodshovel.png data/languages/chinese/localization/item_bloodspear.png data/languages/chinese/localization/item_bloodwhip.png data/languages/chinese/localization/item_charmspell.png data/languages/chinese/localization/item_daggerofphasing.png data/languages/chinese/localization/item_drumstick.png data/languages/chinese/localization/item_frostcharm.png data/languages/chinese/localization/item_gluttonycharm.png data/languages/chinese/localization/item_goldenbow.png data/languages/chinese/localization/item_goldenbroadsword.png data/languages/chinese/localization/item_goldencat.png data/languages/chinese/localization/item_goldencrossbow.png data/languages/chinese/localization/item_goldendagger.png data/languages/chinese/localization/item_goldenflail.png data/languages/chinese/localization/item_goldenlongsword.png data/languages/chinese/localization/item_goldenrapier.png data/languages/chinese/localization/item_goldenspear.png data/languages/chinese/localization/item_goldenwhip.png data/languages/chinese/localization/item_infernaltorch.png data/languages/chinese/localization/item_luckycharm.png data/languages/chinese/localization/item_nazarcharm.png data/languages/chinese/localization/item_ringofmana.png data/languages/chinese/localization/item_ringofphasing.png data/languages/chinese/localization/item_ringofshielding.png data/languages/chinese/localization/item_riskcharm.png data/languages/chinese/localization/item_strengthcharm.png data/languages/chinese/localization/item_titaniumbow.png data/languages/chinese/localization/item_titaniumbroadsword.png data/languages/chinese/localization/item_titaniumcat.png data/languages/chinese/localization/item_titaniumcrossbow.png data/languages/chinese/localization/item_titaniumdagger.png data/languages/chinese/localization/item_titaniumflail.png data/languages/chinese/localization/item_titaniumlongsword.png data/languages/chinese/localization/item_titaniumrapier.png data/languages/chinese/localization/item_titaniumshovel.png data/languages/chinese/localization/item_titaniumspear.png data/languages/chinese/localization/item_titaniumwhip.png data/languages/chinese/localization/leaderboard_watch.png data/languages/chinese/localization/leveleditor_kingconga.png data/languages/chinese/localization/leveleditor_placeshrine.png data/languages/chinese/localization/leveleditor_shopfloor.png data/languages/chinese/localization/leveleditor_shopwall.png data/languages/chinese/localization/leveleditor_shrineblood.png data/languages/chinese/localization/leveleditor_shrinechance.png data/languages/chinese/localization/leveleditor_shrinedarkness.png data/languages/chinese/localization/leveleditor_shrineglass.png data/languages/chinese/localization/leveleditor_shrinenoreturn.png data/languages/chinese/localization/leveleditor_shrinepace.png data/languages/chinese/localization/leveleditor_shrinepeace.png data/languages/chinese/localization/leveleditor_shrinephasing.png data/languages/chinese/localization/leveleditor_shrinerhythm.png data/languages/chinese/localization/leveleditor_shrinerisk.png data/languages/chinese/localization/leveleditor_shrinesacrifice.png data/languages/chinese/localization/leveleditor_shrinespace.png data/languages/chinese/localization/leveleditor_shrinewar.png data/languages/chinese/localization/options_language.png data/languages/chinese/localization/options_lowpercent.png data/languages/chinese/localization/selection/custommusic_kingconga.png data/languages/chinese/localization/selection/leaderboard_watch.png data/languages/chinese/localization/selection/leveleditor_kingconga.png data/languages/chinese/localization/selection/leveleditor_placeshrine.png data/languages/chinese/localization/selection/leveleditor_shopfloor.png data/languages/chinese/localization/selection/leveleditor_shopwall.png data/languages/chinese/localization/selection/leveleditor_shrineblood.png data/languages/chinese/localization/selection/leveleditor_shrinechance.png data/languages/chinese/localization/selection/leveleditor_shrinedarkness.png data/languages/chinese/localization/selection/leveleditor_shrineglass.png data/languages/chinese/localization/selection/leveleditor_shrinenoreturn.png data/languages/chinese/localization/selection/leveleditor_shrinepace.png data/languages/chinese/localization/selection/leveleditor_shrinepeace.png data/languages/chinese/localization/selection/leveleditor_shrinephasing.png data/languages/chinese/localization/selection/leveleditor_shrinerhythm.png data/languages/chinese/localization/selection/leveleditor_shrinerisk.png data/languages/chinese/localization/selection/leveleditor_shrinesacrifice.png data/languages/chinese/localization/selection/leveleditor_shrinespace.png data/languages/chinese/localization/selection/leveleditor_shrinewar.png data/languages/chinese/localization/selection/options_language.png data/languages/chinese/localization/shop_shriner.png data/languages/chinese/localization/training_bloodnightmare.png data/languages/chinese/localization/training_kingconga1.png data/languages/chinese/localization/training_kingconga2.png data/languages/chinese/localization/training_kingconga3.png data/languages/chinese/localization/training_kingconga4.png data/languages/chinese/localization.xml data/languages/chinesesimplified/language_name.png data/languages/chinesesimplified/localization/characterbig_mage.png data/languages/chinesesimplified/localization/character_mage.png data/languages/chinesesimplified/localization/lobby_diamonddealerexplain2.png data/languages/chinesesimplified/localization/lobby_janitorexplain1.png data/languages/chinesesimplified/localization/lobby_janitorexplain2.png data/languages/chinesesimplified/localization/options_language.png data/languages/chinesesimplified/localization/selection/options_language.png data/languages/chinesesimplified/localization.xml data/languages/chinesesimplified/subtitles.xml data/languages/chinese/subtitles.xml data/languages/english/subtitles.xml data/languages/example/localization.xml data/languages/french/localization/characterselect_hint2.png data/languages/french/localization/characterselect_story2.png data/languages/french/localization/game_scoresubmitting.png data/languages/french/localization/game_story2.png data/languages/french/localization/game_story3.png data/languages/french/localization/hint_4damagebreakable.png data/languages/french/localization/hint_doubletime.png data/languages/french/localization/hint_shrineofnoreturn2.png data/languages/french/localization/item_bloodlongsword.png data/languages/french/localization/item_glasslongsword.png data/languages/french/localization/item_goldenlongsword.png data/languages/french/localization/item_longsword.png data/languages/french/localization/item_obsidianlongsword.png data/languages/french/localization/item_titaniumlongsword.png data/languages/french/localization/leaderboard_watch.png data/languages/french/localization/lobby_codexexplain.png data/languages/french/localization/lobby_janitorclean1.png data/languages/french/localization/lobby_janitorclean2.png data/languages/french/localization/options_cutscenes.png data/languages/french/localization/options_modchooseplay.png data/languages/french/localization/options_modchoosepublish.png data/languages/french/localization/options_moddeactivate.png data/languages/french/localization/options_moddefault.png data/languages/french/localization/options_moderror2.png data/languages/french/localization/options_moderror3.png data/languages/french/localization/options_modplay.png data/languages/french/localization/options_modpublished.png data/languages/french/localization/options_modpublishfail.png data/languages/french/localization/options_modpublish.png data/languages/french/localization/options_mods.png data/languages/french/localization/options_modwarning1.png data/languages/french/localization/options_modwarning2.png data/languages/french/localization/options_prebosseffect.png data/languages/french/localization/options_workshop.png data/languages/french/localization/selection/leaderboard_watch.png data/languages/french/localization/selection/options_cutscenes.png data/languages/french/localization/selection/options_modchooseplay.png data/languages/french/localization/selection/options_modchoosepublish.png data/languages/french/localization/selection/options_moddeactivate.png data/languages/french/localization/selection/options_moddefault.png data/languages/french/localization/selection/options_modplay.png data/languages/french/localization/selection/options_modpublish.png data/languages/french/localization/selection/options_mods.png data/languages/french/localization/selection/options_prebosseffect.png data/languages/french/localization/shop_transmog.png data/languages/french/localization.xml data/languages/french/subtitles.xml data/languages/german/localization/characterselect_bard1.png data/languages/german/localization/characterselect_coda2.png data/languages/german/localization/characterselect_story2.png data/languages/german/localization/enemybig_magicmonkey.png data/languages/german/localization/enemybig_mommy.png data/languages/german/localization/enemybig_necrodancer.png data/languages/german/localization/enemy_magicmonkey.png data/languages/german/localization/enemy_mommy.png data/languages/german/localization/enemy_necrodancer.png data/languages/german/localization/game_daily2.png data/languages/german/localization/game_dancepad1.png data/languages/german/localization/game_randomseed.png data/languages/german/localization/game_story2.png data/languages/german/localization/game_story3.png data/languages/german/localization/hint_1dmgstrangevision.png data/languages/german/localization/hint_1visiontrapsight.png data/languages/german/localization/hint_completecadence.png data/languages/german/localization/hint_completemelody.png data/languages/german/localization/hint_completemonk.png data/languages/german/localization/hint_completezone4cadence.png data/languages/german/localization/hint_conjuringfail.png data/languages/german/localization/hint_doubletime.png data/languages/german/localization/hint_freezeenemieskillfrozenenemiespiercing.png data/languages/german/localization/hint_goldenkeybuy.png data/languages/german/localization/hint_shrineofrhythm2.png data/languages/german/localization/hint_takeshealthincreasesdamage.png data/languages/german/localization/hint_transformnearbyitems.png data/languages/german/localization/item_frostcharm.png data/languages/german/localization/item_glassjaw.png data/languages/german/localization/item_leadboots.png data/languages/german/localization/item_luckycharm.png data/languages/german/localization/item_protectioncharm.png data/languages/german/localization/item_riskcharm.png data/languages/german/localization/item_strengthcharm.png data/languages/german/localization/leaderboard_allzones_speedrun.png data/languages/german/localization/leveleditor_generate.png data/languages/german/localization/leveleditor_generatewarning1.png data/languages/german/localization/leveleditor_levelgen.png data/languages/german/localization/lobby_bossselection1.png data/languages/german/localization/lobby_bosstraining3.png data/languages/german/localization/lobby_enterseed2.png data/languages/german/localization/lobby_itemhints3.png data/languages/german/localization/lobby_minibosstraining1.png data/languages/german/localization/lobby_minibosstraining3.png data/languages/german/localization/lobby_weaponmasterhint.png data/languages/german/localization/options_beatdetectionongoing.png data/languages/german/localization/options_currentresolution.png data/languages/german/localization/options_cutscenes.png data/languages/german/localization/options_deletewarning1.png data/languages/german/localization/options_modwarning2.png data/languages/german/localization/selection/leveleditor_generate.png data/languages/german/localization/selection/leveleditor_levelgen.png data/languages/german/localization/selection/lobby_leavelosediamonds.png data/languages/german/localization/selection/options_cutscenes.png data/languages/german/localization/training_magicmonkey1.png data/languages/german/localization.xml data/languages/german/subtitles.xml data/languages/italian/localization/characterselect_story2.png data/languages/italian/localization/game_story2.png data/languages/italian/localization/game_story3.png data/languages/italian/localization.xml data/languages/italian/subtitles.xml data/languages/japanese/localization/characterselect_story2.png data/languages/japanese/localization/game_story2.png data/languages/japanese/localization/game_story3.png data/languages/japanese/localization.xml data/languages/japanese/subtitles.xml data/languages/korean/localization/boss_kingcongasplash.png data/languages/korean/localization/characterbig_eli.png data/languages/korean/localization/characterbig_monk.png data/languages/korean/localization/character_eli.png data/languages/korean/localization/character_monk.png data/languages/korean/localization/characterselect_aria3.png data/languages/korean/localization/characterselect_cadence1.png data/languages/korean/localization/characterselect_coda2.png data/languages/korean/localization/characterselect_deathless1.png data/languages/korean/localization/characterselect_deathless.png data/languages/korean/localization/characterselect_dove2.png data/languages/korean/localization/characterselect_eli1.png data/languages/korean/localization/characterselect_hint1.png data/languages/korean/localization/characterselect_monk1.png data/languages/korean/localization/characterselect_story2.png data/languages/korean/localization/character_unlockmelody1.png data/languages/korean/localization/custommusic_1-2xspeed.png data/languages/korean/localization/custommusic_2xspeed.png data/languages/korean/localization/custommusic_kingconga.png data/languages/korean/localization/custommusic_manualbeatslobby.png data/languages/korean/localization/custommusic_manualbeats.png data/languages/korean/localization/enemy_barrel.png data/languages/korean/localization/enemybig_apprenticeblademaster.png data/languages/korean/localization/enemybig_barrel.png data/languages/korean/localization/enemybig_bishop.png data/languages/korean/localization/enemybig_blackarmoredskeleton.png data/languages/korean/localization/enemybig_blackbat.png data/languages/korean/localization/enemybig_blacklich.png data/languages/korean/localization/enemybig_blacksarcophagus.png data/languages/korean/localization/enemybig_blackskeletonknight.png data/languages/korean/localization/enemybig_blackskeletonmage.png data/languages/korean/localization/enemybig_blackskeleton.png data/languages/korean/localization/enemybig_bluebanshee.png data/languages/korean/localization/enemybig_bluebat.png data/languages/korean/localization/enemybig_bluedragon.png data/languages/korean/localization/enemybig_bluemushroom.png data/languages/korean/localization/enemybig_blueslime.png data/languages/korean/localization/enemybig_bootsofpain.png data/languages/korean/localization/enemybig_browndirebat.png data/languages/korean/localization/enemybig_firebeetle.png data/languages/korean/localization/enemybig_firecauldronmimic.png data/languages/korean/localization/enemybig_goblinbomber.png data/languages/korean/localization/enemybig_grayshovemonster.png data/languages/korean/localization/enemybig_greenbanshee.png data/languages/korean/localization/enemybig_greenbat.png data/languages/korean/localization/enemybig_greendragon.png data/languages/korean/localization/enemybig_greenmonkey.png data/languages/korean/localization/enemybig_greenslime.png data/languages/korean/localization/enemybig_icebeetle.png data/languages/korean/localization/enemybig_icecauldronmimic.png data/languages/korean/localization/enemybig_kingconga.png data/languages/korean/localization/enemybig_leprechaun.png data/languages/korean/localization/enemybig_missedbeat.png data/languages/korean/localization/enemybig_mommy.png data/languages/korean/localization/enemybig_monstrousshopkeeper.png data/languages/korean/localization/enemybig_neonwarlock.png data/languages/korean/localization/enemybig_ogre.png data/languages/korean/localization/enemybig_redbat.png data/languages/korean/localization/enemybig_redbishop.png data/languages/korean/localization/enemybig_reddragon.png data/languages/korean/localization/enemybig_redking.png data/languages/korean/localization/enemybig_redknight.png data/languages/korean/localization/enemybig_redlich.png data/languages/korean/localization/enemybig_redpawn.png data/languages/korean/localization/enemybig_redqueen.png data/languages/korean/localization/enemybig_redrook.png data/languages/korean/localization/enemybig_shopkeeperghost.png data/languages/korean/localization/enemybig_shopkeeper.png data/languages/korean/localization/enemybig_shovemonster.png data/languages/korean/localization/enemybig_shove.png data/languages/korean/localization/enemybig_shrineofnoreturn.png data/languages/korean/localization/enemybig_shrineofpace.png data/languages/korean/localization/enemybig_shrineofrisk.png data/languages/korean/localization/enemybig_spider.png data/languages/korean/localization/enemybig_spiketrap.png data/languages/korean/localization/enemybig_tarmonster.png data/languages/korean/localization/enemybig_tentacle.png data/languages/korean/localization/enemybig_warlock.png data/languages/korean/localization/enemybig_whitearmadillo.png data/languages/korean/localization/enemybig_whitearmoredskeleton.png data/languages/korean/localization/enemybig_whitechestmimic.png data/languages/korean/localization/enemybig_whitemonkey.png data/languages/korean/localization/enemybig_whiteskeletonknight.png data/languages/korean/localization/enemybig_whiteskeletonmage.png data/languages/korean/localization/enemybig_whiteskeleton.png data/languages/korean/localization/enemybig_yellowarmadillo.png data/languages/korean/localization/enemybig_yellowarmoredskeleton.png data/languages/korean/localization/enemybig_yellowdirebat.png data/languages/korean/localization/enemybig_yellowsarcophagus.png data/languages/korean/localization/enemybig_yellowskeletonknight.png data/languages/korean/localization/enemybig_yellowskeletonmage.png data/languages/korean/localization/enemybig_yellowskeleton.png data/languages/korean/localization/enemy_blackarmoredskeleton.png data/languages/korean/localization/enemy_blackbat.png data/languages/korean/localization/enemy_blacklich.png data/languages/korean/localization/enemy_blacksarcophagus.png data/languages/korean/localization/enemy_blackskeletonknight.png data/languages/korean/localization/enemy_blackskeletonmage.png data/languages/korean/localization/enemy_blackskeleton.png data/languages/korean/localization/enemy_bluebanshee.png data/languages/korean/localization/enemy_bluebat.png data/languages/korean/localization/enemy_bluedragon.png data/languages/korean/localization/enemy_bluemushroom.png data/languages/korean/localization/enemy_blueslime.png data/languages/korean/localization/enemy_browndirebat.png data/languages/korean/localization/enemy_firebeetle.png data/languages/korean/localization/enemy_firecauldronmimic.png data/languages/korean/localization/enemy_grayshovemonster.png data/languages/korean/localization/enemy_greenbanshee.png data/languages/korean/localization/enemy_greenbat.png data/languages/korean/localization/enemy_greendragon.png data/languages/korean/localization/enemy_greenmonkey.png data/languages/korean/localization/enemy_greenslime.png data/languages/korean/localization/enemy_icecauldronmimic.png data/languages/korean/localization/enemy_kingconga.png data/languages/korean/localization/enemy_leprechaun.png data/languages/korean/localization/enemy_missedbeat.png data/languages/korean/localization/enemy_monstrousshopkeeper.png data/languages/korean/localization/enemy_ogre.png data/languages/korean/localization/enemy_oozegolem.png data/languages/korean/localization/enemy_redbat.png data/languages/korean/localization/enemy_redbishop.png data/languages/korean/localization/enemy_reddragon.png data/languages/korean/localization/enemy_redking.png data/languages/korean/localization/enemy_redknight.png data/languages/korean/localization/enemy_redlich.png data/languages/korean/localization/enemy_redpawn.png data/languages/korean/localization/enemy_redqueen.png data/languages/korean/localization/enemy_redrook.png data/languages/korean/localization/enemy_shovemonster.png data/languages/korean/localization/enemy_shove.png data/languages/korean/localization/enemy_shrineofnoreturn.png data/languages/korean/localization/enemy_shrineofpace.png data/languages/korean/localization/enemy_shrineofrisk.png data/languages/korean/localization/enemy_tarmonster.png data/languages/korean/localization/enemy_whitearmadillo.png data/languages/korean/localization/enemy_whitearmoredskeleton.png data/languages/korean/localization/enemy_whitechestmimic.png data/languages/korean/localization/enemy_whitemonkey.png data/languages/korean/localization/enemy_whiteskeletonknight.png data/languages/korean/localization/enemy_whiteskeletonmage.png data/languages/korean/localization/enemy_whiteskeleton.png data/languages/korean/localization/enemy_yellowarmadillo.png data/languages/korean/localization/enemy_yellowarmoredskeleton.png data/languages/korean/localization/enemy_yellowdirebat.png data/languages/korean/localization/enemy_yellowsarcophagus.png data/languages/korean/localization/enemy_yellowskeletonknight.png data/languages/korean/localization/enemy_yellowskeletonmage.png data/languages/korean/localization/enemy_yellowskeleton.png data/languages/korean/localization/game_coinmultiplierlost.png data/languages/korean/localization/game_death1.png data/languages/korean/localization/game_deathless1.png data/languages/korean/localization/game_loading.png data/languages/korean/localization/game_speedleaderboards.png data/languages/korean/localization/game_speedrun.png data/languages/korean/localization/game_story2.png data/languages/korean/localization/game_story3.png data/languages/korean/localization/hint_10killsheal.png data/languages/korean/localization/hint_1dmgkilldash.png data/languages/korean/localization/hint_1dmgmoreenemies.png data/languages/korean/localization/hint_1dmgstrangevision.png data/languages/korean/localization/hint_1heartfewerenemies.png data/languages/korean/localization/hint_1visiontrapsight.png data/languages/korean/localization/hint_2defenseheavy.png data/languages/korean/localization/hint_2dmgatlowhealth.png data/languages/korean/localization/hint_bombimmunity3bombs.png data/languages/korean/localization/hint_brokerreject.png data/languages/korean/localization/hint_chancelose.png data/languages/korean/localization/hint_cheapershops.png data/languages/korean/localization/hint_completebomblore.png data/languages/korean/localization/hint_completecadence.png data/languages/korean/localization/hint_completedragonlore.png data/languages/korean/localization/hint_completemonk.png data/languages/korean/localization/hint_completetraplore.png data/languages/korean/localization/hint_completezone4cadence.png data/languages/korean/localization/hint_conicalblastneedsreloadingpiercing.png data/languages/korean/localization/hint_damageenemies.png data/languages/korean/localization/hint_diganythingbuttakedamage.png data/languages/korean/localization/hint_dodamageasyouwalk.png data/languages/korean/localization/hint_gold.png data/languages/korean/localization/hint_helpswithsometerrain.png data/languages/korean/localization/hint_helpswithtrapsandice.png data/languages/korean/localization/hint_horizontalfireblast2.png data/languages/korean/localization/hint_horizontalfireblast.png data/languages/korean/localization/hint_immune.png data/languages/korean/localization/hint_longjumpattack.png data/languages/korean/localization/hint_longjump.png data/languages/korean/localization/hint_moveandattack.png data/languages/korean/localization/hint_oldweaponholstered.png data/languages/korean/localization/hint_opencage.png data/languages/korean/localization/hint_opencagewithglasslock.png data/languages/korean/localization/hint_opencagewithgoldenlock.png data/languages/korean/localization/hint_rewardsovereatingonce.png data/languages/korean/localization/hint_shoppingspree.png data/languages/korean/localization/hint_shrineofblood1.png data/languages/korean/localization/hint_shrineofchance1.png data/languages/korean/localization/hint_shrineofdarkness1.png data/languages/korean/localization/hint_shrineofglass1.png data/languages/korean/localization/hint_shrineofnoreturn1.png data/languages/korean/localization/hint_shrineofnoreturn2.png data/languages/korean/localization/hint_shrineofpace1.png data/languages/korean/localization/hint_shrineofpace2.png data/languages/korean/localization/hint_shrineofpeace1.png data/languages/korean/localization/hint_shrineofphasing1.png data/languages/korean/localization/hint_shrineofrhythm1.png data/languages/korean/localization/hint_shrineofrhythm2.png data/languages/korean/localization/hint_shrineofrisk1.png data/languages/korean/localization/hint_shrineofsacrifice1.png data/languages/korean/localization/hint_shrineofsacrifice2.png data/languages/korean/localization/hint_shrineofspace1.png data/languages/korean/localization/hint_shrineofwar1.png data/languages/korean/localization/hint_sloth.png data/languages/korean/localization/hint_standstillincreasedamage.png data/languages/korean/localization/hint_tempotrapdown.png data/languages/korean/localization/hint_tempotrapup.png data/languages/korean/localization/hud_0-5heart.png data/languages/korean/localization/hud_1-5hearts.png data/languages/korean/localization/hud_1heart.png data/languages/korean/localization/hud_1kill.png data/languages/korean/localization/hud_kills.png data/languages/korean/localization/item_10diamonds.png data/languages/korean/localization/item_15diamonds.png data/languages/korean/localization/item_20diamonds.png data/languages/korean/localization/item_2diamonds.png data/languages/korean/localization/item_3bombs.png data/languages/korean/localization/item_3diamonds.png data/languages/korean/localization/item_4diamonds.png data/languages/korean/localization/item_5diamonds.png data/languages/korean/localization/item_additionalblackchest.png data/languages/korean/localization/item_additionalredchest.png data/languages/korean/localization/item_blasthelm.png data/languages/korean/localization/item_bloodbroadsword.png data/languages/korean/localization/item_bloodcrossbow.png data/languages/korean/localization/item_bloodlongsword.png data/languages/korean/localization/item_bootsofleaping.png data/languages/korean/localization/item_bootsoflunging.png data/languages/korean/localization/item_broadsword.png data/languages/korean/localization/item_cat.png data/languages/korean/localization/item_crossbow.png data/languages/korean/localization/item_daggeroffrost.png data/languages/korean/localization/item_earthquakescroll.png data/languages/korean/localization/item_enchantweaponscroll.png data/languages/korean/localization/item_explorersboots.png data/languages/korean/localization/item_fearscroll.png data/languages/korean/localization/item_fireballscroll.png data/languages/korean/localization/item_freezescroll.png data/languages/korean/localization/item_gigantismscroll.png data/languages/korean/localization/item_glassbroadsword.png data/languages/korean/localization/item_glasscrossbow.png data/languages/korean/localization/item_glasslongsword.png data/languages/korean/localization/item_goldenbroadsword.png data/languages/korean/localization/item_goldencrossbow.png data/languages/korean/localization/item_goldenlongsword.png data/languages/korean/localization/item_heavyplate.png data/languages/korean/localization/item_karategi.png data/languages/korean/localization/item_leadboots.png data/languages/korean/localization/item_longsword.png data/languages/korean/localization/item_obsidianbroadsword.png data/languages/korean/localization/item_obsidiancrossbow.png data/languages/korean/localization/item_obsidianlongsword.png data/languages/korean/localization/item_richesscroll.png data/languages/korean/localization/item_rifle.png data/languages/korean/localization/item_scrollofneed.png data/languages/korean/localization/item_shieldscroll.png data/languages/korean/localization/item_titaniumbroadsword.png data/languages/korean/localization/item_titaniumcrossbow.png data/languages/korean/localization/item_titaniumlongsword.png data/languages/korean/localization/item_transmutescroll.png data/languages/korean/localization/item_wingedboots.png data/languages/korean/localization/leaderboard_allzones_speedrun.png data/languages/korean/localization/leaderboard_allzones_speedrun_seeded.png data/languages/korean/localization/leaderboard_deathless.png data/languages/korean/localization/leaderboard_loading.png data/languages/korean/localization/leveleditor_catacombwall.png data/languages/korean/localization/leveleditor_headgear.png data/languages/korean/localization/leveleditor_kingconga.png data/languages/korean/localization/leveleditor_ooze.png data/languages/korean/localization/leveleditor_placecontainer.png data/languages/korean/localization/leveleditor_placeshrine.png data/languages/korean/localization/leveleditor_shrineblood.png data/languages/korean/localization/leveleditor_shrinechance.png data/languages/korean/localization/leveleditor_shrinedarkness.png data/languages/korean/localization/leveleditor_shrineglass.png data/languages/korean/localization/leveleditor_shrinenoreturn.png data/languages/korean/localization/leveleditor_shrinepace.png data/languages/korean/localization/leveleditor_shrinepeace.png data/languages/korean/localization/leveleditor_shrinephasing.png data/languages/korean/localization/leveleditor_shrinerhythm.png data/languages/korean/localization/leveleditor_shrinerisk.png data/languages/korean/localization/leveleditor_shrinesacrifice.png data/languages/korean/localization/leveleditor_shrinespace.png data/languages/korean/localization/leveleditor_shrinewar.png data/languages/korean/localization/leveleditor_spiketrap.png data/languages/korean/localization/leveleditor_travelrune.png data/languages/korean/localization/leveleditor_zone3cold.png data/languages/korean/localization/leveleditor_zone3hot.png data/languages/korean/localization/lobby_bomblore.png data/languages/korean/localization/lobby_diamonddealerexplain1.png data/languages/korean/localization/lobby_diamonddealerexplain2.png data/languages/korean/localization/lobby_dragonlore.png data/languages/korean/localization/lobby_howtogetaway.png data/languages/korean/localization/lobby_janitorexplain1.png data/languages/korean/localization/lobby_janitorexplain2.png data/languages/korean/localization/lobby_traplore.png data/languages/korean/localization/lobby_unspent1.png data/languages/korean/localization/lobby_unspentdiamonds1.png data/languages/korean/localization/lobby_weaponblood.png data/languages/korean/localization/lobby_withmurder.png data/languages/korean/localization/options_beatdetectionongoing.png data/languages/korean/localization/options_cutscenes.png data/languages/korean/localization/options_enemyhearts.png data/languages/korean/localization/options_latencybeat.png data/languages/korean/localization/options_leaderboardsdeathless.png data/languages/korean/localization/options_leaderboardsspeedseeded.png data/languages/korean/localization/selection/character_eli.png data/languages/korean/localization/selection/character_monk.png data/languages/korean/localization/selection/custommusic_1-2xspeed.png data/languages/korean/localization/selection/custommusic_2xspeed.png data/languages/korean/localization/selection/custommusic_kingconga.png data/languages/korean/localization/selection/custommusic_manualbeatslobby.png data/languages/korean/localization/selection/custommusic_manualbeats.png data/languages/korean/localization/selection/game_speedleaderboards.png data/languages/korean/localization/selection/leveleditor_catacombwall.png data/languages/korean/localization/selection/leveleditor_headgear.png data/languages/korean/localization/selection/leveleditor_kingconga.png data/languages/korean/localization/selection/leveleditor_ooze.png data/languages/korean/localization/selection/leveleditor_placecontainer.png data/languages/korean/localization/selection/leveleditor_placeshrine.png data/languages/korean/localization/selection/leveleditor_shrineblood.png data/languages/korean/localization/selection/leveleditor_shrinechance.png data/languages/korean/localization/selection/leveleditor_shrinedarkness.png data/languages/korean/localization/selection/leveleditor_shrineglass.png data/languages/korean/localization/selection/leveleditor_shrinenoreturn.png data/languages/korean/localization/selection/leveleditor_shrinepace.png data/languages/korean/localization/selection/leveleditor_shrinepeace.png data/languages/korean/localization/selection/leveleditor_shrinephasing.png data/languages/korean/localization/selection/leveleditor_shrinerhythm.png data/languages/korean/localization/selection/leveleditor_shrinerisk.png data/languages/korean/localization/selection/leveleditor_shrinesacrifice.png data/languages/korean/localization/selection/leveleditor_shrinespace.png data/languages/korean/localization/selection/leveleditor_shrinewar.png data/languages/korean/localization/selection/leveleditor_spiketrap.png data/languages/korean/localization/selection/leveleditor_travelrune.png data/languages/korean/localization/selection/leveleditor_zone3cold.png data/languages/korean/localization/selection/leveleditor_zone3hot.png data/languages/korean/localization/selection/options_cutscenes.png data/languages/korean/localization/selection/options_enemyhearts.png data/languages/korean/localization/selection/options_leaderboardsdeathless.png data/languages/korean/localization/selection/options_leaderboardsspeedseeded.png data/languages/korean/localization/shop_shriner.png data/languages/korean/localization/training_armoredskeleton1.png data/languages/korean/localization/training_blackarmoredskeleton1.png data/languages/korean/localization/training_blackbat.png data/languages/korean/localization/training_blacklich.png data/languages/korean/localization/training_blacksarcophagus1.png data/languages/korean/localization/training_blackskeletonknight1.png data/languages/korean/localization/training_blackskeletonmage1.png data/languages/korean/localization/training_blackskeleton.png data/languages/korean/localization/training_bluedragon.png data/languages/korean/localization/training_blueslime.png data/languages/korean/localization/training_cauldronmimic.png data/languages/korean/localization/training_direbat.png data/languages/korean/localization/training_firebeetle.png data/languages/korean/localization/training_graydirebat.png data/languages/korean/localization/training_grayshovemonster2.png data/languages/korean/localization/training_greenbanshee1.png data/languages/korean/localization/training_greenbat.png data/languages/korean/localization/training_greendragon.png data/languages/korean/localization/training_greenmonkey1.png data/languages/korean/localization/training_greenslime.png data/languages/korean/localization/training_neonwarlock.png data/languages/korean/localization/training_ogre.png data/languages/korean/localization/training_oozegolem.png data/languages/korean/localization/training_redbat.png data/languages/korean/localization/training_reddragon.png data/languages/korean/localization/training_redlich.png data/languages/korean/localization/training_shovemonster.png data/languages/korean/localization/training_tarmonster.png data/languages/korean/localization/training_whitemonkey.png data/languages/korean/localization/training_yellowarmadillo.png data/languages/korean/localization/training_yellowarmoredskeleton1.png data/languages/korean/localization/training_yellowsarcophagus1.png data/languages/korean/localization/training_yellowskeletonknight1.png data/languages/korean/localization/training_yellowskeletonmage1.png data/languages/korean/localization/training_yellowskeleton.png data/languages/korean/localization.xml data/languages/korean/subtitles.xml data/languages/russian/localization/characterselect_story2.png data/languages/russian/localization/game_story2.png data/languages/russian/localization/game_story3.png data/languages/russian/localization.xml data/languages/russian/subtitles.xml data/languages/spanish/localization/characterselect_story2.png data/languages/spanish/localization/game_story2.png data/languages/spanish/localization/game_story3.png data/languages/spanish/localization.xml data/languages/spanish/subtitles.xml data/music/boss_1_2.ogg data/music/boss_2_2.ogg data/music/boss_3_2.ogg data/music/boss_4_2.ogg data/music/credits_1.ogg data/music/credits_2.ogg data/music/credits_3.ogg data/music/credits_4.ogg data/music/lobby_2.ogg data/music/zone1_1_2.ogg data/music/zone1_2_2.ogg data/music/zone1_3_2.ogg data/music/zone2_1_2.ogg data/music/zone2_2_2.ogg data/music/zone2_3_2.ogg data/music/zone3_1_2c.ogg data/music/zone3_1_2h.ogg data/music/zone3_2_2c.ogg data/music/zone3_2_2h.ogg data/music/zone3_3_2c.ogg data/music/zone3_3_2h.ogg data/music/zone4_1_2.ogg data/music/zone4_2_2.ogg data/music/zone4_3_2.ogg data/necrodancer.xml data/sounds.xml data/video/credits_1.ogv data/video/credits_2.ogv data/video/credits_3.ogv data/video/credits_4.ogv' CONTENT_GAME_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' TROUBLESHOOTING.txt' USER_PERSISTENT_DIRECTORIES=' data/custom_music dungeons downloaded_dungeons downloaded_mods mods replays' USER_PERSISTENT_FILES=' data/played.dat data/save_data.xml' APP_MAIN_EXE='NecroDancer64/NecroDancer.x64' APP_MAIN_ICON='NecroDancer.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA_SHARED PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libFLAC.so.8 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libudev.so.1 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SHARED' PKG_DATA_SHARED_ID="${PKG_DATA_ID}-shared" PKG_DATA_SHARED_DESCRIPTION='data shared between base game and expansion' ## Easy upgrade from pre-20250708.2 packages. PKG_DATA_SHARED_PROVIDES="${PKG_DATA_SHARED_PROVIDES:-} crypt-of-the-necrodancer-data-common" # 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 libnecrolevel.so to the hard-coded path where the engine expects to find it mkdir --parents "$(package_path 'PKG_BIN')$(path_game_data)/NecroDancer64/lib" ln --symbolic \ "$(path_libraries)/libnecrolevel.so" \ "$(package_path 'PKG_BIN')$(path_game_data)/NecroDancer64/lib/libnecrolevel.so" # Write launchers ## Force the use of system-provided SDL, ## and prevent a game crash when using the wayland backend of SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Force the use of the system SDL library export SDL_DYNAMIC_API="'"$(path_libraries_system)"'/libSDL2-2.0.so.0" # Prevent a game crash when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd NecroDancer64 ./NecroDancer.x64 "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-cryptark.sh0000755000000000000000000000574214471751340014027 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 VA # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Cryptark # send your bug reports to bugs@dotslashplay.it ### script_version=20250910.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='cryptark' GAME_NAME='Cryptark' ARCHIVE_BASE_1_NAME='cryptark_en_1_23_22933.sh' ARCHIVE_BASE_1_MD5='7fbca12cab4fae1a36a365fdf004a678' ARCHIVE_BASE_1_SIZE='700000' ARCHIVE_BASE_1_VERSION='1.23-gog22933' ARCHIVE_BASE_1_URL='https://www.gog.com/game/cryptark' ARCHIVE_BASE_0_NAME='cryptark_en_1_2_15203.sh' ARCHIVE_BASE_0_MD5='53083f1fef847a30eb99914821c8649a' ARCHIVE_BASE_0_SIZE='700000' ARCHIVE_BASE_0_VERSION='1.2-gog15203' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_FILES=' libmojoshader.so libtheorafile.so' CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content monoconfig monomachineconfig Cryptark.exe Cryptark.png gamecontrollerdb.txt BrashMonkeySpriterXNA.dll CommandConsoleSharedTypes.dll FNA.dll FNA.dll.config Lidgren.Network.dll MSCommon.dll ProjectMercury.dll spine-csharp_xna.dll spine-xna.dll TexturePackingRuntime.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' APP_MAIN_EXE='Cryptark.exe' APP_MAIN_ICON='Cryptark.png' 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' 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.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Web.dll System.Web.Extensions.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' ## FIXME: Set the list of native libraries the shipped libraries rely on. # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-deadbolt.sh0000755000000000000000000000375214471751340013745 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Deadbolt # send your bug reports to bugs@dotslashplay.it ### script_version=20250910.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='deadbolt' GAME_NAME='Deadbolt' ARCHIVE_BASE_0_NAME='gog_deadbolt_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='bc7831a069546d18f5e12a5ee3da4850' ARCHIVE_BASE_0_SIZE='140000' ARCHIVE_BASE_0_VERSION='1.0.2-gog2.1.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/deadbolt' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' deadbolt' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='deadbolt' APP_MAIN_ICON='assets/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 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-duet.sh0000755000000000000000000000534314471751340013126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Duet # send your bug reports to bugs@dotslashplay.it ### script_version=20250707.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='duet' GAME_NAME='Duet' ## This DRM-free build is no longer available for sale from humblebundle.com. ARCHIVE_BASE_0_NAME='Duet-Build1006023-Linux64.zip' ARCHIVE_BASE_0_MD5='b9c34c29da94c199ee75a5e71272a1eb' ARCHIVE_BASE_0_SIZE='210000' ARCHIVE_BASE_0_VERSION='1.0-humble1006023' ARCHIVE_OPTIONAL_ICONS_NAME='duet_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5='57d79a524801768a742405a7a5310e08' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/duet/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 128x128 256x256' CONTENT_PATH_DEFAULT='.' CONTENT_LIBS_BIN_FILES=' libsfml-audio.so.2.3 libsfml-graphics.so.2.3 libsfml-system.so.2.3 libsfml-window.so.2.3' ## The game binary is linked against libsteam_api.so, so it can not be dropped. CONTENT_LIBS_BIN_FILES="$CONTENT_LIBS_BIN_FILES libsteam_api.so" CONTENT_LIBS0_BIN_PATH='steam-runtime/amd64/usr/lib/x86_64-linux-gnu' CONTENT_LIBS0_BIN_FILES=' libjpeg.so.8 libjpeg.so.8.0.2' CONTENT_GAME_BIN_FILES=' Duet' CONTENT_GAME_DATA_FILES=' Media' APP_MAIN_EXE='Duet' 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 libFLAC.so.8 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libogg.so.0 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libudev.so.0 libvorbisenc.so.2 libvorbisfile.so.3 libvorbis.so.0 libX11.so.6 libX11-xcb.so.1 libxcb-randr.so.0 libxcb.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-duke-nukem-3d.sh0000755000000000000000000000407214471751340014534 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Duke Nukem 3D # send your bug reports to bugs@dotslashplay.it ### script_version=20250702.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='duke-nukem-3d' GAME_NAME='Duke Nukem 3D' # The following installers are no longer available for sale from GOG. ARCHIVE_BASE_0_NAME='gog_duke_nukem_3d_atomic_edition_2.0.0.9.sh' ARCHIVE_BASE_0_MD5='a51283d3bbc2db62b75c6c62824f5e46' ARCHIVE_BASE_0_SIZE='63000' ARCHIVE_BASE_0_VERSION='1.5-gog2.0.0.9' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' *.BAT *.CFG *.CON *.DAT *.DMO *.DOC *.EXE *.GIF *.GRP *.H *.HLP *.INI *.MAP *.PCK *.RTS *.TXT' CONTENT_DOC_MAIN_FILES=' license.txt' APP_MAIN_EXE='DUKE3D.EXE' APP_MAIN_ICON='duke3d.ico' ## TODO: DOS binaries detection has been fixed with ./play.it 2.33.1, ## this explicit property can be removed when bumping the compatibility level to 2.34. APP_MAIN_TYPE='dosbox' USER_PERSISTENT_FILES=' DUKE3D.GRP *.CFG *.SAV' ## Enforce required audio setting. APP_MAIN_PRERUN=' # Enforce required audio setting. export DOSBOX_SBLASTER_IRQ=5 ' # 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-enter-the-gungeon.sh0000700000000000000000000000472414471751340015510 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Enter the Gungeon # send your bug reports to bugs@dotslashplay.it ### script_version=20250706.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='enter-the-gungeon' GAME_NAME='Enter the Gungeon' ARCHIVE_BASE_0_NAME='enter_the_gungeon_2_1_9_33951.sh' ARCHIVE_BASE_0_MD5='5d4c174aa3b9bb57faa19e44872794e5' ARCHIVE_BASE_0_SIZE='360000' ARCHIVE_BASE_0_VERSION='2.1.9-gog33951' ARCHIVE_BASE_0_URL='https://www.gog.com/game/enter_the_gungeon' UNITY3D_NAME='EtG' CONTENT_PATH_DEFAULT='data/noarch/game' ## FIXME: An explicit list of plugins to include should be set through UNITY3D_PLUGINS. CONTENT_GAME0_BIN64_FILES=" ${UNITY3D_NAME}_Data/Plugins/x86_64" CONTENT_GAME0_BIN32_FILES=" ${UNITY3D_NAME}_Data/Plugins/x86" 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" ## TODO: Complete the dependencies list. PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-flashout-3d.sh0000755000000000000000000000455114471751340014316 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Flashout 3D # send your bug reports to bugs@dotslashplay.it ### script_version=20250704.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='flashout-3d-enhanced-edition' GAME_NAME='Flashout 3D: Enhanced Edition' ARCHIVE_BASE_0_NAME='setup_flashout_3d_enhanced_edition_1.0.4_(58979).exe' ARCHIVE_BASE_0_MD5='f1a898a6f1a5d50f1f482170221557a5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='830000' ARCHIVE_BASE_0_VERSION='1.0.4-gog58979' ARCHIVE_BASE_0_URL='https://www.gog.com/game/flashout_3d_enhanced_edition' UNITY3D_NAME='flashout3d-ee' CONTENT_PATH_DEFAULT='.' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Jujubee S.A.\Flashout3D-EE' 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 ## Work around regedit inability to handle long paths. ## TODO: This can be dropped once the compatibility level is bumped to 2.34. wine_launcher_regedit_environment() { cat <<- EOF # Set environment for registry keys persistent storage REGEDIT_DUMPS_WINEPREFIX_PATH="\${WINEPREFIX}/drive_c/${GAME_ID}/wine/regedit" REGEDIT_PERSISTENT_KEYS='$WINE_REGEDIT_PERSISTENT_KEYS' EOF cat <<- 'EOF' ## Convert registry key name to file path regedit_convert_key_to_path() { printf 'flashout3d-ee.reg' } EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-flatout-1.sh0000700000000000000000000000407714471751340013772 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2025 tyzef # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # FlatOut # send your bug reports to bugs@dotslashplay.it ### script_version=20250709.5 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='flatout-1' GAME_NAME='FlatOut' ARCHIVE_BASE_1_NAME='flatout_gog_3_23461.sh' ARCHIVE_BASE_1_MD5='a9e80bca460e8c09c5d5e2242564bd8f' ARCHIVE_BASE_1_SIZE='2298217' ARCHIVE_BASE_1_VERSION='1.0-gog23461' ARCHIVE_BASE_1_URL='https://www.gog.com/game/flatout' CONTENT_PATH_DEFAULT='data/noarch/prefix/drive_c/GOG Games/FlatOut' CONTENT_GAME_BIN_FILES=' paul.dll flatout.exe *.dll' CONTENT_GAME_DATA_FILES=' data' USER_PERSISTENT_DIRECTORIES=' Savegame' APP_MAIN_EXE='flatout.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## Easier upgrades from pre-20250709.4 packages. PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} flatout" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Easier upgrades from pre-20250709.4 packages. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} flatout-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-flatout-2.sh0000700000000000000000000000615214471751340013767 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # FlatOut 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250826.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='flatout-2' GAME_NAME='FlatOut 2' ARCHIVE_BASE_2_NAME='flatout_2_gog_3_23461.sh' ARCHIVE_BASE_2_MD5='5529dcd679eae03f23d9807efd22a182' ARCHIVE_BASE_2_SIZE='3800000' ARCHIVE_BASE_2_VERSION='1.2-gog23461' ARCHIVE_BASE_2_URL='https://www.gog.com/game/flatout_2' ARCHIVE_BASE_1_NAME='gog_flatout_2_2.1.0.6.sh' ARCHIVE_BASE_1_MD5='77cbd07105aa202ef808edebda15833a' ARCHIVE_BASE_1_SIZE='3400000' ARCHIVE_BASE_1_VERSION='1.2-gog2.1.0.6' ARCHIVE_BASE_0_NAME='gog_flatout_2_2.0.0.4.sh' ARCHIVE_BASE_0_MD5='cdc453f737159ac62bd9f59540002610' ARCHIVE_BASE_0_SIZE='3600000' ARCHIVE_BASE_0_VERSION='1.2-gog2.0.0.4' CONTENT_PATH_DEFAULT='data/noarch/prefix/drive_c/GOG Games/FlatOut 2' CONTENT_GAME_BIN_FILES=' flatout2.exe' CONTENT_GAME_DATA_FILES=' filesystem patch flatout2.ico *.bfs' CONTENT_DOC_DATA_FILES=' readme.htm *.pdf' USER_PERSISTENT_DIRECTORIES=' savegame' ## Work around a shader compilation error preventing the game launch: ## ## 0024:err:d3dcompiler:D3DCompile2 Failed to compile shader, vkd3d result -4. ## 0024:err:d3dcompiler:D3DCompile2 Shader log: ## 0024:err:d3dcompiler:D3DCompile2 :16:1: E5030: Unknown modifier "decl". ## 0024:err:d3dcompiler:D3DCompile2 :17:1: E5000: syntax error, unexpected '{' ## 0024:err:d3dcompiler:D3DCompile2 ## ## cf. https://bugs.winehq.org/show_bug.cgi?id=37676 ## (WINE 10.0) WINE_WINETRICKS_VERBS='d3dcompiler_47' ## Prevent shadows from being displayed as reddish blocks. ## cf. https://bugs.winehq.org/show_bug.cgi?id=50888 ## (WINE 10.0) WINE_WINETRICKS_VERBS="$WINE_WINETRICKS_VERBS d3dx9_30" APP_MAIN_EXE='flatout2.exe' APP_MAIN_ICON='flatout2.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## convmv is used to convert paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ## Convert file paths to lower case. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-grip.sh0000700000000000000000000000424014471751340013107 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Grip # send your bug reports to bugs@dotslashplay.it ### script_version=20250813.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='grip-game' GAME_NAME='Grip' ARCHIVE_BASE_0_NAME='setup_grip_1.5.3_v2_(50529).exe' ARCHIVE_BASE_0_MD5='1180ad9aae91fd168fb32d14c8516b05' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_grip_1.5.3_v2_(50529)-1.bin' ARCHIVE_BASE_0_PART1_MD5='ee3a558625e2a7d58f9be0bc9cbc6290' ARCHIVE_BASE_0_PART2_NAME='setup_grip_1.5.3_v2_(50529)-2.bin' ARCHIVE_BASE_0_PART2_MD5='427b9d550c93423010f688f3dd886704' ARCHIVE_BASE_0_SIZE='12000000' ARCHIVE_BASE_0_VERSION='1.5.3-gog50529' ARCHIVE_BASE_0_URL='https://www.gog.com/game/grip' UNREALENGINE4_NAME='grip' CONTENT_PATH_DEFAULT='.' HUGE_FILES_DATA=" ${UNREALENGINE4_NAME}/content/paks/grip-windowsnoeditor.pak" APP_MAIN_EXE='grip.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 ## Do not install Visual C++ Runtime, ## as it triggers UE4 Prerequisites failing install attempts. unrealengine4_wine_winetricks_verbs_default() { return 0; } launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-gun-toting-cats.sh0000700000000000000000000000375514471751340015203 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gun-Toting Cats # send your bug reports to bugs@dotslashplay.it ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='gun-toting-cats' GAME_NAME='Gun-Toting Cats' ARCHIVE_BASE_0_NAME='(Linux) GTCats Prototype.zip' ARCHIVE_BASE_0_MD5='4e020ea013b59e8c04a52e1f7e1e32a9' ARCHIVE_BASE_0_SIZE='56670' ARCHIVE_BASE_0_VERSION='1.8-itch' ARCHIVE_BASE_0_URL='https://kit9studio.itch.io/gun-toting-cats' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' Gun-Toting Cats Prototype 1.8' CONTENT_GAME_DATA_FILES=' data.pck' CONTENT_DOC_DATA_FILES=' licenses.txt' APP_MAIN_EXE='Gun-Toting Cats Prototype 1.8' 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=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 libpulse-simple.so.0 libpulse.so.0 libX11.so.6 libXcursor.so.1 libXinerama.so.1 libXi.so.6 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 # 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-hot-pot-panic.sh0000755000000000000000000000330714471751340014645 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Hot Pot Panic # send your bug reports to bugs@dotslashplay.it ### script_version=20240618.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='hot-pot-panic' GAME_NAME='Hot Pot Panic' ARCHIVE_BASE_0_NAME='hot_pot_panic_win_1.zip' ARCHIVE_BASE_0_MD5='b4d30e19a87fa7353e588eb449becd19' ARCHIVE_BASE_0_SIZE='53000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://keanerie.itch.io/hot-pot-panic' UNITY3D_NAME='hot_pot_panic' CONTENT_PATH_DEFAULT='hot_pot_panic_win_1' ## TODO: Use persistent storage for saved games and settings. 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-hotline-miami-1.sh0000700000000000000000000000540314471751340015042 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Hotline Miami # send your bug reports to bugs@dotslashplay.it ### script_version=20240623.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='hotline-miami-1' GAME_NAME='Hotline Miami' ARCHIVE_BASE_HUMBLE_0_NAME='HotlineMiami_linux_1392944501.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='f68e5680f7f54f12b313cb533af53548' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble.2014-02-20' ARCHIVE_BASE_HUMBLE_0_SIZE='590000' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/hotline-miami' ARCHIVE_BASE_GOG_0_NAME='gog_hotline_miami_2.0.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='ce95f10b1cba248b531228936c491eb4' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.0.0.4' ARCHIVE_BASE_GOG_0_SIZE='540000' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/hotline_miami' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_GAME_BIN_FILES=' hotline_launcher Hotline' CONTENT_GAME_DATA_FILES=' *.ogg *.wad' APP_MAIN_EXE='hotline_launcher' ## Only the GOG.com archive provides a game icon. APP_MAIN_ICON_GOG='../support/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=' libCgGL.so libCg.so libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libogg.so.0 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.0 libX11.so.6 libX11-xcb.so.1 libxcb.so.1 libXext.so.6 libXi.so.6 libXrandr.so.2 libXrender.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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set execution permissions on all binaries. chmod 755 'Hotline' ) # Include game data ## Only the GOG.com archive provides a game icon. 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-hounds-of-valor.sh0000700000000000000000000000372114471751340015174 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Hounds of Valor # send your bug reports to bugs@dotslashplay.it ### script_version=20250704.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='hounds-of-valor' GAME_NAME='Hounds of Valor' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_DEMO_0_NAME='HoundsOfValor_Demo_v05_Linux.zip' ARCHIVE_BASE_DEMO_0_MD5='713a46b42dfb304f44b2b1dc456223c5' ARCHIVE_BASE_DEMO_0_SIZE='630000' ARCHIVE_BASE_DEMO_0_VERSION='0.5-itch1' ARCHIVE_BASE_DEMO_0_URL='https://dogatworkgames.itch.io/houndsofvalor' UNITY3D_NAME='HoundsLinux' 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_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-iconoclasts.sh0000700000000000000000000000441314471751340014471 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Iconoclasts # send your bug reports to bugs@dotslashplay.it ### script_version=20240708.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='iconoclasts' GAME_NAME='Iconoclasts' ARCHIVE_BASE_0_NAME='iconoclasts_1_15_chinese_24946.sh' ARCHIVE_BASE_0_MD5='f93af13b81659e76a953dfff584d6fc9' ARCHIVE_BASE_0_SIZE='187633' ARCHIVE_BASE_0_VERSION='1.15-gog.24946' ARCHIVE_BASE_0_URL='https://www.gog.com/game/iconoclasts' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' bin64' CONTENT_GAME_BIN32_FILES=' bin32' CONTENT_GAME_DATA_FILES=' data Assets.dat gamecontrollerdb.txt icon.bmp' USER_PERSISTENT_FILES=' lang.cfg data/point data/settings data/save*' APP_MAIN_EXE_BIN32='bin32/Chowdren' APP_MAIN_EXE_BIN64='bin64/Chowdren' APP_MAIN_ICON='icon.bmp' 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 libGL.so.1 libm.so.6 libpthread.so.0' 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-intrusion-2.sh0000755000000000000000000000707214471751340014357 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Intrusion 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250910.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='intrusion-2' GAME_NAME='Intrusion 2' ARCHIVE_BASE_0_NAME='intrusion2-1370288626-bin' ARCHIVE_BASE_0_MD5='de6a30d7fb3d117065f11743b4f0a13a' ARCHIVE_BASE_0_SIZE='87000' ARCHIVE_BASE_0_VERSION='1.024-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/intrusion-2' ARCHIVE_OPTIONAL_ICONS_NAME='intrusion-2_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='f31db2695382a996934f8f8dbb7c0f56' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/intrusion-2/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 64x64' ARCHIVE_REQUIRED_GSTREAMER_NAME='gstreamer0.10.tar.gz' ARCHIVE_REQUIRED_GSTREAMER_MD5='dcd836dfd0dfdf9882557b5a13f89a3c' ARCHIVE_REQUIRED_GSTREAMER_URL='https://downloads.dotslashplay.it/resources/gstreamer/' CONTENT_GSTREAMER_PATH='gstreamer0.10' CONTENT_GSTREAMER_FILES=' libgstreamer-0.10.so.0 libgstreamer-0.10.so.0.30.0' ARCHIVE_REQUIRED_GST_PLUGINS_BASE_NAME='gst-plugins-base0.10.tar.gz' ARCHIVE_REQUIRED_GST_PLUGINS_BASE_MD5='13e30627414178684de753e5f6105a43' ARCHIVE_REQUIRED_GST_PLUGINS_BASE_URL='https://downloads.dotslashplay.it/resources/gstreamer/' CONTENT_GST_PLUGINS_BASE_PATH='gst-plugins-base0.10' CONTENT_GST_PLUGINS_BASE_FILES=' libgstinterfaces-0.10.so.0 libgstinterfaces-0.10.so.0.25.0' FAKE_HOME_PERSISTENT_DIRECTORIES=' intrusion2' APP_MAIN_EXE='intrusion-2' PKG_MAIN_ARCH='32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 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 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 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libSM.so.6 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1 libxml2.so.2 libXtst.so.6' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Check for the presence of required GStreamer 0.10 archives. archive_initialize_required \ 'ARCHIVE_GSTREAMER' \ 'ARCHIVE_REQUIRED_GSTREAMER' archive_initialize_required \ 'ARCHIVE_GST_PLUGINS_BASE' \ 'ARCHIVE_REQUIRED_GST_PLUGINS_BASE' # Extract game data. archive_extraction 'ARCHIVE_GSTREAMER' archive_extraction 'ARCHIVE_GST_PLUGINS_BASE' if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction_extra_icons fi # Include game data. content_inclusion_icons content_inclusion 'GSTREAMER' 'PKG_MAIN' "$(path_libraries)" content_inclusion 'GST_PLUGINS_BASE' 'PKG_MAIN' "$(path_libraries)" install -D --mode=755 \ "$(archive_path "$(current_archive)")" \ "$(package_path 'PKG_MAIN')$(path_game_data)/intrusion-2" rm --force --recursive "${PLAYIT_WORKDIR}/gamedata" # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-jydge.sh0000755000000000000000000000357014471751340013267 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Jydge # send your bug reports to bugs@dotslashplay.it ### script_version=20250910.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='jydge' GAME_NAME='JYDGE' ARCHIVE_BASE_0_NAME='JYDGE' ARCHIVE_BASE_0_MD5='3b8c8a14b7d7bc7c059c479910eb449d' ARCHIVE_BASE_0_TYPE='zip' ARCHIVE_BASE_0_SIZE='310000' ARCHIVE_BASE_0_VERSION='1.2.0.6-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/jydge' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' JYDGE' CONTENT_GAME_DATA_FILES=' *.pak *.xml' APP_MAIN_EXE='JYDGE' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 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 default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-lo-fi-room.sh0000700000000000000000000000430314471751340014126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Lo-Fi Room # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='lo-fi-room' GAME_NAME='Lo-Fi Room' ARCHIVE_BASE_0_NAME='lofiroom.tar.xz' ARCHIVE_BASE_0_MD5='c9f0f9d43e7ca81ec372784692a60432' ## Despite the .tar.xz file extension, ## this is actually a gz-compressed tarball. ARCHIVE_BASE_0_TYPE='tar.gz' ARCHIVE_BASE_0_SIZE='138022' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://bearmask.itch.io/lofi-room' UNITY3D_NAME='lofi_room_linux' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='linux' 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-lovers-in-a-dangerous-spacetime.sh0000755000000000000000000000610414471751340020252 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2025 Bernd Schumacher set -o errexit ### # Lovers in a Dangerous Spacetime # send your bug reports to bugs@dotslashplay.it ### script_version=20250916.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='lovers-in-a-dangerous-spacetime' GAME_NAME='Lovers in a Dangerous Spacetime' ARCHIVE_BASE_GOG_0_NAME='lovers_in_a_dangerous_spacetime_en_1_4_5_20412.sh' ARCHIVE_BASE_GOG_0_MD5='1f1467ec873d77c2c6577197c5371da3' ARCHIVE_BASE_GOG_0_SIZE='880000' ARCHIVE_BASE_GOG_0_VERSION='1.4.5-gog20412' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/de/game/lovers_in_a_dangerous_spacetime' ARCHIVE_BASE_HUMBLE_1_NAME='LoversInADangerousSpacetime-1.4.5_Linux.zip' ARCHIVE_BASE_HUMBLE_1_MD5='67b6bc5ba5590fb50e95996b267f8c60' ARCHIVE_BASE_HUMBLE_1_SIZE='874409' ARCHIVE_BASE_HUMBLE_1_VERSION='1.4.5-humble180427' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/lovers-in-a-dangerous-spacetime' ARCHIVE_BASE_HUMBLE_0_NAME='LoversInADangerousSpacetime-1.4.4_Linux.zip' ARCHIVE_BASE_HUMBLE_0_MD5='38927a73e1fe84620ebc876f8f039adb' ARCHIVE_BASE_HUMBLE_0_SIZE='880000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.4.4-humble160908' UNITY3D_NAME='LoversInADangerousSpacetime' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_GOG='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-melodys-escape.sh0000700000000000000000000001206514471751340015064 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Melody's Escape # send your bug reports to bugs@dotslashplay.it ### script_version=20250319.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='melodys-escape' GAME_NAME='Melodyʼs Escape' ARCHIVE_BASE_0_NAME='Melodys_Escape_Linux.zip' ARCHIVE_BASE_0_MD5='4d463482418c2d9917c56df3bbde6eea' ARCHIVE_BASE_0_SIZE='60000' ARCHIVE_BASE_0_VERSION='1.0-humble160601' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/melodys-escape' ARCHIVE_OPTIONAL_ICONS_NAME='melodys-escape_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='656fce13728d399e557fd72c3a6bc244' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/melodys-escape/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' CONTENT_PATH_DEFAULT="Melody's Escape" CONTENT_LIBS_LIBS64_PATH='lib64' CONTENT_LIBS_LIBS64_FILES=' libbass.so libbassmix.so libmojoshader.so' CONTENT_LIBS0_LIBS64_PATH='BassPlugins' CONTENT_LIBS0_LIBS64_FILES=' libbassflac.so' CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES=' libbass.so libbassmix.so libmojoshader.so' CONTENT_LIBS0_LIBS32_RELATIVE_PATH='BassPlugins' CONTENT_LIBS0_LIBS32_FILES=' libbassflac.so' CONTENT_GAME_MAIN_FILES=' BundledMusic Calibration Content Mods mono MelodysEscape.exe Bass.Net.Linux.dll FNA.dll FNA.dll.config MelodyEngine.dll MelodyReactor.dll tar-cs.dll' CONTENT_DOC_MAIN_FILES=' Licenses README.txt' APP_MAIN_EXE='MelodysEscape.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' 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.Runtime.Serialization.dll System.Security.dll System.Xml.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ARCH='32' PKG_LIBS64_ARCH='64' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 librt.so.1' PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Patch shipped libraries, to ensure they work with system-provided Mono REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} xdelta3" # 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 presence of required library patches ARCHIVE_REQUIRED_LIB_PATCHES_NAME='melodys-escape_lib-patches.tar.gz' ARCHIVE_REQUIRED_LIB_PATCHES_MD5='6aee21776f44df0d927babcddfa3c386' ARCHIVE_REQUIRED_LIB_PATCHES_URL='https://downloads.dotslashplay.it/games/melodys-escape/' archive_initialize_required \ 'ARCHIVE_LIB_PATCHES' \ 'ARCHIVE_REQUIRED_LIB_PATCHES' # Check for presence of optional 64-bit libraries ARCHIVE_OPTIONAL_LIB64_NAME='melodys-escape_lib64.tar.gz' ARCHIVE_OPTIONAL_LIB64_MD5='a77c6b3acd5910bd874a1ca4b7d0c53c' ARCHIVE_OPTIONAL_LIB64_URL='https://downloads.dotslashplay.it/games/melodys-escape/' archive_initialize_optional \ 'ARCHIVE_LIB64' \ 'ARCHIVE_OPTIONAL_LIB64' if ! archive_is_available 'ARCHIVE_LIB64'; then # Exclude 64-bit libraries from the packages to generate # if the archive has not been provided. PACKAGES_LIST=' PKG_MAIN PKG_LIBS32' fi # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_LIB_PATCHES' if archive_is_available 'ARCHIVE_LIB64'; then archive_extraction 'ARCHIVE_LIB64' fi ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Patch shipped libraries, to ensure they work with system-provided Mono for file in 'MelodyReactor.dll' 'MelodysEscape.exe'; do patch="${PLAYIT_WORKDIR}/gamedata/${file}.delta" xdelta3 decode -f -s "$file" "$patch" "$file" rm "$patch" done ) # Include game data content_inclusion_icons content_inclusion_default ## The engine expects to find libbassflac.so in a hardcoded path. file_name='libbassflac.so' file_source="$(path_libraries)/${file_name}" for file_destination in \ "$(package_path 'PKG_LIBS32')$(path_game_data)/BassPlugins/${file_name}" \ "$(package_path 'PKG_LIBS64')$(path_game_data)/BassPlugins/${file_name}" do mkdir --parents "$(dirname "$file_destination")" ln --symbolic "$file_source" "$file_destination" done # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-mortal-kombat-series.sh0000700000000000000000000000721714471751340016216 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Mortal Kombat series: # - Mortal Kombat # - Mortal Kombat 2 # - Mortal Kombat 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20240618.3 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_MK1='mortal-kombat-1' GAME_NAME_MK1='Mortal Kombat' GAME_ID_MK2='mortal-kombat-2' GAME_NAME_MK2='Mortal Kombat II' GAME_ID_MK3='mortal-kombat-3' GAME_NAME_MK3='Mortal Kombat III' ARCHIVE_BASE_MK1_0_NAME='setup_mortal_kombat_2.0.0.2.exe' ARCHIVE_BASE_MK1_0_MD5='c4b310a87a7fc021c424e550e979e018' ARCHIVE_BASE_MK1_0_TYPE='innosetup' ARCHIVE_BASE_MK1_0_SIZE='37000' ARCHIVE_BASE_MK1_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_MK1_0_URL='https://www.gog.com/game/mortal_kombat_123' ARCHIVE_BASE_MK2_0_NAME='setup_mortal_kombat2_2.0.0.2.exe' ARCHIVE_BASE_MK2_0_MD5='fd66922a3c5551077020ba6df2b2446f' ARCHIVE_BASE_MK2_0_TYPE='innosetup' ARCHIVE_BASE_MK2_0_SIZE='38000' ARCHIVE_BASE_MK2_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_MK2_0_URL='https://www.gog.com/game/mortal_kombat_123' ARCHIVE_BASE_MK3_0_NAME='setup_mortal_kombat3_2.0.0.2.exe' ARCHIVE_BASE_MK3_0_MD5='e9703877b5bd2dfde5b2d65b8586aa6d' ARCHIVE_BASE_MK3_0_TYPE='innosetup' ARCHIVE_BASE_MK3_0_SIZE='87000' ARCHIVE_BASE_MK3_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_MK3_0_URL='https://www.gog.com/game/mortal_kombat_123' CONTENT_PATH_DEFAULT_MK1='app/mk1' CONTENT_PATH_DEFAULT_MK2='app/mk2' CONTENT_PATH_DEFAULT_MK3='app/mk3' CONTENT_GAME_MAIN_FILES_MK1=' graphics sfx *.bat *.dig *.dat *.drv *.exe *.gra *.ini *.lst *.mk1 *.pif' CONTENT_GAME_MAIN_FILES_MK2=' fx sound cmos *.bat *.bin *.drv *.exe *.gra *.ini' CONTENT_GAME_MAIN_FILES_MK3=' drivers image *.asg *.bat *.dat *.exe *.ftr *.ini *.mk3' CONTENT_DOC_MAIN_FILES_MK2=' readme.txt' USER_PERSISTENT_FILES_MK1=' cmos.mk1 *.ini' USER_PERSISTENT_FILES_MK2=' cmos *.ini' USER_PERSISTENT_FILES_MK3=' *.dat *.ini' GAME_IMAGE_MK3='image/mk3.cue' APP_MAIN_EXE_MK1='mk1.exe' APP_MAIN_EXE_MK2='mk2.exe' APP_MAIN_EXE_MK3='mk3.exe' APP_MAIN_ICON_MK1='../goggame-1207667043.ico' APP_MAIN_ICON_MK2='../goggame-1207667053.ico' APP_MAIN_ICON_MK3='../goggame-1207667063.ico' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Mortal Kombat 3 - Ensure case consistency between the disk image table of contents and the actual filenames. case "$(current_archive)" in ('ARCHIVE_BASE_MK3_'*) sed_pattern='MK3\.GOG' sed_replacement='mk3.gog' sed_expression="s/${sed_pattern}/${sed_replacement}/" sed_pattern='Track' sed_replacement='track' sed_expression="${sed_expression};s/${sed_pattern}/${sed_replacement}/g" sed --in-place --expression="$sed_expression" "$GAME_IMAGE_MK3" ;; esac ) # Include game data content_inclusion_icons content_inclusion_default # Write launchers ## Work around ./play.it 2.29 lack of context support for $GAME_IMAGE. GAME_IMAGE=$(context_value 'GAME_IMAGE') launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-neon-drive.sh0000755000000000000000000000514514471751340014233 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Neon Drive # send your bug reports to bugs@dotslashplay.it ### script_version=20241127.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='neon-drive' GAME_NAME='neon Drive' ARCHIVE_BASE_1_NAME='NeonDrive_V1.5_Linux.zip' ARCHIVE_BASE_1_MD5='1fcbd5dc69cc08899b792b9f4c0d7075' ARCHIVE_BASE_1_SIZE='495259' ARCHIVE_BASE_1_VERSION='1.5-humble170831' ARCHIVE_BASE_1_URL='https://www.humblebundle.com/store/neon-drive' ARCHIVE_BASE_0_NAME='NeonDrive_V1.4__Linux.rar' ARCHIVE_BASE_0_MD5='86627f5639234614b036666de4223a15' ARCHIVE_BASE_0_SIZE='490000' ARCHIVE_BASE_0_VERSION='1.4-humble1' UNITY3D_NAME='Neon Drive' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam libraries are required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='.' 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-octodad-dadliest-catch.sh0000755000000000000000000000602714471751340016451 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Octodad: Dadliest Catch # send your bug reports to bugs@dotslashplay.it ### script_version=20250822.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='octodad-dadliest-catch' GAME_NAME='Octodad: Dadliest Catch' ARCHIVE_BASE_ITCH_0_NAME='octodad-dadliest-catch-linux.zip' ARCHIVE_BASE_ITCH_0_MD5='18dd342284a8162ef668e756096038d4' ARCHIVE_BASE_ITCH_0_SIZE='2971654' ARCHIVE_BASE_ITCH_0_VERSION='1.2.19351-itch.2020.06.17' ARCHIVE_BASE_ITCH_0_URL='https://younghorses.itch.io/octodad-dadliest-catch' ARCHIVE_BASE_HUMBLE_0_NAME='OctodadDadliestCatch1.2.19351.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='df1ded6c02d856a23c2dba919c3be40a' ARCHIVE_BASE_HUMBLE_0_SIZE='3000000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.19351-humble170512' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/octodad-dadliest-catch' CONTENT_PATH_DEFAULT_ITCH='.' CONTENT_PATH_DEFAULT_HUMBLE='Octodad Dadliest Catch' CONTENT_LIBS_BIN_FILES=' libfmodevent-4.44.30.so libfmodex-4.44.30.so' CONTENT_GAME_BIN_FILES=' OctodadDadliestCatch' CONTENT_GAME_DATA_FILES=' Content icon_512x512.png' USER_PERSISTENT_FILES=' *.odad *.txt *.xml' APP_MAIN_EXE='OctodadDadliestCatch' APP_MAIN_ICON='icon_512x512.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 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Force the use of system-provided SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libSDL2-2.0.so.0" ## Prevent a game crash when using the wayland backend of SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Prevent a game crash when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-osmos.sh0000755000000000000000000000507314471751340013325 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Osmos # send your bug reports to bugs@dotslashplay.it ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='osmos' GAME_NAME='Osmos' ARCHIVE_BASE_0_NAME='Osmos_1.6.1.tar.gz' ARCHIVE_BASE_0_MD5='ed2cb029c20c25de719c28062e6fc9cf' ARCHIVE_BASE_0_SIZE='32000' ARCHIVE_BASE_0_VERSION='1.6.1-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/osmos' CONTENT_PATH_DEFAULT='Osmos' CONTENT_GAME_BIN64_FILES=' Osmos.bin64' CONTENT_GAME_BIN32_FILES=' Osmos.bin32' CONTENT_GAME_DATA_FILES=' Fonts Icons Sounds Textures *.cfg *.loc' CONTENT_DOC_DATA_FILES=' *.html *.txt' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE_BIN64='Osmos.bin64' APP_MAIN_EXE_BIN32='Osmos.bin32' for icon_size in 16 22 32 36 48 64 72 96 128 192 256; do APP_MAIN_ICONS_LIST="${APP_MAIN_ICONS_LIST:-} APP_MAIN_ICON_${icon_size}" export "APP_MAIN_ICON_${icon_size}"="Icons/${icon_size}x${icon_size}.png" done 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 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libstdc++.so.6 libvorbisfile.so.3 libX11.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" # 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-overgrowth.sh0000755000000000000000000000543614471751340014376 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Overgrowth # send your bug reports to bugs@dotslashplay.it ### script_version=20250707.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='overgrowth' GAME_NAME='Overgrowth' ARCHIVE_BASE_0_NAME='overgrowth-1.4.0_build-5584-linux64.zip' ARCHIVE_BASE_0_MD5='748f6888386d842193218c53396ac844' ARCHIVE_BASE_0_SIZE='22000000' ARCHIVE_BASE_0_VERSION='1.4.0.5584-humble' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/overgrowth' CONTENT_PATH_DEFAULT='Overgrowth' CONTENT_LIBS_BIN_RELATIVE_PATH='lib64' ## The game binary is linked against libsteam_api.so. CONTENT_LIBS_BIN_FILES=' libsteam_api.so' CONTENT_GAME_BIN_FILES=' Overgrowth.bin.x86_64' CONTENT_GAME_TEXTURES_TERRAIN_FILES=' Data/Textures/Terrain' CONTENT_GAME_TEXTURES_FILES=' Data/Textures' CONTENT_GAME_DATA_FILES=' Data' USER_PERSISTENT_DIRECTORIES=' Data/Levels Data/Mods Data/Scripts' APP_MAIN_EXE='Overgrowth.bin.x86_64' APP_MAIN_ICON='Data/Textures/ui/ogicon.png' PACKAGES_LIST=' PKG_BIN PKG_TEXTURES_TERRAIN PKG_TEXTURES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreeimage.so.3 libgcc_s.so.1 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 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libSDL2_net-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_TEXTURES' PKG_TEXTURES_ID="${GAME_ID}-textures" PKG_TEXTURES_DESCRIPTION='textures' PKG_TEXTURES_DEPENDENCIES_SIBLINGS=' PKG_TEXTURES_TERRAIN' PKG_TEXTURES_TERRAIN_ID="${PKG_TEXTURES_ID}-terrain" PKG_TEXTURES_TERRAIN_DESCRIPTION="$PKG_TEXTURES_DESCRIPTION - terrain" # 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-overload.sh0000755000000000000000000000431614471751340013777 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Overload # send your bug reports to bugs@dotslashplay.it ### script_version=20251007.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='overload' GAME_NAME='Overload' ARCHIVE_BASE_0_NAME='overload_1_1_1886_38734.sh' ARCHIVE_BASE_0_MD5='63a7aa141098ec0b15ce1e01eec21f6b' ARCHIVE_BASE_0_SIZE='7300000' ARCHIVE_BASE_0_VERSION='1.1-gog38734' ARCHIVE_BASE_0_URL='https://www.gog.com/game/overload' UNITY3D_NAME='Overload' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game fails to start if libCSteamworks.so is not found ## and libsteam_api.so is a requirement of libCSteamworks.so. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' Licenses.txt ReadMe.txt' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_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 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pacapong.sh0000755000000000000000000000400214471751340013744 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Pacapong # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='pacapong' GAME_NAME='Pacapong' ARCHIVE_BASE_0_NAME='pacapong_linux.zip' ARCHIVE_BASE_0_MD5='658c091abea7305cd0a33d367c251cc3' ARCHIVE_BASE_0_SIZE='8800' ARCHIVE_BASE_0_VERSION='1.0-itch1' ARCHIVE_BASE_0_URL='https://kingpenguin.itch.io/pacapong' CONTENT_PATH_DEFAULT='pacapong' CONTENT_GAME_BIN_FILES=' runner' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='runner' APP_MAIN_ICON='assets/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 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-painkiller.sh0000700000000000000000000000574114471751340014307 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Painkiller # send your bug reports to bugs@dotslashplay.it ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='painkiller' GAME_NAME='Painkiller' ARCHIVE_BASE_EN_0_NAME='setup_painkiller_black_1.64_lang_update_(24538).exe' ARCHIVE_BASE_EN_0_MD5='328381c6d874b5c6822cdcf596b6c00e' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_painkiller_black_1.64_lang_update_(24538)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='26cf8f833c5b75efb006eac0e731a0af' ARCHIVE_BASE_EN_0_SIZE='3934610' ARCHIVE_BASE_EN_0_VERSION='1.6.4-gog24538' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/painkiller' ARCHIVE_BASE_FR_0_NAME='setup_painkiller_black_1.64_lang_update_(french)_(24538).exe' ARCHIVE_BASE_FR_0_MD5='9a4301af374c500ac7d00b5e7ad70b65' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_painkiller_black_1.64_lang_update_(french)_(24538)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='09e9614cadf2973ead1f826c24ebf2fe' ARCHIVE_BASE_FR_0_SIZE='3612122' ARCHIVE_BASE_FR_0_VERSION='1.6.0-gog24538' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/painkiller' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin/miles bin/*.dll bin/*.exe bin/*.ini' CONTENT_GAME_MOVIES_FILES=' data/movies' CONTENT_GAME_DATA_FILES=' data/models data/music data/*.pak data/*.pkm' CONTENT_DOC_DATA_RELATIVE_PATH='docs' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' savegames' USER_PERSISTENT_FILES=' bin/config.ini' APP_MAIN_EXE='bin/painkiller.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=128' PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_MOVIES PKG_DATA' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_ID_EN="${PKG_MOVIES_ID}-en" PKG_MOVIES_ID_FR="${PKG_MOVIES_ID}-fr" PKG_MOVIES_PROVIDES=" $PKG_MOVIES_ID" PKG_MOVIES_DESCRIPTION_EN='English movies' PKG_MOVIES_DESCRIPTION_FR='French movies' 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-particulars.sh0000755000000000000000000000463614471751340014522 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Particulars # send your bug reports to bugs@dotslashplay.it ### script_version=20241126.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='particulars' GAME_NAME='Particulars' ## This game is no longer available for sale from Humble Bundle. ARCHIVE_BASE_0_NAME='particulars_lin_latest1416421559.zip' ARCHIVE_BASE_0_MD5='b7b269b8e33d682a2fca5c548928dabf' ARCHIVE_BASE_0_SIZE='1308919' ARCHIVE_BASE_0_VERSION='1.0.0.2-humble141119' UNITY3D_NAME='p_1-0-0-2' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='particulars_1.0.0.2_lin' ## TODO: Check if the Steam libraries are required CONTENT_LIBS_BIN_FILES=' libsteam_api.so libSteamworksNative.so' CONTENT_DOC_DATA_FILES=' readme.txt release_notes.txt licenses' 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' 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-peck-n-run.sh0000700000000000000000000000350314471751340014126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Peck N Run # send your bug reports to bugs@dotslashplay.it ### script_version=20250705.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='peck-n-run' GAME_NAME='Peck N Run' ARCHIVE_BASE_0_NAME='peck-n-run-windows-release.zip' ARCHIVE_BASE_0_MD5='2b355dea05894f71c248cf0a4583cfb0' ARCHIVE_BASE_0_SIZE='410000' ARCHIVE_BASE_0_VERSION='1.10-itch' ARCHIVE_BASE_0_URL='https://spiltmilkstudios.itch.io/peck-n-run' UNITY3D_NAME='PeckNRun' CONTENT_PATH_DEFAULT='.' WINE_DIRECT3D_RENDERER='dxvk' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Spilt Milk Studios\BirdGamePrototype' 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-privateer-1.sh0000700000000000000000000000510614471751340014307 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Wing Commander: Privateer # send your bug reports to bugs@dotslashplay.it ### script_version=20250828.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='privateer-1' GAME_NAME='Privateer' ARCHIVE_BASE_1_NAME='setup_wing_commander_privateer_1.0_(28045).exe' ARCHIVE_BASE_1_MD5='482b990445b335ecf7f47ee18efccc14' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='180000' ARCHIVE_BASE_1_VERSION='1.0-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/wing_commander_privateer' ARCHIVE_BASE_0_NAME='setup_wing_commander_privateer_2.0.0.9.exe' ARCHIVE_BASE_0_MD5='53c77040cba69a642ec1302b5cf231b5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='190000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.9' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' GAME.GOG *.CFG *.DAT *.EXE *.NDA *.OVL *.PAK *.VDA' CONTENT_DOC_MAIN_FILES=' *.PDF' DOSBOX_DISK_IMAGE_PATH='GAME.GOG' USER_PERSISTENT_FILES=' *.CFG *.IFF' APP_MAIN_EXE='PRIV.EXE' APP_MAIN_ICON='APP/GOGGAME-1207658938.ICO' APP_MAIN_ICON_0='GFW_HIGH.ICO' ## Work around sound problems in the intro video. APP_MAIN_PRERUN=' # Work around sound problems in the intro video export DOSBOX_SBLASTER_IRQ=5 ' APP_RF_ID="${GAME_ID}-righteous-fire" APP_RF_NAME="${GAME_NAME} - Righteous Fire" APP_RF_EXE='PRIV.EXE' APP_RF_EXE_OPTIONS='r' APP_RF_ICON='APP/GOGGAME-1207658938.ICO' APP_RF_ICON_0='GFW_HIGH.ICO' ## convmv is used to convert file paths to upper case. REQUIREMENTS_LIST=' convmv' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ## Convert all file paths to upper case. toupper "${PLAYIT_WORKDIR}/gamedata/$(content_path 'DOC_MAIN')" # 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-race-the-sun-expansions.sh0000700000000000000000000000323014471751340016624 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Race The Sun expansions: # - Sunrise # send your bug reports to bugs@dotslashplay.it ### script_version=20241109.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='race-the-sun' GAME_NAME='Race The Sun' EXPANSION_ID_SUNRISE='sunrise' EXPANSION_NAME_SUNRISE='Sunrise' ARCHIVE_BASE_SUNRISE_0_NAME='gog_race_the_sun_sunrise_dlc_2.0.0.1.sh' ARCHIVE_BASE_SUNRISE_0_MD5='5af9dee7941f63c310d83ac771d26884' ARCHIVE_BASE_SUNRISE_0_SIZE='1100' ARCHIVE_BASE_SUNRISE_0_VERSION='1.0-gog2.0.0.1' ARCHIVE_BASE_SUNRISE_0_URL='https://www.gog.com/game/sunrise' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' SunriseDLC' 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-race-the-sun.sh0000755000000000000000000000534014471751340014455 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 mortalius # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Race the Sun # send your bug reports to bugs@dotslashplay.it ### script_version=20250706.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='race-the-sun' GAME_NAME='Race The Sun' ARCHIVE_BASE_GOG_0_NAME='gog_race_the_sun_2.4.0.8.sh' ARCHIVE_BASE_GOG_0_MD5='e3f4e66a5fafe966000ab4e0dcfb7aeb' ARCHIVE_BASE_GOG_0_SIZE='200000' ARCHIVE_BASE_GOG_0_VERSION='1.51-gog2.4.0.8' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/race_the_sun' ARCHIVE_BASE_HUMBLE_0_NAME='RaceTheSunLINUX_1.50.zip' ARCHIVE_BASE_HUMBLE_0_MD5='e225afb660090b9aa8281574b658accf' ARCHIVE_BASE_HUMBLE_0_SIZE='190000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.50-humble170131' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/race-the-sun' UNITY3D_NAME='RaceTheSun' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='RaceTheSunLINUX_1.50' 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-risk-of-rain.sh0000755000000000000000000000511014471751340014456 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Risk of Rain # send your bug reports to bugs@dotslashplay.it ### script_version=20250704.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='risk-of-rain' GAME_NAME='Risk of Rain' ARCHIVE_BASE_GOG_1_NAME='gog_risk_of_rain_2.1.0.6.sh' ARCHIVE_BASE_GOG_1_MD5='423ea26f877eb8f0d72e04dffffbf81a' ARCHIVE_BASE_GOG_1_SIZE='180000' ARCHIVE_BASE_GOG_1_VERSION='1.2.8-gog2.1.0.6' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/risk_of_rain' ARCHIVE_BASE_GOG_0_NAME='gog_risk_of_rain_2.1.0.5.sh' ARCHIVE_BASE_GOG_0_MD5='34f8e1e2dddc6726a18c50b27c717468' ARCHIVE_BASE_GOG_0_SIZE='180000' ARCHIVE_BASE_GOG_0_VERSION='1.2.8-gog2.1.0.5' ARCHIVE_BASE_HUMBLE_0_NAME='Risk_of_Rain_v1.3.0_DRM-Free_Linux_.zip' ARCHIVE_BASE_HUMBLE_0_MD5='21eb80a7b517d302478c4f86dd5ea9a2' ARCHIVE_BASE_HUMBLE_0_SIZE='100000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.3.0-humble160519' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/risk-of-rain' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_GAME_BIN_FILES=' Risk_of_Rain' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='Risk_of_Rain' APP_MAIN_ICON='assets/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 libcurl.so.4+CURL_OPENSSL_3 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sales-gosses.sh0000700000000000000000000000623614471751340014565 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sales Gosses # send your bug reports to bugs@dotslashplay.it ### script_version=20250610.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='sales-gosses' GAME_NAME='Sales Gosses !' ARCHIVE_BASE_4_NAME='little-brats-4.2-gnunux.tar.gz' ARCHIVE_BASE_4_MD5='c818f5582d1c0f46c08c58f9343a0b52' ARCHIVE_BASE_4_SIZE='245380' ARCHIVE_BASE_4_VERSION='4.2-itch.2025.04.15' ARCHIVE_BASE_4_URL='https://ptilouk.itch.io/little-brats' ARCHIVE_BASE_3_NAME='little-brats-4.1-gnunux.tar.gz' ARCHIVE_BASE_3_MD5='0a89edc5a989b828b29697f70f89fbff' ARCHIVE_BASE_3_SIZE='245352' ARCHIVE_BASE_3_VERSION='4.1-itch.2025.03.21' ARCHIVE_BASE_2_NAME='little-brats-3.2-gnunux.tar.gz' ARCHIVE_BASE_2_MD5='a9f9925168fcfb82a260d0d6b3ea6221' ARCHIVE_BASE_2_SIZE='225679' ARCHIVE_BASE_2_VERSION='3.2-itch.2025.02.04' ARCHIVE_BASE_1_NAME='little-brats-3.1-gnunux.tar.gz' ARCHIVE_BASE_1_MD5='0d89b9d55c2873ce0407070d181e03fa' ARCHIVE_BASE_1_SIZE='225679' ARCHIVE_BASE_1_VERSION='3.1-itch.2024.12.28' ARCHIVE_BASE_0_NAME='little-brats-2.2-gnunux.tar.gz' ARCHIVE_BASE_0_MD5='d8518a619ccb1391311204557ac9441c' ARCHIVE_BASE_0_SIZE='211184' ARCHIVE_BASE_0_VERSION='2.2-itch.2024.11.12' CONTENT_PATH_DEFAULT_4='little-brats-4.2-gnunux' CONTENT_PATH_DEFAULT_3='little-brats-4.1-gnunux' CONTENT_PATH_DEFAULT_2='little-brats-3.2-gnunux' CONTENT_PATH_DEFAULT_1='little-brats-3.1-gnunux' CONTENT_PATH_DEFAULT_0='little-brats-2.2-gnunux' CONTENT_GAME_BIN_RELATIVE_PATH='lib/little-brats' CONTENT_GAME_BIN_FILES=' little-brats.x86_64' CONTENT_GAME_DATA_RELATIVE_PATH='share/little-brats' CONTENT_GAME_DATA_FILES=' little-brats.pck little-brats-*-resource-pack.pck' APP_MAIN_EXE='little-brats.x86_64' APP_MAIN_OPTIONS='--main-pack "${PWD}/little-brats.pck" --pack-path "${PWD}"' 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 libm.so.6 libpthread.so.0 librt.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 install -D --mode=644 --no-target-directory \ "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/share/icons/little-brats.svg" \ "$(package_path 'PKG_DATA')$(path_icons)/scalable/apps/$(game_id).svg" content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sentris.sh0000755000000000000000000000447314471751340013657 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Sentris # send your bug reports to bugs@dotslashplay.it ### script_version=20241127.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='sentris' GAME_NAME='Sentris' ARCHIVE_BASE_0_NAME='Sentris_1.02_Linux.zip' ARCHIVE_BASE_0_MD5='b6ca5f3447a223efba73ae9138b16a45' ARCHIVE_BASE_0_SIZE='407940' ARCHIVE_BASE_0_VERSION='1.02-humble170110' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/sentris' UNITY3D_NAME='Sentris' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='Sentris_1.02_Linux' 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-shogo-mobile-armor-division.sh0000700000000000000000000000613214471751340017474 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Shogo: Mobile Armor Division # send your bug reports to bugs@dotslashplay.it ### script_version=20250603.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='shogo-mobile-armor-division' GAME_NAME='Shogo: Mobile Armor Division' ARCHIVE_BASE_EN_0_NAME='setup_shogo_-_mobile_armor_division_2.2.14_(19498).exe' ARCHIVE_BASE_EN_0_MD5='371cd8bbd32355f78ee7f52e4d34e94a' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_VERSION='2.2.14-gog19498' ARCHIVE_BASE_EN_0_SIZE='481454' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/shogo_mobile_armor_division' ARCHIVE_BASE_FR_0_NAME='setup_shogo_-_mobile_armor_division_2.2.14_(french)_(19498).exe' ARCHIVE_BASE_FR_0_MD5='ca3029d8c6efe0d273a174b73d95e920' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_VERSION='2.2.14-gog19498' ARCHIVE_BASE_FR_0_SIZE='487166' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/shogo_mobile_armor_division' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' am18.dll cdaudio.dll de_msg.dll ima.dll imrt1625.dll imrt25.dll imrt3225.dll imusic25.dll launch.dll mss16.dll mss32.dll msynth25.dll server.dll smackw32.dll softsnd.dll client.exe ct.exe shogo.exe shogosrv.exe start.exe ct.ini *.m3d *.pcx *.ren *.tsk' CONTENT_GAME0_BIN_PATH='__support/app' CONTENT_GAME0_BIN_FILES=' *.cfg' CONTENT_GAME_DATA_FILES=' custom joystick music save *.msk *.rez' CONTENT_DOC_DATA_FILES=' *.cnt *.hlp *.gid *.pdf readme.txt shogosrv.txt' USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE='shogo.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_ID="$GAME_ID" PKG_BIN_ID_EN="${PKG_BIN_ID}-en" PKG_BIN_ID_FR="${PKG_BIN_ID}-fr" PKG_BIN_PROVIDES=" $GAME_ID" PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DESCRIPTION_EN='English version' PKG_BIN_DESCRIPTION_FR='French version' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_ID}-fr" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' PKG_DATA_DESCRIPTION_EN="$PKG_DATA_DESCRIPTION - English version" PKG_DATA_DESCRIPTION_FR="$PKG_DATA_DESCRIPTION - French version" # 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-snk-neo-geo-collection.sh0000755000000000000000000002066114471751340016440 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2020 HS-157 set -o errexit ### # SNK Neo Geo games: # - King of the Monsters # - Baseball Stars 2 # - Fatal Fury Special # - Art of Fighting 2 # - Samurai Shodown 2 # - Metal Slug 2 # - Metal Slug 3 # - The King of Fighters 2000 # - Sengoku 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20250708.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_KINGOFTHEMONSTERS='king-of-the-monsters' GAME_NAME_KINGOFTHEMONSTERS='King of the Monsters' GAME_ID_BASEBALLSTARS2='baseball-stars-2' GAME_NAME_BASEBALLSTARS2='Baseball Stars 2' GAME_ID_FATALFURYSPECIAL='fatal-fury-special' GAME_NAME_FATALFURYSPECIAL='Fatal Fury Special' GAME_ID_ARTOFFIGHTING2='art-of-fighting-2' GAME_NAME_ARTOFFIGHTING2='Art of Fighting 2' GAME_ID_SAMURAISHODOWN2='samurai-shodown-2' GAME_NAME_SAMURAISHODOWN2='Samurai Shodown II' GAME_ID_METALSLUG2='metal-slug-2' GAME_NAME_METALSLUG2='Metal Slug 2' GAME_ID_METALSLUG3='metal-slug-3' GAME_NAME_METALSLUG3='Metal Slug 3' GAME_ID_THEKINGOFFIGHTERS2000='the-king-of-fighter-2000' GAME_NAME_THEKINGOFFIGHTERS2000='The King of Fighters 2000' GAME_ID_SENGOKU3='sengoku-3' GAME_NAME_SENGOKU3='Sengoku 3' ARCHIVE_BASE_KINGOFTHEMONSTERS_0_NAME='KingOfTheMonsters_jan2016.sh' ARCHIVE_BASE_KINGOFTHEMONSTERS_0_MD5='7a82ccaada86bd1c4637f0e088afbfa3' ARCHIVE_BASE_KINGOFTHEMONSTERS_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_KINGOFTHEMONSTERS_0_SIZE='36000' ARCHIVE_BASE_KINGOFTHEMONSTERS_0_URL='https://www.humblebundle.com/store/neogeo-classics-pack-4' ARCHIVE_BASE_BASEBALLSTARS2_0_NAME='BaseballStars2_jan2016.sh' ARCHIVE_BASE_BASEBALLSTARS2_0_MD5='efe7f4d90cc2e5db0efd00e7b32d8114' ARCHIVE_BASE_BASEBALLSTARS2_0_SIZE='36000' ARCHIVE_BASE_BASEBALLSTARS2_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_BASEBALLSTARS2_0_URL='https://www.humblebundle.com/store/neogeo-classics-pack-1' ARCHIVE_BASE_FATALFURYSPECIAL_0_NAME='FatalFurySpecial_jan2016.sh' ARCHIVE_BASE_FATALFURYSPECIAL_0_MD5='b13a53d2944281ef2d139719ac727ef3' ARCHIVE_BASE_FATALFURYSPECIAL_0_SIZE='43000' ARCHIVE_BASE_FATALFURYSPECIAL_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_FATALFURYSPECIAL_0_URL='https://www.humblebundle.com/store/fatal-fury-special' ARCHIVE_BASE_ARTOFFIGHTING2_0_NAME='ArtOfFighting2_jan2016.sh' ARCHIVE_BASE_ARTOFFIGHTING2_0_MD5='f50a3d75ecea5a1fbbfde30cd876d674' ARCHIVE_BASE_ARTOFFIGHTING2_0_SIZE='44000' ARCHIVE_BASE_ARTOFFIGHTING2_0_VERSION='1.0-humble.2016.01' ARCHIVE_BASE_ARTOFFIGHTING2_0_URL='https://www.humblebundle.com/store/neogeo-classics-pack-1' ARCHIVE_BASE_SAMURAISHODOWN2_0_NAME='SamuraiShodown2_jan2016.sh' ARCHIVE_BASE_SAMURAISHODOWN2_0_MD5='11a6642f250c9ec322bc8d1a9f0f9b49' ARCHIVE_BASE_SAMURAISHODOWN2_0_SIZE='48000' ARCHIVE_BASE_SAMURAISHODOWN2_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_SAMURAISHODOWN2_0_URL='https://www.humblebundle.com/store/neogeo-classics-pack-4' ARCHIVE_BASE_METALSLUG2_0_NAME='MetalSlug2_jan2016.sh' ARCHIVE_BASE_METALSLUG2_0_MD5='c6ee0e16787b4ec5d497f96f9474ce80' ARCHIVE_BASE_METALSLUG2_0_SIZE='49000' ARCHIVE_BASE_METALSLUG2_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_METALSLUG2_0_URL='https://www.humblebundle.com/store/metal-slug-2' ARCHIVE_BASE_METALSLUG3_0_NAME='MetalSlug3_jan2016.sh' ARCHIVE_BASE_METALSLUG3_0_MD5='a6854b31e7757f447c9c05281b28f57a' ARCHIVE_BASE_METALSLUG3_0_SIZE='110000' ARCHIVE_BASE_METALSLUG3_0_VERSION='1.0-humble1601' ARCHIVE_BASE_METALSLUG3_0_URL='https://www.humblebundle.com/store/neogeo-classics-pack-3' ARCHIVE_BASE_THEKINGOFFIGHTERS2000_0_NAME='KingOfFighters2000_jan2016.sh' ARCHIVE_BASE_THEKINGOFFIGHTERS2000_0_MD5='98f3d87cd286c868f184fefe1c4222b9' ARCHIVE_BASE_THEKINGOFFIGHTERS2000_0_SIZE='120000' ARCHIVE_BASE_THEKINGOFFIGHTERS2000_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_THEKINGOFFIGHTERS2000_0_URL='https://www.humblebundle.com/store/the-king-of-fighters-2000' ARCHIVE_BASE_SENGOKU3_0_NAME='Sengoku3_jan2016.sh' ARCHIVE_BASE_SENGOKU3_0_MD5='5ecd65661e4b35c1badebcb146c8a261' ARCHIVE_BASE_SENGOKU3_0_SIZE='76000' ARCHIVE_BASE_SENGOKU3_0_VERSION='1.0-humblejan2016' ARCHIVE_BASE_SENGOKU3_0_URL='https://www.humblebundle.com/store/sengoku-3' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_FILES=' libRocketControls.so.1 libRocketCore.so.1 libRocketDebugger.so.1' ## Using system-provided SDL2 instead of the shipped one, ## the game menu fails to render. CONTENT_LIBS_BIN_FILES="$CONTENT_LIBS_BIN_FILES libSDL2-2.0.so.0" CONTENT_LIBS_BIN64_RELATIVE_PATH='x86_64/lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='x86/lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_RELATIVE_PATH='x86_64' CONTENT_GAME_BIN64_FILES=' NeogeoEmu.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH='x86' CONTENT_GAME_BIN32_FILES=' NeogeoEmu.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' *.brm *.dat *.ini *.png *.rcss *.rml *.tga *.txt *.wav *.xor *.zip' CONTENT_FONTS_DATA_RELATIVE_PATH='noarch' CONTENT_FONTS_DATA_FILES=' LiberationSerif-BoldItalic.ttf LiberationSerif-Bold.ttf LiberationSerif-Italic.ttf LiberationSerif-Regular.ttf TimesNewRomanPSBold.ttf' USER_PERSISTENT_FILES=' *.ini *.rml *.txt' APP_MAIN_EXE_BIN64='NeogeoEmu.bin.x86_64' APP_MAIN_EXE_BIN32='NeogeoEmu.bin.x86' APP_MAIN_ICON_KINGOFTHEMONSTERS='noarch/KingOfTheMonsters.png' APP_MAIN_ICON_BASEBALLSTARS2='noarch/BaseballStars2.png' APP_MAIN_ICON_FATALFURYSPECIAL='noarch/FatalFurySpecial.png' APP_MAIN_ICON_ARTOFFIGHTING2='noarch/ArtOfFighting2.png' APP_MAIN_ICON_SAMURAISHODOWN2='noarch/SamuraiShodown2.png' APP_MAIN_ICON_METALSLUG2='noarch/MetalSlug2.png' APP_MAIN_ICON_METALSLUG3='noarch/MetalSlug3.png' APP_MAIN_ICON_THEKINGOFFIGHTERS2000='noarch/KingOfFighters2000.png' APP_MAIN_ICON_SENGOKU3='noarch/Sengoku3.png' ## The shipped build of SDL2 has no support for the wayland backend. APP_MAIN_PRERUN=' # The shipped build of SDL2 has no support for the wayland backend if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER 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 libfreetype.so.6 libgcc_s.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID_KINGOFTHEMONSTERS="${GAME_ID_KINGOFTHEMONSTERS}-data" PKG_DATA_ID_BASEBALLSTARS2="${GAME_ID_BASEBALLSTARS2}-data" PKG_DATA_ID_FATALFURYSPECIAL="${GAME_ID_FATALFURYSPECIAL}-data" PKG_DATA_ID_ARTOFFIGHTING2="${GAME_ID_ARTOFFIGHTING2}-data" PKG_DATA_ID_SAMURAISHODOWN2="${GAME_ID_SAMURAISHODOWN2}-data" PKG_DATA_ID_METALSLUG2="${GAME_ID_METALSLUG2}-data" PKG_DATA_ID_METALSLUG3="${GAME_ID_METALSLUG3}-data" PKG_DATA_ID_THEKINGOFFIGHTERS2000="${GAME_ID_THEKINGOFFIGHTERS2000}-data" PKG_DATA_ID_SENGOKU3="${GAME_ID_SENGOKU3}-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 # The game engine looks for fonts in a hardcoded path. fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path 'PKG_DATA')$(path_game_data)" ln --symbolic --target-directory="$fonts_destination" \ "${fonts_source}/LiberationSerif-Regular.ttf" \ "${fonts_source}/LiberationSerif-Bold.ttf" \ "${fonts_source}/LiberationSerif-BoldItalic.ttf" \ "${fonts_source}/LiberationSerif-Italic.ttf" \ "${fonts_source}/TimesNewRomanPSBold.ttf" # 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-solar-2.sh0000755000000000000000000001457314471751340013451 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Solar 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20240831.5 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='solar-2' GAME_NAME='Solar 2' ARCHIVE_BASE_0_NAME='Solar2_v1.26_amd64.tar.gz' ARCHIVE_BASE_0_MD5='64e953238fbdce8d8671578ddba05559' ARCHIVE_BASE_0_SIZE='103714' ARCHIVE_BASE_0_VERSION='1.26-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/solar-2' ARCHIVE_BASE_XNA_0_NAME='solar2-linux-1.10_1409159048.tar.gz' ARCHIVE_BASE_XNA_0_MD5='243918907eea486fdc820b7cac0c260b' ARCHIVE_BASE_XNA_0_SIZE='130000' ARCHIVE_BASE_XNA_0_VERSION='1.10-humble1' ARCHIVE_BASE_XNA_0_URL='https://www.humblebundle.com/store/solar-2' ## Optional icons pack (only useful for the XNA build) ARCHIVE_OPTIONAL_ICONS_NAME_XNA='solar-2_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_XNA='d8f8557a575cb5b5824d72718428cd33' ARCHIVE_OPTIONAL_ICONS_URL_XNA='https://downloads.dotslashplay.it/resources/solar-2/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64' # Archives content CONTENT_PATH_DEFAULT='Solar2' CONTENT_LIBS_BIN_FILES=' libclrgc.so libclrjit.so libcoreclr.so libcoreclrtraceptprovider.so libhostfxr.so libhostpolicy.so libmscordaccore.so libmscordbi.so libSystem.Globalization.Native.so libSystem.IO.Compression.Native.so libSystem.Native.so libSystem.Net.Security.Native.so libSystem.Security.Cryptography.Native.OpenSsl.so' ## The game crashes on launch if the shipped OpenAL is not used: ## ## Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. ## at Solar2.Moosic..ctor(AudioManager audioManager, PowerMain main) ## at Solar2.World..ctor(Epsilon epsilon, SpriteSheet[] sheets) ## at Solar2.Epsilon.LoadContent() ## at Power.PowerMain.LoadScreen(GameScreen screen, Nullable`1 controllingPlayer) ## at Solar2.LoadingScreen.BackgroundWorkerThread() CONTENT_LIBS0_BIN_FILES=' libopenal.so.1' CONTENT_GAME_BIN_FILES=' Solar2 Solar2.deps.json Solar2.runtimeconfig.json' CONTENT_GAME_DATA_FILES=' Content solar2icon_512x512_transparent.png' ## TODO: Some of these shipped Mono libraries could probably be replaced by system-provided ones CONTENT_GAME0_DATA_FILES=' *.dll' ## Old XNA build CONTENT_GAME_MAIN_FILES_XNA=' mono Languages MonoContent display.txt Solar2.exe EasyStorage.Linux.dll GamepadBridge.dll Lidgren.Network.dll MonoGame.Framework.Linux.dll MonoGame.Framework.Linux.dll.config Power.Linux.dll PowerRuntime.Linux.dll Tao.Sdl.dll Tao.Sdl.dll.config' # Launchers ## TODO: Check if these paths are used by the current MonoGame builds USER_PERSISTENT_DIRECTORIES=' Languages' USER_PERSISTENT_FILES=' display.txt' APP_MAIN_EXE='Solar2' APP_MAIN_ICON='solar2icon_512x512_transparent.png' ## Prevent the game from escaping the prefix APP_MAIN_PRERUN=' # Prevent the game from escaping the prefix if [ -h "Solar2.dll" ]; then file_source=$(realpath "Solar2.dll") cp --remove-destination "$file_source" "Solar2.dll" fi ' ## Old XNA build APP_MAIN_EXE_XNA='Solar2.exe' # Packages PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 liblttng-ust.so.0 libm.so.6 libopenal.so.1 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' ## Old XNA build PACKAGES_LIST_XNA=' PKG_MAIN' PKG_MAIN_PROVIDES_XNA=' solar-2-data' PKG_MAIN_DEPENDENCIES_LIBRARIES_XNA=' libopenal.so.1 libSDL_mixer-1.2.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES_XNA=' mscorlib.dll Mono.Posix.dll Mono.Security.dll OpenTK.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Security.dll System.Xml.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" # Extract game data archive_extraction_default # Include game data case "$(current_archive)" in ('ARCHIVE_BASE_XNA_'*) ## Old XNA build - No icon is shipped (not even included in the .exe file), ## but an optional icons pack is supported unset APP_MAIN_ICON content_inclusion_icons ;; (*) content_inclusion_icons 'PKG_DATA' ;; esac content_inclusion_default # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_XNA_'*) ## Old XNA build - libSDL_mixer-1.2.so.0 must be available at lib/libSDL_mixer-1.2.so.0 to avoid a game crash. ## WARNING: path_libraries_system can not be used when the package is architecture-agnostic case "$(option_value 'package')" in ('arch') path_libraries_64='/usr/lib' path_libraries_32='/usr/lib32' ;; ('deb') path_libraries_64='/usr/lib/x86_64-linux-gnu' path_libraries_32='/usr/lib/i386-linux-gnu' ;; ('gentoo'|'egentoo') path_libraries_64='/usr/lib64' path_libraries_32='/usr/lib' ;; esac APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') # libSDL_mixer-1.2.so.0 must be available at lib/libSDL_mixer-1.2.so.0 to avoid a game crash if [ ! -e 'lib/libSDL_mixer-1.2.so.0' ]; then mkdir --parents 'lib' if [ -e '${path_libraries_64}/libSDL_mixer-1.2.so.0' ]; then ln --symbolic '${path_libraries_64}/libSDL_mixer-1.2.so.0' 'lib/libSDL_mixer-1.2.so.0' elif [ -e '${path_libraries_32}/libSDL_mixer-1.2.so.0' ]; then ln --symbolic '${path_libraries_32}/libSDL_mixer-1.2.so.0' 'lib/libSDL_mixer-1.2.so.0' fi fi " launchers_generation ;; (*) ## MonoGame builds - The game engine fails to find the shipped libraries if they are not in the game directory APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') # The game engine fails to find the shipped libraries if they are not in the game directory ln --force --symbolic '$(path_libraries)'/*.so . " launchers_generation 'PKG_BIN' ;; esac # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-springback.sh0000755000000000000000000000411314471751340014302 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # SpringBack # send your bug reports to bugs@dotslashplay.it ### script_version=20241219.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='springback' GAME_NAME='SpringBack' ARCHIVE_BASE_1_NAME='Springback_1.1.429.rar' ARCHIVE_BASE_1_MD5='13516502d68c29fd38851adf03b82934' ARCHIVE_BASE_1_SIZE='241965' ARCHIVE_BASE_1_VERSION='1.1.429-itch1' ARCHIVE_BASE_1_URL='https://sweet-arsenic.itch.io/springback' ARCHIVE_BASE_0_NAME='springback-windows-universal.zip' ARCHIVE_BASE_0_MD5='61b073d967bbd27433baaedc9d97c3e1' ARCHIVE_BASE_0_SIZE='230000' ARCHIVE_BASE_0_VERSION='1.0-itch1' UNITY3D_NAME='SpringBack' CONTENT_PATH_DEFAULT='Springback_1.1.429' CONTENT_PATH_DEFAULT_0='.' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Sweet Arsenic\SpringBack' 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 ## Ignore some harmless errors during the extraction of some *.mdb files 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-star-wars-battlefront-2.sh0000755000000000000000000000627414471751340016575 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Star Wars: Battlefront II # send your bug reports to bugs@dotslashplay.it ### script_version=20251009.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='star-wars-battlefront-2' GAME_NAME='Star Wars: Battlefront II' ARCHIVE_BASE_1_NAME='setup_star_wars_battlefront_ii_1.1_(10935).exe' ARCHIVE_BASE_1_MD5='0b74c1d7cced6d6bde95605661b67673' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_star_wars_battlefront_ii_1.1_(10935)-1.bin' ARCHIVE_BASE_1_PART1_MD5='c7ad88e5eb89b3701dad3a6973d9918b' ARCHIVE_BASE_1_PART2_NAME='setup_star_wars_battlefront_ii_1.1_(10935)-2.bin' ARCHIVE_BASE_1_PART2_MD5='3a52d98aa43cb78fd661a656e5cf96a2' ARCHIVE_BASE_1_SIZE='10000000' ARCHIVE_BASE_1_VERSION='1.1-gog10935' ARCHIVE_BASE_1_URL='https://www.gog.com/game/star_wars_battlefront_ii' ARCHIVE_BASE_0_NAME='setup_star_wars_battlefront_ii_1.1_multiplayer_update_2_(17606).exe' ARCHIVE_BASE_0_MD5='f482ec251067336d3b8211774b4c44f6' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_star_wars_battlefront_ii_1.1_multiplayer_update_2_(17606)-1.bin' ARCHIVE_BASE_0_PART1_MD5='c34b41f594e55b1522d8826f19cf958f' ARCHIVE_BASE_0_PART2_NAME='setup_star_wars_battlefront_ii_1.1_multiplayer_update_2_(17606)-2.bin' ARCHIVE_BASE_0_PART2_MD5='c9423f3983c67575c1c531e0d18e6a0f' ARCHIVE_BASE_0_SIZE='11000000' ARCHIVE_BASE_0_VERSION='1.1-gog17606' ARCHIVE_OPTIONAL_ICONS_NAME='star-wars-battlefront-2_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='322275011d37ac219f1c06c196477fa4' ARCHIVE_OPTIONAL_ICONS_URL='http://downloads.dotslashplay.it/games/star-wars-battlefront-2/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32' CONTENT_PATH_DEFAULT='gamedata' CONTENT_GAME_BIN_FILES=' *.dll *.exe' CONTENT_GAME_MOVIES_FILES=' data/_lvl_pc/movies' CONTENT_GAME_DATA_FILES=' data' CONTENT_DOC_DATA_PATH='.' CONTENT_DOC_DATA_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' savegames' USER_PERSISTENT_FILES=' *.ini' APP_MAIN_EXE='battlefrontii.exe' PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_MOVIES PKG_DATA' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-stargunner.sh0000755000000000000000000000602014471751340014346 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Stargunner # send your bug reports to bugs@dotslashplay.it ### script_version=20250826.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='stargunner' GAME_NAME='Stargunner' ARCHIVE_BASE_1_NAME='gog_stargunner_2.0.0.10.sh' ARCHIVE_BASE_1_MD5='d04655b120bce07d7c840f49e89e6a83' ARCHIVE_BASE_1_SIZE='58000' ARCHIVE_BASE_1_VERSION='1.0b-gog2.0.0.10' ARCHIVE_BASE_1_URL='https://www.gog.com/game/stargunner' ARCHIVE_BASE_0_NAME='gog_stargunner_2.0.0.9.sh' ARCHIVE_BASE_0_MD5='4e90175d15754e05ad6cb0a0fa1af413' ARCHIVE_BASE_0_SIZE='57000' ARCHIVE_BASE_0_VERSION='1.0b-gog2.0.0.9' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' STARGUN.CFG STARGUN.DLT SETUP.EXE STARHELP.EXE STARGUN.EXE STARGUN.HI STARGUN.SAV' CONTENT_DOC_MAIN_PATH='data/noarch/docs' CONTENT_DOC_MAIN_FILES=' usermanual.pdf' USER_PERSISTENT_FILES=' STARGUN.CFG STARGUN.HI STARGUN.SAV' APP_MAIN_EXE='STARGUN.EXE' APP_MAIN_ICON='../support/icon.png' ## Prevent the game from running too fast. APP_MAIN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 25000 ' APP_HELP_ID="${GAME_ID}-help" APP_HELP_NAME="$GAME_NAME - help" APP_HELP_EXE='STARHELP.EXE' APP_HELP_ICON='../support/icon.png' APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_NAME="$GAME_NAME - setup" APP_SETUP_CAT='Settings' APP_SETUP_EXE='SETUP.EXE' APP_SETUP_ICON='../support/icon.png' ## convmv is used to convert file paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ## Convert documentation file names to lower case. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path 'DOC_MAIN')" ## Generate a smaller icon from the shipped one. APP_MAIN_ICON_512="${APP_MAIN_ICON%.png}_512.png" APP_MAIN_ICONS_LIST="$(application_icons_list 'APP_MAIN') APP_MAIN_ICON_512" APP_HELP_ICONS_LIST="$(application_icons_list 'APP_HELP') APP_MAIN_ICON_512" APP_SETUP_ICONS_LIST="$(application_icons_list 'APP_SETUP') APP_MAIN_ICON_512" convert \ "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/${APP_MAIN_ICON}" \ -resize 512x512 \ "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/${APP_MAIN_ICON_512}" # 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-strafe.sh0000700000000000000000000000431714471751340013437 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Strafe # send your bug reports to bugs@dotslashplay.it ### script_version=20250808.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='strafe' GAME_NAME='Strafe' ARCHIVE_BASE_1_NAME='strafe_gold_edition_1_4_38941.sh' ARCHIVE_BASE_1_MD5='f7e0bd39d0c6527f4205ec9d095de936' ARCHIVE_BASE_1_SIZE='3000000' ARCHIVE_BASE_1_VERSION='1.4-gog38941' ARCHIVE_BASE_1_URL='https://www.gog.com/game/strafe' ARCHIVE_BASE_0_NAME='strafe_en_1_2_update_25_04_2018_20318.sh' ARCHIVE_BASE_0_MD5='3726412cdf951f5d4278a0a557a70db6' ARCHIVE_BASE_0_SIZE='3000000' ARCHIVE_BASE_0_VERSION='1.2.180425-gog20318' ARCHIVE_BASE_0_URL='https://www.gog.com/game/strafe' UNITY3D_NAME='STRAFE' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions 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-strike-suit-zero.sh0000700000000000000000000000543614471751340015416 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Strike Suit Zero # send your bug reports to bugs@dotslashplay.it ### script_version=20250311.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='strike-suit-zero' GAME_NAME='Strike Suit Zero' ARCHIVE_BASE_0_NAME='StrikeSuitZero_linux_1389211698.zip' ARCHIVE_BASE_0_MD5='94b1c2907ae61deb27eb77fee3fb9c19' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.0-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/strike-suit-zero' ARCHIVE_OPTIONAL_ICONS_NAME='strike-suit-zero_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='3fe8bbad7ecca5c0e3afdbbfedb8945d' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/strike-suit-zero/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48' CONTENT_PATH_DEFAULT='.' CONTENT_LIBS_BIN_RELATIVE_PATH='linux/main/binary' CONTENT_LIBS_BIN_FILES=' libfmodevent.so libfmodeventnet.so libfmodex.so libfmodex-4.44.12.so' CONTENT_GAME_BIN_FILES=' linux/main/binary/StrikeSuitZero' CONTENT_GAME_DATA_FILES=' linux/main/art linux/main/audio linux/main/fonts linux/main/gui linux/main/level linux/main/levels linux/main/localisation linux/main/particles linux/main/scripts linux/main/shaders linux/main/system linux/main/textures linux/main/video linux/main/index.toc linux/main/index.toc.txt' USER_PERSISTENT_FILES=' *.sav' APP_MAIN_EXE='linux/main/binary/StrikeSuitZero' 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' 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 linux/main/binary ./StrikeSuitZero "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-superhot.sh0000755000000000000000000000445514471751340014041 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Superhot # send your bug reports to bugs@dotslashplay.it ### script_version=20251009.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='superhot' GAME_NAME='Superhot' ARCHIVE_BASE_GOG_0_NAME='superhot_1_0_14_33249.sh' ARCHIVE_BASE_GOG_0_MD5='0cae1298bc41354a7d34d2211d6b07f2' ARCHIVE_BASE_GOG_0_SIZE='4100000' ARCHIVE_BASE_GOG_0_VERSION='1.0.14-gog33249' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/superhot' ## This DRM-free build is no longer available for sale from humblebundle.com. ARCHIVE_BASE_HUMBLE_0_NAME='SUPERHOT_LINUX.zip' ARCHIVE_BASE_HUMBLE_0_MD5='bbbbae191504b00cfb4a9509175014c2' ARCHIVE_BASE_HUMBLE_0_SIZE='4300000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble1' UNITY3D_NAME='SUPERHOT' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='SUPERHOT' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-symphony.sh0000755000000000000000000000561114471751340014051 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Symphony # send your bug reports to bugs@dotslashplay.it ### script_version=20241111.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='symphony' GAME_NAME='Symphony' ## This installer used to be available for free from Humble Bundle, ## during some time-limited event. ARCHIVE_BASE_0_NAME='Symphony-Linux-2014-07-15.sh' ARCHIVE_BASE_0_MD5='9218c0b803baf90c34bed2ac1501efa6' ARCHIVE_BASE_0_SIZE='405705' ARCHIVE_BASE_0_VERSION='2014.07.15-humble1' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_FILES=' libfmodex-4.44.20.so' CONTENT_LIBS_BIN64_RELATIVE_PATH='x86_64/lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='x86/lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_RELATIVE_PATH='x86_64' CONTENT_GAME_BIN64_FILES=' Symphony.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH='x86' CONTENT_GAME_BIN32_FILES=' Symphony.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' Symphony.png Symphony soundtrack *.mdf *.mtc' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' README.linux' APP_MAIN_EXE_BIN64='Symphony.bin.x86_64' APP_MAIN_EXE_BIN32='Symphony.bin.x86' APP_MAIN_ICON='noarch/Symphony.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 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" 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-the-binding-of-isaac-expansions.sh0000700000000000000000000000733714471751340020215 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 HS-157 # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2023 Locynaeh set -o errexit ### # The Binding of Isaac expansions: # - Afterbirth # - Afterbirth + # - Repentance # send your bug reports to bugs@dotslashplay.it ### script_version=20230723.1 GAME_ID='the-binding-of-isaac' GAME_NAME='The Binding of Isaac' EXPANSION_ID_AFTERBIRTH='afterbirth' EXPANSION_NAME_AFTERBIRTH='Afterbirth' EXPANSION_ID_AFTERBIRTHPLUS='afterbirth-plus' EXPANSION_NAME_AFTERBIRTHPLUS='Afterbirth +' EXPANSION_ID_REPENTANCE='repentance' EXPANSION_NAME_REPENTANCE='Repentance' # Archives ## Afterbirth ARCHIVE_BASE_AFTERBIRTH_1='setup_the_binding_of_isaac_afterbirth_1.0.1.0_(54718).exe' ARCHIVE_BASE_AFTERBIRTH_1_MD5='9cdb71b69a9b25e69df3f9dcdab2de9f' ARCHIVE_BASE_AFTERBIRTH_1_TYPE='innosetup' ARCHIVE_BASE_AFTERBIRTH_1_SIZE='170000' ARCHIVE_BASE_AFTERBIRTH_1_VERSION='1.0.1.0-gog54718' ARCHIVE_BASE_AFTERBIRTH_1_URL='https://www.gog.com/game/the_binding_of_isaac_afterbirth' ARCHIVE_BASE_AFTERBIRTH_0='setup_the_binding_of_isaac_afterbirth_1.0.0.0_(52089).exe' ARCHIVE_BASE_AFTERBIRTH_0_MD5='f72a7c3d8f23627b6e4eaf1b0e71c304' ARCHIVE_BASE_AFTERBIRTH_0_TYPE='innosetup' ARCHIVE_BASE_AFTERBIRTH_0_SIZE='170000' ARCHIVE_BASE_AFTERBIRTH_0_VERSION='1.0.0.0-gog52089' ## Afterbirth + ARCHIVE_BASE_AFTERBIRTHPLUS_1='setup_the_binding_of_isaac_afterbirth__1.0.1.0_(54718).exe' ARCHIVE_BASE_AFTERBIRTHPLUS_1_MD5='23558f5eb97895659b5e594595aad247' ARCHIVE_BASE_AFTERBIRTHPLUS_1_TYPE='innosetup' ARCHIVE_BASE_AFTERBIRTHPLUS_1_SIZE='110000' ARCHIVE_BASE_AFTERBIRTHPLUS_1_VERSION='1.0.1.0-gog54718' ARCHIVE_BASE_AFTERBIRTHPLUS_1_URL='https://www.gog.com/game/the_binding_of_isaac_afterbirth_plus' ARCHIVE_BASE_AFTERBIRTHPLUS_0='setup_the_binding_of_isaac_afterbirth__1.0.0.0_(52089).exe' ARCHIVE_BASE_AFTERBIRTHPLUS_0_MD5='ca0d4b261b16ffca26d7f2f723bd8031' ARCHIVE_BASE_AFTERBIRTHPLUS_0_TYPE='innosetup' ARCHIVE_BASE_AFTERBIRTHPLUS_0_SIZE='110000' ARCHIVE_BASE_AFTERBIRTHPLUS_0_VERSION='1.0.0.0-gog52089' ## Repentance ARCHIVE_BASE_REPENTANCE_1='setup_the_binding_of_isaac_repentance_1.0.1.0_(54718).exe' ARCHIVE_BASE_REPENTANCE_1_MD5='b8eeaeb46b3b2ddb5aa6e04729d8085e' ARCHIVE_BASE_REPENTANCE_1_TYPE='innosetup' ARCHIVE_BASE_REPENTANCE_1_SIZE='490000' ARCHIVE_BASE_REPENTANCE_1_VERSION='1.0.1.0-gog54718' ARCHIVE_BASE_REPENTANCE_1_URL='https://www.gog.com/game/the_binding_of_isaac_repentance' ARCHIVE_BASE_REPENTANCE_0='setup_the_binding_of_isaac_repentance_1.0.0.0_(52089).exe' ARCHIVE_BASE_REPENTANCE_0_MD5='b569c8fce392e5ec1083e5418d9a36d0' ARCHIVE_BASE_REPENTANCE_0_TYPE='innosetup' ARCHIVE_BASE_REPENTANCE_0_SIZE='440000' ARCHIVE_BASE_REPENTANCE_0_VERSION='1.0.0.0-gog52089' CONTENT_GAME_MAIN_PATH='.' CONTENT_GAME_MAIN_FILES=' resources' PKG_MAIN_DEPS="$GAME_ID" # Load common functions target_version='2.24' 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 packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-binding-of-isaac.sh0000700000000000000000000000541114471751340016017 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 HS-157 # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2023 Locynaeh set -o errexit ### # The Binding of Isaac # send your bug reports to bugs@dotslashplay.it ### script_version=20250509.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-binding-of-isaac' GAME_NAME='The Binding of Isaac: Rebirth' ARCHIVE_BASE_1_NAME='setup_the_binding_of_isaac_rebirth_1.0.1.0_(54718).exe' ARCHIVE_BASE_1_MD5='2e30949d6bc26c25692403daec6de446' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='380000' ARCHIVE_BASE_1_VERSION='1.0.1.0-gog54718' ARCHIVE_BASE_1_URL='https://www.gog.com/game/the_binding_of_isaac_rebirth' ARCHIVE_BASE_0_NAME='setup_the_binding_of_isaac_rebirth_1.0.0.0_(52089).exe' ARCHIVE_BASE_0_MD5='b65dc20d9f6cef55fdecd39a1a59380c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='360000' ARCHIVE_BASE_0_VERSION='1.0.0.0-gog52089' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' lua5.3.3r.dll isaac-ng_launcher.exe isaac-ng_rebirth.exe isaac-ng_afterbirth.exe isaac-ng_afterbirth+.exe isaac-ng_repentance.exe' ## isaac-ng_*.exe require Galaxy.dll. CONTENT_GAME0_BIN_FILES=' galaxy.dll' CONTENT_GAME_DATA_FILES=' resources' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Binding of Isaac Rebirth (Galaxy) users/${USER}/Documents/My Games/Binding of Isaac Afterbirth (Galaxy) users/${USER}/Documents/My Games/Binding of Isaac Afterbirth+ (Galaxy) users/${USER}/Documents/My Games/Binding of Isaac Repentance (Galaxy)' ## Install required OpenAL32.dll library WINE_WINETRICKS_VERBS='openal' APP_MAIN_EXE='isaac-ng_launcher.exe' APP_MAIN_ICON='isaac-ng_rebirth.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-thief-3.sh0000700000000000000000000000563214471751340013413 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Thief: Deadly Shadows # send your bug reports to bugs@dotslashplay.it ### script_version=20250807.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='thief-3' GAME_NAME='Thief 3: Deadly Shadows' ARCHIVE_BASE_1_NAME='setup_thief_-_deadly_shadows_1.1_(21683).exe' ARCHIVE_BASE_1_MD5='153723f2908242cf27a23ad58d0608b5' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_thief_-_deadly_shadows_1.1_(21683)-1.bin' ARCHIVE_BASE_1_PART1_MD5='8c549826345776df192fb1721740096f' ARCHIVE_BASE_1_SIZE='2300000' ARCHIVE_BASE_1_VERSION='1.1-gog2.21683' ARCHIVE_BASE_1_URL='https://www.gog.com/game/thief_3' ARCHIVE_BASE_0_NAME='setup_thief3_2.0.0.6.exe' ARCHIVE_BASE_0_MD5='e5b84de58a1037f3e8aa3a1bb2a982be' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2300000' ARCHIVE_BASE_0_VERSION='1.1-gog2.0.0.6' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' system' CONTENT_GAME0_BIN_PATH='__support/app' CONTENT_GAME0_BIN_PATH_0='app' CONTENT_GAME0_BIN_FILES=' user.ini' CONTENT_GAME_DATA_FILES=' content' CONTENT_DOC_DATA_FILES=' eula.txt readme.rtf *.pdf' USER_PERSISTENT_DIRECTORIES=' saves' USER_PERSISTENT_FILES=' *.ini' ## Set up required registry keys. # shellcheck disable=SC1003 WINE_REGISTRY_INIT=' [HKEY_LOCAL_MACHINE\Software\Ion Storm\Thief - Deadly Shadows] "ION_ROOT"="C:\\'"${GAME_ID}"'" "SaveGamePath"="C:\\'"${GAME_ID}"'\\saves" ' APP_MAIN_EXE='system/t3.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## Ensure easy upgrades from packages generated with pre-20201031.16 game scripts. PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} thief3" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Ensure easy upgrades from packages generated with pre-20201031.16 game scripts. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} thief3-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-tonight-we-riot.sh0000700000000000000000000000526314471751340015214 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Tonight We Riot # send your bug reports to bugs@dotslashplay.it ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='tonight-we-riot' GAME_NAME='Tonight We Riot' ARCHIVE_BASE_ITCH_0_NAME='TonightWeRiot_Linux.zip' ARCHIVE_BASE_ITCH_0_MD5='293a595ea44b5e80a0ca0eeb7b5a925a' ARCHIVE_BASE_ITCH_0_SIZE='690000' ARCHIVE_BASE_ITCH_0_VERSION='1.0-itch.2020.06.08' ARCHIVE_BASE_ITCH_0_URL='https://meansinteractive.itch.io/tonight-we-riot' ARCHIVE_BASE_GOG_2_NAME='tonight_we_riot_linuxrelease_c_38381.sh' ARCHIVE_BASE_GOG_2_MD5='7afc74aefbccaa58627d934e63c16247' ARCHIVE_BASE_GOG_2_SIZE='690000' ARCHIVE_BASE_GOG_2_VERSION='1.0.c-gog38381' ARCHIVE_BASE_GOG_2_URL='https://www.gog.com/game/tonight_we_riot' ARCHIVE_BASE_GOG_1_NAME='tonight_we_riot_linuxrelease_b_38278.sh' ARCHIVE_BASE_GOG_1_MD5='7ca6aedccb70bcd027b9e79d5cfb8585' ARCHIVE_BASE_GOG_1_SIZE='690000' ARCHIVE_BASE_GOG_1_VERSION='1.0.b-gog38278' ARCHIVE_BASE_GOG_0_NAME='tonight_we_riot_linuxrelease_a_38076.sh' ARCHIVE_BASE_GOG_0_MD5='38b03db54a7d80895d2abe0d9f153ae7' ARCHIVE_BASE_GOG_0_SIZE='690000' ARCHIVE_BASE_GOG_0_VERSION='1.0.a-gog38076' UNITY3D_NAME='TonightWeRiot_Linux' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_ITCH='TonightWeRiot_Linux' CONTENT_PATH_DEFAULT_GOG='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-touhou-series.sh0000755000000000000000000002261614471751340015002 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2019 Emmanuel Gil Peyrot # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Touhou series: # - Touhou 6 # - Touhou 9 # - Touhou 11 # - Touhou 12 # - Touhou 13 # - Touhou 14 # - Touhou 16.5 # send your bug reports to bugs@dotslashplay.it ### script_version=20250424.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_EPISODE6='touhou-6' GAME_NAME_EPISODE6='Touhou Koumakyou ~ the Embodiment of Scarlet Devil' GAME_ID_EPISODE6_DEMO="${GAME_ID_EPISODE6}-demo" GAME_NAME_EPISODE6_DEMO="$GAME_NAME_EPISODE6 (demo)" GAME_ID_EPISODE9='touhou-9' GAME_NAME_EPISODE9='Touhou Kaeizuka ~ Phantasmagoria of Flower View' GAME_ID_EPISODE9_DEMO="${GAME_ID_EPISODE9}-demo" GAME_NAME_EPISODE9_DEMO="$GAME_NAME_EPISODE9 (demo)" GAME_ID_EPISODE11='touhou-11' GAME_NAME_EPISODE11='Touhou Chireiden ~ Subterranean Animism' GAME_ID_EPISODE11_DEMO="${GAME_ID_EPISODE11}-demo" GAME_NAME_EPISODE11_DEMO="$GAME_NAME_EPISODE11 (demo)" GAME_ID_EPISODE12='touhou-12' GAME_NAME_EPISODE12='Touhou Seirensen ~ Undefined Fantastic Object' GAME_ID_EPISODE12_DEMO="${GAME_ID_EPISODE12}-demo" GAME_NAME_EPISODE12_DEMO="$GAME_NAME_EPISODE12 (demo)" GAME_ID_EPISODE13='touhou-13' GAME_NAME_EPISODE13='Touhou Touhou Shinreibyou ~ Ten Desires' GAME_ID_EPISODE13_DEMO="${GAME_ID_EPISODE13}-demo" GAME_NAME_EPISODE13_DEMO="$GAME_NAME_EPISODE13 (demo)" GAME_ID_EPISODE14='touhou-14' GAME_NAME_EPISODE14='Touhou Kishinjou ~ Double Dealing Character' GAME_ID_EPISODE14_DEMO="${GAME_ID_EPISODE14}-demo" GAME_NAME_EPISODE14_DEMO="$GAME_NAME_EPISODE14 (demo)" GAME_ID_EPISODE165='touhou-16-5' GAME_NAME_EPISODE165='Touhou Hifuu Nightmare Diary ~ Violet Detector' ARCHIVE_BASE_EPISODE6_DEMO_0_NAME='kouma_tr013.lzh' ARCHIVE_BASE_EPISODE6_DEMO_0_MD5='7ea4be414a7f256429a2c5e4666c9881' ARCHIVE_BASE_EPISODE6_DEMO_0_TYPE='lha' ARCHIVE_BASE_EPISODE6_DEMO_0_SIZE='4500' ARCHIVE_BASE_EPISODE6_DEMO_0_VERSION='0.13-zun1' ARCHIVE_BASE_EPISODE6_DEMO_0_URL='http://www16.big.or.jp/~zun/html/th06.html' ## All download links behind the provided URL seem to be dead, ## despite the download page itself still being available. ARCHIVE_BASE_EPISODE9_DEMO_0_NAME='kaei_ver002.lzh' ARCHIVE_BASE_EPISODE9_DEMO_0_MD5='e07878f414404ba2157c4f646ccf3708' ARCHIVE_BASE_EPISODE9_DEMO_0_TYPE='lha' ARCHIVE_BASE_EPISODE9_DEMO_0_SIZE='29000' ARCHIVE_BASE_EPISODE9_DEMO_0_VERSION='0.02a-zun1' ARCHIVE_BASE_EPISODE9_DEMO_0_URL='https://www16.big.or.jp/~zun/html/th09dl.html' ARCHIVE_BASE_EPISODE11_DEMO_0_NAME='th11tr002a_setup.exe' ARCHIVE_BASE_EPISODE11_DEMO_0_MD5='9b7c092a529fcc1f48590f0a2b3cca87' ## Do not try to convert file paths to lowercase. ARCHIVE_BASE_EPISODE11_DEMO_0_EXTRACTOR='innoextract' ARCHIVE_BASE_EPISODE11_DEMO_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_EPISODE11_DEMO_0_SIZE='140000' ARCHIVE_BASE_EPISODE11_DEMO_0_VERSION='0.02a-zun1' ARCHIVE_BASE_EPISODE11_DEMO_0_URL='https://www16.big.or.jp/~zun/html/th11top.html' ARCHIVE_BASE_EPISODE12_DEMO_0_NAME='th12tr002a_setup.exe' ARCHIVE_BASE_EPISODE12_DEMO_0_MD5='61a77c94c2ef64d7afda477dda0594eb' ARCHIVE_BASE_EPISODE12_DEMO_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE12_DEMO_0_SIZE='151620' ARCHIVE_BASE_EPISODE12_DEMO_0_VERSION='0.02a-zun1' ARCHIVE_BASE_EPISODE12_DEMO_0_URL='http://www16.big.or.jp/~zun/html/th12dl.html' ARCHIVE_BASE_EPISODE13_DEMO_0_NAME='th13tr001a_setup.exe' ARCHIVE_BASE_EPISODE13_DEMO_0_MD5='5336b10545fd0b6cb0eb38c97199e9bc' ARCHIVE_BASE_EPISODE13_DEMO_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE13_DEMO_0_SIZE='190000' ARCHIVE_BASE_EPISODE13_DEMO_0_VERSION='0.01a-zun1' ARCHIVE_BASE_EPISODE13_DEMO_0_URL='http://www16.big.or.jp/~zun/html/th13dl.html' ## This DRM-free archive is no longer available from Playism store, ## since their owners closed it down in favour of Steam. ARCHIVE_BASE_EPISODE14_DEMO_0_NAME='DoubleDealingCharacterDemo.zip' ARCHIVE_BASE_EPISODE14_DEMO_0_MD5='76a751e8becb51689c2256d218cda788' ARCHIVE_BASE_EPISODE14_DEMO_0_SIZE='190000' ARCHIVE_BASE_EPISODE14_DEMO_0_VERSION='0.01b-playism' ARCHIVE_BASE_EPISODE165_DISC_0_NAME='violet-detector.iso' ARCHIVE_BASE_EPISODE165_DISC_0_MD5='d6198341c3c92befbeb713fdccc189e7' ARCHIVE_BASE_EPISODE165_DISC_0_VERSION='1.00a-disc' ARCHIVE_BASE_EPISODE165_DISC_0_SIZE='370000' ARCHIVE_BASE_EPISODE165_DISC_RAW_0_NAME='violet-detector-raw.iso' ARCHIVE_BASE_EPISODE165_DISC_RAW_0_MD5='7bbcf834290e33c0bb656a43a9d39ffe' ARCHIVE_BASE_EPISODE165_DISC_RAW_0_VERSION='1.00a-disc' ARCHIVE_BASE_EPISODE165_DISC_RAW_0_SIZE='370000' CONTENT_PATH_DEFAULT_EPISODE6_DEMO='東方紅魔郷 体験版' CONTENT_PATH_DEFAULT_EPISODE9_DEMO='kaei' CONTENT_PATH_DEFAULT_EPISODE11_DEMO='app' CONTENT_PATH_DEFAULT_EPISODE12_DEMO='app' CONTENT_PATH_DEFAULT_EPISODE13_DEMO='app' CONTENT_PATH_DEFAULT_EPISODE14_DEMO='Double Dealing Character DEMO (Touhou14)' CONTENT_PATH_DEFAULT_EPISODE165='th165' CONTENT_GAME_BIN_FILES=' *.exe' CONTENT_GAME_DATA_FILES=' *.dat *.DAT' CONTENT_DOC_DATA_FILES=' html manual マニュアル index.html *.txt' USER_PERSISTENT_DIRECTORIES_EPISODE6_DEMO=' replay' USER_PERSISTENT_DIRECTORIES_EPISODE9_DEMO=' replay' USER_PERSISTENT_DIRECTORIES_EPISODE12_DEMO=' replay' USER_PERSISTENT_DIRECTORIES_EPISODE13_DEMO=' replay' USER_PERSISTENT_FILES_EPISODE6_DEMO=' 東方紅魔郷.cfg score.dat log.txt' USER_PERSISTENT_FILES_EPISODE9_DEMO=' th09tr.cfg score.dat log.txt' USER_PERSISTENT_FILES_EPISODE11_DEMO=' h11.cfg scoreth11.dat log.txt' USER_PERSISTENT_FILES_EPISODE12_DEMO=' th12.cfg score.dat log.txt' USER_PERSISTENT_FILES_EPISODE13_DEMO=' th13.cfg score.dat log.txt' WINE_PERSISTENT_DIRECTORIES_EPISODE14_DEMO=' users/${USER}/AppData/Roaming/ShanghaiAlice/th14tr' WINE_PERSISTENT_DIRECTORIES_EPISODE165=' users/${USER}/AppData/Roaming/ShanghaiAlice/th165' APP_MAIN_EXE_EPISODE6_DEMO='東方紅魔郷.exe' APP_MAIN_EXE_EPISODE9_DEMO='th09tr.exe' APP_MAIN_EXE_EPISODE11_DEMO='th11.exe' APP_MAIN_EXE_EPISODE12_DEMO='th12.exe' APP_MAIN_EXE_EPISODE13_DEMO='th13.exe' APP_MAIN_EXE_EPISODE14_DEMO='th14.exe' APP_MAIN_EXE_EPISODE165='th165.exe' APP_MAIN_PRERUN='export LANG=ja_JP.UTF-8' APP_CONFIG_ID_EPISODE6_DEMO="${GAME_ID_EPISODE6_DEMO}-config" APP_CONFIG_ID_EPISODE9_DEMO="${GAME_ID_EPISODE9_DEMO}-config" APP_CONFIG_ID_EPISODE11_DEMO="${GAME_ID_EPISODE11_DEMO}-config" APP_CONFIG_ID_EPISODE12_DEMO="${GAME_ID_EPISODE12_DEMO}-config" APP_CONFIG_ID_EPISODE13_DEMO="${GAME_ID_EPISODE13_DEMO}-config" APP_CONFIG_ID_EPISODE14_DEMO="${GAME_ID_EPISODE14_DEMO}-config" APP_CONFIG_ID_EPISODE165="${GAME_ID_EPISODE165}-config" APP_CONFIG_NAME_EPISODE6_DEMO="$GAME_NAME_EPISODE6_DEMO - configuration" APP_CONFIG_NAME_EPISODE9_DEMO="$GAME_NAME_EPISODE9_DEMO - configuration" APP_CONFIG_NAME_EPISODE11_DEMO="$GAME_NAME_EPISODE11_DEMO - configuration" APP_CONFIG_NAME_EPISODE12_DEMO="$GAME_NAME_EPISODE12_DEMO - configuration" APP_CONFIG_NAME_EPISODE13_DEMO="$GAME_NAME_EPISODE13_DEMO - configuration" APP_CONFIG_NAME_EPISODE14_DEMO="$GAME_NAME_EPISODE14_DEMO - configuration" APP_CONFIG_NAME_EPISODE165="$GAME_NAME_EPISODE165 - configuration" APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='custom.exe' APP_CONFIG_PRERUN='export LANG=ja_JP.UTF-8' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## TODO: A dependency on the wqy-microhei.ttc font should be added. PKG_DATA_ID_EPISODE6_DEMO="${GAME_ID_EPISODE6_DEMO}-data" PKG_DATA_ID_EPISODE9_DEMO="${GAME_ID_EPISODE9_DEMO}-data" PKG_DATA_ID_EPISODE11_DEMO="${GAME_ID_EPISODE11_DEMO}-data" PKG_DATA_ID_EPISODE12_DEMO="${GAME_ID_EPISODE12_DEMO}-data" PKG_DATA_ID_EPISODE13_DEMO="${GAME_ID_EPISODE13_DEMO}-data" PKG_DATA_ID_EPISODE14_DEMO="${GAME_ID_EPISODE14_DEMO}-data" PKG_DATA_ID_EPISODE165="${GAME_ID_EPISODE165}-data" PKG_DATA_DESCRIPTION='data' # Convert the text files to UTF-8 encoding REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" REQUIREMENTS_LIST_EPISODE6_DEMO="${REQUIREMENTS_LIST:-} convmv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Work around ./play.it 2.32 lack of context support for REQUIREMENTS_LIST REQUIREMENTS_LIST=$(context_value 'REQUIREMENTS_LIST') requirements_check # Extract game data archive_extraction_default ( # Not going into $CONTENT_PATH_DEFAULT is expected cd "${PLAYIT_WORKDIR}/gamedata" # Convert all file paths to UTF-8 encoding case "$(current_archive)" in ('ARCHIVE_BASE_EPISODE6_DEMO_'*) convmv -f CP932 -t UTF-8 --notest -r . >/dev/null ;; esac ) ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Convert the text files to UTF-8 encoding find . \( -name '*.txt' -o -name '*.html' \) -exec \ sh -c 'contents=$(iconv --from-code CP932 --to-code UTF-8 "$1"); printf "%s" "$contents" > "$1"' -- '{}' \; ) # 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-tower-of-guns.sh0000700000000000000000000000620414471751340014664 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Tower of Guns # send your bug reports to bugs@dotslashplay.it ### script_version=20250312.6 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tower-of-guns' GAME_NAME='Tower of Guns' ## This Linux native DRM-free installer is no longer available for sale from humblebundle.com ARCHIVE_BASE_0_NAME='TowerOfGuns-Linux-1.27-2015021101-g_fix.sh' ARCHIVE_BASE_0_MD5='45fae40e529e678c9129f9ee2dc8694b' ARCHIVE_BASE_0_SIZE='950000' ARCHIVE_BASE_0_VERSION='1.27-humble160104' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_RELATIVE_PATH='x86/Binaries/Linux/lib' CONTENT_LIBS_BIN_FILES=' libPhysXCore.so libPhysXCooking.so libtcmalloc.so.0' ## The shipped libSDL2_mixer-2.0.so.0 must be used, to avoid the following error: ## ./UDKGame-Linux: undefined symbol: MinorityMix_SetPosition CONTENT_LIBS_BIN_FILES="$CONTENT_LIBS_BIN_FILES libSDL2_mixer-2.0.so.0" CONTENT_GAME_BIN_RELATIVE_PATH='x86' CONTENT_GAME_BIN_FILES=' Binaries/Linux/UDKGame-Linux' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' Engine UDKGame ToGIcon.bmp TowerOfGunsIcon.png' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' *.txt README.linux' APP_MAIN_EXE='Binaries/Linux/UDKGame-Linux' APP_MAIN_ICON='noarch/TowerOfGunsIcon.png' ## Prevent a game crash when using the wayland backend of SDL APP_MAIN_PRERUN=' # Prevent a game crash when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' ## Force a generic locale to prevent missing strings during gameplay APP_MAIN_PRERUN="$APP_MAIN_PRERUN # Force a generic locale to prevent missing strings during gameplay export LANG=C" 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 libogg.so.0 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.0' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run 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 Binaries/Linux ./UDKGame-Linux "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-trackmania-nations-forever.sh0000755000000000000000000000657314471751340017424 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Emmanuel Gil Peyrot # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2024 BetaRays set -o errexit ### # TrackMania Nations Forever # send your bug reports to bugs@dotslashplay.it ### script_version=20250320.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='trackmania-nations-forever' GAME_NAME='TrackMania Nations Forever' ARCHIVE_BASE_0_NAME='tmnationsforever_setup.exe' ARCHIVE_BASE_0_MD5='2a36d70989f94ba9369993749ff20640' ARCHIVE_BASE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_0_SIZE='520000' ARCHIVE_BASE_0_VERSION='2.11.26-1' ARCHIVE_BASE_0_URL='https://trackmaniaforever.com/nations/' ## TrackMania Competition Patch ARCHIVE_OPTIONAL_TMCP_0_NAME='TMCompetitionPatch_1.5.1.zip' ARCHIVE_OPTIONAL_TMCP_0_MD5='6420ae68976973e57cf1d5a1e135bae7' ARCHIVE_OPTIONAL_TMCP_0_SIZE='2200' ARCHIVE_OPTIONAL_TMCP_0_VERSION='1.5.1' ARCHIVE_OPTIONAL_TMCP_0_URL='https://donadigo.com/tmcp' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll openal32.dll thumbgbx.dll thumbgbx.tlb tmforever.exe tmforeverlauncher.exe wrap_oal.dll' CONTENT_GAME_DATA_FILES=' gamedata packs tmforever.map gbx.ico launchicon.png nadeo.ini' ## TrackMania Competition Patch CONTENT_GAME0_BIN_PATH='.' CONTENT_GAME0_BIN_FILES=' dinput8.dll TMCompPatch.dll' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/TmForever' APP_MAIN_EXE='tmforeverlauncher.exe' APP_MAIN_ICON='launchicon.png' 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' # innoextract is required to extract the content of an inner archive REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} innoextract" # 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 presence of the TrackMania Competition Patch archive_initialize_optional 'ARCHIVE_TMCP' 'ARCHIVE_OPTIONAL_TMCP_0' # Extract game data archive_extraction_default ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/TmNationsForever_Setup_Tmp.exe" ARCHIVE_INNER_TYPE='innosetup' archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" "${PLAYIT_WORKDIR}/gamedata/TmNationsForever_Setup_Tmp-1.bin" if archive_is_available 'ARCHIVE_TMCP'; then archive_extraction 'ARCHIVE_TMCP' fi # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers if archive_is_available 'ARCHIVE_TMCP'; then APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Load the TrackMania Competition Patch export WINEDLLOVERRIDES="dinput8.dll=n,b;$WINEDLLOVERRIDES" ' fi launchers_generation 'PKG_BIN' # Build package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-dakka-squadron.sh0000700000000000000000000000530514471751340017433 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Warhammer 40,000: Dakka Squadron # send your bug reports to bugs@dotslashplay.it ### script_version=20240516.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='warhammer-40k-dakka-squadron' GAME_NAME='Warhammer 40,000: Dakka Squadron' ARCHIVE_BASE_0_NAME='setup_warhammer_40000_dakka_squadron_-_flyboyz_edition_1.154277.shipping_(64bit)_(46795).exe' ARCHIVE_BASE_0_MD5='746ce7f112d089a2aca8dd6d4458dd26' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_warhammer_40000_dakka_squadron_-_flyboyz_edition_1.154277.shipping_(64bit)_(46795)-1.bin' ARCHIVE_BASE_0_PART1_MD5='f32a0390b27c406063fcf7ad3bff4655' ARCHIVE_BASE_0_PART2_NAME='setup_warhammer_40000_dakka_squadron_-_flyboyz_edition_1.154277.shipping_(64bit)_(46795)-2.bin' ARCHIVE_BASE_0_PART2_MD5='9c978a8867a9747039bcfceb462d0a2e' ARCHIVE_BASE_0_PART3_NAME='setup_warhammer_40000_dakka_squadron_-_flyboyz_edition_1.154277.shipping_(64bit)_(46795)-3.bin' ARCHIVE_BASE_0_PART3_MD5='ffb1a9b6e5343e6cb8955d6c8814ef97' ARCHIVE_BASE_0_SIZE='9200000' ARCHIVE_BASE_0_VERSION='1.154277-gog46795' ARCHIVE_BASE_0_URL='https://www.gog.com/game/warhammer_40000_dakka_squadron' UNREALENGINE4_NAME='dakkagame' CONTENT_PATH_DEFAULT='.' ## Work around a crash related to shaders compilation ## Without these native libraries, the game crashes with the following error: ## SlateD3DShaders::CompileShader() - D3DCompilerFunc Result: DXGI_ERROR_80004005 WINE_WINETRICKS_VERBS='d3dcompiler_43 d3dcompiler_47' APP_MAIN_EXE='dakkagame/binaries/win64/dakkagame-win64-shipping.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=123 --language=1033' 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-warsow.sh0000755000000000000000000000553014471751340013505 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Warsow # send your bug reports to bugs@dotslashplay.it ### script_version=20240622.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warsow' GAME_NAME='War§ow' ## This installer is no longer available from gog.com. ARCHIVE_BASE_0_NAME='gog_warsow_2.1.0.3.sh' ARCHIVE_BASE_0_MD5='028efe7a5f4dfd8851c2146431c7ca4a' ARCHIVE_BASE_0_SIZE='479771' ARCHIVE_BASE_0_VERSION='2.1-gog2.1.0.3' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/libs" CONTENT_LIBS_BIN64_PATH="$CONTENT_LIBS_BIN_PATH" CONTENT_LIBS_BIN64_FILES=' libangelwrap_x86_64.so libcin_x86_64.so libftlib_x86_64.so libirc_x86_64.so libref_gl_x86_64.so libsnd_openal_x86_64.so libsnd_qf_x86_64.so libui_x86_64.so' CONTENT_LIBS_BIN32_PATH="$CONTENT_LIBS_BIN_PATH" CONTENT_LIBS_BIN32_FILES=' libangelwrap_i386.so libcin_i386.so libftlib_i386.so libirc_i386.so libref_gl_i386.so libsnd_openal_i386.so libsnd_qf_i386.so libui_i386.so' CONTENT_GAME_BIN64_FILES=' warsow.x86_64 wsw_server.x86_64 wswtv_server.x86_64' CONTENT_GAME_BIN32_FILES=' warsow.i386 wsw_server.i386 wswtv_server.i386' CONTENT_GAME_DATA_FILES=' basewsw' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/docs" CONTENT_DOC_DATA_FILES=' *.txt' APP_MAIN_EXE_BIN64='warsow.x86_64' APP_MAIN_EXE_BIN32='warsow.i386' 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 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-wing-commander-1.sh0000755000000000000000000000473714471751340015240 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Wing Commander # send your bug reports to bugs@dotslashplay.it ### script_version=20240505.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='wing-commander-1' GAME_NAME='Wing Commander' ARCHIVE_BASE_1_NAME='setup_wing_commander_1.0_(28045).exe' ARCHIVE_BASE_1_MD5='850542ba9a543378a4894156b41ce511' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='45000' ARCHIVE_BASE_1_VERSION='1.0-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/wing_commander_1_2' ARCHIVE_BASE_0='setup_wing_commander_2.1.0.18.exe' ARCHIVE_BASE_0_MD5='a4a3a355489e66bcecd34d1d9041ebb5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='49000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.18' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' wc.exe sm2.exe gamedat *.cfg' CONTENT_GAME0_MAIN_PATH='__support/save' CONTENT_GAME0_MAIN_FILES=' gamedat' CONTENT_DOC_MAIN_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' gamedat' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE='wc.exe' APP_MAIN_ICON='app/goggame-1207662643.ico' APP_MAIN_DOSBOX_PRERUN='config -set cpu cycles=fixed 4000 loadfix -1' APP_SM2_ID="${GAME_ID}-the-secret-missions-2" APP_SM2_NAME="$GAME_NAME - The Secret Missions 2 - Crusade" APP_SM2_EXE='sm2.exe' APP_SM2_ICON='app/goggame-1207662643.ico' APP_SM2_DOSBOX_PRERUN='config -set cpu cycles=fixed 4000 loadfix -1' ## Easier upgrade from packages generated with pre-20190224.1 scripts. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} wing-commander" # 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 # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wing-commander-2.sh0000755000000000000000000000630614471751340015233 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Wing Commander 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20250702.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='wing-commander-2' GAME_NAME='Wing Commander Ⅱ' ARCHIVE_BASE_1_NAME='setup_wing_commander_ii_1.0_(28045).exe' ARCHIVE_BASE_1_MD5='f5288f26451f7c1c860a269a8198f554' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='46000' ARCHIVE_BASE_1_VERSION='1.0-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/wing_commander_1_2' ARCHIVE_BASE_0_NAME='setup_wing_commander2_2.1.0.18.exe' ARCHIVE_BASE_0_MD5='f94a7eb75e4ed454108d13189d003e9f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='49000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.18' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' gamedat wc2.exe so1.exe so2.exe *.cfg' CONTENT_DOC_MAIN_FILES=' *.pdf' USER_PERSISTENT_FILES=' *.cfg' USER_PERSISTENT_DIRECTORIES=' gamedat' APP_MAIN_EXE='wc2.exe' APP_MAIN_ICON='app/goggame-1207662653.ico' APP_MAIN_ICON_0='goggame-1207662653.ico' ## Work around sound problems that can lock the game during the first intro speech. APP_MAIN_PRERUN=' # Work around sound problems that can lock the game during the first intro speech. export DOSBOX_SBLASTER_IRQ=5 ' ## Work around performance problems. APP_MAIN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 8000 loadfix -32 ' APP_SO1_ID="${GAME_ID}-special-operations-1" APP_SO1_NAME="$GAME_NAME - Special Operations 1" APP_SO1_EXE='so1.exe' APP_SO1_ICON='app/goggame-1207662653.ico' APP_SO1_ICON_0='goggame-1207662653.ico' ## Work around sound problems that can lock the game during the first intro speech. APP_SO1_PRERUN="$APP_MAIN_PRERUN" ## Work around performance problems. APP_SO1_DOSBOX_PRERUN="$APP_MAIN_DOSBOX_PRERUN" APP_SO2_ID="${GAME_ID}-special-operations-2" APP_SO2_NAME="$GAME_NAME - Special Operations 2" APP_SO2_EXE='so2.exe' APP_SO2_ICON='app/goggame-1207662653.ico' APP_SO2_ICON_0='goggame-1207662653.ico' ## Work around sound problems that can lock the game during the first intro speech. APP_SO2_PRERUN="$APP_MAIN_PRERUN" ## Work around performance problems. APP_SO2_DOSBOX_PRERUN="$APP_MAIN_DOSBOX_PRERUN" # 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-wing-commander-3.sh0000700000000000000000000000466514471751340015230 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Wing Commander 3 # send your bug reports to bugs@dotslashplay.it ### script_version=20240428.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='wing-commander-3' GAME_NAME='Wing Commander Ⅲ' ARCHIVE_BASE_1_NAME='setup_wing_commander_iii_1.4_(28045).exe' ARCHIVE_BASE_1_MD5='9418288d818315fbbede459bef76b82c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_wing_commander_iii_1.4_(28045)-1.bin' ARCHIVE_BASE_1_PART1_MD5='1caaf5ba29075e67a00b8009bc53e463' ARCHIVE_BASE_1_SIZE='1900000' ARCHIVE_BASE_1_VERSION='1.4-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/wing_commander_3_heart_of_the_tiger' ARCHIVE_BASE_0_NAME='setup_wing_commander3_2.1.0.7.exe' ARCHIVE_BASE_0_MD5='c9c9b539e6e1f0b0509b6f777878d91e' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1900000' ARCHIVE_BASE_0_VERSION='1.4-gog2.1.0.7' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' wc3 data.dat objects.tre' CONTENT_DOC_MAIN_FILES=' *.pdf' GAME_IMAGE='data.dat' USER_PERSISTENT_DIRECTORIES=' wc3' USER_PERSISTENT_FILES=' *.WSG' APP_MAIN_EXE='wc3.exe' APP_MAIN_ICON='app/goggame-1207658966.ico' APP_MAIN_ICON_0='goggame-1207658966.ico' ## The type can not be omitted, because the binary is actually on the CD-ROM image. APP_MAIN_TYPE='dosbox' ## Run the game from the mounted CD-ROM image. APP_MAIN_DOSBOX_PRERUN='d:' # 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 # Write launchers ## Work around the binary presence check, ## it is actually included in the CD-ROM image. launcher_target_presence_check() { return 0; } launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-witch-thief.sh0000755000000000000000000000330614471751340014375 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Witch Thief # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='witch-thief' GAME_NAME='Witch Thief' ARCHIVE_BASE_0_NAME='witch-thief-win.zip' ARCHIVE_BASE_0_MD5='e91763d8cca8574750a5220954536c73' ARCHIVE_BASE_0_SIZE='1400000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://cardboardkeep.itch.io/witch-thief' UNITY3D_NAME='WitchThief' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/CardboardKeep/WitchThief' 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-ziggurat.sh0000755000000000000000000000533514471751340014022 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Ziggurat # send your bug reports to bugs@dotslashplay.it ### script_version=20250702.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ziggurat' GAME_NAME='Ziggurat' ARCHIVE_BASE_GOG_0_NAME='gog_ziggurat_2.3.0.5.sh' ARCHIVE_BASE_GOG_0_MD5='3b5ac4a4fd7470d04f72680d8cce8b09' ARCHIVE_BASE_GOG_0_SIZE='1200000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.3.0.5' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/ziggurat' ## This DRM-free archive is no longer available for sale from Humble Bundle, ## they now only sell a Steam key. ARCHIVE_BASE_HUMBLE_0_NAME='ZigguratLinux.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='f990c99e4351b1ae465d551f0c5030be' ARCHIVE_BASE_HUMBLE_0_SIZE='1200000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble1' UNITY3D_NAME='Ziggurat' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='.' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 tests/check-license.sh0000700000000000000000000000064314471751340013751 0ustar rootroot#!/bin/sh set -o errexit CONTRIBUTORS_LIST=$( grep 'SPDX-FileCopyrightText' games/* | cut --delimiter=' ' --fields=5- | sort --unique ) CONTRIBUTOR_MISSING=0 while read contributor; do grep --quiet "$contributor" LICENSE || { printf 'Missing contributor in LICENSE: %s\n' "$contributor" && CONTRIBUTOR_MISSING=1 } done << EOL $(printf '%s\n' "$CONTRIBUTORS_LIST") EOL test $CONTRIBUTOR_MISSING -eq 0 LICENSE0000644000000000000000000000412614471751340010572 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 © 2015 mortalius Copyright © 2016 Mopi Copyright © 2017 Jacek Szafarkiewicz Copyright © 2018 BetaRays Copyright © 2018 VA Copyright © 2018 Phil Morrell Copyright © 2019 Emmanuel Gil Peyrot Copyright © 2019 Erwann Duclos Copyright © 2020 HS-157 Copyright © 2020 berru Copyright © 2021 Daguhh Copyright © 2023 Locynaeh Copyright © 2025 tyzef Copyright © 2025 Bernd Schumacher Copyright © 2025 Aryan Karamtoth 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. Makefile0000600000000000000000000000502114471751340011210 0ustar rootrootcollection_name = 45_action 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 tests/check-license.sh LICENSE Makefile README.md mkdir --parents dist LC_ALL=C tar cf dist/$(TARBALL) $(TAR_OPTIONS) games/*.sh tests/check-license.sh LICENSE Makefile README.md ifeq ($(NO_SIGN),0) rm --force dist/$(TARBALL).asc gpg --armor --detach-sign dist/$(TARBALL) endif # Run license check, to ensure no contributor is missing .PHONY: check check-license check: check-license check-license: ./tests/check-license.sh # Run syntax checks, relying on ShellCheck GAME_SCRIPTS := $(wildcard games/play-*.sh) GAME_SCRIPTS_TESTS := $(addprefix shellcheck_, $(GAME_SCRIPTS)) .PHONY: $(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.md0000644000000000000000000001626714471751340011055 0ustar rootroot# ./play.it action games collection The codebase is maintained at [https://git.dotslashplay.it/games-action/] Bug reports should be sent to [bugs@dotslashplay.it], and support requests to [requests@dotslashplay.it] [https://git.dotslashplay.it/games-action/]: https://git.dotslashplay.it/games-action/ [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 action games. These games challenge the player dexterity, providing obstacles requiring reflexes and coordination to overcome. This is a broad genre that spans from shooters to rhythm games. Platform games are excluded, as they already get their own dedicated collection. ## Installation ### Distributions providing ./play.it The following distributions provide installation instructions in their official documentation: - [Debian] - [Gentoo] - [Ubuntu] (French article) [Debian]: https://wiki.debian.org/Games/PlayIt#Installation [Gentoo]: https://wiki.gentoo.org/wiki/Play.it#Installation [Ubuntu]: https://doc.ubuntu-fr.org/play.it#installation In most cases, these instructions should work in the same way for derivatives of these distributions. ### Installation from git If your distribution does not already have a package for this ./play.it collection, you can install it from this git repository. ``` git clone --branch main --depth 1 https://git.dotslashplay.it/games-action play.it-action.git cd play.it-action.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/play.it/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-action ``` 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 - A Dance of Fire and Ice - A Musical Story - Accelerate - Action Henk - Alan Wake's American Nightmare - Anarcute - Ape Out - Art of Fighting 2 - Assault Android Cactus - Aztez - Baseball Stars 2 - Basingstoke - Battle Chef Brigade - BFF or Die - Bio Menace - BioShock - Bit.Trip Beat - Bit.Trip Runner series: - Bit.Trip Runner - Bit.Trip Runner 2 - Bit.Trip Runner 3 - Bleed series: - Bleed - Bleed 2 - Bombshell - Broforce - Butcher - Cook, Serve, Delicious 2 - Crypt of the NecroDancer - Cryptark - Deadbolt - Duet - Duke Nukem 3D - Enter the Gungeon - Fatal Fury Special - Flashout 3D - FlatOut series: - FlatOut - FlatOut 2 - Grip - Gun-Toting Cats - Hot Pot Panic - Hotline Miami - Hounds of Valor - Iconoclasts - Intrusion 2 - Jydge - King of the Monsters - Lo-Fi Room - Lovers in a Dangerous Spacetime - Melody's Escape - Metal Slug series: - Metal Slug 2 - Metal Slug 3 - Mortal Kombat series: - Mortal Kombat - Mortal Kombat 2 - Mortal Kombat 3 - Neon Drive - Octodad: Dadliest Catch - Osmos - Overgrowth - Overload - Pacapong - Painkiller - Particulars - Peck N Run - Race the Sun - Risk of Rain - Sales Gosses - Samurai Shodown 2 - Sengoku 3 - Sentris - Shogo: Mobile Armor Division - Solar 2 - SpringBack - Star Wars: Battlefront II - Stargunner - Strafe - Strike Suit Zero - Superhot - Symphony - The Binding of Isaac - The King of Fighters 2000 - Thief: Deadly Shadows - Tonight We Riot - Touhou series: - Touhou Koumakyou ~ the Embodiment of Scarlet Devil - Touhou Kaeizuka ~ Phantasmagoria of Flower View - Touhou Chireiden ~ Subterranean Animism - Touhou Seirensen ~ Undefined Fantastic Object - Touhou Touhou Shinreibyou ~ Ten Desires - Touhou Kishinjou ~ Double Dealing Character - Touhou Hifuu Nightmare Diary ~ Violet Detector - Tower of Guns - TrackMania Nations Forever - Warhammer 40,000: Dakka Squadron - Warsow - Wing Commander series: - Wing Commander - Wing Commander 2 - Wing Commander: Privateer - Wing Commander 3 - Witch Thief - Ziggurat ## 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.